| @@ -0,0 +1,2 @@ | |||
| NODE_ENV=development | |||
| VUE_APP_NODE_ENV=dev | |||
| @@ -0,0 +1,2 @@ | |||
| NODE_ENV=production | |||
| VUE_APP_NODE_ENV=prod | |||
| @@ -0,0 +1,2 @@ | |||
| NODE_ENV=production | |||
| VUE_APP_NODE_ENV=prod:sit | |||
| @@ -0,0 +1,2 @@ | |||
| NODE_ENV=production | |||
| VUE_APP_NODE_ENV=prod:uat | |||
| @@ -0,0 +1,21 @@ | |||
| .DS_Store | |||
| node_modules | |||
| /dist | |||
| # local env files | |||
| .env.local | |||
| .env.*.local | |||
| # Log files | |||
| npm-debug.log* | |||
| yarn-debug.log* | |||
| yarn-error.log* | |||
| # Editor directories and files | |||
| .idea | |||
| .vscode | |||
| *.suo | |||
| *.ntvs* | |||
| *.njsproj | |||
| *.sln | |||
| *.sw* | |||
| @@ -0,0 +1,201 @@ | |||
| Apache License | |||
| Version 2.0, January 2004 | |||
| http://www.apache.org/licenses/ | |||
| TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | |||
| 1. Definitions. | |||
| "License" shall mean the terms and conditions for use, reproduction, | |||
| and distribution as defined by Sections 1 through 9 of this document. | |||
| "Licensor" shall mean the copyright owner or entity authorized by | |||
| the copyright owner that is granting the License. | |||
| "Legal Entity" shall mean the union of the acting entity and all | |||
| other entities that control, are controlled by, or are under common | |||
| control with that entity. For the purposes of this definition, | |||
| "control" means (i) the power, direct or indirect, to cause the | |||
| direction or management of such entity, whether by contract or | |||
| otherwise, or (ii) ownership of fifty percent (50%) or more of the | |||
| outstanding shares, or (iii) beneficial ownership of such entity. | |||
| "You" (or "Your") shall mean an individual or Legal Entity | |||
| exercising permissions granted by this License. | |||
| "Source" form shall mean the preferred form for making modifications, | |||
| including but not limited to software source code, documentation | |||
| source, and configuration files. | |||
| "Object" form shall mean any form resulting from mechanical | |||
| transformation or translation of a Source form, including but | |||
| not limited to compiled object code, generated documentation, | |||
| and conversions to other media types. | |||
| "Work" shall mean the work of authorship, whether in Source or | |||
| Object form, made available under the License, as indicated by a | |||
| copyright notice that is included in or attached to the work | |||
| (an example is provided in the Appendix below). | |||
| "Derivative Works" shall mean any work, whether in Source or Object | |||
| form, that is based on (or derived from) the Work and for which the | |||
| editorial revisions, annotations, elaborations, or other modifications | |||
| represent, as a whole, an original work of authorship. For the purposes | |||
| of this License, Derivative Works shall not include works that remain | |||
| separable from, or merely link (or bind by name) to the interfaces of, | |||
| the Work and Derivative Works thereof. | |||
| "Contribution" shall mean any work of authorship, including | |||
| the original version of the Work and any modifications or additions | |||
| to that Work or Derivative Works thereof, that is intentionally | |||
| submitted to Licensor for inclusion in the Work by the copyright owner | |||
| or by an individual or Legal Entity authorized to submit on behalf of | |||
| the copyright owner. For the purposes of this definition, "submitted" | |||
| means any form of electronic, verbal, or written communication sent | |||
| to the Licensor or its representatives, including but not limited to | |||
| communication on electronic mailing lists, source code control systems, | |||
| and issue tracking systems that are managed by, or on behalf of, the | |||
| Licensor for the purpose of discussing and improving the Work, but | |||
| excluding communication that is conspicuously marked or otherwise | |||
| designated in writing by the copyright owner as "Not a Contribution." | |||
| "Contributor" shall mean Licensor and any individual or Legal Entity | |||
| on behalf of whom a Contribution has been received by Licensor and | |||
| subsequently incorporated within the Work. | |||
| 2. Grant of Copyright License. Subject to the terms and conditions of | |||
| this License, each Contributor hereby grants to You a perpetual, | |||
| worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |||
| copyright license to reproduce, prepare Derivative Works of, | |||
| publicly display, publicly perform, sublicense, and distribute the | |||
| Work and such Derivative Works in Source or Object form. | |||
| 3. Grant of Patent License. Subject to the terms and conditions of | |||
| this License, each Contributor hereby grants to You a perpetual, | |||
| worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |||
| (except as stated in this section) patent license to make, have made, | |||
| use, offer to sell, sell, import, and otherwise transfer the Work, | |||
| where such license applies only to those patent claims licensable | |||
| by such Contributor that are necessarily infringed by their | |||
| Contribution(s) alone or by combination of their Contribution(s) | |||
| with the Work to which such Contribution(s) was submitted. If You | |||
| institute patent litigation against any entity (including a | |||
| cross-claim or counterclaim in a lawsuit) alleging that the Work | |||
| or a Contribution incorporated within the Work constitutes direct | |||
| or contributory patent infringement, then any patent licenses | |||
| granted to You under this License for that Work shall terminate | |||
| as of the date such litigation is filed. | |||
| 4. Redistribution. You may reproduce and distribute copies of the | |||
| Work or Derivative Works thereof in any medium, with or without | |||
| modifications, and in Source or Object form, provided that You | |||
| meet the following conditions: | |||
| (a) You must give any other recipients of the Work or | |||
| Derivative Works a copy of this License; and | |||
| (b) You must cause any modified files to carry prominent notices | |||
| stating that You changed the files; and | |||
| (c) You must retain, in the Source form of any Derivative Works | |||
| that You distribute, all copyright, patent, trademark, and | |||
| attribution notices from the Source form of the Work, | |||
| excluding those notices that do not pertain to any part of | |||
| the Derivative Works; and | |||
| (d) If the Work includes a "NOTICE" text file as part of its | |||
| distribution, then any Derivative Works that You distribute must | |||
| include a readable copy of the attribution notices contained | |||
| within such NOTICE file, excluding those notices that do not | |||
| pertain to any part of the Derivative Works, in at least one | |||
| of the following places: within a NOTICE text file distributed | |||
| as part of the Derivative Works; within the Source form or | |||
| documentation, if provided along with the Derivative Works; or, | |||
| within a display generated by the Derivative Works, if and | |||
| wherever such third-party notices normally appear. The contents | |||
| of the NOTICE file are for informational purposes only and | |||
| do not modify the License. You may add Your own attribution | |||
| notices within Derivative Works that You distribute, alongside | |||
| or as an addendum to the NOTICE text from the Work, provided | |||
| that such additional attribution notices cannot be construed | |||
| as modifying the License. | |||
| You may add Your own copyright statement to Your modifications and | |||
| may provide additional or different license terms and conditions | |||
| for use, reproduction, or distribution of Your modifications, or | |||
| for any such Derivative Works as a whole, provided Your use, | |||
| reproduction, and distribution of the Work otherwise complies with | |||
| the conditions stated in this License. | |||
| 5. Submission of Contributions. Unless You explicitly state otherwise, | |||
| any Contribution intentionally submitted for inclusion in the Work | |||
| by You to the Licensor shall be under the terms and conditions of | |||
| this License, without any additional terms or conditions. | |||
| Notwithstanding the above, nothing herein shall supersede or modify | |||
| the terms of any separate license agreement you may have executed | |||
| with Licensor regarding such Contributions. | |||
| 6. Trademarks. This License does not grant permission to use the trade | |||
| names, trademarks, service marks, or product names of the Licensor, | |||
| except as required for reasonable and customary use in describing the | |||
| origin of the Work and reproducing the content of the NOTICE file. | |||
| 7. Disclaimer of Warranty. Unless required by applicable law or | |||
| agreed to in writing, Licensor provides the Work (and each | |||
| Contributor provides its Contributions) on an "AS IS" BASIS, | |||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | |||
| implied, including, without limitation, any warranties or conditions | |||
| of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | |||
| PARTICULAR PURPOSE. You are solely responsible for determining the | |||
| appropriateness of using or redistributing the Work and assume any | |||
| risks associated with Your exercise of permissions under this License. | |||
| 8. Limitation of Liability. In no event and under no legal theory, | |||
| whether in tort (including negligence), contract, or otherwise, | |||
| unless required by applicable law (such as deliberate and grossly | |||
| negligent acts) or agreed to in writing, shall any Contributor be | |||
| liable to You for damages, including any direct, indirect, special, | |||
| incidental, or consequential damages of any character arising as a | |||
| result of this License or out of the use or inability to use the | |||
| Work (including but not limited to damages for loss of goodwill, | |||
| work stoppage, computer failure or malfunction, or any and all | |||
| other commercial damages or losses), even if such Contributor | |||
| has been advised of the possibility of such damages. | |||
| 9. Accepting Warranty or Additional Liability. While redistributing | |||
| the Work or Derivative Works thereof, You may choose to offer, | |||
| and charge a fee for, acceptance of support, warranty, indemnity, | |||
| or other liability obligations and/or rights consistent with this | |||
| License. However, in accepting such obligations, You may act only | |||
| on Your own behalf and on Your sole responsibility, not on behalf | |||
| of any other Contributor, and only if You agree to indemnify, | |||
| defend, and hold each Contributor harmless for any liability | |||
| incurred by, or claims asserted against, such Contributor by reason | |||
| of your accepting any such warranty or additional liability. | |||
| END OF TERMS AND CONDITIONS | |||
| APPENDIX: How to apply the Apache License to your work. | |||
| To apply the Apache License to your work, attach the following | |||
| boilerplate notice, with the fields enclosed by brackets "[]" | |||
| replaced with your own identifying information. (Don't include | |||
| the brackets!) The text should be enclosed in the appropriate | |||
| comment syntax for the file format. We also recommend that a | |||
| file or class name and description of purpose be included on the | |||
| same "printed page" as the copyright notice for easier | |||
| identification within third-party archives. | |||
| Copyright [yyyy] [name of copyright owner] | |||
| Licensed under the Apache License, Version 2.0 (the "License"); | |||
| you may not use this file except in compliance with the License. | |||
| You may obtain a copy of the License at | |||
| http://www.apache.org/licenses/LICENSE-2.0 | |||
| Unless required by applicable law or agreed to in writing, software | |||
| distributed under the License is distributed on an "AS IS" BASIS, | |||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| See the License for the specific language governing permissions and | |||
| limitations under the License. | |||
| @@ -0,0 +1,104 @@ | |||
| ## renren-ui | |||
| - renren-ui基于vue、element-ui构建开发,实现 【[renren-security](https://gitee.com/renrenio/renren-security)】 后台管理前端功能,提供一套更优的前端解决方案 | |||
| - 前后端分离,通过token进行数据交互,可独立部署 | |||
| - 动态菜单,通过菜单管理统一管理访问路由 | |||
| - 后端地址:https://gitee.com/renrenio/renren-security | |||
| - 演示地址:[http://demo.open.renren.io/renren-security](http://demo.open.renren.io/renren-security) (账号密码:admin/admin) | |||
| <br> | |||
|  | |||
| ## 安装 | |||
| 您需要提前在本地安装[Node.js](https://nodejs.org/en/),版本号为:[12.x、14.x],再使用[Git](https://git-scm.com/)克隆项目或者直接下载项目后,然后通过`终端命令行`执行以下命令。 | |||
| ```bash | |||
| # 切换到项目根目录 | |||
| # 安装插件 | |||
| npm install | |||
| # 启动项目 | |||
| npm run serve | |||
| ``` | |||
| > 如网络不稳定,安装时出错或进度过慢!请移步 [cnpm](https://npmmirror.com/) 淘宝镜像进行安装。 | |||
| 启动完成后,会自动打开浏览器访问 [http://localhost:8001](http://localhost:8001),如您看到下面的页面代表`前端项目`运行成功!因为前后端分离项目,需保证`前端项目`和`后台项目`分别独立正常运行。 | |||
| 请留意下面的页面,其中`验证码`未能正常显示,控制台有`API请求`报错信息!这时需检查`后台项目`是否正常运行。 | |||
| ## 技术栈 | |||
| 提前了解和学习这些知识会对使用本项目有很大的帮助。 | |||
| * [Node.js](https://nodejs.org/) | |||
| * [ES6](http://es6.ruanyifeng.com/) | |||
| * [Vue-cli](https://github.com/vuejs/vue-cli) | |||
| * [Vue](https://cn.vuejs.org/) | |||
| * [Vue-router](https://router.vuejs.org/zh/) | |||
| * [Vuex](https://vuex.vuejs.org/zh/) | |||
| * [Vue-i18n](https://github.com/kazupon/vue-i18n) | |||
| * [Axios](https://github.com/axios/axios) | |||
| * [Element](https://element.eleme.cn/#/zh-CN) | |||
| * [JS-cookie](https://github.com/js-cookie/js-cookie) | |||
| ## 目录结构 | |||
| ``` | |||
| ├── src | |||
| │ ├── assets // 静态资源 | |||
| │ ├── components // 公共组件 | |||
| │ ├── element-ui // element样式 | |||
| │ ├── i18n // 国际化 | |||
| │ ├── icons // 图标 | |||
| │ ├── mixins // 混入 | |||
| │ ├── router // 路由 | |||
| │ ├── store // 状态管理 | |||
| │ ├── utils // 工具类 | |||
| │ ├── views // 业务相关 | |||
| │ ├── App.vue | |||
| │ ├── main.js // 入口 | |||
| ├── ... | |||
| ├── package-lock.json | |||
| ├── package.json | |||
| └── vue.config.js // vue-cli脚手架配置 | |||
| ``` | |||
| <br> | |||
| ## 常见问题 | |||
| 如何修改API请求地址? | |||
| * 修改`/src/pubilc/index.html`文件中`<!-- 开发环境 -->`注释下的`window.SITE_CONFIG['apiURL']`变量值。 | |||
| ``` | |||
| <!-- 开发环境 --> | |||
| <% if (process.env.VUE_APP_NODE_ENV === 'dev') { %> | |||
| <script> | |||
| window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/renren-admin'; | |||
| </script> | |||
| <% } %> | |||
| ``` | |||
| <br> | |||
| ## 如何交流、反馈、参与贡献? | |||
| - 开发文档:https://www.renren.io/guide/security | |||
| - 官方社区:https://www.renren.io/community | |||
| - Gitee仓库:https://gitee.com/renrenio/renren-ui | |||
| - [人人开源](https://www.renren.io):https://www.renren.io | |||
| - 如需关注项目最新动态,请Watch、Star项目,同时也是对项目最好的支持 | |||
| - 技术讨论、二次开发等咨询、问题和建议,请移步到官方社区,我会在第一时间进行解答和回复! | |||
| - 微信扫码并关注【人人开源】,获得项目最新动态及更新提醒<br> | |||
| <br> | |||
| ## 微信交流群 | |||
| 我们提供了微信交流群,扫码下面的二维码,关注【人人开源】公众号,回复【加群】,即可根据提示加入微信群! | |||
| <br><br> | |||
|  | |||
| <br> | |||
| <br> | |||
| @@ -0,0 +1,5 @@ | |||
| module.exports = { | |||
| presets: [ | |||
| '@vue/cli-plugin-babel/preset' | |||
| ] | |||
| } | |||
| @@ -0,0 +1,52 @@ | |||
| { | |||
| "name": "renren-ui", | |||
| "version": "5.0.0", | |||
| "private": true, | |||
| "scripts": { | |||
| "serve": "vue-cli-service serve", | |||
| "build": "vue-cli-service build", | |||
| "build:prod": "vue-cli-service build --mode production", | |||
| "build:sit": "vue-cli-service build --mode production.sit", | |||
| "build:uat": "vue-cli-service build --mode production.uat" | |||
| }, | |||
| "dependencies": { | |||
| "axios": "^0.19.2", | |||
| "babel-eslint": "^8.0.1", | |||
| "babel-plugin-component": "^1.1.1", | |||
| "core-js": "^3.6.5", | |||
| "element-theme": "^2.0.1", | |||
| "element-ui": "^2.15.7", | |||
| "js-cookie": "^2.2.1", | |||
| "lodash": "^4.17.19", | |||
| "qs": "^6.9.4", | |||
| "quill": "^1.3.7", | |||
| "quill-image-drop-module": "^1.0.3", | |||
| "quill-image-resize-module": "^3.0.0", | |||
| "sass": "^1.26.5", | |||
| "sass-loader": "^9.0.2", | |||
| "screenfull": "^4.2.1", | |||
| "svg-sprite-loader": "^5.0.0", | |||
| "vue": "^2.6.11", | |||
| "vue-cron": "^1.0.9", | |||
| "vue-i18n": "^8.18.2", | |||
| "vue-quill-editor": "^3.0.6", | |||
| "vue-router": "3.0.7", | |||
| "vuex": "^3.5.1" | |||
| }, | |||
| "devDependencies": { | |||
| "@vue/cli-plugin-babel": "^4.4.6", | |||
| "@vue/cli-service": "^4.4.6", | |||
| "element-theme-chalk": "^2.15.7", | |||
| "natives": "^1.1.6", | |||
| "vue-template-compiler": "^2.6.11" | |||
| }, | |||
| "browserslist": [ | |||
| "> 1%", | |||
| "last 2 versions", | |||
| "not ie <= 10" | |||
| ], | |||
| "engines": { | |||
| "node": ">= 8.11.1", | |||
| "npm": ">= 5.6.0" | |||
| } | |||
| } | |||
| @@ -0,0 +1,58 @@ | |||
| <!DOCTYPE html> | |||
| <html> | |||
| <head> | |||
| <meta charset="UTF-8"> | |||
| <meta http-equiv="X-UA-Compatible" content="ie=edge"> | |||
| <link rel="shortcut icon" href="<%= BASE_URL %>favicon.ico"> | |||
| <!-- 站点配置 --> | |||
| <script> | |||
| window.SITE_CONFIG = {}; | |||
| window.SITE_CONFIG['version'] = 'v5.0.0'; | |||
| window.SITE_CONFIG['nodeEnv'] = '<%= process.env.VUE_APP_NODE_ENV %>'; | |||
| window.SITE_CONFIG['apiURL'] = ''; // api请求地址 | |||
| window.SITE_CONFIG['storeState'] = {}; // vuex本地储存初始化状态(用于不刷新页面的情况下,也能重置初始化项目中所有状态) | |||
| window.SITE_CONFIG['contentTabDefault'] = { // 内容标签页默认属性对象 | |||
| 'name': '', // 名称, 由 this.$route.name 自动赋值(默认,名称 === 路由名称 === 路由路径) | |||
| 'params': {}, // 参数, 由 this.$route.params 自动赋值 | |||
| 'query': {}, // 查询参数, 由 this.$route.query 自动赋值 | |||
| 'menuId': '', // 菜单id(用于选中侧边栏菜单,与this.$store.state.sidebarMenuActiveName进行匹配) | |||
| 'title': '', // 标题 | |||
| 'isTab': true, // 是否通过tab展示内容? | |||
| 'iframeURL': '' // 是否通过iframe嵌套展示内容? (以http[s]://开头, 自动匹配) | |||
| }; | |||
| window.SITE_CONFIG['menuList'] = []; // 左侧菜单列表(后台返回,未做处理) | |||
| window.SITE_CONFIG['permissions'] = []; // 页面按钮操作权限(后台返回,未做处理) | |||
| window.SITE_CONFIG['dynamicRoutes'] = []; // 动态路由列表 | |||
| window.SITE_CONFIG['dynamicMenuRoutes'] = []; // 动态(菜单)路由列表 | |||
| window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] = false; // 动态(菜单)路由是否已经添加的状态标示(用于判断是否需要重新拉取数据并进行动态添加操作) | |||
| </script> | |||
| <!-- 开发环境 --> | |||
| <% if (process.env.VUE_APP_NODE_ENV === 'dev') { %> | |||
| <script> | |||
| window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/bdty-admin'; | |||
| </script> | |||
| <% } %> | |||
| <!-- 集成测试环境 --> | |||
| <% if (process.env.VUE_APP_NODE_ENV === 'prod:sit') { %> | |||
| <script> | |||
| window.SITE_CONFIG['apiURL'] = 'http://192.168.1.98:8080/bdty-admin'; | |||
| </script> | |||
| <% } %> | |||
| <!-- 验收测试环境 --> | |||
| <% if (process.env.VUE_APP_NODE_ENV === 'prod:uat') { %> | |||
| <script> | |||
| window.SITE_CONFIG['apiURL'] = 'http://192.168.1.98:8080/bdty-admin'; | |||
| </script> | |||
| <% } %> | |||
| <!-- 生产环境 --> | |||
| <% if (process.env.VUE_APP_NODE_ENV === 'prod') { %> | |||
| <script> | |||
| window.SITE_CONFIG['apiURL'] = 'http://192.168.1.65:8080/bdty-admin'; | |||
| </script> | |||
| <% } %> | |||
| </head> | |||
| <body> | |||
| <div id="app"></div> | |||
| </body> | |||
| </html> | |||
| @@ -0,0 +1,34 @@ | |||
| <template> | |||
| <transition name="el-fade-in-linear"> | |||
| <router-view /> | |||
| </transition> | |||
| </template> | |||
| <style> | |||
| .el-table th.gutter{ | |||
| display: table-cell!important; | |||
| } | |||
| </style> | |||
| <script> | |||
| import Cookies from 'js-cookie' | |||
| import { messages } from '@/i18n' | |||
| export default { | |||
| watch: { | |||
| '$i18n.locale': 'i18nHandle' | |||
| }, | |||
| created () { | |||
| this.i18nHandle(this.$i18n.locale) | |||
| }, | |||
| methods: { | |||
| i18nHandle (val, oldVal) { | |||
| Cookies.set('language', val) | |||
| document.querySelector('html').setAttribute('lang', val) | |||
| document.title = messages[val].brand.lg | |||
| // 非登录页面,切换语言刷新页面 | |||
| if (this.$route.name !== 'login' && oldVal) { | |||
| window.location.reload() | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| @@ -0,0 +1,11 @@ | |||
| // 变量 | |||
| @import "~@/element-ui/theme-variables.scss"; | |||
| @import "./variables.scss"; | |||
| // 公共 | |||
| @import "./normalize.scss"; | |||
| @import "./common.scss"; | |||
| // 页面 | |||
| @import "./pages/login.scss"; | |||
| @import "./pages/404.scss"; | |||
| // 模块 | |||
| @import "./modules/home.scss"; | |||
| @@ -0,0 +1,713 @@ | |||
| *, | |||
| *:before, | |||
| *:after { | |||
| box-sizing: border-box; | |||
| } | |||
| body { | |||
| font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif; | |||
| font-size: $--font-size-base; | |||
| line-height: $base--line-height; | |||
| color: $--color-text-primary; | |||
| background-color: #fff; | |||
| } | |||
| a { | |||
| color: mix(#fff, $--color-primary, 20%); | |||
| text-decoration: none; | |||
| &:focus, | |||
| &:hover { | |||
| color: $--color-primary; | |||
| text-decoration: underline; | |||
| } | |||
| } | |||
| img { | |||
| vertical-align: middle; | |||
| } | |||
| :focus, | |||
| :hover { | |||
| outline: none; | |||
| } | |||
| /* Utils | |||
| ------------------------------ */ | |||
| [v-cloak] { | |||
| display: none; | |||
| } | |||
| .clearfix:before, | |||
| .clearfix:after { | |||
| content: " "; | |||
| display: table; | |||
| } | |||
| .clearfix:after { | |||
| clear: both; | |||
| } | |||
| .fr { | |||
| float: right !important; | |||
| } | |||
| .fl { | |||
| float: left !important; | |||
| } | |||
| .fi { | |||
| float: initial !important; | |||
| } | |||
| .m-auto { | |||
| margin: auto !important; | |||
| } | |||
| .mt-auto { | |||
| margin-top: auto !important; | |||
| } | |||
| .mr-auto { | |||
| margin-right: auto !important; | |||
| } | |||
| .mb-auto { | |||
| margin-bottom: auto !important; | |||
| } | |||
| .ml-auto { | |||
| margin-left: auto !important; | |||
| } | |||
| .text-right { | |||
| text-align: right !important; | |||
| } | |||
| .text-center { | |||
| text-align: center !important; | |||
| } | |||
| .text-left { | |||
| text-align: left !important; | |||
| } | |||
| .w-percent-100 { | |||
| width: 100% !important; | |||
| } | |||
| .base-line-height { | |||
| line-height: $base--line-height !important; | |||
| } | |||
| /* Reset element-ui | |||
| ------------------------------ */ | |||
| .aui-wrapper { | |||
| .el-card + .el-card { | |||
| margin-top: 15px; | |||
| } | |||
| .el-input__prefix .el-input__icon { | |||
| display: inline-block; | |||
| vertical-align: middle; | |||
| } | |||
| .el-date-editor .el-range-separator { | |||
| width: 8%; | |||
| } | |||
| .el-table th { | |||
| color: $--color-text-primary; | |||
| background-color: $--background-color-base; | |||
| } | |||
| .el-pagination { | |||
| margin-top: 15px; | |||
| text-align: right; | |||
| } | |||
| .el-table__expand-icon { | |||
| display: inline-block; | |||
| width: 14px; | |||
| vertical-align: middle; | |||
| margin-right: 5px; | |||
| } | |||
| } | |||
| /* Common | |||
| ------------------------------ */ | |||
| // 图标 | |||
| .icon-svg { | |||
| width: 1em; | |||
| height: 1em; | |||
| fill: currentColor; | |||
| vertical-align: middle; | |||
| overflow: hidden; | |||
| } | |||
| // 卡片 | |||
| .aui-card--fill .el-card__header { | |||
| height: $content--card-header-height; | |||
| line-height: $content--card-header-height - 36px; | |||
| } | |||
| .aui-card__title { | |||
| font-size: 16px; | |||
| } | |||
| // 表单 | |||
| .aui-form__label-icon { | |||
| display: inline-block; | |||
| margin: 0 3px; | |||
| vertical-align: middle; | |||
| font-size: 18px; | |||
| color: $--color-text-secondary; | |||
| } | |||
| // 按钮 | |||
| .aui-button--dashed { | |||
| border-style: dashed; | |||
| &:focus, | |||
| &:hover { | |||
| background-color: transparent; | |||
| } | |||
| &-add { | |||
| > span > *[class*="el-icon-"], | |||
| > span > *[class*="icon"] { | |||
| vertical-align: middle; | |||
| font-size: 18px; | |||
| margin-right: 5px; | |||
| } | |||
| } | |||
| } | |||
| // 主题工具 | |||
| .aui-theme-tools { | |||
| position: fixed; | |||
| top: $navbar--height + $content--tabs-header-height + 15px; | |||
| right: -210px; | |||
| bottom: 0; | |||
| z-index: 1010; | |||
| width: 210px; | |||
| transition: right .3s; | |||
| &--open { | |||
| right: 0; | |||
| } | |||
| &__toggle { | |||
| position: absolute; | |||
| top: 80px; | |||
| left: -40px; | |||
| width: 40px; | |||
| padding: 10px 8px; | |||
| text-align: center; | |||
| font-size: 20px; | |||
| border-right: 0; | |||
| border-radius: $--border-radius-base 0 0 $--border-radius-base; | |||
| color: #fff; | |||
| background-color: $--color-primary; | |||
| cursor: pointer; | |||
| } | |||
| &__content { | |||
| height: 100%; | |||
| padding: 5px 20px 20px; | |||
| border: 1px solid $--border-color-lighter; | |||
| border-radius: $--border-radius-base 0 0 $--border-radius-base; | |||
| background-color: #fff; | |||
| .el-radio { | |||
| display: block; | |||
| margin-left: 0 !important; | |||
| line-height: 28px; | |||
| } | |||
| } | |||
| &__item + &__item { | |||
| margin-top: 15px; | |||
| border-top: 1px solid $--border-color-lighter; | |||
| } | |||
| } | |||
| /* Layout | |||
| ------------------------------ */ | |||
| .aui-wrapper { | |||
| position: relative; | |||
| padding-top: $navbar--height; | |||
| } | |||
| /* Sidebar fold | |||
| ------------------------------ */ | |||
| .aui-sidebar--fold { | |||
| .aui-navbar { | |||
| &__header, | |||
| &__brand { | |||
| width: $sidebar--width-fold; | |||
| } | |||
| &__brand { | |||
| &-lg { | |||
| display: none; | |||
| } | |||
| &-mini { | |||
| display: inline-block; | |||
| } | |||
| } | |||
| &__icon-menu--switch { | |||
| transform: rotateZ(180deg); | |||
| } | |||
| } | |||
| .aui-sidebar { | |||
| &__inner { | |||
| width: $sidebar--width-fold + 20px; | |||
| } | |||
| &, | |||
| &__menu { | |||
| width: $sidebar--width-fold; | |||
| } | |||
| &__menu > li > .el-submenu__title { | |||
| text-align: center; | |||
| } | |||
| &__menu-icon { | |||
| margin-right: 0; | |||
| font-size: 18px; | |||
| } | |||
| } | |||
| .aui-content { | |||
| &__wrapper { | |||
| margin-left: $sidebar--width-fold; | |||
| } | |||
| &--tabs > .el-tabs > .el-tabs__header { | |||
| left: $sidebar--width-fold; | |||
| } | |||
| } | |||
| } | |||
| /* Navbar | |||
| ------------------------------ */ | |||
| .aui-navbar { | |||
| position: fixed; | |||
| top: 0; | |||
| right: 0; | |||
| left: 0; | |||
| z-index: 1030; | |||
| display: flex; | |||
| align-items: stretch; | |||
| height: $navbar--height; | |||
| background-color: $--color-primary; | |||
| box-shadow: 0 1px 0 0 rgba(0, 0, 0, .05); | |||
| &--colorful { | |||
| .aui-navbar__body { | |||
| background-color: transparent; | |||
| } | |||
| .aui-navbar__menu { | |||
| > .el-menu-item, | |||
| > .el-submenu > .el-submenu__title { | |||
| color: #fff; | |||
| &:focus, | |||
| &:hover { | |||
| color: #fff; | |||
| background-color: mix(#000, $--color-primary, 15%); | |||
| } | |||
| } | |||
| > .el-menu-item.is-active, | |||
| > .el-submenu.is-active > .el-submenu__title { | |||
| color: #fff; | |||
| &:focus, | |||
| &:hover { | |||
| color: #fff; | |||
| } | |||
| } | |||
| .el-menu-item i, | |||
| .el-submenu__title i, | |||
| .el-menu-item svg, | |||
| .el-submenu__title svg, | |||
| .el-menu-item .el-dropdown { | |||
| color: #fff !important; | |||
| } | |||
| .el-button { | |||
| color: #fff; | |||
| background-color: transparent; | |||
| } | |||
| } | |||
| .aui-navbar__search { | |||
| &-txt { | |||
| .el-input__inner { | |||
| color: #fff; | |||
| border-color: #fff; | |||
| &::-webkit-input-placeholder { | |||
| color: #fff; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| &__header { | |||
| position: relative; | |||
| width: $sidebar--width; | |||
| height: $navbar--height; | |||
| transition: width .3s; | |||
| } | |||
| &__brand { | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| padding: 5px; | |||
| margin: 0; | |||
| width: 100%; | |||
| height: 100%; | |||
| font-size: 20px; | |||
| text-transform: uppercase; | |||
| white-space: nowrap; | |||
| color: #fff; | |||
| overflow: hidden; | |||
| transition: width .3s; | |||
| &-lg, | |||
| &-mini { | |||
| max-width: 100%; | |||
| color: #fff; | |||
| cursor: pointer; | |||
| &:focus, | |||
| &:hover { | |||
| color: #fff; | |||
| text-decoration: none; | |||
| } | |||
| } | |||
| &-mini { | |||
| display: none; | |||
| } | |||
| } | |||
| &__body { | |||
| position: relative; | |||
| display: flex; | |||
| flex: 1; | |||
| background-color: #fff; | |||
| overflow: hidden; | |||
| } | |||
| &__menu { | |||
| background-color: transparent; | |||
| border-bottom: 0 !important; | |||
| a:focus, | |||
| a:hover { | |||
| text-decoration: none; | |||
| } | |||
| .el-menu-item, | |||
| .el-submenu > .el-submenu__title { | |||
| height: $navbar--height; | |||
| padding: 0 15px; | |||
| line-height: $navbar--height; | |||
| border-color: transparent !important; | |||
| } | |||
| .el-menu-item.is-active, | |||
| .el-submenu.is-active > .el-submenu__title { | |||
| color: $--color-text-secondary; | |||
| &:focus, | |||
| &:hover { | |||
| color: $--color-text-primary; | |||
| } | |||
| } | |||
| .el-menu-item { | |||
| &:focus, | |||
| &:hover { | |||
| .aui-navbar__icon-menu { | |||
| color: $--color-text-primary; | |||
| } | |||
| .el-dropdown { | |||
| color: $--color-text-primary; | |||
| .el-icon-arrow-down { | |||
| transform: rotateZ(180deg); | |||
| } | |||
| } | |||
| } | |||
| * { | |||
| vertical-align: initial; | |||
| } | |||
| .aui-navbar__icon-menu { | |||
| vertical-align: middle; | |||
| font-size: 16px; | |||
| } | |||
| .el-dropdown { | |||
| color: $--color-text-secondary; | |||
| .el-icon-arrow-down { | |||
| width: auto; | |||
| font-size: 12px; | |||
| margin: 0 0 0 5px; | |||
| transition: transform .3s; | |||
| } | |||
| } | |||
| } | |||
| .el-badge { | |||
| display: inline; | |||
| z-index: 2; | |||
| &__content { | |||
| line-height: 16px; | |||
| } | |||
| } | |||
| } | |||
| &__search { | |||
| > *[class*="el-icon-"], | |||
| > *[class*="icon"] { | |||
| display: inline-block; | |||
| vertical-align: middle; | |||
| } | |||
| &-txt { | |||
| width: 0; | |||
| transition: width .3s, margin-left .3s; | |||
| &.is-show { | |||
| width: 210px; | |||
| margin-left: 8px; | |||
| } | |||
| .el-input__inner { | |||
| height: $navbar--height - 20px; | |||
| padding: 0; | |||
| line-height: $navbar--height - 20px; | |||
| border-color: $--color-text-primary; | |||
| border-top: 0; | |||
| border-right: 0; | |||
| border-left: 0; | |||
| border-radius: 0; | |||
| background: transparent; | |||
| } | |||
| } | |||
| } | |||
| &__avatar { | |||
| .el-dropdown-link { | |||
| > img { | |||
| width: 36px; | |||
| height: auto; | |||
| margin-right: 5px; | |||
| border-radius: 100%; | |||
| vertical-align: middle; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| /* Sidebar | |||
| ------------------------------ */ | |||
| .aui-sidebar { | |||
| position: fixed; | |||
| top: $navbar--height; | |||
| left: 0; | |||
| bottom: 0; | |||
| z-index: 1020; | |||
| width: $sidebar--width; | |||
| background-color: #fff; | |||
| box-shadow: 1px 0 2px 0 rgba(0, 0, 0, .05); | |||
| overflow: hidden; | |||
| transition: width .3s; | |||
| &--dark { | |||
| background-color: $sidebar--background-color-dark; | |||
| .aui-sidebar__menu, | |||
| > .el-menu--popup { | |||
| background-color: $sidebar--background-color-dark; | |||
| .el-menu-item, | |||
| .el-submenu > .el-submenu__title { | |||
| color: $sidebar--text-color-dark; | |||
| &:focus, | |||
| &:hover { | |||
| color: mix(#fff, $sidebar--text-color-dark, 50%); | |||
| background-color: mix(#fff, $sidebar--background-color-dark, 2.5%); | |||
| } | |||
| } | |||
| .el-menu, | |||
| .el-submenu.is-opened { | |||
| background-color: mix(#000, $sidebar--background-color-dark, 15%); | |||
| } | |||
| .el-menu-item.is-active, | |||
| .el-submenu.is-active > .el-submenu__title { | |||
| color: mix(#fff, $sidebar--text-color-dark, 80%); | |||
| } | |||
| } | |||
| } | |||
| &__inner { | |||
| position: relative; | |||
| z-index: 1; | |||
| width: $sidebar--width + 20px; | |||
| height: 100%; | |||
| padding-bottom: 15px; | |||
| overflow-x: hidden; | |||
| overflow-y: scroll; | |||
| transition: width .3s; | |||
| } | |||
| &__menu { | |||
| width: $sidebar--width; | |||
| border-right: 0; | |||
| transition: width .3s; | |||
| .el-menu-item, | |||
| .el-submenu__title { | |||
| height: $sidebar--menu-item-height; | |||
| line-height: $sidebar--menu-item-height; | |||
| } | |||
| } | |||
| &__menu-icon { | |||
| display: inline-block; | |||
| vertical-align: middle; | |||
| width: 24px !important; | |||
| margin-right: 5px; | |||
| text-align: center; | |||
| font-size: 16px; | |||
| color: inherit !important; | |||
| transition: font-size .3s; | |||
| } | |||
| } | |||
| /* Content | |||
| ------------------------------ */ | |||
| .aui-content { | |||
| position: relative; | |||
| padding: $content--padding; | |||
| min-height: calc(100vh - #{$navbar--height}); | |||
| &__wrapper { | |||
| position: relative; | |||
| margin-left: $sidebar--width; | |||
| min-height: calc(100vh - #{$navbar--height}); | |||
| background-color: $content--background-color; | |||
| transition: margin-left .3s; | |||
| } | |||
| > .aui-card--fill > .el-card__body { | |||
| min-height: calc(#{$content--fill-height} - 2px); | |||
| } | |||
| > .aui-card--fill > .el-card__header + .el-card__body { | |||
| min-height: calc(#{$content--fill-height} - #{$content--card-header-height} - 2px); | |||
| } | |||
| &--tabs { | |||
| padding: $content--tabs-header-height 0 0; | |||
| } | |||
| &--tabs-tools { | |||
| position: fixed; | |||
| top: $navbar--height; | |||
| right: 0; | |||
| z-index: 931; | |||
| min-width: $content--tabs-header-height; | |||
| height: $content--tabs-header-height; | |||
| padding: 0 12px; | |||
| text-align: center; | |||
| font-size: 16px; | |||
| line-height: $content--tabs-header-height; | |||
| background-color: $--background-color-base; | |||
| cursor: pointer; | |||
| } | |||
| &--tabs-icon-nav { | |||
| display: inline-block; | |||
| vertical-align: middle; | |||
| font-size: 16px; | |||
| } | |||
| > .el-tabs { | |||
| > .el-tabs__header { | |||
| position: fixed; | |||
| top: $navbar--height; | |||
| left: $sidebar--width; | |||
| right: 0; | |||
| z-index: 930; | |||
| padding: 0 55px 0 15px; | |||
| margin: 0; | |||
| box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05); | |||
| background-color: #fff; | |||
| transition: left .3s; | |||
| > .el-tabs__nav-wrap { | |||
| margin-bottom: 0; | |||
| &:after { | |||
| display: none; | |||
| } | |||
| > .el-tabs__nav-next, | |||
| > .el-tabs__nav-prev { | |||
| line-height: $content--tabs-header-height; | |||
| } | |||
| > .el-tabs__nav-scroll > .el-tabs__nav { | |||
| & > .el-tabs__active-bar { | |||
| display: none; | |||
| } | |||
| & > .el-tabs__item { | |||
| height: $content--tabs-header-height; | |||
| padding: 0 15px; | |||
| line-height: $content--tabs-header-height; | |||
| border: 0; | |||
| color: $--color-text-regular; | |||
| &:focus, | |||
| &:hover, | |||
| &.is-active { | |||
| color: $--color-text-primary; | |||
| background-color: $--background-color-base; | |||
| &:after { | |||
| display: block; | |||
| } | |||
| > .el-icon-close { | |||
| color: $--color-text-primary; | |||
| } | |||
| } | |||
| &:after { | |||
| display: none; | |||
| position: absolute; | |||
| bottom: 0; | |||
| left: 0; | |||
| content: ''; | |||
| width: 100%; | |||
| height: 2px; | |||
| background-color: $--color-primary; | |||
| } | |||
| + .el-tabs__item { | |||
| margin-left: 1px; | |||
| } | |||
| > .el-icon-close { | |||
| width: 14px; | |||
| margin-left: 15px; | |||
| color: $--color-text-secondary; | |||
| } | |||
| > i.icon { | |||
| display: inline-block; | |||
| vertical-align: middle; | |||
| font-size: 18px; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| > .el-tabs__content { | |||
| padding: $content--padding; | |||
| .el-loading-mask { | |||
| z-index: 830; | |||
| } | |||
| > .el-tab-pane { | |||
| min-height: calc(#{$content--fill-height-tabs}); | |||
| > .aui-card--fill > .el-card__body { | |||
| min-height: calc(#{$content--fill-height-tabs} - 2px); | |||
| } | |||
| > .aui-card--fill > .el-card__header + .el-card__body { | |||
| min-height: calc(#{$content--fill-height-tabs} - #{$content--card-header-height} - 2px); | |||
| } | |||
| &.is-iframe { | |||
| height: calc(#{$content--fill-height-tabs} + #{$content--padding * 2}); | |||
| margin: -$content--padding; | |||
| min-height: auto; | |||
| > .aui-card--fill { | |||
| background-color: transparent; | |||
| } | |||
| > .aui-card--fill > .el-card__header { | |||
| background-color: #fff; | |||
| } | |||
| > .aui-card--fill > .el-card__body { | |||
| height: calc(#{$content--fill-height-tabs} - 2px); | |||
| margin: $content--padding; | |||
| min-height: auto; | |||
| border: $--border-base; | |||
| border-color: $--border-color-lighter; | |||
| border-radius: $--border-radius-base; | |||
| background-color: #fff; | |||
| } | |||
| > .aui-card--fill > .el-card__header + .el-card__body { | |||
| height: calc(#{$content--fill-height-tabs} - #{$content--card-header-height} - 2px); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| // quill富文本编辑器 | |||
| .ql-toolbar { | |||
| line-height: 20px; | |||
| &.ql-snow { | |||
| border-color: $--border-color-base; | |||
| } | |||
| .ql-formats { | |||
| margin: 0 5px; | |||
| } | |||
| } | |||
| .ql-container { | |||
| height: 150px; | |||
| &.ql-snow { | |||
| border-color: $--border-color-base; | |||
| } | |||
| } | |||
| } | |||
| /* Page | |||
| ------------------------------ */ | |||
| *[class*="aui-page__"] { | |||
| padding-top: 0; | |||
| .aui-content { | |||
| min-height: auto; | |||
| &__wrapper { | |||
| min-height: 100vh; | |||
| margin-left: 0; | |||
| } | |||
| > .aui-card--fill > .el-card__body { | |||
| min-height: calc(100vh - #{$content--padding * 2} - 2px); | |||
| } | |||
| > .aui-card--fill > .el-card__header + .el-card__body { | |||
| min-height: calc(100vh - #{$content--padding * 2} - #{$content--card-header-height} - 2px); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,15 @@ | |||
| .mod-home { | |||
| table { | |||
| width: 100%; | |||
| border: 1px solid $--border-color-lighter; | |||
| border-collapse: collapse; | |||
| th, | |||
| td { | |||
| padding: 12px 10px; | |||
| border: 1px solid $--border-color-lighter; | |||
| } | |||
| th { | |||
| width: 30%; | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,447 @@ | |||
| /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ | |||
| /* Document | |||
| ========================================================================== */ | |||
| /** | |||
| * 1. Correct the line height in all browsers. | |||
| * 2. Prevent adjustments of font size after orientation changes in | |||
| * IE on Windows Phone and in iOS. | |||
| */ | |||
| html { | |||
| line-height: 1.15; /* 1 */ | |||
| -ms-text-size-adjust: 100%; /* 2 */ | |||
| -webkit-text-size-adjust: 100%; /* 2 */ | |||
| } | |||
| /* Sections | |||
| ========================================================================== */ | |||
| /** | |||
| * Remove the margin in all browsers (opinionated). | |||
| */ | |||
| body { | |||
| margin: 0; | |||
| } | |||
| /** | |||
| * Add the correct display in IE 9-. | |||
| */ | |||
| article, | |||
| aside, | |||
| footer, | |||
| header, | |||
| nav, | |||
| section { | |||
| display: block; | |||
| } | |||
| /** | |||
| * Correct the font size and margin on `h1` elements within `section` and | |||
| * `article` contexts in Chrome, Firefox, and Safari. | |||
| */ | |||
| h1 { | |||
| font-size: 2em; | |||
| margin: 0.67em 0; | |||
| } | |||
| /* Grouping content | |||
| ========================================================================== */ | |||
| /** | |||
| * Add the correct display in IE 9-. | |||
| * 1. Add the correct display in IE. | |||
| */ | |||
| figcaption, | |||
| figure, | |||
| main { /* 1 */ | |||
| display: block; | |||
| } | |||
| /** | |||
| * Add the correct margin in IE 8. | |||
| */ | |||
| figure { | |||
| margin: 1em 40px; | |||
| } | |||
| /** | |||
| * 1. Add the correct box sizing in Firefox. | |||
| * 2. Show the overflow in Edge and IE. | |||
| */ | |||
| hr { | |||
| box-sizing: content-box; /* 1 */ | |||
| height: 0; /* 1 */ | |||
| overflow: visible; /* 2 */ | |||
| } | |||
| /** | |||
| * 1. Correct the inheritance and scaling of font size in all browsers. | |||
| * 2. Correct the odd `em` font sizing in all browsers. | |||
| */ | |||
| pre { | |||
| font-family: monospace, monospace; /* 1 */ | |||
| font-size: 1em; /* 2 */ | |||
| } | |||
| /* Text-level semantics | |||
| ========================================================================== */ | |||
| /** | |||
| * 1. Remove the gray background on active links in IE 10. | |||
| * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. | |||
| */ | |||
| a { | |||
| background-color: transparent; /* 1 */ | |||
| -webkit-text-decoration-skip: objects; /* 2 */ | |||
| } | |||
| /** | |||
| * 1. Remove the bottom border in Chrome 57- and Firefox 39-. | |||
| * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. | |||
| */ | |||
| abbr[title] { | |||
| border-bottom: none; /* 1 */ | |||
| text-decoration: underline; /* 2 */ | |||
| text-decoration: underline dotted; /* 2 */ | |||
| } | |||
| /** | |||
| * Prevent the duplicate application of `bolder` by the next rule in Safari 6. | |||
| */ | |||
| b, | |||
| strong { | |||
| font-weight: inherit; | |||
| } | |||
| /** | |||
| * Add the correct font weight in Chrome, Edge, and Safari. | |||
| */ | |||
| b, | |||
| strong { | |||
| font-weight: bolder; | |||
| } | |||
| /** | |||
| * 1. Correct the inheritance and scaling of font size in all browsers. | |||
| * 2. Correct the odd `em` font sizing in all browsers. | |||
| */ | |||
| code, | |||
| kbd, | |||
| samp { | |||
| font-family: monospace, monospace; /* 1 */ | |||
| font-size: 1em; /* 2 */ | |||
| } | |||
| /** | |||
| * Add the correct font style in Android 4.3-. | |||
| */ | |||
| dfn { | |||
| font-style: italic; | |||
| } | |||
| /** | |||
| * Add the correct background and color in IE 9-. | |||
| */ | |||
| mark { | |||
| background-color: #ff0; | |||
| color: #000; | |||
| } | |||
| /** | |||
| * Add the correct font size in all browsers. | |||
| */ | |||
| small { | |||
| font-size: 80%; | |||
| } | |||
| /** | |||
| * Prevent `sub` and `sup` elements from affecting the line height in | |||
| * all browsers. | |||
| */ | |||
| sub, | |||
| sup { | |||
| font-size: 75%; | |||
| line-height: 0; | |||
| position: relative; | |||
| vertical-align: baseline; | |||
| } | |||
| sub { | |||
| bottom: -0.25em; | |||
| } | |||
| sup { | |||
| top: -0.5em; | |||
| } | |||
| /* Embedded content | |||
| ========================================================================== */ | |||
| /** | |||
| * Add the correct display in IE 9-. | |||
| */ | |||
| audio, | |||
| video { | |||
| display: inline-block; | |||
| } | |||
| /** | |||
| * Add the correct display in iOS 4-7. | |||
| */ | |||
| audio:not([controls]) { | |||
| display: none; | |||
| height: 0; | |||
| } | |||
| /** | |||
| * Remove the border on images inside links in IE 10-. | |||
| */ | |||
| img { | |||
| border-style: none; | |||
| } | |||
| /** | |||
| * Hide the overflow in IE. | |||
| */ | |||
| svg:not(:root) { | |||
| overflow: hidden; | |||
| } | |||
| /* Forms | |||
| ========================================================================== */ | |||
| /** | |||
| * 1. Change the font styles in all browsers (opinionated). | |||
| * 2. Remove the margin in Firefox and Safari. | |||
| */ | |||
| button, | |||
| input, | |||
| optgroup, | |||
| select, | |||
| textarea { | |||
| font-family: sans-serif; /* 1 */ | |||
| font-size: 100%; /* 1 */ | |||
| line-height: 1.15; /* 1 */ | |||
| margin: 0; /* 2 */ | |||
| } | |||
| /** | |||
| * Show the overflow in IE. | |||
| * 1. Show the overflow in Edge. | |||
| */ | |||
| button, | |||
| input { /* 1 */ | |||
| overflow: visible; | |||
| } | |||
| /** | |||
| * Remove the inheritance of text transform in Edge, Firefox, and IE. | |||
| * 1. Remove the inheritance of text transform in Firefox. | |||
| */ | |||
| button, | |||
| select { /* 1 */ | |||
| text-transform: none; | |||
| } | |||
| /** | |||
| * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` | |||
| * controls in Android 4. | |||
| * 2. Correct the inability to style clickable types in iOS and Safari. | |||
| */ | |||
| button, | |||
| html [type="button"], /* 1 */ | |||
| [type="reset"], | |||
| [type="submit"] { | |||
| -webkit-appearance: button; /* 2 */ | |||
| } | |||
| /** | |||
| * Remove the inner border and padding in Firefox. | |||
| */ | |||
| button::-moz-focus-inner, | |||
| [type="button"]::-moz-focus-inner, | |||
| [type="reset"]::-moz-focus-inner, | |||
| [type="submit"]::-moz-focus-inner { | |||
| border-style: none; | |||
| padding: 0; | |||
| } | |||
| /** | |||
| * Restore the focus styles unset by the previous rule. | |||
| */ | |||
| button:-moz-focusring, | |||
| [type="button"]:-moz-focusring, | |||
| [type="reset"]:-moz-focusring, | |||
| [type="submit"]:-moz-focusring { | |||
| outline: 1px dotted ButtonText; | |||
| } | |||
| /** | |||
| * Correct the padding in Firefox. | |||
| */ | |||
| fieldset { | |||
| padding: 0.35em 0.75em 0.625em; | |||
| } | |||
| /** | |||
| * 1. Correct the text wrapping in Edge and IE. | |||
| * 2. Correct the color inheritance from `fieldset` elements in IE. | |||
| * 3. Remove the padding so developers are not caught out when they zero out | |||
| * `fieldset` elements in all browsers. | |||
| */ | |||
| legend { | |||
| box-sizing: border-box; /* 1 */ | |||
| color: inherit; /* 2 */ | |||
| display: table; /* 1 */ | |||
| max-width: 100%; /* 1 */ | |||
| padding: 0; /* 3 */ | |||
| white-space: normal; /* 1 */ | |||
| } | |||
| /** | |||
| * 1. Add the correct display in IE 9-. | |||
| * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. | |||
| */ | |||
| progress { | |||
| display: inline-block; /* 1 */ | |||
| vertical-align: baseline; /* 2 */ | |||
| } | |||
| /** | |||
| * Remove the default vertical scrollbar in IE. | |||
| */ | |||
| textarea { | |||
| overflow: auto; | |||
| } | |||
| /** | |||
| * 1. Add the correct box sizing in IE 10-. | |||
| * 2. Remove the padding in IE 10-. | |||
| */ | |||
| [type="checkbox"], | |||
| [type="radio"] { | |||
| box-sizing: border-box; /* 1 */ | |||
| padding: 0; /* 2 */ | |||
| } | |||
| /** | |||
| * Correct the cursor style of increment and decrement buttons in Chrome. | |||
| */ | |||
| [type="number"]::-webkit-inner-spin-button, | |||
| [type="number"]::-webkit-outer-spin-button { | |||
| height: auto; | |||
| } | |||
| /** | |||
| * 1. Correct the odd appearance in Chrome and Safari. | |||
| * 2. Correct the outline style in Safari. | |||
| */ | |||
| [type="search"] { | |||
| -webkit-appearance: textfield; /* 1 */ | |||
| outline-offset: -2px; /* 2 */ | |||
| } | |||
| /** | |||
| * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. | |||
| */ | |||
| [type="search"]::-webkit-search-cancel-button, | |||
| [type="search"]::-webkit-search-decoration { | |||
| -webkit-appearance: none; | |||
| } | |||
| /** | |||
| * 1. Correct the inability to style clickable types in iOS and Safari. | |||
| * 2. Change font properties to `inherit` in Safari. | |||
| */ | |||
| ::-webkit-file-upload-button { | |||
| -webkit-appearance: button; /* 1 */ | |||
| font: inherit; /* 2 */ | |||
| } | |||
| /* Interactive | |||
| ========================================================================== */ | |||
| /* | |||
| * Add the correct display in IE 9-. | |||
| * 1. Add the correct display in Edge, IE, and Firefox. | |||
| */ | |||
| details, /* 1 */ | |||
| menu { | |||
| display: block; | |||
| } | |||
| /* | |||
| * Add the correct display in all browsers. | |||
| */ | |||
| summary { | |||
| display: list-item; | |||
| } | |||
| /* Scripting | |||
| ========================================================================== */ | |||
| /** | |||
| * Add the correct display in IE 9-. | |||
| */ | |||
| canvas { | |||
| display: inline-block; | |||
| } | |||
| /** | |||
| * Add the correct display in IE. | |||
| */ | |||
| template { | |||
| display: none; | |||
| } | |||
| /* Hidden | |||
| ========================================================================== */ | |||
| /** | |||
| * Add the correct display in IE 10-. | |||
| */ | |||
| [hidden] { | |||
| display: none; | |||
| } | |||
| @@ -0,0 +1,48 @@ | |||
| .aui-page__not-found { | |||
| .aui-content { | |||
| display: flex; | |||
| flex-flow: column wrap; | |||
| align-items: center; | |||
| min-height: 100vh; | |||
| padding: 15% 50px 50px; | |||
| text-align: center; | |||
| &__wrapper { | |||
| height: 100vh; | |||
| background-color: transparent; | |||
| overflow-x: hidden; | |||
| overflow-y: auto; | |||
| } | |||
| } | |||
| .title { | |||
| margin: 0 0 15px; | |||
| font-size: 10em; | |||
| font-weight: 400; | |||
| color: $--color-text-regular; | |||
| } | |||
| .desc { | |||
| margin: 0 0 20px; | |||
| font-size: 26px; | |||
| color: $--color-text-secondary; | |||
| > em { | |||
| margin: 0 5px; | |||
| font-style: normal; | |||
| color: $--color-warning; | |||
| } | |||
| } | |||
| .btn-bar .el-button { | |||
| margin: 0 15px; | |||
| } | |||
| } | |||
| @media (max-width: 767px) { | |||
| .aui-page__not-found { | |||
| .title { | |||
| font-size: 8em; | |||
| } | |||
| .desc { | |||
| font-size: 20px; | |||
| } | |||
| .btn-bar .el-button { | |||
| margin: 0 7.5px; | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,220 @@ | |||
| .aui-page__login { | |||
| &::before, | |||
| &::after { | |||
| position: absolute; | |||
| top: 0; | |||
| right: 0; | |||
| bottom: 0; | |||
| left: 0; | |||
| z-index: -1; | |||
| content: ""; | |||
| } | |||
| &::before { | |||
| background-image: url(~@/assets/img/login_bg.jpg); | |||
| background-size: cover; | |||
| } | |||
| &::after { | |||
| background-color: rgba(38, 50, 56, .4); | |||
| } | |||
| .aui-content { | |||
| display: flex; | |||
| flex-flow: column wrap; | |||
| justify-content: center; | |||
| align-items: center; | |||
| min-height: 100vh; | |||
| padding: 50px 20px 150px; | |||
| text-align: center; | |||
| &__wrapper { | |||
| height: 100vh; | |||
| background-color: transparent; | |||
| overflow-x: hidden; | |||
| overflow-y: auto; | |||
| } | |||
| } | |||
| .login-header { | |||
| padding: 20px; | |||
| color: #fff; | |||
| .login-brand { | |||
| margin: 0 0 15px; | |||
| font-size: 40px; | |||
| font-weight: 400; | |||
| letter-spacing: 2px; | |||
| text-transform: uppercase; | |||
| } | |||
| .login-intro { | |||
| padding: 0; | |||
| margin: 0; | |||
| list-style: none; | |||
| > li { | |||
| font-size: 16px; | |||
| line-height: 1.5; | |||
| color: rgba(255, 255, 255, .6); | |||
| & + li { | |||
| margin-top: 5px; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .login-body, | |||
| .login-footer { | |||
| width: 460px; | |||
| } | |||
| .login-body { | |||
| padding: 20px 30px; | |||
| background-color: #fff; | |||
| .login-title { | |||
| font-size: 18px; | |||
| font-weight: 400; | |||
| } | |||
| .el-input__prefix .el-input__icon { | |||
| font-size: 16px; | |||
| } | |||
| .login-captcha { | |||
| height: $--input-height; | |||
| line-height: $--input-height -2px; | |||
| > img { | |||
| max-width: 100%; | |||
| cursor: pointer; | |||
| } | |||
| } | |||
| .login-shortcut { | |||
| margin-bottom: 20px; | |||
| &__title { | |||
| position: relative; | |||
| margin: 0 0 15px; | |||
| font-weight: 400; | |||
| &::before { | |||
| position: absolute; | |||
| top: 50%; | |||
| right: 0; | |||
| left: 0; | |||
| z-index: 1; | |||
| content: ""; | |||
| height: 1px; | |||
| margin-top: -.5px; | |||
| background-color: $--border-color-base; | |||
| overflow: hidden; | |||
| } | |||
| > span { | |||
| position: relative; | |||
| z-index: 2; | |||
| padding: 0 20px; | |||
| color: rgba(0, 0, 0, .3); | |||
| background-color: #fff; | |||
| } | |||
| } | |||
| &__list { | |||
| padding: 0; | |||
| margin: 0; | |||
| list-style: none; | |||
| font-size: 0; | |||
| > li { | |||
| display: inline-block; | |||
| vertical-align: middle; | |||
| margin: 0 10px; | |||
| font-size: 28px; | |||
| } | |||
| } | |||
| } | |||
| .login-guide { | |||
| color: rgba(0, 0, 0, .3); | |||
| } | |||
| } | |||
| .login-footer { | |||
| position: absolute; | |||
| bottom: 0; | |||
| padding: 20px; | |||
| color: rgba(255, 255, 255, .6); | |||
| p { | |||
| margin: 10px 0; | |||
| } | |||
| a { | |||
| padding: 0 5px; | |||
| color: rgba(255, 255, 255, .6); | |||
| &:focus, | |||
| &:hover { | |||
| color: #fff; | |||
| } | |||
| } | |||
| } | |||
| // 右侧垂直风格 | |||
| &--right-vertical { | |||
| .aui-content { | |||
| flex-flow: row nowrap; | |||
| justify-content: flex-start; | |||
| align-items: stretch; | |||
| padding: 0; | |||
| } | |||
| .login-header { | |||
| flex: 1; | |||
| display: flex; | |||
| flex-flow: column wrap; | |||
| justify-content: center; | |||
| padding: 30px 120px; | |||
| text-align: left; | |||
| } | |||
| .login-body { | |||
| position: relative; | |||
| display: flex; | |||
| flex-flow: column wrap; | |||
| justify-content: center; | |||
| padding: 120px 30px 150px; | |||
| text-align: center; | |||
| .login-guide { | |||
| margin-top: 0; | |||
| } | |||
| } | |||
| .login-footer { | |||
| right: 0; | |||
| color: $--color-text-regular; | |||
| a { | |||
| color: $--color-text-regular; | |||
| &:focus, | |||
| &:hover { | |||
| color: $--color-primary; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @media (max-width: 991px) { | |||
| .aui-page__login { | |||
| &--right-vertical { | |||
| .login-header { | |||
| padding: 30px; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @media (max-width: 767px) { | |||
| .aui-page__login { | |||
| &--right-vertical { | |||
| .login-header { | |||
| .login-brand, | |||
| .login-intro { | |||
| display: none; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @media (max-width: 575px) { | |||
| .aui-page__login { | |||
| .login-body, | |||
| .login-footer { | |||
| width: 100%; | |||
| } | |||
| .login-captcha { | |||
| text-align: left; | |||
| > img { | |||
| width: 136px; | |||
| } | |||
| } | |||
| &--right-vertical { | |||
| .login-header { | |||
| display: none; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,22 @@ | |||
| // Base | |||
| $base--line-height: 1.15; | |||
| // Navbar | |||
| $navbar--height: 50px; | |||
| // Sidebar | |||
| $sidebar--width: 230px; | |||
| $sidebar--width-fold: 64px; | |||
| $sidebar--background-color-dark: #263238; | |||
| $sidebar--text-color-dark: #8a979e; | |||
| $sidebar--menu-item-height: 48px; | |||
| // Content | |||
| $content--padding: 15px; | |||
| $content--background-color: #f1f4f5; | |||
| $content--card-header-height: 60px; | |||
| $content--tabs-header-height: 38px; | |||
| // Content, 填充整屏高度(非tabs状态) = 整屏高度 - 导航条高度 - aui-content上下内边距高度 | |||
| $content--fill-height: calc(100vh - #{$navbar--height} - #{$content--padding * 2}); | |||
| // Content, 填充整屏高度(是tabs状态) = 整屏高度 - 导航条高度 - tabs组件header高度 - tabs组件content上下内边距高度 | |||
| $content--fill-height-tabs: calc(100vh - #{$navbar--height} - #{$content--tabs-header-height} - #{$content--padding * 2}); | |||
| @@ -0,0 +1,7 @@ | |||
| import RenDeptTree from './src/ren-dept-tree' | |||
| RenDeptTree.install = function (Vue) { | |||
| Vue.component(RenDeptTree.name, RenDeptTree) | |||
| } | |||
| export default RenDeptTree | |||
| @@ -0,0 +1,118 @@ | |||
| <template> | |||
| <div> | |||
| <el-input v-model="showDeptName" :placeholder="placeholder" @focus="deptDialog"> | |||
| <el-button slot="append" icon="el-icon-search" @click="deptDialog"></el-button> | |||
| </el-input> | |||
| <el-input :value="value" style="display: none"></el-input> | |||
| <el-dialog :visible.sync="visibleDept" width="30%" :modal="false" :title="placeholder" :close-on-click-modal="false" :close-on-press-escape="false"> | |||
| <el-form size="mini" :inline="true"> | |||
| <el-form-item :label="$t('keyword')"> | |||
| <el-input v-model="filterText"></el-input> | |||
| </el-form-item> | |||
| <el-form-item> | |||
| <el-button type="default">{{ $t('query') }}</el-button> | |||
| </el-form-item> | |||
| </el-form> | |||
| <el-tree | |||
| class="filter-tree" | |||
| :data="deptList" | |||
| :default-expanded-keys="expandedKeys" | |||
| :props="{ label: 'name', children: 'children' }" | |||
| :expand-on-click-node="false" | |||
| :filter-node-method="filterNode" | |||
| :highlight-current="true" | |||
| node-key="id" | |||
| ref="tree"> | |||
| </el-tree> | |||
| <template slot="footer"> | |||
| <el-button type="default" @click="cancelHandle()" size="mini">{{ $t('cancel') }}</el-button> | |||
| <el-button v-if="query" type="info" @click="clearHandle()" size="mini">{{ $t('clear') }}</el-button> | |||
| <el-button type="primary" @click="commitHandle()" size="mini">{{ $t('confirm') }}</el-button> | |||
| </template> | |||
| </el-dialog> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| name: 'RenDeptTree', | |||
| data () { | |||
| return { | |||
| filterText: '', | |||
| visibleDept: false, | |||
| deptList: [], | |||
| showDeptName: '', | |||
| expandedKeys: null, | |||
| defaultProps: { | |||
| children: 'children', | |||
| label: 'label' | |||
| } | |||
| } | |||
| }, | |||
| props: { | |||
| value: [Number, String], | |||
| deptName: String, | |||
| query: Boolean, | |||
| placeholder: String | |||
| }, | |||
| watch: { | |||
| filterText (val) { | |||
| this.$refs.tree.filter(val) | |||
| }, | |||
| deptName (val) { | |||
| this.showDeptName = val | |||
| } | |||
| }, | |||
| methods: { | |||
| deptDialog () { | |||
| this.expandedKeys = null | |||
| if (this.$refs.tree) { | |||
| this.$refs.tree.setCurrentKey(null) | |||
| } | |||
| this.visibleDept = true | |||
| this.getDeptList(this.value) | |||
| }, | |||
| filterNode (value, data) { | |||
| if (!value) return true | |||
| return data.name.indexOf(value) !== -1 | |||
| }, | |||
| getDeptList (id) { | |||
| return this.$http.get('/sys/dept/list').then(({ data: res }) => { | |||
| if (res.code !== 0) { | |||
| return this.$message.error(res.msg) | |||
| } | |||
| this.deptList = res.data | |||
| this.$nextTick(() => { | |||
| this.$refs.tree.setCurrentKey(id) | |||
| this.expandedKeys = [id] | |||
| }) | |||
| }).catch(() => {}) | |||
| }, | |||
| cancelHandle () { | |||
| this.visibleDept = false | |||
| this.deptList = [] | |||
| this.filterText = '' | |||
| }, | |||
| clearHandle () { | |||
| this.$emit('input', '') | |||
| this.$emit('update:deptName', '') | |||
| this.showDeptName = '' | |||
| this.visibleDept = false | |||
| this.deptList = [] | |||
| this.filterText = '' | |||
| }, | |||
| commitHandle () { | |||
| const node = this.$refs.tree.getCurrentNode() | |||
| if (!node) { | |||
| this.$message.error(this.$t('dept.chooseerror')) | |||
| return | |||
| } | |||
| this.$emit('input', node.id) | |||
| this.$emit('update:deptName', node.name) | |||
| this.showDeptName = node.name | |||
| this.visibleDept = false | |||
| this.deptList = [] | |||
| this.filterText = '' | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| @@ -0,0 +1,7 @@ | |||
| import RenRadioGroup from './src/ren-radio-group' | |||
| RenRadioGroup.install = function (Vue) { | |||
| Vue.component(RenRadioGroup.name, RenRadioGroup) | |||
| } | |||
| export default RenRadioGroup | |||
| @@ -0,0 +1,20 @@ | |||
| <template> | |||
| <el-radio-group :value="value+''" @input="$emit('input', $event)"> | |||
| <el-radio :label="data.dictValue" v-for="data in dataList" :key="data.dictValue">{{data.dictLabel}}</el-radio> | |||
| </el-radio-group> | |||
| </template> | |||
| <script> | |||
| import { getDictDataList } from '@/utils' | |||
| export default { | |||
| name: 'RenRadioGroup', | |||
| data () { | |||
| return { | |||
| dataList: getDictDataList(this.dictType) | |||
| } | |||
| }, | |||
| props: { | |||
| value: [Number, String], | |||
| dictType: String | |||
| } | |||
| } | |||
| </script> | |||
| @@ -0,0 +1,7 @@ | |||
| import RenRegionTree from './src/ren-region-tree' | |||
| RenRegionTree.install = function (Vue) { | |||
| Vue.component(RenRegionTree.name, RenRegionTree) | |||
| } | |||
| export default RenRegionTree | |||
| @@ -0,0 +1,132 @@ | |||
| <template> | |||
| <div class="ren-region"> | |||
| <el-input v-model="showName" :placeholder="placeholder" @focus="treeDialog"> | |||
| <el-button slot="append" icon="el-icon-search" @click="treeDialog"></el-button> | |||
| </el-input> | |||
| <el-input :value="value" style="display: none"></el-input> | |||
| <el-dialog :visible.sync="visibleTree" width="360px" :modal="false" :title="placeholder" :close-on-click-modal="false" :close-on-press-escape="false"> | |||
| <el-form size="mini" :inline="true"> | |||
| <el-form-item :label="$t('keyword')"> | |||
| <el-input v-model="filterText"></el-input> | |||
| </el-form-item> | |||
| <el-form-item> | |||
| <el-button type="default">{{ $t('query') }}</el-button> | |||
| </el-form-item> | |||
| </el-form> | |||
| <el-tree | |||
| class="filter-tree" | |||
| :data="dataList" | |||
| :default-expanded-keys="expandedKeys" | |||
| :props="{ label: 'name', children: 'children' }" | |||
| :expand-on-click-node="false" | |||
| :filter-node-method="filterNode" | |||
| :highlight-current="true" | |||
| node-key="id" | |||
| ref="tree"> | |||
| </el-tree> | |||
| <template slot="footer"> | |||
| <el-button type="default" @click="cancelHandle()" size="mini">{{ $t('cancel') }}</el-button> | |||
| <el-button type="info" @click="clearHandle()" size="mini">{{ $t('clear') }}</el-button> | |||
| <el-button type="primary" @click="commitHandle()" size="mini">{{ $t('confirm') }}</el-button> | |||
| </template> | |||
| </el-dialog> | |||
| </div> | |||
| </template> | |||
| <style lang="scss"> | |||
| .ren-region { | |||
| .filter-tree { | |||
| max-height: 230px; | |||
| overflow: auto; | |||
| } | |||
| .el-dialog__body { | |||
| padding: 0px 0px 0px 20px; | |||
| } | |||
| .el-dialog__footer { | |||
| padding: 10px 20px 8px 20px; | |||
| } | |||
| } | |||
| </style> | |||
| <script> | |||
| import { treeDataTranslate } from '@/utils' | |||
| export default { | |||
| name: 'RenRegionTree', | |||
| data () { | |||
| return { | |||
| filterText: '', | |||
| visibleTree: false, | |||
| dataList: [], | |||
| showName: '', | |||
| expandedKeys: null, | |||
| defaultProps: { | |||
| children: 'children', | |||
| label: 'name' | |||
| } | |||
| } | |||
| }, | |||
| props: { | |||
| value: [Number, String], | |||
| parentName: String, | |||
| placeholder: String | |||
| }, | |||
| watch: { | |||
| filterText (val) { | |||
| this.$refs.tree.filter(val) | |||
| }, | |||
| parentName (val) { | |||
| this.showName = val | |||
| } | |||
| }, | |||
| methods: { | |||
| treeDialog () { | |||
| this.expandedKeys = null | |||
| if (this.$refs.tree) { | |||
| this.$refs.tree.setCurrentKey(null) | |||
| } | |||
| this.visibleTree = true | |||
| this.getDataList(this.value) | |||
| }, | |||
| filterNode (value, data) { | |||
| if (!value) return true | |||
| return data.name.indexOf(value) !== -1 | |||
| }, | |||
| getDataList (id) { | |||
| return this.$http.get('/sys/region/tree').then(({ data: res }) => { | |||
| if (res.code !== 0) { | |||
| return this.$message.error(res.msg) | |||
| } | |||
| this.dataList = treeDataTranslate(res.data) | |||
| this.$nextTick(() => { | |||
| this.$refs.tree.setCurrentKey(id) | |||
| this.expandedKeys = [id] | |||
| }) | |||
| }).catch(() => {}) | |||
| }, | |||
| cancelHandle () { | |||
| this.visibleTree = false | |||
| this.dataList = [] | |||
| this.filterText = '' | |||
| }, | |||
| clearHandle () { | |||
| this.$emit('input', '0') | |||
| this.$emit('update:parentName', '') | |||
| this.showName = '' | |||
| this.visibleTree = false | |||
| this.dataList = [] | |||
| this.filterText = '' | |||
| }, | |||
| commitHandle () { | |||
| const node = this.$refs.tree.getCurrentNode() | |||
| if (!node) { | |||
| this.$message.error(this.$t('choose')) | |||
| return | |||
| } | |||
| this.$emit('input', node.id) | |||
| this.$emit('update:parentName', node.name) | |||
| this.showName = node.name | |||
| this.visibleTree = false | |||
| this.dataList = [] | |||
| this.filterText = '' | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| @@ -0,0 +1,7 @@ | |||
| import RenSelect from './src/ren-select' | |||
| RenSelect.install = function (Vue) { | |||
| Vue.component(RenSelect.name, RenSelect) | |||
| } | |||
| export default RenSelect | |||
| @@ -0,0 +1,21 @@ | |||
| <template> | |||
| <el-select :value="value+''" @input="$emit('input', $event)" :placeholder="placeholder" clearable> | |||
| <el-option :label="data.dictLabel" v-for="data in dataList" :key="data.dictValue" :value ="data.dictValue">{{data.dictLabel}}</el-option> | |||
| </el-select> | |||
| </template> | |||
| <script> | |||
| import { getDictDataList } from '@/utils' | |||
| export default { | |||
| name: 'RenSelect', | |||
| data () { | |||
| return { | |||
| dataList: getDictDataList(this.dictType) | |||
| } | |||
| }, | |||
| props: { | |||
| value: [Number, String], | |||
| dictType: String, | |||
| placeholder: String | |||
| } | |||
| } | |||
| </script> | |||
| @@ -0,0 +1 @@ | |||
| .el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#FFF;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-alert-fade-enter,.el-alert-fade-leave-active{opacity:0} | |||
| @@ -0,0 +1 @@ | |||
| .el-aside{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0} | |||
| @@ -0,0 +1 @@ | |||
| .el-avatar{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden;color:#fff;background:#C0C4CC;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px} | |||
| @@ -0,0 +1 @@ | |||
| .el-backtop{position:fixed;background-color:#FFF;width:40px;height:40px;border-radius:50%;color:#409EFF;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#F2F6FC} | |||
| @@ -0,0 +1 @@ | |||
| .el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#F56C6C;border-radius:10px;color:#FFF;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #FFF}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409EFF}.el-badge__content--success{background-color:#67C23A}.el-badge__content--warning{background-color:#E6A23C}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#F56C6C} | |||
| @@ -0,0 +1 @@ | |||
| .el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#C0C4CC}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#409EFF;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none} | |||
| @@ -0,0 +1 @@ | |||
| .el-card{border-radius:4px;border:1px solid #EBEEF5;background-color:#FFF;overflow:hidden;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px} | |||
| @@ -0,0 +1 @@ | |||
| .el-carousel__item,.el-carousel__mask{position:absolute;height:100%;top:0;left:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#FFF;opacity:.24;-webkit-transition:.2s;transition:.2s} | |||
| @@ -0,0 +1 @@ | |||
| .el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#FFF;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#C0C4CC;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#FFF;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0} | |||
| @@ -0,0 +1 @@ | |||
| .el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} | |||
| @@ -0,0 +1 @@ | |||
| .el-descriptions-item__container{display:-webkit-box;display:-ms-flexbox;display:flex}.el-descriptions-item__label.has-colon::after{content:':';position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px} | |||
| @@ -0,0 +1 @@ | |||
| .el-descriptions-item__container{display:-webkit-box;display:-ms-flexbox;display:flex}.el-descriptions-item__label.has-colon::after{content:':';position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px}.el-descriptions{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:14px;color:#303133}.el-descriptions__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.el-descriptions__title{font-size:16px;font-weight:700}.el-descriptions--mini,.el-descriptions--small{font-size:12px}.el-descriptions__body{color:#606266;background-color:#FFF}.el-descriptions__body table{border-collapse:collapse;width:100%;table-layout:fixed}.el-descriptions__body table td,.el-descriptions__body table th{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:left;font-weight:400;line-height:1.5}.el-descriptions__body table td.is-left,.el-descriptions__body table th.is-left{text-align:left}.el-descriptions__body table td.is-center,.el-descriptions__body table th.is-center{text-align:center}.el-descriptions__body table td.is-right,.el-descriptions__body table th.is-right{text-align:right}.el-descriptions .is-bordered{table-layout:auto}.el-descriptions .is-bordered td,.el-descriptions .is-bordered th{border:1px solid #EBEEF5;padding:12px 10px}.el-descriptions :not(.is-bordered) td,.el-descriptions :not(.is-bordered) th{padding-bottom:12px}.el-descriptions--medium.is-bordered td,.el-descriptions--medium.is-bordered th{padding:10px}.el-descriptions--medium:not(.is-bordered) td,.el-descriptions--medium:not(.is-bordered) th{padding-bottom:10px}.el-descriptions--small.is-bordered td,.el-descriptions--small.is-bordered th{padding:8px 10px}.el-descriptions--small:not(.is-bordered) td,.el-descriptions--small:not(.is-bordered) th{padding-bottom:8px}.el-descriptions--mini.is-bordered td,.el-descriptions--mini.is-bordered th{padding:6px 10px}.el-descriptions--mini:not(.is-bordered) td,.el-descriptions--mini:not(.is-bordered) th{padding-bottom:6px} | |||
| @@ -0,0 +1 @@ | |||
| .v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@-webkit-keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-dialog{position:relative;margin:0 auto 50px;background:#FFF;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409EFF}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}} | |||
| @@ -0,0 +1 @@ | |||
| @media only screen and (max-width:767px){.hidden-xs-only{display:none!important}}@media only screen and (min-width:768px){.hidden-sm-and-up{display:none!important}}@media only screen and (min-width:768px) and (max-width:991px){.hidden-sm-only{display:none!important}}@media only screen and (max-width:991px){.hidden-sm-and-down{display:none!important}}@media only screen and (min-width:992px){.hidden-md-and-up{display:none!important}}@media only screen and (min-width:992px) and (max-width:1199px){.hidden-md-only{display:none!important}}@media only screen and (max-width:1199px){.hidden-md-and-down{display:none!important}}@media only screen and (min-width:1200px){.hidden-lg-and-up{display:none!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.hidden-lg-only{display:none!important}}@media only screen and (max-width:1919px){.hidden-lg-and-down{display:none!important}}@media only screen and (min-width:1920px){.hidden-xl-only{display:none!important}} | |||
| @@ -0,0 +1 @@ | |||
| .el-divider{background-color:#DCDFE6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#FFF;padding:0 20px;font-weight:500;color:#303133;font-size:14px}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)} | |||
| @@ -0,0 +1 @@ | |||
| .el-empty{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;padding:40px 0}.el-empty__image{width:160px}.el-empty__image img,.el-empty__image svg{width:100%;height:100%;vertical-align:top}.el-empty__image img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-o-object-fit:contain;object-fit:contain}.el-empty__image svg{fill:#DCDDE0}.el-empty__description{margin-top:20px}.el-empty__description p{margin:0;font-size:14px;color:#909399}.el-empty__bottom{margin-top:20px} | |||
| @@ -0,0 +1 @@ | |||
| .el-footer{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0} | |||
| @@ -0,0 +1 @@ | |||
| .el-form--inline .el-form-item,.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form-item::after,.el-form-item__content::after{clear:both}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{margin-right:10px}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#F56C6C;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#F56C6C;margin-right:4px}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus{border-color:#F56C6C}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#F56C6C}.el-form-item--feedback .el-input__validateIcon{display:inline-block} | |||
| @@ -0,0 +1 @@ | |||
| .el-header{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0} | |||
| @@ -0,0 +1 @@ | |||
| .el-image__error,.el-image__placeholder{background:#F5F7FA}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#C0C4CC;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%);left:40px}.el-image-viewer__next{-webkit-transform:translateY(-50%);transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}} | |||
| @@ -0,0 +1 @@ | |||
| .el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;cursor:pointer;padding:0;font-size:14px;font-weight:500}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409EFF}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409EFF}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409EFF}.el-link.el-link--default.is-disabled{color:#C0C4CC}.el-link.el-link--primary{color:#409EFF}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#F56C6C}.el-link.el-link--danger{color:#F56C6C}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67C23A}.el-link.el-link--success{color:#67C23A}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#E6A23C}.el-link.el-link--warning{color:#E6A23C}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc} | |||
| @@ -0,0 +1 @@ | |||
| .el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#409EFF;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409EFF;stroke-linecap:round}.el-loading-spinner i{color:#409EFF}.el-loading-fade-enter,.el-loading-fade-leave-active{opacity:0}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}} | |||
| @@ -0,0 +1 @@ | |||
| .el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding:20px} | |||
| @@ -0,0 +1 @@ | |||
| .el-message__closeBtn:focus,.el-message__content:focus{outline-width:0}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#EBEEF5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67C23A}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#E6A23C}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#F56C6C}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#C0C4CC;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67C23A}.el-message .el-icon-error{color:#F56C6C}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#E6A23C}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)} | |||
| @@ -0,0 +1 @@ | |||
| .el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #EBEEF5;position:fixed;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67C23A}.el-notification .el-icon-error{color:#F56C6C}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#E6A23C}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-notification-fade-leave-active{opacity:0} | |||
| @@ -0,0 +1 @@ | |||
| .el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#E4E7ED}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px} | |||
| @@ -0,0 +1 @@ | |||
| .el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#FFF}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#F5F7FA}.el-select-dropdown__item.selected{color:#409EFF;font-weight:700} | |||
| @@ -0,0 +1 @@ | |||
| .el-page-header{display:-webkit-box;display:-ms-flexbox;display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#DCDFE6}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133} | |||
| @@ -0,0 +1 @@ | |||
| .el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0} | |||
| @@ -0,0 +1 @@ | |||
| .el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#EBEEF5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#FFF;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#EBEEF5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#FFF}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#EBEEF5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#FFF;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#EBEEF5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#FFF}.el-popover{position:absolute;background:#FFF;min-width:150px;border-radius:4px;border:1px solid #EBEEF5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0} | |||
| @@ -0,0 +1 @@ | |||
| .el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#EBEEF5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#FFF;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#EBEEF5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#FFF}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#EBEEF5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#FFF;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#EBEEF5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#FFF} | |||