@ -1,21 +1,20 @@ | 
				
			|||||||
MIT License | 
					The MIT License (MIT) | 
				
			||||||
 | 
					
 | 
				
			||||||
Copyright (c) 2019 若依 | 
					Copyright (c) 2018 RuoYi | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy | 
					Permission is hereby granted, free of charge, to any person obtaining a copy of | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal | 
					this software and associated documentation files (the "Software"), to deal in | 
				
			||||||
in the Software without restriction, including without limitation the rights | 
					the Software without restriction, including without limitation the rights to | 
				
			||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | 
					use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of | 
				
			||||||
copies of the Software, and to permit persons to whom the Software is | 
					the Software, and to permit persons to whom the Software is furnished to do so, | 
				
			||||||
furnished to do so, subject to the following conditions: | 
					subject to the following conditions: | 
				
			||||||
 | 
					
 | 
				
			||||||
The above copyright notice and this permission notice shall be included in all | 
					The above copyright notice and this permission notice shall be included in all | 
				
			||||||
copies or substantial portions of the Software. | 
					copies or substantial portions of the Software. | 
				
			||||||
 | 
					
 | 
				
			||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 
					THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 
				
			||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
					IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | 
				
			||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | 
					FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR | 
				
			||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 
					COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | 
				
			||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | 
					IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | 
				
			||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | 
					CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | 
				
			||||||
SOFTWARE. | 
					 | 
				
			||||||
@ -1,36 +0,0 @@ | 
				
			|||||||
# RuoYi-Vue | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### Description | 
					 | 
				
			||||||
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### Software Architecture | 
					 | 
				
			||||||
Software architecture description | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### Installation | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1. xxxx | 
					 | 
				
			||||||
2. xxxx | 
					 | 
				
			||||||
3. xxxx | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### Instructions | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1. xxxx | 
					 | 
				
			||||||
2. xxxx | 
					 | 
				
			||||||
3. xxxx | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### Contribution | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1. Fork the repository | 
					 | 
				
			||||||
2. Create Feat_xxx branch | 
					 | 
				
			||||||
3. Commit your code | 
					 | 
				
			||||||
4. Create Pull Request | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### Gitee Feature | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md | 
					 | 
				
			||||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com) | 
					 | 
				
			||||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) | 
					 | 
				
			||||||
4. The most valuable open source project [GVP](https://gitee.com/gvp) | 
					 | 
				
			||||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) | 
					 | 
				
			||||||
6. The most popular members  [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) | 
					 | 
				
			||||||
@ -1,39 +1,78 @@ | 
				
			|||||||
