{"id":15040956,"url":"https://github.com/lavieAll/uniapp-admin","last_synced_at":"2025-06-16T21:06:53.827Z","repository":{"id":44853242,"uuid":"216512773","full_name":"silianpan/uniapp-admin","owner":"silianpan","description":"Muti-platform management system for uniapp, H5, Android, IOS, Min Program","archived":false,"fork":false,"pushed_at":"2024-08-20T02:57:54.000Z","size":4132,"stargazers_count":394,"open_issues_count":0,"forks_count":125,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-03-28T12:09:10.210Z","etag":null,"topics":["admin-system","admin-template","android-app","ios-app","management-system","openoffice","pdf-preview","pdfjs","picture-preview","template","uni-app","vuejs"],"latest_commit_sha":null,"homepage":"http://ua-doc.silianpan.cn","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/silianpan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-21T08:12:10.000Z","updated_at":"2025-03-27T02:58:07.000Z","dependencies_parsed_at":"2024-11-30T09:15:25.125Z","dependency_job_id":null,"html_url":"https://github.com/silianpan/uniapp-admin","commit_stats":{"total_commits":90,"total_committers":3,"mean_commits":30.0,"dds":"0.21111111111111114","last_synced_commit":"9c866f28530db2f7d9ea71cc06864da46c8d83da"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silianpan%2Funiapp-admin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silianpan%2Funiapp-admin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silianpan%2Funiapp-admin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silianpan%2Funiapp-admin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/silianpan","download_url":"https://codeload.github.com/silianpan/uniapp-admin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247182420,"owners_count":20897381,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin-system","admin-template","android-app","ios-app","management-system","openoffice","pdf-preview","pdfjs","picture-preview","template","uni-app","vuejs"],"created_at":"2024-09-24T20:45:19.809Z","updated_at":"2025-06-16T21:06:53.398Z","avatar_url":"https://github.com/silianpan.png","language":"Vue","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://silianpan.cn/ua-doc/\"\u003e\n    \u003cimg width=\"200\" src=\"http://silianpan.cn/ua-doc/logo.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003euniapp-admin\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\nMuti-platform management system for uniapp, H5, Android, IOS, Min Program.\n\n基于uni-app管理系统模板，支持H5、Android、IOS和小程序\n\n[![doc][doc-image]][doc-url] [![gitee][gitee-image]][gitee-url] [![uni-app-deps][uni-app-image]][uni-app-url] [![GitHub stars][github-starts-image]][github-url] [![GitHub commit activity][github-commit-activity-url]][github-url] [![GitHub top language][github-top-language-image]][github-url] [![GitHub license][license-image]][github-url]\n\n[uni-app-image]: https://img.shields.io/badge/uni--app-latest-%2342b983\n[uni-app-url]: https://uniapp.dcloud.io/\n[github-starts-image]: https://img.shields.io/github/stars/silianpan/uniapp-admin?style=social\n[github-url]: https://github.com/silianpan/uniapp-admin\n[github-commit-activity-url]: https://img.shields.io/github/commit-activity/m/silianpan/uniapp-admin\n[github-top-language-image]: https://img.shields.io/github/languages/top/silianpan/uniapp-admin?color=%234fc08d\n[license-image]: https://img.shields.io/github/license/silianpan/uniapp-admin\n[doc-image]: https://img.shields.io/badge/document-latest-blue\n[doc-url]: http://silianpan.cn/ua-doc/\n[gitee-image]: https://gitee.com/twofloor/uniapp-admin/badge/star.svg?theme=dark\n[gitee-url]: https://gitee.com/twofloor/uniapp-admin/stargazers\n\n\u003c/div\u003e\n\n## uniapp-admin 2.0.0 重磅发布！\n\n* 更加完善的开发指南\n* 主题定制：支持颜色主题和深色模式，页面更加美观\n* 国际化/多语言：应用内容和pages.json国际化，支持N种语言\n* 引入iconfont：海量字体图标支持\n* 引入rap2接口管理平台：支持在线Mock数据模拟\n* 接口请求：不同API可以单独配置baseURL\n* 调整App升级方案：无缝升级更容易\n* 消息推送，在线文档预览，跨域等多种解决方案\n\n### [在线文档](http://ua-doc.silianpan.cn)\n\n\u003e 提示：Android二维码使用手机浏览器扫\u003cbr\u003e\n\u003e 用户名：admin 密码：admin\n\n\u003cimg src=\"http://silianpan.cn/wp-content/uploads/2020/08/wp_editor_md_5130d93e34fca6703f465b8d173cd042.jpg\" width=\"120\" alt=\"h5\"/\u003e\n\u003cimg src=\"http://silianpan.cn/wp-content/uploads/2020/08/wp_editor_md_5e73998d5012227676299f651d760cf2.jpg\" width=\"120\" alt=\"android\"/\u003e\n\n### 代码地址\n\n[Github](https://github.com/silianpan/uniapp-admin)\n\n[Gitee](https://gitee.com/twofloor/uniapp-admin)\n\n\u003cimg src=\"http://silianpan.cn/wp-content/uploads/2020/08/ua.gif\" alt=\"ua-gif\"/\u003e\n\n### 一、前言\n\n\u0026emsp;\u0026emsp;uniapp-admin是基于uni-app开发的管理系统模板。该模板集成了如下的功能：\n\n* **UI方面**：登陆模板、顶部固定搜索框、顶部滑动选项卡、字段信息卡片、一周信息卡片、时间轴\n* **功能方面**：下拉刷新上拉加载功能、文件在线预览功能\n* **内置组件**：底部标签导航、顶部导航栏、商品导航、uni ui\n* **第三方插件**\n  * **UI库** [colorUI css库](http://ext.dcloud.net.cn/plugin?id=239)、[ThorUI组件库](https://ext.dcloud.net.cn/plugin?id=556)([参考UI方案](https://ask.dcloud.net.cn/article/35489))\n  * **其他** [uCharts高性能跨全端图表](https://ext.dcloud.net.cn/plugin?id=271)、[mescroll-支持uni-app的下拉刷新上拉加载组件 ](https://ext.dcloud.net.cn/plugin?id=343)、[日期时间选择器tui-datetime](http://ext.dcloud.net.cn/plugin?id=239)\n* **解决方案(重要)**\n  * 文件在线预览方案，另见文章[《跨平台（uni-app）文件在线预览解决方案》](https://github.com/silianpan/uniapp-admin/blob/master/FILE_PREVIEW.md)\n  * 开发环境和生产环境跨域方案\n  * APP整包升级/更新方案\n  * API调用方案\n  * 消息推送方案，另见文章[《uni-app消息推送方案》](https://github.com/silianpan/uniapp-admin/blob/master/PUSH_MESSAGE.md)\n\n\u0026emsp;\u0026emsp;如果有欠缺的地方，或者有更好的想法，大家可以**多多交流**，文章最后可以加我。\n\n### 二、开发环境和生产环境跨域方案\n\n\u003e 跨域的解决方法之一就是采用**代理**\n\n#### 2.1 开发环境\n\n* 在manifest.json源码视图中，修改h5部分，添加端口port和代理proxy。\n\n```json\n\"h5\" : {\n  \"devServer\" : {\n      \"port\" : 9090,\n      \"disableHostCheck\" : true,\n      \"proxy\" : {\n          \"/ua/ua-service\" : {\n              \"target\" : \"http://localhost:8080\",\n              \"changeOrigin\" : true,\n              \"secure\" : false,\n              \"pathRewrite\" : {\n                  \"^/ua\" : \"\"\n              }\n          },\n          \"/ua-service\" : {\n              \"target\" : \"http://localhost:8080\",\n              \"changeOrigin\" : true,\n              \"secure\" : false\n          }\n      }\n  },\n  \"title\" : \"uniapp-admin\",\n  \"router\" : {\n      \"mode\" : \"hash\",\n      \"base\" : \"/ua\"\n  }\n}\n```\n\n* 根据不同平台，自定义全局配置baseUrl，[参考代码](https://github.com/silianpan/uniapp-admin/blob/master/config/index.js)\n\n\u003e 原理：h5端配置api前缀，然后proxy代理（在manifest.json的proxy）；\n\u003e APP端不存在跨域问题，直接配置全域名或ip地址即可\n\n```js\n/**\n * ip地址或域名\n */\nconst ipAddress = 'http://localhost:8080'\n// 文件访问地址\nconst fileAddr = 'http://localhost:8082/fileUpload/'\n/**\n * api前缀\n */\nconst apiPrefix = '/ua-service'\n/**\n * 针对不同平台的baseUrl\n */\nconst getBaseUrl = () =\u003e {\n\t// #ifdef H5\n\treturn apiPrefix\n\t// #endif\n\t// #ifndef H5\n\treturn ipAddress + apiPrefix\n\t// #endif\n}\nexport default {\n\t/**\n\t * 针对不同平台的baseUrl\n\t */\n\tbaseUrl: getBaseUrl(),\n\tfileAddr\n}\n```\n\n* 在ui.request的参数选项中配置baseUrl，[参考代码](https://github.com/silianpan/uniapp-admin/blob/master/api/api.js)\n\n```js\n// 设置默认配置\nminRequest.setConfig((config) =\u003e {\n\tconfig.baseURL = globalConfig.baseUrl\n\treturn config\n})\n```\n\n#### 2.2 生产环境\n\n\u003e 生产环境的跨域，典型的方案就是采用Nginx代理\n\n配置如下：\n\n```conf\n# 前端访问代理\nlocation /ua {\n  alias /root/ua;\n  index index.html index.htm;\n  try_files $uri $uri/ /index.html?/$request_uri;\n}\n# 服务端代理，对应开发环境proxy\nlocation ~/ua/ua-service/* {\n  rewrite ^/ua/(.*)$ /$1 break;\n  proxy_pass http://service;\n  proxy_http_version 1.1;\n  proxy_set_header Upgrade $http_upgrade;\n  proxy_set_header Connection \"upgrade\";\n  proxy_connect_timeout 360000s;\n  proxy_read_timeout 360000s;\n  proxy_send_timeout 360000s;\n}\n# 服务端代理，对应开发环境proxy\nlocation ~/ua-service/* {\n  proxy_pass http://service;\n  proxy_http_version 1.1;\n  proxy_set_header Upgrade $http_upgrade;\n  proxy_set_header Connection \"upgrade\";\n  proxy_connect_timeout 360000s;\n  proxy_read_timeout 360000s;\n  proxy_send_timeout 360000s;\n}\n```\n\n其中*proxy_pass http://service*的service是配置在nginx的http{}下的后端服务\n\n```config\nupstream service {\n  server 127.0.0.1:8080 max_fails=1 fail_timeout=10s;\n}\n```\n\nrewrite ^/ua/(.*)$ \\/\\$1 break;是路径替换，第一个参数是正则表达式，\\$1是正则表达式中第一个括号内容。\n\n### 三、APP整包升级/更新方案\n\n参考文档，[uni-app 整包升级/更新方案 ](https://ask.dcloud.net.cn/article/34972)，另外也有，[uni-app 资源在线升级/热更新](https://ask.dcloud.net.cn/article/35667)\n\n本项目是采用整包升级更新方案，如下：\n\n```js\n/**\n  * app整包更新检测\n  */\nappUpgrade() {\n  //#ifndef APP-PLUS\n  uni.showToast({\n    title: '目前只支持Android版本软件更新',\n    icon: 'none'\n  })\n  //#endif\n  //#ifdef APP-PLUS\n  uni.getSystemInfo({\n    success: sysInfo =\u003e {\n      let platform = sysInfo.platform\n      plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) =\u003e {\n        // app版本字符串如：1.1.0\n        // this.appInfo.version = wgtinfo.version\n        // app名称\n        // this.appInfo.name = wgtinfo.name\n        let params = {\n          appid: plus.runtime.appid,\n          // app整数版本号，如110，一定要用versionCode做判断\n          version: wgtinfo.versionCode,\n          platform: platform\n        }\n        this.$minApi.findUpgradeApp(params).then(appRes =\u003e {\n          if (appRes.appid) {\n            uni.showModal({\n              title: \"下载更新提示\",\n              content: appRes.note,\n              showCancel: false,\n              confirmText: '确定',\n              success: sucRes =\u003e {\n                if (sucRes.confirm) {\n                  plus.runtime.openURL(appRes.url)\n                  // uni.downloadFile({\n                  //     url: appRes.url,\n                  //     success: res =\u003e {}\n                  // })\n                }\n              }\n            })\n          } else {\n            uni.showToast({\n              title: '已经是最新版本了。',\n              icon: 'none'\n            })\n          }\n        })\n      })\n    }\n  })\n  //#endif\n}\n```\n\n\u003cspan style=\"color:red\"\u003e注意：一定要使用plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) =\u003e())，回调函数返回的wgtinfo对象的versionCode做判断，wgtinfo.version是版本字符串，wgtinfo.name是app应用名称\u003c/span\u003e\n\n### 四、API调用方案\n\n核心是调用uni.request，[参考代码](https://github.com/silianpan/uniapp-admin/blob/master/utils/MinRequest.js)\n\n```js\nrequest(options = {}) {\n  options.baseURL = options.baseURL || this[config].baseURL\n  options.dataType = options.dataType || this[config].dataType\n  options.url = MinRequest[isCompleteURL](options.url) ? options.url : (options.baseURL + options.url)\n  options.data = options.data\n  options.header = { ...options.header,\n    ...this[config].header\n  }\n  options.method = options.method || this[config].method\n\n  options = { ...options,\n    ...MinRequest[requestBefore](options)\n  }\n\n  return new Promise((resolve, reject) =\u003e {\n    options.success = function(res) {\n      resolve(MinRequest[requestAfter](res))\n    }\n    options.fail = function(err) {\n      reject(MinRequest[requestAfter](err))\n    }\n    uni.request(options)\n  })\n}\n```\n\n### 五、消息推送方案\n\n另见文章[《uni-app消息推送方案》](https://github.com/silianpan/uniapp-admin/blob/master/PUSH_MESSAGE.md)\n\n### 六、问题解决\n\n#### 6.1 怎么获取应用真正的名称和版本信息？\n\n一定要使用plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) =\u003e())，回调函数返回的wgtinfo对象的versionCode做判断，wgtinfo.version是版本字符串，wgtinfo.name是app应用名称\n\n#### 6.2 APP端，模板中v-for不能调用方法，如：v-for=\"xxx in func(xxx)\"，这种情况下，func方法不会调用。具体原理不太清楚，还请大佬能解释一下不？\n\n解决办法：提前将数据格式化好，然后套上模板。\n\n### 七、后续计划\n\n- [x] 消息推送\n\n大家也可以提出想要的模板或功能\n\n### 八、效果\n\n#### 开源不易，且用且珍惜\n\n#### 赞助作者\n\n\u003cimg src=\"http://silianpan.cn/wp-content/uploads/2019/10/b9c369443b192642f975be9020b3234e.png\" width=\"120\"/\u003e\n\u003cimg src=\"http://silianpan.cn/wp-content/themes/yusi1.0/img/weixin.gif\" width=\"120\" /\u003e\n\n转载请注明：[溜爸 » 基于uni-app多平台管理系统模板uniapp-admin](http://silianpan.cn/index.php/2019/10/26/uniapp_admin/)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FlavieAll%2Funiapp-admin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FlavieAll%2Funiapp-admin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FlavieAll%2Funiapp-admin/lists"}