| @@ -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} | |||||