# RuoYi-Vue | 
					## 平台简介 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 介绍 | 
					一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 | 
				
			||||||
{**以下是码云平台说明,您可以替换此简介** | 
					 | 
				
			||||||
码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 | 
					 | 
				
			||||||
无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 软件架构 | 
					性别男,若依是给还没有出生女儿取的名字(寓意:你若不离不弃,我必生死相依) | 
				
			||||||
软件架构说明 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					参考后台模板[vue-element-admin](https://github.com/PanJiaChen/vue-element-admin) | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 安装教程 | 
					> 如需不分离应用,请移步 [RuoYi](https://gitee.com/y_project/RuoYi)  `(保持同步更新)`,如需其他版本,请移步 [项目扩展](http://doc.ruoyi.vip/ruoyi/document/xmkz.html)  `(不定时更新)` | 
				
			||||||
 | 
					
 | 
				
			||||||
1. xxxx | 
					> 阿里云通用云产品1888优惠券 :[点我领取](https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=brki8iof)    腾讯云通用云产品2860优惠券 :[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console)  `(仅限新用户)` | 
				
			||||||
2. xxxx | 
					 | 
				
			||||||
3. xxxx | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 使用说明 | 
					> 阿里云Hi拼购 限量爆款 低至199元/年 [点我进入](https://www.aliyun.com/acts/hi-group-buying?userCode=brki8iof)  `(仅限新用户)` | 
				
			||||||
 | 
					
 | 
				
			||||||
1. xxxx | 
					## 内置功能 | 
				
			||||||
2. xxxx | 
					 | 
				
			||||||
3. xxxx | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 参与贡献 | 
					1.  用户管理:用户是系统操作者,该功能主要完成系统用户配置。 | 
				
			||||||
 | 
					2.  部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 | 
				
			||||||
 | 
					3.  岗位管理:配置系统用户所属担任职务。 | 
				
			||||||
 | 
					4.  菜单管理:配置系统菜单,操作权限,按钮权限标识等。 | 
				
			||||||
 | 
					5.  角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 | 
				
			||||||
 | 
					6.  字典管理:对系统中经常使用的一些较为固定的数据进行维护。 | 
				
			||||||
 | 
					7.  参数管理:对系统动态配置常用参数。 | 
				
			||||||
 | 
					8.  通知公告:系统通知公告信息发布维护。 | 
				
			||||||
 | 
					9.  操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 | 
				
			||||||
 | 
					10. 登录日志:系统登录日志记录查询包含登录异常。 | 
				
			||||||
 | 
					11. 在线用户:当前系统中活跃用户状态监控。 | 
				
			||||||
 | 
					12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 | 
				
			||||||
 | 
					13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 | 
				
			||||||
 | 
					14. 系统接口:根据业务代码自动生成相关的api接口文档。 | 
				
			||||||
 | 
					15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 | 
				
			||||||
 | 
					16. 在线构建器:拖动表单元素生成相应的HTML代码。 | 
				
			||||||
 | 
					17. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 | 
				
			||||||
 | 
					## 在线体验 | 
				
			||||||
 | 
					> admin/admin123   | 
				
			||||||
 | 
					> 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。 | 
				
			||||||
 | 
					
 | 
				
			||||||
1. Fork 本仓库 | 
					演示地址:http://vue.ruoyi.vip   | 
				
			||||||
2. 新建 Feat_xxx 分支 | 
					 | 
				
			||||||
3. 提交代码 | 
					 | 
				
			||||||
4. 新建 Pull Request | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					文档地址:http://doc.ruoyi.vip | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 码云特技 | 
					## 演示图 | 
				
			||||||
 | 
					
 | 
				
			||||||
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md | 
					<table> | 
				
			||||||
2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) | 
					    <tr> | 
				
			||||||
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/cd1f90be5f2684f4560c9519c0f2a232ee8.jpg"/></td> | 
				
			||||||
4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/1cbcf0e6f257c7d3a063c0e3f2ff989e4b3.jpg"/></td> | 
				
			||||||
5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) | 
					    </tr> | 
				
			||||||
6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) | 
					    <tr> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/97fcdc766fa04c03722aef4b3d77f71e8d2.jpg"/></td> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/642858372da91853c39e2d4746f036ea171.jpg"/></td> | 
				
			||||||
 | 
					    </tr> | 
				
			||||||
 | 
					    <tr> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/8678d5204148e2610c9d02822274a961dcf.jpg"/></td> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/feb2b25a08bf9dd121b8f51274ae935ead6.jpg"/></td> | 
				
			||||||
 | 
					    </tr> | 
				
			||||||
 | 
						<tr> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/71c2d48905221a09a728df4aff4160b8607.jpg"/></td> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/c14c1ee9a64a6a9c2c22f67d43198767dbe.jpg"/></td> | 
				
			||||||
 | 
					    </tr>	  | 
				
			||||||
 | 
					    <tr> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/5e8c387724954459291aafd5eb52b456f53.jpg"/></td> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/644e78da53c2e92a95dfda4f76e6d117c4b.jpg"/></td> | 
				
			||||||
 | 
					    </tr> | 
				
			||||||
 | 
						<tr> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/c162686bf3a39e3cd6b4fd6b5919f515ebf.jpg"/></td> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/412fb931faa8b3e3de6f9cbbc5b7979cf36.jpg"/></td> | 
				
			||||||
 | 
					    </tr> | 
				
			||||||
 | 
						<tr> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/b6115bc8c31de52951982e509930b20684a.jpg"/></td> | 
				
			||||||
 | 
					        <td><img src="https://oscimg.oschina.net/oscnet/5f3d39a141f21f81b90536f391b8408f1fa.jpg"/></td> | 
				
			||||||
 | 
					    </tr> | 
				
			||||||
 | 
					</table> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 若依交流群 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QQ群: [](https://jq.qq.com/?_wv=1027&k=5PjgQ8e)  点击按钮入群。 | 
				
			||||||
@ -0,0 +1,22 @@ | 
				
			|||||||
 | 
					# 告诉EditorConfig插件,这是根文件,不用继续往上查找 | 
				
			||||||
 | 
					root = true | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 匹配全部文件 | 
				
			||||||
 | 
					[*] | 
				
			||||||
 | 
					# 设置字符集 | 
				
			||||||
 | 
					charset = utf-8 | 
				
			||||||
 | 
					# 缩进风格,可选space、tab | 
				
			||||||
 | 
					indent_style = space | 
				
			||||||
 | 
					# 缩进的空格数 | 
				
			||||||
 | 
					indent_size = 2 | 
				
			||||||
 | 
					# 结尾换行符,可选lf、cr、crlf | 
				
			||||||
 | 
					end_of_line = lf | 
				
			||||||
 | 
					# 在文件结尾插入新行 | 
				
			||||||
 | 
					insert_final_newline = true | 
				
			||||||
 | 
					# 删除一行中的前后空格 | 
				
			||||||
 | 
					trim_trailing_whitespace = true | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 匹配md结尾的文件 | 
				
			||||||
 | 
					[*.md] | 
				
			||||||
 | 
					insert_final_newline = false | 
				
			||||||
 | 
					trim_trailing_whitespace = false | 
				
			||||||
@ -0,0 +1,8 @@ | 
				
			|||||||
 | 
					# 开发环境配置 | 
				
			||||||
 | 
					ENV = 'development' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 若依管理系统/开发环境 | 
				
			||||||
 | 
					VUE_APP_BASE_API = '/dev-api' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 路由懒加载 | 
				
			||||||
 | 
					VUE_CLI_BABEL_TRANSPILE_MODULES = true | 
				
			||||||
@ -0,0 +1,5 @@ | 
				
			|||||||
 | 
					# 生产环境配置 | 
				
			||||||
 | 
					ENV = 'production' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 若依管理系统/生产环境 | 
				
			||||||
 | 
					VUE_APP_BASE_API = '/prod-api' | 
				
			||||||
@ -0,0 +1,7 @@ | 
				
			|||||||
 | 
					NODE_ENV = production | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 测试环境配置 | 
				
			||||||
 | 
					ENV = 'staging' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 若依管理系统/测试环境 | 
				
			||||||
 | 
					VUE_APP_BASE_API = '/stage-api' | 
				
			||||||
@ -0,0 +1,10 @@ | 
				
			|||||||
 | 
					# 忽略build目录下类型为js的文件的语法检查 | 
				
			||||||
 | 
					build/*.js | 
				
			||||||
 | 
					# 忽略src/assets目录下文件的语法检查 | 
				
			||||||
 | 
					src/assets | 
				
			||||||
 | 
					# 忽略public目录下文件的语法检查 | 
				
			||||||
 | 
					public | 
				
			||||||
 | 
					# 忽略当前目录下为js的文件的语法检查 | 
				
			||||||
 | 
					*.js | 
				
			||||||
 | 
					# 忽略当前目录下为vue的文件的语法检查 | 
				
			||||||
 | 
					*.vue | 
				
			||||||
@ -0,0 +1,199 @@ | 
				
			|||||||
 | 
					// ESlint 检查配置
 | 
				
			||||||
 | 
					module.exports = { | 
				
			||||||
 | 
					  root: true, | 
				
			||||||
 | 
					  parserOptions: { | 
				
			||||||
 | 
					    parser: 'babel-eslint', | 
				
			||||||
 | 
					    sourceType: 'module' | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  env: { | 
				
			||||||
 | 
					    browser: true, | 
				
			||||||
 | 
					    node: true, | 
				
			||||||
 | 
					    es6: true, | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  extends: ['plugin:vue/recommended', 'eslint:recommended'], | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // add your custom rules here
 | 
				
			||||||
 | 
					  //it is base on https://github.com/vuejs/eslint-config-vue
 | 
				
			||||||
 | 
					  rules: { | 
				
			||||||
 | 
					    "vue/max-attributes-per-line": [2, { | 
				
			||||||
 | 
					      "singleline": 10, | 
				
			||||||
 | 
					      "multiline": { | 
				
			||||||
 | 
					        "max": 1, | 
				
			||||||
 | 
					        "allowFirstLine": false | 
				
			||||||
 | 
					      } | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    "vue/singleline-html-element-content-newline": "off", | 
				
			||||||
 | 
					    "vue/multiline-html-element-content-newline":"off", | 
				
			||||||
 | 
					    "vue/name-property-casing": ["error", "PascalCase"], | 
				
			||||||
 | 
					    "vue/no-v-html": "off", | 
				
			||||||
 | 
					    'accessor-pairs': 2, | 
				
			||||||
 | 
					    'arrow-spacing': [2, { | 
				
			||||||
 | 
					      'before': true, | 
				
			||||||
 | 
					      'after': true | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'block-spacing': [2, 'always'], | 
				
			||||||
 | 
					    'brace-style': [2, '1tbs', { | 
				
			||||||
 | 
					      'allowSingleLine': true | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'camelcase': [0, { | 
				
			||||||
 | 
					      'properties': 'always' | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'comma-dangle': [2, 'never'], | 
				
			||||||
 | 
					    'comma-spacing': [2, { | 
				
			||||||
 | 
					      'before': false, | 
				
			||||||
 | 
					      'after': true | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'comma-style': [2, 'last'], | 
				
			||||||
 | 
					    'constructor-super': 2, | 
				
			||||||
 | 
					    'curly': [2, 'multi-line'], | 
				
			||||||
 | 
					    'dot-location': [2, 'property'], | 
				
			||||||
 | 
					    'eol-last': 2, | 
				
			||||||
 | 
					    'eqeqeq': ["error", "always", {"null": "ignore"}], | 
				
			||||||
 | 
					    'generator-star-spacing': [2, { | 
				
			||||||
 | 
					      'before': true, | 
				
			||||||
 | 
					      'after': true | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'handle-callback-err': [2, '^(err|error)$'], | 
				
			||||||
 | 
					    'indent': [2, 2, { | 
				
			||||||
 | 
					      'SwitchCase': 1 | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'jsx-quotes': [2, 'prefer-single'], | 
				
			||||||
 | 
					    'key-spacing': [2, { | 
				
			||||||
 | 
					      'beforeColon': false, | 
				
			||||||
 | 
					      'afterColon': true | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'keyword-spacing': [2, { | 
				
			||||||
 | 
					      'before': true, | 
				
			||||||
 | 
					      'after': true | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'new-cap': [2, { | 
				
			||||||
 | 
					      'newIsCap': true, | 
				
			||||||
 | 
					      'capIsNew': false | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'new-parens': 2, | 
				
			||||||
 | 
					    'no-array-constructor': 2, | 
				
			||||||
 | 
					    'no-caller': 2, | 
				
			||||||
 | 
					    'no-console': 'off', | 
				
			||||||
 | 
					    'no-class-assign': 2, | 
				
			||||||
 | 
					    'no-cond-assign': 2, | 
				
			||||||
 | 
					    'no-const-assign': 2, | 
				
			||||||
 | 
					    'no-control-regex': 0, | 
				
			||||||
 | 
					    'no-delete-var': 2, | 
				
			||||||
 | 
					    'no-dupe-args': 2, | 
				
			||||||
 | 
					    'no-dupe-class-members': 2, | 
				
			||||||
 | 
					    'no-dupe-keys': 2, | 
				
			||||||
 | 
					    'no-duplicate-case': 2, | 
				
			||||||
 | 
					    'no-empty-character-class': 2, | 
				
			||||||
 | 
					    'no-empty-pattern': 2, | 
				
			||||||
 | 
					    'no-eval': 2, | 
				
			||||||
 | 
					    'no-ex-assign': 2, | 
				
			||||||
 | 
					    'no-extend-native': 2, | 
				
			||||||
 | 
					    'no-extra-bind': 2, | 
				
			||||||
 | 
					    'no-extra-boolean-cast': 2, | 
				
			||||||
 | 
					    'no-extra-parens': [2, 'functions'], | 
				
			||||||
 | 
					    'no-fallthrough': 2, | 
				
			||||||
 | 
					    'no-floating-decimal': 2, | 
				
			||||||
 | 
					    'no-func-assign': 2, | 
				
			||||||
 | 
					    'no-implied-eval': 2, | 
				
			||||||
 | 
					    'no-inner-declarations': [2, 'functions'], | 
				
			||||||
 | 
					    'no-invalid-regexp': 2, | 
				
			||||||
 | 
					    'no-irregular-whitespace': 2, | 
				
			||||||
 | 
					    'no-iterator': 2, | 
				
			||||||
 | 
					    'no-label-var': 2, | 
				
			||||||
 | 
					    'no-labels': [2, { | 
				
			||||||
 | 
					      'allowLoop': false, | 
				
			||||||
 | 
					      'allowSwitch': false | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'no-lone-blocks': 2, | 
				
			||||||
 | 
					    'no-mixed-spaces-and-tabs': 2, | 
				
			||||||
 | 
					    'no-multi-spaces': 2, | 
				
			||||||
 | 
					    'no-multi-str': 2, | 
				
			||||||
 | 
					    'no-multiple-empty-lines': [2, { | 
				
			||||||
 | 
					      'max': 1 | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'no-native-reassign': 2, | 
				
			||||||
 | 
					    'no-negated-in-lhs': 2, | 
				
			||||||
 | 
					    'no-new-object': 2, | 
				
			||||||
 | 
					    'no-new-require': 2, | 
				
			||||||
 | 
					    'no-new-symbol': 2, | 
				
			||||||
 | 
					    'no-new-wrappers': 2, | 
				
			||||||
 | 
					    'no-obj-calls': 2, | 
				
			||||||
 | 
					    'no-octal': 2, | 
				
			||||||
 | 
					    'no-octal-escape': 2, | 
				
			||||||
 | 
					    'no-path-concat': 2, | 
				
			||||||
 | 
					    'no-proto': 2, | 
				
			||||||
 | 
					    'no-redeclare': 2, | 
				
			||||||
 | 
					    'no-regex-spaces': 2, | 
				
			||||||
 | 
					    'no-return-assign': [2, 'except-parens'], | 
				
			||||||
 | 
					    'no-self-assign': 2, | 
				
			||||||
 | 
					    'no-self-compare': 2, | 
				
			||||||
 | 
					    'no-sequences': 2, | 
				
			||||||
 | 
					    'no-shadow-restricted-names': 2, | 
				
			||||||
 | 
					    'no-spaced-func': 2, | 
				
			||||||
 | 
					    'no-sparse-arrays': 2, | 
				
			||||||
 | 
					    'no-this-before-super': 2, | 
				
			||||||
 | 
					    'no-throw-literal': 2, | 
				
			||||||
 | 
					    'no-trailing-spaces': 2, | 
				
			||||||
 | 
					    'no-undef': 2, | 
				
			||||||
 | 
					    'no-undef-init': 2, | 
				
			||||||
 | 
					    'no-unexpected-multiline': 2, | 
				
			||||||
 | 
					    'no-unmodified-loop-condition': 2, | 
				
			||||||
 | 
					    'no-unneeded-ternary': [2, { | 
				
			||||||
 | 
					      'defaultAssignment': false | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'no-unreachable': 2, | 
				
			||||||
 | 
					    'no-unsafe-finally': 2, | 
				
			||||||
 | 
					    'no-unused-vars': [2, { | 
				
			||||||
 | 
					      'vars': 'all', | 
				
			||||||
 | 
					      'args': 'none' | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'no-useless-call': 2, | 
				
			||||||
 | 
					    'no-useless-computed-key': 2, | 
				
			||||||
 | 
					    'no-useless-constructor': 2, | 
				
			||||||
 | 
					    'no-useless-escape': 0, | 
				
			||||||
 | 
					    'no-whitespace-before-property': 2, | 
				
			||||||
 | 
					    'no-with': 2, | 
				
			||||||
 | 
					    'one-var': [2, { | 
				
			||||||
 | 
					      'initialized': 'never' | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'operator-linebreak': [2, 'after', { | 
				
			||||||
 | 
					      'overrides': { | 
				
			||||||
 | 
					        '?': 'before', | 
				
			||||||
 | 
					        ':': 'before' | 
				
			||||||
 | 
					      } | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'padded-blocks': [2, 'never'], | 
				
			||||||
 | 
					    'quotes': [2, 'single', { | 
				
			||||||
 | 
					      'avoidEscape': true, | 
				
			||||||
 | 
					      'allowTemplateLiterals': true | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'semi': [2, 'never'], | 
				
			||||||
 | 
					    'semi-spacing': [2, { | 
				
			||||||
 | 
					      'before': false, | 
				
			||||||
 | 
					      'after': true | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'space-before-blocks': [2, 'always'], | 
				
			||||||
 | 
					    'space-before-function-paren': [2, 'never'], | 
				
			||||||
 | 
					    'space-in-parens': [2, 'never'], | 
				
			||||||
 | 
					    'space-infix-ops': 2, | 
				
			||||||
 | 
					    'space-unary-ops': [2, { | 
				
			||||||
 | 
					      'words': true, | 
				
			||||||
 | 
					      'nonwords': false | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'spaced-comment': [2, 'always', { | 
				
			||||||
 | 
					      'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'template-curly-spacing': [2, 'never'], | 
				
			||||||
 | 
					    'use-isnan': 2, | 
				
			||||||
 | 
					    'valid-typeof': 2, | 
				
			||||||
 | 
					    'wrap-iife': [2, 'any'], | 
				
			||||||
 | 
					    'yield-star-spacing': [2, 'both'], | 
				
			||||||
 | 
					    'yoda': [2, 'never'], | 
				
			||||||
 | 
					    'prefer-const': 2, | 
				
			||||||
 | 
					    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, | 
				
			||||||
 | 
					    'object-curly-spacing': [2, 'always', { | 
				
			||||||
 | 
					      objectsInObjects: false | 
				
			||||||
 | 
					    }], | 
				
			||||||
 | 
					    'array-bracket-spacing': [2, 'never'] | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					.DS_Store | 
				
			||||||
 | 
					node_modules/ | 
				
			||||||
 | 
					dist/ | 
				
			||||||
 | 
					npm-debug.log* | 
				
			||||||
 | 
					yarn-debug.log* | 
				
			||||||
 | 
					yarn-error.log* | 
				
			||||||
 | 
					**/*.log | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tests/**/coverage/ | 
				
			||||||
 | 
					tests/e2e/reports | 
				
			||||||
 | 
					selenium-debug.log | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Editor directories and files | 
				
			||||||
 | 
					.idea | 
				
			||||||
 | 
					.vscode | 
				
			||||||
 | 
					*.suo | 
				
			||||||
 | 
					*.ntvs* | 
				
			||||||
 | 
					*.njsproj | 
				
			||||||
 | 
					*.sln | 
				
			||||||
 | 
					*.local | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package-lock.json | 
				
			||||||
 | 
					yarn.lock | 
				
			||||||
@ -0,0 +1,30 @@ | 
				
			|||||||
 | 
					## 开发 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash | 
				
			||||||
 | 
					# 克隆项目 | 
				
			||||||
 | 
					git clone https://gitee.com/y_project/RuoYi-Vue | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 进入项目目录 | 
				
			||||||
 | 
					cd ruoyi-ui | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 安装依赖 | 
				
			||||||
 | 
					npm install | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 | 
				
			||||||
 | 
					npm install --registry=https://registry.npm.taobao.org | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 启动服务 | 
				
			||||||
 | 
					npm run dev | 
				
			||||||
 | 
					``` | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					浏览器访问 http://localhost:80 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 发布 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash | 
				
			||||||
 | 
					# 构建测试环境 | 
				
			||||||
 | 
					npm run build:stage | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 构建生产环境 | 
				
			||||||
 | 
					npm run build:prod | 
				
			||||||
 | 
					``` | 
				
			||||||
@ -0,0 +1,5 @@ | 
				
			|||||||
 | 
					module.exports = { | 
				
			||||||
 | 
					  presets: [ | 
				
			||||||
 | 
					    '@vue/app' | 
				
			||||||
 | 
					  ] | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,12 @@ | 
				
			|||||||
 | 
					@echo off | 
				
			||||||
 | 
					echo. | 
				
			||||||
 | 
					echo [信息] 打包Web工程,生成node_modules包文件。 | 
				
			||||||
 | 
					echo. | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%~d0 | 
				
			||||||
 | 
					cd %~dp0 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cd .. | 
				
			||||||
 | 
					npm install --registry=https://registry.npm.taobao.org | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pause | 
				
			||||||
@ -0,0 +1,12 @@ | 
				
			|||||||
 | 
					@echo off | 
				
			||||||
 | 
					echo. | 
				
			||||||
 | 
					echo [信息] 使用 Vue 运行 Web 工程。 | 
				
			||||||
 | 
					echo. | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%~d0 | 
				
			||||||
 | 
					cd %~dp0 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cd .. | 
				
			||||||
 | 
					npm run dev | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pause | 
				
			||||||
@ -0,0 +1,35 @@ | 
				
			|||||||
 | 
					const { run } = require('runjs') | 
				
			||||||
 | 
					const chalk = require('chalk') | 
				
			||||||
 | 
					const config = require('../vue.config.js') | 
				
			||||||
 | 
					const rawArgv = process.argv.slice(2) | 
				
			||||||
 | 
					const args = rawArgv.join(' ') | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (process.env.npm_config_preview || rawArgv.includes('--preview')) { | 
				
			||||||
 | 
					  const report = rawArgv.includes('--report') | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  run(`vue-cli-service build ${args}`) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const port = 9526 | 
				
			||||||
 | 
					  const publicPath = config.publicPath | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  var connect = require('connect') | 
				
			||||||
 | 
					  var serveStatic = require('serve-static') | 
				
			||||||
 | 
					  const app = connect() | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  app.use( | 
				
			||||||
 | 
					    publicPath, | 
				
			||||||
 | 
					    serveStatic('./dist', { | 
				
			||||||
 | 
					      index: ['index.html', '/'] | 
				
			||||||
 | 
					    }) | 
				
			||||||
 | 
					  ) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  app.listen(port, function () { | 
				
			||||||
 | 
					    console.log(chalk.green(`> Preview at  http://localhost:${port}${publicPath}`)) | 
				
			||||||
 | 
					    if (report) { | 
				
			||||||
 | 
					      console.log(chalk.green(`> Report at  http://localhost:${port}${publicPath}report.html`)) | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					  run(`vue-cli-service build ${args}`) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,102 @@ | 
				
			|||||||
 | 
					{ | 
				
			||||||
 | 
					  "name": "ruoyi", | 
				
			||||||
 | 
					  "version": "1.0.0", | 
				
			||||||
 | 
					  "description": "若依管理系统", | 
				
			||||||
 | 
					  "author": "若依", | 
				
			||||||
 | 
					  "license": "MIT", | 
				
			||||||
 | 
					  "scripts": { | 
				
			||||||
 | 
					    "dev": "vue-cli-service serve", | 
				
			||||||
 | 
					    "build:prod": "vue-cli-service build", | 
				
			||||||
 | 
					    "build:stage": "vue-cli-service build --mode staging", | 
				
			||||||
 | 
					    "preview": "node build/index.js --preview", | 
				
			||||||
 | 
					    "lint": "eslint --ext .js,.vue src", | 
				
			||||||
 | 
					    "test:unit": "jest --clearCache && vue-cli-service test:unit", | 
				
			||||||
 | 
					    "test:ci": "npm run lint && npm run test:unit", | 
				
			||||||
 | 
					    "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml", | 
				
			||||||
 | 
					    "new": "plop" | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  "husky": { | 
				
			||||||
 | 
					    "hooks": { | 
				
			||||||
 | 
					      "pre-commit": "lint-staged" | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  "lint-staged": { | 
				
			||||||
 | 
					    "src/**/*.{js,vue}": [ | 
				
			||||||
 | 
					      "eslint --fix", | 
				
			||||||
 | 
					      "git add" | 
				
			||||||
 | 
					    ] | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  "keywords": [ | 
				
			||||||
 | 
					    "vue", | 
				
			||||||
 | 
					    "admin", | 
				
			||||||
 | 
					    "dashboard", | 
				
			||||||
 | 
					    "element-ui", | 
				
			||||||
 | 
					    "boilerplate", | 
				
			||||||
 | 
					    "admin-template", | 
				
			||||||
 | 
					    "management-system" | 
				
			||||||
 | 
					  ], | 
				
			||||||
 | 
					  "repository": { | 
				
			||||||
 | 
					    "type": "git", | 
				
			||||||
 | 
					    "url": "https://gitee.com/y_project/RuoYi-Vue.git" | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  "dependencies": { | 
				
			||||||
 | 
					    "@riophae/vue-treeselect": "0.1.0", | 
				
			||||||
 | 
					    "vue-quill-editor": "3.0.6", | 
				
			||||||
 | 
					    "vue-cropper": "0.4.9", | 
				
			||||||
 | 
					    "axios": "0.18.1", | 
				
			||||||
 | 
					    "echarts": "4.2.1", | 
				
			||||||
 | 
					    "element-ui": "2.11.1", | 
				
			||||||
 | 
					    "fuse.js": "3.4.4", | 
				
			||||||
 | 
					    "js-cookie": "2.2.0", | 
				
			||||||
 | 
					    "normalize.css": "7.0.0", | 
				
			||||||
 | 
					    "nprogress": "0.2.0", | 
				
			||||||
 | 
					    "path-to-regexp": "2.4.0", | 
				
			||||||
 | 
					    "screenfull": "4.2.0", | 
				
			||||||
 | 
					    "vue": "2.6.10", | 
				
			||||||
 | 
					    "vue-count-to": "1.0.13", | 
				
			||||||
 | 
					    "vue-router": "3.0.2", | 
				
			||||||
 | 
					    "vue-splitpane": "1.0.4", | 
				
			||||||
 | 
					    "vuex": "3.1.0" | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  "devDependencies": { | 
				
			||||||
 | 
					    "@babel/core": "7.0.0", | 
				
			||||||
 | 
					    "@babel/register": "7.0.0", | 
				
			||||||
 | 
					    "@vue/cli-plugin-babel": "3.5.3", | 
				
			||||||
 | 
					    "@vue/cli-plugin-eslint": "^3.9.1", | 
				
			||||||
 | 
					    "@vue/cli-plugin-unit-jest": "3.5.3", | 
				
			||||||
 | 
					    "@vue/cli-service": "3.5.3", | 
				
			||||||
 | 
					    "@vue/test-utils": "1.0.0-beta.29", | 
				
			||||||
 | 
					    "autoprefixer": "^9.5.1", | 
				
			||||||
 | 
					    "babel-core": "7.0.0-bridge.0", | 
				
			||||||
 | 
					    "babel-eslint": "10.0.1", | 
				
			||||||
 | 
					    "babel-jest": "23.6.0", | 
				
			||||||
 | 
					    "chalk": "2.4.2", | 
				
			||||||
 | 
					    "chokidar": "2.1.5", | 
				
			||||||
 | 
					    "connect": "3.6.6", | 
				
			||||||
 | 
					    "eslint": "5.15.3", | 
				
			||||||
 | 
					    "eslint-plugin-vue": "5.2.2", | 
				
			||||||
 | 
					    "html-webpack-plugin": "3.2.0", | 
				
			||||||
 | 
					    "http-proxy-middleware": "^0.19.1", | 
				
			||||||
 | 
					    "husky": "1.3.1", | 
				
			||||||
 | 
					    "lint-staged": "8.1.5", | 
				
			||||||
 | 
					    "mockjs": "1.0.1-beta3", | 
				
			||||||
 | 
					    "node-sass": "^4.9.0", | 
				
			||||||
 | 
					    "plop": "2.3.0", | 
				
			||||||
 | 
					    "runjs": "^4.3.2", | 
				
			||||||
 | 
					    "sass-loader": "^7.1.0", | 
				
			||||||
 | 
					    "script-ext-html-webpack-plugin": "2.1.3", | 
				
			||||||
 | 
					    "script-loader": "0.7.2", | 
				
			||||||
 | 
					    "serve-static": "^1.13.2", | 
				
			||||||
 | 
					    "svg-sprite-loader": "4.1.3", | 
				
			||||||
 | 
					    "svgo": "1.2.0", | 
				
			||||||
 | 
					    "vue-template-compiler": "2.6.10" | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  "engines": { | 
				
			||||||
 | 
					    "node": ">=8.9", | 
				
			||||||
 | 
					    "npm": ">= 3.0.0" | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  "browserslist": [ | 
				
			||||||
 | 
					    "> 1%", | 
				
			||||||
 | 
					    "last 2 versions" | 
				
			||||||
 | 
					  ] | 
				
			||||||
 | 
					} | 
				
			||||||
| 
		 After Width: | Height: | Size: 5.5 KiB  | 
@ -0,0 +1,207 @@ | 
				
			|||||||
 | 
					<!DOCTYPE html> | 
				
			||||||
 | 
					<html> | 
				
			||||||
 | 
					  <head> | 
				
			||||||
 | 
					    <meta charset="utf-8"> | 
				
			||||||
 | 
					    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 
				
			||||||
 | 
					    <meta name="renderer" content="webkit"> | 
				
			||||||
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> | 
				
			||||||
 | 
					    <link rel="icon" href="<%= BASE_URL %>favicon.ico"> | 
				
			||||||
 | 
					    <title><%= webpackConfig.name %></title> | 
				
			||||||
 | 
						  <style> | 
				
			||||||
 | 
					    html, | 
				
			||||||
 | 
					    body, | 
				
			||||||
 | 
					    #app { | 
				
			||||||
 | 
					      height: 100%; | 
				
			||||||
 | 
					      margin: 0px; | 
				
			||||||
 | 
					      padding: 0px; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    .chromeframe { | 
				
			||||||
 | 
					      margin: 0.2em 0; | 
				
			||||||
 | 
					      background: #ccc; | 
				
			||||||
 | 
					      color: #000; | 
				
			||||||
 | 
					      padding: 0.2em 0; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #loader-wrapper { | 
				
			||||||
 | 
					      position: fixed; | 
				
			||||||
 | 
					      top: 0; | 
				
			||||||
 | 
					      left: 0; | 
				
			||||||
 | 
					      width: 100%; | 
				
			||||||
 | 
					      height: 100%; | 
				
			||||||
 | 
					      z-index: 999999; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #loader { | 
				
			||||||
 | 
					      display: block; | 
				
			||||||
 | 
					      position: relative; | 
				
			||||||
 | 
					      left: 50%; | 
				
			||||||
 | 
					      top: 50%; | 
				
			||||||
 | 
					      width: 150px; | 
				
			||||||
 | 
					      height: 150px; | 
				
			||||||
 | 
					      margin: -75px 0 0 -75px; | 
				
			||||||
 | 
					      border-radius: 50%; | 
				
			||||||
 | 
					      border: 3px solid transparent; | 
				
			||||||
 | 
					      border-top-color: #FFF; | 
				
			||||||
 | 
					      -webkit-animation: spin 2s linear infinite; | 
				
			||||||
 | 
					      -ms-animation: spin 2s linear infinite; | 
				
			||||||
 | 
					      -moz-animation: spin 2s linear infinite; | 
				
			||||||
 | 
					      -o-animation: spin 2s linear infinite; | 
				
			||||||
 | 
					      animation: spin 2s linear infinite; | 
				
			||||||
 | 
					      z-index: 1001; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #loader:before { | 
				
			||||||
 | 
					      content: ""; | 
				
			||||||
 | 
					      position: absolute; | 
				
			||||||
 | 
					      top: 5px; | 
				
			||||||
 | 
					      left: 5px; | 
				
			||||||
 | 
					      right: 5px; | 
				
			||||||
 | 
					      bottom: 5px; | 
				
			||||||
 | 
					      border-radius: 50%; | 
				
			||||||
 | 
					      border: 3px solid transparent; | 
				
			||||||
 | 
					      border-top-color: #FFF; | 
				
			||||||
 | 
					      -webkit-animation: spin 3s linear infinite; | 
				
			||||||
 | 
					      -moz-animation: spin 3s linear infinite; | 
				
			||||||
 | 
					      -o-animation: spin 3s linear infinite; | 
				
			||||||
 | 
					      -ms-animation: spin 3s linear infinite; | 
				
			||||||
 | 
					      animation: spin 3s linear infinite; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #loader:after { | 
				
			||||||
 | 
					      content: ""; | 
				
			||||||
 | 
					      position: absolute; | 
				
			||||||
 | 
					      top: 15px; | 
				
			||||||
 | 
					      left: 15px; | 
				
			||||||
 | 
					      right: 15px; | 
				
			||||||
 | 
					      bottom: 15px; | 
				
			||||||
 | 
					      border-radius: 50%; | 
				
			||||||
 | 
					      border: 3px solid transparent; | 
				
			||||||
 | 
					      border-top-color: #FFF; | 
				
			||||||
 | 
					      -moz-animation: spin 1.5s linear infinite; | 
				
			||||||
 | 
					      -o-animation: spin 1.5s linear infinite; | 
				
			||||||
 | 
					      -ms-animation: spin 1.5s linear infinite; | 
				
			||||||
 | 
					      -webkit-animation: spin 1.5s linear infinite; | 
				
			||||||
 | 
					      animation: spin 1.5s linear infinite; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @-webkit-keyframes spin { | 
				
			||||||
 | 
					      0% { | 
				
			||||||
 | 
					        -webkit-transform: rotate(0deg); | 
				
			||||||
 | 
					        -ms-transform: rotate(0deg); | 
				
			||||||
 | 
					        transform: rotate(0deg); | 
				
			||||||
 | 
					      } | 
				
			||||||
 | 
					      100% { | 
				
			||||||
 | 
					        -webkit-transform: rotate(360deg); | 
				
			||||||
 | 
					        -ms-transform: rotate(360deg); | 
				
			||||||
 | 
					        transform: rotate(360deg); | 
				
			||||||
 | 
					      } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @keyframes spin { | 
				
			||||||
 | 
					      0% { | 
				
			||||||
 | 
					        -webkit-transform: rotate(0deg); | 
				
			||||||
 | 
					        -ms-transform: rotate(0deg); | 
				
			||||||
 | 
					        transform: rotate(0deg); | 
				
			||||||
 | 
					      } | 
				
			||||||
 | 
					      100% { | 
				
			||||||
 | 
					        -webkit-transform: rotate(360deg); | 
				
			||||||
 | 
					        -ms-transform: rotate(360deg); | 
				
			||||||
 | 
					        transform: rotate(360deg); | 
				
			||||||
 | 
					      } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #loader-wrapper .loader-section { | 
				
			||||||
 | 
					      position: fixed; | 
				
			||||||
 | 
					      top: 0; | 
				
			||||||
 | 
					      width: 51%; | 
				
			||||||
 | 
					      height: 100%; | 
				
			||||||
 | 
					      background: #7171C6; | 
				
			||||||
 | 
					      z-index: 1000; | 
				
			||||||
 | 
					      -webkit-transform: translateX(0); | 
				
			||||||
 | 
					      -ms-transform: translateX(0); | 
				
			||||||
 | 
					      transform: translateX(0); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #loader-wrapper .loader-section.section-left { | 
				
			||||||
 | 
					      left: 0; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #loader-wrapper .loader-section.section-right { | 
				
			||||||
 | 
					      right: 0; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .loaded #loader-wrapper .loader-section.section-left { | 
				
			||||||
 | 
					      -webkit-transform: translateX(-100%); | 
				
			||||||
 | 
					      -ms-transform: translateX(-100%); | 
				
			||||||
 | 
					      transform: translateX(-100%); | 
				
			||||||
 | 
					      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); | 
				
			||||||
 | 
					      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .loaded #loader-wrapper .loader-section.section-right { | 
				
			||||||
 | 
					      -webkit-transform: translateX(100%); | 
				
			||||||
 | 
					      -ms-transform: translateX(100%); | 
				
			||||||
 | 
					      transform: translateX(100%); | 
				
			||||||
 | 
					      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); | 
				
			||||||
 | 
					      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .loaded #loader { | 
				
			||||||
 | 
					      opacity: 0; | 
				
			||||||
 | 
					      -webkit-transition: all 0.3s ease-out; | 
				
			||||||
 | 
					      transition: all 0.3s ease-out; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .loaded #loader-wrapper { | 
				
			||||||
 | 
					      visibility: hidden; | 
				
			||||||
 | 
					      -webkit-transform: translateY(-100%); | 
				
			||||||
 | 
					      -ms-transform: translateY(-100%); | 
				
			||||||
 | 
					      transform: translateY(-100%); | 
				
			||||||
 | 
					      -webkit-transition: all 0.3s 1s ease-out; | 
				
			||||||
 | 
					      transition: all 0.3s 1s ease-out; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .no-js #loader-wrapper { | 
				
			||||||
 | 
					      display: none; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .no-js h1 { | 
				
			||||||
 | 
					      color: #222222; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #loader-wrapper .load_title { | 
				
			||||||
 | 
					      font-family: 'Open Sans'; | 
				
			||||||
 | 
					      color: #FFF; | 
				
			||||||
 | 
					      font-size: 19px; | 
				
			||||||
 | 
					      width: 100%; | 
				
			||||||
 | 
					      text-align: center; | 
				
			||||||
 | 
					      z-index: 9999999999999; | 
				
			||||||
 | 
					      position: absolute; | 
				
			||||||
 | 
					      top: 60%; | 
				
			||||||
 | 
					      opacity: 1; | 
				
			||||||
 | 
					      line-height: 30px; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #loader-wrapper .load_title span { | 
				
			||||||
 | 
					      font-weight: normal; | 
				
			||||||
 | 
					      font-style: italic; | 
				
			||||||
 | 
					      font-size: 13px; | 
				
			||||||
 | 
					      color: #FFF; | 
				
			||||||
 | 
					      opacity: 0.5; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					  </style> | 
				
			||||||
 | 
					  </head> | 
				
			||||||
 | 
					  <body> | 
				
			||||||
 | 
					    <div id="app"> | 
				
			||||||
 | 
						    <div id="loader-wrapper"> | 
				
			||||||
 | 
							    <div id="loader"></div> | 
				
			||||||
 | 
							    <div class="loader-section section-left"></div> | 
				
			||||||
 | 
							    <div class="loader-section section-right"></div> | 
				
			||||||
 | 
							    <div class="load_title">正在加载系统资源,请耐心等待</div> | 
				
			||||||
 | 
					        </div> | 
				
			||||||
 | 
						</div> | 
				
			||||||
 | 
					  </body> | 
				
			||||||
 | 
					</html> | 
				
			||||||
@ -0,0 +1,11 @@ | 
				
			|||||||
 | 
					<template> | 
				
			||||||
 | 
					  <div id="app"> | 
				
			||||||
 | 
					    <router-view /> | 
				
			||||||
 | 
					  </div> | 
				
			||||||
 | 
					</template> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script> | 
				
			||||||
 | 
					export default  { | 
				
			||||||
 | 
					  name:  'App' | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					</script> | 
				
			||||||
@ -0,0 +1,40 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 登录方法
 | 
				
			||||||
 | 
					export function login(username, password, code, uuid) { | 
				
			||||||
 | 
					  const data = { | 
				
			||||||
 | 
					    username, | 
				
			||||||
 | 
					    password, | 
				
			||||||
 | 
					    code, | 
				
			||||||
 | 
					    uuid | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/login', | 
				
			||||||
 | 
					    method: 'post', | 
				
			||||||
 | 
					    params: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 获取用户详细信息
 | 
				
			||||||
 | 
					export function getInfo() { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/getInfo', | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 退出方法
 | 
				
			||||||
 | 
					export function logout() { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/logout', | 
				
			||||||
 | 
					    method: 'post' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 获取验证码
 | 
				
			||||||
 | 
					export function getCodeImg() { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/captchaImage', | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,9 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 获取路由
 | 
				
			||||||
 | 
					export const getRouters = () => { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/getRouters', | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,10 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询登录日志列表
 | 
				
			||||||
 | 
					export function list(query) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/monitor/logininfor/list', | 
				
			||||||
 | 
					    method: 'get', | 
				
			||||||
 | 
					    params: query | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,10 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询操作日志列表
 | 
				
			||||||
 | 
					export function list(query) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/monitor/operlog/list', | 
				
			||||||
 | 
					    method: 'get', | 
				
			||||||
 | 
					    params: query | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,9 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询服务器详细
 | 
				
			||||||
 | 
					export function getServer() { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/monitor/server', | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,52 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询参数列表
 | 
				
			||||||
 | 
					export function listConfig(query) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/config/list', | 
				
			||||||
 | 
					    method: 'get', | 
				
			||||||
 | 
					    params: query | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询参数详细
 | 
				
			||||||
 | 
					export function getConfig(configId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/config/' + configId, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 根据参数键名查询参数值
 | 
				
			||||||
 | 
					export function getConfigKey(configKey) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/config/configKey/' + configKey, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 新增参数配置
 | 
				
			||||||
 | 
					export function addConfig(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/config', | 
				
			||||||
 | 
					    method: 'post', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改参数配置
 | 
				
			||||||
 | 
					export function updateConfig(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/config', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 删除参数配置
 | 
				
			||||||
 | 
					export function delConfig(configId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/config/' + configId, | 
				
			||||||
 | 
					    method: 'delete' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,60 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询部门列表
 | 
				
			||||||
 | 
					export function listDept(query) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dept/list', | 
				
			||||||
 | 
					    method: 'get', | 
				
			||||||
 | 
					    params: query | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询部门详细
 | 
				
			||||||
 | 
					export function getDept(deptId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dept/' + deptId, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询部门下拉树结构
 | 
				
			||||||
 | 
					export function treeselect() { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dept/treeselect', | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 根据角色ID查询部门树结构
 | 
				
			||||||
 | 
					export function roleDeptTreeselect(roleId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dept/roleDeptTreeselect/' + roleId, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 新增部门
 | 
				
			||||||
 | 
					export function addDept(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dept', | 
				
			||||||
 | 
					    method: 'post', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改部门
 | 
				
			||||||
 | 
					export function updateDept(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dept', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 删除部门
 | 
				
			||||||
 | 
					export function delDept(deptId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dept/' + deptId, | 
				
			||||||
 | 
					    method: 'delete' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,52 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询字典数据列表
 | 
				
			||||||
 | 
					export function listData(query) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dict/data/list', | 
				
			||||||
 | 
					    method: 'get', | 
				
			||||||
 | 
					    params: query | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询字典数据详细
 | 
				
			||||||
 | 
					export function getData(dictCode) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dict/data/' + dictCode, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 根据字典类型查询字典数据信息
 | 
				
			||||||
 | 
					export function getDicts(dictType) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dict/data/dictType/' + dictType, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 新增字典数据
 | 
				
			||||||
 | 
					export function addData(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dict/data', | 
				
			||||||
 | 
					    method: 'post', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改字典数据
 | 
				
			||||||
 | 
					export function updateData(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dict/data', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 删除字典数据
 | 
				
			||||||
 | 
					export function delData(dictCode) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dict/data/' + dictCode, | 
				
			||||||
 | 
					    method: 'delete' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,44 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询字典类型列表
 | 
				
			||||||
 | 
					export function listType(query) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dict/type/list', | 
				
			||||||
 | 
					    method: 'get', | 
				
			||||||
 | 
					    params: query | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询字典类型详细
 | 
				
			||||||
 | 
					export function getType(dictId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dict/type/' + dictId, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 新增字典类型
 | 
				
			||||||
 | 
					export function addType(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dict/type', | 
				
			||||||
 | 
					    method: 'post', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改字典类型
 | 
				
			||||||
 | 
					export function updateType(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dict/type', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 删除字典类型
 | 
				
			||||||
 | 
					export function delType(dictId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/dict/type/' + dictId, | 
				
			||||||
 | 
					    method: 'delete' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,60 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询菜单列表
 | 
				
			||||||
 | 
					export function listMenu(query) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/menu/list', | 
				
			||||||
 | 
					    method: 'get', | 
				
			||||||
 | 
					    params: query | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询菜单详细
 | 
				
			||||||
 | 
					export function getMenu(menuId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/menu/' + menuId, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询菜单下拉树结构
 | 
				
			||||||
 | 
					export function treeselect() { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/menu/treeselect', | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 根据角色ID查询菜单下拉树结构
 | 
				
			||||||
 | 
					export function roleMenuTreeselect(roleId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/menu/roleMenuTreeselect/' + roleId, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 新增菜单
 | 
				
			||||||
 | 
					export function addMenu(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/menu', | 
				
			||||||
 | 
					    method: 'post', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改菜单
 | 
				
			||||||
 | 
					export function updateMenu(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/menu', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 删除菜单
 | 
				
			||||||
 | 
					export function delMenu(menuId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/menu/' + menuId, | 
				
			||||||
 | 
					    method: 'delete' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,44 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询公告列表
 | 
				
			||||||
 | 
					export function listNotice(query) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/notice/list', | 
				
			||||||
 | 
					    method: 'get', | 
				
			||||||
 | 
					    params: query | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询公告详细
 | 
				
			||||||
 | 
					export function getNotice(noticeId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/notice/' + noticeId, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 新增公告
 | 
				
			||||||
 | 
					export function addNotice(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/notice', | 
				
			||||||
 | 
					    method: 'post', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改公告
 | 
				
			||||||
 | 
					export function updateNotice(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/notice', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 删除公告
 | 
				
			||||||
 | 
					export function delNotice(noticeId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/notice/' + noticeId, | 
				
			||||||
 | 
					    method: 'delete' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,44 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询岗位列表
 | 
				
			||||||
 | 
					export function listPost(query) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/post/list', | 
				
			||||||
 | 
					    method: 'get', | 
				
			||||||
 | 
					    params: query | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询岗位详细
 | 
				
			||||||
 | 
					export function getPost(postId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/post/' + postId, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 新增岗位
 | 
				
			||||||
 | 
					export function addPost(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/post', | 
				
			||||||
 | 
					    method: 'post', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改岗位
 | 
				
			||||||
 | 
					export function updatePost(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/post', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 删除岗位
 | 
				
			||||||
 | 
					export function delPost(postId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/post/' + postId, | 
				
			||||||
 | 
					    method: 'delete' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,66 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询角色列表
 | 
				
			||||||
 | 
					export function listRole(query) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/role/list', | 
				
			||||||
 | 
					    method: 'get', | 
				
			||||||
 | 
					    params: query | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询角色详细
 | 
				
			||||||
 | 
					export function getRole(roleId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/role/' + roleId, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 新增角色
 | 
				
			||||||
 | 
					export function addRole(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/role', | 
				
			||||||
 | 
					    method: 'post', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改角色
 | 
				
			||||||
 | 
					export function updateRole(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/role', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 角色数据权限
 | 
				
			||||||
 | 
					export function dataScope(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/role/dataScope', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 角色状态修改
 | 
				
			||||||
 | 
					export function changeRoleStatus(roleId, status) { | 
				
			||||||
 | 
					  const data = { | 
				
			||||||
 | 
					    roleId, | 
				
			||||||
 | 
					    status | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/role/changeStatus', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 删除角色
 | 
				
			||||||
 | 
					export function delRole(roleId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/role/' + roleId, | 
				
			||||||
 | 
					    method: 'delete' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,109 @@ | 
				
			|||||||
 | 
					import request from '@/utils/request' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询用户列表
 | 
				
			||||||
 | 
					export function listUser(query) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/user/list', | 
				
			||||||
 | 
					    method: 'get', | 
				
			||||||
 | 
					    params: query | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询用户详细
 | 
				
			||||||
 | 
					export function getUser(userId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/user/' + userId, | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 新增用户
 | 
				
			||||||
 | 
					export function addUser(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/user', | 
				
			||||||
 | 
					    method: 'post', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改用户
 | 
				
			||||||
 | 
					export function updateUser(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/user', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 删除用户
 | 
				
			||||||
 | 
					export function delUser(userId) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/user/' + userId, | 
				
			||||||
 | 
					    method: 'delete' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 用户密码重置
 | 
				
			||||||
 | 
					export function resetUserPwd(userId, password) { | 
				
			||||||
 | 
					  const data = { | 
				
			||||||
 | 
					    userId, | 
				
			||||||
 | 
					    password | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/user/resetPwd', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 用户状态修改
 | 
				
			||||||
 | 
					export function changeUserStatus(userId, status) { | 
				
			||||||
 | 
					  const data = { | 
				
			||||||
 | 
					    userId, | 
				
			||||||
 | 
					    status | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/user/changeStatus', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询用户个人信息
 | 
				
			||||||
 | 
					export function getUserProfile() { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/user/profile', | 
				
			||||||
 | 
					    method: 'get' | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改用户个人信息
 | 
				
			||||||
 | 
					export function updateUserProfile(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/user/profile', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 用户密码重置
 | 
				
			||||||
 | 
					export function updateUserPwd(oldPassword, newPassword) { | 
				
			||||||
 | 
					  const data = { | 
				
			||||||
 | 
					    oldPassword, | 
				
			||||||
 | 
					    newPassword | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/user/profile/updatePwd', | 
				
			||||||
 | 
					    method: 'put', | 
				
			||||||
 | 
					    params: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 用户头像上传
 | 
				
			||||||
 | 
					export function uploadAvatar(data) { | 
				
			||||||
 | 
					  return request({ | 
				
			||||||
 | 
					    url: '/system/user/profile/avatar', | 
				
			||||||
 | 
					    method: 'post', | 
				
			||||||
 | 
					    data: data | 
				
			||||||
 | 
					  }) | 
				
			||||||
 | 
					} | 
				
			||||||
| 
		 After Width: | Height: | Size: 160 KiB  | 
| 
		 After Width: | Height: | Size: 96 KiB  | 
| 
		 After Width: | Height: | Size: 4.7 KiB  | 
@ -0,0 +1,9 @@ | 
				
			|||||||
 | 
					import Vue from 'vue' | 
				
			||||||
 | 
					import SvgIcon from '@/components/SvgIcon'// svg component
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// register globally
 | 
				
			||||||
 | 
					Vue.component('svg-icon', SvgIcon) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const req = require.context('./svg', false, /\.svg$/) | 
				
			||||||
 | 
					const requireAll = requireContext => requireContext.keys().map(requireContext) | 
				
			||||||
 | 
					requireAll(req) | 
				
			||||||
| 
		 After Width: | Height: | Size: 971 B  | 
| 
		 After Width: | Height: | Size: 319 B  | 
| 
		 After Width: | Height: | Size: 2.3 KiB  | 
| 
		 After Width: | Height: | Size: 418 B  | 
| 
		 After Width: | Height: | Size: 1.0 KiB  | 
| 
		 After Width: | Height: | Size: 627 B  | 
| 
		 After Width: | Height: | Size: 1.8 KiB  | 
| 
		 After Width: | Height: | Size: 1.3 KiB  | 
| 
		 After Width: | Height: | Size: 421 B  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 1.7 KiB  | 
| 
		 After Width: | Height: | Size: 3.6 KiB  | 
| 
		 After Width: | Height: | Size: 623 B  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 2.2 KiB  | 
| 
		 After Width: | Height: | Size: 1.8 KiB  | 
| 
		 After Width: | Height: | Size: 2.9 KiB  | 
| 
		 After Width: | Height: | Size: 906 B  | 
| 
		 After Width: | Height: | Size: 1.3 KiB  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  |