From 5dfbf91fb4213c6e0408c392c898f80872a20eb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Fri, 15 Jan 2021 23:25:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E4=BA=8E=20https://gitee.com/clown-pa?= =?UTF-8?q?sserby-community/laravel-vue-admin=20=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 19 + .env.development | 5 + .env.example | 60 + .env.production | 6 + .gitattributes | 5 + .gitignore | 10 + .styleci.yml | 13 + app/Console/Kernel.php | 57 + app/Exceptions/Admin/AuthException.php | 28 + app/Exceptions/Admin/AuthTokenException.php | 28 + app/Exceptions/Exception.php | 20 + app/Exceptions/Handler.php | 67 + app/Exceptions/InternalException.php | 21 + app/Exceptions/InvalidRequestException.php | 20 + app/Helper/builtin-functions.php | 292 + app/Helper/functions.php | 3953 +++ app/Http/Controllers/Controller.php | 13 + app/Http/Kernel.php | 72 + app/Http/Middleware/Authenticate.php | 21 + .../Middleware/ConvertEmptyStringsToNull.php | 32 + app/Http/Middleware/EncryptCookies.php | 17 + .../PreventRequestsDuringMaintenance.php | 17 + .../Middleware/RedirectIfAuthenticated.php | 32 + app/Http/Middleware/TrimStrings.php | 18 + app/Http/Middleware/TrustHosts.php | 20 + app/Http/Middleware/TrustProxies.php | 23 + app/Http/Middleware/VerifyCsrfToken.php | 17 + app/Http/Requests/BaseRequest.php | 30 + app/Library/Http.php | 488 + app/Library/SystemInfo.php | 191 + app/Library/cpu_usage.vbs | 3 + app/Library/memory_usage.vbs | 6 + app/Listeners/QueryListener.php | 52 + app/Models/Model.php | 92 + app/Models/MonthModel.php | 100 + app/Models/User.php | 43 + app/Models/YearModel.php | 89 + app/Modules/Admin/Config/.gitkeep | 0 app/Modules/Admin/Config/config.php | 5 + app/Modules/Admin/Console/.gitkeep | 0 app/Modules/Admin/Console/AutoTableBuild.php | 77 + .../Admin/Database/Migrations/.gitkeep | 0 app/Modules/Admin/Database/Seeders/.gitkeep | 0 .../Database/Seeders/AdminDatabaseSeeder.php | 21 + app/Modules/Admin/Database/factories/.gitkeep | 0 app/Modules/Admin/Entities/.gitkeep | 0 .../Admin/Entities/Article/Article.php | 35 + .../Entities/Article/ArticleCategory.php | 87 + .../Admin/Entities/Article/ArticleLabel.php | 11 + .../Entities/Article/ArticleWithLabel.php | 11 + app/Modules/Admin/Entities/Log/AdminLog.php | 22 + .../Admin/Entities/Log/AdminLoginLog.php | 38 + app/Modules/Admin/Entities/Rabc/Admin.php | 145 + app/Modules/Admin/Entities/Rabc/AdminInfo.php | 10 + app/Modules/Admin/Entities/Rabc/AdminMenu.php | 33 + app/Modules/Admin/Entities/Rabc/AdminRole.php | 48 + .../Admin/Entities/Rabc/AdminRoleWithMenu.php | 16 + .../Admin/Entities/Rabc/AdminWithRole.php | 10 + app/Modules/Admin/Entities/System/Banner.php | 25 + app/Modules/Admin/Entities/System/Config.php | 92 + .../Admin/Entities/System/Friendlink.php | 25 + .../Admin/Entities/System/Protocol.php | 11 + app/Modules/Admin/Entities/System/Version.php | 11 + app/Modules/Admin/Http/Controllers/.gitkeep | 0 .../Article/ArticleCategoryController.php | 25 + .../Controllers/Article/ArticleController.php | 25 + .../Article/ArticleLabelController.php | 25 + .../Admin/Http/Controllers/AuthController.php | 64 + .../Admin/Http/Controllers/BaseController.php | 147 + .../Http/Controllers/IndexController.php | 78 + .../Controllers/Log/AdminLogController.php | 14 + .../Log/AdminLoginLogController.php | 14 + .../Http/Controllers/Rabc/AdminController.php | 25 + .../Controllers/Rabc/AdminMenuController.php | 25 + .../Controllers/Rabc/AdminRoleController.php | 25 + .../Controllers/System/BannerController.php | 25 + .../Controllers/System/ConfigController.php | 59 + .../System/FriendlinkController.php | 25 + .../Controllers/System/ProtocolController.php | 25 + .../Controllers/System/VersionController.php | 25 + .../Http/Controllers/UploadController.php | 31 + app/Modules/Admin/Http/Middleware/.gitkeep | 0 .../Admin/Http/Middleware/AdminLog.php | 43 + .../Admin/Http/Middleware/CheckAuth.php | 44 + .../Admin/Http/Middleware/CheckRabc.php | 64 + app/Modules/Admin/Http/Requests/.gitkeep | 0 .../Article/ArticleCategoryRequest.php | 42 + .../Requests/Article/ArticleLabelRequest.php | 39 + .../Http/Requests/Article/ArticleRequest.php | 47 + .../Admin/Http/Requests/BaseRequest.php | 52 + .../Admin/Http/Requests/LoginRequest.php | 27 + .../Http/Requests/Rabc/AdminMenuRequest.php | 37 + .../Admin/Http/Requests/Rabc/AdminRequest.php | 52 + .../Http/Requests/Rabc/AdminRoleRequest.php | 40 + .../Http/Requests/System/BannerRequest.php | 41 + .../Http/Requests/System/ConfigRequest.php | 42 + .../Requests/System/FriendlinkRequest.php | 50 + .../Http/Requests/System/ProtocolRequest.php | 47 + .../Http/Requests/System/VersionRequest.php | 55 + app/Modules/Admin/Providers/.gitkeep | 0 .../Admin/Providers/AdminServiceProvider.php | 112 + .../Admin/Providers/RouteServiceProvider.php | 69 + app/Modules/Admin/Resources/assets/.gitkeep | 0 app/Modules/Admin/Resources/assets/js/app.js | 0 .../Admin/Resources/assets/sass/app.scss | 0 app/Modules/Admin/Resources/lang/.gitkeep | 0 app/Modules/Admin/Resources/views/.gitkeep | 0 .../Admin/Resources/views/admin.blade.php | 17 + .../Admin/Resources/views/index.blade.php | 9 + .../Resources/views/layouts/master.blade.php | 19 + .../Admin/Resources/vue-element-admin/App.vue | 11 + .../vue-element-admin/api/.idea/api.iml | 9 + .../vue-element-admin/api/.idea/misc.xml | 9 + .../vue-element-admin/api/.idea/modules.xml | 8 + .../vue-element-admin/api/.idea/vcs.xml | 6 + .../vue-element-admin/api/.idea/workspace.xml | 53 + .../vue-element-admin/api/admin_menus.js | 48 + .../vue-element-admin/api/admin_roles.js | 48 + .../vue-element-admin/api/adminloginlogs.js | 17 + .../vue-element-admin/api/adminlogs.js | 17 + .../Resources/vue-element-admin/api/admins.js | 57 + .../api/article_categories.js | 48 + .../vue-element-admin/api/article_labels.js | 41 + .../vue-element-admin/api/articles.js | 56 + .../vue-element-admin/api/banners.js | 41 + .../Resources/vue-element-admin/api/common.js | 16 + .../vue-element-admin/api/configs.js | 65 + .../vue-element-admin/api/friendlinks.js | 41 + .../Resources/vue-element-admin/api/indexs.js | 42 + .../Resources/vue-element-admin/api/login.js | 30 + .../vue-element-admin/api/versions.js | 41 + .../assets/401_images/401.gif | Bin 0 -> 164227 bytes .../assets/404_images/404.png | Bin 0 -> 98071 bytes .../assets/404_images/404_cloud.png | Bin 0 -> 4766 bytes .../custom-theme/fonts/element-icons.ttf | Bin 0 -> 11028 bytes .../custom-theme/fonts/element-icons.woff | Bin 0 -> 6124 bytes .../assets/custom-theme/index.css | 22420 ++++++++++++++ .../components/BackToTop/index.vue | 111 + .../components/Breadcrumb/index.vue | 86 + .../components/Charts/Keyboard.vue | 155 + .../components/Charts/LineMarker.vue | 227 + .../components/Charts/MixChart.vue | 272 + .../components/Charts/mixins/resize.js | 56 + .../components/DndList/index.vue | 166 + .../components/DragSelect/index.vue | 65 + .../components/Dropzone/index.vue | 297 + .../components/ErrorLog/index.vue | 78 + .../components/GithubCorner/index.vue | 56 + .../components/Hamburger/index.vue | 44 + .../components/HeaderSearch/index.vue | 208 + .../components/ImageCropper/index.vue | 1779 ++ .../ImageCropper/utils/data2blob.js | 19 + .../ImageCropper/utils/effectRipple.js | 39 + .../components/ImageCropper/utils/language.js | 232 + .../components/ImageCropper/utils/mimes.js | 7 + .../components/JsonEditor/index.vue | 77 + .../components/Kanban/index.vue | 99 + .../components/LangSelect/index.vue | 41 + .../components/MDinput/index.vue | 360 + .../MarkdownEditor/default-options.js | 31 + .../components/MarkdownEditor/index.vue | 121 + .../components/Pagination/index.vue | 101 + .../components/PanThumb/index.vue | 146 + .../components/RightPanel/index.vue | 145 + .../components/Screenfull/index.vue | 60 + .../components/Share/DropdownMenu.vue | 103 + .../components/SizeSelect/index.vue | 57 + .../components/Sticky/index.vue | 91 + .../components/SvgIcon/index.vue | 62 + .../components/TextHoverEffect/Mallki.vue | 113 + .../components/ThemePicker/index.vue | 174 + .../Tinymce/components/EditorImage.vue | 111 + .../components/Tinymce/dynamicLoadScript.js | 59 + .../components/Tinymce/index.vue | 254 + .../components/Tinymce/plugins.js | 7 + .../components/Tinymce/toolbar.js | 6 + .../components/Upload/SingleImage.vue | 134 + .../components/Upload/SingleImage2.vue | 130 + .../components/Upload/SingleImage3.vue | 157 + .../components/UploadExcel/index.vue | 138 + .../components/Uploads/image/index.vue | 1643 + .../Uploads/image/utils/data2blob.js | 19 + .../Uploads/image/utils/effectRipple.js | 39 + .../Uploads/image/utils/language.js | 232 + .../components/Uploads/image/utils/mimes.js | 7 + .../directive/clipboard/clipboard.js | 49 + .../directive/clipboard/index.js | 13 + .../directive/el-drag-dialog/drag.js | 77 + .../directive/el-drag-dialog/index.js | 13 + .../directive/el-table/adaptive.js | 41 + .../directive/el-table/index.js | 13 + .../directive/permission/index.js | 13 + .../directive/permission/permission.js | 31 + .../vue-element-admin/directive/sticky.js | 91 + .../directive/waves/index.js | 13 + .../directive/waves/waves.css | 26 + .../directive/waves/waves.js | 72 + .../vue-element-admin/filters/index.js | 68 + .../vue-element-admin/icons/index.js | 9 + .../vue-element-admin/icons/svg/404.svg | 1 + .../vue-element-admin/icons/svg/admin.svg | 1 + .../vue-element-admin/icons/svg/bug.svg | 1 + .../vue-element-admin/icons/svg/chart.svg | 1 + .../vue-element-admin/icons/svg/clipboard.svg | 1 + .../vue-element-admin/icons/svg/comment.svg | 1 + .../vue-element-admin/icons/svg/component.svg | 1 + .../icons/svg/create-user.svg | 1 + .../vue-element-admin/icons/svg/dashboard.svg | 1 + .../icons/svg/documentation.svg | 1 + .../vue-element-admin/icons/svg/dollar.svg | 1 + .../vue-element-admin/icons/svg/drag.svg | 1 + .../vue-element-admin/icons/svg/edit.svg | 1 + .../vue-element-admin/icons/svg/education.svg | 1 + .../vue-element-admin/icons/svg/email.svg | 1 + .../vue-element-admin/icons/svg/example.svg | 1 + .../vue-element-admin/icons/svg/excel.svg | 1 + .../icons/svg/exit-fullscreen.svg | 1 + .../vue-element-admin/icons/svg/eye-open.svg | 1 + .../vue-element-admin/icons/svg/eye.svg | 1 + .../vue-element-admin/icons/svg/form.svg | 1 + .../icons/svg/fullscreen.svg | 1 + .../vue-element-admin/icons/svg/guide 2.svg | 1 + .../vue-element-admin/icons/svg/guide.svg | 1 + .../vue-element-admin/icons/svg/icon.svg | 1 + .../icons/svg/international.svg | 1 + .../vue-element-admin/icons/svg/language.svg | 1 + .../vue-element-admin/icons/svg/layout.svg | 1 + .../vue-element-admin/icons/svg/like.svg | 1 + .../vue-element-admin/icons/svg/link.svg | 1 + .../vue-element-admin/icons/svg/list.svg | 1 + .../vue-element-admin/icons/svg/lock.svg | 1 + .../vue-element-admin/icons/svg/message.svg | 1 + .../vue-element-admin/icons/svg/money.svg | 1 + .../vue-element-admin/icons/svg/nested.svg | 1 + .../vue-element-admin/icons/svg/password.svg | 1 + .../vue-element-admin/icons/svg/pdf.svg | 1 + .../vue-element-admin/icons/svg/people.svg | 1 + .../vue-element-admin/icons/svg/peoples.svg | 1 + .../vue-element-admin/icons/svg/qq.svg | 1 + .../vue-element-admin/icons/svg/role.svg | 1 + .../vue-element-admin/icons/svg/search.svg | 1 + .../vue-element-admin/icons/svg/shopping.svg | 1 + .../vue-element-admin/icons/svg/size.svg | 1 + .../vue-element-admin/icons/svg/skill.svg | 1 + .../vue-element-admin/icons/svg/star.svg | 1 + .../vue-element-admin/icons/svg/tab.svg | 1 + .../vue-element-admin/icons/svg/table.svg | 1 + .../vue-element-admin/icons/svg/theme.svg | 1 + .../icons/svg/tree-table.svg | 1 + .../vue-element-admin/icons/svg/tree.svg | 1 + .../vue-element-admin/icons/svg/user.svg | 1 + .../vue-element-admin/icons/svg/wechat.svg | 1 + .../vue-element-admin/icons/svg/zip.svg | 1 + .../vue-element-admin/icons/svgo.yml | 22 + .../Resources/vue-element-admin/lang/en.js | 199 + .../Resources/vue-element-admin/lang/es.js | 199 + .../Resources/vue-element-admin/lang/index.js | 55 + .../Resources/vue-element-admin/lang/ja.js | 199 + .../Resources/vue-element-admin/lang/zh.js | 198 + .../layout/components/AppMain.vue | 57 + .../layout/components/Navbar.vue | 167 + .../layout/components/Settings/index.vue | 145 + .../layout/components/Sidebar/FixiOSBug.js | 26 + .../layout/components/Sidebar/Item.vue | 41 + .../layout/components/Sidebar/Link.vue | 43 + .../layout/components/Sidebar/Logo.vue | 83 + .../layout/components/Sidebar/SidebarItem.vue | 98 + .../layout/components/Sidebar/index.vue | 54 + .../layout/components/TagsView/ScrollPane.vue | 94 + .../layout/components/TagsView/index.vue | 294 + .../layout/components/index.js | 5 + .../vue-element-admin/layout/index.vue | 102 + .../layout/mixin/ResizeHandler.js | 45 + .../Admin/Resources/vue-element-admin/main.js | 56 + .../Resources/vue-element-admin/permission.js | 74 + .../vue-element-admin/router/index.js | 178 + .../router/modules/charts.js | 36 + .../router/modules/components.js | 78 + .../Resources/vue-element-admin/settings.js | 42 + .../vue-element-admin/store/getters.js | 17 + .../vue-element-admin/store/index.js | 25 + .../vue-element-admin/store/modules/app.js | 65 + .../store/modules/errorLog.js | 28 + .../store/modules/permission.js | 123 + .../store/modules/settings.js | 36 + .../store/modules/tagsView.js | 160 + .../vue-element-admin/store/modules/user.js | 167 + .../vue-element-admin/styles/btn.scss | 99 + .../vue-element-admin/styles/common.scss | 22 + .../vue-element-admin/styles/element-ui.scss | 84 + .../styles/element-variables.scss | 31 + .../vue-element-admin/styles/index.scss | 192 + .../vue-element-admin/styles/mixin.scss | 66 + .../vue-element-admin/styles/sidebar.scss | 226 + .../vue-element-admin/styles/transition.scss | 48 + .../vue-element-admin/styles/variables.scss | 35 + .../Resources/vue-element-admin/utils/auth.js | 15 + .../vue-element-admin/utils/clipboard.js | 32 + .../vue-element-admin/utils/error-log.js | 35 + .../vue-element-admin/utils/get-page-title.js | 13 + .../Resources/vue-element-admin/utils/i18n.js | 12 + .../vue-element-admin/utils/index.js | 374 + .../vue-element-admin/utils/open-window.js | 25 + .../vue-element-admin/utils/permission.js | 21 + .../vue-element-admin/utils/request.js | 127 + .../vue-element-admin/utils/scroll-to.js | 58 + .../vue-element-admin/utils/validate.js | 293 + .../vue-element-admin/vendor/Export2Excel.js | 220 + .../vue-element-admin/vendor/Export2Zip.js | 24 + .../views/admin_menus/components/detail.vue | 128 + .../views/admin_menus/index.vue | 199 + .../views/admin_roles/index.vue | 489 + .../views/adminloginlogs/index.vue | 300 + .../views/adminlogs/index.vue | 283 + .../views/admins/components/detail.vue | 239 + .../vue-element-admin/views/admins/index.vue | 366 + .../article_categories/components/detail.vue | 118 + .../views/article_categories/index.vue | 179 + .../article_labels/components/detail.vue | 86 + .../views/article_labels/index.vue | 199 + .../articles/components/ArticleDetail.vue | 441 + .../components/Dropdown/SourceUrl.vue | 38 + .../articles/components/Dropdown/index.js | 1 + .../views/articles/detail.vue | 12 + .../views/articles/index.vue | 466 + .../views/banners/components/detail.vue | 173 + .../vue-element-admin/views/banners/index.vue | 369 + .../views/configs/components/ConfigDetail.vue | 360 + .../views/configs/detail.vue | 15 + .../vue-element-admin/views/configs/index.vue | 448 + .../dashboard/admin/components/BarChart.vue | 102 + .../dashboard/admin/components/BoxCard.vue | 131 + .../dashboard/admin/components/LineChart.vue | 139 + .../dashboard/admin/components/LineMarker.vue | 237 + .../dashboard/admin/components/PanelGroup.vue | 199 + .../dashboard/admin/components/PieChart.vue | 122 + .../dashboard/admin/components/Timeline.vue | 51 + .../admin/components/mixins/resize.js | 55 + .../views/dashboard/admin/index.vue | 236 + .../views/dashboard/index.vue | 28 + .../views/demo/charts/keyboard.vue | 23 + .../views/demo/charts/line.vue | 23 + .../views/demo/charts/mix-chart.vue | 23 + .../demo/components-demo/avatar-upload.vue | 61 + .../demo/components-demo/back-to-top.vue | 150 + .../views/demo/components-demo/count-to.vue | 222 + .../demo/components-demo/drag-kanban.vue | 66 + .../demo/components-demo/drag-select.vue | 43 + .../views/demo/components-demo/dropzone.vue | 29 + .../demo/components-demo/json-editor.vue | 36 + .../views/demo/components-demo/markdown.vue | 100 + .../views/demo/components-demo/mixin.vue | 171 + .../views/demo/components-demo/tinymce.vue | 36 + .../views/demo/icons/element-icons.js | 3 + .../views/demo/icons/index.vue | 101 + .../views/demo/icons/svg-icons.js | 10 + .../views/demo/redirect/index.vue | 12 + .../views/error-page/401.vue | 99 + .../views/error-page/404.vue | 228 + .../views/friendlinks/components/detail.vue | 173 + .../views/friendlinks/index.vue | 367 + .../views/i18n-demo/index.vue | 171 + .../views/i18n-demo/local.js | 82 + .../views/login/auth-redirect.vue | 15 + .../views/login/components/SocialSignin.vue | 72 + .../vue-element-admin/views/login/index.vue | 310 + .../views/profile/components/Account.vue | 66 + .../views/profile/components/Activity.vue | 188 + .../views/profile/components/Timeline.vue | 43 + .../views/profile/components/UserCard.vue | 138 + .../vue-element-admin/views/profile/index.vue | 68 + .../views/versions/components/detail.vue | 120 + .../views/versions/index.vue | 302 + app/Modules/Admin/Routes/.gitkeep | 0 app/Modules/Admin/Routes/api.php | 18 + app/Modules/Admin/Routes/web.php | 166 + app/Modules/Admin/Services/.idea/Services.iml | 9 + app/Modules/Admin/Services/.idea/misc.xml | 9 + app/Modules/Admin/Services/.idea/modules.xml | 8 + app/Modules/Admin/Services/.idea/vcs.xml | 6 + .../Admin/Services/.idea/workspace.xml | 52 + .../Admin/Services/AdminLogService.php | 42 + .../Admin/Services/AdminLoginLogService.php | 47 + .../Admin/Services/AdminMenuService.php | 31 + .../Admin/Services/AdminRoleService.php | 135 + app/Modules/Admin/Services/AdminService.php | 142 + .../Admin/Services/ArticleCategoryService.php | 63 + .../Admin/Services/ArticleLabelService.php | 36 + app/Modules/Admin/Services/ArticleService.php | 104 + app/Modules/Admin/Services/AuthService.php | 96 + app/Modules/Admin/Services/BannerService.php | 32 + app/Modules/Admin/Services/BaseService.php | 153 + app/Modules/Admin/Services/ConfigService.php | 43 + .../Admin/Services/FriendlinkService.php | 32 + app/Modules/Admin/Services/IndexService.php | 229 + .../Admin/Services/ProtocolService.php | 30 + app/Modules/Admin/Services/VersionService.php | 28 + app/Modules/Admin/Tests/Feature/.gitkeep | 0 app/Modules/Admin/Tests/Unit/.gitkeep | 0 app/Modules/Admin/composer.json | 23 + app/Modules/Admin/module.json | 13 + app/Modules/Admin/package.json | 17 + app/Modules/Admin/webpack.admin.config.js | 54 + app/Modules/Admin/webpack.admin.js | 73 + app/Modules/Admin/webpack.mix.js | 14 + app/Providers/AppServiceProvider.php | 29 + app/Providers/AuthServiceProvider.php | 30 + app/Providers/BroadcastServiceProvider.php | 21 + app/Providers/EventServiceProvider.php | 35 + app/Providers/RouteServiceProvider.php | 63 + app/Scopes/DeleteScope.php | 31 + app/Services/Service.php | 37 + app/Traits/Error.php | 32 + app/Traits/Instance.php | 34 + app/Traits/Json.php | 42 + app/Traits/MysqlTable.php | 58 + artisan | 53 + babel.config.js | 14 + bootstrap/app.php | 55 + bootstrap/cache/.gitignore | 2 + composer.json | 73 + composer.lock | 8424 +++++ config/admin.php | 5 + config/app.php | 232 + config/auth.php | 123 + config/broadcasting.php | 64 + config/cache.php | 104 + config/cnpscy.php | 68 + config/cors.php | 34 + config/database.php | 147 + config/debug-server.php | 8 + config/debugbar.php | 216 + config/exceptions.php | 117 + config/filesystems.php | 81 + config/flare.php | 48 + config/hashing.php | 52 + config/ignition.php | 125 + config/jwt.php | 304 + config/logging.php | 104 + config/mail.php | 110 + config/modules.php | 273 + config/queue.php | 89 + config/services.php | 33 + config/session.php | 201 + config/tinker.php | 50 + config/trustedproxy.php | 50 + config/view.php | 36 + database/.gitignore | 2 + database/factories/UserFactory.php | 33 + database/seeders/DatabaseSeeder.php | 18 + docker-compose.yml | 74 + docker/7.4/Dockerfile | 49 + docker/7.4/php.ini | 4 + docker/7.4/start-container | 17 + docker/7.4/supervisord.conf | 11 + docker/8.0/Dockerfile | 49 + docker/8.0/php.ini | 4 + docker/8.0/start-container | 17 + docker/8.0/supervisord.conf | 11 + laravel-vue-admin.sql | 13082 ++++++++ modules_statuses.json | 3 + package-lock.json | 25608 ++++++++++++++++ package.json | 153 + phpunit.xml | 31 + public/.htaccess | 21 + public/demo/home.png | Bin 0 -> 523559 bytes ...6\345\217\262\350\256\260\345\275\225.png" | Bin 0 -> 344816 bytes ...7\347\217\255\347\211\231\350\257\255.png" | Bin 0 -> 164281 bytes ...5\345\277\227\347\273\237\350\256\241.png" | Bin 0 -> 96680 bytes public/favicon.ico | 0 public/index.php | 55 + public/robots.txt | 2 + public/web.config | 28 + resources/css/app.css | 0 resources/js/app.js | 1 + resources/js/bootstrap.js | 28 + resources/lang/en/auth.php | 20 + resources/lang/en/pagination.php | 19 + resources/lang/en/passwords.php | 22 + resources/lang/en/validation.php | 152 + resources/views/errors/401.blade.php | 5 + resources/views/errors/403.blade.php | 5 + resources/views/errors/404.blade.php | 5 + resources/views/errors/419.blade.php | 5 + resources/views/errors/429.blade.php | 5 + resources/views/errors/500.blade.php | 5 + resources/views/errors/503.blade.php | 5 + .../views/errors/illustrated-layout.blade.php | 486 + resources/views/errors/layout.blade.php | 57 + resources/views/errors/minimal.blade.php | 38 + .../views/vendor/mail/html/button.blade.php | 19 + .../views/vendor/mail/html/footer.blade.php | 11 + .../views/vendor/mail/html/header.blade.php | 11 + .../views/vendor/mail/html/layout.blade.php | 56 + .../views/vendor/mail/html/message.blade.php | 27 + .../views/vendor/mail/html/panel.blade.php | 14 + .../views/vendor/mail/html/subcopy.blade.php | 7 + .../views/vendor/mail/html/table.blade.php | 3 + .../views/vendor/mail/html/themes/default.css | 289 + .../views/vendor/mail/text/button.blade.php | 1 + .../views/vendor/mail/text/footer.blade.php | 1 + .../views/vendor/mail/text/header.blade.php | 1 + .../views/vendor/mail/text/layout.blade.php | 9 + .../views/vendor/mail/text/message.blade.php | 27 + .../views/vendor/mail/text/panel.blade.php | 1 + .../views/vendor/mail/text/subcopy.blade.php | 1 + .../views/vendor/mail/text/table.blade.php | 1 + .../vendor/notifications/email.blade.php | 62 + .../vendor/pagination/bootstrap-4.blade.php | 46 + .../views/vendor/pagination/default.blade.php | 46 + .../vendor/pagination/semantic-ui.blade.php | 36 + .../pagination/simple-bootstrap-4.blade.php | 27 + .../pagination/simple-default.blade.php | 19 + .../pagination/simple-tailwind.blade.php | 25 + .../vendor/pagination/tailwind.blade.php | 102 + resources/views/welcome.blade.php | 132 + routes/api.php | 19 + routes/channels.php | 18 + routes/console.php | 19 + routes/web.php | 18 + server.php | 21 + storage/app/.gitignore | 3 + storage/app/public/.gitignore | 2 + storage/debugbar/.gitignore | 2 + storage/framework/.gitignore | 9 + storage/framework/cache/.gitignore | 3 + storage/framework/cache/data/.gitignore | 2 + storage/framework/sessions/.gitignore | 2 + storage/framework/testing/.gitignore | 2 + storage/framework/views/.gitignore | 2 + storage/logs/.gitignore | 2 + tests/CreatesApplication.php | 22 + tests/Feature/ExampleTest.php | 21 + tests/TestCase.php | 10 + tests/Unit/ExampleTest.php | 18 + webpack.mix.js | 24 + 536 files changed, 110397 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.development create mode 100644 .env.example create mode 100644 .env.production create mode 100644 .gitattributes create mode 100644 .styleci.yml create mode 100644 app/Console/Kernel.php create mode 100644 app/Exceptions/Admin/AuthException.php create mode 100644 app/Exceptions/Admin/AuthTokenException.php create mode 100644 app/Exceptions/Exception.php create mode 100644 app/Exceptions/Handler.php create mode 100644 app/Exceptions/InternalException.php create mode 100644 app/Exceptions/InvalidRequestException.php create mode 100644 app/Helper/builtin-functions.php create mode 100644 app/Helper/functions.php create mode 100644 app/Http/Controllers/Controller.php create mode 100644 app/Http/Kernel.php create mode 100644 app/Http/Middleware/Authenticate.php create mode 100644 app/Http/Middleware/ConvertEmptyStringsToNull.php create mode 100644 app/Http/Middleware/EncryptCookies.php create mode 100644 app/Http/Middleware/PreventRequestsDuringMaintenance.php create mode 100644 app/Http/Middleware/RedirectIfAuthenticated.php create mode 100644 app/Http/Middleware/TrimStrings.php create mode 100644 app/Http/Middleware/TrustHosts.php create mode 100644 app/Http/Middleware/TrustProxies.php create mode 100644 app/Http/Middleware/VerifyCsrfToken.php create mode 100644 app/Http/Requests/BaseRequest.php create mode 100644 app/Library/Http.php create mode 100644 app/Library/SystemInfo.php create mode 100644 app/Library/cpu_usage.vbs create mode 100644 app/Library/memory_usage.vbs create mode 100644 app/Listeners/QueryListener.php create mode 100644 app/Models/Model.php create mode 100644 app/Models/MonthModel.php create mode 100644 app/Models/User.php create mode 100644 app/Models/YearModel.php create mode 100644 app/Modules/Admin/Config/.gitkeep create mode 100644 app/Modules/Admin/Config/config.php create mode 100644 app/Modules/Admin/Console/.gitkeep create mode 100644 app/Modules/Admin/Console/AutoTableBuild.php create mode 100644 app/Modules/Admin/Database/Migrations/.gitkeep create mode 100644 app/Modules/Admin/Database/Seeders/.gitkeep create mode 100644 app/Modules/Admin/Database/Seeders/AdminDatabaseSeeder.php create mode 100644 app/Modules/Admin/Database/factories/.gitkeep create mode 100644 app/Modules/Admin/Entities/.gitkeep create mode 100644 app/Modules/Admin/Entities/Article/Article.php create mode 100644 app/Modules/Admin/Entities/Article/ArticleCategory.php create mode 100644 app/Modules/Admin/Entities/Article/ArticleLabel.php create mode 100644 app/Modules/Admin/Entities/Article/ArticleWithLabel.php create mode 100644 app/Modules/Admin/Entities/Log/AdminLog.php create mode 100644 app/Modules/Admin/Entities/Log/AdminLoginLog.php create mode 100644 app/Modules/Admin/Entities/Rabc/Admin.php create mode 100644 app/Modules/Admin/Entities/Rabc/AdminInfo.php create mode 100644 app/Modules/Admin/Entities/Rabc/AdminMenu.php create mode 100644 app/Modules/Admin/Entities/Rabc/AdminRole.php create mode 100644 app/Modules/Admin/Entities/Rabc/AdminRoleWithMenu.php create mode 100644 app/Modules/Admin/Entities/Rabc/AdminWithRole.php create mode 100644 app/Modules/Admin/Entities/System/Banner.php create mode 100644 app/Modules/Admin/Entities/System/Config.php create mode 100644 app/Modules/Admin/Entities/System/Friendlink.php create mode 100644 app/Modules/Admin/Entities/System/Protocol.php create mode 100644 app/Modules/Admin/Entities/System/Version.php create mode 100644 app/Modules/Admin/Http/Controllers/.gitkeep create mode 100644 app/Modules/Admin/Http/Controllers/Article/ArticleCategoryController.php create mode 100644 app/Modules/Admin/Http/Controllers/Article/ArticleController.php create mode 100644 app/Modules/Admin/Http/Controllers/Article/ArticleLabelController.php create mode 100644 app/Modules/Admin/Http/Controllers/AuthController.php create mode 100644 app/Modules/Admin/Http/Controllers/BaseController.php create mode 100644 app/Modules/Admin/Http/Controllers/IndexController.php create mode 100644 app/Modules/Admin/Http/Controllers/Log/AdminLogController.php create mode 100644 app/Modules/Admin/Http/Controllers/Log/AdminLoginLogController.php create mode 100644 app/Modules/Admin/Http/Controllers/Rabc/AdminController.php create mode 100644 app/Modules/Admin/Http/Controllers/Rabc/AdminMenuController.php create mode 100644 app/Modules/Admin/Http/Controllers/Rabc/AdminRoleController.php create mode 100644 app/Modules/Admin/Http/Controllers/System/BannerController.php create mode 100644 app/Modules/Admin/Http/Controllers/System/ConfigController.php create mode 100644 app/Modules/Admin/Http/Controllers/System/FriendlinkController.php create mode 100644 app/Modules/Admin/Http/Controllers/System/ProtocolController.php create mode 100644 app/Modules/Admin/Http/Controllers/System/VersionController.php create mode 100644 app/Modules/Admin/Http/Controllers/UploadController.php create mode 100644 app/Modules/Admin/Http/Middleware/.gitkeep create mode 100644 app/Modules/Admin/Http/Middleware/AdminLog.php create mode 100644 app/Modules/Admin/Http/Middleware/CheckAuth.php create mode 100644 app/Modules/Admin/Http/Middleware/CheckRabc.php create mode 100644 app/Modules/Admin/Http/Requests/.gitkeep create mode 100644 app/Modules/Admin/Http/Requests/Article/ArticleCategoryRequest.php create mode 100644 app/Modules/Admin/Http/Requests/Article/ArticleLabelRequest.php create mode 100644 app/Modules/Admin/Http/Requests/Article/ArticleRequest.php create mode 100644 app/Modules/Admin/Http/Requests/BaseRequest.php create mode 100644 app/Modules/Admin/Http/Requests/LoginRequest.php create mode 100644 app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php create mode 100644 app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php create mode 100644 app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php create mode 100644 app/Modules/Admin/Http/Requests/System/BannerRequest.php create mode 100644 app/Modules/Admin/Http/Requests/System/ConfigRequest.php create mode 100644 app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php create mode 100644 app/Modules/Admin/Http/Requests/System/ProtocolRequest.php create mode 100644 app/Modules/Admin/Http/Requests/System/VersionRequest.php create mode 100644 app/Modules/Admin/Providers/.gitkeep create mode 100644 app/Modules/Admin/Providers/AdminServiceProvider.php create mode 100644 app/Modules/Admin/Providers/RouteServiceProvider.php create mode 100644 app/Modules/Admin/Resources/assets/.gitkeep create mode 100644 app/Modules/Admin/Resources/assets/js/app.js create mode 100644 app/Modules/Admin/Resources/assets/sass/app.scss create mode 100644 app/Modules/Admin/Resources/lang/.gitkeep create mode 100644 app/Modules/Admin/Resources/views/.gitkeep create mode 100644 app/Modules/Admin/Resources/views/admin.blade.php create mode 100644 app/Modules/Admin/Resources/views/index.blade.php create mode 100644 app/Modules/Admin/Resources/views/layouts/master.blade.php create mode 100644 app/Modules/Admin/Resources/vue-element-admin/App.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/.idea/api.iml create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/.idea/misc.xml create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/.idea/modules.xml create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/.idea/vcs.xml create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/.idea/workspace.xml create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/admin_menus.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/admin_roles.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/adminloginlogs.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/adminlogs.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/admins.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/article_categories.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/article_labels.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/articles.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/banners.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/common.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/configs.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/friendlinks.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/indexs.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/login.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/versions.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/assets/401_images/401.gif create mode 100644 app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404.png create mode 100644 app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404_cloud.png create mode 100644 app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/fonts/element-icons.ttf create mode 100644 app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/fonts/element-icons.woff create mode 100644 app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/index.css create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/BackToTop/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Breadcrumb/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Charts/Keyboard.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Charts/LineMarker.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Charts/MixChart.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Charts/mixins/resize.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/DndList/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/DragSelect/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Dropzone/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/ErrorLog/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/GithubCorner/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Hamburger/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/HeaderSearch/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/data2blob.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/effectRipple.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/language.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/mimes.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/JsonEditor/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Kanban/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/LangSelect/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/MDinput/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/MarkdownEditor/default-options.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/MarkdownEditor/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Pagination/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/PanThumb/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/RightPanel/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Screenfull/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Share/DropdownMenu.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/SizeSelect/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Sticky/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/SvgIcon/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/TextHoverEffect/Mallki.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/ThemePicker/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Tinymce/components/EditorImage.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Tinymce/dynamicLoadScript.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Tinymce/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Tinymce/plugins.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Tinymce/toolbar.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Upload/SingleImage.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Upload/SingleImage2.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Upload/SingleImage3.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/UploadExcel/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Uploads/image/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Uploads/image/utils/data2blob.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Uploads/image/utils/effectRipple.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Uploads/image/utils/language.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/components/Uploads/image/utils/mimes.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/clipboard/clipboard.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/clipboard/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/el-drag-dialog/drag.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/el-drag-dialog/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/el-table/adaptive.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/el-table/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/permission/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/permission/permission.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/sticky.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/waves/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/waves/waves.css create mode 100644 app/Modules/Admin/Resources/vue-element-admin/directive/waves/waves.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/filters/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/404.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/admin.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/bug.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/chart.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/clipboard.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/comment.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/component.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/create-user.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/dashboard.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/documentation.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/dollar.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/drag.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/edit.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/education.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/email.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/example.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/excel.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/exit-fullscreen.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/eye-open.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/eye.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/form.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/fullscreen.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/guide 2.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/guide.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/icon.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/international.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/language.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/layout.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/like.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/link.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/list.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/lock.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/message.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/money.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/nested.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/password.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/pdf.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/people.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/peoples.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/qq.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/role.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/search.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/shopping.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/size.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/skill.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/star.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/tab.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/table.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/theme.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/tree-table.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/tree.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/user.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/wechat.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svg/zip.svg create mode 100644 app/Modules/Admin/Resources/vue-element-admin/icons/svgo.yml create mode 100644 app/Modules/Admin/Resources/vue-element-admin/lang/en.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/lang/es.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/lang/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/lang/ja.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/lang/zh.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/AppMain.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/Navbar.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/Settings/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/Sidebar/FixiOSBug.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/Sidebar/Item.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/Sidebar/Link.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/Sidebar/Logo.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/Sidebar/SidebarItem.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/Sidebar/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/TagsView/ScrollPane.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/TagsView/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/components/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/layout/mixin/ResizeHandler.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/main.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/permission.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/router/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/router/modules/charts.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/router/modules/components.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/settings.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/store/getters.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/store/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/store/modules/app.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/store/modules/errorLog.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/store/modules/permission.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/store/modules/settings.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/store/modules/tagsView.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/store/modules/user.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/styles/btn.scss create mode 100644 app/Modules/Admin/Resources/vue-element-admin/styles/common.scss create mode 100644 app/Modules/Admin/Resources/vue-element-admin/styles/element-ui.scss create mode 100644 app/Modules/Admin/Resources/vue-element-admin/styles/element-variables.scss create mode 100644 app/Modules/Admin/Resources/vue-element-admin/styles/index.scss create mode 100644 app/Modules/Admin/Resources/vue-element-admin/styles/mixin.scss create mode 100644 app/Modules/Admin/Resources/vue-element-admin/styles/sidebar.scss create mode 100644 app/Modules/Admin/Resources/vue-element-admin/styles/transition.scss create mode 100644 app/Modules/Admin/Resources/vue-element-admin/styles/variables.scss create mode 100644 app/Modules/Admin/Resources/vue-element-admin/utils/auth.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/utils/clipboard.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/utils/error-log.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/utils/get-page-title.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/utils/i18n.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/utils/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/utils/open-window.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/utils/permission.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/utils/request.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/utils/scroll-to.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/utils/validate.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/vendor/Export2Excel.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/vendor/Export2Zip.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/admin_menus/components/detail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/admin_menus/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/admin_roles/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/adminloginlogs/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/adminlogs/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/admins/components/detail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/admins/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/article_categories/components/detail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/article_categories/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/article_labels/components/detail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/article_labels/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/articles/components/ArticleDetail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/articles/components/Dropdown/SourceUrl.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/articles/components/Dropdown/index.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/articles/detail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/articles/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/banners/components/detail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/banners/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/configs/components/ConfigDetail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/configs/detail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/configs/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/BarChart.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/BoxCard.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/LineChart.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/LineMarker.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/PanelGroup.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/PieChart.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/Timeline.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/mixins/resize.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/dashboard/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/charts/keyboard.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/charts/line.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/charts/mix-chart.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/components-demo/avatar-upload.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/components-demo/back-to-top.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/components-demo/count-to.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/components-demo/drag-kanban.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/components-demo/drag-select.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/components-demo/dropzone.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/components-demo/json-editor.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/components-demo/markdown.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/components-demo/mixin.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/components-demo/tinymce.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/icons/element-icons.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/icons/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/icons/svg-icons.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/demo/redirect/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/error-page/401.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/error-page/404.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/friendlinks/components/detail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/friendlinks/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/i18n-demo/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/i18n-demo/local.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/login/auth-redirect.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/login/components/SocialSignin.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/login/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Account.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Activity.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Timeline.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/profile/components/UserCard.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/profile/index.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/versions/components/detail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/versions/index.vue create mode 100644 app/Modules/Admin/Routes/.gitkeep create mode 100644 app/Modules/Admin/Routes/api.php create mode 100644 app/Modules/Admin/Routes/web.php create mode 100644 app/Modules/Admin/Services/.idea/Services.iml create mode 100644 app/Modules/Admin/Services/.idea/misc.xml create mode 100644 app/Modules/Admin/Services/.idea/modules.xml create mode 100644 app/Modules/Admin/Services/.idea/vcs.xml create mode 100644 app/Modules/Admin/Services/.idea/workspace.xml create mode 100644 app/Modules/Admin/Services/AdminLogService.php create mode 100644 app/Modules/Admin/Services/AdminLoginLogService.php create mode 100644 app/Modules/Admin/Services/AdminMenuService.php create mode 100644 app/Modules/Admin/Services/AdminRoleService.php create mode 100644 app/Modules/Admin/Services/AdminService.php create mode 100644 app/Modules/Admin/Services/ArticleCategoryService.php create mode 100644 app/Modules/Admin/Services/ArticleLabelService.php create mode 100644 app/Modules/Admin/Services/ArticleService.php create mode 100644 app/Modules/Admin/Services/AuthService.php create mode 100644 app/Modules/Admin/Services/BannerService.php create mode 100644 app/Modules/Admin/Services/BaseService.php create mode 100644 app/Modules/Admin/Services/ConfigService.php create mode 100644 app/Modules/Admin/Services/FriendlinkService.php create mode 100644 app/Modules/Admin/Services/IndexService.php create mode 100644 app/Modules/Admin/Services/ProtocolService.php create mode 100644 app/Modules/Admin/Services/VersionService.php create mode 100644 app/Modules/Admin/Tests/Feature/.gitkeep create mode 100644 app/Modules/Admin/Tests/Unit/.gitkeep create mode 100644 app/Modules/Admin/composer.json create mode 100644 app/Modules/Admin/module.json create mode 100644 app/Modules/Admin/package.json create mode 100644 app/Modules/Admin/webpack.admin.config.js create mode 100644 app/Modules/Admin/webpack.admin.js create mode 100644 app/Modules/Admin/webpack.mix.js create mode 100644 app/Providers/AppServiceProvider.php create mode 100644 app/Providers/AuthServiceProvider.php create mode 100644 app/Providers/BroadcastServiceProvider.php create mode 100644 app/Providers/EventServiceProvider.php create mode 100644 app/Providers/RouteServiceProvider.php create mode 100644 app/Scopes/DeleteScope.php create mode 100644 app/Services/Service.php create mode 100644 app/Traits/Error.php create mode 100644 app/Traits/Instance.php create mode 100644 app/Traits/Json.php create mode 100644 app/Traits/MysqlTable.php create mode 100644 artisan create mode 100644 babel.config.js create mode 100644 bootstrap/app.php create mode 100644 bootstrap/cache/.gitignore create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/admin.php create mode 100644 config/app.php create mode 100644 config/auth.php create mode 100644 config/broadcasting.php create mode 100644 config/cache.php create mode 100644 config/cnpscy.php create mode 100644 config/cors.php create mode 100644 config/database.php create mode 100644 config/debug-server.php create mode 100644 config/debugbar.php create mode 100644 config/exceptions.php create mode 100644 config/filesystems.php create mode 100644 config/flare.php create mode 100644 config/hashing.php create mode 100644 config/ignition.php create mode 100644 config/jwt.php create mode 100644 config/logging.php create mode 100644 config/mail.php create mode 100644 config/modules.php create mode 100644 config/queue.php create mode 100644 config/services.php create mode 100644 config/session.php create mode 100644 config/tinker.php create mode 100644 config/trustedproxy.php create mode 100644 config/view.php create mode 100644 database/.gitignore create mode 100644 database/factories/UserFactory.php create mode 100644 database/seeders/DatabaseSeeder.php create mode 100644 docker-compose.yml create mode 100644 docker/7.4/Dockerfile create mode 100644 docker/7.4/php.ini create mode 100644 docker/7.4/start-container create mode 100644 docker/7.4/supervisord.conf create mode 100644 docker/8.0/Dockerfile create mode 100644 docker/8.0/php.ini create mode 100644 docker/8.0/start-container create mode 100644 docker/8.0/supervisord.conf create mode 100644 laravel-vue-admin.sql create mode 100644 modules_statuses.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 phpunit.xml create mode 100644 public/.htaccess create mode 100644 public/demo/home.png create mode 100644 "public/demo/\347\211\210\346\234\254\345\216\206\345\217\262\350\256\260\345\275\225.png" create mode 100644 "public/demo/\350\245\277\347\217\255\347\211\231\350\257\255.png" create mode 100644 "public/demo/\350\257\267\346\261\202\346\227\245\345\277\227\347\273\237\350\256\241.png" create mode 100644 public/favicon.ico create mode 100644 public/index.php create mode 100644 public/robots.txt create mode 100644 public/web.config create mode 100644 resources/css/app.css create mode 100644 resources/js/app.js create mode 100644 resources/js/bootstrap.js create mode 100644 resources/lang/en/auth.php create mode 100644 resources/lang/en/pagination.php create mode 100644 resources/lang/en/passwords.php create mode 100644 resources/lang/en/validation.php create mode 100644 resources/views/errors/401.blade.php create mode 100644 resources/views/errors/403.blade.php create mode 100644 resources/views/errors/404.blade.php create mode 100644 resources/views/errors/419.blade.php create mode 100644 resources/views/errors/429.blade.php create mode 100644 resources/views/errors/500.blade.php create mode 100644 resources/views/errors/503.blade.php create mode 100644 resources/views/errors/illustrated-layout.blade.php create mode 100644 resources/views/errors/layout.blade.php create mode 100644 resources/views/errors/minimal.blade.php create mode 100644 resources/views/vendor/mail/html/button.blade.php create mode 100644 resources/views/vendor/mail/html/footer.blade.php create mode 100644 resources/views/vendor/mail/html/header.blade.php create mode 100644 resources/views/vendor/mail/html/layout.blade.php create mode 100644 resources/views/vendor/mail/html/message.blade.php create mode 100644 resources/views/vendor/mail/html/panel.blade.php create mode 100644 resources/views/vendor/mail/html/subcopy.blade.php create mode 100644 resources/views/vendor/mail/html/table.blade.php create mode 100644 resources/views/vendor/mail/html/themes/default.css create mode 100644 resources/views/vendor/mail/text/button.blade.php create mode 100644 resources/views/vendor/mail/text/footer.blade.php create mode 100644 resources/views/vendor/mail/text/header.blade.php create mode 100644 resources/views/vendor/mail/text/layout.blade.php create mode 100644 resources/views/vendor/mail/text/message.blade.php create mode 100644 resources/views/vendor/mail/text/panel.blade.php create mode 100644 resources/views/vendor/mail/text/subcopy.blade.php create mode 100644 resources/views/vendor/mail/text/table.blade.php create mode 100644 resources/views/vendor/notifications/email.blade.php create mode 100644 resources/views/vendor/pagination/bootstrap-4.blade.php create mode 100644 resources/views/vendor/pagination/default.blade.php create mode 100644 resources/views/vendor/pagination/semantic-ui.blade.php create mode 100644 resources/views/vendor/pagination/simple-bootstrap-4.blade.php create mode 100644 resources/views/vendor/pagination/simple-default.blade.php create mode 100644 resources/views/vendor/pagination/simple-tailwind.blade.php create mode 100644 resources/views/vendor/pagination/tailwind.blade.php create mode 100644 resources/views/welcome.blade.php create mode 100644 routes/api.php create mode 100644 routes/channels.php create mode 100644 routes/console.php create mode 100644 routes/web.php create mode 100644 server.php create mode 100644 storage/app/.gitignore create mode 100644 storage/app/public/.gitignore create mode 100644 storage/debugbar/.gitignore create mode 100644 storage/framework/.gitignore create mode 100644 storage/framework/cache/.gitignore create mode 100644 storage/framework/cache/data/.gitignore create mode 100644 storage/framework/sessions/.gitignore create mode 100644 storage/framework/testing/.gitignore create mode 100644 storage/framework/views/.gitignore create mode 100644 storage/logs/.gitignore create mode 100644 tests/CreatesApplication.php create mode 100644 tests/Feature/ExampleTest.php create mode 100644 tests/TestCase.php create mode 100644 tests/Unit/ExampleTest.php create mode 100644 webpack.mix.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..df52c32 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,19 @@ +root = true + +[*] +; 设定文件编码 +charset = utf-8 +end_of_line = lf +insert_final_newline = true +; 使用空格来做缩进 +indent_style = space +; 缩进长度为两个空格 +indent_size = 4 +; 移除文件尾部多余的空格 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..de583d0 --- /dev/null +++ b/.env.development @@ -0,0 +1,5 @@ +# just a flag +ENV = 'development' + +# base api +VUE_APP_BASE_API = '/dev-api' diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..7492cb4 --- /dev/null +++ b/.env.example @@ -0,0 +1,60 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +LOG_CHANNEL=daily +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=laravel +DB_USERNAME=root +DB_PASSWORD= +DB_PREFIX=cnpscy_ + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +# MEMCACHED_HOST=127.0.0.1 +MEMCACHED_HOST=memcached + +# REDIS_HOST=127.0.0.1 +REDIS_HOST=redis +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=mailhog +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=null +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +#filesystem +FILESYSTEM_DRIVER=public + +APP_TIMEZONE=Asia/Shanghai +APP_LOCALE=zh-CN + +JWT_SECRET=uuKSCoJpNKumzY7xOdjfpAxF0MMuI5j98iaO4uk3JVwbFCUapvsB7XGohKOBjd92 diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..80c8103 --- /dev/null +++ b/.env.production @@ -0,0 +1,6 @@ +# just a flag +ENV = 'production' + +# base api +VUE_APP_BASE_API = '/prod-api' + diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..967315d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +* text=auto +*.css linguist-vendored +*.scss linguist-vendored +*.js linguist-vendored +CHANGELOG.md export-ignore diff --git a/.gitignore b/.gitignore index 6552ddf..1501035 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,13 @@ storage/*.key Homestead.yaml Homestead.json /.vagrant + + +# vue-webpack +public/css +public/fonts +public/images +public/js + +# other +demos-blog \ No newline at end of file diff --git a/.styleci.yml b/.styleci.yml new file mode 100644 index 0000000..9231873 --- /dev/null +++ b/.styleci.yml @@ -0,0 +1,13 @@ +php: + preset: laravel + disabled: + - no_unused_imports + finder: + not-name: + - index.php + - server.php +js: + finder: + not-name: + - webpack.mix.js +css: true diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..c24df94 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,57 @@ +command('inspire')->hourly(); + + // var_dump('schedule:' . date('Y-m-d H:i:s')); + + // 每月1号调用:按月分表自动生成 + $schedule->command('autotablebuild')->monthlyOn(); + } + + /** + * Register the commands for the application. + * + * @return void + */ + protected function commands() + { + $this->load(__DIR__.'/Commands'); + + /** + * 自动加载多模块的自定义命令行 + */ + $modules_path = config('modules.paths.modules'); + if ($dirs = get_dir_files($modules_path)){ + foreach ($dirs as $dir){ + if (is_dir($console_path = $modules_path . '/' . $dir . '/Console')) + $this->load($console_path = $modules_path . '/' . $dir . '/Console'); + } + } + + require base_path('routes/console.php'); + } +} diff --git a/app/Exceptions/Admin/AuthException.php b/app/Exceptions/Admin/AuthException.php new file mode 100644 index 0000000..dbac672 --- /dev/null +++ b/app/Exceptions/Admin/AuthException.php @@ -0,0 +1,28 @@ +admin_id = $admin_id; + } + + public function render(Request $request) + { + if ($request->expectsJson()) { + // 登录日志 + AdminLoginLog::getInstance()->add($this->admin_id, 0, $this->msg); + + $this->setHttpCode(401); + return $this->errorJson($this->msg); + } + } +} diff --git a/app/Exceptions/Admin/AuthTokenException.php b/app/Exceptions/Admin/AuthTokenException.php new file mode 100644 index 0000000..70d58bd --- /dev/null +++ b/app/Exceptions/Admin/AuthTokenException.php @@ -0,0 +1,28 @@ +admin_id = $admin_id; + } + + public function render(Request $request) + { + if ($request->expectsJson()) { + // 登录日志 + AdminLoginLog::getInstance()->add($this->admin_id, 0, $this->msg); + + $this->setHttpCode(401); + return $this->errorJson($this->msg); + } + } +} diff --git a/app/Exceptions/Exception.php b/app/Exceptions/Exception.php new file mode 100644 index 0000000..a8bf4b2 --- /dev/null +++ b/app/Exceptions/Exception.php @@ -0,0 +1,20 @@ +msg = $message; + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100644 index 0000000..48a5099 --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,67 @@ +reportable(function (Throwable $e) { + + }); + + } + + /** + * Render an exception into an HTTP response. + * + * @param \Illuminate\Http\Request $request + * @param \Throwable $exception + * @return \Symfony\Component\HttpFoundation\Response + * + * @throws \Throwable + */ + public function render($request, Throwable $exception) + { + // 验证器类的错误监听 + if($exception instanceof \Illuminate\Validation\ValidationException){ + return $this->errorJson($exception->validator->errors()->first()); + } + + return parent::render($request, $exception); + } +} diff --git a/app/Exceptions/InternalException.php b/app/Exceptions/InternalException.php new file mode 100644 index 0000000..b9429b2 --- /dev/null +++ b/app/Exceptions/InternalException.php @@ -0,0 +1,21 @@ +msg = $msg; + } + + public function render(Request $request) + { + if ($request->expectsJson()) { + return response()->json(['msg' => $this->msg], $this->code); + } + } +} diff --git a/app/Exceptions/InvalidRequestException.php b/app/Exceptions/InvalidRequestException.php new file mode 100644 index 0000000..954e53a --- /dev/null +++ b/app/Exceptions/InvalidRequestException.php @@ -0,0 +1,20 @@ +expectsJson()) { + return $this->errorJson($this->msg); + } + } +} diff --git a/app/Helper/builtin-functions.php b/app/Helper/builtin-functions.php new file mode 100644 index 0000000..664c1b8 --- /dev/null +++ b/app/Helper/builtin-functions.php @@ -0,0 +1,292 @@ +roles; + $rabc = $menu_lists = []; + foreach ($roles as $key => $role) { + $menus = $role->{$with_func}->toArray(); + $rabc[$role->role_id] = array_flip(array_unique(array_column($menus, 'menu_url'))); + $menu_lists = array_merge($menu_lists, $menus); + } + return ['rabc' => $rabc, 'menu' => $menu_lists]; +} + +function get_request_post() +{ + return request()->isMethod('post'); +} + +function cnpscy_config(string $config_name = '', string $default = '') +{ + return config('cnpscy.' . $config_name, $default); +} + +//快速修改.env文件 +function modifyEnv(array $data) +{ + $envPath = base_path() . DIRECTORY_SEPARATOR . '.env'; + $contentArray = collect(file($envPath, FILE_IGNORE_NEW_LINES)); + $contentArray->transform(function ($item) use ($data) + { + foreach ($data as $key => $value) { + if (str_contains($item, $key)) { + return $key . '=' . $value; + } + } + return $item; + }); + $content = implode($contentArray->toArray(), "\n"); + File::put($envPath, $content); +} + +/*************** 缓存函数 开始 ***************/ + +/** + * [set_cache] + * + * @param [type] $key [description] + * @param [type] $data [description] + * @param [type] $minutes [description]$minutes = 7*24*60*60 + * + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :设置缓存 + * @englishAnnotation : + */ +function set_cache($key, $data, $minutes = 1 * 60) +{ + return \Cache::put($key, $data, $minutes); +} + +/** + * [get_cache] + * + * @param [type] $key [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :获取缓存的数据 + * @englishAnnotation : + */ +function get_cache($key) +{ + return \Cache::get($key) ?? ''; +} + +/** + * [has_cache] + * + * @param [type] $key [description] + * + * @return boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :是否存在该key的缓存 + * @englishAnnotation : + */ +function has_cache($key) +{ + return \Cache::has($key) ? true : false; +} + +/** + * [del_cache] + * + * @param [type] $key [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :删除缓存 + * @englishAnnotation : + */ +function del_cache($key) +{ + return \Cache::forget($key) ?? false; +} + +/*************** 缓存函数 结束 ***************/ + + +/** + * [logs_data] + * + * @param [type] $data [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :日志数据的过滤 + * @englishAnnotation : + */ +function logs_data($data, $ip_agent) +{ + $data['data'] = json_encode(request()->all()); + $data['action'] = request()->route()->getActionName(); + $data['description'] = $data['description'] ?? ''; + $data['add_time'] = $data['add_time'] ?? time(); + $data['ip'] = $ip_agent['ip'] ?? get_ip(); + $data['browser_type'] = $ip_agent['agent'] ?? $_SERVER['HTTP_USER_AGENT']; + return $data; +} + +/** + * 刷新用户权限、角色 + * 多角色管理 + */ +if (!function_exists('setAdminRabc')) { + function setAdminRabc() + { + $admin = auth('admin')->user(); + $roles = $menus = []; + $rolesResources = $admin->roles()->orderBy('role_id', 'ASC')->get(); + foreach ($rolesResources as $key => $roleResources) { + if ($key == 0) $role_id = $roleResources->role_id; + $roles[$roleResources->role_id] = $roleResources; + $menus[$roleResources->role_id] = array_filter($roleResources->left_menus()->get()->pluck('api_url')->toArray()); + } + + //默认使用第一个角色 + if (empty($admin->use_role)) \App\Models\BasicAdmin\Admin::where('admin_id', $admin->admin_id)->update(['use_role' => $role_id]); + + // 缓存用户权限 + cache()->forever('admin_rabc_' . $admin->admin_id, [ + 'roles' => $roles, + 'menus' => $menus + ]); + } +} + +/** + * 获取当前用户-当前角色-权限 + */ +if (!function_exists('getAdminRabc')) { + function getAdminRabc() + { + $admin = auth('admin')->user(); + $key = 'admin_rabc_' . $admin->admin_id; + if (cache()->has($key)) { + $admin_rabc = cache($key); + return [ + 'roles' => empty($admin->use_role) ? [] : $admin_rabc['roles'][$admin->use_role], + 'menus' => empty($admin->use_role) ? [] : $admin_rabc['menus'][$admin->use_role], + ]; + } + setAdminRabc(); + return cache($key); + } +} + + +function getWebUserHome(int $user_id = 0) +{ + return url('user/' . $user_id); +} + +function route_class() +{ + return str_replace('.', '-', Route::currentRouteName()); +} + +function category_nav_active($category_id) +{ + return active_class((if_route('categories.show') && if_route_param('category', $category_id))); +} + +function make_excerpt($value, $length = 200) +{ + $excerpt = trim(preg_replace('/\r\n|\r|\n+/', ' ', strip_tags($value))); + return Str::limit($excerpt, $length); +} + +function model_admin_link($title, $model) +{ + return model_link($title, $model, 'admin'); +} + +function model_link($title, $model, $prefix = '') +{ + // 获取数据模型的复数蛇形命名 + $model_name = model_plural_name($model); + + // 初始化前缀 + $prefix = $prefix ? "/$prefix/" : '/'; + + // 使用站点 URL 拼接全量 URL + $url = config('app.url') . $prefix . $model_name . '/' . $model->id; + + // 拼接 HTML A 标签,并返回 + return '' . $title . ''; +} + +function model_plural_name($model) +{ + // 从实体中获取完整类名,例如:App\Models\User + $full_class_name = get_class($model); + + // 获取基础类名,例如:传参 `App\Models\User` 会得到 `User` + $class_name = class_basename($full_class_name); + + // 蛇形命名,例如:传参 `User` 会得到 `user`, `FooBar` 会得到 `foo_bar` + $snake_case_name = Str::snake($class_name); + + // 获取子串的复数形式,例如:传参 `user` 会得到 `users` + return Str::plural($snake_case_name); +} + +function get_web_admin_url(string $method, string $controller = '', int $is_compel = 0): string +{ + if (empty($method)) return ''; + $prefix = ltrim(request()->route()->getPrefix(), '/'); + // 如果后台访问地址对不上,关闭下行的注释 + // $prefix = str_replace(head(explode('/', $prefix)), cnpscy_config('web_admin_prefix'), $prefix); + if (empty($controller) && $is_compel == 0) { + $url = $prefix . '/' . ltrim($method, '/'); + } else { + $url = str_replace(last(explode('/', $prefix)), $controller, $prefix) . (empty($controller) ? '' : '/') . ltrim($method, '/'); + } + return url($url); +} + +function get_api_admin_url(string $method, string $controller = '', int $is_compel = 0) +{ + if (empty($method)) return ''; + $prefix = ltrim(request()->route()->getPrefix(), '/'); + $prefix = str_replace(head(explode('/', $prefix)), cnpscy_config('api_admin_prefix'), $prefix); + if (empty($controller) && $is_compel == 0) { + $url = 'api/' . $prefix . '/' . ltrim($method, '/'); + } else { + $url = 'api/' . str_replace(last(explode('/', $prefix)), $controller, $prefix) . (empty($controller) ? '' : '/') . ltrim($method, '/'); + } + return url($url); +} + +function get_model_url(string $method, string $controller = '', int $is_compel = 0) +{ + if (empty($method)) return url('/'); + $prefix = ltrim(request()->route()->getPrefix(), '/'); + if (empty($controller) && $is_compel == 0) { + $url = $prefix . '/' . ltrim($method, '/'); + } else { + $url = str_replace(last(explode('/', $prefix)), $controller, $prefix) . (empty($controller) ? '' : '/') . $method; + } + return url($url); +} + +function getControllerAndFunction() +{ + $action = \Route::current()->getActionName(); + list($class, $method) = explode('@', $action); + $class = substr(strrchr($class, '\\'), 1); + return ['controller' => $class, 'method' => $method]; +} + +function getControllerRoutePrefix() +{ + $controller = getControllerAndFunction()['controller'] ?? ''; + return strtolower(str_replace('Controller', '', $controller)); +} diff --git a/app/Helper/functions.php b/app/Helper/functions.php new file mode 100644 index 0000000..6148d07 --- /dev/null +++ b/app/Helper/functions.php @@ -0,0 +1,3953 @@ += $maxLimit ) { + return false; + } else { + return true; + } + } +} + +if ( !function_exists('psQty_num') ) { + /** + * 获取指定进程的数量 + * + * @param string $search + * + * @return int + */ + function psQty_num(string $search) + { + return count(psQty_res($search)); + } +} + +if ( !function_exists('run_exec') ) { + function run_exec(string $command_name) + { + $command = 'php ' . $command_name; + + $output = 0; + + $return_val = ''; + + exec($command, $output, $return_val); + + return $output; + } +} + +if ( !function_exists('make_signature') ) { + /** + * 生成签名 + * + * @param array $args + * @param string $key + * + * @return string + */ + function make_signature(array $args, string $key) + { + //排序 + ksort($args); + //生成sign + $str = urldecode(http_build_query($args)) . '&key=' . $key; + $sign = strtoupper(md5($str)); + return $sign; + } +} + +if ( !function_exists('get_difference_hours') ) { + /** + * 计算两个时间戳之间相差的小时 + * + * @param int $start_time 开始时间戳 + * @param int $end_time 结束时间戳 + * + * @return int + */ + function get_difference_hours(int $start_time, int $end_time):float + { + if ( $start_time < $end_time ) { + $starttime = $start_time; + $endtime = $end_time; + } else { + $starttime = $end_time; + $endtime = $start_time; + } + //计算小时 + $timediff = $endtime - $starttime; + return floatval($timediff / 3600); + } +} + +if ( !function_exists('array_merge_multiple') ) { + /** + * 多维数组合并 + * + * @param $array1 + * @param $array2 + * + * @return array + */ + function array_merge_multiple($array1, $array2) + { + $merge = $array1 + $array2; + $data = []; + foreach ($merge as $key => $val) { + if ( isset($array1[$key]) && is_array($array1[$key]) && isset($array2[$key]) && is_array($array2[$key]) ) { + $data[$key] = array_merge_multiple($array1[$key], $array2[$key]); + } else { + $data[$key] = isset($array2[$key]) ? $array2[$key] : $array1[$key]; + } + } + return $data; + } +} + +if ( !function_exists('export_excel') ) { + /** + * 数据导出到excel(csv文件) + * + * @param $fileName + * @param array $tileArray + * @param array $dataArray + */ + function export_excel($fileName, $tileArray = [], $dataArray = []) + { + ini_set('memory_limit', '1024M'); + ini_set('max_execution_time', 0); + ob_end_clean(); + ob_start(); + header("Content-Type: text/csv"); + header("Content-Disposition:filename=" . $fileName); + $fp = fopen('php://output', 'w'); + fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));// 转码 防止乱码(比如微信昵称) + fputcsv($fp, $tileArray); + $index = 0; + foreach ($dataArray as $item) { + if ( $index == 1000 ) { + $index = 0; + ob_flush(); + flush(); + } + $index++; + fputcsv($fp, $item); + } + ob_flush(); + flush(); + ob_end_clean(); + } +} + +if ( !function_exists('is_json') ) { + /** + * 判断字符串是否为 Json 格式 + * + * @param string $data Json 字符串 + * @param bool $assoc 是否返回关联数组。默认返回对象 + * + * @return array|bool|object 成功返回转换后的对象或数组,失败返回 false + */ + function is_json($data = '', $assoc = false) + { + if ( PHP_VERSION > 5.3 ) { + json_decode($data); + return (json_last_error() == JSON_ERROR_NONE); + } else { + $data = json_decode($data, $assoc); + if ( ($data && is_object($data)) || (is_array($data) && !empty($data)) ) { + return $data; + } + return false; + } + } +} + +if ( function_exists('get_request_method') ) { + function get_request_method() : string + { + return strtoupper($_SERVER['REQUEST_METHOD'] ?? ''); + } +} + + +if (!function_exists('my_json_encode') ) { + /** + * 统一的json_encode + * + * @param array $data + * @param string $options + * + * @return false|string + */ + function my_json_encode($data, string $options = '') + { + //$data = is_object($data) ? (array)$data : $data; + return json_encode($data, empty($options) ? (JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) : $options); + } +} + + +if ( !function_exists('my_json_decode') ) { + /** + * 统一的 json_decode + * + * @param string $string + * @param bool $assoc + * + * @return mixed + */ + function my_json_decode(string $string, bool $assoc = true) + { + return json_decode($string, $assoc); + } +} + +/** + * 输出xml字符 + */ +function ToXml($arr = []) +{ + if ( !is_array($arr) || count($arr) <= 0 ) { + exception("数组数据异常!"); + } + + $xml = ""; + foreach ($arr as $key => $val) { + if ( is_numeric($val) ) { + $xml .= "<" . $key . ">" . $val . ""; + } else { + $xml .= "<" . $key . ">"; + } + } + $xml .= ""; + return $xml; +} + +/** + * 将xml转为array + */ +function xml_to_array($xml) +{ + if ( !$xml ) { + \Exception("xml数据异常!"); + } + + // 解决部分json数据误入的问题 + $arr = json_decode($xml, true); + if ( is_array($arr) && !empty($arr) ) { + return $arr; + } + // 将XML转为array + $arr = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); + return $arr; +} + +// 生成签名 +function make_sign($paraMap = [], $partner_key = '') +{ + $buff = ""; + ksort($paraMap); + $paraMap['key'] = $partner_key; + foreach ($paraMap as $k => $v) { + if ( null != $v && "null" != $v && '' != $v && "sign" != $k ) { + $buff .= $k . "=" . $v . "&"; + } + } + $reqPar = ''; + if ( strlen($buff) > 0 ) { + $reqPar = substr($buff, 0, strlen($buff) - 1); + } + + return strtoupper(md5($reqPar)); +} + +/** + * 前端获取后端的数据结果集 + * + * @param $data + * + * @return string + */ +function html_get_res_from_admin($data) +{ + return addslashes(my_json_encode($data)); +} + +if ( !function_exists('axios_request') ) { + /** + * 跨域问题设置 + */ + function axios_request() + { + $http_origin = !isset($_SERVER['HTTP_ORIGIN']) ? "*" : $_SERVER['HTTP_ORIGIN']; + + $http_origin = (empty($http_origin) || $http_origin == null || $http_origin == 'null') ? '*' : $http_origin; + + $_SERVER['HTTP_ORIGIN'] = $http_origin; + + //if(strtoupper($_SERVER['REQUEST_METHOD'] ?? "") == 'OPTIONS'){ //vue 的 axios 发送 OPTIONS 请求,进行验证 + // exit; + //} + + header('Access-Control-Allow-Origin: ' . $http_origin);// . $http_origin + header('Access-Control-Allow-Credentials: true');//【如果请求方存在域名请求,那么为true;否则为false】 + header('Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Content-Type, Access-Control-Allow-Headers, x-xsrf-token, Accept, x-file-name, x-frame-options, X-Requested-With'); + header('Access-Control-Allow-Methods: *'); + header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, PATCH'); + //header('X-Frame-Options:SAMEORIGIN'); + } +} + +if ( !function_exists('string_underscore_lowercase') ) { + /** + * 字符串如果存在大小,那么自动转换成 _小写 + * + * @param $string + * @param string $format + * + * @return string|string[]|null + */ + function string_underscore_lowercase($string, $format = '_') + { + return preg_replace('/((?<=[a-z])(?=[A-Z]))/', $format, $string); + } +} + +if ( !function_exists('convert_underline') ) { + // 下划线的字符串转骆驼峰 + function convert_underline($str, $ucfirst = true) + { + $str = ucwords(str_replace('_', ' ', $str)); + $str = str_replace(' ', '', lcfirst($str)); + return $ucfirst ? ucfirst($str) : $str; + } +} + +if ( !function_exists('get_string_pluralize') ) { + /** + * 获得指定字符串的复数 + * + * @param $string + * + * @return mixed|string|string[]|null + */ + function get_string_pluralize(string $string) + { + $plural = [ + [ + '/(quiz)$/i', + "$1zes", + ], + [ + '/^(ox)$/i', + "$1en", + ], + [ + '/([m|l])ouse$/i', + "$1ice", + ], + [ + '/(matr|vert|ind)ix|ex$/i', + "$1ices", + ], + [ + '/(x|ch|ss|sh)$/i', + "$1es", + ], + [ + '/([^aeiouy]|qu)y$/i', + "$1ies", + ], + [ + '/([^aeiouy]|qu)ies$/i', + "$1y", + ], + [ + '/(hive)$/i', + "$1s", + ], + [ + '/(?:([^f])fe|([lr])f)$/i', + "$1$2ves", + ], + [ + '/sis$/i', + "ses", + ], + [ + '/([ti])um$/i', + "$1a", + ], + [ + '/(buffal|tomat)o$/i', + "$1oes", + ], + [ + '/(bu)s$/i', + "$1ses", + ], + [ + '/(alias|status)$/i', + "$1es", + ], + [ + '/(octop|vir)us$/i', + "$1i", + ], + [ + '/(ax|test)is$/i', + "$1es", + ], + [ + '/s$/i', + "s", + ], + [ + '/$/', + "s", + ], + ]; + + $singular = [ + [ + "/s$/", + "", + ], + [ + "/(n)ews$/", + "$1ews", + ], + [ + "/([ti])a$/", + "$1um", + ], + [ + "/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/", + "$1$2sis", + ], + [ + "/(^analy)ses$/", + "$1sis", + ], + [ + "/([^f])ves$/", + "$1fe", + ], + [ + "/(hive)s$/", + "$1", + ], + [ + "/(tive)s$/", + "$1", + ], + [ + "/([lr])ves$/", + "$1f", + ], + [ + "/([^aeiouy]|qu)ies$/", + "$1y", + ], + [ + "/(s)eries$/", + "$1eries", + ], + [ + "/(m)ovies$/", + "$1ovie", + ], + [ + "/(x|ch|ss|sh)es$/", + "$1", + ], + [ + "/([m|l])ice$/", + "$1ouse", + ], + [ + "/(bus)es$/", + "$1", + ], + [ + "/(o)es$/", + "$1", + ], + [ + "/(shoe)s$/", + "$1", + ], + [ + "/(cris|ax|test)es$/", + "$1is", + ], + [ + "/([octop|vir])i$/", + "$1us", + ], + [ + "/(alias|status)es$/", + "$1", + ], + [ + "/^(ox)en/", + "$1", + ], + [ + "/(vert|ind)ices$/", + "$1ex", + ], + [ + "/(matr)ices$/", + "$1ix", + ], + [ + "/(quiz)zes$/", + "$1", + ], + ]; + + $irregular = [ + [ + 'move', + 'moves', + ], + [ + 'sex', + 'sexes', + ], + [ + 'child', + 'children', + ], + [ + 'man', + 'men', + ], + [ + 'person', + 'people', + ], + ]; + + $uncountable = [ + 'sheep', + 'fish', + 'series', + 'species', + 'money', + 'rice', + 'information', + 'equipment', + ]; + + if ( in_array(strtolower($string), $uncountable) ) return $string; + + foreach ($irregular as $noun) { + if ( strtolower($string) == $noun[0] ) return $noun[1]; + } + foreach ($plural as $pattern) { + $str = preg_replace($pattern[0], $pattern[1], $string); + if ( $str !== null && $str != $string ) return $str; + } + } +} + +if ( !function_exists('get_month_range') ) { + /** + * 指定日期范围之内的所有月份 + * + * @param string $start_date 开始日期 + * @param string $end_date 结束日期 + * @param string $format 返回格式 + * + * @return array + */ + function get_month_range(string $start_date, string $end_date, string $format = 'Y-m') + { + $end = date($format, strtotime($end_date)); // 转换为月 + $range = []; + $i = 0; + do { + $month = date($format, strtotime($start_date . ' + ' . $i . ' month')); + $range[] = $month; + $i++; + } while ( $month < $end ); + return $range; + } +} + +if ( !function_exists('get_year_range') ) { + function get_year_range(string $start_date, string $end_date, string $format = 'Y') + { + $end = date($format, strtotime($end_date)); // 转换为月 + $range = []; + $i = 0; + do { + $month = date($format, strtotime($start_date . ' + ' . $i . ' year')); + $range[] = $month; + $i++; + } while ( $month < $end ); + return $range; + } +} + +if ( !function_exists('load_vendor') ) { + /** + * 加载composer的包 - vendor文件目录下 + */ + function load_vendor() + { + /* + |-------------------------------------------------------------------------- + | Register The Auto Loader + |-------------------------------------------------------------------------- + | + | Composer provides a convenient, automatically generated class loader for + | our application. We just need to utilize it! We'll simply require it + | into the script here so that we don't have to worry about manual + | loading any of our classes later on. It feels great to relax. + | + */ + require ROOT . '/vendor/autoload.php'; + } +} + +if ( !function_exists('data_get') ) { + /** + * Get an item from an array or object using "dot" notation. + * + * @param mixed $target + * @param string|array|int $key + * @param mixed $default + * + * @return mixed + */ + function data_get($target, $key, $default = null) + { + if ( is_null($key) ) { + return $target; + } + + $key = is_array($key) ? $key : explode('.', $key); + + while ( !is_null($segment = array_shift($key)) ) { + if ( $segment === '*' ) { + if ( $target instanceof Collection ) { + $target = $target->all(); + } elseif ( !is_array($target) ) { + return ($default); + } + + $result = []; + + foreach ($target as $item) { + $result[] = data_get($item, $key); + } + + return in_array('*', $key) ? \system\exp\Cnpscy\Library\Arr::collapse($result) : $result; + } + + if ( \system\exp\Cnpscy\Library\Arr::accessible($target) && \system\exp\Cnpscy\Library\Arr::exists($target, $segment) ) { + $target = $target[$segment]; + } elseif ( is_object($target) && isset($target->{$segment}) ) { + $target = $target->{$segment}; + } else { + return ($default); + } + } + + return $target; + } +} + +if ( !function_exists('data_set') ) { + /** + * Set an item on an array or object using dot notation. + * + * @param mixed $target + * @param string|array $key + * @param mixed $value + * @param bool $overwrite + * + * @return mixed + */ + function data_set(&$target, $key, $value, $overwrite = true) + { + $segments = is_array($key) ? $key : explode('.', $key); + + if ( ($segment = array_shift($segments)) === '*' ) { + if ( !Arr::accessible($target) ) { + $target = []; + } + + if ( $segments ) { + foreach ($target as &$inner) { + data_set($inner, $segments, $value, $overwrite); + } + } elseif ( $overwrite ) { + foreach ($target as &$inner) { + $inner = $value; + } + } + } elseif ( Arr::accessible($target) ) { + if ( $segments ) { + if ( !Arr::exists($target, $segment) ) { + $target[$segment] = []; + } + + data_set($target[$segment], $segments, $value, $overwrite); + } elseif ( $overwrite || !Arr::exists($target, $segment) ) { + $target[$segment] = $value; + } + } elseif ( is_object($target) ) { + if ( $segments ) { + if ( !isset($target->{$segment}) ) { + $target->{$segment} = []; + } + + data_set($target->{$segment}, $segments, $value, $overwrite); + } elseif ( $overwrite || !isset($target->{$segment}) ) { + $target->{$segment} = $value; + } + } else { + $target = []; + + if ( $segments ) { + data_set($target[$segment], $segments, $value, $overwrite); + } elseif ( $overwrite ) { + $target[$segment] = $value; + } + } + + return $target; + } +} + +if ( !function_exists('config') ) { + /** + * Get / set the specified configuration value. + * + * If an array is passed as the key, we will assume you want to set an array of values. + * + * @param array|string|null $key + * @param mixed $default + * + * @return mixed|\Illuminate\Config\Repository + */ + function config($key = null, $default = null) + { + if ( is_null($key) ) { + return app('config'); + } + + if ( is_array($key) ) { + return app('config')->set($key); + } + return app('config')->get($key, $default); + } +} + +if ( !function_exists('abort') ) { + /** + * Throw an HttpException with the given data. + * + * @param $code + * @param string $msg + * @param array $headers + * + * @return mixed + */ + function abort($code, $msg = '', array $headers = []) + { + return \Cnpscy\Embedded\Router::throwException($msg, $code); + exit; + //return http_response_code($code); + + try { + if ( $code instanceof Response ) { + throw new \Cnpscy\Exceptions\HttpResponseException($code); + } elseif ( $code instanceof Responsable ) { + throw new \Cnpscy\Exceptions\HttpResponseException($code->toResponse(request())); + } + if ( $code == 404 ) { + throw new \Cnpscy\Exceptions\NotFoundHttpException($msg); + } + throw new \Cnpscy\Exceptions\HttpException($code, $msg, null, $headers); + } catch (\Cnpscy\Exceptions\HttpExceptionInterface $e) { + http_response_code($e->getStatusCode()); + + \Cnpscy\Embedded\Response::new() + ->failMsg(\app\lib\code::EMAIL_NO_EXIST, $e->getMessage() ?? $msg); + } + } +} + +if ( !function_exists('http_response_code') ) { + function http_response_code($code = null) + { + if ( $code !== null ) { + switch ($code) { + case 100: + $text = 'Continue'; + break; + case 101: + $text = 'Switching Protocols'; + break; + case 200: + $text = 'OK'; + break; + case 201: + $text = 'Created'; + break; + case 202: + $text = 'Accepted'; + break; + case 203: + $text = 'Non-Authoritative Information'; + break; + case 204: + $text = 'No Content'; + break; + case 205: + $text = 'Reset Content'; + break; + case 206: + $text = 'Partial Content'; + break; + case 300: + $text = 'Multiple Choices'; + break; + case 301: + $text = 'Moved Permanently'; + break; + case 302: + $text = 'Moved Temporarily'; + break; + case 303: + $text = 'See Other'; + break; + case 304: + $text = 'Not Modified'; + break; + case 305: + $text = 'Use Proxy'; + break; + case 400: + $text = 'Bad Request'; + break; + case 401: + $text = 'Unauthorized'; + break; + case 402: + $text = 'Payment Required'; + break; + case 403: + $text = 'Forbidden'; + break; + case 404: + $text = 'Not Found'; + break; + case 405: + $text = 'Method Not Allowed'; + break; + case 406: + $text = 'Not Acceptable'; + break; + case 407: + $text = 'Proxy Authentication Required'; + break; + case 408: + $text = 'Request Time-out'; + break; + case 409: + $text = 'Conflict'; + break; + case 410: + $text = 'Gone'; + break; + case 411: + $text = 'Length Required'; + break; + case 412: + $text = 'Precondition Failed'; + break; + case 413: + $text = 'Request Entity Too Large'; + break; + case 414: + $text = 'Request-URI Too Large'; + break; + case 415: + $text = 'Unsupported Media Type'; + break; + case 500: + $text = 'Internal Server Error'; + break; + case 501: + $text = 'Not Implemented'; + break; + case 502: + $text = 'Bad Gateway'; + break; + case 503: + $text = 'Service Unavailable'; + break; + case 504: + $text = 'Gateway Time-out'; + break; + case 505: + $text = 'HTTP Version not supported'; + break; + default: + exit('Unknown http status code "' . htmlentities($code) . '"'); + break; + } + + $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'); + + header($protocol . ' ' . $code . ' ' . $text); + + $GLOBALS['http_response_code'] = $code; + } else { + + $code = (isset($GLOBALS['http_response_code']) ? $GLOBALS['http_response_code'] : 200); + } + return $code; + } +} + +if ( !function_exists('filtering_html_tags') ) { + /** + * 过滤HTML的标签,只保留文本 + * + * @param $string + * + * @return string + */ + function filtering_html_tags($string) + { + return strip_tags(htmlspecialchars_decode($string), ''); + } +} + +if ( !function_exists('hash_make') ) { + /** + * hash加密 + * + * @param string $password + * + * @return string + */ + function hash_make(string $password = '123456') : string + { + return hash_encryption($password); + } +} + +if ( !function_exists('hash_encryption') ) { + /** + * [hash_encryption] + * + * @param string $pass [description] + * + * @return string + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :hash加密 + * @englishAnnotation : + * @version :1.0 + */ + function hash_encryption($pass = '123456') : string + { + return password_hash($pass, PASSWORD_DEFAULT); + } +} + +if ( !function_exists('hash_verify') ) { + /** + * [hash_verify] + * + * @param string $pass [description] + * @param string $hash_pass [description] + * + * @return bool + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :hash解密 + * @englishAnnotation : + * + * @version :1.0 + */ + function hash_verify(string $pass, string $hash_pass) : bool + { + return password_verify($pass, $hash_pass); + } +} + +/** + * 数组按照指定字段进行分组 + * + * @param array $array + * @param string $field + * + * @return array + */ +function array_field_group(array $array = [], string $field = '') : array +{ + $new_ary = []; + foreach ($array as $k => $val) $new_ary[$val[$field]][] = $val; + return $new_ary; +} + +//计算中奖概率 +function get_random_probability($proArr) +{ + $rs = ''; //z中奖结果 + $proSum = array_sum($proArr); //概率数组的总概率精度 + //概率数组循环 + foreach ($proArr as $key => $proCur) { + $randNum = mt_rand(0, $proSum); + if ( $randNum <= $proCur ) { + $rs = $key; + break; + } else $proSum -= $proCur; + } + unset($proArr); + return $rs; +} + +/** + * 对比数组的不同: + * 第二个数组对于第一个数组的不同数据返回 + * 并不是array_diff数组的效果,找两个数组之间的差集 + * + * @param $array1 + * @param $array2 + * + * @return array + */ +function get_array_diff($array1, $array2) +{ + if ( empty($array2) ) return $array1; + $diff = []; + foreach ($array1 as $key => $val) { + if ( !isset($array2[$val]) ) $diff[$val] = $val; + } + return $diff; +} + +function list_to_tree($list, $primary_key = 'menu_id', $pid = 'parent_id', $child = '_child', $root = 0) : array +{ + $tree = []; + if ( is_array($list) ) { + $refer = []; + foreach ($list as $key => $data) $refer[$data[$primary_key]] =& $list[$key]; + foreach ($list as $key => $data) { + $parentId = $data[$pid]; + if ( $root == $parentId ) $tree[] =& $list[$key]; else { + if ( isset($refer[$parentId]) ) { + $parent =& $refer[$parentId]; + $parent[$child][] =& $list[$key]; + } + } + } + } + return $tree; +} + +/** + * [login_token] + * + * @param integer $length [description] + * + * @return string + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:登录token值 + * @englishAnnotation: + */ +function login_token($length = 60) : string +{ + //, '#', '%', '&', '+', '^', '`' --- 会影响参数获取,参数获取不全 + $chars = [ + 'a', + 'b', + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i', + 'j', + 'k', + 'l', + 'm', + 'n', + 'o', + 'p', + 'q', + 'r', + 's', + 't', + 'u', + 'v', + 'w', + 'x', + 'y', + 'z', + 'A', + 'B', + 'C', + 'D', + 'E', + 'F', + 'G', + 'H', + 'I', + 'J', + 'K', + 'L', + 'M', + 'N', + 'O', + 'P', + 'Q', + 'R', + 'S', + 'T', + 'U', + 'V', + 'W', + 'X', + 'Y', + 'Z', + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + '!', + '@', + '$', + '*', + '(', + ')', + '-', + '_', + '[', + ']', + '{', + '}', + '<', + '>', + '~', + '=', + ',', + '.', + ';', + ':', + '/', + '?', + '|', + ]; + $array = rand_array_fill($chars, $length); + $rand = ''; + for ($i = 0; $i < $length; $i++) $rand .= $chars[$array[$i]]; + + unset($length, $array, $chars); + + return $rand; +} + +function rand_array_fill(&$ary, $length) +{ + $count = count($ary); + if ( $count < $length ) { + $new_ary = []; + for ($i = 0; $i < ceil($length / $count); $i++) { + for ($j = 0; $j < count($ary); $j++) { + array_push($new_ary, $ary[$j]); + } + } + $ary = $new_ary; + return array_rand($new_ary, $length); + } else return array_rand($ary, $length); +} + +if ( !function_exists('get_client_info') ) { + /** + * 获取IP与浏览器信息、语言 + * + * @return array + */ + function get_client_info() : array + { + if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) { + $XFF = $_SERVER['HTTP_X_FORWARDED_FOR']; + $client_pos = strpos($XFF, ', '); + $client_ip = false !== $client_pos ? substr($XFF, 0, $client_pos) : $XFF; + unset($XFF, $client_pos); + } else $client_ip = $_SERVER['HTTP_CLIENT_IP'] ?? $_SERVER['REMOTE_ADDR'] ?? $_SERVER['LOCAL_ADDR'] ?? '0.0.0.0'; + $client_lang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5) : ''; + $client_agent = $_SERVER['HTTP_USER_AGENT'] ?? ''; + return [ + 'ip' => &$client_ip, + 'lang' => &$client_lang, + 'agent' => &$client_agent, + ]; + } +} + +if ( !function_exists('get_ip') ) { + function get_ip() : string + { + $data = get_client_info(); + return $data['ip'] ?? ''; + } +} + +if ( !function_exists('get_this_url') ) { + function get_this_url() + { + return 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING']; + } +} + +if ( !function_exists('get_request_url') ) { + function get_request_url() + { + return $_SERVER['REQUEST_URI']; + } +} + +/** + * [request_post 模拟post进行url请求] + * + * @Author :cnpscy——<[2278757482@qq.com]> + * @DateTime :2017-09-25 + * @chineseAnnotation:模拟post进行url请求 + * @englishAnnotation:Simulate post for URL requests + * + * @param string $url [url地址] + * @param array $post_data [提交的数据] + * @param boolean $ispost [是否是post请求] + * @param string $type [返回格式] + * + * @return array [description] + */ +function request_post(string $url = '', array $post_data = [], $ispost = true, $type = 'json') +{ + @header("Content-type: text/html; charset=utf-8"); + if ( empty($url) ) return false; + $o = ""; + if ( !empty($post_data) ) { + foreach ($post_data as $k => $v) $o .= "$k=" . urlencode($v) . "&"; + $post_data = substr($o, 0, -1); + $key = md5(base64_encode($post_data)); + } else $key = 'key'; + if ( $ispost ) { + $url = $url; + $curlPost = $post_data; + } else { + $url = $url . '?' . implode(',', $post_data); + $curlPost = 'key=' . $key; + } + $ch = curl_init();//初始化curl + curl_setopt($ch, CURLOPT_URL, $url);//抓取指定网页 + curl_setopt($ch, CURLOPT_HEADER, 0);//设置header + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 + if ( $ispost ) { + curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 + curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); + } + $data = curl_exec($ch);//运行curl + curl_close($ch); + $object = json_decode($data); + $return = object_to_array($object); + return $return; +} + +/** + * [object_to_array 对象转为数组] + * + * @Author :cnpscy——<[2278757482@qq.com]> + * @DateTime :2017-09-26 + * @chineseAnnotation:对象转为数组 + * @englishAnnotation:The object is converted to an array + * + * @param object $array [需要转换的对象] + * + * @return array [description] + */ +function object_to_array($array) +{ + if ( is_object($array) ) $array = (array)$array; + if ( is_array($array) ) { + foreach ($array as $key => $value) $array[$key] = object_to_array($value); + } + return $array; +} + +/** + * [config_array_analysis] + * + * @param [type] $data [需要解析的数组] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :配置多维数组的解析 + * @englishAnnotation : + */ +function config_array_analysis($data) +{ + $value_extra = preg_split('/[,;\r\n]+/', trim($data, ",;\r\n")); + if ( strpos($data, ':') ) { + $array = []; + foreach ($value_extra as $val) { + [ + $k, + $v, + ] = explode(':', $val); + $array[$k] = $v; + } + } else $array = $value_extra; + return $array ?? []; +} + +/** + * [is_base64] + * + * @param [type] $str [description] + * + * @return boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :检测是否为base64位编码 + * @englishAnnotation : + */ +function is_base64($str) +{ + //这里多了个纯字母和纯数字的正则判断 + if ( @preg_match('/^[0-9]*$/', $str) || @preg_match('/^[a-zA-Z]*$/', $str) ) return false; elseif ( is_utf8(base64_decode($str)) && base64_decode($str) != '' ) return true; + return false; +} + +/** + * [is_utf8] + * + * @param [type] $str [description] + * + * @return boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :判断否为UTF-8编码 + * @englishAnnotation : + */ +function is_utf8($str) +{ + $len = strlen($str); + for ($i = 0; $i < $len; $i++) { + $c = ord($str[$i]); + if ( $c > 128 ) { + if ( ($c > 247) ) return false; elseif ( $c > 239 ) $bytes = 4; + elseif ( $c > 223 ) $bytes = 3; + elseif ( $c > 191 ) $bytes = 2; + else return false; + if ( ($i + $bytes) > $len ) return false; + while ( $bytes > 1 ) { + $i++; + $b = ord($str[$i]); + if ( $b < 128 || $b > 191 ) return false; + $bytes--; + } + } + } + return true; +} + +function getMillisecond() +{ + [ + $t1, + $t2, + ] = explode(' ', microtime()); + return (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000); +} + +/** + * [check_url] + * + * @param string $_url [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :检测URL地址格式 + * @englishAnnotation : + * @version :1.0 + */ +if ( !function_exists('check_url') ) { + function check_url(string $url) : bool + { + $str = "/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/"; + if ( !preg_match($str, $url) ) return false; else return true; + } +} + +if ( !function_exists('filter_url') ) { + function filter_url(string $url) : bool + { + return filter_var($url, FILTER_VALIDATE_URL) !== false ? false : true; + } +} + +/** + * [array_ksort_to_string] + * + * @param [type] $data [description] + * + * @return string + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :数组升序转成字符串 + * @englishAnnotation : + * @version :1.0 + */ +function array_ksort_to_string($data) : string +{ + if ( is_string($data) ) return $data; + ksort($data); + $tmps = []; + foreach ($data as $k => $v) $tmps[] = $k . $v; + return implode('', $tmps); +} + +/** + * [mobile_web] + * + * @return boolean [description] + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:是否为手机端访问 + * @englishAnnotation: + */ +function mobile_web() : bool +{ + $useragent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; + $useragent_commentsblock = preg_match('|\(.*?\)|', $useragent, $matches) > 0 ? $matches[0] : ''; + + $mobile_os_list = [ + 'Google Wireless Transcoder', + 'Windows CE', + 'WindowsCE', + 'Symbian', + 'Android', + 'armv6l', + 'armv5', + 'Mobile', + 'CentOS', + 'mowser', + 'AvantGo', + 'Opera Mobi', + 'J2ME/MIDP', + 'Smartphone', + 'Go.Web', + 'Palm', + 'iPAQ', + ]; + $mobile_token_list = [ + 'Profile/MIDP', + 'Configuration/CLDC-', + '160×160', + '176×220', + '240×240', + '240×320', + '320×240', + 'UP.Browser', + 'UP.Link', + 'SymbianOS', + 'PalmOS', + 'PocketPC', + 'SonyEricsson', + 'Nokia', + 'BlackBerry', + 'Vodafone', + 'BenQ', + 'Novarra-Vision', + 'Iris', + 'NetFront', + 'HTC_', + 'Xda_', + 'SAMSUNG-SGH', + 'Wapaka', + 'DoCoMo', + 'iPhone', + 'iPod', + ]; + + $found_mobile = CheckSubstrs($mobile_os_list, $useragent_commentsblock) || CheckSubstrs($mobile_token_list, $useragent); + + if ( $found_mobile ) return true; else return false; +} + +function CheckSubstrs($substrs, $text) +{ + foreach ($substrs as $substr) { + if ( false !== strpos($text, $substr) ) return true; + } + return false; +} + +/** + * [is_app] + * + * @return boolean [description] + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:检测是否为App + * @englishAnnotation: + */ +function is_app() +{ + if ( isset ($_SERVER['HTTP_X_WAP_PROFILE']) ) return true;// 如果有HTTP_X_WAP_PROFILE则一定是移动设备 + // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 + if ( isset ($_SERVER['HTTP_VIA']) ) return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;// 找不到为flase,否则为true + // 脑残法,判断手机发送的客户端标志,兼容性有待提高 + if ( isset ($_SERVER['HTTP_USER_AGENT']) ) { + $clientkeywords = [ + 'nokia', + 'sony', + 'ericsson', + 'mot', + 'samsung', + 'htc', + 'sgh', + 'lg', + 'sharp', + 'sie-', + 'philips', + 'panasonic', + 'alcatel', + 'lenovo', + 'iphone', + 'ipod', + 'blackberry', + 'meizu', + 'android', + 'netfront', + 'symbian', + 'ucweb', + 'windowsce', + 'palm', + 'operamini', + 'operamobi', + 'openwave', + 'nexusone', + 'cldc', + 'midp', + 'wap', + 'mobile', + ]; + // 从HTTP_USER_AGENT中查找手机浏览器的关键字 + if ( preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])) ) return true; + } + // 协议法,因为有可能不准确,放到最后判断 + if ( isset ($_SERVER['HTTP_ACCEPT']) ) { + // 如果只支持wml并且不支持html那一定是移动设备 + // 如果支持wml和html但是wml在html之前则是移动设备 + if ( (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))) ) return true; + } + return false; +} + +/** + * 检测身份证号码 + * + * @param string $id + * + * @return bool + */ +function check_idcard(string $id) : bool +{ + $id = strtoupper($id); + $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/"; + $arr_split = []; + if ( !preg_match($regx, $id) ) return false; + if ( 15 == strlen($id) ) { //检查15位 + $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/"; + @preg_match($regx, $id, $arr_split); + //检查生日日期是否正确 + $dtm_birth = "19" . $arr_split[2] . '/' . $arr_split[3] . '/' . $arr_split[4]; + if ( !strtotime($dtm_birth) ) return false; else return true; + } else { //检查18位 + $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/"; + @preg_match($regx, $id, $arr_split); + $dtm_birth = $arr_split[2] . '/' . $arr_split[3] . '/' . $arr_split[4]; + if ( !strtotime($dtm_birth) ) return false;//检查生日日期是否正确 + else { + //检验18位身份证的校验码是否正确。 + //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 + $arr_int = [ + 7, + 9, + 10, + 5, + 8, + 4, + 2, + 1, + 6, + 3, + 7, + 9, + 10, + 5, + 8, + 4, + 2, + ]; + $arr_ch = [ + '1', + '0', + 'X', + '9', + '8', + '7', + '6', + '5', + '4', + '3', + '2', + ]; + $sign = 0; + for ($i = 0; $i < 17; $i++) { + $b = (int)$id{$i}; + $w = $arr_int[$i]; + $sign += $b * $w; + } + $n = $sign % 11; + $val_num = $arr_ch[$n]; + if ( $val_num != substr($id, 17, 1) ) return false; else return true;//phpfensi.com + } + } +} + +/** + * [round_down_decimal] + * + * @param float|integer $money_num [description] + * @param int|integer $length [description] + * + * @return float + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:保留几位小数,向下取,就是直接截断 3 为小数即可。 + * @englishAnnotation: + */ +function round_down_decimal(float $money_num = 0, int $length = 2) : float +{ + return substr($money_num, 0, strlen($money_num) - _getFloatLength($money_num) + $length); +} + +/** + * [_getFloatLength] + * + * @param [type] $num [description] + * + * @return int + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :计算小数部分的长度 + * @englishAnnotation : + * @version :1.0 + */ +function _getFloatLength($num) : int +{ + $count = 0; + $temp = explode('.', $num); + if ( sizeof($temp) > 1 ) { + $decimal = end($temp); + $count = strlen($decimal); + } + return $count; +} + +/** + * [set_money_conversion] + * + * @param float|integer $money [description] + * @param int|integer $length [description] + * + * @return float + * + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:金额插入数据库的时候,单位转换为“分”【具体根据$length长度而定】 + * @englishAnnotation: + * @version :1.0 + */ +function set_money_conversion(float $money = 0, int $length = 2) : float +{ + return floatval($money) * pow(10, $length); +} + +/** + * [get_money_conversion] + * + * @param float|integer $money [description] + * @param int|integer $length [description] + * + * @return [type] [description] + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :金额取出的时候,由“分”转化为“元”【具体根据$length长度而定】 + * @englishAnnotation : + */ +function get_money_conversion(float $money = 0, int $length = 2) : float +{ + return floatval($money) / pow(10, $length); +} + +/** + * [is_date] + * + * @param string $date [description] + * + * @return boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:是否为日期格式 + * @englishAnnotation: + * @version :1.0 + */ +function is_date(string $date) : bool +{ + $ret = strtotime($date); + return $ret !== false && $ret != -1; + + // if (date('Y-m-d H:i:s', strtotime($date)) === $date) return true; + // else return false; +} + +/** + * [month_list] + * + * @param int $start [description] + * @param int $end [description] + * + * @return [type] [description] + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation : + * @englishAnnotation : + */ +function month_list(int $start, int $end) : array +{ + if ( !is_numeric($start) || !is_numeric($end) || ($end <= $start) ) return ''; + $start = date('Y-m', $start); + $end = date('Y-m', $end); + //转为时间戳 + $start = strtotime($start . '-01'); + $end = strtotime($end . '-01'); + $i = 0; + $d = []; + while ( $start <= $end ) { + //这里累加每个月的的总秒数 计算公式:上一月1号的时间戳秒数减去当前月的时间戳秒数 + $d[$i] = trim(date('Y-m', $start), ' '); + $start += strtotime('+1 month', $start) - $start; + $i++; + } + return $d; +} + +function get_errors_list(array $data = []) : string +{ + $html = ''; + if ( !empty($data) ) { + foreach ($data as $k => $v) $html .= $k + 1 . '.' . $v . PHP_EOL; + } + return $html; +} + +//内存占用空间 +function memory_usage() +{ + $memory = ( !function_exists('memory_get_usage')) ? '0' : round(memory_get_usage() / 1024 / 1024, 2) . 'MB'; + return $memory; +} + +/** + * 参数说明 + * $string 欲截取的字符串 + * $sublen 截取的长度 + * $start 从第几个字节截取,默认为0 + * $code 字符编码,默认UTF-8 + */ +function cut_str(string $string, int $sublen = 100, int $start = 0, $code = 'UTF-8') +{ + if ( $code == 'UTF-8' ) { + $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; + preg_match_all($pa, $string, $t_string); + if ( count($t_string[0]) - $start > $sublen ) return join('', array_slice($t_string[0], $start, $sublen)) . "....."; + return join('', array_slice($t_string[0], $start, $sublen)); + } else { + $start = $start * 2; + $sublen = $sublen * 2; + $strlen = strlen($string); + $tmpstr = ''; + for ($i = 0; $i < $strlen; $i++) { + if ( $i >= $start && $i < ($start + $sublen) ) { + if ( ord(substr($string, $i, 1)) > 129 ) { + $tmpstr .= substr($string, $i, 2); + } else { + $tmpstr .= substr($string, $i, 1); + } + } + if ( ord(substr($string, $i, 1)) > 129 ) $i++; + } + if ( strlen($tmpstr) < $strlen ) $tmpstr .= ""; + return $tmpstr; + } +} + +/** + * [strToHex] + * + * @param [type] $string [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :字符串转16进制 + * @englishAnnotation : + * @version :1.0 + */ +function strToHex($string) +{ + $this_i = $hex = ""; + for ($i = 0; $i < strlen($string); $i++) { + $this_i = dechex(ord($string[$i])); + if ( strlen($this_i) == 0 ) $this_i = '00'; elseif ( strlen($this_i) == 1 ) $this_i = '0' . $this_i; + $hex .= $this_i; + } + $hex = strtoupper($hex); + return $hex; +} + +/** + * [hexToStr] + * + * @param [type] $hex [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :16进制转字符串 + * @englishAnnotation : + * @version :1.0 + */ +function hexToStr($hex) +{ + $sendStrArray = str_split(str_replace(' ', '', $hex), 2); // 将16进制数据转换成两个一组的数组 + $send_info = ''; + for ($j = 0; $j < count($sendStrArray); $j++) { + $send_info .= chr(hexdec($sendStrArray[$j])); + } + return $send_info; +} + +function crc16($string, $start_reverse = 0) +{ + $string = pack('H*', $string); + $crc = 0xFFFF; + for ($x = 0; $x < strlen($string); $x++) { + $crc = $crc ^ ord($string[$x]); + for ($y = 0; $y < 8; $y++) { + if ( ($crc & 0x0001) == 0x0001 ) { + $crc = (($crc >> 1) ^ 0xA001); + } else { + $crc = $crc >> 1; + } + } + } + $more_data = strlen(dechex(floor($crc % 256))) < 2 ? '0' . dechex($crc % 256) : dechex($crc % 256); + $less_data = strlen(dechex(floor($crc / 256))) < 2 ? '0' . dechex($crc / 256) : dechex($crc / 256); + return strtoupper($start_reverse == 0 ? ($more_data . $less_data) : ($less_data . $more_data)); +} + +function gencrc16($string) +{ + $crc = 0xFFFF; + for ($x = 0; $x < strlen($string); $x++) { + $crc = $crc ^ ord($string[$x]); + for ($y = 0; $y < 8; $y++) { + if ( ($crc & 0x0001) == 0x0001 ) { + $crc = (($crc >> 1) ^ 0xA001); + } else { + $crc = $crc >> 1; + } + } + } + return strtoupper($crc); +} + +/** + * @param $lat1 + * @param $lng1 + * @param $lat2 + * @param $lng2 + * + * @return int + * + * 经纬度计算两点之间的距离 + */ +function getDistance($lat1, $lng1, $lat2, $lng2) +{ + + // 将角度转为狐度 + $radLat1 = deg2rad($lat1);// deg2rad()函数将角度转换为弧度 + $radLat2 = deg2rad($lat2); + $radLng1 = deg2rad($lng1); + $radLng2 = deg2rad($lng2); + + $a = $radLat1 - $radLat2; + $b = $radLng1 - $radLng2; + + $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137; + + return $s; +} + +/** + * @param $lat1 + * @param $lon1 + * @param $lat2 + * @param $lon2 + * @param float $radius 星球半径 KM + * + * @return float + * + * 经纬度计算两点之间的距离 + */ +function distance($lat1, $lon1, $lat2, $lon2, $radius = 6378.137) +{ + $rad = floatval(M_PI / 180.0); + + $lat1 = floatval($lat1) * $rad; + $lon1 = floatval($lon1) * $rad; + $lat2 = floatval($lat2) * $rad; + $lon2 = floatval($lon2) * $rad; + + $theta = $lon2 - $lon1; + + $dist = acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($theta)); + + if ( $dist < 0 ) { + $dist += M_PI; + } + return $dist = $dist * $radius; +} + +function request_function(string $url = '', array $post_data = [], $ispost = true, $json_conversion = 1) +{ + if ( empty($url) ) return false; + $o = ""; + if ( !empty($post_data) ) { + foreach ($post_data as $k => $v) $o .= "$k=" . urlencode($v) . "&"; + $post_data = substr($o, 0, -1); + $key = md5(base64_encode($post_data)); + } else $key = 'key'; + if ( $ispost ) { + $url = $url; + $curlPost = $post_data; + } else { + $url = $url . '?' . $post_data; + $curlPost = 'key=' . $key; + } + $ch = curl_init();//初始化curl + curl_setopt($ch, CURLOPT_URL, $url);//抓取指定网页 + curl_setopt($ch, CURLOPT_HEADER, 0);//设置header + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //禁止 cURL 验证对等证书 + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //是否检测服务器的域名与证书上的是否一致 + if ( $ispost ) { + curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 + curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); + } + $data = curl_exec($ch);//运行curl + curl_close($ch); + return $json_conversion ? json_decode($data, true) : $data; +} + +/** + * [set_field_filtering] + * + * @param string $field [数据] + * @param string $field_type [数据的类型] + * @param string $default_val [默认值] + * + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:数据类型过滤 + * @englishAnnotation: + */ +function set_field_filtering($field = '', $field_type = 'string', $default_val = '') +{ + if ( isset($field) || $field == null ) return $field; + $field_type = strtolower(trim($field_type)); + if ( in_array($field_type, [ + 'str', + 'string', + 'varchar', + ]) ) return trim($field ?? $default_val); elseif ( in_array($field_type, [ + 'int', + 'intval', + 'number', + ]) ) return intval($field ?? $default_val); + elseif ( in_array($field_type, [ + 'double', + 'float', + 'floatval', + ]) ) return floatval($field ?? $default_val); +} + +function get_server_url() : string +{ + $pact = isset($_SERVER['HTTPS']) && 'off' !== $_SERVER['HTTPS'] ? 'https://' : 'http://'; + return $pact . ($_SERVER['SERVER_NAME'] ?? ''); +} + +function set_server_url($str) : string +{ + return get_server_url() . $str; + // return get_server_url() . $str; +} + +function remove_server_url(string $img) : string +{ + return str_replace(get_server_url(), "", $img); +} + +//生成随机数 +function get_rand($sum = 6) +{ + $rand = ''; + for ($i = 1; $i <= $sum; $i++) $rand .= rand(0, 9); + return $rand; +} + +/** + * 获取随机字符串 + * + * @param int $randLength 长度 + * @param int $create_time 是否加入当前时间戳 + * @param int $includenumber 是否包含数字 + * + * @return string + */ +if ( !function_exists('rand_str') ) { + function rand_str($randLength = 6, $create_time = 1, $includenumber = 1) + { + if ( $includenumber ) { + $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQEST123456789'; + } else { + $chars = 'abcdefghijklmnopqrstuvwxyz'; + } + $len = strlen($chars); + $randStr = ''; + for ($i = 0; $i < $randLength; $i++) { + $randStr .= $chars[mt_rand(0, $len - 1)]; + } + $tokenvalue = $randStr; + if ( $create_time ) { + $tokenvalue = $randStr . '-' . time(); + } + return $tokenvalue; + } +} + +/** + * 倒计时 转化成 天-时分秒 展示 + * + * @param $time + * + * @return string + */ +function countdown_conversion_time($time) +{ + if ( empty($time) ) return ''; + $day = intval($time / (60 * 60 * 24)); + $hour = intval($time / (60 * 60) - $day * 24); + $minute = intval($time / 60 - $day * 24 * 60 - $hour * 60); + $second = intval($time - $day * 24 * 60 * 60 - $hour * 60 * 60 - $minute * 60); + + $day = (intval($day) <= 0) ? '' : $day . '天 '; + if ( intval($hour) <= 9 ) $hour = '0' . $hour; + if ( intval($minute) <= 9 ) $minute = '0' . $minute; + if ( intval($second) <= 9 ) $second = '0' . $second; + return $day . $hour . '时' . $minute . '分' . $second . '秒'; +} + +function amount_conversion($money, $length = 2) +{ + return round(floatval($money), $length); +} + +/** + * 金额格式化 + * + * @param [float] $value [金额] + * @param [int] $decimals [保留的位数] + * @param [string] $dec_point [保留小数分隔符] + */ +function PriceNumberFormat($value, $decimals = 2, $dec_point = '.') +{ + return number_format($value, $decimals, $dec_point, ''); +} + +function getWxPayMoeny($moeny) +{ + return $moeny * 100;//以分为单位 +} + +/* + * 检测银行卡 + 16-19 位卡号校验位采用 Luhm 校验方法计算: + 1,将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2 + 2,将奇位乘积的个十位全部相加,再加上所有偶数位上的数字 + 3,将加法和加上校验位能被 10 整除。 +*/ +function check_bank_card($bankCardNo) +{ + $strlen = strlen($bankCardNo); + if ( $strlen < 15 || $strlen > 19 ) { + return false; + } + if ( !preg_match("/^\d{15}$/i", $bankCardNo) && !preg_match("/^\d{16}$/i", $bankCardNo) && !preg_match("/^\d{17}$/i", $bankCardNo) && !preg_match("/^\d{18}$/i", $bankCardNo) && !preg_match("/^\d{19}$/i", $bankCardNo) ) { + return false; + } + $arr_no = str_split($bankCardNo); + $last_n = $arr_no[count($arr_no) - 1]; + krsort($arr_no); + $i = 1; + $total = 0; + foreach ($arr_no as $n) { + if ( $i % 2 == 0 ) { + $ix = $n * 2; + if ( $ix >= 10 ) { + $nx = 1 + ($ix % 10); + $total += $nx; + } else { + $total += $ix; + } + } else { + $total += $n; + } + $i++; + } + $total -= $last_n; + $x = 10 - ($total % 10); + if ( $x != $last_n ) { + return false; + } + return true; +} + +/** + * 生成混合code + * + * @param integer $length [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :登录token值 + * @englishAnnotation : + */ +function make_blend_code($length = 20) : string +{ + $chars = [ + 'a', + 'b', + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i', + 'j', + 'k', + 'l', + 'm', + 'n', + 'o', + 'p', + 'q', + 'r', + 's', + 't', + 'u', + 'v', + 'w', + 'x', + 'y', + 'z', + 'A', + 'B', + 'C', + 'D', + 'E', + 'F', + 'G', + 'H', + 'I', + 'J', + 'K', + 'L', + 'M', + 'N', + 'O', + 'P', + 'Q', + 'R', + 'S', + 'T', + 'U', + 'V', + 'W', + 'X', + 'Y', + 'Z', + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + ]; + $array = array_rand($chars, $length); + $rand = ''; + for ($i = 0; $i < $length; $i++) $rand .= $chars[$array[$i]]; + return $rand; +} + +/** + * 生成UUID + * + * @param string $string + * + * @return string + */ +if ( !function_exists('make_uuid') ) { + /** + * 生成UUID + * + * @param string $string + * + * @return string + */ + function make_uuid(string $string = '') : string + { + $string = '' === $string ? uniqid(mt_rand(), true) : (0 === (int)preg_match('/[A-Z]/', $string) ? $string : mb_strtolower($string, 'UTF-8')); + $code = hash('sha1', $string . ':UUID'); + $uuid = substr($code, 0, 10); + $uuid .= substr($code, 10, 4); + $uuid .= substr($code, 16, 4); + $uuid .= substr($code, 22, 4); + $uuid .= substr($code, 28, 12); + $uuid = strtoupper($uuid); + unset($string, $code); + return $uuid; + } +} + +/** + * Generate UUID (string hash based) + * + * @param string $string + * + * @return string + */ +function get_uuid(string $string = '') : string +{ + if ( '' === $string ) { + //Create random string + $string = uniqid(microtime() . getmypid() . mt_rand(), true); + } + + $start = 0; + $codes = []; + $length = [ + 8, + 4, + 4, + 4, + 12, + ]; + $string = hash('md5', $string); + + foreach ($length as $len) { + $codes[] = substr($string, $start, $len); + $start += $len; + } + + $uuid = implode('-', $codes); + + unset($string, $start, $codes, $length, $len); + return $uuid; +} + +function getFirstChar($s) +{ + $s0 = mb_substr($s, 0, 3); //获取名字的姓 + $s = iconv('UTF-8', 'gb2312', $s0); //将UTF-8转换成GB2312编码 + if ( ord($s0) > 128 ) { //汉字开头,汉字没有以U、V开头的 + $asc = ord($s{0}) * 256 + ord($s{1}) - 65536; + if ( $asc >= -20319 and $asc <= -20284 ) return "A"; + if ( $asc >= -20283 and $asc <= -19776 ) return "B"; + if ( $asc >= -19775 and $asc <= -19219 ) return "C"; + if ( $asc >= -19218 and $asc <= -18711 ) return "D"; + if ( $asc >= -18710 and $asc <= -18527 ) return "E"; + if ( $asc >= -18526 and $asc <= -18240 ) return "F"; + if ( $asc >= -18239 and $asc <= -17760 ) return "G"; + if ( $asc >= -17759 and $asc <= -17248 ) return "H"; + if ( $asc >= -17247 and $asc <= -17418 ) return "I"; + if ( $asc >= -17417 and $asc <= -16475 ) return "J"; + if ( $asc >= -16474 and $asc <= -16213 ) return "K"; + if ( $asc >= -16212 and $asc <= -15641 ) return "L"; + if ( $asc >= -15640 and $asc <= -15166 ) return "M"; + if ( $asc >= -15165 and $asc <= -14923 ) return "N"; + if ( $asc >= -14922 and $asc <= -14915 ) return "O"; + if ( $asc >= -14914 and $asc <= -14631 ) return "P"; + if ( $asc >= -14630 and $asc <= -14150 ) return "Q"; + if ( $asc >= -14149 and $asc <= -14091 ) return "R"; + if ( $asc >= -14090 and $asc <= -13319 ) return "S"; + if ( $asc >= -13318 and $asc <= -12839 ) return "T"; + if ( $asc >= -12838 and $asc <= -12557 ) return "W"; + if ( $asc >= -12556 and $asc <= -11848 ) return "X"; + if ( $asc >= -11847 and $asc <= -11056 ) return "Y"; + if ( $asc >= -11055 and $asc <= -10247 ) return "Z"; + } elseif ( ord($s) >= 48 and ord($s) <= 57 ) { //数字开头 + switch (iconv_substr($s, 0, 1, 'utf-8')) { + case 1: + return "Y"; + case 2: + return "E"; + case 3: + return "S"; + case 4: + return "S"; + case 5: + return "W"; + case 6: + return "L"; + case 7: + return "Q"; + case 8: + return "B"; + case 9: + return "J"; + case 0: + return "L"; + } + } elseif ( ord($s) >= 65 and ord($s) <= 90 ) { //大写英文开头 + return substr($s, 0, 1); + } elseif ( ord($s) >= 97 and ord($s) <= 122 ) { //小写英文开头 + return strtoupper(substr($s, 0, 1)); + } else { + return iconv_substr($s0, 0, 1, 'utf-8'); + //中英混合的词语,不适合上面的各种情况,因此直接提取首个字符即可 + } +} + +function strip_html_tags($tags, $str) +{ + $html = []; + foreach ($tags as $tag) $html[] = "/(<(?:\/" . $tag . "|" . $tag . ")[^>]*>)/i"; + $data = preg_replace($html, '', $str); + return $data; +} + +//获取本地存储的文件 +function GetLocalFileByPath($path) +{ + return asset('uploads') . '/' . $path; +} + +//参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies +function curl_request($url, $post = '', $json = false, $header = []) +{ + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); + curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)'); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0); + curl_setopt($curl, CURLOPT_AUTOREFERER, 0); + //curl_setopt($curl, CURLOPT_REFERER, "http://XXX"); + if ( $json ) { + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post)); + curl_setopt($curl, CURLOPT_HTTPHEADER, array_merge([ + 'Content-Type: application/json; charset=utf-8', + //伪造IP + //'CLIENT-IP:85.25.105.77','X-FORWARDED-FOR:85.25.105.77',//此处可以改为任意假IP + 'Content-Length: ' . (empty($post) ? 0 : strlen(http_build_query($post))), + ], $header)); + } + curl_setopt($curl, CURLOPT_TIMEOUT, 60); + //不输出头信息 + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + $data = curl_exec($curl); + if ( curl_errno($curl) ) { + return false; + //throw new Exception("Error:".curl_error($curl)); + } + curl_close($curl); + return $data; +} + +function curlRequest($url, $params = [], $method = 'POST', $header = [], $type = 'json', $options = []) +{ + if (empty($options)) { + $options = [CURLOPT_CONNECTTIMEOUT => 30, CURLOPT_TIMEOUT => 30, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_HTTPHEADER => ['X-REQUESTED-WITH: XMLHttpRequest']]; + } + + $method = strtoupper($method); + $protocol = substr($url, 0, 5); + + if ($type == 'json' && is_array($params)) { + $query_string = json_encode($params, JSON_UNESCAPED_UNICODE); + }else{ + $query_string = is_array($params) ? http_build_query($params) : $params; + } + + $ch = curl_init(); + $defaults = []; + if ('GET' == $method) { + $geturl = $query_string ? $url . (stripos($url, '?') !== false ? '&' : '?') . $query_string : $url; + $defaults[CURLOPT_URL] = $geturl; + } else { + $defaults[CURLOPT_URL] = $url; + if ($method == 'POST') { + $defaults[CURLOPT_POST] = 1; + } else { + $defaults[CURLOPT_CUSTOMREQUEST] = $method; + } + $defaults[CURLOPT_POSTFIELDS] = $query_string; + } + + $defaults[CURLOPT_HEADER] = false; + $defaults[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.98 Safari/537.36'; + $defaults[CURLOPT_FOLLOWLOCATION] = true; + $defaults[CURLOPT_RETURNTRANSFER] = true; + $defaults[CURLOPT_CONNECTTIMEOUT] = 3; + $defaults[CURLOPT_TIMEOUT] = 3; + + // disable 100-continue + curl_setopt($ch, CURLOPT_HTTPHEADER, ['Expect:']); + + if ('https' == $protocol) { + $defaults[CURLOPT_SSL_VERIFYPEER] = false; + $defaults[CURLOPT_SSL_VERIFYHOST] = false; + } + + curl_setopt_array($ch, (array)$options + $defaults); + + curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge([ + 'Content-Type: application/json; charset=utf-8', + //伪造IP + 'CLIENT-IP:85.25.105.77', + 'X-FORWARDED-FOR:85.25.105.77',//此处可以改为任意假IP + 'Content-Length: ' . strlen($query_string), + ], $header) + ); + + $ret = curl_exec($ch); + $err = curl_error($ch); + + curl_close($ch); + + return json_decode($ret, true); +} + +//过滤值为空的数组 +function filterEmptyArr($array) +{ + + if ( !is_array($array) ) return false; + + $return_arr = []; + foreach ($array as $k => $v) { + if ( is_array($v) ) { + + foreach ($v as $k1 => $v1) { + if ( $v1 ) { + $return_arr[$k] = $v; + } + } + } elseif ( $v ) { + $return_arr[$k] = $v; + } + } + + return $return_arr; +} + +//验证数组是否为空,除了指定的key +function CheckArrIsEmpty($arr, $except = []) +{ + if ( !is_array($arr) ) return false; + foreach ($arr as $k => $value) { + if ( is_array($value) ) { + CheckArrIsEmpty($value); + } elseif ( !$value && $value != 0 ) { + if ( !in_array($k, $except) ) { + throw new Exception($k . " is empty.", 40000); + } + } + } +} + +/** + * 获取客户端浏览器信息 + * + * @param null + * + * @return string + * @author huang + */ +function get_broswer() +{ + $sys = $_SERVER['HTTP_USER_AGENT']; //获取用户代理字符串 + if ( stripos($sys, "Firefox/") > 0 ) { + preg_match("/Firefox\/([^;)]+)+/i", $sys, $b); + $exp[0] = "Firefox"; + $exp[1] = $b[1]; //获取火狐浏览器的版本号 + } elseif ( stripos($sys, "Maxthon") > 0 ) { + preg_match("/Maxthon\/([\d\.]+)/", $sys, $aoyou); + $exp[0] = "傲游"; + $exp[1] = $aoyou[1]; + } elseif ( stripos($sys, "MSIE") > 0 ) { + preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie); + $exp[0] = "IE"; + $exp[1] = $ie[1]; //获取IE的版本号 + } elseif ( stripos($sys, "OPR") > 0 ) { + preg_match("/OPR\/([\d\.]+)/", $sys, $opera); + $exp[0] = "Opera"; + $exp[1] = $opera[1]; + } elseif ( stripos($sys, "Edge") > 0 ) { + //win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配 + preg_match("/Edge\/([\d\.]+)/", $sys, $Edge); + $exp[0] = "Edge"; + $exp[1] = $Edge[1]; + } elseif ( stripos($sys, "Chrome") > 0 ) { + preg_match("/Chrome\/([\d\.]+)/", $sys, $google); + $exp[0] = "Chrome"; + $exp[1] = $google[1]; //获取google chrome的版本号 + } elseif ( stripos($sys, 'rv:') > 0 && stripos($sys, 'Gecko') > 0 ) { + preg_match("/rv:([\d\.]+)/", $sys, $IE); + $exp[0] = "IE"; + $exp[1] = $IE[1]; + } else { + $exp[0] = "未知浏览器"; + $exp[1] = ""; + } + return $exp[0] . '(' . $exp[1] . ')'; +} + +/** + * 获取客户端操作系统信息,包括win10 + * + * @param null + * + * @return string + * @author huang + */ +function get_os() +{ + + $agent = $_SERVER['HTTP_USER_AGENT']; + $os = false; + + if ( preg_match('/win/i', $agent) && strpos($agent, '95') ) { + $os = 'Windows 95'; + } elseif ( preg_match('/win 9x/i', $agent) && strpos($agent, '4.90') ) { + $os = 'Windows ME'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/98/i', $agent) ) { + $os = 'Windows 98'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 6.0/i', $agent) ) { + $os = 'Windows Vista'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent) ) { + $os = 'Windows 7'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent) ) { + $os = 'Windows 8'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent) ) { + $os = 'Windows 10';#添加win10判断 + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent) ) { + $os = 'Windows XP'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent) ) { + $os = 'Windows 2000'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt/i', $agent) ) { + $os = 'Windows NT'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/32/i', $agent) ) { + $os = 'Windows 32'; + } elseif ( preg_match('/linux/i', $agent) ) { + $os = 'Linux'; + } elseif ( preg_match('/unix/i', $agent) ) { + $os = 'Unix'; + } elseif ( preg_match('/sun/i', $agent) && preg_match('/os/i', $agent) ) { + $os = 'SunOS'; + } elseif ( preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent) ) { + $os = 'IBM OS/2'; + } elseif ( preg_match('/Mac/i', $agent) && preg_match('/PC/i', $agent) ) { + $os = 'Macintosh'; + } elseif ( preg_match('/PowerPC/i', $agent) ) { + $os = 'PowerPC'; + } elseif ( preg_match('/AIX/i', $agent) ) { + $os = 'AIX'; + } elseif ( preg_match('/HPUX/i', $agent) ) { + $os = 'HPUX'; + } elseif ( preg_match('/NetBSD/i', $agent) ) { + $os = 'NetBSD'; + } elseif ( preg_match('/BSD/i', $agent) ) { + $os = 'BSD'; + } elseif ( preg_match('/OSF1/i', $agent) ) { + $os = 'OSF1'; + } elseif ( preg_match('/IRIX/i', $agent) ) { + $os = 'IRIX'; + } elseif ( preg_match('/FreeBSD/i', $agent) ) { + $os = 'FreeBSD'; + } elseif ( preg_match('/teleport/i', $agent) ) { + $os = 'teleport'; + } elseif ( preg_match('/flashget/i', $agent) ) { + $os = 'flashget'; + } elseif ( preg_match('/webzip/i', $agent) ) { + $os = 'webzip'; + } elseif ( preg_match('/offline/i', $agent) ) { + $os = 'offline'; + } else { + $os = '未知操作系统'; + } + return $os; +} + +//生成树形结构数据 + +function listToTree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root = 0) +{ + $tree = []; + if ( is_array($list) ) { + $refer = []; + foreach ($list as $key => $data) { + $refer[$data[$pk]] = &$list[$key]; + } + + foreach ($list as $key => $data) { + // 判断是否存在parent + $parentId = $data[$pid]; + + if ( $root == $parentId ) { + $tree[$data[$pk]] = &$list[$key]; + } else { + if ( isset($refer[$parentId]) ) { + $parent = &$refer[$parentId]; + $parent[$child][$data[$pk]] = &$list[$key]; + } + } + } + } + + return $tree; +} + +//获取本地翻译语言 +function getTranslateByKey($key) +{ + //echo (__("admin.zh.index_allow_curl")); + echo __(session("admin_current_language")["shortcode"] . "." . $key); +} + +function getHomeByKey($key) +{ + echo __(session("home_current_language")["shortcode"] . "." . $key); +} + +//获取上一页的URL +function getPreUrl() +{ + return url()->previous(); +} + +function excelTime($date, $time = false) +{ + if ( function_exists('GregorianToJD') ) { + if ( is_numeric($date) ) { + $jd = GregorianToJD(1, 1, 1970); + $gregorian = JDToGregorian($jd + intval($date) - 25569); + $date = explode('/', $gregorian); + $date_str = str_pad($date [2], 4, '0', STR_PAD_LEFT) . "-" . str_pad($date [0], 2, '0', STR_PAD_LEFT) . "-" . str_pad($date [1], 2, '0', STR_PAD_LEFT) . ($time ? " 00:00:00" : ''); + return $date_str; + } + } else { + $date = $date > 25568 ? $date + 1 : 25569; + /*There was a bug if Converting date before 1-1-1970 (tstamp 0)*/ + $ofs = (70 * 365 + 17 + 2) * 86400; + $date = date("Y-m-d", ($date * 86400) - $ofs) . ($time ? " 00:00:00" : ''); + } + return $date; +} + +//判断是否是微信浏览器 +function is_weixin() +{ + + if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) { + return true; + } + return false; +} + +//是否为手机号码 +if ( !function_exists('is_mobile') ) { + function is_mobile(string $text) + { + $search = '/^0?1[3|4|5|6|7|8][0-9]\d{8}$/'; + if ( preg_match($search, $text) ) return true; else return false; + } +} + +//手机号码 中间4位加密 +if ( !function_exists('get_encryption_mobile') ) { + function get_encryption_mobile($tel) + { + $new_tel = preg_replace('/(\d{3})\d{4}(\d{4})/', '$1****$2', $tel); + return $new_tel; + } +} + +//API统一的数据返回格式 +if ( !function_exists('return_api_format') ) { + function return_api_format($return = []) + { + $return['data'] = !isset($return['data']) ? [] : $return['data']; + $return['msg'] = !isset($return['msg']) ? '获取成功' : $return['msg']; + $return['status'] = !isset($return['status']) ? (empty($return['data']) ? 40000 : 200) : $return['status']; + return response()->json($return); + } +} + +if ( !function_exists('del_dir_files') ) { + /** + * 删除文件夹与下方的所有文件 + * + * @param $dirName 文件夹名称 + * @param int $delete_dir 是否删除文件夹【1.删除;0.不删除】 + */ + function del_dir_files($dirName, $delete_dir = 1) + { + if ( $handle = @opendir($dirName) ) { + while ( false !== ($item = @readdir($handle)) ) { + if ( $item != '.' && $item != '..' ) { + if ( is_dir($dirName . '/' . $item) ) del_dir_files($dirName . '/' . $item); else @unlink($dirName . '/' . $item); + } + } + @closedir($handle); + } + if ( $delete_dir == 1 ) @rmdir($dirName); + } +} + +if ( !function_exists('get_file_filtering') ) { + /** + * 获取指定格式的文件 + * + * @param array $array + * @param array $format + * + * @return array + */ + function get_file_filtering($array = [], $format = []) + { + $return = []; + if ( empty($array) || empty($format) ) return $return; + foreach ($array as $key => $value) { + $arr = pathinfo($value); + if ( !empty($arr['extension']) && in_array($arr['extension'], $format) ) $return[] = $value; + } + return $return; + } +} + +if ( !function_exists('write_lock_file') ) { + /** + * 写入锁文件 + * + * @param $path + */ + function write_lock_file($path, $content = '') + { + $lock_file = fopen($path . '/lock', 'w+');//创建 锁文件 + fwrite($lock_file, empty($content) ? date('Y-m-d H:i:s') : $content);//写入 + } +} + +if ( !function_exists('del_dir_files') ) { + /** + * 删除文件夹与下方的所有文件 + * + * @param $dirName 文件夹名称 + * @param int $delete_dir 是否删除文件夹【1.删除;0.不删除】 + */ + function del_dir_files($dirName, $delete_dir = 1) + { + if ( $handle = @opendir($dirName) ) { + while ( false !== ($item = @readdir($handle)) ) { + if ( $item != '.' && $item != '..' ) { + if ( is_dir($dirName . '/' . $item) ) del_dir_files($dirName . '/' . $item); else @unlink($dirName . '/' . $item); + } + } + @closedir($handle); + } + if ( $delete_dir == 1 ) @rmdir($dirName); + } +} + +if ( !function_exists('get_client_info') ) { + /** + * 获取IP与浏览器信息、语言 + */ + function get_client_info() : array + { + if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) { + $XFF = $_SERVER['HTTP_X_FORWARDED_FOR']; + $client_pos = strpos($XFF, ', '); + $client_ip = false !== $client_pos ? substr($XFF, 0, $client_pos) : $XFF; + unset($XFF, $client_pos); + } else $client_ip = $_SERVER['HTTP_CLIENT_IP'] ?? $_SERVER['REMOTE_ADDR'] ?? $_SERVER['LOCAL_ADDR'] ?? '0.0.0.0'; + $client_lang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5) : ''; + $client_agent = $_SERVER['HTTP_USER_AGENT'] ?? ''; + return [ + 'ip' => &$client_ip, + 'lang' => &$client_lang, + 'agent' => &$client_agent, + ]; + } +} + +if ( !function_exists('get_ip') ) { + function get_ip() : string + { + $data = get_client_info(); + return empty($data['ip']) ? '' : $data['ip']; + } +} + +if ( !function_exists('get_month_days') ) { + /** + * 获取某月份的所有日期列表 + * + * @param string $time + * @param string $format + * + * @return array + */ + function get_month_days($time = '', $format = 'Y-m-d') + { + $time = $time != '' ? $time : time(); + //获取当前周几 + $week = date('d', $time); + $date = []; + for ($i = 1; $i <= date('t', $time); $i++) { + $date[$i] = date($format, strtotime('+' . $i - $week . ' days', $time)); + } + return $date; + } +} + +if ( !function_exists('get_month_range') ) { + /** + * 指定日期范围之内的所有月份 + * + * @param string $start_date 开始日期 + * @param string $end_date 结束日期 + * @param string $format 返回格式 + * + * @return array + */ + function get_month_range(string $start_date, string $end_date, string $format = 'Y-m') + { + $end = date($format, strtotime($end_date)); // 转换为月 + $range = []; + $i = 0; + do { + $month = date($format, strtotime($start_date . ' + ' . $i . ' month')); + $range[] = $month; + $i++; + } while ( $month < $end ); + return $range; + } +} + +if ( !function_exists('get_days_range') ) { + /** + * 指定日期范围之内的所有天 + * + * @param string $start_date 开始日期 + * @param string $end_date 结束日期 + * @param string $format 返回格式 + * + * @return array + */ + function get_days_range(string $start_date, string $end_date, string $format = 'Y-m-d') + { + $end = date($format, strtotime($end_date)); // 转换为月 + $range = []; + $i = 0; + do { + $day = date($format, strtotime($start_date . ' + ' . $i . ' day')); + $range[] = $day; + $i++; + } while ( $day < $end ); + return $range; + } +} + +if ( !function_exists('get_years_range') ) { + /** + * 指定日期范围之内的所有年份 + * + * @param string $start_date 开始日期 + * @param string $end_date 结束日期 + * @param string $format 返回格式 + * + * @return array + */ + function get_years_range(string $start_date, string $end_date, string $format = 'Y') + { + $start_date = date('Y-m-d', strtotime($start_date . '-01-01')); + $end = date($format, strtotime($end_date)); // 转换为年 + $range = []; + $i = 0; + do { + $year = date($format, strtotime($start_date . ' + ' . $i . ' year')); + $range[] = $year; + $i++; + } while ( $year < $end ); + return $range; + } +} + +if ( !function_exists('set_month_format') ) { + /** + * 设置 月份 的格式统一 + * + * @param $month + * + * @return string + */ + function set_month_format($month) + { + return (string)(strlen($month) == 1 ? '0' . $month : $month); + } +} + +if ( !function_exists('get_mail_template_message') ) { + /** + * 获取模板消息内容 + * + * @param $content + * @param string $change 也可以是数组 + * @param string $code 对应数组 + * + * @return mixed + */ + function get_mail_template_message($content, $change = '', $code = '{$code}') + { + return str_replace($code, $change, $content); + } +} + +/** + * 获取当前host域名 + * + * @return string + */ +function get_host() +{ + if ( isset($_SERVER['HTTP_HOST']) ) { + $scheme = empty($_SERVER['HTTPS']) ? 'http://' : 'https://'; + $SCRIPT_NAME = $_SERVER['SCRIPT_NAME']; + $arr = explode('/', $SCRIPT_NAME); + $url = $scheme . $_SERVER['HTTP_HOST'] . substr($SCRIPT_NAME, 0, -strlen($arr[count($arr) - 2])) . '/'; + return $url; + //$scheme = empty($_SERVER['HTTPS']) ? 'http://' : 'https://'; + //$SCRIPT_NAME = rtrim($_SERVER['REQUEST_URI'], '/'); + //$arr = explode('/', $SCRIPT_NAME); + //$url = $scheme . $_SERVER['HTTP_HOST'] . substr($SCRIPT_NAME, 0, -strlen($arr[count($arr) - 2])); + //return $url; + } else { + if ( empty($baseUrl) ) { + $request = \think\facade\Request::instance(); + $subDir = str_replace('\\', '/', dirname($request->server('PHP_SELF'))); + $baseUrl = $request->scheme() . '://' . $request->host() . $subDir . ($subDir === '/' ? '' : '/'); + } + + return trim($baseUrl, '/'); + } +} + +/** + * [is_email] + * + * @param string $email [description] + * + * @return boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:检测邮箱格式 + * @englishAnnotation: + * @version :1.0 + */ +function is_email(string $email) : bool +{ + // '/^[a-z0-9]+([._-][a-z0-9]+)*@([0-9a-z]+\.[a-z]{2,14}(\.[a-z]{2})?)$/i'; + $checkmail = "/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/";//定义正则表达式 + if ( preg_match($checkmail, $email) ) return true; else return false; +} + +/** + * [is_mobile] + * + * @param [type] $text [description] + * + * @return bool|boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :检测手机号格式是否正确 + * @englishAnnotation : + * @version :1.0 + */ +function is_mobile(string $text) : bool +{ + $search = '/^0?1[3|4|5|6|7|8][0-9]\d{8}$/'; + if ( preg_match($search, $text) ) return true; else return false; +} + +/** + * [check_url] + * + * @param string $_url [description] + * + * @return bool + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:检测URL地址格式 + * @englishAnnotation: + * @version :1.0 + */ +function check_url(string $_url) : bool +{ + $str = "/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/"; + if ( !preg_match($str, $_url) ) return false; else return true; +} + +/** + * [roundDownDecimal] + * + * @param float|integer $money_num [description] + * @param int|integer $length [description] + * + * @return float + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:保留几位小数,向下取,就是直接截断 3 为小数即可。 + * @englishAnnotation: + */ +function roundDownDecimal(float $money_num = 0, int $length = 2) : float +{ + return substr($money_num, 0, strlen($money_num) - _getFloatLength($money_num) + $length); +} + +if ( !function_exists('writeLog') ) { + function writeLog($msg, $file_name, $path = __DIR__) + { + /** + * 第一部分路径 + */ + $dirPath = $path . '/logs'; + if ( !is_dir($dirPath) ) @mkdir($dirPath); + $dirPath .= '/' . date('Y'); + if ( !is_dir($dirPath) ) @mkdir($dirPath); + $dirPath .= '/' . date('n'); + if ( !is_dir($dirPath) ) @mkdir($dirPath); + /** + * 第二部分 + */ + file_put_contents($dirPath . '/' . (empty($file_name) ? date('j') : $file_name) . '.txt', "\n\n" . date('Y-m-d H:i:s') . "\n", FILE_APPEND); + file_put_contents($dirPath . '/' . (empty($file_name) ? date('j') : $file_name) . '.txt', print_r($msg, true), FILE_APPEND); + } +} + +/** + * 通过省市区的名称获取对应的经纬度 + * + * @param string $area_name + * + * @return string + */ +function getNameAcquisitionLongitudeAndLatitude($area_name = '') +{ + if ( empty($area_name) ) return ''; + $res = request_function('https://restapi.amap.com/v3/geocode/geo', [ + 'address' => $area_name, + 'key' => MyC('common_lbsamap_apikey'), + 'output' => 'JSON', + ], false); + if ( $res['status'] == 1 ) return empty($res['geocodes']) ? '' : $res['geocodes'][0]['location']; + return ''; +} + +/** + * 倒计时 转化成 天-时分秒 展示 + * + * @param $time + * + * @return string + */ +function countdownConversionTime($time) +{ + if ( empty($time) ) return ''; + $day = intval($time / (60 * 60 * 24)); + $hour = intval($time / (60 * 60) - $day * 24); + $minute = intval($time / 60 - $day * 24 * 60 - $hour * 60); + $second = intval($time - $day * 24 * 60 * 60 - $hour * 60 * 60 - $minute * 60); + + $day = (intval($day) <= 0) ? '' : $day . '天 '; + if ( intval($hour) <= 9 ) $hour = '0' . $hour; + if ( intval($minute) <= 9 ) $minute = '0' . $minute; + if ( intval($second) <= 9 ) $second = '0' . $second; + return $day . $hour . ':' . $minute . ':' . $second . ''; +} + +if ( !function_exists('returnLastPage') ) { + function returnLastPage() + { + echo ''; + } +} + +if ( !function_exists('array_key_first') ) { + /** + * Gets the first key of an array + * + * @param array $array + * + * @return mixed + */ + function array_key_first(array $array) + { + if ( count($array) ) { + reset($array); + return key($array); + } + return null; + } +} + +function hidden_mobile(string $text) : string +{ + $start = substr($text, 0, 3); + $end = substr($text, -4, 4); + return $start . ' **** ' . $end; +} + +function msubstr($str, $start = 0, $length, $charset = "utf-8", $suffix = true) +{ + if ( function_exists("mb_substr") ) { + if ( $suffix ) return mb_substr($str, $start, $length, $charset) . "..."; else + return mb_substr($str, $start, $length, $charset); + } elseif ( function_exists('iconv_substr') ) { + if ( $suffix ) return iconv_substr($str, $start, $length, $charset) . "..."; else + return iconv_substr($str, $start, $length, $charset); + } + $re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef] +[x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"; + $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/"; + $re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/"; + $re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"; + preg_match_all($re[$charset], $str, $match); + $slice = join("", array_slice($match[0], $start, $length)); + if ( $suffix ) return $slice . "…"; + return $slice; +} + +// function hidden_bank(string $text, $start = 1): string +// { +// $start = substr($text, 0, 6); +// $end = substr($text, -4, 4); +// return $start . ($start == 1 ? ' ' : '') . '········' . ($start == 1 ? ' ' : '') . $end; +// return $start . ($start == 1 ? ' ' : '') . '**** ****' . ($start == 1 ? ' ' : '') . $end; +// } + +function hidden_bank(string $text) : string +{ + $start = substr($text, 0, 4); + $end = substr($text, -4, 4); + return $start . ' **** **** ' . $end; +} + +function get_month_first_day() +{ + return date('Y-m-01', strtotime(date("Y-m-d", time()))); +} + +function get_month_last_day() +{ + $date = date('Y-m-01', strtotime(date("Y-m-d", time()))); + return date('Y-m-d', strtotime("$date +1 month -1 day")); +} + +/** + * [Xml_Array xml转数组] + * + * @param [xml] $xmlstring [xml数据] + * + * @return [array] [array数组] + */ +function Xml_Array($xmlstring) +{ + return json_decode(json_encode((array)simplexml_load_string($xmlstring)), true); +} + +/** + * [IsMobile 是否是手机访问] + * + * @return [boolean] [手机访问true, 则false] + */ +function IsMobile() +{ + /* 如果有HTTP_X_WAP_PROFILE则一定是移动设备 */ + if ( isset($_SERVER['HTTP_X_WAP_PROFILE']) ) return true; + + /* 此条摘自TPM智能切换模板引擎,适合TPM开发 */ + if ( isset($_SERVER['HTTP_CLIENT']) && 'PhoneClient' == $_SERVER['HTTP_CLIENT'] ) return true; + + /* 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 */ + if ( isset($_SERVER['HTTP_VIA']) && stristr($_SERVER['HTTP_VIA'], 'wap') !== false ) return true; + + /* 判断手机发送的客户端标志,兼容性有待提高 */ + if ( isset($_SERVER['HTTP_USER_AGENT']) ) { + $clientkeywords = [ + 'nokia', + 'sony', + 'ericsson', + 'mot', + 'samsung', + 'htc', + 'sgh', + 'lg', + 'sharp', + 'sie-', + 'philips', + 'panasonic', + 'alcatel', + 'lenovo', + 'iphone', + 'ipad', + 'ipod', + 'blackberry', + 'meizu', + 'android', + 'netfront', + 'symbian', + 'ucweb', + 'windowsce', + 'palm', + 'operamini', + 'operamobi', + 'openwave', + 'nexusone', + 'cldc', + 'midp', + 'wap', + 'mobile', + ]; + /* 从HTTP_USER_AGENT中查找手机浏览器的关键字 */ + if ( preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])) ) { + return true; + } + } + + /* 协议法,因为有可能不准确,放到最后判断 */ + if ( isset($_SERVER['HTTP_ACCEPT']) ) { + /* 如果只支持wml并且不支持html那一定是移动设备 */ + /* 如果支持wml和html但是wml在html之前则是移动设备 */ + if ( (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))) ) return true; + } + return false; +} + +/** + * [EmptyDir 清空目录下所有文件] + * + * @param [string] $dir_path [目录地址] + * + * @return [boolean] [成功true, 失败false] + */ +function EmptyDir($dir_path) +{ + if ( is_dir($dir_path) ) { + $dn = @opendir($dir_path); + if ( $dn !== false ) { + while ( false !== ($file = readdir($dn)) ) { + if ( $file != '.' && $file != '..' ) { + if ( !unlink($dir_path . $file) ) { + return false; + } + } + } + } else { + return false; + } + } + return true; +} + +/** + * [FileSizeByteToUnit 文件大小转常用单位] + * + * @param [int] $bit [字节数] + * + * @return string + */ +function FileSizeByteToUnit($bit) : string +{ + //单位每增大1024,则单位数组向后移动一位表示相应的单位 + $type = [ + 'Bytes', + 'KB', + 'MB', + 'GB', + 'TB', + ]; + for ($i = 0; $bit >= 1024; $i++) { + $bit /= 1024; + } + + //floor是取整函数,为了防止出现一串的小数,这里取了两位小数 + return (floor($bit * 100) / 100) . $type[$i]; +} + +/** + * json带格式输出 + * + * @param [array] $data [数据] + * @param [string] $indent [缩进字符,默认4个空格 ] + * + * @return string + */ +function JsonFormat($data, $indent = null) : string +{ + // json encode + $data = json_encode($data, JSON_UNESCAPED_UNICODE); + + // 缩进处理 + $ret = ''; + $pos = 0; + $length = strlen($data); + $indent = isset($indent) ? $indent : ' '; + $newline = "\n"; + $prevchar = ''; + $outofquotes = true; + + for ($i = 0; $i <= $length; $i++) { + $char = substr($data, $i, 1); + + if ( $char == '"' && $prevchar != '\\' ) { + $outofquotes = !$outofquotes; + } elseif ( ($char == '}' || $char == ']') && $outofquotes ) { + $ret .= $newline; + $pos--; + for ($j = 0; $j < $pos; $j++) { + $ret .= $indent; + } + } + + $ret .= $char; + + if ( ($char == ',' || $char == '{' || $char == '[') && $outofquotes ) { + $ret .= $newline; + if ( $char == '{' || $char == '[' ) { + $pos++; + } + + for ($j = 0; $j < $pos; $j++) { + $ret .= $indent; + } + } + + $prevchar = $char; + } + + return $ret; +} + +/** + * 根据身份证号码得到年龄 + * + * @param $id + * + * @return float|int|string + */ +function getAgeByID(string $id) +{ //过了这年的生日才算多了1周岁 + + if ( empty($id) ) return ''; + + $date = strtotime(substr($id, 6, 8)); //获得出生年月日的时间戳 + + $today = strtotime('today'); //获得今日的时间戳 + + $diff = floor(($today - $date) / 86400 / 365); //得到两个日期相差的大体年数 + + //strtotime加上这个年数后得到那日的时间戳后与今日的时间戳相比 + + $age = strtotime(substr($id, 6, 8) . '+' . $diff . 'years') > $today ? ($diff + 1) : $diff; + + return $age; +} + +/** + * [api_url] + * + * @return [string] [URL] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :API请求地址 + * @englishAnnotation :API request URL address + */ +function web_url() +{ + return http_type() . $_SERVER['HTTP_HOST']; +} + +/** + * [http_type] + * + * @return [string] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :获取http类型:http\https + * @englishAnnotation :Get the HTTP type: http\https + */ +function http_type() : string +{ + return $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://'; +} + +/** + * 格式化字节大小 + * + * @param number $size 字节数 + * @param string $delimiter 数字和单位分隔符 + * + * @return string 格式化后的带单位的大小 + */ +function format_bytes($size, $delimiter = '') +{ + $units = [ + 'B', + 'KB', + 'MB', + 'GB', + 'TB', + 'PB', + ]; + for ($i = 0; $size >= 1024 && $i < 5; $i++) { + $size /= 1024; + } + return $size . $delimiter . $units[$i]; +} + +/** + * CURL发送Request请求,含POST和REQUEST + * + * @param string $url 请求的链接 + * @param mixed $params 传递的参数 + * @param string $method 请求的方法 + * @param mixed $options CURL的参数 + * + * @return array + */ +function send_request($url, $params = [], $method = 'POST', $type = 'json', $options = []) +{ + if ( empty($options) ) { + $options = [ + CURLOPT_CONNECTTIMEOUT => 30, + CURLOPT_TIMEOUT => 30, + CURLOPT_SSL_VERIFYPEER => false, + CURLOPT_HTTPHEADER => ['X-REQUESTED-WITH: XMLHttpRequest'], + ]; + } + + $params = array_merge([ + 'origin_host' => get_host(), + 'origin_url' => $_SERVER['REQUEST_URI'], + 'origin_ip' => get_ip(), + ], $params); + $method = strtoupper($method); + $protocol = substr($url, 0, 5); + if ( $type == 'json' && is_array($params) ) { + $params = json_encode($params, JSON_UNESCAPED_UNICODE); + } + $query_string = is_array($params) ? http_build_query($params) : $params; + + $ch = curl_init(); + $defaults = []; + if ( 'GET' == $method ) { + $geturl = $query_string ? $url . (stripos($url, '?') !== false ? '&' : '?') . $query_string : $url; + $defaults[CURLOPT_URL] = $geturl; + } else { + $defaults[CURLOPT_URL] = $url; + if ( $method == 'POST' ) { + $defaults[CURLOPT_POST] = 1; + } else { + $defaults[CURLOPT_CUSTOMREQUEST] = $method; + } + $defaults[CURLOPT_POSTFIELDS] = $query_string; + } + + $defaults[CURLOPT_HEADER] = false; + $defaults[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.98 Safari/537.36'; + $defaults[CURLOPT_FOLLOWLOCATION] = true; + $defaults[CURLOPT_RETURNTRANSFER] = true; + $defaults[CURLOPT_CONNECTTIMEOUT] = 3; + $defaults[CURLOPT_TIMEOUT] = 3; + + // disable 100-continue + curl_setopt($ch, CURLOPT_HTTPHEADER, ['Expect:']); + + if ( 'https' == $protocol ) { + $defaults[CURLOPT_SSL_VERIFYPEER] = false; + $defaults[CURLOPT_SSL_VERIFYHOST] = false; + } + + curl_setopt_array($ch, (array)$options + $defaults); + + $ret = curl_exec($ch); + $err = curl_error($ch); + + if ( false === $ret || !empty($err) ) { + $errno = curl_errno($ch); + $info = curl_getinfo($ch); + curl_close($ch); + return [ + 'ret' => false, + 'errno' => $errno, + 'msg' => $err, + 'info' => $info, + ]; + } + curl_close($ch); + + return json_decode($ret, true); +} + +//随机验证码 +if ( !function_exists('random_verification_code') ) { + function random_verification_code($length = 6) + { + $code = ''; + for ($i = 0; $i < $length; $i++) $code .= mt_rand(0, 9); + return $code; + } +} + +if ( !function_exists('get_dir_files') ) { + + //获取某目录下所有子文件和子目录,可以过滤 + function get_dir_files($path, $filter = [], $onlydir = false) + { + if ( !is_dir($path) ) { + return false; + } + //scandir方法 + $arr = []; + $data = scandir($path); + foreach ($data as $value) { + if ( $value != '.' && $value != '..' && $value != ".DS_Store" && !in_array($value, $filter) ) { + if ( $onlydir ) { + if ( is_dir($path . "/" . $value) ) { + $arr[] = $value; + } else { + continue; + } + } else { + $arr[] = $value; + } + } + } + return $arr; + } + + // 列出指定目录下所有目录和文件 + function get_dir_files1($dir) + { + $arr = []; + if ( is_dir($dir) ) {//如果是目录,则进行下一步操作 + $d = opendir($dir);//打开目录 + if ( $d ) {//目录打开正常 + while ( ($file = readdir($d)) !== false ) {//循环读出目录下的文件,直到读不到为止 + if ( $file != '.' && $file != '..' ) {//排除一个点和两个点 + if ( is_dir($file) ) {//如果当前是目录 + $arr[$file] = get_dir_files($file);//进一步获取该目录里的文件 + } else { + $arr[] = $file;//记录文件名 + } + } + } + } + closedir($d);//关闭句柄 + } + return $arr; + } +} + +if ( !function_exists('write_lock_file') ) { + /** + * 写入锁文件 + * + * @param $path + * @param string $content + */ + function write_lock_file($path, $content = '') + { + $lock_file = fopen($path . '/lock', 'w+');//创建 锁文件 + fwrite($lock_file, empty($content) ? date('Y-m-d H:i:s') : $content);//写入 + } +} + +if ( !function_exists('put_file_to_zip') ) { + /** + * 把指定文件目录下的所有文件,打包压缩至压缩包内 + * + * @param string $path + * @param $zip + * @param string $old_filename + * @param array $limit_dir 限制压缩的文件目录 + */ + function put_file_to_zip(string $path, $zip, string $old_filename, $limit_dir = []) + { + header('content-type:text/html;charset=utf-8'); + $handler = opendir($path); //打开当前文件夹由$path指定。 + while ( ($filename = readdir($handler)) !== false ) { + if ( $filename != '.' && $filename != '..' ) {//文件夹文件名字为'.'和‘..’,不要对他们进行操作 + if ( is_dir($path . '/' . $filename) ) {// 如果读取的某个对象是文件夹,则递归 + if ( !empty($limit_dir) && !in_array($filename, $limit_dir) ) continue; + $old_filename = (empty($old_filename) ? '' : ($old_filename . '/')); + $zip->addEmptyDir($old_filename . $filename); + put_file_to_zip($path . '/' . $filename, $zip, $old_filename . $filename); + } else { //将文件加入zip对象 + $zip->addFile($path . '/' . $filename, (empty($old_filename) ? '' : ($old_filename . '/')) . $filename); + } + } + } + @closedir($path); + } +} + +if ( !function_exists('check_http_file_exists') ) { + //判断远程文件是否存在 + function check_http_file_exists($url) + { + $curl = curl_init($url); + // 不取回数据 + curl_setopt($curl, CURLOPT_NOBODY, true); + // 发送请求 + $result = curl_exec($curl); + $found = false; + // 如果请求没有发送失败 + if ( $result !== false ) { + $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + if ( $statusCode == 200 ) $found = true; + } + curl_close($curl); + return $found; + } +} + +if ( !function_exists('check_dir_exits') ) { + /** + * 检测目录是否存在,不存在则创建目录 + * + * @param string $dir_path + */ + function check_dir_exits(string $dir_path) : void + { + if ( !is_dir($dir_path) ) @mkdir($dir_path, 0755, true); + } +} + +function get_url() : string +{ + $scheme = empty($_SERVER['HTTPS']) ? 'http://' : 'https://'; + $url = $scheme . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . '/' . $_SERVER['REQUEST_URI']; + return $url; +} + +//把时间戳转换为几分钟或几小时前或几天前 +function formatting_timestamp($time) : string +{ + $time = (int)substr($time, 0, 10); + $int = time() - $time; + $str = ''; + if ( $int <= 30 ) { + $str = sprintf('刚刚', $int); + } elseif ( $int < 60 ) { + $str = sprintf('%d秒前', $int); + } elseif ( $int < 3600 ) { + $str = sprintf('%d分钟前', floor($int / 60)); + } elseif ( $int < 86400 ) { + $str = sprintf('%d小时前', floor($int / 3600)); + } elseif ( $int < 2592000 ) { + $str = sprintf('%d天前', floor($int / 86400)); + } elseif ( date('Y', $time) == date('Y') ) { + $str = date('m-d H:i:s', $time); + } else { + $str = date('Y-m-d H:i:s', $time); + } + return $str; +} + +// 统计字数 +function comment_count_word($str) +{ + //$str =characet($str); + //判断是否存在替换字符 + $is_tihuan_count = substr_count($str, "龘"); + try { + //先将回车换行符做特殊处理 + $str = preg_replace('/(\r\n+|\s+| +)/', "龘", $str); + //处理英文字符数字,连续字母、数字、英文符号视为一个单词 + $str = preg_replace('/[a-z_A-Z0-9-\.!@#\$%\\\^&\*\)\(\+=\{\}\[\]\/",\'<>~`\?:;|]/', "m", $str); + //合并字符m,连续字母、数字、英文符号视为一个单词 + $str = preg_replace('/m+/', "*", $str); + //去掉回车换行符 + $str = preg_replace('/龘+/', "", $str); + //返回字数 + return mb_strlen($str) + $is_tihuan_count; + } catch (Exception $e) { + return 0; + } +} + +// 二分查找法 +function Binary_Search() +{ + //function binary_search($nums, $num) + //{ + // return binary_search_internal($nums, $num, 0, count($nums) - 1); + //} + // + //function binary_search_internal($nums, $num, $low, $high) + //{ + // if ($low > $high) { + // return -1; + // } + // + // $mid = floor(($low + $high) / 2); + // if ($num > $nums[$mid]) { + // return binary_search_internal($nums, $num, $mid + 1, $high); + // } elseif ($num < $nums[$mid]) { + // return binary_search_internal($nums, $num, $low, $mid - 1); + // } else { + // return $mid; + // } + //} + // + //$nums = [1, 2, 3, 4, 5, 6]; + //$index = binary_search($nums, 5); + //print $index; +} + +function exist_http($str) : bool +{ + return preg_match('/(http:\/\/)|(https:\/\/)/i', $str); +} + +/** + * 生成订单号 + * + * @return string + */ +function order_no() +{ + return date('Ymd') . substr(implode(null, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..a0a2a8a --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + 'throttle:api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..704089a --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,21 @@ +expectsJson()) { + return route('login'); + } + } +} diff --git a/app/Http/Middleware/ConvertEmptyStringsToNull.php b/app/Http/Middleware/ConvertEmptyStringsToNull.php new file mode 100644 index 0000000..386c627 --- /dev/null +++ b/app/Http/Middleware/ConvertEmptyStringsToNull.php @@ -0,0 +1,32 @@ +getMethod()); + if ( + $method == 'POST' + || + $method == 'PUT' + ){ + // 希望在POST、PUT时,新增与更新数据时,移除[空字符串自动转换为null的中间件]效果。 + }else{ + (new \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull)->handle($request, $next); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..033136a --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..5a50e7b --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,18 @@ +allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..14befce --- /dev/null +++ b/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,23 @@ +setUserAgent('Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36 Edg/87.0.664.75'); + + $content = $http->fetch(); + var_dump($content); + var_dump($http->getHttpCode()); + var_dump($http->getLastError()); + } + + //Pre-defined content types + const CONTENT_TYPE_XML = 'application/xml; charset=UTF-8'; + const CONTENT_TYPE_JSON = 'application/json; charset=UTF-8'; + const CONTENT_TYPE_FORM_DATA = 'multipart/form-data'; + const CONTENT_TYPE_URL_ENCODED = 'application/x-www-form-urlencoded'; + + //Job info + public $data = []; + public $file = []; + public $header = []; + + public $url = ''; + public $etag = ''; + public $cookie = ''; + public $referer = ''; + public $modified = ''; + public $curl_error = ''; + + public $proxy = ''; + public $proxy_passwd = ''; + + public $max_follow = 0; + public $response_code = 0; + + public $http_ver = 'HTTP/2'; //HTTP Version + public $method = 'GET'; //Request method + public $user_agent = 'Mozilla/5.0 (Compatible; NervSys/111)'; //User Agent string + public $connection = 'keep-alive'; //Connection type + + public $content_type = self::CONTENT_TYPE_URL_ENCODED; //Content type + public $accept_charset = 'UTF-8,*;q=0'; //Accept charset + public $accept_encoding = 'gzip,deflate,identity,*;q=0'; //Accept encoding + public $accept_language = 'en-US,en,zh-CN,zh,*;q=0'; //Accept language + + public $accept_type = 'application/json;q=0.9,application/xml;q=0.8,text/plain;q=0.7,text/html;q=0.6,*/*;q=0.5'; //Accept types + + /** + * libHttp constructor. + * + * @param string $url + */ + public function __construct(string $url = '') + { + $this->url = &$url; + unset($url); + } + + /** + * Add request data + * + * @param array ...$data + * + * @return $this + */ + public function addData(array ...$data): self + { + foreach ($data as $item) { + $this->data += $item; + } + + unset($data, $item); + return $this; + } + + /** + * Add upload file + * + * @param array ...$file + * + * @return $this + */ + public function addFile(array ...$file): self + { + foreach ($file as $key => $val) { + if (file_exists($val)) { + $this->file[$key] = new \CURLFile($val); + } + } + + unset($file, $key, $val); + return $this; + } + + /** + * Add header data + * + * @param array $header + * + * @return $this + */ + public function addHeader(array $header): self + { + $this->header += $header; + + unset($header); + return $this; + } + + /** + * Add cookie data + * + * @param array $cookie + * + * @return $this + */ + public function addCookie(array $cookie): self + { + foreach ($cookie as $key => $val) { + if ('' !== $this->cookie) { + $this->cookie .= '; '; + } + + $this->cookie .= $key . '=' . $val; + } + + unset($cookie, $key, $val); + return $this; + } + + /** + * Set method + * + * @param string $method + * + * @return $this + */ + public function setMethod(string $method = 'POST'): self + { + $this->method = strtoupper($method); + + unset($method); + return $this; + } + + /** + * Set content type + * + * @param string $content_type + * + * @return $this + */ + public function setContentType(string $content_type = self::CONTENT_TYPE_URL_ENCODED): self + { + $this->content_type = &$content_type; + + unset($content_type); + return $this; + } + + /** + * Set referer URL + * + * @param string $referer + * + * @return $this + */ + public function setReferer(string $referer): self + { + $this->referer = &$referer; + + unset($referer); + return $this; + } + + /** + * Set User-Agent string + * + * @param string $user_agent + * + * @return $this + */ + public function setUserAgent(string $user_agent): self + { + $this->user_agent = &$user_agent; + + unset($user_agent); + return $this; + } + + /** + * Set max follows + * + * @param int $max_follow + * + * @return $this + */ + public function setMaxFollow(int $max_follow): self + { + $this->max_follow = &$max_follow; + + unset($max_follow); + return $this; + } + + /** + * Set HTTP accept types + * + * @param string $accept_type + * + * @return $this + */ + public function setAcceptType(string $accept_type): self + { + $this->accept_type = &$accept_type; + + unset($accept_type); + return $this; + } + + /** + * Set ETag value + * + * @param string $etag + * + * @return $this + */ + public function setETag(string $etag): self + { + $this->etag = &$etag; + + unset($etag); + return $this; + } + + /** + * Set modified since value + * + * @param string $last_modified + * + * @return $this + */ + public function setLastModified(string $last_modified): self + { + $this->modified = &$last_modified; + + unset($last_modified); + return $this; + } + + /** + * Set proxy + * + * @param string $proxy + * @param string $proxy_passwd + * + * @return $this + */ + public function setProxy(string $proxy, string $proxy_passwd): self + { + $this->proxy = &$proxy; + $this->proxy_passwd = &$proxy_passwd; + + unset($proxy, $proxy_passwd); + return $this; + } + + /** + * Fetch response data + * + * @param bool $with_body + * @param bool $with_header + * + * @return string + * @throws \Exception + */ + public function fetch(bool $with_body = true, bool $with_header = false): string + { + if ('' === $this->url) { + throw new \Exception('URL not set!', E_USER_NOTICE); + } + + //Prepare data + if (!empty($this->file)) { + $this->data += $this->file; + $this->content_type = self::CONTENT_TYPE_FORM_DATA; + } + + //Set method + if (!empty($this->data)) { + $this->method = 'POST'; + } + + //Get URL units + $url_unit = $this->getUrlUnit($this->url); + + //Get cURL headers + $header = $this->getHeader($url_unit); + + //Initialize + $opt = []; + $curl = curl_init(); + + //Build options + $opt[CURLOPT_URL] = $this->url; + $opt[CURLOPT_PORT] = &$url_unit['port']; + $opt[CURLOPT_TIMEOUT] = 60; + $opt[CURLOPT_NOSIGNAL] = true; + $opt[CURLOPT_AUTOREFERER] = true; + $opt[CURLOPT_COOKIESESSION] = true; + $opt[CURLOPT_RETURNTRANSFER] = true; + $opt[CURLOPT_SSL_VERIFYHOST] = 2; + $opt[CURLOPT_SSL_VERIFYPEER] = false; + $opt[CURLOPT_HTTPHEADER] = &$header; + $opt[CURLOPT_ENCODING] = $this->accept_encoding; + $opt[CURLOPT_USERAGENT] = $this->user_agent; + $opt[CURLOPT_CUSTOMREQUEST] = strtoupper($this->method); + $opt[CURLOPT_POST] = ('POST' === $this->method); + $opt[CURLOPT_NOBODY] = !$with_body; + $opt[CURLOPT_HEADER] = &$with_header; + + if ('' !== $this->cookie) { + $opt[CURLOPT_COOKIE] = $this->cookie; + } + + if ('' !== $this->referer) { + $opt[CURLOPT_REFERER] = $this->referer; + } + + if (0 < $this->max_follow) { + $opt[CURLOPT_FOLLOWLOCATION] = true; + $opt[CURLOPT_MAXREDIRS] = $this->max_follow; + } + + if ('' !== $this->proxy) { + $opt[CURLOPT_PROXY] = $this->proxy; + + if ('' !== $this->proxy_passwd) { + $opt[CURLOPT_PROXYUSERPWD] = $this->proxy_passwd; + } + } + + if (!empty($this->data)) { + switch ($this->content_type) { + case self::CONTENT_TYPE_JSON: + $opt[CURLOPT_POSTFIELDS] = json_encode($this->data); + break; + + case self::CONTENT_TYPE_XML: + $opt[CURLOPT_POSTFIELDS] = IOUnit::new()->toXml($this->data); + break; + + case self::CONTENT_TYPE_URL_ENCODED: + $opt[CURLOPT_POSTFIELDS] = http_build_query($this->data); + break; + + default: + $opt[CURLOPT_POSTFIELDS] = &$this->data; + break; + } + } + + //Set cURL options + curl_setopt_array($curl, $opt); + + //Get response + $response = curl_exec($curl); + + //Collect HTTP CODE or ERROR + false !== $response + ? $this->response_code = curl_getinfo($curl, CURLINFO_RESPONSE_CODE) + : $this->curl_error = curl_error($curl); + + //Close cURL handle + curl_close($curl); + + unset($opt, $curl, $key, $val); + return (string)$response; + } + + /** + * Get last HTTP response code + * + * @return string + */ + public function getHttpCode() + { + return $this->response_code; + } + + /** + * Get last HTTP curl error + * + * @return string + */ + public function getLastError(): string + { + return $this->curl_error; + } + + /** + * Extract URL units + * + * @param string $url + * + * @return array + */ + private function getUrlUnit(string $url): array + { + //Parse URL + $unit = parse_url($url); + + //Check main components + if (false === $unit || !isset($unit['scheme']) || !isset($unit['host'])) { + return []; + } + + //Prepare URL unit + if (!isset($unit['path'])) { + $unit['path'] = '/'; + } + + $unit['query'] = isset($unit['query']) ? '?' . $unit['query'] : ''; + + if (!isset($unit['port'])) { + $unit['port'] = 'https' === $unit['scheme'] ? 443 : 80; + } + + unset($url); + return $unit; + } + + /** + * get request header + * + * @param array $url_unit + * + * @return array + */ + private function getHeader(array $url_unit): array + { + $header_list = ['Host' => $url_unit['host'] . ':' . $url_unit['port']]; + + if (!empty($this->header)) { + $header_list += $this->header; + } + + if ('' !== $this->cookie) { + $header_list['Cookie'] = $this->cookie; + } + + if ('' !== $this->etag) { + $header_list['If-None-Match'] = $this->etag; + } + + if ('' !== $this->modified) { + $header_list['If-Modified-Since'] = $this->modified; + } + + $header_list += [ + 'Accept' => $this->accept_type, + 'Accept-Charset' => $this->accept_charset, + 'Accept-Encoding' => $this->accept_encoding, + 'Accept-Language' => $this->accept_language, + 'Content-Type' => $this->content_type, + 'User-Agent' => $this->user_agent, + 'Connection' => $this->connection + ]; + + $headers = [$this->method . ' ' . $url_unit['path'] . $url_unit['query'] . ' ' . $this->http_ver]; + + foreach ($header_list as $key => $val) { + $headers[] = $key . ': ' . $val; + } + + unset($url_unit, $header_list, $key, $val); + return $headers; + } +} diff --git a/app/Library/SystemInfo.php b/app/Library/SystemInfo.php new file mode 100644 index 0000000..1bf1755 --- /dev/null +++ b/app/Library/SystemInfo.php @@ -0,0 +1,191 @@ + 0, + // 空闲磁盘 + 'free' => 0, + // 已使用的磁盘 + 'used' => 0, + // 磁盘占用率 + 'usage_ratio' => 0, + + // 单位符 + 'unit_symbol' => 'G', + ]; + + /** + * 获取磁盘相关数据 + * + * @return array + */ + public function getDisk() + { + if ( is_windows() ) { //windows服务器 + // 总磁盘(kb -> k -> M -> G) + $this->disk['total'] = round(disk_total_space("C:") / 1024 / 1024 / 1024, 2); + $this->disk['free'] = round(disk_free_space("C:") / 1024 / 1024 / 1024, 2); + $this->disk['used'] = round($this->disk['total'] - $this->disk['free'], 2); + $this->disk['usage_ratio'] = round(round($this->disk['free'] / $this->disk['total'], 4) * 100, 2); + } else { + //获取磁盘占用率 + $fp = popen('df -lh | grep -E "^(/)"', "r"); + $rs = fread($fp, 1024); + pclose($fp); + $rs = preg_replace('/\s{2,}/', ' ', $rs); //把多个空格换成 “_” + $hd = explode(" ", $rs); + $this->disk['total'] = trim($hd[1], 'G');//可用空间G + $this->disk['used'] = trim($hd[2], 'G');//可用空间G + $this->disk['free'] = trim($hd[3], 'G');//可用空间G + $this->disk['usage_ratio'] = trim($hd[4], '%');//已使用百分比 + } + return $this->disk; + } + + // 内存 + private $memory = [ + // 总内存 + 'total' => 0, + // 空闲内存 + 'free' => 0, + // 已使用的内存 + 'used' => 0, + // 内存占用率 + 'usage_ratio' => 0, + // 单位符 + 'unit_symbol' => 'M', + ]; + + /** + * 获取内存相关数据 + * + * @return array + */ + public function getMemory() + { + if ( is_windows() ) { // windows服务器 + $path = $this->getMemoryUsageVbsPathByWindows(); + exec("cscript -nologo $path", $usage); + $memory = my_json_decode($usage[0], true); + + $this->memory['total'] = round($memory['TotalVisibleMemorySize'] / 1024, 2); + $this->memory['free'] = round($memory['FreePhysicalMemory'] / 1024, 2); + $this->memory['used'] = round($this->memory['total'] - $this->memory['free'], 2); + $this->memory['usage_ratio'] = round(round($this->memory['used'] / $this->memory['total'], 4) * 100, 2); + } else { + //内存使用率 + $fp = popen('top -b -n 2 | grep -E "(Mem)"', "r"); + $rs = fread($fp, 1024); + $sys_info = explode("\n", $rs); + $mem_info = explode(",", $sys_info[2]); //内存占有量 数组 + $this->memory['total'] = trim(trim($mem_info[0], 'KiB Mem : '), ' total'); + $this->memory['used'] = trim(trim($mem_info[2], 'used')); + $this->memory['buffer_cache'] = trim(trim($mem_info[3], 'buff/cache')); + $this->memory['free'] = trim(trim($mem_info[1], 'free')); + $this->memory['usage_ratio'] = round($this->memory['used'] / intval($this->memory['total']), 4) * 100; //百分比 + } + return $this->memory; + } + + // Cpu + private $cpu = [ + // 总Cpu + 'total' => 0, + // 空闲Cpu + 'free' => 0, + // 已使用的Cpu + 'used' => 0, + // Cpu占用率 + 'usage_ratio' => 0, + ]; + + /** + * 获取Cpu相关数据 + * + * @return array + */ + public function getCpu() + { + if ( is_windows() ) { // windows服务器 + // WINDOWS的CPU是极为不准确的。 + $this->cpu['usage_ratio'] = (float)$this->getCpuUsage(); + } else { + //获取CPU使用率以及内存使用率 + $fp = popen('top -b -n 2 | grep -E "(Cpu)"', "r"); + $rs = fread($fp, 1024); + $sys_info = explode("\n", $rs); + $this->cpu['usage_ratio'] = (float)trim(current(explode(',', trim($sys_info[0], '%Cpu(s): '))), 'us'); //百分比; + } + return $this->cpu; + } + + /** + * 获得总内存及可用物理内存JSON vbs文件生成函数 + * + * @return string 返回vbs文件路径 + */ + private function getMemoryUsageVbsPathByWindows() + { + return $this->getFilePath('memory_usage.vbs', "On Error Resume Next + Set objWMI = GetObject(\"winmgmts:\\\\.\\root\cimv2\") + Set colOS = objWMI.InstancesOf(\"Win32_OperatingSystem\") + For Each objOS in colOS + Wscript.Echo(\"{\"\"TotalVisibleMemorySize\"\":\" & objOS.TotalVisibleMemorySize & \",\"\"FreePhysicalMemory\"\":\" & objOS.FreePhysicalMemory & \"}\") + Next"); + } + + /** + * 判断指定路径下指定文件是否存在,如不存在则创建 + * + * @param string $fileName 文件名 + * @param string $content 文件内容 + * + * @return string 返回文件路径 + */ + private function getFilePath($fileName, $content) + { + $path = dirname(__FILE__) . "\\$fileName"; + if ( !file_exists($path) ) { + file_put_contents($path, $content); + } + return $path; + } + + /** + * 获得CPU使用率 + * + * @return Number + */ + private function getCpuUsage() + { + $path = $this->getCupUsageVbsPathByWindows(); + exec("cscript -nologo $path", $usage); + return $usage[0]; + } + + /** + * 获得cpu使用率vbs文件生成函数 + * + * @return string 返回vbs文件路径 + */ + private function getCupUsageVbsPathByWindows() + { + return $this->getFilePath('cpu_usage.vbs', "On Error Resume Next + Set objProc = GetObject(\"winmgmts:\\\\.\\root\cimv2:win32_processor='cpu0'\") + WScript.Echo(objProc.LoadPercentage)"); + } +} diff --git a/app/Library/cpu_usage.vbs b/app/Library/cpu_usage.vbs new file mode 100644 index 0000000..60a7bdd --- /dev/null +++ b/app/Library/cpu_usage.vbs @@ -0,0 +1,3 @@ +On Error Resume Next + Set objProc = GetObject("winmgmts:\\.\root\cimv2:win32_processor='cpu0'") + WScript.Echo(objProc.LoadPercentage) \ No newline at end of file diff --git a/app/Library/memory_usage.vbs b/app/Library/memory_usage.vbs new file mode 100644 index 0000000..4c4218f --- /dev/null +++ b/app/Library/memory_usage.vbs @@ -0,0 +1,6 @@ +On Error Resume Next + Set objWMI = GetObject("winmgmts:\\.\root\cimv2") + Set colOS = objWMI.InstancesOf("Win32_OperatingSystem") + For Each objOS in colOS + Wscript.Echo("{""TotalVisibleMemorySize"":" & objOS.TotalVisibleMemorySize & ",""FreePhysicalMemory"":" & objOS.FreePhysicalMemory & "}") + Next \ No newline at end of file diff --git a/app/Listeners/QueryListener.php b/app/Listeners/QueryListener.php new file mode 100644 index 0000000..63368e5 --- /dev/null +++ b/app/Listeners/QueryListener.php @@ -0,0 +1,52 @@ +log = new Logger('mysql'); + + // 创建mysql文件夹 + $dir_path = dirname(dirname(__DIR__)) . '/storage/logs/' . $this->log->getName(); + if (!is_dir($dir_path)) mkdir($dir_path, 0755); + + $log_path = storage_path('logs/' . $this->log->getName() . '/' . date('Y-m-d') . '.log'); + if (!file_exists($log_path)) { + fopen($log_path, "w"); + } + + $this->log->pushHandler(new StreamHandler($log_path, Logger::DEBUG)); + } + + /** + * Handle the event. + * + * @param object $event + * + * @return void + */ + public function handle($event): void + { + if (env('APP_DEBUG') == true) { + /** + * sql语句的监听 + */ + $sql = str_replace("?", "'%s'", $event->sql); + $log = vsprintf($sql, $event->bindings); + + $this->log->addRecord(Logger::DEBUG, '[' . $event->time . '] | ' . $log . ' |'); + } + } +} diff --git a/app/Models/Model.php b/app/Models/Model.php new file mode 100644 index 0000000..50b4779 --- /dev/null +++ b/app/Models/Model.php @@ -0,0 +1,92 @@ +attributes[self::CREATED_AT]; + } + + public function getUpdatedTimeAttribute() + { + return $this->attributes[self::UPDATED_AT]; + } + + /** + * 自定义的软删除 + */ + protected $is_delete = 1; //是否开启删除(1.开启删除,就是直接删除;0.假删除) + protected $delete_field = 'is_delete'; //删除字段 + + public function getIsDelete() + { + return $this->is_delete; + } + + public function getDeleteField() + { + return $this->delete_field; + } + + /** + * 不可批量赋值的属性 + * + * @var array + */ + protected $guarded = []; + + /** + * 模型的 "booted" 方法 + * + * 应用全局作用域 + * + * @return void + */ + protected static function booted() + { + // 假删除的作用域 + static::addGlobalScope(new DeleteScope(new static)); + } + + public static function firstByWhere($where) + { + return self::where($where)->first(); + } +} diff --git a/app/Models/MonthModel.php b/app/Models/MonthModel.php new file mode 100644 index 0000000..e79223f --- /dev/null +++ b/app/Models/MonthModel.php @@ -0,0 +1,100 @@ +setMonthTable(); + } + + public function getMonth(): string + { + return $this->month; + } + + + /** + * 设置按月分表 + * + * @param string $month + * + * @return $this + */ + public function setMonthTable(string $month = '') + { + $month = empty($month) ? date(self::MONTH_FORMAT) : date(self::MONTH_FORMAT, strtotime($month)); + // 替换为日期格式,否则将无法转化为时间戳(有效的日期格式 - 拼接才可以) + $month = str_replace('_', '-', $month); + + // 当表名大于最小表名时,设置表名。 + if ( $month >= str_replace('_', '-', self::MIN_TABLE) ) { + $this->month = date(self::MONTH_FORMAT, strtotime($month)); + $this->table = $this->getOldTableName() . '_' . $this->month; + } + + return $this; + } + + /** + * 获取从开始分表到今天为止,所有的月份 + * + * @return array + */ + public function getAllMonthes() : array + { + $monthes = get_month_range(str_replace('_', '-', self::MIN_TABLE), date('Y-m')); + krsort($monthes); + return $monthes; + } + + /** + * 获取原始表名(移除月份表的后缀)【包含前缀】 + * + * @return string + */ + public function getOldTableName():string + { + $table_name = $this->getTable(); + $suffix_len = strlen(self::MIN_TABLE); + $suffix = substr($table_name, -$suffix_len, $suffix_len); + // 检测当前表名是否为按月分表的表名 + if (preg_match ("/^([0-9]{4})_([0-9]{2})$/", $suffix, $parts)){ + // 减1是因为默认还有一个下划线 + $table_name = substr($table_name, 0, -$suffix_len - 1); + } + return $table_name; + } + + /** + * 生成新表 + * + * @param string $new_table + * @param string $time + * @param string $format + * @param string $old_table + * + * @return bool + */ + public function createMonthTable(string $new_table = '', $time = '', $format = self::MONTH_FORMAT, string $old_table = '') + { + $new_table = empty($new_table) ? $this->getOldTableName() . '_' . date($format, empty($time) ? time() : $time) : $new_table; + + // 数据表前缀 + $db_prefix = env('DB_PREFIX'); + + return $this->setCopyTable($db_prefix . $new_table, $db_prefix . $this->getOldTableName()); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..804799b --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,43 @@ + 'datetime', + ]; +} diff --git a/app/Models/YearModel.php b/app/Models/YearModel.php new file mode 100644 index 0000000..316ef1e --- /dev/null +++ b/app/Models/YearModel.php @@ -0,0 +1,89 @@ +setMonthTable(); + } + + /** + * 获取从开始分表到明年为止,所有的年份 + * + * @return array + */ + public function getAllMonthes(): array + { + $years = get_year_range(self::MIN_TABLE . '-01', date('Y-01', strtotime('+1 year'))); + krsort($years); + return $years; + } + + /** + * 设置按年分表 + * + * @param string $month + * + * @return $this + */ + public function setMonthTable(string $month = '') + { + $month = empty($month) ? date(self::MONTH_FORMAT) : (strlen($month) == 4 ? $month : date(self::MONTH_FORMAT, strtotime($month))); + // 替换为日期格式,否则将无法转化为时间戳(有效的日期格式 - 拼接才可以) + $month = str_replace('_', '-', $month); + + // 当表名大于最小表名时,设置表名。 + if ( $month >= self::MIN_TABLE ) { + $this->month = $month; + $this->table = $this->getOldTableName() . '_' . $this->month; + } + + return $this; + } + + /** + * 生成新表 + * + * @param string $new_table + * @param string $time + * @param string $format + * @param string $old_table + * + * @return bool + */ + public function createMonthTable(string $new_table = '', $time = '', $format = self::MONTH_FORMAT, string $old_table = '') + { + $new_table = empty($new_table) ? $this->getOldTableName() . '_' . date($format, empty($time) ? time() : $time) : $new_table; + + // 数据表前缀 + $db_prefix = env('DB_PREFIX'); + + return $this->setCopyTable($db_prefix . $new_table, $db_prefix . $this->getOldTableName()); + } + + /** + * 获取原始表名(移除年份表的后缀)【包含前缀】 + * + * @return string + */ + public function getOldTableName():string + { + $table_name = $this->getTable(); + $suffix_len = strlen(self::MIN_TABLE); + $suffix = substr($table_name, -$suffix_len, $suffix_len); + // 检测当前表名是否为按年分表的表名 + if (preg_match ("/^([0-9]{4})$/", $suffix, $parts)){ + // 减1是因为默认还有一个下划线 + $table_name = substr($table_name, 0, -$suffix_len - 1); + } + return $table_name; + } +} diff --git a/app/Modules/Admin/Config/.gitkeep b/app/Modules/Admin/Config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Config/config.php b/app/Modules/Admin/Config/config.php new file mode 100644 index 0000000..0fa4b42 --- /dev/null +++ b/app/Modules/Admin/Config/config.php @@ -0,0 +1,5 @@ + 'Admin' +]; diff --git a/app/Modules/Admin/Console/.gitkeep b/app/Modules/Admin/Console/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Console/AutoTableBuild.php b/app/Modules/Admin/Console/AutoTableBuild.php new file mode 100644 index 0000000..88c2774 --- /dev/null +++ b/app/Modules/Admin/Console/AutoTableBuild.php @@ -0,0 +1,77 @@ +model_lists as $model){ + (new $model)->createMonthTable('', strtotime('+1 month')); + } + } + + /** + * Get the console command arguments. + * + * @return array + */ + protected function getArguments() + { + return [ + ['example', InputArgument::REQUIRED, 'An example argument.'], + ]; + } + + /** + * Get the console command options. + * + * @return array + */ + protected function getOptions() + { + return [ + ['example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null], + ]; + } +} diff --git a/app/Modules/Admin/Database/Migrations/.gitkeep b/app/Modules/Admin/Database/Migrations/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Database/Seeders/.gitkeep b/app/Modules/Admin/Database/Seeders/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Database/Seeders/AdminDatabaseSeeder.php b/app/Modules/Admin/Database/Seeders/AdminDatabaseSeeder.php new file mode 100644 index 0000000..9a8738e --- /dev/null +++ b/app/Modules/Admin/Database/Seeders/AdminDatabaseSeeder.php @@ -0,0 +1,21 @@ +call("OthersTableSeeder"); + } +} diff --git a/app/Modules/Admin/Database/factories/.gitkeep b/app/Modules/Admin/Database/factories/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Entities/.gitkeep b/app/Modules/Admin/Entities/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Entities/Article/Article.php b/app/Modules/Admin/Entities/Article/Article.php new file mode 100644 index 0000000..cda0eee --- /dev/null +++ b/app/Modules/Admin/Entities/Article/Article.php @@ -0,0 +1,35 @@ +attributes['article_cover'] = str_replace(Storage::url('/'), '', $key); + } + } + + public function category() + { + return $this->hasOne(ArticleCategory::class, 'category_id', 'category_id'); + } + + public function labels() + { + return $this->belongsToMany(ArticleLabel::class, ArticleWithLabel::class, 'article_id' , 'label_id' , 'article_id', 'label_id')->withPivot(['article_id', 'label_id']); + } +} diff --git a/app/Modules/Admin/Entities/Article/ArticleCategory.php b/app/Modules/Admin/Entities/Article/ArticleCategory.php new file mode 100644 index 0000000..82ef61f --- /dev/null +++ b/app/Modules/Admin/Entities/Article/ArticleCategory.php @@ -0,0 +1,87 @@ +getCacheTree(); + } + + /** + * 删除缓存 + * + * @return bool + */ + public function delCache() + { + Cache::forget($this->cache_key); + return true; + } + + /** + * 获取文章分类的数据缓存 + * + * @param string $get_type + * + * @return mixed + */ + private function getCache(string $get_type = '') + { + return Cache::remember($this->cache_key, 3600, function() use ($get_type) { + $all = $this->orderBy('category_sort', 'ASC')->get()->toArray(); + $tree = list_to_tree($all, $this->getKeyName()); + return compact('all', 'tree'); + }); + } + + /** + * 获取Tree格式化数据 + * + * @return array|mixed + */ + public function getCacheTree() + { + return $this->getCache()['tree'] ?? []; + } + + /** + * 获取所有文章数据 + * + * @return array|mixed + */ + public function getCacheAll() + { + return $this->getCache()['all'] ?? []; + } + + /** + * 获取所有子集的Id集合(包含自己) + * + * @param int $parent_id + * @param array $all + * + * @return array|int[] + */ + public function getChildIds(int $parent_id, array $all = []) + { + $ids = [$parent_id]; + empty($all) && $all = $this->getCacheAll(); + foreach ($all as $key => $value) { + if ( $value['parent_id'] == $parent_id ) { + unset($all[$key]); + $child_ids = $this->getChildIds((int)$value['category_id'], $all); + !empty($child_ids) && $ids = array_merge($ids, $child_ids); + } + } + return $ids; + } +} diff --git a/app/Modules/Admin/Entities/Article/ArticleLabel.php b/app/Modules/Admin/Entities/Article/ArticleLabel.php new file mode 100644 index 0000000..8910298 --- /dev/null +++ b/app/Modules/Admin/Entities/Article/ArticleLabel.php @@ -0,0 +1,11 @@ +belongsTo(Admin::class, 'admin_id', 'admin_id'); + } + + public function getLogDurationAttribute($key) + { + return floatval($key); + } +} diff --git a/app/Modules/Admin/Entities/Log/AdminLoginLog.php b/app/Modules/Admin/Entities/Log/AdminLoginLog.php new file mode 100644 index 0000000..063c8d0 --- /dev/null +++ b/app/Modules/Admin/Entities/Log/AdminLoginLog.php @@ -0,0 +1,38 @@ +belongsTo(Admin::class, 'admin_id', 'admin_id'); + } + + public function getLogDurationAttribute($key) + { + return floatval($key); + } + + public function add(int $admin_id = 0, int $log_status = 1, $description = '登录成功') + { + $ip_agent = get_client_info(); + return $this->setMonthTable()->create([ + 'admin_id' => $admin_id, + 'created_ip' => $ip_agent['ip'] ?? get_ip(), + 'browser_type' => $ip_agent['agent'] ?? $_SERVER['HTTP_USER_AGENT'], + 'log_status' => $log_status, + 'description' => $description, + 'log_action' => request()->route()->getActionName(), + 'log_method' => request()->getMethod(), + 'log_duration' => microtime(true) - LARAVEL_START, + 'request_data' => json_encode(request()->all()), + ]); + } +} diff --git a/app/Modules/Admin/Entities/Rabc/Admin.php b/app/Modules/Admin/Entities/Rabc/Admin.php new file mode 100644 index 0000000..891b305 --- /dev/null +++ b/app/Modules/Admin/Entities/Rabc/Admin.php @@ -0,0 +1,145 @@ +is_delete; + } + + public function getDeleteField() + { + return $this->delete_field; + } + + /** + * 是否主动维护时间戳 + * + * @var bool + */ + public $timestamps = false; + + protected $hidden = ['password']; + + /** + * 不可批量赋值的属性 + * + * @var array + */ + protected $guarded = []; + + /** + * 模型的 "booted" 方法 + * + * 应用全局作用域 + * + * @return void + */ + protected static function booted() + { + // 假删除的作用域 + $static = new static; + static::addGlobalScope('delete', function(Builder $builder) use ($static){ + if ($static->is_delete == 0) $builder->where($static->delete_field, $static->is_delete); + }); + } + + public function getAdminByName(string $admin_name) + { + return $this->where('admin_name', $admin_name)->first(); + } + + public function setPasswordAttribute($key) + { + if (empty($key)) unset($this->attributes['password']); + else $this->attributes['password'] = hash_encryption($key); + } + + /** + * 获取会储存到 jwt 声明中的标识 + * @return mixed + */ + public function getJWTIdentifier() + { + return $this->getKey(); + } + + /** + * 返回包含要添加到 jwt 声明中的自定义键值对数组 + * @return array + */ + public function getJWTCustomClaims() + { + return ['role' => 'admin']; + } + + public function adminInfo() + { + return $this->hasOne(AdminInfo::class, $this->primaryKey, $this->primaryKey); + } + + public function roles() + { + return $this->belongsToMany(AdminRole::class, AdminWithRole::class, 'admin_id', 'role_id')->withPivot(['admin_id', 'role_id']); + } + + /** + * @Function assignRole + * + * @param $roles + * + * @return bool + * @author : cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:给用户分配角色 + * @englishAnnotation: + */ + public function assignRole($roles) + { + return $this->roles()->save($roles); + } + + /** + * @Function deleteRole + * + * @param $roles + * + * @return mixed + * @author : cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:取消用户分配的角色,取消而不是删除 + * @englishAnnotation: + */ + public function deleteRole($roles) + { + return $this->roles()->detach($roles); + } + + public function getAdminHeadAttribute($key) + { + if (empty($key)) return $key; + return Storage::url($key); + } + + public function setAdminHeadAttribute($key) + { + if (!empty($key)) { + $this->attributes['admin_head'] = str_replace(Storage::url('/'), '', $key); + } + } +} diff --git a/app/Modules/Admin/Entities/Rabc/AdminInfo.php b/app/Modules/Admin/Entities/Rabc/AdminInfo.php new file mode 100644 index 0000000..9c0ed7d --- /dev/null +++ b/app/Modules/Admin/Entities/Rabc/AdminInfo.php @@ -0,0 +1,10 @@ +orderBy('menu_sort', 'ASC')->get(); + } + + public function getSelectLists() + { + return list_to_tree($this->orderBy('menu_sort', 'ASC')->get()->toArray()); + } + + public function getMenusByIds(array $menu_ids) + { + return $this->whereIn('menu_id', $menu_ids) + ->orderBy('menu_sort', 'ASC') + ->get(); + } + + public function getMenusByIdsForRabc(array $menu_ids) + { + return $this->whereIn('menu_id', $menu_ids)->where('api_url', '<>', '')->pluck('api_method', 'api_url'); + } +} diff --git a/app/Modules/Admin/Entities/Rabc/AdminRole.php b/app/Modules/Admin/Entities/Rabc/AdminRole.php new file mode 100644 index 0000000..496acaa --- /dev/null +++ b/app/Modules/Admin/Entities/Rabc/AdminRole.php @@ -0,0 +1,48 @@ +belongsToMany(AdminMenu::class, 'admin_role_with_menus', 'role_id', 'menu_id') + ->where(['is_delete' => 0, 'is_check' => 1]) + ->orderBy('menu_sort', 'ASC'); + } + + /** + * @Function grantMenus + * + * @param $menus + * + * @return bool + * @author : cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:给角色赋予权限 + * @englishAnnotation: + */ + public function grantMenus($menus) + { + return AdminRoleWithMenu::create($menus); + } + + /** + * @Function deleteMenus + * + * @param $menus + * + * @return mixed + * @author : cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:取消角色赋予的权限 + * @englishAnnotation: + */ + public function deleteMenus($menus) + { + return AdminRoleWithMenu::where($menus)->delete(); + } +} diff --git a/app/Modules/Admin/Entities/Rabc/AdminRoleWithMenu.php b/app/Modules/Admin/Entities/Rabc/AdminRoleWithMenu.php new file mode 100644 index 0000000..28aeb42 --- /dev/null +++ b/app/Modules/Admin/Entities/Rabc/AdminRoleWithMenu.php @@ -0,0 +1,16 @@ +whereIn('role_id', $role_ids)->select('menu_id')->get()->toArray(), 'menu_id')); + } +} diff --git a/app/Modules/Admin/Entities/Rabc/AdminWithRole.php b/app/Modules/Admin/Entities/Rabc/AdminWithRole.php new file mode 100644 index 0000000..89fed33 --- /dev/null +++ b/app/Modules/Admin/Entities/Rabc/AdminWithRole.php @@ -0,0 +1,10 @@ +attributes['banner_cover'] = str_replace(Storage::url('/'), '', $key); + } + } +} diff --git a/app/Modules/Admin/Entities/System/Config.php b/app/Modules/Admin/Entities/System/Config.php new file mode 100644 index 0000000..91b85bf --- /dev/null +++ b/app/Modules/Admin/Entities/System/Config.php @@ -0,0 +1,92 @@ +where('is_check', 1) + ->select('config_value', 'config_name', 'config_type') + ->get() + ->toArray();//字段进行过滤 + $_data = $data_list = []; + array_walk($config_data, function ($value) use (&$data_list) { + /** + * 对于数组格式的处理 + * + * in_array(strtoupper($value['config_name']), ['CONFIG_GROUP_LIST', 'CONFIG_TYPE_LIST', 'MENU_TYPE_LIST']) || + */ + if ($value['config_type'] == 3) { + $value_ary = array_filter(explode('|', str_replace(["\r", "\r\n", "\n"], '|', $value['config_value']))); + foreach ($value_ary as $k => $v) { + if (empty($value['config_name'])) continue; + $array = explode(':', str_replace(["'", '"', "\r", "\r\n", "\n"], '', $v)); + $_data[$array[0]] = $array[1]; + } + $data_list[$value['config_name']] = $_data; + }else{ + /** + * 配置项的值,对于不同字符类型的格式进行处理 + */ + switch ($value['config_type']){ + case 2: // 数字 + $config_value = floatval($value['config_value']); + break; + default: + $config_value = $value['config_value']; + break; + } + /** + * 如果存在某一类的设置项: + * 如:user.login_days、user.pass 这一类,自动设置为数据格式数据,便于使用config的 . 找到数组下坐标 + */ + if (strstr($value['config_name'], '.')){ + $ary = explode('.', $value['config_name']); + if (count($ary) > 2){ + list($key, $val, $third) = $ary; + $data_list[$key][$val][$third] = $config_value; + }else{ + list($key, $val) = $ary; + $data_list[$key][$val] = $config_value; + } + }else{ + $data_list[$value['config_name']] = $config_value; + } + } + }); + // 文件写入 + $res = file_put_contents( config_path() . '/cnpscy.php', 'select()->toArray(); + if (!empty($configs)) { + foreach ($configs as &$v) { + if (in_array($v['config_type'], [4])){ + if (!empty($v['config_extra'])) $v['config_extra'] = config_array_analysis($v['config_extra']); + } + } + } + $configs = array_field_group($configs, 'config_group');//按照配置进行分组 + if (empty($configs[0])) $configs[0] = []; + return $configs; + } +} diff --git a/app/Modules/Admin/Entities/System/Friendlink.php b/app/Modules/Admin/Entities/System/Friendlink.php new file mode 100644 index 0000000..9e03f1a --- /dev/null +++ b/app/Modules/Admin/Entities/System/Friendlink.php @@ -0,0 +1,25 @@ +attributes['link_cover'] = str_replace(Storage::url('/'), '', $key); + } + } +} diff --git a/app/Modules/Admin/Entities/System/Protocol.php b/app/Modules/Admin/Entities/System/Protocol.php new file mode 100644 index 0000000..d4fd0e4 --- /dev/null +++ b/app/Modules/Admin/Entities/System/Protocol.php @@ -0,0 +1,11 @@ +service = $articleCategoryService; + } + + public function create(ArticleCategoryRequest $request) + { + return $this->createService($request); + } + + public function update(ArticleCategoryRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/Article/ArticleController.php b/app/Modules/Admin/Http/Controllers/Article/ArticleController.php new file mode 100644 index 0000000..cb9385c --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Article/ArticleController.php @@ -0,0 +1,25 @@ +service = $articleService; + } + + public function create(ArticleRequest $request) + { + return $this->createService($request); + } + + public function update(ArticleRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/Article/ArticleLabelController.php b/app/Modules/Admin/Http/Controllers/Article/ArticleLabelController.php new file mode 100644 index 0000000..7aaf19d --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Article/ArticleLabelController.php @@ -0,0 +1,25 @@ +service = $articleLabelService; + } + + public function create(ArticleLabelRequest $request) + { + return $this->createService($request); + } + + public function update(ArticleLabelRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/AuthController.php b/app/Modules/Admin/Http/Controllers/AuthController.php new file mode 100644 index 0000000..e811b8c --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/AuthController.php @@ -0,0 +1,64 @@ +service = $authService; + } + + /** + * 登录流程 + * + * @param LoginRequest $request + * @return \Illuminate\Http\JsonResponse + * @throws \App\Exceptions\Admin\AuthException + * @throws \App\Exceptions\InvalidRequestException + */ + public function login(LoginRequest $request) + { + $data = $request->validated(); + + // 登录流程 + $token = $this->service->login($data); + + return $this->successJson($token); + } + + /** + * 获取登录管理员信息 + * + * @return \Illuminate\Http\JsonResponse + * @throws \App\Exceptions\Admin\AuthException + */ + public function me() + { + if (\request()->getMethod() == 'OPTIONS'){ + return $this->successJson(); + } + + return $this->successJson($this->service->me()); + } + + /** + * 退出登录 + * + * @return \Illuminate\Http\JsonResponse + */ + public function logout() + { + return $this->successJson($this->service->logout()); + } + + public function getRabcList() + { + // 临时测试数据 + return $this->successJson(list_to_tree(AdminMenu::getInstance()->getAllMenus()->toArray())); + } +} diff --git a/app/Modules/Admin/Http/Controllers/BaseController.php b/app/Modules/Admin/Http/Controllers/BaseController.php new file mode 100644 index 0000000..6006d7c --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/BaseController.php @@ -0,0 +1,147 @@ +service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + return $this->successJson($this->service->lists($request->all())); + } + + /** + * 详情 + * + * @param int $id + * + * @return \Illuminate\Http\JsonResponse + */ + public function detail(Request $request) + { + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + if ($detail = $this->service->detail($request)){ + return $this->successJson($detail); + }else{ + return $this->errorJson('数据不存在!'); + } + } + + /** + * 新增流程 + * + * @param $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function createService($request) + { + if ($request instanceof FormRequest){ + $request->validated(); + } + + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + if ($this->service->create($request->all())){ + return $this->successJson([], $this->service->getError()); + }else{ + return $this->errorJson($this->service->getError()); + } + } + + /** + * 更新流程 + * + * @param $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function updateService($request) + { + if ($request instanceof FormRequest){ + $request->validated(); + } + + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + if ($this->service->update($request->all())){ + return $this->successJson([], $this->service->getError()); + }else{ + return $this->errorJson($this->service->getError()); + } + } + + /** + * 删除 + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function delete(Request $request) + { + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + if ($this->service->delete($request->all())){ + return $this->successJson([], $this->service->getError()); + }else{ + return $this->errorJson($this->service->getError()); + } + } + + /** + * 指定字段变更操作 + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function changeFiledStatus(Request $request) + { + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + + if ($this->service->changeFiledStatus($request->all())){ + return $this->successJson([], $this->service->getError()); + }else{ + return $this->errorJson($this->service->getError()); + } + } + + /** + * 下拉筛选列表(可搜索) + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function getSelectLists(Request $request) + { + $lists = $this->service->getSelectLists($request); + return $this->successJson($lists); + } +} diff --git a/app/Modules/Admin/Http/Controllers/IndexController.php b/app/Modules/Admin/Http/Controllers/IndexController.php new file mode 100644 index 0000000..a46eab3 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/IndexController.php @@ -0,0 +1,78 @@ +service = $indexService; + } + + public function index(Request $request) + { + return $this->successJson($this->service->index()); + } + + /** + * 按照日志类型的统计图数据 + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function logsStatistics(Request $request) + { + return $this->successJson($this->service->logsStatistics()); + } + + /** + * 月份表列表 + * + * @return \Illuminate\Http\JsonResponse + */ + public function getMonthList() + { + return $this->successJson(MonthModel::getInstance()->getAllMonthes()); + } + + /** + * 编辑登录管理员信息 + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function update(Request $request) + { + if ( $this->service->updateAdmin($request) ) { + return $this->successJson([], $this->service->getError()); + } else { + return $this->errorJson($this->service->getError()); + } + } + + /** + * 版本历史记录 + * + * @return mixed + */ + public function versionLogs() + { + return $this->successJson($this->service->versionLogs()); + } + + /** + * 获取服务器状态 + * + * @return \Illuminate\Http\JsonResponse + */ + public function getServerStatus() + { + return $this->successJson($this->service->getServerStatus()); + } +} diff --git a/app/Modules/Admin/Http/Controllers/Log/AdminLogController.php b/app/Modules/Admin/Http/Controllers/Log/AdminLogController.php new file mode 100644 index 0000000..7ca869b --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Log/AdminLogController.php @@ -0,0 +1,14 @@ +service = $adminLogService; + } +} diff --git a/app/Modules/Admin/Http/Controllers/Log/AdminLoginLogController.php b/app/Modules/Admin/Http/Controllers/Log/AdminLoginLogController.php new file mode 100644 index 0000000..47811b5 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Log/AdminLoginLogController.php @@ -0,0 +1,14 @@ +service = $adminLoginLogService; + } +} diff --git a/app/Modules/Admin/Http/Controllers/Rabc/AdminController.php b/app/Modules/Admin/Http/Controllers/Rabc/AdminController.php new file mode 100644 index 0000000..a4a03fd --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Rabc/AdminController.php @@ -0,0 +1,25 @@ +service = $adminService; + } + + public function create(AdminRequest $request) + { + return $this->createService($request); + } + + public function update(AdminRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/Rabc/AdminMenuController.php b/app/Modules/Admin/Http/Controllers/Rabc/AdminMenuController.php new file mode 100644 index 0000000..40d95e9 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Rabc/AdminMenuController.php @@ -0,0 +1,25 @@ +service = $adminMenuService; + } + + public function create(AdminMenuRequest $request) + { + return $this->createService($request); + } + + public function update(AdminMenuRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/Rabc/AdminRoleController.php b/app/Modules/Admin/Http/Controllers/Rabc/AdminRoleController.php new file mode 100644 index 0000000..5ff9f1e --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Rabc/AdminRoleController.php @@ -0,0 +1,25 @@ +service = $adminRoleService; + } + + public function create(AdminRoleRequest $request) + { + return $this->createService($request); + } + + public function update(AdminRoleRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/System/BannerController.php b/app/Modules/Admin/Http/Controllers/System/BannerController.php new file mode 100644 index 0000000..11598c2 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/System/BannerController.php @@ -0,0 +1,25 @@ +service = $bannerService; + } + + public function create(BannerRequest $request) + { + return $this->createService($request); + } + + public function update(BannerRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/System/ConfigController.php b/app/Modules/Admin/Http/Controllers/System/ConfigController.php new file mode 100644 index 0000000..3ab6f30 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/System/ConfigController.php @@ -0,0 +1,59 @@ +service = $configService; + } + + public function create(ConfigRequest $request) + { + return $this->createService($request); + } + + public function update(ConfigRequest $request) + { + return $this->updateService($request); + } + + public function getConfigGroupType() + { + $config_type_list = $config_group_list = []; + $config_group = cnpscy_config('config_group_list'); + foreach ($config_group as $key => $value){ + $config_group_list[] = [ + 'value' => $key, + 'name' => $value, + ]; + } + $config_type = cnpscy_config('config_type_list'); + foreach ($config_type as $key => $value){ + $config_type_list[] = [ + 'value' => $key, + 'name' => $value, + ]; + } + return $this->successJson([ + 'config_group_list' => $config_group_list, + 'config_type_list' => $config_type_list, + ]); + } + + /** + * 同步配置 + * + * @return \Illuminate\Http\JsonResponse + */ + public function pushRefreshConfig() + { + $this->service->pushRefreshConfig(); + return $this->successJson([], '配置文件已同步成功!'); + } +} diff --git a/app/Modules/Admin/Http/Controllers/System/FriendlinkController.php b/app/Modules/Admin/Http/Controllers/System/FriendlinkController.php new file mode 100644 index 0000000..3cecbac --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/System/FriendlinkController.php @@ -0,0 +1,25 @@ +service = $friendlinkService; + } + + public function create(FriendlinkRequest $request) + { + return $this->createService($request); + } + + public function update(FriendlinkRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/System/ProtocolController.php b/app/Modules/Admin/Http/Controllers/System/ProtocolController.php new file mode 100644 index 0000000..86ab726 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/System/ProtocolController.php @@ -0,0 +1,25 @@ +service = $protocolService; + } + + public function create(ProtocolRequest $request) + { + return $this->createService($request); + } + + public function update(ProtocolRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/System/VersionController.php b/app/Modules/Admin/Http/Controllers/System/VersionController.php new file mode 100644 index 0000000..768cfdb --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/System/VersionController.php @@ -0,0 +1,25 @@ +service = $versionService; + } + + public function create(VersionRequest $request) + { + return $this->createService($request); + } + + public function update(VersionRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/UploadController.php b/app/Modules/Admin/Http/Controllers/UploadController.php new file mode 100644 index 0000000..5277dc1 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/UploadController.php @@ -0,0 +1,31 @@ +file($file))){ + return $this->errorJson('请上传文件!'); + } + + $path = $request->file($file)->storePublicly( + date('Ym'), + config('filesystems') + ); + + return $this->successJson($path, '上传成功', ['path_url' => Storage::url($path)]); + } +} diff --git a/app/Modules/Admin/Http/Middleware/.gitkeep b/app/Modules/Admin/Http/Middleware/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Http/Middleware/AdminLog.php b/app/Modules/Admin/Http/Middleware/AdminLog.php new file mode 100644 index 0000000..c07e6a3 --- /dev/null +++ b/app/Modules/Admin/Http/Middleware/AdminLog.php @@ -0,0 +1,43 @@ +getMethod()); + + if ($method != 'GET'){ + $ip_agent = get_client_info(); + \App\Modules\Admin\Entities\Log\AdminLog::getInstance()->create([ + 'request_data' => json_encode($request->all()), + 'admin_id' => !empty(auth($guard)->user()) ? auth($guard)->user()->admin_id : 0, + 'created_ip' => $ip_agent['ip'] ?? get_ip(), + 'browser_type' => $ip_agent['agent'] ?? $_SERVER['HTTP_USER_AGENT'], + 'created_time' => time(), + 'log_action' => request()->route()->getActionName(), + 'log_method' => $method, + 'log_duration' => microtime(true) - LARAVEL_START, + 'request_url' => URL::full() ?? get_this_url(), + ]); + } + + return $resource; + } +} diff --git a/app/Modules/Admin/Http/Middleware/CheckAuth.php b/app/Modules/Admin/Http/Middleware/CheckAuth.php new file mode 100644 index 0000000..5e297bd --- /dev/null +++ b/app/Modules/Admin/Http/Middleware/CheckAuth.php @@ -0,0 +1,44 @@ +guard = 'admin'; +// // Auth认证 +// $auth = Auth()->guard($this->guard); +// try { +// if ( !$auth->check() ) { //未登录踢回,给予错误返回提示 +// return $this->errorJson('认证失败,请重新登录!'); +// } +// } catch (TokenExpiredException $e) { +// return $this->errorJson($e->getMessage()); +// } catch (TokenInvalidException $e) { +// return $this->errorJson($e->getMessage()); +// } catch (JWTException $e) { +// return $this->errorJson($e->getMessage()); +// } + + return $next($request); + } +} diff --git a/app/Modules/Admin/Http/Middleware/CheckRabc.php b/app/Modules/Admin/Http/Middleware/CheckRabc.php new file mode 100644 index 0000000..9940d4e --- /dev/null +++ b/app/Modules/Admin/Http/Middleware/CheckRabc.php @@ -0,0 +1,64 @@ +guard = 'admin'; +// // 开始验证路由权限 +// if (!$this->checkRabc($request, Auth()->guard($this->guard)->user()->getAuthIdentifier(), $load_error)){ +// return $this->errorJson('无权限' . (empty($load_error) ? '!' : ',' . $load_error), -2); +// } + + return $next($request); + } + + private function checkRabc($request, int $admin_id, &$load_error = ''):bool + { + // 超级管理员账户无需验证 + if ($admin_id == 1) return true; + + $roles = Admin::getInstance()->detail($admin_id)->roles->toArray(); + if (empty($roles)) return false; + $role_ids = array_column($roles, 'role_id'); + if (empty($role_ids)) return false; + $menu_ids = AdminRoleWithMenu::getInstance()->getMenuIdsByRoles($role_ids); + if (empty($menu_ids)) return false; + $menus = AdminMenu::getInstance()->getMenusByIdsForRabc($menu_ids)->toArray(); + if (empty($menus)) return false; + + // 获取当前路由 + $route_path = $request->route()->uri(); + // 检测是否存在当前API + if (isset($menus[$route_path])){ + // 验证请求方式 + if ($menus[$route_path] == $request->getMethod()){ + return true; + } + $load_error = '请求方式有误!'; + } + return false; + } +} diff --git a/app/Modules/Admin/Http/Requests/.gitkeep b/app/Modules/Admin/Http/Requests/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Http/Requests/Article/ArticleCategoryRequest.php b/app/Modules/Admin/Http/Requests/Article/ArticleCategoryRequest.php new file mode 100644 index 0000000..c66d421 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Article/ArticleCategoryRequest.php @@ -0,0 +1,42 @@ +instance = ArticleCategory::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'category_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',category_name' . $this->validate_id + ], + 'category_sort' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'category_name.required' => '请输入分类名称!', + 'category_name.max' => '分类名称字数不可超过 256!', + 'category_name.unique' => '分类名称已存在,请更换!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/Article/ArticleLabelRequest.php b/app/Modules/Admin/Http/Requests/Article/ArticleLabelRequest.php new file mode 100644 index 0000000..cc7dd14 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Article/ArticleLabelRequest.php @@ -0,0 +1,39 @@ +instance = ArticleLabel::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'label_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',label_name' . $this->validate_id + ], + ]; + } + + public function messages() + { + return [ + 'label_name.required' => '请输入标签名称!', + 'label_name.max' => '标签名称字数不可超过 256!', + 'label_name.unique' => '标签名称已存在,请更换!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/Article/ArticleRequest.php b/app/Modules/Admin/Http/Requests/Article/ArticleRequest.php new file mode 100644 index 0000000..8336bf2 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Article/ArticleRequest.php @@ -0,0 +1,47 @@ +instance = Article::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'article_title' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',article_title' . $this->validate_id, + ], + 'category_id' => [ + 'required', + ], + 'article_cover' => [ + 'required', + ], + ]; + } + + public function messages() + { + return [ + 'article_title.required' => '请输入文章标题!', + 'article_title.max' => '标题字数不可超过 256!', + 'article_title.unique' => '文章标题已存在,请更换!', + 'category_id.required' => '请选择文章分类!', + 'article_cover.required' => '请上传封面!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/BaseRequest.php b/app/Modules/Admin/Http/Requests/BaseRequest.php new file mode 100644 index 0000000..00711c4 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/BaseRequest.php @@ -0,0 +1,52 @@ +setInstance(); + } + + $this->setValidateId(); + } + + protected function setValidateId() + { + if ($this->instance){ + $primarykey = $this->instance->getKeyName(); + $this->validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey . ($this->instance->getIsDelete() == 0 ? ',is_delete,0' : ''); + } + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + // + ]; + } + + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; + } +} diff --git a/app/Modules/Admin/Http/Requests/LoginRequest.php b/app/Modules/Admin/Http/Requests/LoginRequest.php new file mode 100644 index 0000000..b2b022d --- /dev/null +++ b/app/Modules/Admin/Http/Requests/LoginRequest.php @@ -0,0 +1,27 @@ + 'required', + 'password' => 'required', + ]; + } + + public function messages() + { + return [ + 'admin_name.required' => '管理员账户为必填项!', + 'password.required' => '管理员密码为必填项!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php b/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php new file mode 100644 index 0000000..be8ffb6 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php @@ -0,0 +1,37 @@ +instance = AdminMenu::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'menu_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',menu_name' . $this->validate_id + ], + ]; + } + + public function messages() + { + return [ + 'menu_name.required' => '请输入菜单名称!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php b/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php new file mode 100644 index 0000000..5b59750 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php @@ -0,0 +1,52 @@ +instance = Admin::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'admin_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',admin_name' . $this->validate_id + ], + 'admin_email' => [ + 'required', + 'max:256', + 'email', + ], + 'password' => [ +// 'confirmed', + ], + 'password_confirmation' => [ + + ], + 'is_check' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'admin_name.required' => '请输入管理员账户!', + 'password.confirmed' => '密码确认不匹配!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php b/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php new file mode 100644 index 0000000..c52ba76 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php @@ -0,0 +1,40 @@ +instance = AdminRole::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'role_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',role_name' . $this->validate_id + ], + 'is_check' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'role_name.required' => '请输入角色名称!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/System/BannerRequest.php b/app/Modules/Admin/Http/Requests/System/BannerRequest.php new file mode 100644 index 0000000..7671bab --- /dev/null +++ b/app/Modules/Admin/Http/Requests/System/BannerRequest.php @@ -0,0 +1,41 @@ +instance = Banner::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'banner_title' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',banner_title' . $this->validate_id + ], + 'banner_cover' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'banner_title.required' => '请输入Banner标题!', + 'banner_cover.required' => '请上传Banner封面!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/System/ConfigRequest.php b/app/Modules/Admin/Http/Requests/System/ConfigRequest.php new file mode 100644 index 0000000..ba37ccb --- /dev/null +++ b/app/Modules/Admin/Http/Requests/System/ConfigRequest.php @@ -0,0 +1,42 @@ +instance = Config::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'config_title' => [ + 'required', + 'max:256', + ], + 'config_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',config_name' . $this->validate_id + ] + ]; + } + + public function messages() + { + return [ + 'config_title.required' => '请输入配置标题!', + 'config_name.required' => '请输入配置标识!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php b/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php new file mode 100644 index 0000000..bf1248a --- /dev/null +++ b/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php @@ -0,0 +1,50 @@ +instance = Friendlink::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'link_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',link_name' . $this->validate_id + ], + 'link_url' => [ + 'url', + ], + 'link_cover' => [ + 'required', + ], + 'link_sort' => [ + 'required', + ], + 'is_check' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'link_name.required' => '请输入友链名称!', + 'link_cover.required' => '请上传友链图标!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php b/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php new file mode 100644 index 0000000..d339d53 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php @@ -0,0 +1,47 @@ +instance = Protocol::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'protocol_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',protocol_name' . $this->validate_id + ], + 'protocol_type' => [ + 'required', + ], + 'protocol_content' => [ + 'required', + ], + 'is_check' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'protocol_name.required' => '请输入版本名称!', + 'protocol_type.required' => '请输入版本号!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/System/VersionRequest.php b/app/Modules/Admin/Http/Requests/System/VersionRequest.php new file mode 100644 index 0000000..33e8415 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/System/VersionRequest.php @@ -0,0 +1,55 @@ +instance = Version::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'version_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',version_name' . $this->validate_id, + ], + 'version_number' => [ + 'required', + 'unique:' . $this->instance->getTable() . ',version_number' . $this->validate_id, + ], + 'publish_date' => [ + 'date_format:Y-m-d H:i:s' + ], + 'version_content' => [ + 'required', + ], + 'version_sort' => [ + 'min:0', + ], + ]; + } + + public function messages() + { + return [ + 'version_name.required' => '请输入版本名称!', + 'version_name.unique' => '版本名称已存在,请更换!', + 'version_number.required' => '请输入版本号!', + 'version_number.unique' => '版本号已存在,请更换!', + 'publish_date.date_format' => '请选择有效的发布时间!', + 'version_content.required' => '请输入版本内容!', + ]; + } +} diff --git a/app/Modules/Admin/Providers/.gitkeep b/app/Modules/Admin/Providers/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Providers/AdminServiceProvider.php b/app/Modules/Admin/Providers/AdminServiceProvider.php new file mode 100644 index 0000000..9c6c103 --- /dev/null +++ b/app/Modules/Admin/Providers/AdminServiceProvider.php @@ -0,0 +1,112 @@ +registerTranslations(); + $this->registerConfig(); + $this->registerViews(); + $this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations')); + } + + /** + * Register the service provider. + * + * @return void + */ + public function register() + { + $this->app->register(RouteServiceProvider::class); + } + + /** + * Register config. + * + * @return void + */ + protected function registerConfig() + { + $this->publishes([ + module_path($this->moduleName, 'Config/config.php') => config_path($this->moduleNameLower . '.php'), + ], 'config'); + $this->mergeConfigFrom( + module_path($this->moduleName, 'Config/config.php'), $this->moduleNameLower + ); + } + + /** + * Register views. + * + * @return void + */ + public function registerViews() + { + $viewPath = resource_path('views/modules/' . $this->moduleNameLower); + + $sourcePath = module_path($this->moduleName, 'Resources/views'); + + $this->publishes([ + $sourcePath => $viewPath + ], ['views', $this->moduleNameLower . '-module-views']); + + $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower); + } + + /** + * Register translations. + * + * @return void + */ + public function registerTranslations() + { + $langPath = resource_path('lang/modules/' . $this->moduleNameLower); + + if (is_dir($langPath)) { + $this->loadTranslationsFrom($langPath, $this->moduleNameLower); + } else { + $this->loadTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower); + } + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + return []; + } + + private function getPublishableViewPaths(): array + { + $paths = []; + foreach (\Config::get('view.paths') as $path) { + if (is_dir($path . '/modules/' . $this->moduleNameLower)) { + $paths[] = $path . '/modules/' . $this->moduleNameLower; + } + } + return $paths; + } +} diff --git a/app/Modules/Admin/Providers/RouteServiceProvider.php b/app/Modules/Admin/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..4d65486 --- /dev/null +++ b/app/Modules/Admin/Providers/RouteServiceProvider.php @@ -0,0 +1,69 @@ +mapApiRoutes(); + + $this->mapWebRoutes(); + } + + /** + * Define the "web" routes for the application. + * + * These routes all receive session state, CSRF protection, etc. + * + * @return void + */ + protected function mapWebRoutes() + { + Route::middleware('web') + ->namespace($this->moduleNamespace) + ->group(module_path('Admin', '/Routes/web.php')); + } + + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapApiRoutes() + { + Route::prefix('api') + ->middleware('api') + ->namespace($this->moduleNamespace) + ->group(module_path('Admin', '/Routes/api.php')); + } +} diff --git a/app/Modules/Admin/Resources/assets/.gitkeep b/app/Modules/Admin/Resources/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Resources/assets/js/app.js b/app/Modules/Admin/Resources/assets/js/app.js new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Resources/assets/sass/app.scss b/app/Modules/Admin/Resources/assets/sass/app.scss new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Resources/lang/.gitkeep b/app/Modules/Admin/Resources/lang/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Resources/views/.gitkeep b/app/Modules/Admin/Resources/views/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Modules/Admin/Resources/views/admin.blade.php b/app/Modules/Admin/Resources/views/admin.blade.php new file mode 100644 index 0000000..1ff0628 --- /dev/null +++ b/app/Modules/Admin/Resources/views/admin.blade.php @@ -0,0 +1,17 @@ + + + + + + + + Title + + + +
+ + + + + diff --git a/app/Modules/Admin/Resources/views/index.blade.php b/app/Modules/Admin/Resources/views/index.blade.php new file mode 100644 index 0000000..4ae9069 --- /dev/null +++ b/app/Modules/Admin/Resources/views/index.blade.php @@ -0,0 +1,9 @@ +@extends('admin::layouts.master') + +@section('content') +

Hello World

+ +

+ This view is loaded from module: {!! config('admin.name') !!} +

+@endsection diff --git a/app/Modules/Admin/Resources/views/layouts/master.blade.php b/app/Modules/Admin/Resources/views/layouts/master.blade.php new file mode 100644 index 0000000..b09a67f --- /dev/null +++ b/app/Modules/Admin/Resources/views/layouts/master.blade.php @@ -0,0 +1,19 @@ + + + + + + + Module Admin + + {{-- Laravel Mix - CSS File --}} + {{-- --}} + + + + @yield('content') + + {{-- Laravel Mix - JS File --}} + {{-- --}} + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/App.vue b/app/Modules/Admin/Resources/vue-element-admin/App.vue new file mode 100644 index 0000000..ec9032c --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/App.vue @@ -0,0 +1,11 @@ + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/.idea/api.iml b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/api.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/api.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/.idea/misc.xml b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/misc.xml new file mode 100644 index 0000000..7e5bdf8 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/.idea/modules.xml b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/modules.xml new file mode 100644 index 0000000..d50cf45 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/.idea/vcs.xml b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/vcs.xml new file mode 100644 index 0000000..821e530 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/.idea/workspace.xml b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/workspace.xml new file mode 100644 index 0000000..4b8a53e --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/workspace.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1610455420023 + + + + + + + + + + + + \ No newline at end of file diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/admin_menus.js b/app/Modules/Admin/Resources/vue-element-admin/api/admin_menus.js new file mode 100644 index 0000000..05c2fd5 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/admin_menus.js @@ -0,0 +1,48 @@ +import request from '@/utils/request' + +export function getMenusSelect() { + return request({ + url: '/admin_menus/getSelectLists', + method: 'get' + }) +} + +export function getList(params) { + return request({ + url: 'admin_menus', + method: 'get', + params + }) +} + +export function create(data) { + return request({ + url: '/admin_menus/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: `/admin_menus/update`, + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: `/admin_menus/delete`, + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: `/admin_menus/changeFiledStatus`, + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/admin_roles.js b/app/Modules/Admin/Resources/vue-element-admin/api/admin_roles.js new file mode 100644 index 0000000..150c680 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/admin_roles.js @@ -0,0 +1,48 @@ +import request from '@/utils/request' + +export function getRolesSelect() { + return request({ + url: '/admin_roles/getSelectLists', + method: 'get' + }) +} + +export function getList(params) { + return request({ + url: 'admin_roles', + method: 'get', + params + }) +} + +export function create(data) { + return request({ + url: '/admin_roles/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: `/admin_roles/update`, + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: `/admin_roles/delete`, + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: `/admin_roles/changeFiledStatus`, + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/adminloginlogs.js b/app/Modules/Admin/Resources/vue-element-admin/api/adminloginlogs.js new file mode 100644 index 0000000..2e3fea3 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/adminloginlogs.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: 'adminloginlogs', + method: 'get', + params + }) +} + +export function setDel(data) { + return request({ + url: `/adminloginlogs/delete`, + method: 'delete', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/adminlogs.js b/app/Modules/Admin/Resources/vue-element-admin/api/adminlogs.js new file mode 100644 index 0000000..c303f10 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/adminlogs.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: 'adminlogs', + method: 'get', + params + }) +} + +export function setDel(data) { + return request({ + url: `/adminlogs/delete`, + method: 'delete', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/admins.js b/app/Modules/Admin/Resources/vue-element-admin/api/admins.js new file mode 100644 index 0000000..201bbe3 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/admins.js @@ -0,0 +1,57 @@ +import request from '@/utils/request' + +export function getAdminsSelect(params) { + return request({ + url: '/admins/getSelectLists', + method: 'get', + params + }); +} + +export function getList(params) { + return request({ + url: 'admins', + method: 'get', + params + }) +} + +// export function detail(data) { +// return request({ +// url: '/admins/detail', +// method: 'post', +// data +// }) +// } + +export function create(data) { + return request({ + url: '/admins/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: `/admins/update`, + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: `/admins/delete`, + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: `/admins/changeFiledStatus`, + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/article_categories.js b/app/Modules/Admin/Resources/vue-element-admin/api/article_categories.js new file mode 100644 index 0000000..99b3a5d --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/article_categories.js @@ -0,0 +1,48 @@ +import request from '@/utils/request' + +export function getCategorySelect() { + return request({ + url: '/article_categories/getSelectLists', + method: 'get' + }) +} + +export function getList(params) { + return request({ + url: 'article_categories', + method: 'get', + params + }) +} + +export function create(data) { + return request({ + url: '/article_categories/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: `/article_categories/update`, + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: `/article_categories/delete`, + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: `/article_categories/changeFiledStatus`, + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/article_labels.js b/app/Modules/Admin/Resources/vue-element-admin/api/article_labels.js new file mode 100644 index 0000000..ebc0126 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/article_labels.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function getArticleLabelSelect(params) { + return request({ + url: '/article_labels/getSelectLists', + method: 'get', + params + }); +} + +export function getList(params) { + return request({ + url: '/article_labels', + method: 'get', + params + }); +} + +export function create(data) { + return request({ + url: '/article_labels/create', + method: 'post', + data + }); +} + +export function update(data) { + return request({ + url: '/article_labels/update', + method: 'put', + data + }); +} + +export function setDel(data) { + return request({ + url: '/article_labels/delete', + method: 'delete', + data + }); +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/articles.js b/app/Modules/Admin/Resources/vue-element-admin/api/articles.js new file mode 100644 index 0000000..74cc060 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/articles.js @@ -0,0 +1,56 @@ +import request from '@/utils/request' + +export function getCategoriesSelect() { + return request({ + url: '/article_categories/getSelectLists', + method: 'get' + }) +} + +export function getList(params) { + return request({ + url: 'articles', + method: 'get', + params + }) +} + +export function detail(id) { + return request({ + url: '/articles/detail', + method: 'get', + params: { article_id:id } + }) +} + +export function create(data) { + return request({ + url: '/articles/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: `/articles/update`, + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: `/articles/delete`, + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: '/articles/changeFiledStatus', + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/banners.js b/app/Modules/Admin/Resources/vue-element-admin/api/banners.js new file mode 100644 index 0000000..188f87d --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/banners.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: '/banners', + method: 'get', + params + }); +} + +export function create(data) { + return request({ + url: '/banners/create', + method: 'post', + data + }); +} + +export function update(data) { + return request({ + url: '/banners/update', + method: 'put', + data + }); +} + +export function setDel(data) { + return request({ + url: '/banners/delete', + method: 'delete', + data + }); +} + +export function changeFiledStatus(data) { + return request({ + url: '/banners/changeFiledStatus', + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/common.js b/app/Modules/Admin/Resources/vue-element-admin/api/common.js new file mode 100644 index 0000000..7f287ed --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/common.js @@ -0,0 +1,16 @@ +import request from '@/utils/request' + +export function getUploadUrl() { + return process.env.VUE_APP_BASE_API + '/upload_file' +} + +export function getBatchUploadUrl() { + return process.env.VUE_APP_BASE_API + '/upload_files' +} + +export function getMonthLists() { + return request({ + url: '/get_month_lists', + method: 'get' + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/configs.js b/app/Modules/Admin/Resources/vue-element-admin/api/configs.js new file mode 100644 index 0000000..4a9b2fa --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/configs.js @@ -0,0 +1,65 @@ +import request from '@/utils/request' + +export function getList(query) { + return request({ + url: '/configs', + method: 'get', + params: query + }) +} + +// 获取配置分组与配置类型 +export function getConfigGroupType() { + return request({ + url: '/configs/getConfigGroupType', + method: 'get', + }) +} + +export function detail(id) { + return request({ + url: '/configs/detail', + method: 'get', + params: { config_id:id } + }) +} + +export function create(data) { + return request({ + url: '/configs/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: '/configs/update', + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: '/configs/delete', + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: '/configs/changeFiledStatus', + method: 'put', + data + }) +} + +// 同步配置文件 +export function pushRefreshConfig() { + return request({ + url: '/configs/pushRefreshConfig', + method: 'put', + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/friendlinks.js b/app/Modules/Admin/Resources/vue-element-admin/api/friendlinks.js new file mode 100644 index 0000000..7635f09 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/friendlinks.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: '/friendlinks', + method: 'get', + params + }) +} + +export function create(data) { + return request({ + url: '/friendlinks/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: '/friendlinks/update', + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: '/friendlinks/delete', + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: '/friendlinks/changeFiledStatus', + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js b/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js new file mode 100644 index 0000000..44a4d46 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' + +// 首页 - 基础统计数据 +export function statistics() { + return request({ + url: '/indexs', + method: 'get' + }) +} + +// 首页 - 请求日志统计表数据 +export function logsStatistics() { + return request({ + url: '/logsStatistics', + method: 'get' + }) +} + +// 编辑登录管理员信息 +export function updateAdmin(data) { + return request({ + url: '/updateAdmin', + method: 'put', + data, + }) +} + +// 版本历史记录 +export function versionLogs() { + return request({ + url: '/versionLogs', + method: 'get', + }) +} + +// 服务器状态 +export function getServerStatus() { + return request({ + url: '/getServerStatus', + method: 'get', + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/login.js b/app/Modules/Admin/Resources/vue-element-admin/api/login.js new file mode 100644 index 0000000..13124ef --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/login.js @@ -0,0 +1,30 @@ +import request from '@/utils/request' + +export function login(data) { + return request({ + url: '/auth/login', + method: 'post', + data + }) +} + +export function getInfo() { + return request({ + url: '/auth/me', + method: 'post' + }) +} + +export function getMenus() { + return request({ + url: '/auth/getRabcList', + method: 'post' + }) +} + +export function logout() { + return request({ + url: '/auth/logout', + method: 'post' + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/versions.js b/app/Modules/Admin/Resources/vue-element-admin/api/versions.js new file mode 100644 index 0000000..0abb550 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/versions.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: '/versions', + method: 'get', + params + }); +} + +export function create(data) { + return request({ + url: '/versions/create', + method: 'post', + data + }); +} + +export function update(data) { + return request({ + url: '/versions/update', + method: 'put', + data + }); +} + +export function setDel(data) { + return request({ + url: '/versions/delete', + method: 'delete', + data + }); +} + +export function changeFiledStatus(data) { + return request({ + url: '/versions/changeFiledStatus', + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/assets/401_images/401.gif b/app/Modules/Admin/Resources/vue-element-admin/assets/401_images/401.gif new file mode 100644 index 0000000000000000000000000000000000000000..cd6e0d9433421b3f29d0ec0c40f755e354728000 GIT binary patch literal 164227 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⋘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 GY5fOuZZib{ literal 0 HcmV?d00001 diff --git a/app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404.png b/app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8e2305cc973ad2121403aee4bf08728f76c461 GIT binary patch literal 98071 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 literal 0 HcmV?d00001 diff --git a/app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404_cloud.png b/app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..c6281d09013e0a2c5f8e699a0a6038d9480291e5 GIT binary patch literal 4766 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 literal 0 HcmV?d00001 diff --git a/app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/fonts/element-icons.ttf b/app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/fonts/element-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..570a3e11b2f002c146d7fdc20528951442f6fd93 GIT binary patch literal 11028 zcmeHNeRLbum4A0e-I8rLeK@MUHh@CIy$$$ zeKE@Pw|L$9cy?do8z>3-DJV2HIXLjUr{6e@{uiV2-tmEbQ?y-t9Pg^|9GVyy zPd_Sdy;F#mc8vM()Z}zF@YK(r79#qx5b|n)xy!kQoVdY)<_ilJ;+jRDi}f1RKKWS7 z9XFS){(~stwnDt*`?=@reIaKdIfrM5khm5f=5(=0qlQ0R>%t#~;YWPxs zpDTvf4+%x=Q#Tmv$J}#h#$(~bL&=ac-~XRJDg%hc$|3>*S1clW$CTZ#QOi6 zy+s_uvjcyOfqiO|x?zDauum0gvtGgj`f!WQX32@ZCBiLAg-4W$a^V#f!Y3-h!7l$k4VAh>Lk6k20 zm*^HrkrEe(3&l#YN~{)ZM33kNCN2_d#X8X^){6~dBPPaZ`zw7+IR2GJFB;a(WqHV~ zfmFmklQ2aUMJDJ^sQk>+cH$0wGcgWSV1)@<6)Nz;1pNvXIAVgPg$hYCLFYoX8wBkO zmHDz4DaW1pf`AC2GGF#66}U5B5Ktmi=F2m##GUzq7<(%7WuN88o%w=*CZRH45O5__ z<_iMCgvxwDz?x8*F9@g;D)R*ae?nzmARtkw%nJle3YB?*fKH(@FA#7lROZG0J%l^+ z0s*^1WnLhlSg6bk1Uw6sd4Ygzp)xNJFfLT)1p?ZI8ZrpD7b^1t!2*QJyg;x8Seikw z3ZZg;5bQ&!+#ketta5)4Y(}Wu9|Y?WD)$G$j)cnnL9i&Ha(@tPOQ_r*#6Cgg{vh@X zD)$Gmzfie92sS8G?hj&Lu5y16>{6)w4g?Dos!6a_p_&A%6{<&D!CMH`B=`-XngkCbRFmLK zglZDJicn30e-Wxl>}l}XBfcp#nG%uBf=nVY6Btl4L3K(0DN5v^rfj?ICMfjsIxlQmK*L)zO;G*Oi89 zD+Xq|ChA*)PNH0ne6=CZS9-lQUVQ(yCg7{6wwISWs%lCj&6TwGze=in?)uhWvh2x- zfB<0FLpaexsW?R=-MDzj?vLQoK*2xbkD9`2W1CH zJ}~;<+bc_4ciDaRyIpSIcH6zcLtTq(l;8$Er_ir))L~pFBxnn@u~Vy%$`!EEcM-^WRn7 zY^w-GWJ$JHwsv|->Rq{_b|=yA*Qx{J^(zf;=H^FN4s725t z(r?+{L*tb;dn8WX-mYXS(LjE0N>_R%eevJDrH!RtT-+50oYl^NgRIZHOT9$iQfbz> z&%brR=?pm8(Hnf_PfNdNzAb=Hx7TiK>Y&!HUh3{4Hie+qL-KIQ?fZKd_&J?F1gntF z$x~4(Ro$ucavm=!t*9uS-(Ff_@RVkORamG~N;yf|quoh+mTBLj%VeSDv|JlqL)Y;5 ztk1lhmlfa(I}%0w34fv+K<;^-B#1DquRK$^48`jeR?m8zDMcj`aK54O>Jgi@7))-w26%Dnj@D^C$)YGh)UIu$e{I*kAbY4^dooV<)BSPnNd;5*h}?B4 z+jaT)qV}LYmtW6ulpXQJt4^070&RJ*=PK5lmfYIiDk?@J_+I z5+0Ai1{eXIKJ6{-tr+2k3;AN&Tjaw$a7D5BjXoPV#w&EZf(vsn_}EEm)r}g^mJIVo z=`4aN_aQ7lCVfS~C$vP-KT7xiIz~Y$5c~EUG3^a0$Uzyu)v@rwPijAX#3J zQt^76QWUe%zw`>hQ|V^)(wS0`$7);TyNtQ!;Jcj27L3^nALhw;_J*AlPWcmriMN1w zY-kLVVf6sc_h>70)CwRKGX%C}w0LqaP^;t>1yeNU8G_t#Q~>P}Sd%0uG@pm!=P<84 zdSEGND|8>~M0SEa06~v21#e4`>;Q9$V9Dn2(o-|qzK5Guxi6&6F_un_fFcxTv|F3L z7P`<)n_GZ}|Id_in>?<_U}C3Aqh+yncVz30GAG zIZnjlmX{wod~&|;n)@EU|7x;4F*9?-SnGG>?_#Yb$moy<@W_Y@^Z|*3Ob#}EUCAh- zg=lNamu%G|Hd`>&gK)_%+XBHJD7DDR5Y;p_C7POABXNtF z>mr?fiyiR0ja`lSYX4-bbgpr_B#VpubxSOCVSAZNudtSAzo|xagv^8WqvM5hAP48R z?3JCw7pXf8C;;V(oI9Ooqym~1TAWU3Z!e%Do(8nHsp4j4!T3KaKP+E^7dGV4<($)| zg1)F6O!=^VILS&Y>}VXd~ddLd*S$Hd6l76x}hUDW8i=H%;xB znm;Ce{_**pmotV~pD+krt{fNOTm+$~4kMPW5%2ckRIf^VyoyQpxyPl!O`8TK{Yv>C zXg_v1X!#Ee%@*qM7IVi=Y3@<7uow9nWUZ9&Mu7APtO!#Nck^yQATPEAVw!`6Dm1qM zIW36s*pV2O;exOBJ6vSIm0y_6Y=wI1%Y_ol&a!BI5zby2IfZ31gz%{ENn9u(s<>Vf zSXj~WXO76umv6rLWv6^(2Bu^f6s|BN!<^_6S%H|&ie)ug-u_Ns-#fR@9J%dG`z>QV zh4wH)W3IppZ~;9VveFU5+ctxS?>SQNg>T~lNJQ5MILZB(39pfn4BfZD zk;+(Ki-($8yON!OIo@BG6l|71rrIU7_~vG36{-JpPR^fJ4pnjuAC~Z%aLHp$PSX#b z^~>kcDdpj%^N@;^Kc5P9j}2!Ik9~fX37lN;*fgiFC4^I!Zay*K9H|Ibl{Q{g%i_rx zx$!wGA79=})Vtic8VjYNbJVRqN8Q|+j>~&{O~GCC7uM<6SvVm-CdZ*2;gbm=1f^b? zL2A9`+xKg~+a$-eXXjs^Il76;?&qZ&_QkTdV`mQX>6Xvv6qQYTmbi;I9+-D$gv54gvAW^4AY@g7~+K(m2W?;oj5jfz4kBh(JQ4c1u)t&_6$eF zoC=)LJC|I1hQ}7tf`A&<66|cCN_|7>N-FGQ^V#DBw>nqTUW4z_WRjh1E}wl*`=ONR zuZeZWt0}n!2T8iW)$wHTEyqb7&H{>fbNU;W>C6alm+%*cI*Z4m;n=NTmj2@{?VX0M z27HUvSv>muFO&PeM0I3o=w8*;psT8&I00K;n8O|)0=@(XChP{f5!}-phgpgq;?S&O zJ_sXL%F7(r8BrZHl7gRwi-oU6V8aW+6EXtWoHrarVlX#5D=D+HY;gVaq8~wzfPpAX z{rQ}P0B=5@N3eir9uw|IiE8`f`6Q$&f~ zeRoVL+_hJYXY)?|+AC&*R`cG{t9LN#jlJq!`IE8-XT9)T@D)*@3Tb&TkW59ejtGHp zhdxZmwc2FMwpVYtIzm+&64W!wKb9EL?j|Beftk@zw^~pqN{(9thwB0wce6dJ-t^}`dVr) zSmF;6RhBy&R=6xUkm&YBJdxmLZ&j6dnWt9!Ej1;Ysi~_;6!!i+^v5}XutJ!aJ0yp5 z0QlrZ!IHLC62++~{Tu+mhcWO!@&VZ?LU?GP9_0QW3W67o`=n&bYBTC=_LgK+`fBq{ zmz8y2x4qS)ooKl1(pE>}W0zJ@l{MABB@({&`g-kGvO|i5Exk8fUAuJa@}qSnk@Z)u z_SZIzc5V)~-?%LvSTb5$Qy4cdzl^y%fds2Bic>DD-G}J=)zq7`{@#0O{hO)lK2LpW z2Sv4$9jbOz_f=2ndThjROxKDb%s8l@=XoQDVeL^Hr=pMo%q5AGG?;88K6wM-EmVoL z8Nk9R9J2NRPT|l7=TS(MfI}R|EearXF>(lnsPp5mwFR2pTenul+g@wiumP7~1^=ThyQrHm$ns4D*}! z_Y|08h{agJFC)d#w`>n0$y|h%lKA7aEvEf!aqxV7`%|6yy`l0D<72C%ph1RdcxxmyRNjfwo z!HHh>$=yx&Jtxc09W`3!&=D~vhiCen^YTGpt_Ei<_??3i!ASJXF^dfE>`Ry_n7wdh z%#m!0Gdd|h8&JyiBx^W9*J=IAtPxizW)wIV`})^o{fg8-H;Y^gnY4lg%uL42L@c1K z)Ekja`=Br%!+!Prz1V`;lnwbc5YKFpeu@v>ZiLM&GVS66H~NB7(7j=6$a-6X(NqTv z1LxZMy7hB+$M^8Nve&L1i1E=a1+al{fuiGM@N8-1wVnpfw)J#6) zAdc-mbUtPz8v3>MQ?xXuJ^c70q%A%fx_5?_#l{|vMCUPX!PZy&pggOatdDX8lD6{tG+uYyp+Njj~#HuE~y=elQU0y1;A>9prf4=>uT3e zx^G{cSRaw)BQ%m%@_7u-`StDHKXFxae%;=or*QLqboKpTMS_joWabFn$Sw1E6XSWz z>CfoJ2V8p-=S9`CpIh=MMlL$XU96N{dphqVBx8sl`66-r9E4SIey0EG!D(nx6z5@! z+^gXQbc{>lU2;p3_TIbiYVS!Bx!?WTFP1L-#n+7Mc|4{x7toFebfT_6fV!5I{Ak05 zAC>6W?(@1q);SDM0etoI8l2EYk;U4hGU6*78R2+F$;T2B5X1*J^B+jId`v4<6ulep za#r7nDgUg#nd_g|^R)zh{RKL%$22f;%s)@>oAMUEqK&FJ7bz|mrz4ar$~hK4`~jhB zN3SIHb{I|0Rp#OOxBAxv8AV_pg3!x^GZMd9mV_NPVbsg0Uuu>uC@0M_TirUdY(xF! zX4!>P@axSoN5P-Ls>y;l0l#~H-YgS*__JnN!fD>CW?4r4n`YS}YRGDqts+2;X4!`N zZnNwXTj^tFxkR+mmt5;I>49u|D753&(CFag#PH-q)|DPhkEbWHF|L^2lHR#{Y#_6! zZqdWmbY^;Vaw4=MzI;*r#`HuwQ{X+lXJ=(V373K*koubGkHsTFdHAq zW~WwmbnxI@A0M0?M~bvgWbm(810sv-kO+w#;#OQo#h{oJ6Jl7uX3;J!#z5ns3ABx! zX)!Ifpl+wwjrRjOuk*D#KZmX0kP*}1$zz7_b8;O2MsWW28}(UmpAXM_8b6fp#J>?_ z@iz=k!)P;!S%<_1b0y4m4CRoR(%;#MIs3boHu#Z(yHPuipay`xo8Yx6! zYN7}=Qwy~sh+0BR@wY{E+Vsp8GE~J(Cv2Zo5L8RS_{N*BA zOY5kQ*3$+Y^j(ZVh4$HYPmN6u3|Z5e%w)zsy?bylJw0vTJCK%5 zJ6Y@CNP2LWZ3s4!O_vtl7!w+r9Nf(oXCI2`Ox)?A(QIL42hU%Z(9X%pp=sN6dLT16 zVi|?4+Q%WPft_g!w|DS=R%T&|c5V#Wl@}@soGch)w{?7UV)wLV2Mo-lSvnvTlM-<{aUEAPmK;{cW2UN=DkpFVIA0~GNZ8Ij3qNLvCE!G4`=D`!GgO>aEIU!G`JJKx%YeT zRlQxcs?S=z_dfQctCy#`oE!iF01uKA0LFiw?+E{w|7ZOFhx`W}DF6Tg6|VBYAyxaY z{#5+~2RB?3fpcj%bal@Z1kD{xp>Qn#j#U5vq&-*ElVENC#R>ob8UX;f%m4tTM&xqv zJjBw}0stV0fY))r!H*;VNCtt6aIG26-@-wMvI!i9IJkMiwIw(wg7loy`A} zcMjJQ|AULx!)FImFZjHKA#e_c<1K;#z}eB%!4j?&!RrhG0K~FNz?UefldBs5Knzbo zIEJrDgt&RN)hpZF#KOd6(=5S!%GAWo`3lW+)5OFy0FZ!bu4d&;qk%aJ9EAngV868r zjz9!N(E`;0|E)1K$?onR?e3WyaSIC!EC5UKbXswm?V6aFn3-5wb)zHB7=0k6BxT8M z;SzXuGKnyCG=Tund4hHUOLiD-@E!wm^12j~r2QAKZ>bZ9-v_Jw+N5+2iH+Zqh6;g8 zh(A3bH+z>0h#?f-CCObCX^OkgqhJE5gzMRP{cV_rz@Hsfj;RJ$kB$AFUP{5ze!f!@ zp7HUgWGi-)qtgv}_xh8A&+BN9D%=CSJmcI$A{d>0G|H^?y)1T>^*s!R_Vs=2z+Bjn z7z(9JKNn-RH_?F+bcAT}llo#sXTcEawf(&T&l)a!Sggu*&7pz8QfO>$# z7M2u|+M6LWw&nIc1*$e}D+q(IWg9oVQR7-cJs@)kONwpkC6iy>YADQso=rP8BS3J^ zg0hGmK`S_SKq{F-7Se; zP`QYJ#vWP_%Ot+`mvZ>)=xzO!@RPFlmwbYbk&*=IxP}~~ zMv(IQonzGTU7!JP#)TYx6MxWQdnC!NEdL;wc(Da#I=cs zGu5_OLPVgGOWsE5p*up?_mY=?z6Aen>25J0RR4UF#3JYslYD^WWoe9B9PuGaQ)>x0 zME@Yy?kF4SPwItJ$zJZ;k6Y<38+OudBh~I@Y;T=jFJxZ!J-`uax;=DOEzHYIMwtu31ujDUnaB&nDV(iF=)ndZ`dDu;g zPOmoRO&G@u=bz(C&^O*thK{P=r6}1od=EhYNif^W;^m%Vjlhuuy-w%J?6q%?K;ZcZ zXuaA?oUXnvfdX+0-DL{L-rO_k8V755^4J%s?`D|&ObvEeHov&cb-WIh>by+nu(&Fc z)u#6@O(SlX@H`i-HOGD>t~3duSo;$?Uz@3YV#A$uSn5PJph=sdzz{C+s|-Jg!a1(_ z7MQF=PZfWbWLZ-Gb>_PUAzN|XCkF}JWv9%%C`#91&hK&wrr5TEwoMrNaX{j~_zC1^ zj5v9og1^8`OoXS?Upyx?g6DrKRCx22I!-R1f|@eHd-6U#0DB^yJX$x-VpoH@8{m=- zvX>Wj<>p2vP?+?v>Z>P}dUtx@aP^;Rk}qelE|^lN+PzjTBJk2cLl2$t`&$9K=dfX(VID z)6(`rQHXIXAmY6)@=KIF3{uiqlES-}@9yl%>iNV5tq0x6ciT zvw^WvjiMbwJ=jEuI|Y`?zH2`iF(1Fk=hGD1Shil>0M zsDW18uPT8mg=J~}8QWb&E=q3By7t$2l*|Fgtud%H z_=w2V!TD$`0kA-3Nm+EO%FoV}t(xlVJC+S~HksNSS+WiMvfZTK`qnZW1h!DbFpZ+A zMfa-IFWxf{0qXW{&7g| zv_L>$nV(~LcqZ~gK{26!URNHs`==u0uM~ORY20NM&s*VA&@JmUJ-j`eUOodnuBEuv zZ!tv*WCOnp5Cc3cQcMB_H|lKXi49~Xi2_MecdwKsHqr|=#_i{7@N(kh7wt>jo-!fJ z`EqXO*a5=Gi>NmRcOSQxH9b;qwj-QZ>zyN$3;o9BpYvDP#W<0c%hLUCGhE}`j$%-x z*s!eY+TGosn4kX2=)Et(KZxmYm1n%XkX)3Go52RP|N!1xhp3 zxbo`e-zMjmdYe|q)tA*##zT_0l-CpNKx&~q!`sJQ8b_6WR??OV2AKh_!cedsUI~$d z`YcK+n@@lN;W+pl>?6W?htgzOajKwrNhv5k!{0iOrud;%TV`QI45`UI}9$GPKmuJE+m{7hiw{ScE=o}n%}AinX*jiNJ^z^&S7WR zJFT&bbKwzWnhlb@3v!$UnkO0NnYjIm2i#gyO@32l9^ZYY&xWGxv(xMYzu06GfoGLZ zx)-WYNJpi7>O_-KI$_aSt)kR~kVOH+Xeew7hT+jK;81S6415o}7^MUyPT!(o7OC`W ziuWfiKT9;wEs!{GCyx4K!t}XBV$AS>b2`BpA8&xB)A+PSV(hEVP$Bk7lMme@fUEQh z1uO0XA{bZt&crx_w12~3SR!AVBX`#BFfPoth}s_S~R-*zEK8Nch>-XLTn7#d@J$$b9OD))erEv8wXDEQ%#S`y&g6aC|Lblgd{N5x;q=d*=VjirH3UW8+L3cr-wD?=9{P{Yr)LS{38N7D*OFxEhiIEv^EEE zXkTpFh#-R~l8j1^>stTrBIoE2G~FyxWNSH@eWV4w*Qh2E-H$W zd^6)ttn%EIHi6=gHP2@2MDI#4Qm{ux`MB&oYgbPjkI;Rx9~2d2*kg#uS-@j1?=v|{ z1#yVZ``@h;BDNGozhC(D^?s{s5Ypnl-kK&47OuFmqO;?0^t-QNiN*Onos{XbJ&h6_ zncG?Xs4rBWXRI@8F))6>79)@Zvfx@V%}kWoEU4Kho8TrSgqXlI?QeDlI!&7=C%Ql zocWbwCyxe;J=}%~TZd0`KW;6wQx0j{aN*w|P#n97k$Z1ptj zfGsPhgLY*3B#!hX?JgD$oTdh(gM0I50o=)J2@#5}YW{)7LH#zI0In8x{q1O`vWbw* zjmo*@-tO00#r=UL#)U-c%9oe7!l2WlhoD)@pDk;V?Q&f+^^US{J@52pCMVsh^)jz5 z#9A9b2HBw(I^`~lqEyc$F@S~l`_1N#$+xV$+8krY# zsTM5`D$~{R)fAQcyAM-2pE~vKiDKS}pcZzqti6Cpzx)LA`gOh<`}IcYaOhv1(u|E5 zTLcgPta@qBKf(_!RZjkH*2R%NVy?(?&?a%xz7^>-ovg<|TiYt3eL8K5o8sfAN2nCh z=f^ZhkIQ#=J-Kldd&^s;Kbv^wTXEO4nlOBHy|euTV%rm>{ft*kONJf8>gWi;@nnkc zKc?u&(F(tOx@lux@A&i-xZ~x?S#|++@BO zsrvei-L=QKL*$NhBb#w|lb&20PIbCjr{A4M%KI7bN~Gg@r~OpeaHX`e`6Fqi>P6l> z!^s{EZX6oI=VON@)Alj%3j)3*~=G^<$1EbiXxn0X?srJ0J%{-t@&x#htf}bAk+l z#ow1~x6(aH=glg$B4i&BD+rqJ!*#xtKe58RajMrn2@)royIg8Y<8H|K*EXX+@CBXP z>D@3`R87Ul1@1Yfv%v?_}5C~R=K+`MlYt>c0 zUl_t}Y>vW~4(e_$X=dL&@nyUvlt2{dCHkl+mVsP@COrFm*LqLr@#FsQpSG{upx-Wh zP93+#w^Yxc=4K8v$`7f9j8#7J>+v)X2S)Oo{3Qr=x9d}PX*p4lVgS5Ix>0s{+9dHYsKmk@T@JS(wdClpKo|AimMz#yVku6 zeJEdE0jZ2*|KLv4|M8yy+o#9chT9Jgo!roR&VX*dt<|rnkN!XmT32AgSWh<+J_tav zf#&vq^BwOux^eq@ySvX{#W84s8b~0xQ|7{tR15EC3iqJ=M!LIuIip~vfZ}~bH26IK z4G%ya;1PiZ!2{tt!Z^Y5S_BCr9t06apXM3O*) zB84DTBaMTQK~kV>P&eod`3>?XJ(KjB!i=CJUwoW(;N}<}DUGRv11V|J(byiGt;(2>^lN?LMLu za@ebh7!W}2i7*b|t8curS|2BFnEzd<0tf?_wYA4A5UKP~I!N|s$_kZ&v0ERDY7V~+ zzI>cv8ObI#Wk3=X{!5T%l8CKPri~waHF0p^g}90N8FxvPgix4Ru)uzZh;l2lMd@E^ zi`?_DkvxI)KJo*j70R8LspB?f&79<19CKSAMZE+Dc$_GEI|-hd)e@Fk%CqRqT%As_ z3r?p}8Q^gx5ZGQPBj3~KORKNK^vyvMg2hE?SK_b!lI7QocHhlNd`JJmvQC4s?!ZIY zuM*$V&&N7Tc4I{XS#HQhCasidhMUj3`0Fuyl`2Y(TKDf8ca=hH)BMez8KLlgOhW_d z`zZxn!ir*{&2J$TZd>6(S&ry;r}i#)HWioKy|p?;5j4e_%%bGevPS-!^c1ffH@vYXU!82d$4; zS)8~Q?7h9GXNj)fe^Zi`YtnMZCcDiXuJzy2pb3BW^F_*z1b;^%_3-qtMgbX0`XKkb zPEt2PF)^vVHzTHo0Map>gZv(~(K~{HqAF1Q5-7Pfl=uMph6IY21||ClC0c}12|x*c zLMc37tUmg+82Dg8kc3OR^nIfH*=FAR5CQP*@o1S9ePLhC)f?f83@k*I&9zY6Ewy) zoQpxFIAe-^jl`0bGn-ac{8o4&G>fhT_W@Zb)pvf3L}(o@Bo!L??@SpT&)u@p%UP%p z^Gvup>2NdZF3KxK_bVEow=VhoY{RY;<`OSNch%QURaGq0tS(XVp5#7F0##MUr#tS| zM#g6y2n{MT8(BgQ{;W4v`yLd33#IK-(PC{b$e_-W?P95GjLI!A;$Uvb`25W .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-tag { + background-color: rgba(38, 39, 41, .1); + display: inline-block; + padding: 0 10px; + height: 32px; + line-height: 30px; + font-size: 12px; + color: #262729; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid rgba(38, 39, 41, .2); + white-space: nowrap +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -5px; + color: #262729 +} + +.custom-theme .el-tag .el-icon-close::before { + display: block +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #262729; + color: #fff +} + +.custom-theme .el-tag--info { + background-color: rgba(10, 118, 164, .1); + border-color: rgba(10, 118, 164, .2); + color: #0a76a4 +} + +.custom-theme .el-tag--info.is-hit { + border-color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close { + color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close:hover { + background-color: #0a76a4; + color: #fff +} + +.custom-theme .el-tag--success { + background-color: rgba(64, 145, 103, .1); + border-color: rgba(64, 145, 103, .2); + color: #409167 +} + +.custom-theme .el-tag--success.is-hit { + border-color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close { + color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #409167; + color: #fff +} + +.custom-theme .el-tag--warning { + background-color: rgba(157, 164, 8, .1); + border-color: rgba(157, 164, 8, .2); + color: #9da408 +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close { + color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #9da408; + color: #fff +} + +.custom-theme .el-tag--danger { + background-color: rgba(179, 69, 14, .1); + border-color: rgba(179, 69, 14, .2); + color: #b3450e +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close { + color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #b3450e; + color: #fff +} + +.custom-theme .el-tag--medium { + height: 28px; + line-height: 26px +} + +.custom-theme .el-tag--medium .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--small { + height: 24px; + padding: 0 8px; + line-height: 22px +} + +.custom-theme .el-tag--small .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--mini { + height: 20px; + padding: 0 5px; + line-height: 19px +} + +.custom-theme .el-tag--mini .el-icon-close { + margin-left: -3px; + -webkit-transform: scale(.7); + transform: scale(.7) +} + +.custom-theme .el-select-dropdown__item { + font-size: 14px; + padding: 0 20px; + position: relative; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #5a5e66; + height: 34px; + line-height: 34px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer +} + +.custom-theme .el-select-dropdown__item.is-disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-select-dropdown__item.is-disabled:hover { + background-color: #fff +} + +.custom-theme .el-select-dropdown__item.hover, .custom-theme .el-select-dropdown__item:hover { + background-color: #f5f7fa +} + +.custom-theme .el-select-dropdown__item.selected { + color: #262729; + font-weight: 700 +} + +.custom-theme .el-select-dropdown__item span { + line-height: 34px !important +} + +.custom-theme .el-select-group { + margin: 0; + padding: 0 +} + +.custom-theme .el-select-group__wrap { + position: relative; + list-style: none; + margin: 0; + padding: 0 +} + +.custom-theme .el-select-group__wrap:not(:last-of-type) { + padding-bottom: 24px +} + +.custom-theme .el-select-group__wrap:not(:last-of-type)::after { + content: ''; + position: absolute; + display: block; + left: 20px; + right: 20px; + bottom: 12px; + height: 1px; + background: #dfe4ed +} + +.custom-theme .el-select-group__title { + padding-left: 20px; + font-size: 12px; + color: #0a76a4; + line-height: 30px +} + +.custom-theme .el-select-group .el-select-dropdown__item { + padding-left: 20px +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-select { + display: inline-block; + position: relative +} + +.custom-theme .el-select:hover .el-input__inner { + border-color: #b4bccc +} + +.custom-theme .el-select .el-input__inner { + cursor: pointer; + padding-right: 35px +} + +.custom-theme .el-select .el-input__inner:focus { + border-color: #262729 +} + +.custom-theme .el-select .el-input .el-select__caret { + color: #b4bccc; + font-size: 14px; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + line-height: 16px; + cursor: pointer +} + +.custom-theme .el-select .el-input .el-select__caret.is-reverse { + -webkit-transform: rotateZ(0); + transform: rotateZ(0) +} + +.custom-theme .el-select .el-input .el-select__caret.is-show-close { + font-size: 14px; + text-align: center; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + border-radius: 100%; + color: #b4bccc; + -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1); + transition: color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-select .el-input .el-select__caret.is-show-close:hover { + color: #878d99 +} + +.custom-theme .el-select .el-input.is-disabled .el-input__inner { + cursor: not-allowed +} + +.custom-theme .el-select .el-input.is-disabled .el-input__inner:hover { + border-color: #dfe4ed +} + +.custom-theme .el-select > .el-input { + display: block +} + +.custom-theme .el-select__input { + border: none; + outline: 0; + padding: 0; + margin-left: 15px; + color: #666; + font-size: 14px; + vertical-align: baseline; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 28px; + background-color: transparent +} + +.custom-theme .el-select__input.is-mini { + height: 14px +} + +.custom-theme .el-select__close { + cursor: pointer; + position: absolute; + top: 8px; + z-index: 1000; + right: 25px; + color: #b4bccc; + line-height: 18px; + font-size: 14px +} + +.custom-theme .el-select__close:hover { + color: #878d99 +} + +.custom-theme .el-select__tags { + position: absolute; + line-height: normal; + white-space: normal; + z-index: 1; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%) +} + +.custom-theme .el-select .el-tag__close { + margin-top: -2px +} + +.custom-theme .el-select .el-tag { + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-color: transparent; + margin: 3px 0 3px 6px; + background-color: #f0f2f5 +} + +.custom-theme .el-select .el-tag__close.el-icon-close { + background-color: #b4bccc; + right: -7px; + color: #fff +} + +.custom-theme .el-select .el-tag__close.el-icon-close:hover { + background-color: #878d99 +} + +.custom-theme .el-select .el-tag__close.el-icon-close::before { + display: block; + -webkit-transform: translate(0, .5px); + transform: translate(0, .5px) +} + +.custom-theme .el-select__tag { + display: inline-block; + height: 24px; + line-height: 24px; + font-size: 14px; + border-radius: 4px; + color: #fff; + background-color: #262729 +} + +.custom-theme .el-select__tag .el-icon-close { + font-size: 14px +} + +.custom-theme .el-pagination { + white-space: nowrap; + padding: 2px 5px; + color: #2d2f33; + font-weight: 700 +} + +.custom-theme .el-pagination::after, .custom-theme .el-pagination::before { + display: table; + content: "" +} + +.custom-theme .el-pagination::after { + clear: both +} + +.custom-theme .el-pagination button, .custom-theme .el-pagination span:not([class*=suffix]) { + display: inline-block; + font-size: 13px; + min-width: 35.5px; + height: 28px; + line-height: 28px; + vertical-align: top; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-pagination .el-input__inner { + text-align: center +} + +.custom-theme .el-pagination .el-input__suffix { + right: 0; + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-pagination .el-select .el-input { + width: 100px; + margin: 0 5px +} + +.custom-theme .el-pagination .el-select .el-input .el-input__inner { + padding-right: 25px; + border-radius: 3px; + height: 28px +} + +.custom-theme .el-pagination button { + border: none; + padding: 0 6px; + background: 0 0 +} + +.custom-theme .el-pagination button:focus { + outline: 0 +} + +.custom-theme .el-pagination button:hover { + color: #262729 +} + +.custom-theme .el-pagination button.disabled { + color: #b4bccc; + background-color: #fff; + cursor: not-allowed +} + +.custom-theme .el-pagination .btn-next, .custom-theme .el-pagination .btn-prev { + background: center center no-repeat; + background-size: 16px; + background-color: #fff; + cursor: pointer; + margin: 0; + color: #2d2f33 +} + +.custom-theme .el-pagination .btn-next .el-icon, .custom-theme .el-pagination .btn-prev .el-icon { + display: block; + font-size: 12px +} + +.custom-theme .el-pagination .btn-prev { + padding-right: 12px +} + +.custom-theme .el-pagination .btn-next { + padding-left: 12px +} + +.custom-theme .el-pagination--small .btn-next, .custom-theme .el-pagination--small .btn-prev, .custom-theme .el-pagination--small .el-pager li, .custom-theme .el-pagination--small .el-pager li:last-child { + border-color: transparent; + font-size: 12px; + line-height: 22px; + height: 22px; + min-width: 22px +} + +.custom-theme .el-pagination--small .arrow.disabled { + visibility: hidden +} + +.custom-theme .el-pagination__sizes { + margin: 0 10px 0 0; + font-weight: 400; + color: #5a5e66 +} + +.custom-theme .el-pagination__sizes .el-input .el-input__inner { + font-size: 13px; + padding-left: 8px +} + +.custom-theme .el-pagination__sizes .el-input .el-input__inner:hover { + border-color: #262729 +} + +.custom-theme .el-pagination__total { + margin-right: 10px; + font-weight: 400; + color: #5a5e66 +} + +.custom-theme .el-pagination__jump { + margin-left: 24px; + font-weight: 400; + color: #5a5e66 +} + +.custom-theme .el-pagination__jump .el-input__inner { + padding: 0 3px +} + +.custom-theme .el-pagination__rightwrapper { + float: right +} + +.custom-theme .el-pagination__editor { + line-height: 18px; + padding: 0 2px; + height: 28px; + text-align: center; + margin: 0 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 3px; + -moz-appearance: textfield +} + +.custom-theme .el-pagination__editor.el-input { + width: 50px +} + +.custom-theme .el-pagination__editor.el-input .el-input__inner { + height: 28px +} + +.custom-theme .el-pagination__editor .el-input__inner::-webkit-inner-spin-button, .custom-theme .el-pagination__editor .el-input__inner::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0 +} + +.custom-theme .el-pager { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + list-style: none; + display: inline-block; + vertical-align: top; + font-size: 0; + padding: 0; + margin: 0 +} + +.custom-theme .el-pager .el-icon-more::before { + vertical-align: -4px +} + +.custom-theme .el-pager li { + padding: 0 4px; + background: #fff; + vertical-align: top; + display: inline-block; + font-size: 13px; + min-width: 35.5px; + height: 28px; + line-height: 28px; + cursor: pointer; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + margin: 0 +} + +.custom-theme .el-pager li.btn-quicknext, .custom-theme .el-pager li.btn-quickprev { + line-height: 28px; + color: #2d2f33 +} + +.custom-theme .el-pager li.btn-quickprev:hover { + cursor: pointer +} + +.custom-theme .el-pager li.btn-quicknext:hover { + cursor: pointer +} + +.custom-theme .el-pager li.active + li { + border-left: 0 +} + +.custom-theme .el-pager li:hover { + color: #262729 +} + +.custom-theme .el-pager li.active { + color: #262729; + cursor: default +} + +.custom-theme .v-modal-enter { + -webkit-animation: v-modal-in .2s ease; + animation: v-modal-in .2s ease +} + +.custom-theme .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 + } +} + +.custom-theme .v-modal { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: .5; + background: #000 +} + +.custom-theme .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% +} + +.custom-theme .el-dialog.is-fullscreen { + width: 100%; + margin-top: 0; + margin-bottom: 0; + height: 100%; + overflow: auto +} + +.custom-theme .el-dialog__wrapper { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: auto; + margin: 0 +} + +.custom-theme .el-dialog__header { + padding: 15px; + padding-bottom: 10px +} + +.custom-theme .el-dialog__headerbtn { + position: absolute; + top: 15px; + right: 15px; + padding: 0; + background: 0 0; + border: none; + outline: 0; + cursor: pointer; + font-size: 16px +} + +.custom-theme .el-dialog__headerbtn .el-dialog__close { + color: #0a76a4 +} + +.custom-theme .el-dialog__headerbtn:focus .el-dialog__close, .custom-theme .el-dialog__headerbtn:hover .el-dialog__close { + color: #262729 +} + +.custom-theme .el-dialog__title { + line-height: 24px; + font-size: 18px; + color: #2d2f33 +} + +.custom-theme .el-dialog__body { + padding: 30px 20px; + color: #5a5e66; + line-height: 24px; + font-size: 14px +} + +.custom-theme .el-dialog__footer { + padding: 15px; + padding-top: 10px; + text-align: right; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-dialog--center { + text-align: center +} + +.custom-theme .el-dialog--center .el-dialog__header { + padding-top: 30px +} + +.custom-theme .el-dialog--center .el-dialog__body { + text-align: initial; + padding: 25px 27px 30px +} + +.custom-theme .el-dialog--center .el-dialog__footer { + text-align: inherit; + padding-bottom: 30px +} + +.custom-theme .dialog-fade-enter-active { + -webkit-animation: dialog-fade-in .3s; + animation: dialog-fade-in .3s +} + +.custom-theme .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 + } +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .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)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-autocomplete { + position: relative; + display: inline-block +} + +.custom-theme .el-autocomplete-suggestion { + margin: 5px 0; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + border-radius: 4px +} + +.custom-theme .el-autocomplete-suggestion.el-popper .popper__arrow { + left: 24px !important +} + +.custom-theme .el-autocomplete-suggestion__wrap { + max-height: 280px; + padding: 10px 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: auto; + background-color: #fff; + border: 1px solid #dfe4ed; + border-radius: 4px +} + +.custom-theme .el-autocomplete-suggestion__list { + margin: 0; + padding: 0 +} + +.custom-theme .el-autocomplete-suggestion li { + padding: 0 20px; + margin: 0; + line-height: 34px; + cursor: pointer; + color: #5a5e66; + font-size: 14px; + list-style: none; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis +} + +.custom-theme .el-autocomplete-suggestion li:hover { + background-color: #f5f7fa +} + +.custom-theme .el-autocomplete-suggestion li.highlighted { + background-color: #f5f7fa +} + +.custom-theme .el-autocomplete-suggestion li.divider { + margin-top: 6px; + border-top: 1px solid #000 +} + +.custom-theme .el-autocomplete-suggestion li.divider:last-child { + margin-bottom: -6px +} + +.custom-theme .el-autocomplete-suggestion.is-loading li { + text-align: center; + height: 100px; + line-height: 100px; + font-size: 20px; + color: #999 +} + +.custom-theme .el-autocomplete-suggestion.is-loading li::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-autocomplete-suggestion.is-loading li:hover { + background-color: #fff +} + +.custom-theme .el-autocomplete-suggestion.is-loading .el-icon-loading { + vertical-align: middle +} + +.custom-theme .el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-color: #d8dce5; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + -webkit-transition: .1s; + transition: .1s; + font-weight: 500; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button + .el-button { + margin-left: 10px +} + +.custom-theme .el-button.is-round { + padding: 12px 20px +} + +.custom-theme .el-button:focus, .custom-theme .el-button:hover { + color: #262729; + border-color: #bebebf; + background-color: #e9e9ea +} + +.custom-theme .el-button:active { + color: #222325; + border-color: #222325; + outline: 0 +} + +.custom-theme .el-button::-moz-focus-inner { + border: 0 +} + +.custom-theme .el-button [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-button.is-plain:focus, .custom-theme .el-button.is-plain:hover { + background: #fff; + border-color: #262729; + color: #262729 +} + +.custom-theme .el-button.is-plain:active { + background: #fff; + border-color: #222325; + color: #222325; + outline: 0 +} + +.custom-theme .el-button.is-active { + color: #222325; + border-color: #222325 +} + +.custom-theme .el-button.is-disabled, .custom-theme .el-button.is-disabled:focus, .custom-theme .el-button.is-disabled:hover { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5 +} + +.custom-theme .el-button.is-disabled.el-button--text { + background-color: transparent +} + +.custom-theme .el-button.is-disabled.is-plain, .custom-theme .el-button.is-disabled.is-plain:focus, .custom-theme .el-button.is-disabled.is-plain:hover { + background-color: #fff; + border-color: #e6ebf5; + color: #b4bccc +} + +.custom-theme .el-button.is-loading { + position: relative; + pointer-events: none +} + +.custom-theme .el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255, 255, 255, .35) +} + +.custom-theme .el-button.is-round { + border-radius: 20px; + padding: 12px 23px +} + +.custom-theme .el-button--primary { + color: #fff; + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-button--primary:focus, .custom-theme .el-button--primary:hover { + background: #515254; + border-color: #515254; + color: #fff +} + +.custom-theme .el-button--primary:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-active { + background: #222325; + border-color: #222325; + color: #fff +} + +.custom-theme .el-button--primary.is-disabled, .custom-theme .el-button--primary.is-disabled:active, .custom-theme .el-button--primary.is-disabled:focus, .custom-theme .el-button--primary.is-disabled:hover { + color: #fff; + background-color: #939394; + border-color: #939394 +} + +.custom-theme .el-button--primary.is-plain { + color: #262729; + background: #e9e9ea; + border-color: #a8a9a9 +} + +.custom-theme .el-button--primary.is-plain:focus, .custom-theme .el-button--primary.is-plain:hover { + background: #262729; + border-color: #262729; + color: #fff +} + +.custom-theme .el-button--primary.is-plain:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-plain.is-disabled, .custom-theme .el-button--primary.is-plain.is-disabled:active, .custom-theme .el-button--primary.is-plain.is-disabled:focus, .custom-theme .el-button--primary.is-plain.is-disabled:hover { + color: #7d7d7f; + background-color: #e9e9ea; + border-color: #d4d4d4 +} + +.custom-theme .el-button--success { + color: #fff; + background-color: #409167; + border-color: #409167 +} + +.custom-theme .el-button--success:focus, .custom-theme .el-button--success:hover { + background: #66a785; + border-color: #66a785; + color: #fff +} + +.custom-theme .el-button--success:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-active { + background: #3a835d; + border-color: #3a835d; + color: #fff +} + +.custom-theme .el-button--success.is-disabled, .custom-theme .el-button--success.is-disabled:active, .custom-theme .el-button--success.is-disabled:focus, .custom-theme .el-button--success.is-disabled:hover { + color: #fff; + background-color: #a0c8b3; + border-color: #a0c8b3 +} + +.custom-theme .el-button--success.is-plain { + color: #409167; + background: #ecf4f0; + border-color: #b3d3c2 +} + +.custom-theme .el-button--success.is-plain:focus, .custom-theme .el-button--success.is-plain:hover { + background: #409167; + border-color: #409167; + color: #fff +} + +.custom-theme .el-button--success.is-plain:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-plain.is-disabled, .custom-theme .el-button--success.is-plain.is-disabled:active, .custom-theme .el-button--success.is-plain.is-disabled:focus, .custom-theme .el-button--success.is-plain.is-disabled:hover { + color: #8cbda4; + background-color: #ecf4f0; + border-color: #d9e9e1 +} + +.custom-theme .el-button--warning { + color: #fff; + background-color: #9da408; + border-color: #9da408 +} + +.custom-theme .el-button--warning:focus, .custom-theme .el-button--warning:hover { + background: #b1b639; + border-color: #b1b639; + color: #fff +} + +.custom-theme .el-button--warning:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-active { + background: #8d9407; + border-color: #8d9407; + color: #fff +} + +.custom-theme .el-button--warning.is-disabled, .custom-theme .el-button--warning.is-disabled:active, .custom-theme .el-button--warning.is-disabled:focus, .custom-theme .el-button--warning.is-disabled:hover { + color: #fff; + background-color: #ced284; + border-color: #ced284 +} + +.custom-theme .el-button--warning.is-plain { + color: #9da408; + background: #f5f6e6; + border-color: #d8db9c +} + +.custom-theme .el-button--warning.is-plain:focus, .custom-theme .el-button--warning.is-plain:hover { + background: #9da408; + border-color: #9da408; + color: #fff +} + +.custom-theme .el-button--warning.is-plain:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-plain.is-disabled, .custom-theme .el-button--warning.is-plain.is-disabled:active, .custom-theme .el-button--warning.is-plain.is-disabled:focus, .custom-theme .el-button--warning.is-plain.is-disabled:hover { + color: #c4c86b; + background-color: #f5f6e6; + border-color: #ebedce +} + +.custom-theme .el-button--danger { + color: #fff; + background-color: #b3450e; + border-color: #b3450e +} + +.custom-theme .el-button--danger:focus, .custom-theme .el-button--danger:hover { + background: #c26a3e; + border-color: #c26a3e; + color: #fff +} + +.custom-theme .el-button--danger:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff +} + +.custom-theme .el-button--danger.is-disabled, .custom-theme .el-button--danger.is-disabled:active, .custom-theme .el-button--danger.is-disabled:focus, .custom-theme .el-button--danger.is-disabled:hover { + color: #fff; + background-color: #d9a287; + border-color: #d9a287 +} + +.custom-theme .el-button--danger.is-plain { + color: #b3450e; + background: #f7ece7; + border-color: #e1b59f +} + +.custom-theme .el-button--danger.is-plain:focus, .custom-theme .el-button--danger.is-plain:hover { + background: #b3450e; + border-color: #b3450e; + color: #fff +} + +.custom-theme .el-button--danger.is-plain:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-plain.is-disabled, .custom-theme .el-button--danger.is-plain.is-disabled:active, .custom-theme .el-button--danger.is-plain.is-disabled:focus, .custom-theme .el-button--danger.is-plain.is-disabled:hover { + color: #d18f6e; + background-color: #f7ece7; + border-color: #f0dacf +} + +.custom-theme .el-button--info { + color: #fff; + background-color: #0a76a4; + border-color: #0a76a4 +} + +.custom-theme .el-button--info:focus, .custom-theme .el-button--info:hover { + background: #3b91b6; + border-color: #3b91b6; + color: #fff +} + +.custom-theme .el-button--info:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-active { + background: #096a94; + border-color: #096a94; + color: #fff +} + +.custom-theme .el-button--info.is-disabled, .custom-theme .el-button--info.is-disabled:active, .custom-theme .el-button--info.is-disabled:focus, .custom-theme .el-button--info.is-disabled:hover { + color: #fff; + background-color: #85bbd2; + border-color: #85bbd2 +} + +.custom-theme .el-button--info.is-plain { + color: #0a76a4; + background: #e7f1f6; + border-color: #9dc8db +} + +.custom-theme .el-button--info.is-plain:focus, .custom-theme .el-button--info.is-plain:hover { + background: #0a76a4; + border-color: #0a76a4; + color: #fff +} + +.custom-theme .el-button--info.is-plain:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-plain.is-disabled, .custom-theme .el-button--info.is-plain.is-disabled:active, .custom-theme .el-button--info.is-plain.is-disabled:focus, .custom-theme .el-button--info.is-plain.is-disabled:hover { + color: #6cadc8; + background-color: #e7f1f6; + border-color: #cee4ed +} + +.custom-theme .el-button--medium { + padding: 10px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button--medium.is-round { + padding: 10px 20px +} + +.custom-theme .el-button--small { + padding: 9px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--small.is-round { + padding: 9px 15px +} + +.custom-theme .el-button--mini { + padding: 7px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--mini.is-round { + padding: 7px 15px +} + +.custom-theme .el-button--text { + border: none; + color: #262729; + background: 0 0; + padding-left: 0; + padding-right: 0 +} + +.custom-theme .el-button--text:focus, .custom-theme .el-button--text:hover { + color: #515254; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button--text:active { + color: #222325; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button-group { + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-button-group::after, .custom-theme .el-button-group::before { + display: table; + content: "" +} + +.custom-theme .el-button-group::after { + clear: both +} + +.custom-theme .el-button-group .el-button { + float: left; + position: relative +} + +.custom-theme .el-button-group .el-button + .el-button { + margin-left: 0 +} + +.custom-theme .el-button-group .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-button-group .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:last-child) { + margin-right: -1px +} + +.custom-theme .el-button-group .el-button:active, .custom-theme .el-button-group .el-button:focus, .custom-theme .el-button-group .el-button:hover { + z-index: 1 +} + +.custom-theme .el-button-group .el-button.is-active { + z-index: 1 +} + +.custom-theme .el-button-group .el-button--primary:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .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)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-dropdown { + display: inline-block; + position: relative; + color: #5a5e66; + font-size: 14px +} + +.custom-theme .el-dropdown .el-button-group { + display: block +} + +.custom-theme .el-dropdown .el-button-group .el-button { + float: none +} + +.custom-theme .el-dropdown .el-dropdown__caret-button { + padding-left: 5px; + padding-right: 5px; + position: relative; + border-left: none +} + +.custom-theme .el-dropdown .el-dropdown__caret-button::before { + content: ''; + position: absolute; + display: block; + width: 1px; + top: 5px; + bottom: 5px; + left: 0; + background: rgba(255, 255, 255, .5) +} + +.custom-theme .el-dropdown .el-dropdown__caret-button:hover::before { + top: 0; + bottom: 0 +} + +.custom-theme .el-dropdown .el-dropdown__caret-button .el-dropdown__icon { + padding-left: 0 +} + +.custom-theme .el-dropdown__icon { + font-size: 12px; + margin: 0 3px +} + +.custom-theme .el-dropdown-menu { + position: absolute; + top: 0; + left: 0; + z-index: 10; + padding: 10px 0; + margin: 5px 0; + background-color: #fff; + border: 1px solid #e6ebf5; + border-radius: 4px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.custom-theme .el-dropdown-menu__item { + list-style: none; + line-height: 36px; + padding: 0 20px; + margin: 0; + font-size: 14px; + color: #5a5e66; + cursor: pointer +} + +.custom-theme .el-dropdown-menu__item:not(.is-disabled):hover { + background-color: #e9e9ea; + color: #515254 +} + +.custom-theme .el-dropdown-menu__item--divided { + position: relative; + margin-top: 6px; + border-top: 1px solid #e6ebf5 +} + +.custom-theme .el-dropdown-menu__item--divided:before { + content: ''; + height: 6px; + display: block; + margin: 0 -20px; + background-color: #fff +} + +.custom-theme .el-dropdown-menu__item.is-disabled { + cursor: default; + color: #bbb; + pointer-events: none +} + +.custom-theme .el-dropdown-menu--medium { + padding: 6px 0 +} + +.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item { + line-height: 30px; + padding: 0 17px; + font-size: 14px +} + +.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided { + margin-top: 6px +} + +.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before { + height: 6px; + margin: 0 -17px +} + +.custom-theme .el-dropdown-menu--small { + padding: 6px 0 +} + +.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item { + line-height: 27px; + padding: 0 15px; + font-size: 13px +} + +.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided { + margin-top: 4px +} + +.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before { + height: 4px; + margin: 0 -15px +} + +.custom-theme .el-dropdown-menu--mini { + padding: 3px 0 +} + +.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item { + line-height: 24px; + padding: 0 10px; + font-size: 12px +} + +.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided { + margin-top: 3px +} + +.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before { + height: 3px; + margin: 0 -10px +} + +.custom-theme .el-menu { + border-right: solid 1px #e6e6e6; + list-style: none; + position: relative; + margin: 0; + padding-left: 0; + background-color: #fff +} + +.custom-theme .el-menu::after, .custom-theme .el-menu::before { + display: table; + content: "" +} + +.custom-theme .el-menu::after { + clear: both +} + +.custom-theme .el-menu li { + list-style: none +} + +.custom-theme .el-menu--horizontal { + border-right: none; + border-bottom: solid 1px #e6e6e6 +} + +.custom-theme .el-menu--horizontal .el-menu-item { + float: left; + height: 60px; + line-height: 60px; + margin: 0; + cursor: pointer; + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-bottom: 2px solid transparent; + color: #878d99 +} + +.custom-theme .el-menu--horizontal .el-menu-item a, .custom-theme .el-menu--horizontal .el-menu-item a:hover { + color: inherit +} + +.custom-theme .el-menu--horizontal .el-menu-item:focus, .custom-theme .el-menu--horizontal .el-menu-item:hover { + background-color: #fff +} + +.custom-theme .el-menu--horizontal .el-submenu { + float: left; + position: relative +} + +.custom-theme .el-menu--horizontal .el-submenu:focus { + outline: 0 +} + +.custom-theme .el-menu--horizontal .el-submenu:focus > .el-submenu__title { + color: #2d2f33 +} + +.custom-theme .el-menu--horizontal .el-submenu > .el-menu { + position: absolute; + top: 65px; + left: 0; + border: none; + padding: 5px 0; + background-color: #fff; + z-index: 100; + min-width: 100%; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + border-radius: 2px +} + +.custom-theme .el-menu--horizontal .el-submenu .el-submenu__title { + height: 60px; + line-height: 60px; + border-bottom: 2px solid transparent; + color: #878d99 +} + +.custom-theme .el-menu--horizontal .el-submenu .el-submenu__title:hover { + background-color: #fff +} + +.custom-theme .el-menu--horizontal .el-submenu .el-menu-item { + background-color: #fff; + float: none; + height: 36px; + line-height: 36px; + padding: 0 10px +} + +.custom-theme .el-menu--horizontal .el-submenu .el-submenu__icon-arrow { + position: static; + vertical-align: middle; + margin-left: 8px; + margin-top: -3px +} + +.custom-theme .el-menu--horizontal .el-menu-item:focus, .custom-theme .el-menu--horizontal .el-menu-item:hover, .custom-theme .el-menu--horizontal .el-submenu__title:hover { + outline: 0; + color: #2d2f33 +} + +.custom-theme .el-menu--horizontal > .el-menu-item.is-active, .custom-theme .el-menu--horizontal > .el-submenu.is-active .el-submenu__title { + border-bottom: 2px solid #262729; + color: #2d2f33 +} + +.custom-theme .el-menu--collapse { + width: 64px +} + +.custom-theme .el-menu--collapse > .el-menu-item [class^=el-icon-], .custom-theme .el-menu--collapse > .el-submenu > .el-submenu__title [class^=el-icon-] { + margin: 0; + vertical-align: middle; + width: 24px; + text-align: center +} + +.custom-theme .el-menu--collapse > .el-menu-item .el-submenu__icon-arrow, .custom-theme .el-menu--collapse > .el-submenu > .el-submenu__title .el-submenu__icon-arrow { + display: none +} + +.custom-theme .el-menu--collapse > .el-menu-item span, .custom-theme .el-menu--collapse > .el-submenu > .el-submenu__title span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block +} + +.custom-theme .el-menu--collapse > .el-menu-item.is-active i { + color: inherit +} + +.custom-theme .el-menu--collapse .el-menu .el-submenu { + min-width: 200px +} + +.custom-theme .el-menu--collapse .el-submenu { + position: relative +} + +.custom-theme .el-menu--collapse .el-submenu .el-menu { + position: absolute; + margin-left: 5px; + top: 0; + left: 100%; + z-index: 10; + border: 1px solid #dfe4ed; + border-radius: 2px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.custom-theme .el-menu--collapse .el-submenu.is-opened > .el-submenu__title .el-submenu__icon-arrow { + -webkit-transform: none; + transform: none +} + +.custom-theme .el-menu-item { + height: 56px; + line-height: 56px; + font-size: 14px; + color: #2d2f33; + padding: 0 20px; + cursor: pointer; + position: relative; + -webkit-transition: border-color .3s, background-color .3s, color .3s; + transition: border-color .3s, background-color .3s, color .3s; + -webkit-box-sizing: border-box; + box-sizing: border-box; + white-space: nowrap +} + +.custom-theme .el-menu-item [class^=el-icon-] { + margin-right: 5px; + width: 24px; + text-align: center; + font-size: 18px +} + +.custom-theme .el-menu-item * { + vertical-align: middle +} + +.custom-theme .el-menu-item:first-child { + margin-left: 0 +} + +.custom-theme .el-menu-item:last-child { + margin-right: 0 +} + +.custom-theme .el-menu-item:focus, .custom-theme .el-menu-item:hover { + outline: 0; + background-color: #e9e9ea +} + +.custom-theme .el-menu-item i { + color: #878d99 +} + +.custom-theme .el-menu-item.is-active { + color: #262729 +} + +.custom-theme .el-menu-item.is-active i { + color: inherit +} + +.custom-theme .el-submenu__title { + position: relative; + height: 56px; + line-height: 56px; + font-size: 14px; + color: #2d2f33; + padding: 0 20px; + cursor: pointer; + position: relative; + -webkit-transition: border-color .3s, background-color .3s, color .3s; + transition: border-color .3s, background-color .3s, color .3s; + -webkit-box-sizing: border-box; + box-sizing: border-box; + white-space: nowrap +} + +.custom-theme .el-submenu__title * { + vertical-align: middle +} + +.custom-theme .el-submenu__title i { + color: #878d99 +} + +.custom-theme .el-submenu__title:hover { + background-color: #e9e9ea +} + +.custom-theme .el-submenu .el-menu { + border: none +} + +.custom-theme .el-submenu .el-menu-item { + height: 50px; + line-height: 50px; + padding: 0 45px; + min-width: 200px +} + +.custom-theme .el-submenu__icon-arrow { + position: absolute; + top: 50%; + right: 20px; + margin-top: -7px; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + font-size: 12px +} + +.custom-theme .el-submenu.is-active .el-submenu__title { + border-bottom-color: #262729 +} + +.custom-theme .el-submenu.is-opened > .el-submenu__title .el-submenu__icon-arrow { + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg) +} + +.custom-theme .el-submenu [class^=el-icon-] { + vertical-align: middle; + margin-right: 5px; + width: 24px; + text-align: center; + font-size: 18px +} + +.custom-theme .el-menu-item-group > ul { + padding: 0 +} + +.custom-theme .el-menu-item-group__title { + padding: 7px 0 7px 20px; + line-height: normal; + font-size: 12px; + color: #878d99 +} + +.custom-theme .horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow { + -webkit-transition: .2s; + transition: .2s; + opacity: 0 +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input-number { + position: relative; + display: inline-block; + width: 180px; + line-height: 38px +} + +.custom-theme .el-input-number .el-input { + display: block +} + +.custom-theme .el-input-number .el-input__inner { + -webkit-appearance: none; + padding-left: 50px; + padding-right: 50px; + text-align: center +} + +.custom-theme .el-input-number__decrease, .custom-theme .el-input-number__increase { + position: absolute; + z-index: 1; + top: 1px; + width: 40px; + height: auto; + text-align: center; + background: #f5f7fa; + color: #5a5e66; + cursor: pointer; + font-size: 13px +} + +.custom-theme .el-input-number__decrease:hover, .custom-theme .el-input-number__increase:hover { + color: #262729 +} + +.custom-theme .el-input-number__decrease:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled), .custom-theme .el-input-number__increase:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled) { + border-color: #262729 +} + +.custom-theme .el-input-number__decrease.is-disabled, .custom-theme .el-input-number__increase.is-disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input-number__increase { + right: 1px; + border-radius: 0 4px 4px 0; + border-left: 1px solid #d8dce5 +} + +.custom-theme .el-input-number__decrease { + left: 1px; + border-radius: 4px 0 0 4px; + border-right: 1px solid #d8dce5 +} + +.custom-theme .el-input-number.is-disabled .el-input-number__decrease, .custom-theme .el-input-number.is-disabled .el-input-number__increase { + border-color: #dfe4ed; + color: #dfe4ed +} + +.custom-theme .el-input-number.is-disabled .el-input-number__decrease:hover, .custom-theme .el-input-number.is-disabled .el-input-number__increase:hover { + color: #dfe4ed; + cursor: not-allowed +} + +.custom-theme .el-input-number--medium { + width: 200px; + line-height: 34px +} + +.custom-theme .el-input-number--medium .el-input-number__decrease, .custom-theme .el-input-number--medium .el-input-number__increase { + width: 36px; + font-size: 14px +} + +.custom-theme .el-input-number--medium .el-input__inner { + padding-left: 43px; + padding-right: 43px +} + +.custom-theme .el-input-number--small { + width: 130px; + line-height: 30px +} + +.custom-theme .el-input-number--small .el-input-number__decrease, .custom-theme .el-input-number--small .el-input-number__increase { + width: 32px; + font-size: 13px +} + +.custom-theme .el-input-number--small .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number--small .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.9); + transform: scale(.9) +} + +.custom-theme .el-input-number--small .el-input__inner { + padding-left: 39px; + padding-right: 39px +} + +.custom-theme .el-input-number--mini { + width: 130px; + line-height: 26px +} + +.custom-theme .el-input-number--mini .el-input-number__decrease, .custom-theme .el-input-number--mini .el-input-number__increase { + width: 28px; + font-size: 12px +} + +.custom-theme .el-input-number--mini .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number--mini .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-input-number--mini .el-input__inner { + padding-left: 35px; + padding-right: 35px +} + +.custom-theme .el-input-number.is-without-controls .el-input__inner { + padding-left: 15px; + padding-right: 15px +} + +.custom-theme .el-input-number.is-controls-right .el-input__inner { + padding-left: 15px; + padding-right: 50px +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease, .custom-theme .el-input-number.is-controls-right .el-input-number__increase { + height: auto; + line-height: 19px +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number.is-controls-right .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__increase { + border-radius: 0 4px 0 0; + border-bottom: 1px solid #d8dce5 +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease { + right: 1px; + bottom: 1px; + top: auto; + left: auto; + border-right: none; + border-left: 1px solid #d8dce5; + border-radius: 0 0 4px 0 +} + +.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=medium] [class*=increase] { + line-height: 17px +} + +.custom-theme .el-input-number.is-controls-right[class*=small] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=small] [class*=increase] { + line-height: 15px +} + +.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=mini] [class*=increase] { + line-height: 13px +} + +.custom-theme .el-radio { + color: #5a5e66; + font-weight: 500; + line-height: 1; + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + outline: 0; + font-size: 14px; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none +} + +.custom-theme .el-radio.is-bordered { + padding: 10px 20px 10px 10px; + border-radius: 4px; + border: 1px solid #d8dce5 +} + +.custom-theme .el-radio.is-bordered.is-checked { + border-color: #262729 +} + +.custom-theme .el-radio.is-bordered.is-disabled { + cursor: not-allowed; + border-color: #e6ebf5 +} + +.custom-theme .el-radio.is-bordered + .el-radio.is-bordered { + margin-left: 10px +} + +.custom-theme .el-radio--medium.is-bordered { + padding: 8px 20px 8px 10px; + border-radius: 4px +} + +.custom-theme .el-radio--medium.is-bordered .el-radio__label { + font-size: 14px +} + +.custom-theme .el-radio--medium.is-bordered .el-radio__inner { + height: 14px; + width: 14px +} + +.custom-theme .el-radio--small.is-bordered { + padding: 6px 15px 6px 10px; + border-radius: 3px +} + +.custom-theme .el-radio--small.is-bordered .el-radio__label { + font-size: 12px +} + +.custom-theme .el-radio--small.is-bordered .el-radio__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-radio--mini.is-bordered { + padding: 4px 15px 4px 10px; + border-radius: 3px +} + +.custom-theme .el-radio--mini.is-bordered .el-radio__label { + font-size: 12px +} + +.custom-theme .el-radio--mini.is-bordered .el-radio__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-radio + .el-radio { + margin-left: 30px +} + +.custom-theme .el-radio__input { + white-space: nowrap; + cursor: pointer; + outline: 0; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle +} + +.custom-theme .el-radio__input.is-disabled .el-radio__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + cursor: not-allowed +} + +.custom-theme .el-radio__input.is-disabled .el-radio__inner::after { + cursor: not-allowed; + background-color: #f5f7fa +} + +.custom-theme .el-radio__input.is-disabled .el-radio__inner + .el-radio__label { + cursor: not-allowed +} + +.custom-theme .el-radio__input.is-disabled.is-checked .el-radio__inner { + background-color: #f5f7fa; + border-color: #dfe4ed +} + +.custom-theme .el-radio__input.is-disabled.is-checked .el-radio__inner::after { + background-color: #b4bccc +} + +.custom-theme .el-radio__input.is-disabled + span.el-radio__label { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-radio__input.is-checked .el-radio__inner { + border-color: #262729; + background: #262729 +} + +.custom-theme .el-radio__input.is-checked .el-radio__inner::after { + -webkit-transform: translate(-50%, -50%) scale(1); + transform: translate(-50%, -50%) scale(1) +} + +.custom-theme .el-radio__input.is-checked + .el-radio__label { + color: #262729 +} + +.custom-theme .el-radio__input.is-focus .el-radio__inner { + border-color: #262729 +} + +.custom-theme .el-radio__inner { + border: 1px solid #d8dce5; + border-radius: 100%; + width: 14px; + height: 14px; + background-color: #fff; + position: relative; + cursor: pointer; + display: inline-block; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-radio__inner:hover { + border-color: #262729 +} + +.custom-theme .el-radio__inner::after { + width: 4px; + height: 4px; + border-radius: 100%; + background-color: #fff; + content: ""; + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%) scale(0); + transform: translate(-50%, -50%) scale(0); + -webkit-transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6); + transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6); + transition: transform .15s cubic-bezier(.71, -.46, .88, .6); + transition: transform .15s cubic-bezier(.71, -.46, .88, .6), -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) +} + +.custom-theme .el-radio__original { + opacity: 0; + outline: 0; + position: absolute; + z-index: -1; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: 0 +} + +.custom-theme .el-radio:focus:not(.is-focus):not(:active) .el-radio__inner { + -webkit-box-shadow: 0 0 2px 2px #262729; + box-shadow: 0 0 2px 2px #262729 +} + +.custom-theme .el-radio__label { + font-size: 14px; + padding-left: 10px +} + +.custom-theme .el-radio-group { + display: inline-block; + line-height: 1; + vertical-align: middle; + font-size: 0 +} + +.custom-theme .el-radio-button { + position: relative; + display: inline-block; + outline: 0 +} + +.custom-theme .el-radio-button__inner { + display: inline-block; + line-height: 1; + white-space: nowrap; + vertical-align: middle; + background: #fff; + border: 1px solid #d8dce5; + font-weight: 500; + border-left: 0; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + position: relative; + cursor: pointer; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-radio-button__inner.is-round { + padding: 12px 20px +} + +.custom-theme .el-radio-button__inner:hover { + color: #262729 +} + +.custom-theme .el-radio-button__inner [class*=el-icon-] { + line-height: .9 +} + +.custom-theme .el-radio-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-radio-button__orig-radio { + opacity: 0; + outline: 0; + position: absolute; + z-index: -1; + left: -999px +} + +.custom-theme .el-radio-button__orig-radio:checked + .el-radio-button__inner { + color: #fff; + background-color: #262729; + border-color: #262729; + -webkit-box-shadow: -1px 0 0 0 #262729; + box-shadow: -1px 0 0 0 #262729 +} + +.custom-theme .el-radio-button__orig-radio:disabled + .el-radio-button__inner { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5; + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-radio-button__orig-radio:disabled:checked + .el-radio-button__inner { + background-color: #edf2fc +} + +.custom-theme .el-radio-button:first-child .el-radio-button__inner { + border-left: 1px solid #d8dce5; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.custom-theme .el-radio-button:last-child .el-radio-button__inner { + border-radius: 0 4px 4px 0 +} + +.custom-theme .el-radio-button:first-child:last-child .el-radio-button__inner { + border-radius: 4px +} + +.custom-theme .el-radio-button--medium .el-radio-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-radio-button--medium .el-radio-button__inner.is-round { + padding: 10px 20px +} + +.custom-theme .el-radio-button--small .el-radio-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-radio-button--small .el-radio-button__inner.is-round { + padding: 9px 15px +} + +.custom-theme .el-radio-button--mini .el-radio-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-radio-button--mini .el-radio-button__inner.is-round { + padding: 7px 15px +} + +.custom-theme .el-radio-button:focus:not(.is-focus):not(:active) { + -webkit-box-shadow: 0 0 2px 2px #262729; + box-shadow: 0 0 2px 2px #262729 +} + +.custom-theme .el-checkbox { + color: #5a5e66; + font-weight: 500; + font-size: 14px; + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-checkbox.is-bordered { + padding: 9px 20px 9px 10px; + border-radius: 4px; + border: 1px solid #d8dce5 +} + +.custom-theme .el-checkbox.is-bordered.is-checked { + border-color: #262729 +} + +.custom-theme .el-checkbox.is-bordered.is-disabled { + border-color: #e6ebf5; + cursor: not-allowed +} + +.custom-theme .el-checkbox.is-bordered + .el-checkbox.is-bordered { + margin-left: 10px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium { + padding: 7px 20px 7px 10px; + border-radius: 4px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label { + line-height: 17px; + font-size: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner { + height: 14px; + width: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small { + padding: 3px 15px 7px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label { + line-height: 15px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini { + padding: 1px 15px 5px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label { + line-height: 12px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox__input { + white-space: nowrap; + cursor: pointer; + outline: 0; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + background-color: #b4bccc; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled + span.el-checkbox__label { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after { + -webkit-transform: rotate(45deg) scaleY(1); + transform: rotate(45deg) scaleY(1) +} + +.custom-theme .el-checkbox__input.is-checked + .el-checkbox__label { + color: #262729 +} + +.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + background-color: #fff; + height: 2px; + -webkit-transform: scale(.5); + transform: scale(.5); + left: 0; + right: 0; + top: 5px +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none +} + +.custom-theme .el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid #d8dce5; + border-radius: 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 14px; + height: 14px; + background-color: #fff; + z-index: 1; + -webkit-transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46); + transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46) +} + +.custom-theme .el-checkbox__inner:hover { + border-color: #262729 +} + +.custom-theme .el-checkbox__inner::after { + -webkit-box-sizing: content-box; + box-sizing: content-box; + content: ""; + border: 1px solid #fff; + border-left: 0; + border-top: 0; + height: 7px; + left: 4px; + position: absolute; + top: 1px; + -webkit-transform: rotate(45deg) scaleY(0); + transform: rotate(45deg) scaleY(0); + width: 3px; + -webkit-transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms, -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + -webkit-transform-origin: center; + transform-origin: center +} + +.custom-theme .el-checkbox__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + width: 0; + height: 0; + left: -999px +} + +.custom-theme .el-checkbox__label { + display: inline-block; + padding-left: 10px; + line-height: 19px; + font-size: 14px +} + +.custom-theme .el-checkbox + .el-checkbox { + margin-left: 30px +} + +.custom-theme .el-checkbox-button { + position: relative; + display: inline-block +} + +.custom-theme .el-checkbox-button__inner { + display: inline-block; + line-height: 1; + font-weight: 500; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-left: 0; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + position: relative; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button__inner.is-round { + padding: 12px 20px +} + +.custom-theme .el-checkbox-button__inner:hover { + color: #262729 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] { + line-height: .9 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-checkbox-button__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + left: -999px +} + +.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner { + color: #fff; + background-color: #262729; + border-color: #262729; + -webkit-box-shadow: -1px 0 0 0 #7d7d7f; + box-shadow: -1px 0 0 0 #7d7d7f +} + +.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5; + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner { + border-left: 1px solid #d8dce5; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner { + border-radius: 0 4px 4px 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round { + padding: 10px 20px +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round { + padding: 9px 15px +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round { + padding: 7px 15px +} + +.custom-theme .el-checkbox-group { + font-size: 0 +} + +.custom-theme .el-switch { + display: inline-block; + position: relative; + font-size: 14px; + line-height: 20px; + height: 20px; + vertical-align: middle +} + +.custom-theme .el-switch.is-disabled .el-switch__core, .custom-theme .el-switch.is-disabled .el-switch__label { + cursor: not-allowed +} + +.custom-theme .el-switch__label { + -webkit-transition: .2s; + transition: .2s; + height: 20px; + display: inline-block; + font-size: 14px; + font-weight: 500; + cursor: pointer; + vertical-align: middle; + color: #2d2f33 +} + +.custom-theme .el-switch__label.is-active { + color: #262729 +} + +.custom-theme .el-switch__label--left { + margin-right: 10px +} + +.custom-theme .el-switch__label--right { + margin-left: 10px +} + +.custom-theme .el-switch__label * { + line-height: 1; + font-size: 14px; + display: inline-block +} + +.custom-theme .el-switch__input { + position: absolute; + width: 0; + height: 0; + opacity: 0; + margin: 0 +} + +.custom-theme .el-switch__input:focus ~ .el-switch__core { + outline: 1px solid #262729 +} + +.custom-theme .el-switch__core { + margin: 0; + display: inline-block; + position: relative; + width: 40px; + height: 20px; + border: 1px solid #d8dce5; + outline: 0; + border-radius: 10px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background: #d8dce5; + cursor: pointer; + -webkit-transition: border-color .3s, background-color .3s; + transition: border-color .3s, background-color .3s; + vertical-align: middle +} + +.custom-theme .el-switch__core .el-switch__button { + position: absolute; + top: 1px; + left: 1px; + border-radius: 100%; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + width: 16px; + height: 16px; + background-color: #fff +} + +.custom-theme .el-switch.is-checked .el-switch__core { + border-color: #262729; + background-color: #262729 +} + +.custom-theme .el-switch.is-disabled { + opacity: .6 +} + +.custom-theme .el-switch--wide .el-switch__label.el-switch__label--left span { + left: 10px +} + +.custom-theme .el-switch--wide .el-switch__label.el-switch__label--right span { + right: 10px +} + +.custom-theme .el-switch .label-fade-enter, .custom-theme .el-switch .label-fade-leave-active { + opacity: 0 +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .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)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-select-dropdown { + position: absolute; + z-index: 1001; + border: solid 1px #dfe4ed; + border-radius: 4px; + 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-box-sizing: border-box; + box-sizing: border-box; + margin: 5px 0 +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected { + color: #262729; + background-color: #fff +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover { + background-color: #f5f7fa +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after { + position: absolute; + right: 20px; + font-family: element-icons; + content: "\E611"; + font-size: 12px; + font-weight: 700; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.custom-theme .el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list { + padding: 0 +} + +.custom-theme .el-select-dropdown .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-select-dropdown.is-arrow-fixed .popper__arrow { + -webkit-transform: translateX(-200%); + transform: translateX(-200%) +} + +.custom-theme .el-select-dropdown__empty { + padding: 10px 0; + margin: 0; + text-align: center; + color: #999; + font-size: 14px +} + +.custom-theme .el-select-dropdown__wrap { + max-height: 274px +} + +.custom-theme .el-select-dropdown__list { + list-style: none; + padding: 6px 0; + margin: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-tag { + background-color: rgba(38, 39, 41, .1); + display: inline-block; + padding: 0 10px; + height: 32px; + line-height: 30px; + font-size: 12px; + color: #262729; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid rgba(38, 39, 41, .2); + white-space: nowrap +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -5px; + color: #262729 +} + +.custom-theme .el-tag .el-icon-close::before { + display: block +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #262729; + color: #fff +} + +.custom-theme .el-tag--info { + background-color: rgba(10, 118, 164, .1); + border-color: rgba(10, 118, 164, .2); + color: #0a76a4 +} + +.custom-theme .el-tag--info.is-hit { + border-color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close { + color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close:hover { + background-color: #0a76a4; + color: #fff +} + +.custom-theme .el-tag--success { + background-color: rgba(64, 145, 103, .1); + border-color: rgba(64, 145, 103, .2); + color: #409167 +} + +.custom-theme .el-tag--success.is-hit { + border-color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close { + color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #409167; + color: #fff +} + +.custom-theme .el-tag--warning { + background-color: rgba(157, 164, 8, .1); + border-color: rgba(157, 164, 8, .2); + color: #9da408 +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close { + color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #9da408; + color: #fff +} + +.custom-theme .el-tag--danger { + background-color: rgba(179, 69, 14, .1); + border-color: rgba(179, 69, 14, .2); + color: #b3450e +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close { + color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #b3450e; + color: #fff +} + +.custom-theme .el-tag--medium { + height: 28px; + line-height: 26px +} + +.custom-theme .el-tag--medium .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--small { + height: 24px; + padding: 0 8px; + line-height: 22px +} + +.custom-theme .el-tag--small .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--mini { + height: 20px; + padding: 0 5px; + line-height: 19px +} + +.custom-theme .el-tag--mini .el-icon-close { + margin-left: -3px; + -webkit-transform: scale(.7); + transform: scale(.7) +} + +.custom-theme .el-select-dropdown__item { + font-size: 14px; + padding: 0 20px; + position: relative; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #5a5e66; + height: 34px; + line-height: 34px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer +} + +.custom-theme .el-select-dropdown__item.is-disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-select-dropdown__item.is-disabled:hover { + background-color: #fff +} + +.custom-theme .el-select-dropdown__item.hover, .custom-theme .el-select-dropdown__item:hover { + background-color: #f5f7fa +} + +.custom-theme .el-select-dropdown__item.selected { + color: #262729; + font-weight: 700 +} + +.custom-theme .el-select-dropdown__item span { + line-height: 34px !important +} + +.custom-theme .el-select-group { + margin: 0; + padding: 0 +} + +.custom-theme .el-select-group__wrap { + position: relative; + list-style: none; + margin: 0; + padding: 0 +} + +.custom-theme .el-select-group__wrap:not(:last-of-type) { + padding-bottom: 24px +} + +.custom-theme .el-select-group__wrap:not(:last-of-type)::after { + content: ''; + position: absolute; + display: block; + left: 20px; + right: 20px; + bottom: 12px; + height: 1px; + background: #dfe4ed +} + +.custom-theme .el-select-group__title { + padding-left: 20px; + font-size: 12px; + color: #0a76a4; + line-height: 30px +} + +.custom-theme .el-select-group .el-select-dropdown__item { + padding-left: 20px +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-select { + display: inline-block; + position: relative +} + +.custom-theme .el-select:hover .el-input__inner { + border-color: #b4bccc +} + +.custom-theme .el-select .el-input__inner { + cursor: pointer; + padding-right: 35px +} + +.custom-theme .el-select .el-input__inner:focus { + border-color: #262729 +} + +.custom-theme .el-select .el-input .el-select__caret { + color: #b4bccc; + font-size: 14px; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + line-height: 16px; + cursor: pointer +} + +.custom-theme .el-select .el-input .el-select__caret.is-reverse { + -webkit-transform: rotateZ(0); + transform: rotateZ(0) +} + +.custom-theme .el-select .el-input .el-select__caret.is-show-close { + font-size: 14px; + text-align: center; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + border-radius: 100%; + color: #b4bccc; + -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1); + transition: color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-select .el-input .el-select__caret.is-show-close:hover { + color: #878d99 +} + +.custom-theme .el-select .el-input.is-disabled .el-input__inner { + cursor: not-allowed +} + +.custom-theme .el-select .el-input.is-disabled .el-input__inner:hover { + border-color: #dfe4ed +} + +.custom-theme .el-select > .el-input { + display: block +} + +.custom-theme .el-select__input { + border: none; + outline: 0; + padding: 0; + margin-left: 15px; + color: #666; + font-size: 14px; + vertical-align: baseline; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 28px; + background-color: transparent +} + +.custom-theme .el-select__input.is-mini { + height: 14px +} + +.custom-theme .el-select__close { + cursor: pointer; + position: absolute; + top: 8px; + z-index: 1000; + right: 25px; + color: #b4bccc; + line-height: 18px; + font-size: 14px +} + +.custom-theme .el-select__close:hover { + color: #878d99 +} + +.custom-theme .el-select__tags { + position: absolute; + line-height: normal; + white-space: normal; + z-index: 1; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%) +} + +.custom-theme .el-select .el-tag__close { + margin-top: -2px +} + +.custom-theme .el-select .el-tag { + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-color: transparent; + margin: 3px 0 3px 6px; + background-color: #f0f2f5 +} + +.custom-theme .el-select .el-tag__close.el-icon-close { + background-color: #b4bccc; + right: -7px; + color: #fff +} + +.custom-theme .el-select .el-tag__close.el-icon-close:hover { + background-color: #878d99 +} + +.custom-theme .el-select .el-tag__close.el-icon-close::before { + display: block; + -webkit-transform: translate(0, .5px); + transform: translate(0, .5px) +} + +.custom-theme .el-select__tag { + display: inline-block; + height: 24px; + line-height: 24px; + font-size: 14px; + border-radius: 4px; + color: #fff; + background-color: #262729 +} + +.custom-theme .el-select__tag .el-icon-close { + font-size: 14px +} + +.custom-theme .el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-color: #d8dce5; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + -webkit-transition: .1s; + transition: .1s; + font-weight: 500; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button + .el-button { + margin-left: 10px +} + +.custom-theme .el-button.is-round { + padding: 12px 20px +} + +.custom-theme .el-button:focus, .custom-theme .el-button:hover { + color: #262729; + border-color: #bebebf; + background-color: #e9e9ea +} + +.custom-theme .el-button:active { + color: #222325; + border-color: #222325; + outline: 0 +} + +.custom-theme .el-button::-moz-focus-inner { + border: 0 +} + +.custom-theme .el-button [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-button.is-plain:focus, .custom-theme .el-button.is-plain:hover { + background: #fff; + border-color: #262729; + color: #262729 +} + +.custom-theme .el-button.is-plain:active { + background: #fff; + border-color: #222325; + color: #222325; + outline: 0 +} + +.custom-theme .el-button.is-active { + color: #222325; + border-color: #222325 +} + +.custom-theme .el-button.is-disabled, .custom-theme .el-button.is-disabled:focus, .custom-theme .el-button.is-disabled:hover { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5 +} + +.custom-theme .el-button.is-disabled.el-button--text { + background-color: transparent +} + +.custom-theme .el-button.is-disabled.is-plain, .custom-theme .el-button.is-disabled.is-plain:focus, .custom-theme .el-button.is-disabled.is-plain:hover { + background-color: #fff; + border-color: #e6ebf5; + color: #b4bccc +} + +.custom-theme .el-button.is-loading { + position: relative; + pointer-events: none +} + +.custom-theme .el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255, 255, 255, .35) +} + +.custom-theme .el-button.is-round { + border-radius: 20px; + padding: 12px 23px +} + +.custom-theme .el-button--primary { + color: #fff; + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-button--primary:focus, .custom-theme .el-button--primary:hover { + background: #515254; + border-color: #515254; + color: #fff +} + +.custom-theme .el-button--primary:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-active { + background: #222325; + border-color: #222325; + color: #fff +} + +.custom-theme .el-button--primary.is-disabled, .custom-theme .el-button--primary.is-disabled:active, .custom-theme .el-button--primary.is-disabled:focus, .custom-theme .el-button--primary.is-disabled:hover { + color: #fff; + background-color: #939394; + border-color: #939394 +} + +.custom-theme .el-button--primary.is-plain { + color: #262729; + background: #e9e9ea; + border-color: #a8a9a9 +} + +.custom-theme .el-button--primary.is-plain:focus, .custom-theme .el-button--primary.is-plain:hover { + background: #262729; + border-color: #262729; + color: #fff +} + +.custom-theme .el-button--primary.is-plain:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-plain.is-disabled, .custom-theme .el-button--primary.is-plain.is-disabled:active, .custom-theme .el-button--primary.is-plain.is-disabled:focus, .custom-theme .el-button--primary.is-plain.is-disabled:hover { + color: #7d7d7f; + background-color: #e9e9ea; + border-color: #d4d4d4 +} + +.custom-theme .el-button--success { + color: #fff; + background-color: #409167; + border-color: #409167 +} + +.custom-theme .el-button--success:focus, .custom-theme .el-button--success:hover { + background: #66a785; + border-color: #66a785; + color: #fff +} + +.custom-theme .el-button--success:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-active { + background: #3a835d; + border-color: #3a835d; + color: #fff +} + +.custom-theme .el-button--success.is-disabled, .custom-theme .el-button--success.is-disabled:active, .custom-theme .el-button--success.is-disabled:focus, .custom-theme .el-button--success.is-disabled:hover { + color: #fff; + background-color: #a0c8b3; + border-color: #a0c8b3 +} + +.custom-theme .el-button--success.is-plain { + color: #409167; + background: #ecf4f0; + border-color: #b3d3c2 +} + +.custom-theme .el-button--success.is-plain:focus, .custom-theme .el-button--success.is-plain:hover { + background: #409167; + border-color: #409167; + color: #fff +} + +.custom-theme .el-button--success.is-plain:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-plain.is-disabled, .custom-theme .el-button--success.is-plain.is-disabled:active, .custom-theme .el-button--success.is-plain.is-disabled:focus, .custom-theme .el-button--success.is-plain.is-disabled:hover { + color: #8cbda4; + background-color: #ecf4f0; + border-color: #d9e9e1 +} + +.custom-theme .el-button--warning { + color: #fff; + background-color: #9da408; + border-color: #9da408 +} + +.custom-theme .el-button--warning:focus, .custom-theme .el-button--warning:hover { + background: #b1b639; + border-color: #b1b639; + color: #fff +} + +.custom-theme .el-button--warning:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-active { + background: #8d9407; + border-color: #8d9407; + color: #fff +} + +.custom-theme .el-button--warning.is-disabled, .custom-theme .el-button--warning.is-disabled:active, .custom-theme .el-button--warning.is-disabled:focus, .custom-theme .el-button--warning.is-disabled:hover { + color: #fff; + background-color: #ced284; + border-color: #ced284 +} + +.custom-theme .el-button--warning.is-plain { + color: #9da408; + background: #f5f6e6; + border-color: #d8db9c +} + +.custom-theme .el-button--warning.is-plain:focus, .custom-theme .el-button--warning.is-plain:hover { + background: #9da408; + border-color: #9da408; + color: #fff +} + +.custom-theme .el-button--warning.is-plain:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-plain.is-disabled, .custom-theme .el-button--warning.is-plain.is-disabled:active, .custom-theme .el-button--warning.is-plain.is-disabled:focus, .custom-theme .el-button--warning.is-plain.is-disabled:hover { + color: #c4c86b; + background-color: #f5f6e6; + border-color: #ebedce +} + +.custom-theme .el-button--danger { + color: #fff; + background-color: #b3450e; + border-color: #b3450e +} + +.custom-theme .el-button--danger:focus, .custom-theme .el-button--danger:hover { + background: #c26a3e; + border-color: #c26a3e; + color: #fff +} + +.custom-theme .el-button--danger:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff +} + +.custom-theme .el-button--danger.is-disabled, .custom-theme .el-button--danger.is-disabled:active, .custom-theme .el-button--danger.is-disabled:focus, .custom-theme .el-button--danger.is-disabled:hover { + color: #fff; + background-color: #d9a287; + border-color: #d9a287 +} + +.custom-theme .el-button--danger.is-plain { + color: #b3450e; + background: #f7ece7; + border-color: #e1b59f +} + +.custom-theme .el-button--danger.is-plain:focus, .custom-theme .el-button--danger.is-plain:hover { + background: #b3450e; + border-color: #b3450e; + color: #fff +} + +.custom-theme .el-button--danger.is-plain:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-plain.is-disabled, .custom-theme .el-button--danger.is-plain.is-disabled:active, .custom-theme .el-button--danger.is-plain.is-disabled:focus, .custom-theme .el-button--danger.is-plain.is-disabled:hover { + color: #d18f6e; + background-color: #f7ece7; + border-color: #f0dacf +} + +.custom-theme .el-button--info { + color: #fff; + background-color: #0a76a4; + border-color: #0a76a4 +} + +.custom-theme .el-button--info:focus, .custom-theme .el-button--info:hover { + background: #3b91b6; + border-color: #3b91b6; + color: #fff +} + +.custom-theme .el-button--info:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-active { + background: #096a94; + border-color: #096a94; + color: #fff +} + +.custom-theme .el-button--info.is-disabled, .custom-theme .el-button--info.is-disabled:active, .custom-theme .el-button--info.is-disabled:focus, .custom-theme .el-button--info.is-disabled:hover { + color: #fff; + background-color: #85bbd2; + border-color: #85bbd2 +} + +.custom-theme .el-button--info.is-plain { + color: #0a76a4; + background: #e7f1f6; + border-color: #9dc8db +} + +.custom-theme .el-button--info.is-plain:focus, .custom-theme .el-button--info.is-plain:hover { + background: #0a76a4; + border-color: #0a76a4; + color: #fff +} + +.custom-theme .el-button--info.is-plain:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-plain.is-disabled, .custom-theme .el-button--info.is-plain.is-disabled:active, .custom-theme .el-button--info.is-plain.is-disabled:focus, .custom-theme .el-button--info.is-plain.is-disabled:hover { + color: #6cadc8; + background-color: #e7f1f6; + border-color: #cee4ed +} + +.custom-theme .el-button--medium { + padding: 10px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button--medium.is-round { + padding: 10px 20px +} + +.custom-theme .el-button--small { + padding: 9px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--small.is-round { + padding: 9px 15px +} + +.custom-theme .el-button--mini { + padding: 7px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--mini.is-round { + padding: 7px 15px +} + +.custom-theme .el-button--text { + border: none; + color: #262729; + background: 0 0; + padding-left: 0; + padding-right: 0 +} + +.custom-theme .el-button--text:focus, .custom-theme .el-button--text:hover { + color: #515254; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button--text:active { + color: #222325; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button-group { + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-button-group::after, .custom-theme .el-button-group::before { + display: table; + content: "" +} + +.custom-theme .el-button-group::after { + clear: both +} + +.custom-theme .el-button-group .el-button { + float: left; + position: relative +} + +.custom-theme .el-button-group .el-button + .el-button { + margin-left: 0 +} + +.custom-theme .el-button-group .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-button-group .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:last-child) { + margin-right: -1px +} + +.custom-theme .el-button-group .el-button:active, .custom-theme .el-button-group .el-button:focus, .custom-theme .el-button-group .el-button:hover { + z-index: 1 +} + +.custom-theme .el-button-group .el-button.is-active { + z-index: 1 +} + +.custom-theme .el-button-group .el-button--primary:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-checkbox { + color: #5a5e66; + font-weight: 500; + font-size: 14px; + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-checkbox.is-bordered { + padding: 9px 20px 9px 10px; + border-radius: 4px; + border: 1px solid #d8dce5 +} + +.custom-theme .el-checkbox.is-bordered.is-checked { + border-color: #262729 +} + +.custom-theme .el-checkbox.is-bordered.is-disabled { + border-color: #e6ebf5; + cursor: not-allowed +} + +.custom-theme .el-checkbox.is-bordered + .el-checkbox.is-bordered { + margin-left: 10px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium { + padding: 7px 20px 7px 10px; + border-radius: 4px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label { + line-height: 17px; + font-size: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner { + height: 14px; + width: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small { + padding: 3px 15px 7px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label { + line-height: 15px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini { + padding: 1px 15px 5px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label { + line-height: 12px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox__input { + white-space: nowrap; + cursor: pointer; + outline: 0; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + background-color: #b4bccc; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled + span.el-checkbox__label { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after { + -webkit-transform: rotate(45deg) scaleY(1); + transform: rotate(45deg) scaleY(1) +} + +.custom-theme .el-checkbox__input.is-checked + .el-checkbox__label { + color: #262729 +} + +.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + background-color: #fff; + height: 2px; + -webkit-transform: scale(.5); + transform: scale(.5); + left: 0; + right: 0; + top: 5px +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none +} + +.custom-theme .el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid #d8dce5; + border-radius: 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 14px; + height: 14px; + background-color: #fff; + z-index: 1; + -webkit-transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46); + transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46) +} + +.custom-theme .el-checkbox__inner:hover { + border-color: #262729 +} + +.custom-theme .el-checkbox__inner::after { + -webkit-box-sizing: content-box; + box-sizing: content-box; + content: ""; + border: 1px solid #fff; + border-left: 0; + border-top: 0; + height: 7px; + left: 4px; + position: absolute; + top: 1px; + -webkit-transform: rotate(45deg) scaleY(0); + transform: rotate(45deg) scaleY(0); + width: 3px; + -webkit-transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms, -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + -webkit-transform-origin: center; + transform-origin: center +} + +.custom-theme .el-checkbox__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + width: 0; + height: 0; + left: -999px +} + +.custom-theme .el-checkbox__label { + display: inline-block; + padding-left: 10px; + line-height: 19px; + font-size: 14px +} + +.custom-theme .el-checkbox + .el-checkbox { + margin-left: 30px +} + +.custom-theme .el-checkbox-button { + position: relative; + display: inline-block +} + +.custom-theme .el-checkbox-button__inner { + display: inline-block; + line-height: 1; + font-weight: 500; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-left: 0; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + position: relative; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button__inner.is-round { + padding: 12px 20px +} + +.custom-theme .el-checkbox-button__inner:hover { + color: #262729 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] { + line-height: .9 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-checkbox-button__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + left: -999px +} + +.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner { + color: #fff; + background-color: #262729; + border-color: #262729; + -webkit-box-shadow: -1px 0 0 0 #7d7d7f; + box-shadow: -1px 0 0 0 #7d7d7f +} + +.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5; + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner { + border-left: 1px solid #d8dce5; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner { + border-radius: 0 4px 4px 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round { + padding: 10px 20px +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round { + padding: 9px 15px +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round { + padding: 7px 15px +} + +.custom-theme .el-checkbox-group { + font-size: 0 +} + +.custom-theme .el-tag { + background-color: rgba(38, 39, 41, .1); + display: inline-block; + padding: 0 10px; + height: 32px; + line-height: 30px; + font-size: 12px; + color: #262729; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid rgba(38, 39, 41, .2); + white-space: nowrap +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -5px; + color: #262729 +} + +.custom-theme .el-tag .el-icon-close::before { + display: block +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #262729; + color: #fff +} + +.custom-theme .el-tag--info { + background-color: rgba(10, 118, 164, .1); + border-color: rgba(10, 118, 164, .2); + color: #0a76a4 +} + +.custom-theme .el-tag--info.is-hit { + border-color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close { + color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close:hover { + background-color: #0a76a4; + color: #fff +} + +.custom-theme .el-tag--success { + background-color: rgba(64, 145, 103, .1); + border-color: rgba(64, 145, 103, .2); + color: #409167 +} + +.custom-theme .el-tag--success.is-hit { + border-color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close { + color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #409167; + color: #fff +} + +.custom-theme .el-tag--warning { + background-color: rgba(157, 164, 8, .1); + border-color: rgba(157, 164, 8, .2); + color: #9da408 +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close { + color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #9da408; + color: #fff +} + +.custom-theme .el-tag--danger { + background-color: rgba(179, 69, 14, .1); + border-color: rgba(179, 69, 14, .2); + color: #b3450e +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close { + color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #b3450e; + color: #fff +} + +.custom-theme .el-tag--medium { + height: 28px; + line-height: 26px +} + +.custom-theme .el-tag--medium .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--small { + height: 24px; + padding: 0 8px; + line-height: 22px +} + +.custom-theme .el-tag--small .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--mini { + height: 20px; + padding: 0 5px; + line-height: 19px +} + +.custom-theme .el-tag--mini .el-icon-close { + margin-left: -3px; + -webkit-transform: scale(.7); + transform: scale(.7) +} + +.custom-theme .el-table { + position: relative; + overflow: hidden; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + width: 100%; + max-width: 100%; + background-color: #fff; + font-size: 14px; + color: #5a5e66 +} + +.custom-theme .el-table__empty-block { + position: relative; + min-height: 60px; + text-align: center; + width: 100%; + height: 100% +} + +.custom-theme .el-table__empty-text { + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + color: color(#262729 s(16%) l(44%)) +} + +.custom-theme .el-table__expand-column .cell { + padding: 0; + text-align: center +} + +.custom-theme .el-table__expand-icon { + position: relative; + cursor: pointer; + color: #666; + font-size: 12px; + -webkit-transition: -webkit-transform .2s ease-in-out; + transition: -webkit-transform .2s ease-in-out; + transition: transform .2s ease-in-out; + transition: transform .2s ease-in-out, -webkit-transform .2s ease-in-out; + height: 20px +} + +.custom-theme .el-table__expand-icon--expanded { + -webkit-transform: rotate(90deg); + transform: rotate(90deg) +} + +.custom-theme .el-table__expand-icon > .el-icon { + position: absolute; + left: 50%; + top: 50%; + margin-left: -5px; + margin-top: -5px +} + +.custom-theme .el-table__expanded-cell { + background-color: #fff +} + +.custom-theme .el-table__expanded-cell[class*=cell] { + padding: 20px 50px +} + +.custom-theme .el-table__expanded-cell:hover { + background-color: #f5f7fa !important +} + +.custom-theme .el-table--fit { + border-right: 0; + border-bottom: 0 +} + +.custom-theme .el-table--fit td.gutter, .custom-theme .el-table--fit th.gutter { + border-right-width: 1px +} + +.custom-theme .el-table thead { + color: #878d99; + font-weight: 500 +} + +.custom-theme .el-table thead.is-group th { + background: #f5f7fa +} + +.custom-theme .el-table td, .custom-theme .el-table th { + padding: 12px 0; + min-width: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-overflow: ellipsis; + vertical-align: middle; + position: relative +} + +.custom-theme .el-table td.is-center, .custom-theme .el-table th.is-center { + text-align: center +} + +.custom-theme .el-table td.is-left, .custom-theme .el-table th.is-left { + text-align: left +} + +.custom-theme .el-table td.is-right, .custom-theme .el-table th.is-right { + text-align: right +} + +.custom-theme .el-table td.gutter, .custom-theme .el-table th.gutter { + width: 15px; + border-right-width: 0; + border-bottom-width: 0; + padding: 0 +} + +.custom-theme .el-table td.is-hidden > *, .custom-theme .el-table th.is-hidden > * { + visibility: hidden +} + +.custom-theme .el-table--medium td, .custom-theme .el-table--medium th { + padding: 10px 0 +} + +.custom-theme .el-table--small { + font-size: 12px +} + +.custom-theme .el-table--small td, .custom-theme .el-table--small th { + padding: 8px 0 +} + +.custom-theme .el-table--mini { + font-size: 12px +} + +.custom-theme .el-table--mini td, .custom-theme .el-table--mini th { + padding: 6px 0 +} + +.custom-theme .el-table tr { + background-color: #fff +} + +.custom-theme .el-table tr input[type=checkbox] { + margin: 0 +} + +.custom-theme .el-table td, .custom-theme .el-table th.is-leaf { + border-bottom: 1px solid #e6ebf5 +} + +.custom-theme .el-table th.is-sortable { + cursor: pointer +} + +.custom-theme .el-table th { + white-space: nowrap; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + text-align: left +} + +.custom-theme .el-table th div { + display: inline-block; + padding-left: 10px; + padding-right: 10px; + line-height: 40px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis +} + +.custom-theme .el-table th > .cell { + position: relative; + word-wrap: normal; + text-overflow: ellipsis; + display: inline-block; + vertical-align: middle; + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-table th > .cell.highlight { + color: #262729 +} + +.custom-theme .el-table th.required > div::before { + display: inline-block; + content: ""; + width: 8px; + height: 8px; + border-radius: 50%; + background: #ff4d51; + margin-right: 5px; + vertical-align: middle +} + +.custom-theme .el-table td div { + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-table td.gutter { + width: 0 +} + +.custom-theme .el-table .cell { + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + text-overflow: ellipsis; + white-space: normal; + word-break: break-all; + line-height: 23px; + padding-left: 10px; + padding-right: 10px +} + +.custom-theme .el-table .cell.el-tooltip { + white-space: nowrap; + min-width: 50px +} + +.custom-theme .el-table td:first-child .cell, .custom-theme .el-table th:first-child .cell { + padding-left: 0 +} + +.custom-theme .el-table--border, .custom-theme .el-table--group { + border: 1px solid #e6ebf5 +} + +.custom-theme .el-table--border::after, .custom-theme .el-table--group::after, .custom-theme .el-table::before { + content: ''; + position: absolute; + background-color: #e6ebf5; + z-index: 1 +} + +.custom-theme .el-table--border::after, .custom-theme .el-table--group::after { + top: 0; + right: 0; + width: 1px; + height: 100% +} + +.custom-theme .el-table::before { + left: 0; + bottom: 0; + width: 100%; + height: 1px +} + +.custom-theme .el-table--border { + border-right: none; + border-bottom: none +} + +.custom-theme .el-table--border td, .custom-theme .el-table--border th { + border-right: 1px solid #e6ebf5 +} + +.custom-theme .el-table--border td:first-child .cell, .custom-theme .el-table--border th:first-child .cell { + padding-left: 10px +} + +.custom-theme .el-table--border .has-gutter td:nth-last-of-type(2), .custom-theme .el-table--border .has-gutter th:nth-last-of-type(2) { + border-right: none +} + +.custom-theme .el-table--border th.gutter:last-of-type { + border-bottom: 1px solid #e6ebf5; + border-bottom-width: 1px +} + +.custom-theme .el-table--border th { + border-bottom: 1px solid #e6ebf5 +} + +.custom-theme .el-table--hidden { + visibility: hidden +} + +.custom-theme .el-table__fixed, .custom-theme .el-table__fixed-right { + position: absolute; + top: 0; + left: 0; + overflow-x: hidden; + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, .12); + box-shadow: 0 0 10px rgba(0, 0, 0, .12) +} + +.custom-theme .el-table__fixed-right::before, .custom-theme .el-table__fixed::before { + content: ''; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 1px; + background-color: #e6ebf5; + z-index: 4 +} + +.custom-theme .el-table__fixed-right-patch { + position: absolute; + top: -1px; + right: 0; + background-color: #fff; + border-bottom: 1px solid #e6ebf5 +} + +.custom-theme .el-table__fixed-right { + top: 0; + left: auto; + right: 0 +} + +.custom-theme .el-table__fixed-right .el-table__fixed-body-wrapper, .custom-theme .el-table__fixed-right .el-table__fixed-footer-wrapper, .custom-theme .el-table__fixed-right .el-table__fixed-header-wrapper { + left: auto; + right: 0 +} + +.custom-theme .el-table__fixed-header-wrapper { + position: absolute; + left: 0; + top: 0; + z-index: 3 +} + +.custom-theme .el-table__fixed-footer-wrapper { + position: absolute; + left: 0; + bottom: 0; + z-index: 3 +} + +.custom-theme .el-table__fixed-footer-wrapper tbody td { + border-top: 1px solid #e6ebf5; + background-color: #f5f7fa; + color: #5a5e66 +} + +.custom-theme .el-table__fixed-body-wrapper { + position: absolute; + left: 0; + top: 37px; + overflow: hidden; + z-index: 3 +} + +.custom-theme .el-table__body-wrapper, .custom-theme .el-table__footer-wrapper, .custom-theme .el-table__header-wrapper { + width: 100% +} + +.custom-theme .el-table__footer-wrapper { + margin-top: -1px +} + +.custom-theme .el-table__footer-wrapper td { + border-top: 1px solid #e6ebf5 +} + +.custom-theme .el-table__body, .custom-theme .el-table__footer, .custom-theme .el-table__header { + table-layout: fixed +} + +.custom-theme .el-table__footer-wrapper, .custom-theme .el-table__header-wrapper { + overflow: hidden +} + +.custom-theme .el-table__footer-wrapper tbody td, .custom-theme .el-table__header-wrapper tbody td { + background-color: #f5f7fa; + color: #5a5e66 +} + +.custom-theme .el-table__body-wrapper { + overflow: auto; + position: relative +} + +.custom-theme .el-table__body-wrapper.is-scroll-none ~ .el-table__fixed, .custom-theme .el-table__body-wrapper.is-scroll-none ~ .el-table__fixed-right { + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-table__body-wrapper.is-scroll-left ~ .el-table__fixed { + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-table__body-wrapper.is-scroll-right ~ .el-table__fixed-right { + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-table__body-wrapper .el-table--border.is-scroll-right ~ .el-table__fixed-right { + border-left: 1px solid #e6ebf5 +} + +.custom-theme .el-table__body-wrapper .el-table--border.is-scroll-left ~ .el-table__fixed { + border-right: 1px solid #e6ebf5 +} + +.custom-theme .el-table .caret-wrapper { + position: relative; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + height: 13px; + width: 24px; + cursor: pointer; + overflow: initial +} + +.custom-theme .el-table .sort-caret { + color: #0a76a4; + width: 14px; + overflow: hidden; + font-size: 13px +} + +.custom-theme .el-table .ascending .sort-caret.ascending { + color: #262729 +} + +.custom-theme .el-table .descending .sort-caret.descending { + color: #262729 +} + +.custom-theme .el-table .hidden-columns { + visibility: hidden; + position: absolute; + z-index: -1 +} + +.custom-theme .el-table--striped .el-table__body tr.el-table__row--striped td { + background: #fafafa +} + +.custom-theme .el-table--striped .el-table__body tr.el-table__row--striped.current-row td { + background-color: #e9e9ea +} + +.custom-theme .el-table__body tr.hover-row.current-row > td, .custom-theme .el-table__body tr.hover-row.el-table__row--striped.current-row > td, .custom-theme .el-table__body tr.hover-row.el-table__row--striped > td, .custom-theme .el-table__body tr.hover-row > td { + background-color: #e9e9ea +} + +.custom-theme .el-table__body tr.current-row > td { + background-color: #e9e9ea +} + +.custom-theme .el-table__column-resize-proxy { + position: absolute; + left: 200px; + top: 0; + bottom: 0; + width: 0; + border-left: 1px solid #e6ebf5; + z-index: 10 +} + +.custom-theme .el-table__column-filter-trigger { + display: inline-block; + line-height: 34px; + cursor: pointer +} + +.custom-theme .el-table__column-filter-trigger i { + color: #0a76a4; + font-size: 12px; + -webkit-transform: scale(.75); + transform: scale(.75) +} + +.custom-theme .el-table--enable-row-transition .el-table__body td { + -webkit-transition: background-color .25s ease; + transition: background-color .25s ease +} + +.custom-theme .el-table--enable-row-hover .el-table__body tr:hover > td { + background-color: #f5f7fa +} + +.custom-theme .el-table--fluid-height .el-table__fixed, .custom-theme .el-table--fluid-height .el-table__fixed-right { + bottom: 0; + overflow: hidden +} + +.custom-theme .el-checkbox { + color: #5a5e66; + font-weight: 500; + font-size: 14px; + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-checkbox.is-bordered { + padding: 9px 20px 9px 10px; + border-radius: 4px; + border: 1px solid #d8dce5 +} + +.custom-theme .el-checkbox.is-bordered.is-checked { + border-color: #262729 +} + +.custom-theme .el-checkbox.is-bordered.is-disabled { + border-color: #e6ebf5; + cursor: not-allowed +} + +.custom-theme .el-checkbox.is-bordered + .el-checkbox.is-bordered { + margin-left: 10px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium { + padding: 7px 20px 7px 10px; + border-radius: 4px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label { + line-height: 17px; + font-size: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner { + height: 14px; + width: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small { + padding: 3px 15px 7px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label { + line-height: 15px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini { + padding: 1px 15px 5px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label { + line-height: 12px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox__input { + white-space: nowrap; + cursor: pointer; + outline: 0; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + background-color: #b4bccc; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled + span.el-checkbox__label { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after { + -webkit-transform: rotate(45deg) scaleY(1); + transform: rotate(45deg) scaleY(1) +} + +.custom-theme .el-checkbox__input.is-checked + .el-checkbox__label { + color: #262729 +} + +.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + background-color: #fff; + height: 2px; + -webkit-transform: scale(.5); + transform: scale(.5); + left: 0; + right: 0; + top: 5px +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none +} + +.custom-theme .el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid #d8dce5; + border-radius: 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 14px; + height: 14px; + background-color: #fff; + z-index: 1; + -webkit-transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46); + transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46) +} + +.custom-theme .el-checkbox__inner:hover { + border-color: #262729 +} + +.custom-theme .el-checkbox__inner::after { + -webkit-box-sizing: content-box; + box-sizing: content-box; + content: ""; + border: 1px solid #fff; + border-left: 0; + border-top: 0; + height: 7px; + left: 4px; + position: absolute; + top: 1px; + -webkit-transform: rotate(45deg) scaleY(0); + transform: rotate(45deg) scaleY(0); + width: 3px; + -webkit-transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms, -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + -webkit-transform-origin: center; + transform-origin: center +} + +.custom-theme .el-checkbox__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + width: 0; + height: 0; + left: -999px +} + +.custom-theme .el-checkbox__label { + display: inline-block; + padding-left: 10px; + line-height: 19px; + font-size: 14px +} + +.custom-theme .el-checkbox + .el-checkbox { + margin-left: 30px +} + +.custom-theme .el-checkbox-button { + position: relative; + display: inline-block +} + +.custom-theme .el-checkbox-button__inner { + display: inline-block; + line-height: 1; + font-weight: 500; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-left: 0; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + position: relative; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button__inner.is-round { + padding: 12px 20px +} + +.custom-theme .el-checkbox-button__inner:hover { + color: #262729 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] { + line-height: .9 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-checkbox-button__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + left: -999px +} + +.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner { + color: #fff; + background-color: #262729; + border-color: #262729; + -webkit-box-shadow: -1px 0 0 0 #7d7d7f; + box-shadow: -1px 0 0 0 #7d7d7f +} + +.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5; + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner { + border-left: 1px solid #d8dce5; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner { + border-radius: 0 4px 4px 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round { + padding: 10px 20px +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round { + padding: 9px 15px +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round { + padding: 7px 15px +} + +.custom-theme .el-checkbox-group { + font-size: 0 +} + +.custom-theme .el-tag { + background-color: rgba(38, 39, 41, .1); + display: inline-block; + padding: 0 10px; + height: 32px; + line-height: 30px; + font-size: 12px; + color: #262729; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid rgba(38, 39, 41, .2); + white-space: nowrap +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -5px; + color: #262729 +} + +.custom-theme .el-tag .el-icon-close::before { + display: block +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #262729; + color: #fff +} + +.custom-theme .el-tag--info { + background-color: rgba(10, 118, 164, .1); + border-color: rgba(10, 118, 164, .2); + color: #0a76a4 +} + +.custom-theme .el-tag--info.is-hit { + border-color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close { + color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close:hover { + background-color: #0a76a4; + color: #fff +} + +.custom-theme .el-tag--success { + background-color: rgba(64, 145, 103, .1); + border-color: rgba(64, 145, 103, .2); + color: #409167 +} + +.custom-theme .el-tag--success.is-hit { + border-color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close { + color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #409167; + color: #fff +} + +.custom-theme .el-tag--warning { + background-color: rgba(157, 164, 8, .1); + border-color: rgba(157, 164, 8, .2); + color: #9da408 +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close { + color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #9da408; + color: #fff +} + +.custom-theme .el-tag--danger { + background-color: rgba(179, 69, 14, .1); + border-color: rgba(179, 69, 14, .2); + color: #b3450e +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close { + color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #b3450e; + color: #fff +} + +.custom-theme .el-tag--medium { + height: 28px; + line-height: 26px +} + +.custom-theme .el-tag--medium .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--small { + height: 24px; + padding: 0 8px; + line-height: 22px +} + +.custom-theme .el-tag--small .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--mini { + height: 20px; + padding: 0 5px; + line-height: 19px +} + +.custom-theme .el-tag--mini .el-icon-close { + margin-left: -3px; + -webkit-transform: scale(.7); + transform: scale(.7) +} + +.custom-theme .el-table-column--selection .cell { + padding-left: 14px; + padding-right: 14px +} + +.custom-theme .el-table-filter { + border: solid 1px #e6ebf5; + border-radius: 2px; + 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-box-sizing: border-box; + box-sizing: border-box; + margin: 2px 0 +} + +.custom-theme .el-table-filter__list { + padding: 5px 0; + margin: 0; + list-style: none; + min-width: 100px +} + +.custom-theme .el-table-filter__list-item { + line-height: 36px; + padding: 0 10px; + cursor: pointer; + font-size: 14px +} + +.custom-theme .el-table-filter__list-item:hover { + background-color: #e9e9ea; + color: #515254 +} + +.custom-theme .el-table-filter__list-item.is-active { + background-color: #262729; + color: #fff +} + +.custom-theme .el-table-filter__content { + min-width: 100px +} + +.custom-theme .el-table-filter__bottom { + border-top: 1px solid #e6ebf5; + padding: 8px +} + +.custom-theme .el-table-filter__bottom button { + background: 0 0; + border: none; + color: #5a5e66; + cursor: pointer; + font-size: 13px; + padding: 0 3px +} + +.custom-theme .el-table-filter__bottom button:hover { + color: #262729 +} + +.custom-theme .el-table-filter__bottom button:focus { + outline: 0 +} + +.custom-theme .el-table-filter__bottom button.is-disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-table-filter__checkbox-group { + padding: 10px +} + +.custom-theme .el-table-filter__checkbox-group label.el-checkbox { + display: block; + margin-bottom: 8px; + margin-left: 5px +} + +.custom-theme .el-table-filter__checkbox-group .el-checkbox:last-child { + margin-bottom: 0 +} + +.custom-theme .el-date-table { + font-size: 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover div { + background-color: #edf2fc +} + +.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td.available:hover { + color: #5a5e66 +} + +.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td:first-child div { + margin-left: 5px; + border-top-left-radius: 15px; + border-bottom-left-radius: 15px +} + +.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td:last-child div { + margin-right: 5px; + border-top-right-radius: 15px; + border-bottom-right-radius: 15px +} + +.custom-theme .el-date-table.is-week-mode .el-date-table__row.current div { + background-color: #edf2fc +} + +.custom-theme .el-date-table td { + width: 32px; + height: 30px; + padding: 4px 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + cursor: pointer; + position: relative +} + +.custom-theme .el-date-table td div { + height: 30px; + padding: 3px 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-date-table td span { + width: 24px; + height: 24px; + display: block; + margin: 0 auto; + line-height: 24px; + position: absolute; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + border-radius: 50% +} + +.custom-theme .el-date-table td.next-month, .custom-theme .el-date-table td.prev-month { + color: #b4bccc +} + +.custom-theme .el-date-table td.today { + position: relative +} + +.custom-theme .el-date-table td.today span { + color: #262729 +} + +.custom-theme .el-date-table td.today.end-date span, .custom-theme .el-date-table td.today.start-date span { + color: #fff +} + +.custom-theme .el-date-table td.available:hover { + color: #262729 +} + +.custom-theme .el-date-table td.in-range div { + background-color: #edf2fc +} + +.custom-theme .el-date-table td.in-range div:hover { + background-color: #edf2fc +} + +.custom-theme .el-date-table td.current:not(.disabled) span { + color: #fff; + background-color: #262729 +} + +.custom-theme .el-date-table td.end-date div, .custom-theme .el-date-table td.start-date div { + color: #fff +} + +.custom-theme .el-date-table td.end-date span, .custom-theme .el-date-table td.start-date span { + background-color: #262729 +} + +.custom-theme .el-date-table td.start-date div { + margin-left: 5px; + border-top-left-radius: 15px; + border-bottom-left-radius: 15px +} + +.custom-theme .el-date-table td.end-date div { + margin-right: 5px; + border-top-right-radius: 15px; + border-bottom-right-radius: 15px +} + +.custom-theme .el-date-table td.disabled div { + background-color: #f5f7fa; + opacity: 1; + cursor: not-allowed; + color: #b4bccc +} + +.custom-theme .el-date-table td.week { + font-size: 80%; + color: #5a5e66 +} + +.custom-theme .el-date-table th { + padding: 5px; + color: #5a5e66; + font-weight: 400; + border-bottom: solid 1px #e6ebf5 +} + +.custom-theme .el-month-table { + font-size: 12px; + margin: -1px; + border-collapse: collapse +} + +.custom-theme .el-month-table td { + text-align: center; + padding: 20px 3px; + cursor: pointer +} + +.custom-theme .el-month-table td.disabled .cell { + background-color: #f5f7fa; + cursor: not-allowed; + color: #b4bccc +} + +.custom-theme .el-month-table td.disabled .cell:hover { + color: #b4bccc +} + +.custom-theme .el-month-table td .cell { + width: 48px; + height: 32px; + display: block; + line-height: 32px; + color: #5a5e66; + margin: 0 auto +} + +.custom-theme .el-month-table td .cell:hover { + color: #262729 +} + +.custom-theme .el-month-table td.current:not(.disabled) .cell { + color: #262729 +} + +.custom-theme .el-year-table { + font-size: 12px; + margin: -1px; + border-collapse: collapse +} + +.custom-theme .el-year-table .el-icon { + color: #2d2f33 +} + +.custom-theme .el-year-table td { + text-align: center; + padding: 20px 3px; + cursor: pointer +} + +.custom-theme .el-year-table td.disabled .cell { + background-color: #f5f7fa; + cursor: not-allowed; + color: #b4bccc +} + +.custom-theme .el-year-table td.disabled .cell:hover { + color: #b4bccc +} + +.custom-theme .el-year-table td .cell { + width: 48px; + height: 32px; + display: block; + line-height: 32px; + color: #5a5e66; + margin: 0 auto +} + +.custom-theme .el-year-table td .cell:hover { + color: #262729 +} + +.custom-theme .el-year-table td.current:not(.disabled) .cell { + color: #262729 +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper { + width: 33.3% +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2) { + margin-left: 1% +} + +.custom-theme .el-time-spinner__wrapper { + max-height: 190px; + overflow: auto; + display: inline-block; + width: 50%; + vertical-align: top; + position: relative +} + +.custom-theme .el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) { + padding-bottom: 15px +} + +.custom-theme .el-time-spinner__wrapper.is-arrow { + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + overflow: hidden +} + +.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__list { + -webkit-transform: translateY(-32px); + transform: translateY(-32px) +} + +.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active) { + background: #fff; + cursor: default +} + +.custom-theme .el-time-spinner__arrow { + font-size: 12px; + color: #878d99; + position: absolute; + left: 0; + width: 100%; + z-index: 1; + text-align: center; + height: 30px; + line-height: 30px; + cursor: pointer +} + +.custom-theme .el-time-spinner__arrow:hover { + color: #262729 +} + +.custom-theme .el-time-spinner__arrow.el-icon-arrow-up { + top: 10px +} + +.custom-theme .el-time-spinner__arrow.el-icon-arrow-down { + bottom: 10px +} + +.custom-theme .el-time-spinner__input.el-input { + width: 70% +} + +.custom-theme .el-time-spinner__input.el-input .el-input__inner { + padding: 0; + text-align: center +} + +.custom-theme .el-time-spinner__list { + padding: 0; + margin: 0; + list-style: none; + text-align: center +} + +.custom-theme .el-time-spinner__list::after, .custom-theme .el-time-spinner__list::before { + content: ''; + display: block; + width: 100%; + height: 80px +} + +.custom-theme .el-time-spinner__item { + height: 32px; + line-height: 32px; + font-size: 12px; + color: #5a5e66 +} + +.custom-theme .el-time-spinner__item:hover:not(.disabled):not(.active) { + background: #f5f7fa; + cursor: pointer +} + +.custom-theme .el-time-spinner__item.active:not(.disabled) { + color: #2d2f33; + font-weight: 700 +} + +.custom-theme .el-time-spinner__item.disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .fade-in-linear-enter-active, .custom-theme .fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .fade-in-linear-enter, .custom-theme .fade-in-linear-leave, .custom-theme .fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-linear-enter-active, .custom-theme .el-fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .el-fade-in-linear-enter, .custom-theme .el-fade-in-linear-leave, .custom-theme .el-fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-enter-active, .custom-theme .el-fade-in-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-fade-in-enter, .custom-theme .el-fade-in-leave-active { + opacity: 0 +} + +.custom-theme .el-zoom-in-center-enter-active, .custom-theme .el-zoom-in-center-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-zoom-in-center-enter, .custom-theme .el-zoom-in-center-leave-active { + opacity: 0; + -webkit-transform: scaleX(0); + transform: scaleX(0) +} + +.custom-theme .el-zoom-in-top-enter-active, .custom-theme .el-zoom-in-top-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center top; + transform-origin: center top +} + +.custom-theme .el-zoom-in-top-enter, .custom-theme .el-zoom-in-top-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-bottom-enter-active, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center bottom; + transform-origin: center bottom +} + +.custom-theme .el-zoom-in-bottom-enter, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-left-enter-active, .custom-theme .el-zoom-in-left-leave-active { + opacity: 1; + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: top left; + transform-origin: top left +} + +.custom-theme .el-zoom-in-left-enter, .custom-theme .el-zoom-in-left-leave-active { + opacity: 0; + -webkit-transform: scale(.45, .45); + transform: scale(.45, .45) +} + +.custom-theme .collapse-transition { + -webkit-transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out; + transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out +} + +.custom-theme .horizontal-collapse-transition { + -webkit-transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out; + transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out +} + +.custom-theme .el-list-enter-active, .custom-theme .el-list-leave-active { + -webkit-transition: all 1s; + transition: all 1s +} + +.custom-theme .el-list-enter, .custom-theme .el-list-leave-active { + opacity: 0; + -webkit-transform: translateY(-30px); + transform: translateY(-30px) +} + +.custom-theme .el-opacity-transition { + -webkit-transition: opacity .3s cubic-bezier(.55, 0, .1, 1); + transition: opacity .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-date-editor { + position: relative; + display: inline-block; + text-align: left +} + +.custom-theme .el-date-editor.el-input, .custom-theme .el-date-editor.el-input__inner { + width: 220px +} + +.custom-theme .el-date-editor--daterange.el-input, .custom-theme .el-date-editor--daterange.el-input__inner, .custom-theme .el-date-editor--timerange.el-input, .custom-theme .el-date-editor--timerange.el-input__inner { + width: 350px +} + +.custom-theme .el-date-editor--datetimerange.el-input, .custom-theme .el-date-editor--datetimerange.el-input__inner { + width: 400px +} + +.custom-theme .el-date-editor .el-range__icon { + font-size: 14px; + margin-left: -5px; + color: #b4bccc; + float: left; + line-height: 32px +} + +.custom-theme .el-date-editor .el-range-input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + outline: 0; + display: inline-block; + height: 100%; + margin: 0; + padding: 0; + width: 39%; + text-align: center; + font-size: 14px; + color: #5a5e66 +} + +.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-separator { + display: inline-block; + height: 100%; + padding: 0 5px; + margin: 0; + text-align: center; + line-height: 32px; + font-size: 14px; + width: 5%; + color: #2d2f33 +} + +.custom-theme .el-date-editor .el-range__close-icon { + font-size: 14px; + color: #b4bccc; + width: 25px; + display: inline-block; + float: right; + line-height: 32px +} + +.custom-theme .el-range-editor.el-input__inner { + padding: 3px 10px +} + +.custom-theme .el-range-editor.is-active { + border-color: #262729 +} + +.custom-theme .el-range-editor.is-active:hover { + border-color: #262729 +} + +.custom-theme .el-range-editor--medium.el-input__inner { + height: 36px +} + +.custom-theme .el-range-editor--medium .el-range-separator { + line-height: 28px; + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range-input { + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range__close-icon, .custom-theme .el-range-editor--medium .el-range__icon { + line-height: 28px +} + +.custom-theme .el-range-editor--small.el-input__inner { + height: 32px +} + +.custom-theme .el-range-editor--small .el-range-separator { + line-height: 24px; + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range-input { + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range__close-icon, .custom-theme .el-range-editor--small .el-range__icon { + line-height: 24px +} + +.custom-theme .el-range-editor--mini.el-input__inner { + height: 28px +} + +.custom-theme .el-range-editor--mini .el-range-separator { + line-height: 20px; + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range-input { + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range__close-icon, .custom-theme .el-range-editor--mini .el-range__icon { + line-height: 20px +} + +.custom-theme .el-range-editor.is-disabled { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled:focus, .custom-theme .el-range-editor.is-disabled:hover { + border-color: #dfe4ed +} + +.custom-theme .el-range-editor.is-disabled input { + background-color: #f5f7fa; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled .el-range-separator { + color: #b4bccc +} + +.custom-theme .el-picker-panel { + color: #5a5e66; + border: 1px solid #dfe4ed; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + background: #fff; + border-radius: 4px; + line-height: 30px; + margin: 5px 0 +} + +.custom-theme .el-picker-panel__body-wrapper::after, .custom-theme .el-picker-panel__body::after { + content: ""; + display: table; + clear: both +} + +.custom-theme .el-picker-panel__content { + position: relative; + margin: 15px +} + +.custom-theme .el-picker-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + text-align: right; + background-color: #fff; + position: relative; + font-size: 0 +} + +.custom-theme .el-picker-panel__shortcut { + display: block; + width: 100%; + border: 0; + background-color: transparent; + line-height: 28px; + font-size: 14px; + color: #5a5e66; + padding-left: 12px; + text-align: left; + outline: 0; + cursor: pointer +} + +.custom-theme .el-picker-panel__shortcut:hover { + color: #262729 +} + +.custom-theme .el-picker-panel__shortcut.active { + background-color: #e6f1fe; + color: #262729 +} + +.custom-theme .el-picker-panel__btn { + border: 1px solid #dcdcdc; + color: #333; + line-height: 24px; + border-radius: 2px; + padding: 0 20px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px +} + +.custom-theme .el-picker-panel__btn[disabled] { + color: #ccc; + cursor: not-allowed +} + +.custom-theme .el-picker-panel__icon-btn { + font-size: 12px; + color: #2d2f33; + border: 0; + background: 0 0; + cursor: pointer; + outline: 0; + margin-top: 8px +} + +.custom-theme .el-picker-panel__icon-btn:hover { + color: #262729 +} + +.custom-theme .el-picker-panel__icon-btn.is-disabled { + color: #bbb +} + +.custom-theme .el-picker-panel__icon-btn.is-disabled:hover { + cursor: not-allowed +} + +.custom-theme .el-picker-panel__link-btn { + vertical-align: middle +} + +.custom-theme .el-picker-panel .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-picker-panel [slot=sidebar], .custom-theme .el-picker-panel__sidebar { + position: absolute; + top: 0; + bottom: 0; + width: 110px; + border-right: 1px solid #e4e4e4; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-top: 6px; + background-color: #fff; + overflow: auto +} + +.custom-theme .el-picker-panel [slot=sidebar] + .el-picker-panel__body, .custom-theme .el-picker-panel__sidebar + .el-picker-panel__body { + margin-left: 110px +} + +.custom-theme .el-date-picker { + width: 322px +} + +.custom-theme .el-date-picker.has-sidebar.has-time { + width: 434px +} + +.custom-theme .el-date-picker.has-sidebar { + width: 438px +} + +.custom-theme .el-date-picker.has-time .el-picker-panel__body-wrapper { + position: relative +} + +.custom-theme .el-date-picker .el-picker-panel__content { + width: 292px +} + +.custom-theme .el-date-picker table { + table-layout: fixed; + width: 100% +} + +.custom-theme .el-date-picker__editor-wrap { + position: relative; + display: table-cell; + padding: 0 5px +} + +.custom-theme .el-date-picker__time-header { + position: relative; + border-bottom: 1px solid #e4e4e4; + font-size: 12px; + padding: 8px 5px 5px 5px; + display: table; + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-date-picker__header { + margin: 12px; + text-align: center +} + +.custom-theme .el-date-picker__header--bordered { + margin-bottom: 0; + padding-bottom: 12px; + border-bottom: solid 1px #e6ebf5 +} + +.custom-theme .el-date-picker__header--bordered + .el-picker-panel__content { + margin-top: 0 +} + +.custom-theme .el-date-picker__header-label { + font-size: 16px; + font-weight: 500; + padding: 0 5px; + line-height: 22px; + text-align: center; + cursor: pointer; + color: #5a5e66 +} + +.custom-theme .el-date-picker__header-label:hover { + color: #262729 +} + +.custom-theme .el-date-picker__header-label.active { + color: #262729 +} + +.custom-theme .el-date-picker__prev-btn { + float: left +} + +.custom-theme .el-date-picker__next-btn { + float: right +} + +.custom-theme .el-date-picker__time-wrap { + padding: 10px; + text-align: center +} + +.custom-theme .el-date-picker__time-label { + float: left; + cursor: pointer; + line-height: 30px; + margin-left: 10px +} + +.custom-theme .el-date-range-picker { + width: 646px +} + +.custom-theme .el-date-range-picker.has-sidebar { + width: 756px +} + +.custom-theme .el-date-range-picker table { + table-layout: fixed; + width: 100% +} + +.custom-theme .el-date-range-picker .el-picker-panel__body { + min-width: 513px +} + +.custom-theme .el-date-range-picker .el-picker-panel__content { + margin: 0 +} + +.custom-theme .el-date-range-picker__header { + position: relative; + text-align: center; + height: 28px +} + +.custom-theme .el-date-range-picker__header [class*=arrow-left] { + float: left +} + +.custom-theme .el-date-range-picker__header [class*=arrow-right] { + float: right +} + +.custom-theme .el-date-range-picker__header div { + font-size: 16px; + font-weight: 500; + margin-right: 50px +} + +.custom-theme .el-date-range-picker__content { + float: left; + width: 50%; + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 16px +} + +.custom-theme .el-date-range-picker__content.is-left { + border-right: 1px solid #e4e4e4 +} + +.custom-theme .el-date-range-picker__content.is-right .el-date-range-picker__header div { + margin-left: 50px; + margin-right: 50px +} + +.custom-theme .el-date-range-picker__editors-wrap { + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: table-cell +} + +.custom-theme .el-date-range-picker__editors-wrap.is-right { + text-align: right +} + +.custom-theme .el-date-range-picker__time-header { + position: relative; + border-bottom: 1px solid #e4e4e4; + font-size: 12px; + padding: 8px 5px 5px 5px; + display: table; + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-date-range-picker__time-header > .el-icon-arrow-right { + font-size: 20px; + vertical-align: middle; + display: table-cell; + color: #2d2f33 +} + +.custom-theme .el-date-range-picker__time-picker-wrap { + position: relative; + display: table-cell; + padding: 0 5px +} + +.custom-theme .el-date-range-picker__time-picker-wrap .el-picker-panel { + position: absolute; + top: 13px; + right: 0; + z-index: 1; + background: #fff +} + +.custom-theme .el-time-range-picker { + width: 354px; + overflow: visible +} + +.custom-theme .el-time-range-picker__content { + position: relative; + text-align: center; + padding: 10px +} + +.custom-theme .el-time-range-picker__cell { + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 4px 7px 7px; + width: 50%; + display: inline-block +} + +.custom-theme .el-time-range-picker__header { + margin-bottom: 5px; + text-align: center; + font-size: 14px +} + +.custom-theme .el-time-range-picker__body { + border-radius: 2px; + border: 1px solid #dfe4ed +} + +.custom-theme .el-time-panel { + margin: 5px 0; + border: solid 1px #dfe4ed; + 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); + border-radius: 2px; + position: absolute; + width: 180px; + left: 0; + z-index: 1000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-time-panel__content { + font-size: 0; + position: relative; + overflow: hidden +} + +.custom-theme .el-time-panel__content::after, .custom-theme .el-time-panel__content::before { + content: ""; + top: 50%; + position: absolute; + margin-top: -15px; + height: 32px; + z-index: -1; + left: 0; + right: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-top: 6px; + text-align: left; + border-top: 1px solid #dfe4ed; + border-bottom: 1px solid #dfe4ed +} + +.custom-theme .el-time-panel__content::after { + left: 50%; + margin-left: 12%; + margin-right: 12% +} + +.custom-theme .el-time-panel__content::before { + padding-left: 50%; + margin-right: 12%; + margin-left: 12% +} + +.custom-theme .el-time-panel__content.has-seconds::after { + left: calc(100% / 3 * 2) +} + +.custom-theme .el-time-panel__content.has-seconds::before { + padding-left: calc(100% / 3) +} + +.custom-theme .el-time-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + height: 36px; + line-height: 25px; + text-align: right; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-time-panel__btn { + border: none; + line-height: 28px; + padding: 0 5px; + margin: 0 5px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px; + color: #2d2f33 +} + +.custom-theme .el-time-panel__btn.confirm { + font-weight: 800; + color: #262729 +} + +.custom-theme .el-time-panel .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .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)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .fade-in-linear-enter-active, .custom-theme .fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .fade-in-linear-enter, .custom-theme .fade-in-linear-leave, .custom-theme .fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-linear-enter-active, .custom-theme .el-fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .el-fade-in-linear-enter, .custom-theme .el-fade-in-linear-leave, .custom-theme .el-fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-enter-active, .custom-theme .el-fade-in-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-fade-in-enter, .custom-theme .el-fade-in-leave-active { + opacity: 0 +} + +.custom-theme .el-zoom-in-center-enter-active, .custom-theme .el-zoom-in-center-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-zoom-in-center-enter, .custom-theme .el-zoom-in-center-leave-active { + opacity: 0; + -webkit-transform: scaleX(0); + transform: scaleX(0) +} + +.custom-theme .el-zoom-in-top-enter-active, .custom-theme .el-zoom-in-top-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center top; + transform-origin: center top +} + +.custom-theme .el-zoom-in-top-enter, .custom-theme .el-zoom-in-top-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-bottom-enter-active, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center bottom; + transform-origin: center bottom +} + +.custom-theme .el-zoom-in-bottom-enter, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-left-enter-active, .custom-theme .el-zoom-in-left-leave-active { + opacity: 1; + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: top left; + transform-origin: top left +} + +.custom-theme .el-zoom-in-left-enter, .custom-theme .el-zoom-in-left-leave-active { + opacity: 0; + -webkit-transform: scale(.45, .45); + transform: scale(.45, .45) +} + +.custom-theme .collapse-transition { + -webkit-transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out; + transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out +} + +.custom-theme .horizontal-collapse-transition { + -webkit-transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out; + transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out +} + +.custom-theme .el-list-enter-active, .custom-theme .el-list-leave-active { + -webkit-transition: all 1s; + transition: all 1s +} + +.custom-theme .el-list-enter, .custom-theme .el-list-leave-active { + opacity: 0; + -webkit-transform: translateY(-30px); + transform: translateY(-30px) +} + +.custom-theme .el-opacity-transition { + -webkit-transition: opacity .3s cubic-bezier(.55, 0, .1, 1); + transition: opacity .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-date-editor { + position: relative; + display: inline-block; + text-align: left +} + +.custom-theme .el-date-editor.el-input, .custom-theme .el-date-editor.el-input__inner { + width: 220px +} + +.custom-theme .el-date-editor--daterange.el-input, .custom-theme .el-date-editor--daterange.el-input__inner, .custom-theme .el-date-editor--timerange.el-input, .custom-theme .el-date-editor--timerange.el-input__inner { + width: 350px +} + +.custom-theme .el-date-editor--datetimerange.el-input, .custom-theme .el-date-editor--datetimerange.el-input__inner { + width: 400px +} + +.custom-theme .el-date-editor .el-range__icon { + font-size: 14px; + margin-left: -5px; + color: #b4bccc; + float: left; + line-height: 32px +} + +.custom-theme .el-date-editor .el-range-input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + outline: 0; + display: inline-block; + height: 100%; + margin: 0; + padding: 0; + width: 39%; + text-align: center; + font-size: 14px; + color: #5a5e66 +} + +.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-separator { + display: inline-block; + height: 100%; + padding: 0 5px; + margin: 0; + text-align: center; + line-height: 32px; + font-size: 14px; + width: 5%; + color: #2d2f33 +} + +.custom-theme .el-date-editor .el-range__close-icon { + font-size: 14px; + color: #b4bccc; + width: 25px; + display: inline-block; + float: right; + line-height: 32px +} + +.custom-theme .el-range-editor.el-input__inner { + padding: 3px 10px +} + +.custom-theme .el-range-editor.is-active { + border-color: #262729 +} + +.custom-theme .el-range-editor.is-active:hover { + border-color: #262729 +} + +.custom-theme .el-range-editor--medium.el-input__inner { + height: 36px +} + +.custom-theme .el-range-editor--medium .el-range-separator { + line-height: 28px; + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range-input { + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range__close-icon, .custom-theme .el-range-editor--medium .el-range__icon { + line-height: 28px +} + +.custom-theme .el-range-editor--small.el-input__inner { + height: 32px +} + +.custom-theme .el-range-editor--small .el-range-separator { + line-height: 24px; + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range-input { + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range__close-icon, .custom-theme .el-range-editor--small .el-range__icon { + line-height: 24px +} + +.custom-theme .el-range-editor--mini.el-input__inner { + height: 28px +} + +.custom-theme .el-range-editor--mini .el-range-separator { + line-height: 20px; + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range-input { + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range__close-icon, .custom-theme .el-range-editor--mini .el-range__icon { + line-height: 20px +} + +.custom-theme .el-range-editor.is-disabled { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled:focus, .custom-theme .el-range-editor.is-disabled:hover { + border-color: #dfe4ed +} + +.custom-theme .el-range-editor.is-disabled input { + background-color: #f5f7fa; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled .el-range-separator { + color: #b4bccc +} + +.custom-theme .el-picker-panel { + color: #5a5e66; + border: 1px solid #dfe4ed; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + background: #fff; + border-radius: 4px; + line-height: 30px; + margin: 5px 0 +} + +.custom-theme .el-picker-panel__body-wrapper::after, .custom-theme .el-picker-panel__body::after { + content: ""; + display: table; + clear: both +} + +.custom-theme .el-picker-panel__content { + position: relative; + margin: 15px +} + +.custom-theme .el-picker-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + text-align: right; + background-color: #fff; + position: relative; + font-size: 0 +} + +.custom-theme .el-picker-panel__shortcut { + display: block; + width: 100%; + border: 0; + background-color: transparent; + line-height: 28px; + font-size: 14px; + color: #5a5e66; + padding-left: 12px; + text-align: left; + outline: 0; + cursor: pointer +} + +.custom-theme .el-picker-panel__shortcut:hover { + color: #262729 +} + +.custom-theme .el-picker-panel__shortcut.active { + background-color: #e6f1fe; + color: #262729 +} + +.custom-theme .el-picker-panel__btn { + border: 1px solid #dcdcdc; + color: #333; + line-height: 24px; + border-radius: 2px; + padding: 0 20px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px +} + +.custom-theme .el-picker-panel__btn[disabled] { + color: #ccc; + cursor: not-allowed +} + +.custom-theme .el-picker-panel__icon-btn { + font-size: 12px; + color: #2d2f33; + border: 0; + background: 0 0; + cursor: pointer; + outline: 0; + margin-top: 8px +} + +.custom-theme .el-picker-panel__icon-btn:hover { + color: #262729 +} + +.custom-theme .el-picker-panel__icon-btn.is-disabled { + color: #bbb +} + +.custom-theme .el-picker-panel__icon-btn.is-disabled:hover { + cursor: not-allowed +} + +.custom-theme .el-picker-panel__link-btn { + vertical-align: middle +} + +.custom-theme .el-picker-panel .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-picker-panel [slot=sidebar], .custom-theme .el-picker-panel__sidebar { + position: absolute; + top: 0; + bottom: 0; + width: 110px; + border-right: 1px solid #e4e4e4; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-top: 6px; + background-color: #fff; + overflow: auto +} + +.custom-theme .el-picker-panel [slot=sidebar] + .el-picker-panel__body, .custom-theme .el-picker-panel__sidebar + .el-picker-panel__body { + margin-left: 110px +} + +.custom-theme .el-date-picker { + width: 322px +} + +.custom-theme .el-date-picker.has-sidebar.has-time { + width: 434px +} + +.custom-theme .el-date-picker.has-sidebar { + width: 438px +} + +.custom-theme .el-date-picker.has-time .el-picker-panel__body-wrapper { + position: relative +} + +.custom-theme .el-date-picker .el-picker-panel__content { + width: 292px +} + +.custom-theme .el-date-picker table { + table-layout: fixed; + width: 100% +} + +.custom-theme .el-date-picker__editor-wrap { + position: relative; + display: table-cell; + padding: 0 5px +} + +.custom-theme .el-date-picker__time-header { + position: relative; + border-bottom: 1px solid #e4e4e4; + font-size: 12px; + padding: 8px 5px 5px 5px; + display: table; + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-date-picker__header { + margin: 12px; + text-align: center +} + +.custom-theme .el-date-picker__header--bordered { + margin-bottom: 0; + padding-bottom: 12px; + border-bottom: solid 1px #e6ebf5 +} + +.custom-theme .el-date-picker__header--bordered + .el-picker-panel__content { + margin-top: 0 +} + +.custom-theme .el-date-picker__header-label { + font-size: 16px; + font-weight: 500; + padding: 0 5px; + line-height: 22px; + text-align: center; + cursor: pointer; + color: #5a5e66 +} + +.custom-theme .el-date-picker__header-label:hover { + color: #262729 +} + +.custom-theme .el-date-picker__header-label.active { + color: #262729 +} + +.custom-theme .el-date-picker__prev-btn { + float: left +} + +.custom-theme .el-date-picker__next-btn { + float: right +} + +.custom-theme .el-date-picker__time-wrap { + padding: 10px; + text-align: center +} + +.custom-theme .el-date-picker__time-label { + float: left; + cursor: pointer; + line-height: 30px; + margin-left: 10px +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .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)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .time-select { + margin: 5px 0; + min-width: 0 +} + +.custom-theme .time-select .el-picker-panel__content { + max-height: 200px; + margin: 0 +} + +.custom-theme .time-select-item { + padding: 8px 10px; + font-size: 14px; + line-height: 20px +} + +.custom-theme .time-select-item.selected:not(.disabled) { + color: #262729; + font-weight: 700 +} + +.custom-theme .time-select-item.disabled { + color: #dfe4ed; + cursor: not-allowed +} + +.custom-theme .time-select-item:hover { + background-color: #f5f7fa; + font-weight: 700; + cursor: pointer +} + +.custom-theme .fade-in-linear-enter-active, .custom-theme .fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .fade-in-linear-enter, .custom-theme .fade-in-linear-leave, .custom-theme .fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-linear-enter-active, .custom-theme .el-fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .el-fade-in-linear-enter, .custom-theme .el-fade-in-linear-leave, .custom-theme .el-fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-enter-active, .custom-theme .el-fade-in-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-fade-in-enter, .custom-theme .el-fade-in-leave-active { + opacity: 0 +} + +.custom-theme .el-zoom-in-center-enter-active, .custom-theme .el-zoom-in-center-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-zoom-in-center-enter, .custom-theme .el-zoom-in-center-leave-active { + opacity: 0; + -webkit-transform: scaleX(0); + transform: scaleX(0) +} + +.custom-theme .el-zoom-in-top-enter-active, .custom-theme .el-zoom-in-top-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center top; + transform-origin: center top +} + +.custom-theme .el-zoom-in-top-enter, .custom-theme .el-zoom-in-top-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-bottom-enter-active, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center bottom; + transform-origin: center bottom +} + +.custom-theme .el-zoom-in-bottom-enter, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-left-enter-active, .custom-theme .el-zoom-in-left-leave-active { + opacity: 1; + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: top left; + transform-origin: top left +} + +.custom-theme .el-zoom-in-left-enter, .custom-theme .el-zoom-in-left-leave-active { + opacity: 0; + -webkit-transform: scale(.45, .45); + transform: scale(.45, .45) +} + +.custom-theme .collapse-transition { + -webkit-transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out; + transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out +} + +.custom-theme .horizontal-collapse-transition { + -webkit-transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out; + transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out +} + +.custom-theme .el-list-enter-active, .custom-theme .el-list-leave-active { + -webkit-transition: all 1s; + transition: all 1s +} + +.custom-theme .el-list-enter, .custom-theme .el-list-leave-active { + opacity: 0; + -webkit-transform: translateY(-30px); + transform: translateY(-30px) +} + +.custom-theme .el-opacity-transition { + -webkit-transition: opacity .3s cubic-bezier(.55, 0, .1, 1); + transition: opacity .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-date-editor { + position: relative; + display: inline-block; + text-align: left +} + +.custom-theme .el-date-editor.el-input, .custom-theme .el-date-editor.el-input__inner { + width: 220px +} + +.custom-theme .el-date-editor--daterange.el-input, .custom-theme .el-date-editor--daterange.el-input__inner, .custom-theme .el-date-editor--timerange.el-input, .custom-theme .el-date-editor--timerange.el-input__inner { + width: 350px +} + +.custom-theme .el-date-editor--datetimerange.el-input, .custom-theme .el-date-editor--datetimerange.el-input__inner { + width: 400px +} + +.custom-theme .el-date-editor .el-range__icon { + font-size: 14px; + margin-left: -5px; + color: #b4bccc; + float: left; + line-height: 32px +} + +.custom-theme .el-date-editor .el-range-input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + outline: 0; + display: inline-block; + height: 100%; + margin: 0; + padding: 0; + width: 39%; + text-align: center; + font-size: 14px; + color: #5a5e66 +} + +.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-separator { + display: inline-block; + height: 100%; + padding: 0 5px; + margin: 0; + text-align: center; + line-height: 32px; + font-size: 14px; + width: 5%; + color: #2d2f33 +} + +.custom-theme .el-date-editor .el-range__close-icon { + font-size: 14px; + color: #b4bccc; + width: 25px; + display: inline-block; + float: right; + line-height: 32px +} + +.custom-theme .el-range-editor.el-input__inner { + padding: 3px 10px +} + +.custom-theme .el-range-editor.is-active { + border-color: #262729 +} + +.custom-theme .el-range-editor.is-active:hover { + border-color: #262729 +} + +.custom-theme .el-range-editor--medium.el-input__inner { + height: 36px +} + +.custom-theme .el-range-editor--medium .el-range-separator { + line-height: 28px; + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range-input { + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range__close-icon, .custom-theme .el-range-editor--medium .el-range__icon { + line-height: 28px +} + +.custom-theme .el-range-editor--small.el-input__inner { + height: 32px +} + +.custom-theme .el-range-editor--small .el-range-separator { + line-height: 24px; + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range-input { + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range__close-icon, .custom-theme .el-range-editor--small .el-range__icon { + line-height: 24px +} + +.custom-theme .el-range-editor--mini.el-input__inner { + height: 28px +} + +.custom-theme .el-range-editor--mini .el-range-separator { + line-height: 20px; + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range-input { + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range__close-icon, .custom-theme .el-range-editor--mini .el-range__icon { + line-height: 20px +} + +.custom-theme .el-range-editor.is-disabled { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled:focus, .custom-theme .el-range-editor.is-disabled:hover { + border-color: #dfe4ed +} + +.custom-theme .el-range-editor.is-disabled input { + background-color: #f5f7fa; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled .el-range-separator { + color: #b4bccc +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper { + width: 33.3% +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2) { + margin-left: 1% +} + +.custom-theme .el-time-spinner__wrapper { + max-height: 190px; + overflow: auto; + display: inline-block; + width: 50%; + vertical-align: top; + position: relative +} + +.custom-theme .el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) { + padding-bottom: 15px +} + +.custom-theme .el-time-spinner__wrapper.is-arrow { + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + overflow: hidden +} + +.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__list { + -webkit-transform: translateY(-32px); + transform: translateY(-32px) +} + +.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active) { + background: #fff; + cursor: default +} + +.custom-theme .el-time-spinner__arrow { + font-size: 12px; + color: #878d99; + position: absolute; + left: 0; + width: 100%; + z-index: 1; + text-align: center; + height: 30px; + line-height: 30px; + cursor: pointer +} + +.custom-theme .el-time-spinner__arrow:hover { + color: #262729 +} + +.custom-theme .el-time-spinner__arrow.el-icon-arrow-up { + top: 10px +} + +.custom-theme .el-time-spinner__arrow.el-icon-arrow-down { + bottom: 10px +} + +.custom-theme .el-time-spinner__input.el-input { + width: 70% +} + +.custom-theme .el-time-spinner__input.el-input .el-input__inner { + padding: 0; + text-align: center +} + +.custom-theme .el-time-spinner__list { + padding: 0; + margin: 0; + list-style: none; + text-align: center +} + +.custom-theme .el-time-spinner__list::after, .custom-theme .el-time-spinner__list::before { + content: ''; + display: block; + width: 100%; + height: 80px +} + +.custom-theme .el-time-spinner__item { + height: 32px; + line-height: 32px; + font-size: 12px; + color: #5a5e66 +} + +.custom-theme .el-time-spinner__item:hover:not(.disabled):not(.active) { + background: #f5f7fa; + cursor: pointer +} + +.custom-theme .el-time-spinner__item.active:not(.disabled) { + color: #2d2f33; + font-weight: 700 +} + +.custom-theme .el-time-spinner__item.disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-time-panel { + margin: 5px 0; + border: solid 1px #dfe4ed; + 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); + border-radius: 2px; + position: absolute; + width: 180px; + left: 0; + z-index: 1000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-time-panel__content { + font-size: 0; + position: relative; + overflow: hidden +} + +.custom-theme .el-time-panel__content::after, .custom-theme .el-time-panel__content::before { + content: ""; + top: 50%; + position: absolute; + margin-top: -15px; + height: 32px; + z-index: -1; + left: 0; + right: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-top: 6px; + text-align: left; + border-top: 1px solid #dfe4ed; + border-bottom: 1px solid #dfe4ed +} + +.custom-theme .el-time-panel__content::after { + left: 50%; + margin-left: 12%; + margin-right: 12% +} + +.custom-theme .el-time-panel__content::before { + padding-left: 50%; + margin-right: 12%; + margin-left: 12% +} + +.custom-theme .el-time-panel__content.has-seconds::after { + left: calc(100% / 3 * 2) +} + +.custom-theme .el-time-panel__content.has-seconds::before { + padding-left: calc(100% / 3) +} + +.custom-theme .el-time-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + height: 36px; + line-height: 25px; + text-align: right; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-time-panel__btn { + border: none; + line-height: 28px; + padding: 0 5px; + margin: 0 5px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px; + color: #2d2f33 +} + +.custom-theme .el-time-panel__btn.confirm { + font-weight: 800; + color: #262729 +} + +.custom-theme .el-time-panel .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .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)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .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)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-popover { + position: absolute; + background: #fff; + min-width: 150px; + border-radius: 4px; + border: 1px solid #e6ebf5; + padding: 12px; + z-index: 2000; + color: #5a5e66; + line-height: 1.4; + text-align: justify; + word-break: break-all; + 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) +} + +.custom-theme .el-popover--plain { + padding: 18px 20px +} + +.custom-theme .el-popover__title { + color: #2d2f33; + font-size: 16px; + line-height: 1; + margin-bottom: 12px +} + +.custom-theme .el-tooltip__popper { + position: absolute; + border-radius: 4px; + padding: 10px; + z-index: 2000; + font-size: 12px; + line-height: 1.2 +} + +.custom-theme .el-tooltip__popper .popper__arrow, .custom-theme .el-tooltip__popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-tooltip__popper .popper__arrow { + border-width: 6px +} + +.custom-theme .el-tooltip__popper .popper__arrow::after { + content: " "; + border-width: 5px +} + +.custom-theme .el-tooltip__popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow { + bottom: -6px; + border-top-color: #2d2f33; + border-bottom-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -5px; + border-top-color: #2d2f33; + border-bottom-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow { + top: -6px; + border-top-width: 0; + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -5px; + border-top-width: 0; + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow { + left: -6px; + border-right-color: #2d2f33; + border-left-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow::after { + bottom: -5px; + left: 1px; + border-right-color: #2d2f33; + border-left-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow { + right: -6px; + border-right-width: 0; + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -5px; + margin-left: -5px; + border-right-width: 0; + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-dark { + background: #2d2f33; + color: #fff +} + +.custom-theme .el-tooltip__popper.is-light { + background: #fff; + border: 1px solid #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow { + border-top-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after { + border-top-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow { + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after { + border-bottom-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow { + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after { + border-left-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow { + border-right-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after { + border-right-color: #fff +} + +.custom-theme .v-modal-enter { + -webkit-animation: v-modal-in .2s ease; + animation: v-modal-in .2s ease +} + +.custom-theme .v-modal-leave { + -webkit-animation: v-modal-out .2s ease forwards; + animation: v-modal-out .2s ease forwards +} + +@keyframes v-modal-in { + 0% { + opacity: 0 + } +} + +@keyframes v-modal-out { + 100% { + opacity: 0 + } +} + +.custom-theme .v-modal { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: .5; + background: #000 +} + +.custom-theme .el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-color: #d8dce5; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + -webkit-transition: .1s; + transition: .1s; + font-weight: 500; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button + .el-button { + margin-left: 10px +} + +.custom-theme .el-button.is-round { + padding: 12px 20px +} + +.custom-theme .el-button:focus, .custom-theme .el-button:hover { + color: #262729; + border-color: #bebebf; + background-color: #e9e9ea +} + +.custom-theme .el-button:active { + color: #222325; + border-color: #222325; + outline: 0 +} + +.custom-theme .el-button::-moz-focus-inner { + border: 0 +} + +.custom-theme .el-button [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-button.is-plain:focus, .custom-theme .el-button.is-plain:hover { + background: #fff; + border-color: #262729; + color: #262729 +} + +.custom-theme .el-button.is-plain:active { + background: #fff; + border-color: #222325; + color: #222325; + outline: 0 +} + +.custom-theme .el-button.is-active { + color: #222325; + border-color: #222325 +} + +.custom-theme .el-button.is-disabled, .custom-theme .el-button.is-disabled:focus, .custom-theme .el-button.is-disabled:hover { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5 +} + +.custom-theme .el-button.is-disabled.el-button--text { + background-color: transparent +} + +.custom-theme .el-button.is-disabled.is-plain, .custom-theme .el-button.is-disabled.is-plain:focus, .custom-theme .el-button.is-disabled.is-plain:hover { + background-color: #fff; + border-color: #e6ebf5; + color: #b4bccc +} + +.custom-theme .el-button.is-loading { + position: relative; + pointer-events: none +} + +.custom-theme .el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255, 255, 255, .35) +} + +.custom-theme .el-button.is-round { + border-radius: 20px; + padding: 12px 23px +} + +.custom-theme .el-button--primary { + color: #fff; + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-button--primary:focus, .custom-theme .el-button--primary:hover { + background: #515254; + border-color: #515254; + color: #fff +} + +.custom-theme .el-button--primary:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-active { + background: #222325; + border-color: #222325; + color: #fff +} + +.custom-theme .el-button--primary.is-disabled, .custom-theme .el-button--primary.is-disabled:active, .custom-theme .el-button--primary.is-disabled:focus, .custom-theme .el-button--primary.is-disabled:hover { + color: #fff; + background-color: #939394; + border-color: #939394 +} + +.custom-theme .el-button--primary.is-plain { + color: #262729; + background: #e9e9ea; + border-color: #a8a9a9 +} + +.custom-theme .el-button--primary.is-plain:focus, .custom-theme .el-button--primary.is-plain:hover { + background: #262729; + border-color: #262729; + color: #fff +} + +.custom-theme .el-button--primary.is-plain:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-plain.is-disabled, .custom-theme .el-button--primary.is-plain.is-disabled:active, .custom-theme .el-button--primary.is-plain.is-disabled:focus, .custom-theme .el-button--primary.is-plain.is-disabled:hover { + color: #7d7d7f; + background-color: #e9e9ea; + border-color: #d4d4d4 +} + +.custom-theme .el-button--success { + color: #fff; + background-color: #409167; + border-color: #409167 +} + +.custom-theme .el-button--success:focus, .custom-theme .el-button--success:hover { + background: #66a785; + border-color: #66a785; + color: #fff +} + +.custom-theme .el-button--success:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-active { + background: #3a835d; + border-color: #3a835d; + color: #fff +} + +.custom-theme .el-button--success.is-disabled, .custom-theme .el-button--success.is-disabled:active, .custom-theme .el-button--success.is-disabled:focus, .custom-theme .el-button--success.is-disabled:hover { + color: #fff; + background-color: #a0c8b3; + border-color: #a0c8b3 +} + +.custom-theme .el-button--success.is-plain { + color: #409167; + background: #ecf4f0; + border-color: #b3d3c2 +} + +.custom-theme .el-button--success.is-plain:focus, .custom-theme .el-button--success.is-plain:hover { + background: #409167; + border-color: #409167; + color: #fff +} + +.custom-theme .el-button--success.is-plain:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-plain.is-disabled, .custom-theme .el-button--success.is-plain.is-disabled:active, .custom-theme .el-button--success.is-plain.is-disabled:focus, .custom-theme .el-button--success.is-plain.is-disabled:hover { + color: #8cbda4; + background-color: #ecf4f0; + border-color: #d9e9e1 +} + +.custom-theme .el-button--warning { + color: #fff; + background-color: #9da408; + border-color: #9da408 +} + +.custom-theme .el-button--warning:focus, .custom-theme .el-button--warning:hover { + background: #b1b639; + border-color: #b1b639; + color: #fff +} + +.custom-theme .el-button--warning:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-active { + background: #8d9407; + border-color: #8d9407; + color: #fff +} + +.custom-theme .el-button--warning.is-disabled, .custom-theme .el-button--warning.is-disabled:active, .custom-theme .el-button--warning.is-disabled:focus, .custom-theme .el-button--warning.is-disabled:hover { + color: #fff; + background-color: #ced284; + border-color: #ced284 +} + +.custom-theme .el-button--warning.is-plain { + color: #9da408; + background: #f5f6e6; + border-color: #d8db9c +} + +.custom-theme .el-button--warning.is-plain:focus, .custom-theme .el-button--warning.is-plain:hover { + background: #9da408; + border-color: #9da408; + color: #fff +} + +.custom-theme .el-button--warning.is-plain:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-plain.is-disabled, .custom-theme .el-button--warning.is-plain.is-disabled:active, .custom-theme .el-button--warning.is-plain.is-disabled:focus, .custom-theme .el-button--warning.is-plain.is-disabled:hover { + color: #c4c86b; + background-color: #f5f6e6; + border-color: #ebedce +} + +.custom-theme .el-button--danger { + color: #fff; + background-color: #b3450e; + border-color: #b3450e +} + +.custom-theme .el-button--danger:focus, .custom-theme .el-button--danger:hover { + background: #c26a3e; + border-color: #c26a3e; + color: #fff +} + +.custom-theme .el-button--danger:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff +} + +.custom-theme .el-button--danger.is-disabled, .custom-theme .el-button--danger.is-disabled:active, .custom-theme .el-button--danger.is-disabled:focus, .custom-theme .el-button--danger.is-disabled:hover { + color: #fff; + background-color: #d9a287; + border-color: #d9a287 +} + +.custom-theme .el-button--danger.is-plain { + color: #b3450e; + background: #f7ece7; + border-color: #e1b59f +} + +.custom-theme .el-button--danger.is-plain:focus, .custom-theme .el-button--danger.is-plain:hover { + background: #b3450e; + border-color: #b3450e; + color: #fff +} + +.custom-theme .el-button--danger.is-plain:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-plain.is-disabled, .custom-theme .el-button--danger.is-plain.is-disabled:active, .custom-theme .el-button--danger.is-plain.is-disabled:focus, .custom-theme .el-button--danger.is-plain.is-disabled:hover { + color: #d18f6e; + background-color: #f7ece7; + border-color: #f0dacf +} + +.custom-theme .el-button--info { + color: #fff; + background-color: #0a76a4; + border-color: #0a76a4 +} + +.custom-theme .el-button--info:focus, .custom-theme .el-button--info:hover { + background: #3b91b6; + border-color: #3b91b6; + color: #fff +} + +.custom-theme .el-button--info:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-active { + background: #096a94; + border-color: #096a94; + color: #fff +} + +.custom-theme .el-button--info.is-disabled, .custom-theme .el-button--info.is-disabled:active, .custom-theme .el-button--info.is-disabled:focus, .custom-theme .el-button--info.is-disabled:hover { + color: #fff; + background-color: #85bbd2; + border-color: #85bbd2 +} + +.custom-theme .el-button--info.is-plain { + color: #0a76a4; + background: #e7f1f6; + border-color: #9dc8db +} + +.custom-theme .el-button--info.is-plain:focus, .custom-theme .el-button--info.is-plain:hover { + background: #0a76a4; + border-color: #0a76a4; + color: #fff +} + +.custom-theme .el-button--info.is-plain:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-plain.is-disabled, .custom-theme .el-button--info.is-plain.is-disabled:active, .custom-theme .el-button--info.is-plain.is-disabled:focus, .custom-theme .el-button--info.is-plain.is-disabled:hover { + color: #6cadc8; + background-color: #e7f1f6; + border-color: #cee4ed +} + +.custom-theme .el-button--medium { + padding: 10px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button--medium.is-round { + padding: 10px 20px +} + +.custom-theme .el-button--small { + padding: 9px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--small.is-round { + padding: 9px 15px +} + +.custom-theme .el-button--mini { + padding: 7px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--mini.is-round { + padding: 7px 15px +} + +.custom-theme .el-button--text { + border: none; + color: #262729; + background: 0 0; + padding-left: 0; + padding-right: 0 +} + +.custom-theme .el-button--text:focus, .custom-theme .el-button--text:hover { + color: #515254; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button--text:active { + color: #222325; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button-group { + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-button-group::after, .custom-theme .el-button-group::before { + display: table; + content: "" +} + +.custom-theme .el-button-group::after { + clear: both +} + +.custom-theme .el-button-group .el-button { + float: left; + position: relative +} + +.custom-theme .el-button-group .el-button + .el-button { + margin-left: 0 +} + +.custom-theme .el-button-group .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-button-group .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:last-child) { + margin-right: -1px +} + +.custom-theme .el-button-group .el-button:active, .custom-theme .el-button-group .el-button:focus, .custom-theme .el-button-group .el-button:hover { + z-index: 1 +} + +.custom-theme .el-button-group .el-button.is-active { + z-index: 1 +} + +.custom-theme .el-button-group .el-button--primary:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-message-box { + display: inline-block; + width: 420px; + padding-bottom: 10px; + vertical-align: middle; + background-color: #fff; + border-radius: 4px; + border: 1px solid #e6ebf5; + font-size: 18px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + text-align: left; + overflow: hidden; + -webkit-backface-visibility: hidden; + backface-visibility: hidden +} + +.custom-theme .el-message-box__wrapper { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + text-align: center +} + +.custom-theme .el-message-box__wrapper::after { + content: ""; + display: inline-block; + height: 100%; + width: 0; + vertical-align: middle +} + +.custom-theme .el-message-box__header { + position: relative; + padding: 15px; + padding-bottom: 10px +} + +.custom-theme .el-message-box__title { + padding-left: 0; + margin-bottom: 0; + font-size: 18px; + line-height: 1; + color: #2d2f33 +} + +.custom-theme .el-message-box__headerbtn { + position: absolute; + top: 15px; + right: 15px; + padding: 0; + border: none; + outline: 0; + background: 0 0; + font-size: 16px; + cursor: pointer +} + +.custom-theme .el-message-box__headerbtn .el-message-box__close { + color: #0a76a4 +} + +.custom-theme .el-message-box__headerbtn:focus .el-message-box__close, .custom-theme .el-message-box__headerbtn:hover .el-message-box__close { + color: #262729 +} + +.custom-theme .el-message-box__content { + position: relative; + padding: 10px 15px; + color: #5a5e66; + font-size: 14px +} + +.custom-theme .el-message-box__input { + padding-top: 15px +} + +.custom-theme .el-message-box__input input.invalid { + border-color: #b3450e +} + +.custom-theme .el-message-box__input input.invalid:focus { + border-color: #b3450e +} + +.custom-theme .el-message-box__status { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + font-size: 24px !important +} + +.custom-theme .el-message-box__status::before { + padding-left: 1px +} + +.custom-theme .el-message-box__status + .el-message-box__message { + padding-left: 36px; + padding-right: 12px +} + +.custom-theme .el-message-box__status.el-icon-success { + color: #409167 +} + +.custom-theme .el-message-box__status.el-icon-info { + color: #0a76a4 +} + +.custom-theme .el-message-box__status.el-icon-warning { + color: #9da408 +} + +.custom-theme .el-message-box__status.el-icon-error { + color: #b3450e +} + +.custom-theme .el-message-box__message { + margin: 0 +} + +.custom-theme .el-message-box__message p { + margin: 0; + line-height: 24px +} + +.custom-theme .el-message-box__errormsg { + color: #b3450e; + font-size: 12px; + min-height: 18px; + margin-top: 2px +} + +.custom-theme .el-message-box__btns { + padding: 5px 15px 0; + text-align: right +} + +.custom-theme .el-message-box__btns button:nth-child(2) { + margin-left: 10px +} + +.custom-theme .el-message-box__btns-reverse { + -webkit-box-orient: horizontal; + -webkit-box-direction: reverse; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse +} + +.custom-theme .el-message-box--center { + padding-bottom: 30px +} + +.custom-theme .el-message-box--center .el-message-box__header { + padding-top: 30px +} + +.custom-theme .el-message-box--center .el-message-box__title { + position: relative; + 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 +} + +.custom-theme .el-message-box--center .el-message-box__status { + position: relative; + top: auto; + padding-right: 5px; + text-align: center; + -webkit-transform: translateY(-1px); + transform: translateY(-1px) +} + +.custom-theme .el-message-box--center .el-message-box__message { + margin-left: 0 +} + +.custom-theme .el-message-box--center .el-message-box__btns, .custom-theme .el-message-box--center .el-message-box__content { + text-align: center +} + +.custom-theme .el-message-box--center .el-message-box__content { + padding-left: 27px; + padding-right: 27px +} + +.custom-theme .msgbox-fade-enter-active { + -webkit-animation: msgbox-fade-in .3s; + animation: msgbox-fade-in .3s +} + +.custom-theme .msgbox-fade-leave-active { + -webkit-animation: msgbox-fade-out .3s; + animation: msgbox-fade-out .3s +} + +@-webkit-keyframes msgbox-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 msgbox-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 msgbox-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 msgbox-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 + } +} + +.custom-theme .el-breadcrumb { + font-size: 14px; + line-height: 1 +} + +.custom-theme .el-breadcrumb::after, .custom-theme .el-breadcrumb::before { + display: table; + content: "" +} + +.custom-theme .el-breadcrumb::after { + clear: both +} + +.custom-theme .el-breadcrumb__separator { + margin: 0 9px; + font-weight: 700; + color: #b4bccc +} + +.custom-theme .el-breadcrumb__separator[class*=icon] { + margin: 0 6px; + font-weight: 400 +} + +.custom-theme .el-breadcrumb__item { + float: left +} + +.custom-theme .el-breadcrumb__inner, .custom-theme .el-breadcrumb__inner a { + font-weight: 700; + -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1); + transition: color .2s cubic-bezier(.645, .045, .355, 1); + color: #2d2f33 +} + +.custom-theme .el-breadcrumb__inner a:hover, .custom-theme .el-breadcrumb__inner:hover { + color: #262729; + cursor: pointer +} + +.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner, .custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner a, .custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover, .custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner:hover { + font-weight: 400; + color: #5a5e66; + cursor: text +} + +.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__separator { + display: none +} + +.custom-theme .el-form--label-left .el-form-item__label { + text-align: left +} + +.custom-theme .el-form--label-top .el-form-item__label { + float: none; + display: inline-block; + text-align: left; + padding: 0 0 10px 0 +} + +.custom-theme .el-form--inline .el-form-item { + display: inline-block; + margin-right: 10px; + vertical-align: top +} + +.custom-theme .el-form--inline .el-form-item__label { + float: none; + display: inline-block +} + +.custom-theme .el-form--inline .el-form-item__content { + display: inline-block; + vertical-align: top +} + +.custom-theme .el-form--inline.el-form--label-top .el-form-item__content { + display: block +} + +.custom-theme .el-form-item { + margin-bottom: 22px +} + +.custom-theme .el-form-item::after, .custom-theme .el-form-item::before { + display: table; + content: "" +} + +.custom-theme .el-form-item::after { + clear: both +} + +.custom-theme .el-form-item .el-form-item { + margin-bottom: 0 +} + +.custom-theme .el-form-item .el-input__validateIcon { + display: none +} + +.custom-theme .el-form-item--medium .el-form-item__label { + line-height: 36px +} + +.custom-theme .el-form-item--medium .el-form-item__content { + line-height: 36px +} + +.custom-theme .el-form-item--small .el-form-item__label { + line-height: 32px +} + +.custom-theme .el-form-item--small .el-form-item__content { + line-height: 32px +} + +.custom-theme .el-form-item--small.el-form-item { + margin-bottom: 18px +} + +.custom-theme .el-form-item--small .el-form-item__error { + padding-top: 2px +} + +.custom-theme .el-form-item--mini .el-form-item__label { + line-height: 28px +} + +.custom-theme .el-form-item--mini .el-form-item__content { + line-height: 28px +} + +.custom-theme .el-form-item--mini.el-form-item { + margin-bottom: 18px +} + +.custom-theme .el-form-item--mini .el-form-item__error { + padding-top: 1px +} + +.custom-theme .el-form-item__label { + text-align: right; + vertical-align: middle; + float: left; + font-size: 14px; + color: #5a5e66; + line-height: 40px; + padding: 0 12px 0 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-form-item__content { + line-height: 40px; + position: relative; + font-size: 14px +} + +.custom-theme .el-form-item__content::after, .custom-theme .el-form-item__content::before { + display: table; + content: "" +} + +.custom-theme .el-form-item__content::after { + clear: both +} + +.custom-theme .el-form-item__error { + color: #b3450e; + font-size: 12px; + line-height: 1; + padding-top: 4px; + position: absolute; + top: 100%; + left: 0 +} + +.custom-theme .el-form-item__error--inline { + position: relative; + top: auto; + left: auto; + display: inline-block; + margin-left: 10px +} + +.custom-theme .el-form-item.is-required .el-form-item__label:before { + content: '*'; + color: #b3450e; + margin-right: 4px +} + +.custom-theme .el-form-item.is-error .el-input__inner, .custom-theme .el-form-item.is-error .el-input__inner:focus, .custom-theme .el-form-item.is-error .el-textarea__inner, .custom-theme .el-form-item.is-error .el-textarea__inner:focus { + border-color: #b3450e +} + +.custom-theme .el-form-item.is-error .el-input-group__append .el-input__inner, .custom-theme .el-form-item.is-error .el-input-group__prepend .el-input__inner { + border-color: transparent +} + +.custom-theme .el-form-item.is-error .el-input__validateIcon { + color: #b3450e +} + +.custom-theme .el-form-item.is-success .el-input__inner, .custom-theme .el-form-item.is-success .el-input__inner:focus, .custom-theme .el-form-item.is-success .el-textarea__inner, .custom-theme .el-form-item.is-success .el-textarea__inner:focus { + border-color: #409167 +} + +.custom-theme .el-form-item.is-success .el-input-group__append .el-input__inner, .custom-theme .el-form-item.is-success .el-input-group__prepend .el-input__inner { + border-color: transparent +} + +.custom-theme .el-form-item.is-success .el-input__validateIcon { + color: #409167 +} + +.custom-theme .el-form-item--feedback .el-input__validateIcon { + display: inline-block +} + +.custom-theme .el-tabs__header { + padding: 0; + position: relative; + margin: 0 0 15px +} + +.custom-theme .el-tabs__active-bar { + position: absolute; + bottom: 0; + left: 0; + height: 2px; + background-color: #262729; + z-index: 1; + -webkit-transition: -webkit-transform .3s cubic-bezier(.645, .045, .355, 1); + transition: -webkit-transform .3s cubic-bezier(.645, .045, .355, 1); + transition: transform .3s cubic-bezier(.645, .045, .355, 1); + transition: transform .3s cubic-bezier(.645, .045, .355, 1), -webkit-transform .3s cubic-bezier(.645, .045, .355, 1); + list-style: none +} + +.custom-theme .el-tabs__new-tab { + float: right; + border: 1px solid #d3dce6; + height: 18px; + width: 18px; + line-height: 18px; + margin: 12px 0 9px 10px; + border-radius: 3px; + text-align: center; + font-size: 12px; + color: #d3dce6; + cursor: pointer; + -webkit-transition: all .15s; + transition: all .15s +} + +.custom-theme .el-tabs__new-tab .el-icon-plus { + -webkit-transform: scale(.8, .8); + transform: scale(.8, .8) +} + +.custom-theme .el-tabs__new-tab:hover { + color: #262729 +} + +.custom-theme .el-tabs__nav-wrap { + overflow: hidden; + margin-bottom: -1px; + position: relative +} + +.custom-theme .el-tabs__nav-wrap::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 2px; + background-color: #dfe4ed; + z-index: 1 +} + +.custom-theme .el-tabs__nav-wrap.is-scrollable { + padding: 0 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-tabs__nav-scroll { + overflow: hidden +} + +.custom-theme .el-tabs__nav-next, .custom-theme .el-tabs__nav-prev { + position: absolute; + cursor: pointer; + line-height: 44px; + font-size: 12px; + color: #878d99 +} + +.custom-theme .el-tabs__nav-next { + right: 0 +} + +.custom-theme .el-tabs__nav-prev { + left: 0 +} + +.custom-theme .el-tabs__nav { + white-space: nowrap; + position: relative; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + float: left; + z-index: 2 +} + +.custom-theme .el-tabs__item { + padding: 0 20px; + height: 40px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + line-height: 40px; + display: inline-block; + list-style: none; + font-size: 14px; + font-weight: 500; + color: #2d2f33; + position: relative +} + +.custom-theme .el-tabs__item:focus, .custom-theme .el-tabs__item:focus:active { + outline: 0 +} + +.custom-theme .el-tabs__item .el-icon-close { + border-radius: 50%; + text-align: center; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + margin-left: 5px +} + +.custom-theme .el-tabs__item .el-icon-close:before { + -webkit-transform: scale(.9); + transform: scale(.9); + display: inline-block +} + +.custom-theme .el-tabs__item .el-icon-close:hover { + background-color: #b4bccc; + color: #fff +} + +.custom-theme .el-tabs__item.is-active { + color: #262729 +} + +.custom-theme .el-tabs__item:hover { + color: #262729; + cursor: pointer +} + +.custom-theme .el-tabs__item.is-disabled { + color: #b4bccc; + cursor: default +} + +.custom-theme .el-tabs__content { + overflow: hidden; + position: relative +} + +.custom-theme .el-tabs--card > .el-tabs__header { + border-bottom: 1px solid #dfe4ed +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__nav-wrap::after { + content: none +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__nav { + border: 1px solid #dfe4ed; + border-bottom: none; + border-radius: 4px 4px 0 0 +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__active-bar { + display: none +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item .el-icon-close { + position: relative; + font-size: 12px; + width: 0; + height: 14px; + vertical-align: middle; + line-height: 15px; + overflow: hidden; + top: -1px; + right: -2px; + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50% +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item { + border-bottom: 1px solid transparent; + border-left: 1px solid #dfe4ed; + -webkit-transition: color .3s cubic-bezier(.645, .045, .355, 1), padding .3s cubic-bezier(.645, .045, .355, 1); + transition: color .3s cubic-bezier(.645, .045, .355, 1), padding .3s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item:first-child { + border-left: none +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-closable:hover { + padding-left: 13px; + padding-right: 13px +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close { + width: 14px +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-active { + border-bottom-color: #fff +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable { + padding-left: 20px; + padding-right: 20px +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close { + width: 14px +} + +.custom-theme .el-tabs--border-card { + background: #fff; + border: 1px solid #d8dce5; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .12), 0 0 6px 0 rgba(0, 0, 0, .04); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .12), 0 0 6px 0 rgba(0, 0, 0, .04) +} + +.custom-theme .el-tabs--border-card > .el-tabs__content { + padding: 15px +} + +.custom-theme .el-tabs--border-card > .el-tabs__header { + background-color: #f5f7fa; + border-bottom: 1px solid #dfe4ed; + margin: 0 +} + +.custom-theme .el-tabs--border-card > .el-tabs__header .el-tabs__nav-wrap::after { + content: none +} + +.custom-theme .el-tabs--border-card > .el-tabs__header .el-tabs__item { + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + border: 1px solid transparent; + margin: -1px -1px 0; + color: #878d99 +} + +.custom-theme .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active { + color: #262729; + background-color: #fff; + border-right-color: #d8dce5; + border-left-color: #d8dce5 +} + +.custom-theme .el-tabs--border-card > .el-tabs__header .el-tabs__item:hover { + color: #262729 +} + +.custom-theme .el-tabs--bottom:not(.el-tabs--border-card):not(.el-tabs--card) .el-tabs__item:nth-child(2), .custom-theme .el-tabs--top:not(.el-tabs--border-card):not(.el-tabs--card) .el-tabs__item:nth-child(2) { + padding-left: 0 +} + +.custom-theme .el-tabs--bottom .el-tabs__header { + margin-bottom: 0; + margin-top: 10px +} + +.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__header { + border-bottom: 0; + border-top: 1px solid #d8dce5 +} + +.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap { + margin-top: -1px; + margin-bottom: 0 +} + +.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__item { + border: 1px solid transparent; + margin: 0 -1px -1px -1px +} + +.custom-theme .el-tabs--left, .custom-theme .el-tabs--right { + overflow: hidden +} + +.custom-theme .el-tabs--left .el-tabs__header, .custom-theme .el-tabs--left .el-tabs__nav-scroll, .custom-theme .el-tabs--left .el-tabs__nav-wrap, .custom-theme .el-tabs--right .el-tabs__header, .custom-theme .el-tabs--right .el-tabs__nav-scroll, .custom-theme .el-tabs--right .el-tabs__nav-wrap { + height: 100% +} + +.custom-theme .el-tabs--left .el-tabs__active-bar, .custom-theme .el-tabs--right .el-tabs__active-bar { + top: 0; + bottom: auto; + width: 2px; + height: auto +} + +.custom-theme .el-tabs--left .el-tabs__nav-wrap, .custom-theme .el-tabs--right .el-tabs__nav-wrap { + margin-bottom: 0 +} + +.custom-theme .el-tabs--left .el-tabs__nav-wrap.is-scrollable, .custom-theme .el-tabs--right .el-tabs__nav-wrap.is-scrollable { + padding: 30px 0 +} + +.custom-theme .el-tabs--left .el-tabs__nav-wrap::after, .custom-theme .el-tabs--right .el-tabs__nav-wrap::after { + height: 100%; + width: 2px; + bottom: auto; + top: 0 +} + +.custom-theme .el-tabs--left .el-tabs__nav, .custom-theme .el-tabs--right .el-tabs__nav { + float: none +} + +.custom-theme .el-tabs--left .el-tabs__item, .custom-theme .el-tabs--right .el-tabs__item { + display: block +} + +.custom-theme .el-tabs--left .el-tabs__nav-next, .custom-theme .el-tabs--left .el-tabs__nav-prev, .custom-theme .el-tabs--right .el-tabs__nav-next, .custom-theme .el-tabs--right .el-tabs__nav-prev { + height: 30px; + line-height: 30px; + width: 100%; + text-align: center; + cursor: pointer +} + +.custom-theme .el-tabs--left .el-tabs__nav-next i, .custom-theme .el-tabs--left .el-tabs__nav-prev i, .custom-theme .el-tabs--right .el-tabs__nav-next i, .custom-theme .el-tabs--right .el-tabs__nav-prev i { + -webkit-transform: rotateZ(90deg); + transform: rotateZ(90deg) +} + +.custom-theme .el-tabs--left .el-tabs__nav-prev, .custom-theme .el-tabs--right .el-tabs__nav-prev { + left: auto; + top: 0 +} + +.custom-theme .el-tabs--left .el-tabs__nav-next, .custom-theme .el-tabs--right .el-tabs__nav-next { + right: auto; + bottom: 0 +} + +.custom-theme .el-tabs--left .el-tabs__header { + float: left; + margin-bottom: 0; + margin-right: 10px +} + +.custom-theme .el-tabs--left .el-tabs__nav-wrap { + margin-right: -1px +} + +.custom-theme .el-tabs--left .el-tabs__nav-wrap::after { + left: auto; + right: 0 +} + +.custom-theme .el-tabs--left .el-tabs__active-bar { + right: 0; + left: auto +} + +.custom-theme .el-tabs--left .el-tabs__item { + text-align: right +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__active-bar { + display: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item { + border-left: none; + border-right: 1px solid #dfe4ed; + border-bottom: none; + border-top: 1px solid #dfe4ed +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item:first-child { + border-right: 1px solid #dfe4ed; + border-top: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active { + border: 1px solid #dfe4ed; + border-right-color: #fff; + border-left: none; + border-bottom: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active:first-child { + border-top: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active:last-child { + border-bottom: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__nav { + border-radius: 4px 0 0 4px; + border-bottom: 1px solid #dfe4ed; + border-right: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__new-tab { + float: none +} + +.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__header { + border-right: 1px solid #dfe4ed +} + +.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__item { + border: 1px solid transparent; + margin: -1px 0 -1px -1px +} + +.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__item.is-active { + border-color: transparent; + border-top-color: #d1dbe5; + border-bottom-color: #d1dbe5 +} + +.custom-theme .el-tabs--right .el-tabs__header { + float: right; + margin-bottom: 0; + margin-left: 10px +} + +.custom-theme .el-tabs--right .el-tabs__nav-wrap { + margin-left: -1px +} + +.custom-theme .el-tabs--right .el-tabs__nav-wrap::after { + left: 0; + right: auto +} + +.custom-theme .el-tabs--right .el-tabs__active-bar { + left: 0 +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__active-bar { + display: none +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item { + border-bottom: none; + border-top: 1px solid #dfe4ed +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item:first-child { + border-left: 1px solid #dfe4ed; + border-top: none +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active { + border: 1px solid #dfe4ed; + border-left-color: #fff; + border-right: none; + border-bottom: none +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active:first-child { + border-top: none +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active:last-child { + border-bottom: none +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__nav { + border-radius: 0 4px 4px 0; + border-bottom: 1px solid #dfe4ed; + border-left: none +} + +.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__header { + border-left: 1px solid #dfe4ed +} + +.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__item { + border: 1px solid transparent; + margin: -1px -1px -1px 0 +} + +.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__item.is-active { + border-color: transparent; + border-top-color: #d1dbe5; + border-bottom-color: #d1dbe5 +} + +.custom-theme .slideInLeft-transition, .custom-theme .slideInRight-transition { + display: inline-block +} + +.custom-theme .slideInRight-enter { + -webkit-animation: slideInRight-enter .3s; + animation: slideInRight-enter .3s +} + +.custom-theme .slideInRight-leave { + position: absolute; + left: 0; + right: 0; + -webkit-animation: slideInRight-leave .3s; + animation: slideInRight-leave .3s +} + +.custom-theme .slideInLeft-enter { + -webkit-animation: slideInLeft-enter .3s; + animation: slideInLeft-enter .3s +} + +.custom-theme .slideInLeft-leave { + position: absolute; + left: 0; + right: 0; + -webkit-animation: slideInLeft-leave .3s; + animation: slideInLeft-leave .3s +} + +@-webkit-keyframes slideInRight-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@keyframes slideInRight-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@-webkit-keyframes slideInRight-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%); + opacity: 0 + } +} + +@keyframes slideInRight-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%); + opacity: 0 + } +} + +@-webkit-keyframes slideInLeft-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@keyframes slideInLeft-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@-webkit-keyframes slideInLeft-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + opacity: 0 + } +} + +@keyframes slideInLeft-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + opacity: 0 + } +} + +.custom-theme .el-tag { + background-color: rgba(38, 39, 41, .1); + display: inline-block; + padding: 0 10px; + height: 32px; + line-height: 30px; + font-size: 12px; + color: #262729; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid rgba(38, 39, 41, .2); + white-space: nowrap +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -5px; + color: #262729 +} + +.custom-theme .el-tag .el-icon-close::before { + display: block +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #262729; + color: #fff +} + +.custom-theme .el-tag--info { + background-color: rgba(10, 118, 164, .1); + border-color: rgba(10, 118, 164, .2); + color: #0a76a4 +} + +.custom-theme .el-tag--info.is-hit { + border-color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close { + color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close:hover { + background-color: #0a76a4; + color: #fff +} + +.custom-theme .el-tag--success { + background-color: rgba(64, 145, 103, .1); + border-color: rgba(64, 145, 103, .2); + color: #409167 +} + +.custom-theme .el-tag--success.is-hit { + border-color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close { + color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #409167; + color: #fff +} + +.custom-theme .el-tag--warning { + background-color: rgba(157, 164, 8, .1); + border-color: rgba(157, 164, 8, .2); + color: #9da408 +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close { + color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #9da408; + color: #fff +} + +.custom-theme .el-tag--danger { + background-color: rgba(179, 69, 14, .1); + border-color: rgba(179, 69, 14, .2); + color: #b3450e +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close { + color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #b3450e; + color: #fff +} + +.custom-theme .el-tag--medium { + height: 28px; + line-height: 26px +} + +.custom-theme .el-tag--medium .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--small { + height: 24px; + padding: 0 8px; + line-height: 22px +} + +.custom-theme .el-tag--small .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--mini { + height: 20px; + padding: 0 5px; + line-height: 19px +} + +.custom-theme .el-tag--mini .el-icon-close { + margin-left: -3px; + -webkit-transform: scale(.7); + transform: scale(.7) +} + +.custom-theme .el-tree { + cursor: default; + background: #fff; + color: #5a5e66 +} + +.custom-theme .el-tree__empty-block { + position: relative; + min-height: 60px; + text-align: center; + width: 100%; + height: 100% +} + +.custom-theme .el-tree__empty-text { + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + color: #623615 +} + +.custom-theme .el-tree-node { + white-space: nowrap +} + +.custom-theme .el-tree-node__content { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + height: 26px; + cursor: pointer +} + +.custom-theme .el-tree-node__content > .el-tree-node__expand-icon { + padding: 6px +} + +.custom-theme .el-tree-node__content > .el-checkbox { + margin-right: 8px +} + +.custom-theme .el-tree-node__content:hover { + background-color: #f5f7fa +} + +.custom-theme .el-tree-node__expand-icon { + cursor: pointer; + color: #b4bccc; + font-size: 12px; + -webkit-transform: rotate(0); + transform: rotate(0); + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; + transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out +} + +.custom-theme .el-tree-node__expand-icon.expanded { + -webkit-transform: rotate(90deg); + transform: rotate(90deg) +} + +.custom-theme .el-tree-node__expand-icon.is-leaf { + color: transparent; + cursor: default +} + +.custom-theme .el-tree-node__label { + font-size: 14px +} + +.custom-theme .el-tree-node__loading-icon { + margin-right: 8px; + font-size: 14px; + color: #b4bccc +} + +.custom-theme .el-tree-node > .el-tree-node__children { + overflow: hidden; + background-color: transparent +} + +.custom-theme .el-tree-node.is-expanded > .el-tree-node__children { + display: block +} + +.custom-theme .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content { + background-color: #eee +} + +.custom-theme .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 +} + +.custom-theme .el-alert.is-center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.custom-theme .el-alert--success { + background-color: #ecf4f0; + color: #409167 +} + +.custom-theme .el-alert--success .el-alert__description { + color: #409167 +} + +.custom-theme .el-alert--info { + background-color: #e7f1f6; + color: #0a76a4 +} + +.custom-theme .el-alert--info .el-alert__description { + color: #0a76a4 +} + +.custom-theme .el-alert--warning { + background-color: #f5f6e6; + color: #9da408 +} + +.custom-theme .el-alert--warning .el-alert__description { + color: #9da408 +} + +.custom-theme .el-alert--error { + background-color: #f7ece7; + color: #b3450e +} + +.custom-theme .el-alert--error .el-alert__description { + color: #b3450e +} + +.custom-theme .el-alert__content { + display: table-cell; + padding: 0 8px +} + +.custom-theme .el-alert__icon { + font-size: 16px; + width: 16px +} + +.custom-theme .el-alert__icon.is-big { + font-size: 28px; + width: 28px +} + +.custom-theme .el-alert__title { + font-size: 13px; + line-height: 18px +} + +.custom-theme .el-alert__title.is-bold { + font-weight: 700 +} + +.custom-theme .el-alert .el-alert__description { + font-size: 12px; + margin: 5px 0 0 0 +} + +.custom-theme .el-alert__closebtn { + font-size: 12px; + color: #b4bccc; + opacity: 1; + position: absolute; + top: 12px; + right: 15px; + cursor: pointer +} + +.custom-theme .el-alert__closebtn.is-customed { + font-style: normal; + font-size: 13px; + top: 9px +} + +.custom-theme .el-alert-fade-enter, .custom-theme .el-alert-fade-leave-active { + opacity: 0 +} + +.custom-theme .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 #e6ebf5; + 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 +} + +.custom-theme .el-notification.right { + right: 16px +} + +.custom-theme .el-notification.left { + left: 16px +} + +.custom-theme .el-notification__group { + margin-left: 13px +} + +.custom-theme .el-notification__title { + font-weight: 700; + font-size: 16px; + color: #2d2f33; + margin: 0 +} + +.custom-theme .el-notification__content { + font-size: 14px; + line-height: 21px; + margin: 6px 0 0 0; + color: #5a5e66; + text-align: justify +} + +.custom-theme .el-notification__content p { + margin: 0 +} + +.custom-theme .el-notification__icon { + height: 24px; + width: 24px; + font-size: 24px; + -webkit-transform: translateY(4px); + transform: translateY(4px) +} + +.custom-theme .el-notification__closeBtn { + position: absolute; + top: 15px; + right: 15px; + cursor: pointer; + color: #878d99; + font-size: 16px +} + +.custom-theme .el-notification__closeBtn:hover { + color: #5a5e66 +} + +.custom-theme .el-notification .el-icon-success { + color: #409167 +} + +.custom-theme .el-notification .el-icon-error { + color: #b3450e +} + +.custom-theme .el-notification .el-icon-info { + color: #0a76a4 +} + +.custom-theme .el-notification .el-icon-warning { + color: #9da408 +} + +.custom-theme .el-notification-fade-enter.right { + right: 0; + -webkit-transform: translateX(100%); + transform: translateX(100%) +} + +.custom-theme .el-notification-fade-enter.left { + left: 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%) +} + +.custom-theme .el-notification-fade-leave-active { + opacity: 0 +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input-number { + position: relative; + display: inline-block; + width: 180px; + line-height: 38px +} + +.custom-theme .el-input-number .el-input { + display: block +} + +.custom-theme .el-input-number .el-input__inner { + -webkit-appearance: none; + padding-left: 50px; + padding-right: 50px; + text-align: center +} + +.custom-theme .el-input-number__decrease, .custom-theme .el-input-number__increase { + position: absolute; + z-index: 1; + top: 1px; + width: 40px; + height: auto; + text-align: center; + background: #f5f7fa; + color: #5a5e66; + cursor: pointer; + font-size: 13px +} + +.custom-theme .el-input-number__decrease:hover, .custom-theme .el-input-number__increase:hover { + color: #262729 +} + +.custom-theme .el-input-number__decrease:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled), .custom-theme .el-input-number__increase:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled) { + border-color: #262729 +} + +.custom-theme .el-input-number__decrease.is-disabled, .custom-theme .el-input-number__increase.is-disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input-number__increase { + right: 1px; + border-radius: 0 4px 4px 0; + border-left: 1px solid #d8dce5 +} + +.custom-theme .el-input-number__decrease { + left: 1px; + border-radius: 4px 0 0 4px; + border-right: 1px solid #d8dce5 +} + +.custom-theme .el-input-number.is-disabled .el-input-number__decrease, .custom-theme .el-input-number.is-disabled .el-input-number__increase { + border-color: #dfe4ed; + color: #dfe4ed +} + +.custom-theme .el-input-number.is-disabled .el-input-number__decrease:hover, .custom-theme .el-input-number.is-disabled .el-input-number__increase:hover { + color: #dfe4ed; + cursor: not-allowed +} + +.custom-theme .el-input-number--medium { + width: 200px; + line-height: 34px +} + +.custom-theme .el-input-number--medium .el-input-number__decrease, .custom-theme .el-input-number--medium .el-input-number__increase { + width: 36px; + font-size: 14px +} + +.custom-theme .el-input-number--medium .el-input__inner { + padding-left: 43px; + padding-right: 43px +} + +.custom-theme .el-input-number--small { + width: 130px; + line-height: 30px +} + +.custom-theme .el-input-number--small .el-input-number__decrease, .custom-theme .el-input-number--small .el-input-number__increase { + width: 32px; + font-size: 13px +} + +.custom-theme .el-input-number--small .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number--small .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.9); + transform: scale(.9) +} + +.custom-theme .el-input-number--small .el-input__inner { + padding-left: 39px; + padding-right: 39px +} + +.custom-theme .el-input-number--mini { + width: 130px; + line-height: 26px +} + +.custom-theme .el-input-number--mini .el-input-number__decrease, .custom-theme .el-input-number--mini .el-input-number__increase { + width: 28px; + font-size: 12px +} + +.custom-theme .el-input-number--mini .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number--mini .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-input-number--mini .el-input__inner { + padding-left: 35px; + padding-right: 35px +} + +.custom-theme .el-input-number.is-without-controls .el-input__inner { + padding-left: 15px; + padding-right: 15px +} + +.custom-theme .el-input-number.is-controls-right .el-input__inner { + padding-left: 15px; + padding-right: 50px +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease, .custom-theme .el-input-number.is-controls-right .el-input-number__increase { + height: auto; + line-height: 19px +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number.is-controls-right .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__increase { + border-radius: 0 4px 0 0; + border-bottom: 1px solid #d8dce5 +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease { + right: 1px; + bottom: 1px; + top: auto; + left: auto; + border-right: none; + border-left: 1px solid #d8dce5; + border-radius: 0 0 4px 0 +} + +.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=medium] [class*=increase] { + line-height: 17px +} + +.custom-theme .el-input-number.is-controls-right[class*=small] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=small] [class*=increase] { + line-height: 15px +} + +.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=mini] [class*=increase] { + line-height: 13px +} + +.custom-theme .el-tooltip__popper { + position: absolute; + border-radius: 4px; + padding: 10px; + z-index: 2000; + font-size: 12px; + line-height: 1.2 +} + +.custom-theme .el-tooltip__popper .popper__arrow, .custom-theme .el-tooltip__popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-tooltip__popper .popper__arrow { + border-width: 6px +} + +.custom-theme .el-tooltip__popper .popper__arrow::after { + content: " "; + border-width: 5px +} + +.custom-theme .el-tooltip__popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow { + bottom: -6px; + border-top-color: #2d2f33; + border-bottom-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -5px; + border-top-color: #2d2f33; + border-bottom-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow { + top: -6px; + border-top-width: 0; + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -5px; + border-top-width: 0; + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow { + left: -6px; + border-right-color: #2d2f33; + border-left-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow::after { + bottom: -5px; + left: 1px; + border-right-color: #2d2f33; + border-left-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow { + right: -6px; + border-right-width: 0; + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -5px; + margin-left: -5px; + border-right-width: 0; + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-dark { + background: #2d2f33; + color: #fff +} + +.custom-theme .el-tooltip__popper.is-light { + background: #fff; + border: 1px solid #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow { + border-top-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after { + border-top-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow { + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after { + border-bottom-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow { + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after { + border-left-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow { + border-right-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after { + border-right-color: #fff +} + +.custom-theme .el-slider::after, .custom-theme .el-slider::before { + display: table; + content: "" +} + +.custom-theme .el-slider::after { + clear: both +} + +.custom-theme .el-slider__runway { + width: 100%; + height: 6px; + margin: 16px 0; + background-color: #dfe4ed; + border-radius: 3px; + position: relative; + cursor: pointer; + vertical-align: middle +} + +.custom-theme .el-slider__runway.show-input { + margin-right: 160px; + width: auto +} + +.custom-theme .el-slider__runway.disabled { + cursor: default +} + +.custom-theme .el-slider__runway.disabled .el-slider__bar { + background-color: #b4bccc +} + +.custom-theme .el-slider__runway.disabled .el-slider__button { + border-color: #b4bccc +} + +.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper.hover, .custom-theme .el-slider__runway.disabled .el-slider__button-wrapper:hover { + cursor: not-allowed +} + +.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper.dragging { + cursor: not-allowed +} + +.custom-theme .el-slider__runway.disabled .el-slider__button.dragging, .custom-theme .el-slider__runway.disabled .el-slider__button.hover, .custom-theme .el-slider__runway.disabled .el-slider__button:hover { + -webkit-transform: scale(1); + transform: scale(1) +} + +.custom-theme .el-slider__runway.disabled .el-slider__button.hover, .custom-theme .el-slider__runway.disabled .el-slider__button:hover { + cursor: not-allowed +} + +.custom-theme .el-slider__runway.disabled .el-slider__button.dragging { + cursor: not-allowed +} + +.custom-theme .el-slider__input { + float: right; + margin-top: 3px +} + +.custom-theme .el-slider__bar { + height: 6px; + background-color: #262729; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + position: absolute +} + +.custom-theme .el-slider__button-wrapper { + height: 36px; + width: 36px; + position: absolute; + z-index: 1001; + top: -15px; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + background-color: transparent; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-slider__button-wrapper::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-slider__button-wrapper .el-tooltip { + vertical-align: middle; + display: inline-block +} + +.custom-theme .el-slider__button-wrapper.hover, .custom-theme .el-slider__button-wrapper:hover { + cursor: -webkit-grab; + cursor: grab +} + +.custom-theme .el-slider__button-wrapper.dragging { + cursor: -webkit-grabbing; + cursor: grabbing +} + +.custom-theme .el-slider__button { + width: 16px; + height: 16px; + border: solid 2px #262729; + background-color: #fff; + border-radius: 50%; + -webkit-transition: .2s; + transition: .2s; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-slider__button.dragging, .custom-theme .el-slider__button.hover, .custom-theme .el-slider__button:hover { + -webkit-transform: scale(1.2); + transform: scale(1.2) +} + +.custom-theme .el-slider__button.hover, .custom-theme .el-slider__button:hover { + cursor: -webkit-grab; + cursor: grab +} + +.custom-theme .el-slider__button.dragging { + cursor: -webkit-grabbing; + cursor: grabbing +} + +.custom-theme .el-slider__stop { + position: absolute; + height: 6px; + width: 6px; + border-radius: 100%; + background-color: #fff; + -webkit-transform: translateX(-50%); + transform: translateX(-50%) +} + +.custom-theme .el-slider.is-vertical { + position: relative +} + +.custom-theme .el-slider.is-vertical .el-slider__runway { + width: 4px; + height: 100%; + margin: 0 16px +} + +.custom-theme .el-slider.is-vertical .el-slider__bar { + width: 4px; + height: auto; + border-radius: 0 0 3px 3px +} + +.custom-theme .el-slider.is-vertical .el-slider__button-wrapper { + top: auto; + left: -15px; + -webkit-transform: translateY(50%); + transform: translateY(50%) +} + +.custom-theme .el-slider.is-vertical .el-slider__stop { + -webkit-transform: translateY(50%); + transform: translateY(50%) +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input { + padding-bottom: 58px +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input { + overflow: visible; + float: none; + position: absolute; + bottom: 22px; + width: 36px; + margin-top: 15px +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner { + text-align: center; + padding-left: 5px; + padding-right: 5px +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease, .custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase { + top: 32px; + margin-top: -1px; + border: 1px solid #d8dce5; + line-height: 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease { + width: 18px; + right: 18px; + border-bottom-left-radius: 4px +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase { + width: 19px; + border-bottom-right-radius: 4px +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase ~ .el-input .el-input__inner { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease, .custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase { + border-color: #b4bccc +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease, .custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase { + border-color: #262729 +} + +.custom-theme .el-loading-parent--relative { + position: relative !important +} + +.custom-theme .el-loading-parent--hidden { + overflow: hidden !important +} + +.custom-theme .el-loading-mask { + position: absolute; + z-index: 10000; + background-color: rgba(255, 255, 255, .9); + margin: 0; + top: 0; + right: 0; + bottom: 0; + left: 0; + -webkit-transition: opacity .3s; + transition: opacity .3s +} + +.custom-theme .el-loading-mask.is-fullscreen { + position: fixed +} + +.custom-theme .el-loading-mask.is-fullscreen .el-loading-spinner { + margin-top: -25px +} + +.custom-theme .el-loading-mask.is-fullscreen .el-loading-spinner .circular { + height: 50px; + width: 50px +} + +.custom-theme .el-loading-spinner { + top: 50%; + margin-top: -21px; + width: 100%; + text-align: center; + position: absolute +} + +.custom-theme .el-loading-spinner .el-loading-text { + color: #262729; + margin: 3px 0; + font-size: 14px +} + +.custom-theme .el-loading-spinner .circular { + height: 42px; + width: 42px; + -webkit-animation: loading-rotate 2s linear infinite; + animation: loading-rotate 2s linear infinite +} + +.custom-theme .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: #262729; + stroke-linecap: round +} + +.custom-theme .el-loading-spinner i { + color: #262729 +} + +.custom-theme .el-loading-fade-enter, .custom-theme .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 + } +} + +.custom-theme .el-row { + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-row::after, .custom-theme .el-row::before { + display: table; + content: "" +} + +.custom-theme .el-row::after { + clear: both +} + +.custom-theme .el-row--flex { + display: -webkit-box; + display: -ms-flexbox; + display: flex +} + +.custom-theme .el-row--flex:after, .custom-theme .el-row--flex:before { + display: none +} + +.custom-theme .el-row--flex.is-justify-center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.custom-theme .el-row--flex.is-justify-end { + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end +} + +.custom-theme .el-row--flex.is-justify-space-between { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between +} + +.custom-theme .el-row--flex.is-justify-space-around { + -ms-flex-pack: distribute; + justify-content: space-around +} + +.custom-theme .el-row--flex.is-align-middle { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.custom-theme .el-row--flex.is-align-bottom { + -webkit-box-align: end; + -ms-flex-align: end; + align-items: flex-end +} + +.custom-theme [class*=el-col-] { + float: left; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-col-0 { + display: none +} + +.custom-theme .el-col-1 { + width: 4.16667% +} + +.custom-theme .el-col-offset-1 { + margin-left: 4.16667% +} + +.custom-theme .el-col-pull-1 { + position: relative; + right: 4.16667% +} + +.custom-theme .el-col-push-1 { + position: relative; + left: 4.16667% +} + +.custom-theme .el-col-2 { + width: 8.33333% +} + +.custom-theme .el-col-offset-2 { + margin-left: 8.33333% +} + +.custom-theme .el-col-pull-2 { + position: relative; + right: 8.33333% +} + +.custom-theme .el-col-push-2 { + position: relative; + left: 8.33333% +} + +.custom-theme .el-col-3 { + width: 12.5% +} + +.custom-theme .el-col-offset-3 { + margin-left: 12.5% +} + +.custom-theme .el-col-pull-3 { + position: relative; + right: 12.5% +} + +.custom-theme .el-col-push-3 { + position: relative; + left: 12.5% +} + +.custom-theme .el-col-4 { + width: 16.66667% +} + +.custom-theme .el-col-offset-4 { + margin-left: 16.66667% +} + +.custom-theme .el-col-pull-4 { + position: relative; + right: 16.66667% +} + +.custom-theme .el-col-push-4 { + position: relative; + left: 16.66667% +} + +.custom-theme .el-col-5 { + width: 20.83333% +} + +.custom-theme .el-col-offset-5 { + margin-left: 20.83333% +} + +.custom-theme .el-col-pull-5 { + position: relative; + right: 20.83333% +} + +.custom-theme .el-col-push-5 { + position: relative; + left: 20.83333% +} + +.custom-theme .el-col-6 { + width: 25% +} + +.custom-theme .el-col-offset-6 { + margin-left: 25% +} + +.custom-theme .el-col-pull-6 { + position: relative; + right: 25% +} + +.custom-theme .el-col-push-6 { + position: relative; + left: 25% +} + +.custom-theme .el-col-7 { + width: 29.16667% +} + +.custom-theme .el-col-offset-7 { + margin-left: 29.16667% +} + +.custom-theme .el-col-pull-7 { + position: relative; + right: 29.16667% +} + +.custom-theme .el-col-push-7 { + position: relative; + left: 29.16667% +} + +.custom-theme .el-col-8 { + width: 33.33333% +} + +.custom-theme .el-col-offset-8 { + margin-left: 33.33333% +} + +.custom-theme .el-col-pull-8 { + position: relative; + right: 33.33333% +} + +.custom-theme .el-col-push-8 { + position: relative; + left: 33.33333% +} + +.custom-theme .el-col-9 { + width: 37.5% +} + +.custom-theme .el-col-offset-9 { + margin-left: 37.5% +} + +.custom-theme .el-col-pull-9 { + position: relative; + right: 37.5% +} + +.custom-theme .el-col-push-9 { + position: relative; + left: 37.5% +} + +.custom-theme .el-col-10 { + width: 41.66667% +} + +.custom-theme .el-col-offset-10 { + margin-left: 41.66667% +} + +.custom-theme .el-col-pull-10 { + position: relative; + right: 41.66667% +} + +.custom-theme .el-col-push-10 { + position: relative; + left: 41.66667% +} + +.custom-theme .el-col-11 { + width: 45.83333% +} + +.custom-theme .el-col-offset-11 { + margin-left: 45.83333% +} + +.custom-theme .el-col-pull-11 { + position: relative; + right: 45.83333% +} + +.custom-theme .el-col-push-11 { + position: relative; + left: 45.83333% +} + +.custom-theme .el-col-12 { + width: 50% +} + +.custom-theme .el-col-offset-12 { + margin-left: 50% +} + +.custom-theme .el-col-pull-12 { + position: relative; + right: 50% +} + +.custom-theme .el-col-push-12 { + position: relative; + left: 50% +} + +.custom-theme .el-col-13 { + width: 54.16667% +} + +.custom-theme .el-col-offset-13 { + margin-left: 54.16667% +} + +.custom-theme .el-col-pull-13 { + position: relative; + right: 54.16667% +} + +.custom-theme .el-col-push-13 { + position: relative; + left: 54.16667% +} + +.custom-theme .el-col-14 { + width: 58.33333% +} + +.custom-theme .el-col-offset-14 { + margin-left: 58.33333% +} + +.custom-theme .el-col-pull-14 { + position: relative; + right: 58.33333% +} + +.custom-theme .el-col-push-14 { + position: relative; + left: 58.33333% +} + +.custom-theme .el-col-15 { + width: 62.5% +} + +.custom-theme .el-col-offset-15 { + margin-left: 62.5% +} + +.custom-theme .el-col-pull-15 { + position: relative; + right: 62.5% +} + +.custom-theme .el-col-push-15 { + position: relative; + left: 62.5% +} + +.custom-theme .el-col-16 { + width: 66.66667% +} + +.custom-theme .el-col-offset-16 { + margin-left: 66.66667% +} + +.custom-theme .el-col-pull-16 { + position: relative; + right: 66.66667% +} + +.custom-theme .el-col-push-16 { + position: relative; + left: 66.66667% +} + +.custom-theme .el-col-17 { + width: 70.83333% +} + +.custom-theme .el-col-offset-17 { + margin-left: 70.83333% +} + +.custom-theme .el-col-pull-17 { + position: relative; + right: 70.83333% +} + +.custom-theme .el-col-push-17 { + position: relative; + left: 70.83333% +} + +.custom-theme .el-col-18 { + width: 75% +} + +.custom-theme .el-col-offset-18 { + margin-left: 75% +} + +.custom-theme .el-col-pull-18 { + position: relative; + right: 75% +} + +.custom-theme .el-col-push-18 { + position: relative; + left: 75% +} + +.custom-theme .el-col-19 { + width: 79.16667% +} + +.custom-theme .el-col-offset-19 { + margin-left: 79.16667% +} + +.custom-theme .el-col-pull-19 { + position: relative; + right: 79.16667% +} + +.custom-theme .el-col-push-19 { + position: relative; + left: 79.16667% +} + +.custom-theme .el-col-20 { + width: 83.33333% +} + +.custom-theme .el-col-offset-20 { + margin-left: 83.33333% +} + +.custom-theme .el-col-pull-20 { + position: relative; + right: 83.33333% +} + +.custom-theme .el-col-push-20 { + position: relative; + left: 83.33333% +} + +.custom-theme .el-col-21 { + width: 87.5% +} + +.custom-theme .el-col-offset-21 { + margin-left: 87.5% +} + +.custom-theme .el-col-pull-21 { + position: relative; + right: 87.5% +} + +.custom-theme .el-col-push-21 { + position: relative; + left: 87.5% +} + +.custom-theme .el-col-22 { + width: 91.66667% +} + +.custom-theme .el-col-offset-22 { + margin-left: 91.66667% +} + +.custom-theme .el-col-pull-22 { + position: relative; + right: 91.66667% +} + +.custom-theme .el-col-push-22 { + position: relative; + left: 91.66667% +} + +.custom-theme .el-col-23 { + width: 95.83333% +} + +.custom-theme .el-col-offset-23 { + margin-left: 95.83333% +} + +.custom-theme .el-col-pull-23 { + position: relative; + right: 95.83333% +} + +.custom-theme .el-col-push-23 { + position: relative; + left: 95.83333% +} + +.custom-theme .el-col-24 { + width: 100% +} + +.custom-theme .el-col-offset-24 { + margin-left: 100% +} + +.custom-theme .el-col-pull-24 { + position: relative; + right: 100% +} + +.custom-theme .el-col-push-24 { + position: relative; + left: 100% +} + +@media only screen and (max-width: 768px) { + .custom-theme .el-col-xs-0 { + display: none + } + + .custom-theme .el-col-xs-1 { + width: 4.16667% + } + + .custom-theme .el-col-xs-offset-1 { + margin-left: 4.16667% + } + + .custom-theme .el-col-xs-pull-1 { + position: relative; + right: 4.16667% + } + + .custom-theme .el-col-xs-push-1 { + position: relative; + left: 4.16667% + } + + .custom-theme .el-col-xs-2 { + width: 8.33333% + } + + .custom-theme .el-col-xs-offset-2 { + margin-left: 8.33333% + } + + .custom-theme .el-col-xs-pull-2 { + position: relative; + right: 8.33333% + } + + .custom-theme .el-col-xs-push-2 { + position: relative; + left: 8.33333% + } + + .custom-theme .el-col-xs-3 { + width: 12.5% + } + + .custom-theme .el-col-xs-offset-3 { + margin-left: 12.5% + } + + .custom-theme .el-col-xs-pull-3 { + position: relative; + right: 12.5% + } + + .custom-theme .el-col-xs-push-3 { + position: relative; + left: 12.5% + } + + .custom-theme .el-col-xs-4 { + width: 16.66667% + } + + .custom-theme .el-col-xs-offset-4 { + margin-left: 16.66667% + } + + .custom-theme .el-col-xs-pull-4 { + position: relative; + right: 16.66667% + } + + .custom-theme .el-col-xs-push-4 { + position: relative; + left: 16.66667% + } + + .custom-theme .el-col-xs-5 { + width: 20.83333% + } + + .custom-theme .el-col-xs-offset-5 { + margin-left: 20.83333% + } + + .custom-theme .el-col-xs-pull-5 { + position: relative; + right: 20.83333% + } + + .custom-theme .el-col-xs-push-5 { + position: relative; + left: 20.83333% + } + + .custom-theme .el-col-xs-6 { + width: 25% + } + + .custom-theme .el-col-xs-offset-6 { + margin-left: 25% + } + + .custom-theme .el-col-xs-pull-6 { + position: relative; + right: 25% + } + + .custom-theme .el-col-xs-push-6 { + position: relative; + left: 25% + } + + .custom-theme .el-col-xs-7 { + width: 29.16667% + } + + .custom-theme .el-col-xs-offset-7 { + margin-left: 29.16667% + } + + .custom-theme .el-col-xs-pull-7 { + position: relative; + right: 29.16667% + } + + .custom-theme .el-col-xs-push-7 { + position: relative; + left: 29.16667% + } + + .custom-theme .el-col-xs-8 { + width: 33.33333% + } + + .custom-theme .el-col-xs-offset-8 { + margin-left: 33.33333% + } + + .custom-theme .el-col-xs-pull-8 { + position: relative; + right: 33.33333% + } + + .custom-theme .el-col-xs-push-8 { + position: relative; + left: 33.33333% + } + + .custom-theme .el-col-xs-9 { + width: 37.5% + } + + .custom-theme .el-col-xs-offset-9 { + margin-left: 37.5% + } + + .custom-theme .el-col-xs-pull-9 { + position: relative; + right: 37.5% + } + + .custom-theme .el-col-xs-push-9 { + position: relative; + left: 37.5% + } + + .custom-theme .el-col-xs-10 { + width: 41.66667% + } + + .custom-theme .el-col-xs-offset-10 { + margin-left: 41.66667% + } + + .custom-theme .el-col-xs-pull-10 { + position: relative; + right: 41.66667% + } + + .custom-theme .el-col-xs-push-10 { + position: relative; + left: 41.66667% + } + + .custom-theme .el-col-xs-11 { + width: 45.83333% + } + + .custom-theme .el-col-xs-offset-11 { + margin-left: 45.83333% + } + + .custom-theme .el-col-xs-pull-11 { + position: relative; + right: 45.83333% + } + + .custom-theme .el-col-xs-push-11 { + position: relative; + left: 45.83333% + } + + .custom-theme .el-col-xs-12 { + width: 50% + } + + .custom-theme .el-col-xs-offset-12 { + margin-left: 50% + } + + .custom-theme .el-col-xs-pull-12 { + position: relative; + right: 50% + } + + .custom-theme .el-col-xs-push-12 { + position: relative; + left: 50% + } + + .custom-theme .el-col-xs-13 { + width: 54.16667% + } + + .custom-theme .el-col-xs-offset-13 { + margin-left: 54.16667% + } + + .custom-theme .el-col-xs-pull-13 { + position: relative; + right: 54.16667% + } + + .custom-theme .el-col-xs-push-13 { + position: relative; + left: 54.16667% + } + + .custom-theme .el-col-xs-14 { + width: 58.33333% + } + + .custom-theme .el-col-xs-offset-14 { + margin-left: 58.33333% + } + + .custom-theme .el-col-xs-pull-14 { + position: relative; + right: 58.33333% + } + + .custom-theme .el-col-xs-push-14 { + position: relative; + left: 58.33333% + } + + .custom-theme .el-col-xs-15 { + width: 62.5% + } + + .custom-theme .el-col-xs-offset-15 { + margin-left: 62.5% + } + + .custom-theme .el-col-xs-pull-15 { + position: relative; + right: 62.5% + } + + .custom-theme .el-col-xs-push-15 { + position: relative; + left: 62.5% + } + + .custom-theme .el-col-xs-16 { + width: 66.66667% + } + + .custom-theme .el-col-xs-offset-16 { + margin-left: 66.66667% + } + + .custom-theme .el-col-xs-pull-16 { + position: relative; + right: 66.66667% + } + + .custom-theme .el-col-xs-push-16 { + position: relative; + left: 66.66667% + } + + .custom-theme .el-col-xs-17 { + width: 70.83333% + } + + .custom-theme .el-col-xs-offset-17 { + margin-left: 70.83333% + } + + .custom-theme .el-col-xs-pull-17 { + position: relative; + right: 70.83333% + } + + .custom-theme .el-col-xs-push-17 { + position: relative; + left: 70.83333% + } + + .custom-theme .el-col-xs-18 { + width: 75% + } + + .custom-theme .el-col-xs-offset-18 { + margin-left: 75% + } + + .custom-theme .el-col-xs-pull-18 { + position: relative; + right: 75% + } + + .custom-theme .el-col-xs-push-18 { + position: relative; + left: 75% + } + + .custom-theme .el-col-xs-19 { + width: 79.16667% + } + + .custom-theme .el-col-xs-offset-19 { + margin-left: 79.16667% + } + + .custom-theme .el-col-xs-pull-19 { + position: relative; + right: 79.16667% + } + + .custom-theme .el-col-xs-push-19 { + position: relative; + left: 79.16667% + } + + .custom-theme .el-col-xs-20 { + width: 83.33333% + } + + .custom-theme .el-col-xs-offset-20 { + margin-left: 83.33333% + } + + .custom-theme .el-col-xs-pull-20 { + position: relative; + right: 83.33333% + } + + .custom-theme .el-col-xs-push-20 { + position: relative; + left: 83.33333% + } + + .custom-theme .el-col-xs-21 { + width: 87.5% + } + + .custom-theme .el-col-xs-offset-21 { + margin-left: 87.5% + } + + .custom-theme .el-col-xs-pull-21 { + position: relative; + right: 87.5% + } + + .custom-theme .el-col-xs-push-21 { + position: relative; + left: 87.5% + } + + .custom-theme .el-col-xs-22 { + width: 91.66667% + } + + .custom-theme .el-col-xs-offset-22 { + margin-left: 91.66667% + } + + .custom-theme .el-col-xs-pull-22 { + position: relative; + right: 91.66667% + } + + .custom-theme .el-col-xs-push-22 { + position: relative; + left: 91.66667% + } + + .custom-theme .el-col-xs-23 { + width: 95.83333% + } + + .custom-theme .el-col-xs-offset-23 { + margin-left: 95.83333% + } + + .custom-theme .el-col-xs-pull-23 { + position: relative; + right: 95.83333% + } + + .custom-theme .el-col-xs-push-23 { + position: relative; + left: 95.83333% + } + + .custom-theme .el-col-xs-24 { + width: 100% + } + + .custom-theme .el-col-xs-offset-24 { + margin-left: 100% + } + + .custom-theme .el-col-xs-pull-24 { + position: relative; + right: 100% + } + + .custom-theme .el-col-xs-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 768px) { + .custom-theme .el-col-sm-0 { + display: none + } + + .custom-theme .el-col-sm-1 { + width: 4.16667% + } + + .custom-theme .el-col-sm-offset-1 { + margin-left: 4.16667% + } + + .custom-theme .el-col-sm-pull-1 { + position: relative; + right: 4.16667% + } + + .custom-theme .el-col-sm-push-1 { + position: relative; + left: 4.16667% + } + + .custom-theme .el-col-sm-2 { + width: 8.33333% + } + + .custom-theme .el-col-sm-offset-2 { + margin-left: 8.33333% + } + + .custom-theme .el-col-sm-pull-2 { + position: relative; + right: 8.33333% + } + + .custom-theme .el-col-sm-push-2 { + position: relative; + left: 8.33333% + } + + .custom-theme .el-col-sm-3 { + width: 12.5% + } + + .custom-theme .el-col-sm-offset-3 { + margin-left: 12.5% + } + + .custom-theme .el-col-sm-pull-3 { + position: relative; + right: 12.5% + } + + .custom-theme .el-col-sm-push-3 { + position: relative; + left: 12.5% + } + + .custom-theme .el-col-sm-4 { + width: 16.66667% + } + + .custom-theme .el-col-sm-offset-4 { + margin-left: 16.66667% + } + + .custom-theme .el-col-sm-pull-4 { + position: relative; + right: 16.66667% + } + + .custom-theme .el-col-sm-push-4 { + position: relative; + left: 16.66667% + } + + .custom-theme .el-col-sm-5 { + width: 20.83333% + } + + .custom-theme .el-col-sm-offset-5 { + margin-left: 20.83333% + } + + .custom-theme .el-col-sm-pull-5 { + position: relative; + right: 20.83333% + } + + .custom-theme .el-col-sm-push-5 { + position: relative; + left: 20.83333% + } + + .custom-theme .el-col-sm-6 { + width: 25% + } + + .custom-theme .el-col-sm-offset-6 { + margin-left: 25% + } + + .custom-theme .el-col-sm-pull-6 { + position: relative; + right: 25% + } + + .custom-theme .el-col-sm-push-6 { + position: relative; + left: 25% + } + + .custom-theme .el-col-sm-7 { + width: 29.16667% + } + + .custom-theme .el-col-sm-offset-7 { + margin-left: 29.16667% + } + + .custom-theme .el-col-sm-pull-7 { + position: relative; + right: 29.16667% + } + + .custom-theme .el-col-sm-push-7 { + position: relative; + left: 29.16667% + } + + .custom-theme .el-col-sm-8 { + width: 33.33333% + } + + .custom-theme .el-col-sm-offset-8 { + margin-left: 33.33333% + } + + .custom-theme .el-col-sm-pull-8 { + position: relative; + right: 33.33333% + } + + .custom-theme .el-col-sm-push-8 { + position: relative; + left: 33.33333% + } + + .custom-theme .el-col-sm-9 { + width: 37.5% + } + + .custom-theme .el-col-sm-offset-9 { + margin-left: 37.5% + } + + .custom-theme .el-col-sm-pull-9 { + position: relative; + right: 37.5% + } + + .custom-theme .el-col-sm-push-9 { + position: relative; + left: 37.5% + } + + .custom-theme .el-col-sm-10 { + width: 41.66667% + } + + .custom-theme .el-col-sm-offset-10 { + margin-left: 41.66667% + } + + .custom-theme .el-col-sm-pull-10 { + position: relative; + right: 41.66667% + } + + .custom-theme .el-col-sm-push-10 { + position: relative; + left: 41.66667% + } + + .custom-theme .el-col-sm-11 { + width: 45.83333% + } + + .custom-theme .el-col-sm-offset-11 { + margin-left: 45.83333% + } + + .custom-theme .el-col-sm-pull-11 { + position: relative; + right: 45.83333% + } + + .custom-theme .el-col-sm-push-11 { + position: relative; + left: 45.83333% + } + + .custom-theme .el-col-sm-12 { + width: 50% + } + + .custom-theme .el-col-sm-offset-12 { + margin-left: 50% + } + + .custom-theme .el-col-sm-pull-12 { + position: relative; + right: 50% + } + + .custom-theme .el-col-sm-push-12 { + position: relative; + left: 50% + } + + .custom-theme .el-col-sm-13 { + width: 54.16667% + } + + .custom-theme .el-col-sm-offset-13 { + margin-left: 54.16667% + } + + .custom-theme .el-col-sm-pull-13 { + position: relative; + right: 54.16667% + } + + .custom-theme .el-col-sm-push-13 { + position: relative; + left: 54.16667% + } + + .custom-theme .el-col-sm-14 { + width: 58.33333% + } + + .custom-theme .el-col-sm-offset-14 { + margin-left: 58.33333% + } + + .custom-theme .el-col-sm-pull-14 { + position: relative; + right: 58.33333% + } + + .custom-theme .el-col-sm-push-14 { + position: relative; + left: 58.33333% + } + + .custom-theme .el-col-sm-15 { + width: 62.5% + } + + .custom-theme .el-col-sm-offset-15 { + margin-left: 62.5% + } + + .custom-theme .el-col-sm-pull-15 { + position: relative; + right: 62.5% + } + + .custom-theme .el-col-sm-push-15 { + position: relative; + left: 62.5% + } + + .custom-theme .el-col-sm-16 { + width: 66.66667% + } + + .custom-theme .el-col-sm-offset-16 { + margin-left: 66.66667% + } + + .custom-theme .el-col-sm-pull-16 { + position: relative; + right: 66.66667% + } + + .custom-theme .el-col-sm-push-16 { + position: relative; + left: 66.66667% + } + + .custom-theme .el-col-sm-17 { + width: 70.83333% + } + + .custom-theme .el-col-sm-offset-17 { + margin-left: 70.83333% + } + + .custom-theme .el-col-sm-pull-17 { + position: relative; + right: 70.83333% + } + + .custom-theme .el-col-sm-push-17 { + position: relative; + left: 70.83333% + } + + .custom-theme .el-col-sm-18 { + width: 75% + } + + .custom-theme .el-col-sm-offset-18 { + margin-left: 75% + } + + .custom-theme .el-col-sm-pull-18 { + position: relative; + right: 75% + } + + .custom-theme .el-col-sm-push-18 { + position: relative; + left: 75% + } + + .custom-theme .el-col-sm-19 { + width: 79.16667% + } + + .custom-theme .el-col-sm-offset-19 { + margin-left: 79.16667% + } + + .custom-theme .el-col-sm-pull-19 { + position: relative; + right: 79.16667% + } + + .custom-theme .el-col-sm-push-19 { + position: relative; + left: 79.16667% + } + + .custom-theme .el-col-sm-20 { + width: 83.33333% + } + + .custom-theme .el-col-sm-offset-20 { + margin-left: 83.33333% + } + + .custom-theme .el-col-sm-pull-20 { + position: relative; + right: 83.33333% + } + + .custom-theme .el-col-sm-push-20 { + position: relative; + left: 83.33333% + } + + .custom-theme .el-col-sm-21 { + width: 87.5% + } + + .custom-theme .el-col-sm-offset-21 { + margin-left: 87.5% + } + + .custom-theme .el-col-sm-pull-21 { + position: relative; + right: 87.5% + } + + .custom-theme .el-col-sm-push-21 { + position: relative; + left: 87.5% + } + + .custom-theme .el-col-sm-22 { + width: 91.66667% + } + + .custom-theme .el-col-sm-offset-22 { + margin-left: 91.66667% + } + + .custom-theme .el-col-sm-pull-22 { + position: relative; + right: 91.66667% + } + + .custom-theme .el-col-sm-push-22 { + position: relative; + left: 91.66667% + } + + .custom-theme .el-col-sm-23 { + width: 95.83333% + } + + .custom-theme .el-col-sm-offset-23 { + margin-left: 95.83333% + } + + .custom-theme .el-col-sm-pull-23 { + position: relative; + right: 95.83333% + } + + .custom-theme .el-col-sm-push-23 { + position: relative; + left: 95.83333% + } + + .custom-theme .el-col-sm-24 { + width: 100% + } + + .custom-theme .el-col-sm-offset-24 { + margin-left: 100% + } + + .custom-theme .el-col-sm-pull-24 { + position: relative; + right: 100% + } + + .custom-theme .el-col-sm-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 992px) { + .custom-theme .el-col-md-0 { + display: none + } + + .custom-theme .el-col-md-1 { + width: 4.16667% + } + + .custom-theme .el-col-md-offset-1 { + margin-left: 4.16667% + } + + .custom-theme .el-col-md-pull-1 { + position: relative; + right: 4.16667% + } + + .custom-theme .el-col-md-push-1 { + position: relative; + left: 4.16667% + } + + .custom-theme .el-col-md-2 { + width: 8.33333% + } + + .custom-theme .el-col-md-offset-2 { + margin-left: 8.33333% + } + + .custom-theme .el-col-md-pull-2 { + position: relative; + right: 8.33333% + } + + .custom-theme .el-col-md-push-2 { + position: relative; + left: 8.33333% + } + + .custom-theme .el-col-md-3 { + width: 12.5% + } + + .custom-theme .el-col-md-offset-3 { + margin-left: 12.5% + } + + .custom-theme .el-col-md-pull-3 { + position: relative; + right: 12.5% + } + + .custom-theme .el-col-md-push-3 { + position: relative; + left: 12.5% + } + + .custom-theme .el-col-md-4 { + width: 16.66667% + } + + .custom-theme .el-col-md-offset-4 { + margin-left: 16.66667% + } + + .custom-theme .el-col-md-pull-4 { + position: relative; + right: 16.66667% + } + + .custom-theme .el-col-md-push-4 { + position: relative; + left: 16.66667% + } + + .custom-theme .el-col-md-5 { + width: 20.83333% + } + + .custom-theme .el-col-md-offset-5 { + margin-left: 20.83333% + } + + .custom-theme .el-col-md-pull-5 { + position: relative; + right: 20.83333% + } + + .custom-theme .el-col-md-push-5 { + position: relative; + left: 20.83333% + } + + .custom-theme .el-col-md-6 { + width: 25% + } + + .custom-theme .el-col-md-offset-6 { + margin-left: 25% + } + + .custom-theme .el-col-md-pull-6 { + position: relative; + right: 25% + } + + .custom-theme .el-col-md-push-6 { + position: relative; + left: 25% + } + + .custom-theme .el-col-md-7 { + width: 29.16667% + } + + .custom-theme .el-col-md-offset-7 { + margin-left: 29.16667% + } + + .custom-theme .el-col-md-pull-7 { + position: relative; + right: 29.16667% + } + + .custom-theme .el-col-md-push-7 { + position: relative; + left: 29.16667% + } + + .custom-theme .el-col-md-8 { + width: 33.33333% + } + + .custom-theme .el-col-md-offset-8 { + margin-left: 33.33333% + } + + .custom-theme .el-col-md-pull-8 { + position: relative; + right: 33.33333% + } + + .custom-theme .el-col-md-push-8 { + position: relative; + left: 33.33333% + } + + .custom-theme .el-col-md-9 { + width: 37.5% + } + + .custom-theme .el-col-md-offset-9 { + margin-left: 37.5% + } + + .custom-theme .el-col-md-pull-9 { + position: relative; + right: 37.5% + } + + .custom-theme .el-col-md-push-9 { + position: relative; + left: 37.5% + } + + .custom-theme .el-col-md-10 { + width: 41.66667% + } + + .custom-theme .el-col-md-offset-10 { + margin-left: 41.66667% + } + + .custom-theme .el-col-md-pull-10 { + position: relative; + right: 41.66667% + } + + .custom-theme .el-col-md-push-10 { + position: relative; + left: 41.66667% + } + + .custom-theme .el-col-md-11 { + width: 45.83333% + } + + .custom-theme .el-col-md-offset-11 { + margin-left: 45.83333% + } + + .custom-theme .el-col-md-pull-11 { + position: relative; + right: 45.83333% + } + + .custom-theme .el-col-md-push-11 { + position: relative; + left: 45.83333% + } + + .custom-theme .el-col-md-12 { + width: 50% + } + + .custom-theme .el-col-md-offset-12 { + margin-left: 50% + } + + .custom-theme .el-col-md-pull-12 { + position: relative; + right: 50% + } + + .custom-theme .el-col-md-push-12 { + position: relative; + left: 50% + } + + .custom-theme .el-col-md-13 { + width: 54.16667% + } + + .custom-theme .el-col-md-offset-13 { + margin-left: 54.16667% + } + + .custom-theme .el-col-md-pull-13 { + position: relative; + right: 54.16667% + } + + .custom-theme .el-col-md-push-13 { + position: relative; + left: 54.16667% + } + + .custom-theme .el-col-md-14 { + width: 58.33333% + } + + .custom-theme .el-col-md-offset-14 { + margin-left: 58.33333% + } + + .custom-theme .el-col-md-pull-14 { + position: relative; + right: 58.33333% + } + + .custom-theme .el-col-md-push-14 { + position: relative; + left: 58.33333% + } + + .custom-theme .el-col-md-15 { + width: 62.5% + } + + .custom-theme .el-col-md-offset-15 { + margin-left: 62.5% + } + + .custom-theme .el-col-md-pull-15 { + position: relative; + right: 62.5% + } + + .custom-theme .el-col-md-push-15 { + position: relative; + left: 62.5% + } + + .custom-theme .el-col-md-16 { + width: 66.66667% + } + + .custom-theme .el-col-md-offset-16 { + margin-left: 66.66667% + } + + .custom-theme .el-col-md-pull-16 { + position: relative; + right: 66.66667% + } + + .custom-theme .el-col-md-push-16 { + position: relative; + left: 66.66667% + } + + .custom-theme .el-col-md-17 { + width: 70.83333% + } + + .custom-theme .el-col-md-offset-17 { + margin-left: 70.83333% + } + + .custom-theme .el-col-md-pull-17 { + position: relative; + right: 70.83333% + } + + .custom-theme .el-col-md-push-17 { + position: relative; + left: 70.83333% + } + + .custom-theme .el-col-md-18 { + width: 75% + } + + .custom-theme .el-col-md-offset-18 { + margin-left: 75% + } + + .custom-theme .el-col-md-pull-18 { + position: relative; + right: 75% + } + + .custom-theme .el-col-md-push-18 { + position: relative; + left: 75% + } + + .custom-theme .el-col-md-19 { + width: 79.16667% + } + + .custom-theme .el-col-md-offset-19 { + margin-left: 79.16667% + } + + .custom-theme .el-col-md-pull-19 { + position: relative; + right: 79.16667% + } + + .custom-theme .el-col-md-push-19 { + position: relative; + left: 79.16667% + } + + .custom-theme .el-col-md-20 { + width: 83.33333% + } + + .custom-theme .el-col-md-offset-20 { + margin-left: 83.33333% + } + + .custom-theme .el-col-md-pull-20 { + position: relative; + right: 83.33333% + } + + .custom-theme .el-col-md-push-20 { + position: relative; + left: 83.33333% + } + + .custom-theme .el-col-md-21 { + width: 87.5% + } + + .custom-theme .el-col-md-offset-21 { + margin-left: 87.5% + } + + .custom-theme .el-col-md-pull-21 { + position: relative; + right: 87.5% + } + + .custom-theme .el-col-md-push-21 { + position: relative; + left: 87.5% + } + + .custom-theme .el-col-md-22 { + width: 91.66667% + } + + .custom-theme .el-col-md-offset-22 { + margin-left: 91.66667% + } + + .custom-theme .el-col-md-pull-22 { + position: relative; + right: 91.66667% + } + + .custom-theme .el-col-md-push-22 { + position: relative; + left: 91.66667% + } + + .custom-theme .el-col-md-23 { + width: 95.83333% + } + + .custom-theme .el-col-md-offset-23 { + margin-left: 95.83333% + } + + .custom-theme .el-col-md-pull-23 { + position: relative; + right: 95.83333% + } + + .custom-theme .el-col-md-push-23 { + position: relative; + left: 95.83333% + } + + .custom-theme .el-col-md-24 { + width: 100% + } + + .custom-theme .el-col-md-offset-24 { + margin-left: 100% + } + + .custom-theme .el-col-md-pull-24 { + position: relative; + right: 100% + } + + .custom-theme .el-col-md-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 1200px) { + .custom-theme .el-col-lg-0 { + display: none + } + + .custom-theme .el-col-lg-1 { + width: 4.16667% + } + + .custom-theme .el-col-lg-offset-1 { + margin-left: 4.16667% + } + + .custom-theme .el-col-lg-pull-1 { + position: relative; + right: 4.16667% + } + + .custom-theme .el-col-lg-push-1 { + position: relative; + left: 4.16667% + } + + .custom-theme .el-col-lg-2 { + width: 8.33333% + } + + .custom-theme .el-col-lg-offset-2 { + margin-left: 8.33333% + } + + .custom-theme .el-col-lg-pull-2 { + position: relative; + right: 8.33333% + } + + .custom-theme .el-col-lg-push-2 { + position: relative; + left: 8.33333% + } + + .custom-theme .el-col-lg-3 { + width: 12.5% + } + + .custom-theme .el-col-lg-offset-3 { + margin-left: 12.5% + } + + .custom-theme .el-col-lg-pull-3 { + position: relative; + right: 12.5% + } + + .custom-theme .el-col-lg-push-3 { + position: relative; + left: 12.5% + } + + .custom-theme .el-col-lg-4 { + width: 16.66667% + } + + .custom-theme .el-col-lg-offset-4 { + margin-left: 16.66667% + } + + .custom-theme .el-col-lg-pull-4 { + position: relative; + right: 16.66667% + } + + .custom-theme .el-col-lg-push-4 { + position: relative; + left: 16.66667% + } + + .custom-theme .el-col-lg-5 { + width: 20.83333% + } + + .custom-theme .el-col-lg-offset-5 { + margin-left: 20.83333% + } + + .custom-theme .el-col-lg-pull-5 { + position: relative; + right: 20.83333% + } + + .custom-theme .el-col-lg-push-5 { + position: relative; + left: 20.83333% + } + + .custom-theme .el-col-lg-6 { + width: 25% + } + + .custom-theme .el-col-lg-offset-6 { + margin-left: 25% + } + + .custom-theme .el-col-lg-pull-6 { + position: relative; + right: 25% + } + + .custom-theme .el-col-lg-push-6 { + position: relative; + left: 25% + } + + .custom-theme .el-col-lg-7 { + width: 29.16667% + } + + .custom-theme .el-col-lg-offset-7 { + margin-left: 29.16667% + } + + .custom-theme .el-col-lg-pull-7 { + position: relative; + right: 29.16667% + } + + .custom-theme .el-col-lg-push-7 { + position: relative; + left: 29.16667% + } + + .custom-theme .el-col-lg-8 { + width: 33.33333% + } + + .custom-theme .el-col-lg-offset-8 { + margin-left: 33.33333% + } + + .custom-theme .el-col-lg-pull-8 { + position: relative; + right: 33.33333% + } + + .custom-theme .el-col-lg-push-8 { + position: relative; + left: 33.33333% + } + + .custom-theme .el-col-lg-9 { + width: 37.5% + } + + .custom-theme .el-col-lg-offset-9 { + margin-left: 37.5% + } + + .custom-theme .el-col-lg-pull-9 { + position: relative; + right: 37.5% + } + + .custom-theme .el-col-lg-push-9 { + position: relative; + left: 37.5% + } + + .custom-theme .el-col-lg-10 { + width: 41.66667% + } + + .custom-theme .el-col-lg-offset-10 { + margin-left: 41.66667% + } + + .custom-theme .el-col-lg-pull-10 { + position: relative; + right: 41.66667% + } + + .custom-theme .el-col-lg-push-10 { + position: relative; + left: 41.66667% + } + + .custom-theme .el-col-lg-11 { + width: 45.83333% + } + + .custom-theme .el-col-lg-offset-11 { + margin-left: 45.83333% + } + + .custom-theme .el-col-lg-pull-11 { + position: relative; + right: 45.83333% + } + + .custom-theme .el-col-lg-push-11 { + position: relative; + left: 45.83333% + } + + .custom-theme .el-col-lg-12 { + width: 50% + } + + .custom-theme .el-col-lg-offset-12 { + margin-left: 50% + } + + .custom-theme .el-col-lg-pull-12 { + position: relative; + right: 50% + } + + .custom-theme .el-col-lg-push-12 { + position: relative; + left: 50% + } + + .custom-theme .el-col-lg-13 { + width: 54.16667% + } + + .custom-theme .el-col-lg-offset-13 { + margin-left: 54.16667% + } + + .custom-theme .el-col-lg-pull-13 { + position: relative; + right: 54.16667% + } + + .custom-theme .el-col-lg-push-13 { + position: relative; + left: 54.16667% + } + + .custom-theme .el-col-lg-14 { + width: 58.33333% + } + + .custom-theme .el-col-lg-offset-14 { + margin-left: 58.33333% + } + + .custom-theme .el-col-lg-pull-14 { + position: relative; + right: 58.33333% + } + + .custom-theme .el-col-lg-push-14 { + position: relative; + left: 58.33333% + } + + .custom-theme .el-col-lg-15 { + width: 62.5% + } + + .custom-theme .el-col-lg-offset-15 { + margin-left: 62.5% + } + + .custom-theme .el-col-lg-pull-15 { + position: relative; + right: 62.5% + } + + .custom-theme .el-col-lg-push-15 { + position: relative; + left: 62.5% + } + + .custom-theme .el-col-lg-16 { + width: 66.66667% + } + + .custom-theme .el-col-lg-offset-16 { + margin-left: 66.66667% + } + + .custom-theme .el-col-lg-pull-16 { + position: relative; + right: 66.66667% + } + + .custom-theme .el-col-lg-push-16 { + position: relative; + left: 66.66667% + } + + .custom-theme .el-col-lg-17 { + width: 70.83333% + } + + .custom-theme .el-col-lg-offset-17 { + margin-left: 70.83333% + } + + .custom-theme .el-col-lg-pull-17 { + position: relative; + right: 70.83333% + } + + .custom-theme .el-col-lg-push-17 { + position: relative; + left: 70.83333% + } + + .custom-theme .el-col-lg-18 { + width: 75% + } + + .custom-theme .el-col-lg-offset-18 { + margin-left: 75% + } + + .custom-theme .el-col-lg-pull-18 { + position: relative; + right: 75% + } + + .custom-theme .el-col-lg-push-18 { + position: relative; + left: 75% + } + + .custom-theme .el-col-lg-19 { + width: 79.16667% + } + + .custom-theme .el-col-lg-offset-19 { + margin-left: 79.16667% + } + + .custom-theme .el-col-lg-pull-19 { + position: relative; + right: 79.16667% + } + + .custom-theme .el-col-lg-push-19 { + position: relative; + left: 79.16667% + } + + .custom-theme .el-col-lg-20 { + width: 83.33333% + } + + .custom-theme .el-col-lg-offset-20 { + margin-left: 83.33333% + } + + .custom-theme .el-col-lg-pull-20 { + position: relative; + right: 83.33333% + } + + .custom-theme .el-col-lg-push-20 { + position: relative; + left: 83.33333% + } + + .custom-theme .el-col-lg-21 { + width: 87.5% + } + + .custom-theme .el-col-lg-offset-21 { + margin-left: 87.5% + } + + .custom-theme .el-col-lg-pull-21 { + position: relative; + right: 87.5% + } + + .custom-theme .el-col-lg-push-21 { + position: relative; + left: 87.5% + } + + .custom-theme .el-col-lg-22 { + width: 91.66667% + } + + .custom-theme .el-col-lg-offset-22 { + margin-left: 91.66667% + } + + .custom-theme .el-col-lg-pull-22 { + position: relative; + right: 91.66667% + } + + .custom-theme .el-col-lg-push-22 { + position: relative; + left: 91.66667% + } + + .custom-theme .el-col-lg-23 { + width: 95.83333% + } + + .custom-theme .el-col-lg-offset-23 { + margin-left: 95.83333% + } + + .custom-theme .el-col-lg-pull-23 { + position: relative; + right: 95.83333% + } + + .custom-theme .el-col-lg-push-23 { + position: relative; + left: 95.83333% + } + + .custom-theme .el-col-lg-24 { + width: 100% + } + + .custom-theme .el-col-lg-offset-24 { + margin-left: 100% + } + + .custom-theme .el-col-lg-pull-24 { + position: relative; + right: 100% + } + + .custom-theme .el-col-lg-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 1920px) { + .custom-theme .el-col-xl-0 { + display: none + } + + .custom-theme .el-col-xl-1 { + width: 4.16667% + } + + .custom-theme .el-col-xl-offset-1 { + margin-left: 4.16667% + } + + .custom-theme .el-col-xl-pull-1 { + position: relative; + right: 4.16667% + } + + .custom-theme .el-col-xl-push-1 { + position: relative; + left: 4.16667% + } + + .custom-theme .el-col-xl-2 { + width: 8.33333% + } + + .custom-theme .el-col-xl-offset-2 { + margin-left: 8.33333% + } + + .custom-theme .el-col-xl-pull-2 { + position: relative; + right: 8.33333% + } + + .custom-theme .el-col-xl-push-2 { + position: relative; + left: 8.33333% + } + + .custom-theme .el-col-xl-3 { + width: 12.5% + } + + .custom-theme .el-col-xl-offset-3 { + margin-left: 12.5% + } + + .custom-theme .el-col-xl-pull-3 { + position: relative; + right: 12.5% + } + + .custom-theme .el-col-xl-push-3 { + position: relative; + left: 12.5% + } + + .custom-theme .el-col-xl-4 { + width: 16.66667% + } + + .custom-theme .el-col-xl-offset-4 { + margin-left: 16.66667% + } + + .custom-theme .el-col-xl-pull-4 { + position: relative; + right: 16.66667% + } + + .custom-theme .el-col-xl-push-4 { + position: relative; + left: 16.66667% + } + + .custom-theme .el-col-xl-5 { + width: 20.83333% + } + + .custom-theme .el-col-xl-offset-5 { + margin-left: 20.83333% + } + + .custom-theme .el-col-xl-pull-5 { + position: relative; + right: 20.83333% + } + + .custom-theme .el-col-xl-push-5 { + position: relative; + left: 20.83333% + } + + .custom-theme .el-col-xl-6 { + width: 25% + } + + .custom-theme .el-col-xl-offset-6 { + margin-left: 25% + } + + .custom-theme .el-col-xl-pull-6 { + position: relative; + right: 25% + } + + .custom-theme .el-col-xl-push-6 { + position: relative; + left: 25% + } + + .custom-theme .el-col-xl-7 { + width: 29.16667% + } + + .custom-theme .el-col-xl-offset-7 { + margin-left: 29.16667% + } + + .custom-theme .el-col-xl-pull-7 { + position: relative; + right: 29.16667% + } + + .custom-theme .el-col-xl-push-7 { + position: relative; + left: 29.16667% + } + + .custom-theme .el-col-xl-8 { + width: 33.33333% + } + + .custom-theme .el-col-xl-offset-8 { + margin-left: 33.33333% + } + + .custom-theme .el-col-xl-pull-8 { + position: relative; + right: 33.33333% + } + + .custom-theme .el-col-xl-push-8 { + position: relative; + left: 33.33333% + } + + .custom-theme .el-col-xl-9 { + width: 37.5% + } + + .custom-theme .el-col-xl-offset-9 { + margin-left: 37.5% + } + + .custom-theme .el-col-xl-pull-9 { + position: relative; + right: 37.5% + } + + .custom-theme .el-col-xl-push-9 { + position: relative; + left: 37.5% + } + + .custom-theme .el-col-xl-10 { + width: 41.66667% + } + + .custom-theme .el-col-xl-offset-10 { + margin-left: 41.66667% + } + + .custom-theme .el-col-xl-pull-10 { + position: relative; + right: 41.66667% + } + + .custom-theme .el-col-xl-push-10 { + position: relative; + left: 41.66667% + } + + .custom-theme .el-col-xl-11 { + width: 45.83333% + } + + .custom-theme .el-col-xl-offset-11 { + margin-left: 45.83333% + } + + .custom-theme .el-col-xl-pull-11 { + position: relative; + right: 45.83333% + } + + .custom-theme .el-col-xl-push-11 { + position: relative; + left: 45.83333% + } + + .custom-theme .el-col-xl-12 { + width: 50% + } + + .custom-theme .el-col-xl-offset-12 { + margin-left: 50% + } + + .custom-theme .el-col-xl-pull-12 { + position: relative; + right: 50% + } + + .custom-theme .el-col-xl-push-12 { + position: relative; + left: 50% + } + + .custom-theme .el-col-xl-13 { + width: 54.16667% + } + + .custom-theme .el-col-xl-offset-13 { + margin-left: 54.16667% + } + + .custom-theme .el-col-xl-pull-13 { + position: relative; + right: 54.16667% + } + + .custom-theme .el-col-xl-push-13 { + position: relative; + left: 54.16667% + } + + .custom-theme .el-col-xl-14 { + width: 58.33333% + } + + .custom-theme .el-col-xl-offset-14 { + margin-left: 58.33333% + } + + .custom-theme .el-col-xl-pull-14 { + position: relative; + right: 58.33333% + } + + .custom-theme .el-col-xl-push-14 { + position: relative; + left: 58.33333% + } + + .custom-theme .el-col-xl-15 { + width: 62.5% + } + + .custom-theme .el-col-xl-offset-15 { + margin-left: 62.5% + } + + .custom-theme .el-col-xl-pull-15 { + position: relative; + right: 62.5% + } + + .custom-theme .el-col-xl-push-15 { + position: relative; + left: 62.5% + } + + .custom-theme .el-col-xl-16 { + width: 66.66667% + } + + .custom-theme .el-col-xl-offset-16 { + margin-left: 66.66667% + } + + .custom-theme .el-col-xl-pull-16 { + position: relative; + right: 66.66667% + } + + .custom-theme .el-col-xl-push-16 { + position: relative; + left: 66.66667% + } + + .custom-theme .el-col-xl-17 { + width: 70.83333% + } + + .custom-theme .el-col-xl-offset-17 { + margin-left: 70.83333% + } + + .custom-theme .el-col-xl-pull-17 { + position: relative; + right: 70.83333% + } + + .custom-theme .el-col-xl-push-17 { + position: relative; + left: 70.83333% + } + + .custom-theme .el-col-xl-18 { + width: 75% + } + + .custom-theme .el-col-xl-offset-18 { + margin-left: 75% + } + + .custom-theme .el-col-xl-pull-18 { + position: relative; + right: 75% + } + + .custom-theme .el-col-xl-push-18 { + position: relative; + left: 75% + } + + .custom-theme .el-col-xl-19 { + width: 79.16667% + } + + .custom-theme .el-col-xl-offset-19 { + margin-left: 79.16667% + } + + .custom-theme .el-col-xl-pull-19 { + position: relative; + right: 79.16667% + } + + .custom-theme .el-col-xl-push-19 { + position: relative; + left: 79.16667% + } + + .custom-theme .el-col-xl-20 { + width: 83.33333% + } + + .custom-theme .el-col-xl-offset-20 { + margin-left: 83.33333% + } + + .custom-theme .el-col-xl-pull-20 { + position: relative; + right: 83.33333% + } + + .custom-theme .el-col-xl-push-20 { + position: relative; + left: 83.33333% + } + + .custom-theme .el-col-xl-21 { + width: 87.5% + } + + .custom-theme .el-col-xl-offset-21 { + margin-left: 87.5% + } + + .custom-theme .el-col-xl-pull-21 { + position: relative; + right: 87.5% + } + + .custom-theme .el-col-xl-push-21 { + position: relative; + left: 87.5% + } + + .custom-theme .el-col-xl-22 { + width: 91.66667% + } + + .custom-theme .el-col-xl-offset-22 { + margin-left: 91.66667% + } + + .custom-theme .el-col-xl-pull-22 { + position: relative; + right: 91.66667% + } + + .custom-theme .el-col-xl-push-22 { + position: relative; + left: 91.66667% + } + + .custom-theme .el-col-xl-23 { + width: 95.83333% + } + + .custom-theme .el-col-xl-offset-23 { + margin-left: 95.83333% + } + + .custom-theme .el-col-xl-pull-23 { + position: relative; + right: 95.83333% + } + + .custom-theme .el-col-xl-push-23 { + position: relative; + left: 95.83333% + } + + .custom-theme .el-col-xl-24 { + width: 100% + } + + .custom-theme .el-col-xl-offset-24 { + margin-left: 100% + } + + .custom-theme .el-col-xl-pull-24 { + position: relative; + right: 100% + } + + .custom-theme .el-col-xl-push-24 { + position: relative; + left: 100% + } +} + +.custom-theme .el-progress { + position: relative; + line-height: 1 +} + +.custom-theme .el-progress__text { + font-size: 14px; + color: #5a5e66; + display: inline-block; + vertical-align: middle; + margin-left: 10px; + line-height: 1 +} + +.custom-theme .el-progress__text i { + vertical-align: middle; + display: block +} + +.custom-theme .el-progress--circle { + display: inline-block +} + +.custom-theme .el-progress--circle .el-progress__text { + position: absolute; + top: 50%; + left: 0; + width: 100%; + text-align: center; + margin: 0; + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%) +} + +.custom-theme .el-progress--circle .el-progress__text i { + vertical-align: middle; + display: inline-block +} + +.custom-theme .el-progress--without-text .el-progress__text { + display: none +} + +.custom-theme .el-progress--without-text .el-progress-bar { + padding-right: 0; + margin-right: 0; + display: block +} + +.custom-theme .el-progress--text-inside .el-progress-bar { + padding-right: 0; + margin-right: 0 +} + +.custom-theme .el-progress.is-success .el-progress-bar__inner { + background-color: #409167 +} + +.custom-theme .el-progress.is-success .el-progress__text { + color: #409167 +} + +.custom-theme .el-progress.is-exception .el-progress-bar__inner { + background-color: #b3450e +} + +.custom-theme .el-progress.is-exception .el-progress__text { + color: #b3450e +} + +.custom-theme .el-progress-bar { + padding-right: 50px; + display: inline-block; + vertical-align: middle; + width: 100%; + margin-right: -55px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-progress-bar__outer { + height: 6px; + border-radius: 100px; + background-color: #e6ebf5; + overflow: hidden; + position: relative; + vertical-align: middle +} + +.custom-theme .el-progress-bar__inner { + position: absolute; + left: 0; + top: 0; + height: 100%; + background-color: #262729; + text-align: right; + border-radius: 100px; + line-height: 1; + white-space: nowrap +} + +.custom-theme .el-progress-bar__inner::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-progress-bar__innerText { + display: inline-block; + vertical-align: middle; + color: #fff; + font-size: 12px; + margin: 0 5px +} + +@-webkit-keyframes progress { + 0% { + background-position: 0 0 + } + 100% { + background-position: 32px 0 + } +} + +@keyframes progress { + 0% { + background-position: 0 0 + } + 100% { + background-position: 32px 0 + } +} + +.custom-theme .el-upload { + display: inline-block; + text-align: center; + cursor: pointer +} + +.custom-theme .el-upload__input { + display: none +} + +.custom-theme .el-upload__tip { + font-size: 12px; + color: #5a5e66; + margin-top: 7px +} + +.custom-theme .el-upload iframe { + position: absolute; + z-index: -1; + top: 0; + left: 0; + opacity: 0 +} + +.custom-theme .el-upload--picture-card { + background-color: #fbfdff; + border: 1px dashed #c0ccda; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 148px; + height: 148px; + cursor: pointer; + line-height: 146px; + vertical-align: top +} + +.custom-theme .el-upload--picture-card i { + font-size: 28px; + color: #8c939d +} + +.custom-theme .el-upload--picture-card:hover { + border-color: #262729; + color: #262729 +} + +.custom-theme .el-upload-dragger { + background-color: #fff; + border: 1px dashed #d9d9d9; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 360px; + height: 180px; + text-align: center; + cursor: pointer; + position: relative; + overflow: hidden +} + +.custom-theme .el-upload-dragger .el-icon-upload { + font-size: 67px; + color: #b4bccc; + margin: 40px 0 16px; + line-height: 50px +} + +.custom-theme .el-upload-dragger + .el-upload__tip { + text-align: center +} + +.custom-theme .el-upload-dragger ~ .el-upload__files { + border-top: 1px solid #d8dce5; + margin-top: 7px; + padding-top: 5px +} + +.custom-theme .el-upload-dragger .el-upload__text { + color: #5a5e66; + font-size: 14px; + text-align: center +} + +.custom-theme .el-upload-dragger .el-upload__text em { + color: #262729; + font-style: normal +} + +.custom-theme .el-upload-dragger:hover { + border-color: #262729 +} + +.custom-theme .el-upload-dragger.is-dragover { + background-color: rgba(32, 159, 255, .06); + border: 2px dashed #262729 +} + +.custom-theme .el-upload-list { + margin: 0; + padding: 0; + list-style: none +} + +.custom-theme .el-upload-list__item { + -webkit-transition: all .5s cubic-bezier(.55, 0, .1, 1); + transition: all .5s cubic-bezier(.55, 0, .1, 1); + font-size: 14px; + color: #5a5e66; + line-height: 1.8; + margin-top: 5px; + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 4px; + width: 100% +} + +.custom-theme .el-upload-list__item .el-progress { + position: absolute; + top: 20px; + width: 100% +} + +.custom-theme .el-upload-list__item .el-progress__text { + position: absolute; + right: 0; + top: -13px +} + +.custom-theme .el-upload-list__item .el-progress-bar { + margin-right: 0; + padding-right: 0 +} + +.custom-theme .el-upload-list__item:first-child { + margin-top: 10px +} + +.custom-theme .el-upload-list__item .el-icon-upload-success { + color: #409167 +} + +.custom-theme .el-upload-list__item .el-icon-close { + display: none; + position: absolute; + top: 5px; + right: 5px; + cursor: pointer; + opacity: .75; + color: #5a5e66 +} + +.custom-theme .el-upload-list__item .el-icon-close:hover { + opacity: 1 +} + +.custom-theme .el-upload-list__item .el-icon-close-tip { + display: none; + position: absolute; + top: 5px; + right: 0; + cursor: pointer; + opacity: 1; + color: #262729; + -webkit-transform: translate(15%, 0); + transform: translate(15%, 0) +} + +.custom-theme .el-upload-list__item:hover { + background-color: #f5f7fa +} + +.custom-theme .el-upload-list__item:hover .el-icon-close { + display: inline-block +} + +.custom-theme .el-upload-list__item:hover .el-progress__text { + display: none +} + +.custom-theme .el-upload-list__item.is-success .el-upload-list__item-status-label { + display: block +} + +.custom-theme .el-upload-list__item.is-success .el-upload-list__item-name:focus, .custom-theme .el-upload-list__item.is-success .el-upload-list__item-name:hover { + color: #262729; + cursor: pointer +} + +.custom-theme .el-upload-list__item.is-success:focus .el-icon-close-tip { + display: inline-block +} + +.custom-theme .el-upload-list__item.is-success:active, .custom-theme .el-upload-list__item.is-success:focus:not(.focusing) { + outline-width: 0 +} + +.custom-theme .el-upload-list__item.is-success:active .el-icon-close-tip, .custom-theme .el-upload-list__item.is-success:focus:not(.focusing) .el-icon-close-tip { + display: none +} + +.custom-theme .el-upload-list__item.is-success:focus .el-upload-list__item-status-label, .custom-theme .el-upload-list__item.is-success:hover .el-upload-list__item-status-label { + display: none +} + +.custom-theme .el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label { + display: block +} + +.custom-theme .el-upload-list__item-name { + color: #5a5e66; + display: block; + margin-right: 40px; + overflow: hidden; + padding-left: 4px; + text-overflow: ellipsis; + -webkit-transition: color .3s; + transition: color .3s; + white-space: nowrap +} + +.custom-theme .el-upload-list__item-name [class^=el-icon] { + height: 100%; + margin-right: 7px; + color: #878d99; + line-height: inherit +} + +.custom-theme .el-upload-list__item-status-label { + position: absolute; + right: 5px; + top: 0; + line-height: inherit; + display: none +} + +.custom-theme .el-upload-list__item-delete { + position: absolute; + right: 10px; + top: 0; + font-size: 12px; + color: #5a5e66; + display: none +} + +.custom-theme .el-upload-list__item-delete:hover { + color: #262729 +} + +.custom-theme .el-upload-list--picture-card { + margin: 0; + display: inline; + vertical-align: top +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item { + overflow: hidden; + background-color: #fff; + border: 1px solid #c0ccda; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 148px; + height: 148px; + margin: 0 8px 8px 0; + display: inline-block +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-check, .custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check { + color: #fff +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-close { + display: none +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label { + display: none +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text { + display: block +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-name { + display: none +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-thumbnail { + width: 100%; + height: 100% +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-status-label { + position: absolute; + right: -15px; + top: -6px; + width: 40px; + height: 24px; + background: #13ce66; + text-align: center; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2); + box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2) +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-status-label i { + font-size: 12px; + margin-top: 11px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + cursor: default; + text-align: center; + color: #fff; + opacity: 0; + font-size: 20px; + background-color: rgba(0, 0, 0, .5); + -webkit-transition: opacity .3s; + transition: opacity .3s +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions span { + display: none; + cursor: pointer +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions span + span { + margin-left: 15px +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete { + position: static; + font-size: inherit; + color: inherit +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions:hover { + opacity: 1 +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions:hover span { + display: inline-block +} + +.custom-theme .el-upload-list--picture-card .el-progress { + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + bottom: auto; + width: 126px +} + +.custom-theme .el-upload-list--picture-card .el-progress .el-progress__text { + top: 50% +} + +.custom-theme .el-upload-list--picture .el-upload-list__item { + overflow: hidden; + background-color: #fff; + border: 1px solid #c0ccda; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin-top: 10px; + padding: 10px 10px 10px 90px; + height: 92px +} + +.custom-theme .el-upload-list--picture .el-upload-list__item .el-icon-check, .custom-theme .el-upload-list--picture .el-upload-list__item .el-icon-circle-check { + color: #fff +} + +.custom-theme .el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label { + background: 0 0; + -webkit-box-shadow: none; + box-shadow: none; + top: -2px; + right: -12px +} + +.custom-theme .el-upload-list--picture .el-upload-list__item:hover .el-progress__text { + display: block +} + +.custom-theme .el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name { + line-height: 70px; + margin-top: 0 +} + +.custom-theme .el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i { + display: none +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-thumbnail { + vertical-align: middle; + display: inline-block; + width: 70px; + height: 70px; + float: left; + position: relative; + z-index: 1; + margin-left: -80px +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-name { + display: block; + margin-top: 20px +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-name i { + font-size: 70px; + line-height: 1; + position: absolute; + left: 9px; + top: 10px +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-status-label { + position: absolute; + right: -17px; + top: -7px; + width: 46px; + height: 26px; + background: #13ce66; + text-align: center; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 1px 1px #ccc; + box-shadow: 0 1px 1px #ccc +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-status-label i { + font-size: 12px; + margin-top: 12px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) +} + +.custom-theme .el-upload-list--picture .el-progress { + position: relative; + top: -7px +} + +.custom-theme .el-upload-cover { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: hidden; + z-index: 10; + cursor: default +} + +.custom-theme .el-upload-cover::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-upload-cover img { + display: block; + width: 100%; + height: 100% +} + +.custom-theme .el-upload-cover__label { + position: absolute; + right: -15px; + top: -6px; + width: 40px; + height: 24px; + background: #13ce66; + text-align: center; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2); + box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2) +} + +.custom-theme .el-upload-cover__label i { + font-size: 12px; + margin-top: 11px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + color: #fff +} + +.custom-theme .el-upload-cover__progress { + display: inline-block; + vertical-align: middle; + position: static; + width: 243px +} + +.custom-theme .el-upload-cover__progress + .el-upload__inner { + opacity: 0 +} + +.custom-theme .el-upload-cover__content { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100% +} + +.custom-theme .el-upload-cover__interact { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, .72); + text-align: center +} + +.custom-theme .el-upload-cover__interact .btn { + display: inline-block; + color: #fff; + font-size: 14px; + cursor: pointer; + vertical-align: middle; + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + margin-top: 60px +} + +.custom-theme .el-upload-cover__interact .btn i { + margin-top: 0 +} + +.custom-theme .el-upload-cover__interact .btn span { + opacity: 0; + -webkit-transition: opacity .15s linear; + transition: opacity .15s linear +} + +.custom-theme .el-upload-cover__interact .btn:not(:first-child) { + margin-left: 35px +} + +.custom-theme .el-upload-cover__interact .btn:hover { + -webkit-transform: translateY(-13px); + transform: translateY(-13px) +} + +.custom-theme .el-upload-cover__interact .btn:hover span { + opacity: 1 +} + +.custom-theme .el-upload-cover__interact .btn i { + color: #fff; + display: block; + font-size: 24px; + line-height: inherit; + margin: 0 auto 5px +} + +.custom-theme .el-upload-cover__title { + position: absolute; + bottom: 0; + left: 0; + background-color: #fff; + height: 36px; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: 400; + text-align: left; + padding: 0 10px; + margin: 0; + line-height: 36px; + font-size: 14px; + color: #2d2f33 +} + +.custom-theme .el-upload-cover + .el-upload__inner { + opacity: 0; + position: relative; + z-index: 1 +} + +.custom-theme .el-progress { + position: relative; + line-height: 1 +} + +.custom-theme .el-progress__text { + font-size: 14px; + color: #5a5e66; + display: inline-block; + vertical-align: middle; + margin-left: 10px; + line-height: 1 +} + +.custom-theme .el-progress__text i { + vertical-align: middle; + display: block +} + +.custom-theme .el-progress--circle { + display: inline-block +} + +.custom-theme .el-progress--circle .el-progress__text { + position: absolute; + top: 50%; + left: 0; + width: 100%; + text-align: center; + margin: 0; + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%) +} + +.custom-theme .el-progress--circle .el-progress__text i { + vertical-align: middle; + display: inline-block +} + +.custom-theme .el-progress--without-text .el-progress__text { + display: none +} + +.custom-theme .el-progress--without-text .el-progress-bar { + padding-right: 0; + margin-right: 0; + display: block +} + +.custom-theme .el-progress--text-inside .el-progress-bar { + padding-right: 0; + margin-right: 0 +} + +.custom-theme .el-progress.is-success .el-progress-bar__inner { + background-color: #409167 +} + +.custom-theme .el-progress.is-success .el-progress__text { + color: #409167 +} + +.custom-theme .el-progress.is-exception .el-progress-bar__inner { + background-color: #b3450e +} + +.custom-theme .el-progress.is-exception .el-progress__text { + color: #b3450e +} + +.custom-theme .el-progress-bar { + padding-right: 50px; + display: inline-block; + vertical-align: middle; + width: 100%; + margin-right: -55px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-progress-bar__outer { + height: 6px; + border-radius: 100px; + background-color: #e6ebf5; + overflow: hidden; + position: relative; + vertical-align: middle +} + +.custom-theme .el-progress-bar__inner { + position: absolute; + left: 0; + top: 0; + height: 100%; + background-color: #262729; + text-align: right; + border-radius: 100px; + line-height: 1; + white-space: nowrap +} + +.custom-theme .el-progress-bar__inner::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-progress-bar__innerText { + display: inline-block; + vertical-align: middle; + color: #fff; + font-size: 12px; + margin: 0 5px +} + +@keyframes progress { + 0% { + background-position: 0 0 + } + 100% { + background-position: 32px 0 + } +} + +.custom-theme .el-time-spinner { + width: 100%; + white-space: nowrap +} + +.custom-theme .el-spinner { + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-spinner-inner { + -webkit-animation: rotate 2s linear infinite; + animation: rotate 2s linear infinite; + width: 50px; + height: 50px +} + +.custom-theme .el-spinner-inner .path { + stroke: #ececec; + stroke-linecap: round; + -webkit-animation: dash 1.5s ease-in-out infinite; + animation: dash 1.5s ease-in-out infinite +} + +@-webkit-keyframes rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@keyframes rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@-webkit-keyframes dash { + 0% { + stroke-dasharray: 1, 150; + stroke-dashoffset: 0 + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -35 + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -124 + } +} + +@keyframes dash { + 0% { + stroke-dasharray: 1, 150; + stroke-dashoffset: 0 + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -35 + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -124 + } +} + +.custom-theme .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: #e6ebf5; + position: fixed; + left: 50%; + top: 20px; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + background-color: #edf2fc; + -webkit-transition: opacity .3s, -webkit-transform .4s; + transition: opacity .3s, -webkit-transform .4s; + transition: opacity .3s, transform .4s; + transition: opacity .3s, transform .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 +} + +.custom-theme .el-message.is-center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.custom-theme .el-message p { + margin: 0 +} + +.custom-theme .el-message--info .el-message__content { + color: #0a76a4 +} + +.custom-theme .el-message--success { + background-color: #ecf4f0; + border-color: #d9e9e1 +} + +.custom-theme .el-message--success .el-message__content { + color: #409167 +} + +.custom-theme .el-message--warning { + background-color: #f5f6e6; + border-color: #ebedce +} + +.custom-theme .el-message--warning .el-message__content { + color: #9da408 +} + +.custom-theme .el-message--error { + background-color: #f7ece7; + border-color: #f0dacf +} + +.custom-theme .el-message--error .el-message__content { + color: #b3450e +} + +.custom-theme .el-message__icon { + margin-right: 10px +} + +.custom-theme .el-message__content { + padding: 0; + font-size: 14px; + line-height: 1 +} + +.custom-theme .el-message__content:focus { + outline-width: 0 +} + +.custom-theme .el-message__closeBtn { + position: absolute; + top: 50%; + right: 15px; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + cursor: pointer; + color: #b4bccc; + font-size: 16px +} + +.custom-theme .el-message__closeBtn:focus { + outline-width: 0 +} + +.custom-theme .el-message__closeBtn:hover { + color: #878d99 +} + +.custom-theme .el-message .el-icon-success { + color: #409167 +} + +.custom-theme .el-message .el-icon-error { + color: #b3450e +} + +.custom-theme .el-message .el-icon-info { + color: #0a76a4 +} + +.custom-theme .el-message .el-icon-warning { + color: #9da408 +} + +.custom-theme .el-message-fade-enter, .custom-theme .el-message-fade-leave-active { + opacity: 0; + -webkit-transform: translate(-50%, -100%); + transform: translate(-50%, -100%) +} + +.custom-theme .el-badge { + position: relative; + vertical-align: middle; + display: inline-block +} + +.custom-theme .el-badge__content { + background-color: #b3450e; + 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 +} + +.custom-theme .el-badge__content.is-fixed { + position: absolute; + top: 0; + right: 10px; + -webkit-transform: translateY(-50%) translateX(100%); + transform: translateY(-50%) translateX(100%) +} + +.custom-theme .el-badge__content.is-fixed.is-dot { + right: 5px +} + +.custom-theme .el-badge__content.is-dot { + height: 8px; + width: 8px; + padding: 0; + right: 0; + border-radius: 50% +} + +.custom-theme .el-card { + border-radius: 4px; + border: 1px solid #e6ebf5; + background-color: #fff; + overflow: hidden; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + color: #2d2f33 +} + +.custom-theme .el-card__header { + padding: 18px 20px; + border-bottom: 1px solid #e6ebf5; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-card__body { + padding: 20px +} + +.custom-theme .el-rate { + height: 20px; + line-height: 1 +} + +.custom-theme .el-rate:active, .custom-theme .el-rate:focus { + outline-width: 0 +} + +.custom-theme .el-rate__item { + display: inline-block; + position: relative; + font-size: 0; + vertical-align: middle +} + +.custom-theme .el-rate__icon { + position: relative; + display: inline-block; + font-size: 18px; + margin-right: 6px; + color: #b4bccc; + -webkit-transition: .3s; + transition: .3s +} + +.custom-theme .el-rate__icon.hover { + -webkit-transform: scale(1.15); + transform: scale(1.15) +} + +.custom-theme .el-rate__icon .path2 { + position: absolute; + left: 0; + top: 0 +} + +.custom-theme .el-rate__decimal { + position: absolute; + top: 0; + left: 0; + display: inline-block; + overflow: hidden +} + +.custom-theme .el-rate__text { + font-size: 14px; + vertical-align: middle +} + +.custom-theme .el-steps { + display: -webkit-box; + display: -ms-flexbox; + display: flex +} + +.custom-theme .el-steps--simple { + padding: 13px 8%; + border-radius: 4px; + background: #f5f7fa +} + +.custom-theme .el-steps--horizontal { + white-space: nowrap +} + +.custom-theme .el-steps--vertical { + height: 100%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column +} + +.custom-theme .el-step { + position: relative; + -ms-flex-negative: 1; + flex-shrink: 1 +} + +.custom-theme .el-step:last-of-type .el-step__line { + display: none +} + +.custom-theme .el-step:last-of-type.is-flex { + -ms-flex-preferred-size: auto !important; + flex-basis: auto !important; + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0 +} + +.custom-theme .el-step:last-of-type .el-step__description, .custom-theme .el-step:last-of-type .el-step__main { + padding-right: 0 +} + +.custom-theme .el-step__head { + position: relative; + width: 100% +} + +.custom-theme .el-step__head.is-process { + color: #2d2f33; + border-color: #2d2f33 +} + +.custom-theme .el-step__head.is-wait { + color: #b4bccc; + border-color: #b4bccc +} + +.custom-theme .el-step__head.is-success { + color: #409167; + border-color: #409167 +} + +.custom-theme .el-step__head.is-error { + color: #b3450e; + border-color: #b3450e +} + +.custom-theme .el-step__head.is-finish { + color: #262729; + border-color: #262729 +} + +.custom-theme .el-step__icon { + position: relative; + z-index: 1; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 24px; + height: 24px; + font-size: 14px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background: #fff; + -webkit-transition: .15s ease-out; + transition: .15s ease-out +} + +.custom-theme .el-step__icon.is-text { + border-radius: 50%; + border: 2px solid; + border-color: inherit +} + +.custom-theme .el-step__icon.is-icon { + width: 40px +} + +.custom-theme .el-step__icon-inner { + display: inline-block; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + text-align: center; + font-weight: 700; + line-height: 1; + color: inherit +} + +.custom-theme .el-step__icon-inner[class*=el-icon]:not(.is-status) { + font-size: 25px; + font-weight: 400 +} + +.custom-theme .el-step__icon-inner.is-status { + -webkit-transform: translateY(1px); + transform: translateY(1px) +} + +.custom-theme .el-step__line { + position: absolute; + border-color: inherit; + background-color: #b4bccc +} + +.custom-theme .el-step__line-inner { + display: block; + border-width: 1px; + border-style: solid; + border-color: inherit; + -webkit-transition: .15s ease-out; + transition: .15s ease-out; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 0; + height: 0 +} + +.custom-theme .el-step__main { + white-space: normal; + text-align: left +} + +.custom-theme .el-step__title { + font-size: 16px; + line-height: 38px +} + +.custom-theme .el-step__title.is-process { + font-weight: 700; + color: #2d2f33 +} + +.custom-theme .el-step__title.is-wait { + color: #b4bccc +} + +.custom-theme .el-step__title.is-success { + color: #409167 +} + +.custom-theme .el-step__title.is-error { + color: #b3450e +} + +.custom-theme .el-step__title.is-finish { + color: #262729 +} + +.custom-theme .el-step__description { + padding-right: 10%; + margin-top: -5px; + font-size: 12px; + line-height: 20px; + font-weight: 400 +} + +.custom-theme .el-step__description.is-process { + color: #2d2f33 +} + +.custom-theme .el-step__description.is-wait { + color: #b4bccc +} + +.custom-theme .el-step__description.is-success { + color: #409167 +} + +.custom-theme .el-step__description.is-error { + color: #b3450e +} + +.custom-theme .el-step__description.is-finish { + color: #262729 +} + +.custom-theme .el-step.is-horizontal { + display: inline-block +} + +.custom-theme .el-step.is-horizontal .el-step__line { + height: 2px; + top: 11px; + left: 0; + right: 0 +} + +.custom-theme .el-step.is-vertical { + display: -webkit-box; + display: -ms-flexbox; + display: flex +} + +.custom-theme .el-step.is-vertical .el-step__head { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + width: 24px +} + +.custom-theme .el-step.is-vertical .el-step__main { + padding-left: 10px; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1 +} + +.custom-theme .el-step.is-vertical .el-step__title { + line-height: 24px; + padding-bottom: 8px +} + +.custom-theme .el-step.is-vertical .el-step__line { + width: 2px; + top: 0; + bottom: 0; + left: 11px +} + +.custom-theme .el-step.is-vertical .el-step__icon.is-icon { + width: 24px +} + +.custom-theme .el-step.is-center .el-step__head { + text-align: center +} + +.custom-theme .el-step.is-center .el-step__main { + text-align: center +} + +.custom-theme .el-step.is-center .el-step__description { + padding-left: 20%; + padding-right: 20% +} + +.custom-theme .el-step.is-center .el-step__line { + left: 50%; + right: -50% +} + +.custom-theme .el-step.is-simple { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.custom-theme .el-step.is-simple .el-step__head { + width: auto; + font-size: 0; + padding-right: 10px +} + +.custom-theme .el-step.is-simple .el-step__icon { + background: 0 0; + width: 16px; + height: 16px; + font-size: 12px +} + +.custom-theme .el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status) { + font-size: 18px +} + +.custom-theme .el-step.is-simple .el-step__icon-inner.is-status { + -webkit-transform: scale(.8) translateY(1px); + transform: scale(.8) translateY(1px) +} + +.custom-theme .el-step.is-simple .el-step__main { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1 +} + +.custom-theme .el-step.is-simple .el-step__title { + font-size: 16px; + line-height: 20px +} + +.custom-theme .el-step.is-simple:not(:last-of-type) .el-step__title { + max-width: 50%; + word-break: break-all +} + +.custom-theme .el-step.is-simple .el-step__arrow { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 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 +} + +.custom-theme .el-step.is-simple .el-step__arrow::after, .custom-theme .el-step.is-simple .el-step__arrow::before { + content: ''; + display: inline-block; + position: absolute; + height: 15px; + width: 1px; + background: #b4bccc +} + +.custom-theme .el-step.is-simple .el-step__arrow::before { + -webkit-transform: rotate(-45deg) translateY(-4px); + transform: rotate(-45deg) translateY(-4px); + -webkit-transform-origin: 0 0; + transform-origin: 0 0 +} + +.custom-theme .el-step.is-simple .el-step__arrow::after { + -webkit-transform: rotate(45deg) translateY(4px); + transform: rotate(45deg) translateY(4px); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100% +} + +.custom-theme .el-step.is-simple:last-of-type .el-step__arrow { + display: none +} + +.custom-theme .el-carousel { + overflow-x: hidden; + position: relative +} + +.custom-theme .el-carousel__container { + position: relative; + height: 300px +} + +.custom-theme .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 +} + +.custom-theme .el-carousel__arrow--left { + left: 16px +} + +.custom-theme .el-carousel__arrow--right { + right: 16px +} + +.custom-theme .el-carousel__arrow:hover { + background-color: rgba(31, 45, 61, .23) +} + +.custom-theme .el-carousel__arrow i { + cursor: pointer +} + +.custom-theme .el-carousel__indicators { + position: absolute; + list-style: none; + bottom: 0; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + margin: 0; + padding: 0; + z-index: 2 +} + +.custom-theme .el-carousel__indicators--outside { + bottom: 26px; + text-align: center; + position: static; + -webkit-transform: none; + transform: none +} + +.custom-theme .el-carousel__indicators--outside .el-carousel__indicator:hover button { + opacity: .64 +} + +.custom-theme .el-carousel__indicators--outside button { + background-color: #b4bccc; + opacity: .24 +} + +.custom-theme .el-carousel__indicators--labels { + left: 0; + right: 0; + -webkit-transform: none; + transform: none; + text-align: center +} + +.custom-theme .el-carousel__indicators--labels .el-carousel__button { + height: auto; + width: auto; + padding: 2px 18px; + font-size: 12px +} + +.custom-theme .el-carousel__indicators--labels .el-carousel__indicator { + padding: 6px 4px +} + +.custom-theme .el-carousel__indicator { + display: inline-block; + background-color: transparent; + padding: 12px 4px; + cursor: pointer +} + +.custom-theme .el-carousel__indicator:hover button { + opacity: .72 +} + +.custom-theme .el-carousel__indicator.is-active button { + opacity: 1 +} + +.custom-theme .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 +} + +.custom-theme .carousel-arrow-left-enter, .custom-theme .carousel-arrow-left-leave-active { + -webkit-transform: translateY(-50%) translateX(-10px); + transform: translateY(-50%) translateX(-10px); + opacity: 0 +} + +.custom-theme .carousel-arrow-right-enter, .custom-theme .carousel-arrow-right-leave-active { + -webkit-transform: translateY(-50%) translateX(10px); + transform: translateY(-50%) translateX(10px); + opacity: 0 +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-carousel__item { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: inline-block; + overflow: hidden; + z-index: 0 +} + +.custom-theme .el-carousel__item.is-active { + z-index: 2 +} + +.custom-theme .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 +} + +.custom-theme .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 +} + +.custom-theme .el-carousel__item--card.is-in-stage { + cursor: pointer; + z-index: 1 +} + +.custom-theme .el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask, .custom-theme .el-carousel__item--card.is-in-stage:hover .el-carousel__mask { + opacity: .12 +} + +.custom-theme .el-carousel__item--card.is-active { + z-index: 2 +} + +.custom-theme .el-carousel__mask { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + background-color: #fff; + opacity: .24; + -webkit-transition: .2s; + transition: .2s +} + +.custom-theme .el-collapse { + border-top: 1px solid #e6ebf5; + border-bottom: 1px solid #e6ebf5 +} + +.custom-theme .el-collapse-item__header { + height: 48px; + line-height: 48px; + background-color: #fff; + color: #2d2f33; + cursor: pointer; + border-bottom: 1px solid #e6ebf5; + font-size: 13px; + font-weight: 500; + -webkit-transition: border-bottom-color .3s; + transition: border-bottom-color .3s +} + +.custom-theme .el-collapse-item__header:active, .custom-theme .el-collapse-item__header:focus:not(.focusing) { + outline-width: 0 +} + +.custom-theme .el-collapse-item__arrow { + margin-right: 8px; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + float: right; + line-height: 48px; + font-weight: 300 +} + +.custom-theme .el-collapse-item__wrap { + will-change: height; + background-color: #fff; + overflow: hidden; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-bottom: 1px solid #e6ebf5 +} + +.custom-theme .el-collapse-item__content { + padding-bottom: 25px; + font-size: 13px; + color: #2d2f33; + line-height: 1.769230769230769 +} + +.custom-theme .el-collapse-item.is-active .el-collapse-item__header { + border-bottom-color: transparent +} + +.custom-theme .el-collapse-item.is-active .el-collapse-item__header .el-collapse-item__arrow { + -webkit-transform: rotate(90deg); + transform: rotate(90deg) +} + +.custom-theme .el-collapse-item:last-child { + margin-bottom: -1px +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .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)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-cascader { + display: inline-block; + position: relative; + font-size: 14px; + line-height: 40px +} + +.custom-theme .el-cascader .el-input, .custom-theme .el-cascader .el-input__inner { + cursor: pointer +} + +.custom-theme .el-cascader .el-input__icon { + -webkit-transition: none; + transition: none +} + +.custom-theme .el-cascader .el-icon-arrow-down { + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + font-size: 14px +} + +.custom-theme .el-cascader .el-icon-arrow-down.is-reverse { + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg) +} + +.custom-theme .el-cascader .el-icon-circle-close { + z-index: 2; + -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1); + transition: color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-cascader .el-icon-circle-close:hover { + color: #878d99 +} + +.custom-theme .el-cascader__clearIcon { + z-index: 2; + position: relative +} + +.custom-theme .el-cascader__label { + position: absolute; + left: 0; + top: 0; + height: 100%; + padding: 0 25px 0 15px; + color: #5a5e66; + width: 100%; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + text-align: left; + font-size: inherit +} + +.custom-theme .el-cascader__label span { + color: #000 +} + +.custom-theme .el-cascader--medium { + font-size: 14px; + line-height: 36px +} + +.custom-theme .el-cascader--small { + font-size: 13px; + line-height: 32px +} + +.custom-theme .el-cascader--mini { + font-size: 12px; + line-height: 28px +} + +.custom-theme .el-cascader.is-disabled .el-cascader__label { + z-index: 2; + color: #b4bccc +} + +.custom-theme .el-cascader-menus { + white-space: nowrap; + background: #fff; + position: absolute; + margin: 5px 0; + z-index: 2; + border: solid 1px #dfe4ed; + border-radius: 2px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.custom-theme .el-cascader-menus .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-cascader-menu { + display: inline-block; + vertical-align: top; + height: 204px; + overflow: auto; + border-right: solid 1px #dfe4ed; + background-color: #fff; + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 6px 0; + min-width: 160px +} + +.custom-theme .el-cascader-menu:last-child { + border-right: 0 +} + +.custom-theme .el-cascader-menu__item { + font-size: 14px; + padding: 8px 20px; + position: relative; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #5a5e66; + height: 34px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer +} + +.custom-theme .el-cascader-menu__item--extensible:after { + font-family: element-icons; + content: "\e604"; + font-size: 14px; + color: #bfcbd9; + position: absolute; + right: 15px +} + +.custom-theme .el-cascader-menu__item.is-disabled { + color: #b4bccc; + background-color: #fff; + cursor: not-allowed +} + +.custom-theme .el-cascader-menu__item.is-disabled:hover { + background-color: #fff +} + +.custom-theme .el-cascader-menu__item.is-active { + color: #262729 +} + +.custom-theme .el-cascader-menu__item:hover { + background-color: #f5f7fa +} + +.custom-theme .el-cascader-menu__item.selected { + color: #fff; + background-color: #f5f7fa +} + +.custom-theme .el-cascader-menu__item__keyword { + font-weight: 700 +} + +.custom-theme .el-cascader-menu--flexible { + height: auto; + max-height: 180px; + overflow: auto +} + +.custom-theme .el-cascader-menu--flexible .el-cascader-menu__item { + overflow: visible +} + +.custom-theme .el-color-hue-slider { + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 280px; + height: 12px; + background-color: red; + padding: 0 2px +} + +.custom-theme .el-color-hue-slider__bar { + position: relative; + background: -webkit-gradient(linear, left top, right top, from(red), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(83%, #f0f), to(red)); + background: linear-gradient(to right, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red 100%); + height: 100% +} + +.custom-theme .el-color-hue-slider__thumb { + position: absolute; + cursor: pointer; + -webkit-box-sizing: border-box; + box-sizing: border-box; + left: 0; + top: 0; + width: 4px; + height: 100%; + border-radius: 1px; + background: #fff; + border: 1px solid #f0f0f0; + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .6); + box-shadow: 0 0 2px rgba(0, 0, 0, .6); + z-index: 1 +} + +.custom-theme .el-color-hue-slider.is-vertical { + width: 12px; + height: 180px; + padding: 2px 0 +} + +.custom-theme .el-color-hue-slider.is-vertical .el-color-hue-slider__bar { + background: -webkit-gradient(linear, left top, left bottom, from(red), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(83%, #f0f), to(red)); + background: linear-gradient(to bottom, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red 100%) +} + +.custom-theme .el-color-hue-slider.is-vertical .el-color-hue-slider__thumb { + left: 0; + top: 0; + width: 100%; + height: 4px +} + +.custom-theme .el-color-svpanel { + position: relative; + width: 280px; + height: 180px +} + +.custom-theme .el-color-svpanel__black, .custom-theme .el-color-svpanel__white { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0 +} + +.custom-theme .el-color-svpanel__white { + background: -webkit-gradient(linear, left top, right top, from(#fff), to(rgba(255, 255, 255, 0))); + background: linear-gradient(to right, #fff, rgba(255, 255, 255, 0)) +} + +.custom-theme .el-color-svpanel__black { + background: -webkit-gradient(linear, left bottom, left top, from(#000), to(transparent)); + background: linear-gradient(to top, #000, transparent) +} + +.custom-theme .el-color-svpanel__cursor { + position: absolute +} + +.custom-theme .el-color-svpanel__cursor > div { + cursor: head; + width: 4px; + height: 4px; + -webkit-box-shadow: 0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0, 0, 0, .3), 0 0 1px 2px rgba(0, 0, 0, .4); + box-shadow: 0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0, 0, 0, .3), 0 0 1px 2px rgba(0, 0, 0, .4); + border-radius: 50%; + -webkit-transform: translate(-2px, -2px); + transform: translate(-2px, -2px) +} + +.custom-theme .el-color-alpha-slider { + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 280px; + height: 12px; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) +} + +.custom-theme .el-color-alpha-slider__bar { + position: relative; + background: -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0)), to(white)); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0, #fff 100%); + height: 100% +} + +.custom-theme .el-color-alpha-slider__thumb { + position: absolute; + cursor: pointer; + -webkit-box-sizing: border-box; + box-sizing: border-box; + left: 0; + top: 0; + width: 4px; + height: 100%; + border-radius: 1px; + background: #fff; + border: 1px solid #f0f0f0; + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .6); + box-shadow: 0 0 2px rgba(0, 0, 0, .6); + z-index: 1 +} + +.custom-theme .el-color-alpha-slider.is-vertical { + width: 20px; + height: 180px +} + +.custom-theme .el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar { + background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(white)); + background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0, #fff 100%) +} + +.custom-theme .el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb { + left: 0; + top: 0; + width: 100%; + height: 4px +} + +.custom-theme .el-color-dropdown { + width: 300px +} + +.custom-theme .el-color-dropdown__main-wrapper { + margin-bottom: 6px +} + +.custom-theme .el-color-dropdown__main-wrapper::after { + content: ""; + display: table; + clear: both +} + +.custom-theme .el-color-dropdown__btns { + margin-top: 6px; + text-align: right +} + +.custom-theme .el-color-dropdown__value { + float: left; + line-height: 26px; + font-size: 12px; + color: #000; + width: 160px +} + +.custom-theme .el-color-dropdown__btn { + border: 1px solid #dcdcdc; + color: #333; + line-height: 24px; + border-radius: 2px; + padding: 0 20px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px +} + +.custom-theme .el-color-dropdown__btn[disabled] { + color: #ccc; + cursor: not-allowed +} + +.custom-theme .el-color-dropdown__btn:hover { + color: #262729; + border-color: #262729 +} + +.custom-theme .el-color-dropdown__link-btn { + cursor: pointer; + color: #262729; + text-decoration: none; + padding: 15px; + font-size: 12px +} + +.custom-theme .el-color-dropdown__link-btn:hover { + color: tint(#262729, 20%) +} + +.custom-theme .el-color-picker { + display: inline-block; + position: relative; + line-height: normal; + height: 40px +} + +.custom-theme .el-color-picker.is-disabled .el-color-picker__trigger { + cursor: not-allowed +} + +.custom-theme .el-color-picker--medium { + height: 36px +} + +.custom-theme .el-color-picker--medium .el-color-picker__trigger { + height: 36px; + width: 36px +} + +.custom-theme .el-color-picker--medium .el-color-picker__mask { + height: 34px; + width: 34px +} + +.custom-theme .el-color-picker--small { + height: 32px +} + +.custom-theme .el-color-picker--small .el-color-picker__trigger { + height: 32px; + width: 32px +} + +.custom-theme .el-color-picker--small .el-color-picker__mask { + height: 30px; + width: 30px +} + +.custom-theme .el-color-picker--small .el-color-picker__empty, .custom-theme .el-color-picker--small .el-color-picker__icon { + -webkit-transform: translate3d(-50%, -50%, 0) scale(.8); + transform: translate3d(-50%, -50%, 0) scale(.8) +} + +.custom-theme .el-color-picker--mini { + height: 28px +} + +.custom-theme .el-color-picker--mini .el-color-picker__trigger { + height: 28px; + width: 28px +} + +.custom-theme .el-color-picker--mini .el-color-picker__mask { + height: 26px; + width: 26px +} + +.custom-theme .el-color-picker--mini .el-color-picker__empty, .custom-theme .el-color-picker--mini .el-color-picker__icon { + -webkit-transform: translate3d(-50%, -50%, 0) scale(.8); + transform: translate3d(-50%, -50%, 0) scale(.8) +} + +.custom-theme .el-color-picker__mask { + height: 38px; + width: 38px; + border-radius: 4px; + position: absolute; + top: 1px; + left: 1px; + z-index: 1; + cursor: not-allowed; + background-color: rgba(255, 255, 255, .7) +} + +.custom-theme .el-color-picker__trigger { + display: inline-block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 40px; + width: 40px; + padding: 4px; + border: 1px solid #e6e6e6; + border-radius: 4px; + font-size: 0; + position: relative; + cursor: pointer +} + +.custom-theme .el-color-picker__color { + position: relative; + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid #999; + border-radius: 2px; + width: 100%; + height: 100%; + text-align: center +} + +.custom-theme .el-color-picker__color.is-alpha { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) +} + +.custom-theme .el-color-picker__color-inner { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0 +} + +.custom-theme .el-color-picker__empty { + font-size: 12px; + color: #999; + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate3d(-50%, -50%, 0); + transform: translate3d(-50%, -50%, 0) +} + +.custom-theme .el-color-picker__icon { + display: inline-block; + position: absolute; + width: 100%; + top: 50%; + left: 50%; + -webkit-transform: translate3d(-50%, -50%, 0); + transform: translate3d(-50%, -50%, 0); + color: #fff; + text-align: center; + font-size: 12px +} + +.custom-theme .el-color-picker__panel { + position: absolute; + z-index: 10; + padding: 6px; + background-color: #fff; + border: 1px solid #e6ebf5; + border-radius: 4px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-color: #d8dce5; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + -webkit-transition: .1s; + transition: .1s; + font-weight: 500; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button + .el-button { + margin-left: 10px +} + +.custom-theme .el-button.is-round { + padding: 12px 20px +} + +.custom-theme .el-button:focus, .custom-theme .el-button:hover { + color: #262729; + border-color: #bebebf; + background-color: #e9e9ea +} + +.custom-theme .el-button:active { + color: #222325; + border-color: #222325; + outline: 0 +} + +.custom-theme .el-button::-moz-focus-inner { + border: 0 +} + +.custom-theme .el-button [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-button.is-plain:focus, .custom-theme .el-button.is-plain:hover { + background: #fff; + border-color: #262729; + color: #262729 +} + +.custom-theme .el-button.is-plain:active { + background: #fff; + border-color: #222325; + color: #222325; + outline: 0 +} + +.custom-theme .el-button.is-active { + color: #222325; + border-color: #222325 +} + +.custom-theme .el-button.is-disabled, .custom-theme .el-button.is-disabled:focus, .custom-theme .el-button.is-disabled:hover { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5 +} + +.custom-theme .el-button.is-disabled.el-button--text { + background-color: transparent +} + +.custom-theme .el-button.is-disabled.is-plain, .custom-theme .el-button.is-disabled.is-plain:focus, .custom-theme .el-button.is-disabled.is-plain:hover { + background-color: #fff; + border-color: #e6ebf5; + color: #b4bccc +} + +.custom-theme .el-button.is-loading { + position: relative; + pointer-events: none +} + +.custom-theme .el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255, 255, 255, .35) +} + +.custom-theme .el-button.is-round { + border-radius: 20px; + padding: 12px 23px +} + +.custom-theme .el-button--primary { + color: #fff; + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-button--primary:focus, .custom-theme .el-button--primary:hover { + background: #515254; + border-color: #515254; + color: #fff +} + +.custom-theme .el-button--primary:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-active { + background: #222325; + border-color: #222325; + color: #fff +} + +.custom-theme .el-button--primary.is-disabled, .custom-theme .el-button--primary.is-disabled:active, .custom-theme .el-button--primary.is-disabled:focus, .custom-theme .el-button--primary.is-disabled:hover { + color: #fff; + background-color: #939394; + border-color: #939394 +} + +.custom-theme .el-button--primary.is-plain { + color: #262729; + background: #e9e9ea; + border-color: #a8a9a9 +} + +.custom-theme .el-button--primary.is-plain:focus, .custom-theme .el-button--primary.is-plain:hover { + background: #262729; + border-color: #262729; + color: #fff +} + +.custom-theme .el-button--primary.is-plain:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-plain.is-disabled, .custom-theme .el-button--primary.is-plain.is-disabled:active, .custom-theme .el-button--primary.is-plain.is-disabled:focus, .custom-theme .el-button--primary.is-plain.is-disabled:hover { + color: #7d7d7f; + background-color: #e9e9ea; + border-color: #d4d4d4 +} + +.custom-theme .el-button--success { + color: #fff; + background-color: #409167; + border-color: #409167 +} + +.custom-theme .el-button--success:focus, .custom-theme .el-button--success:hover { + background: #66a785; + border-color: #66a785; + color: #fff +} + +.custom-theme .el-button--success:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-active { + background: #3a835d; + border-color: #3a835d; + color: #fff +} + +.custom-theme .el-button--success.is-disabled, .custom-theme .el-button--success.is-disabled:active, .custom-theme .el-button--success.is-disabled:focus, .custom-theme .el-button--success.is-disabled:hover { + color: #fff; + background-color: #a0c8b3; + border-color: #a0c8b3 +} + +.custom-theme .el-button--success.is-plain { + color: #409167; + background: #ecf4f0; + border-color: #b3d3c2 +} + +.custom-theme .el-button--success.is-plain:focus, .custom-theme .el-button--success.is-plain:hover { + background: #409167; + border-color: #409167; + color: #fff +} + +.custom-theme .el-button--success.is-plain:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-plain.is-disabled, .custom-theme .el-button--success.is-plain.is-disabled:active, .custom-theme .el-button--success.is-plain.is-disabled:focus, .custom-theme .el-button--success.is-plain.is-disabled:hover { + color: #8cbda4; + background-color: #ecf4f0; + border-color: #d9e9e1 +} + +.custom-theme .el-button--warning { + color: #fff; + background-color: #9da408; + border-color: #9da408 +} + +.custom-theme .el-button--warning:focus, .custom-theme .el-button--warning:hover { + background: #b1b639; + border-color: #b1b639; + color: #fff +} + +.custom-theme .el-button--warning:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-active { + background: #8d9407; + border-color: #8d9407; + color: #fff +} + +.custom-theme .el-button--warning.is-disabled, .custom-theme .el-button--warning.is-disabled:active, .custom-theme .el-button--warning.is-disabled:focus, .custom-theme .el-button--warning.is-disabled:hover { + color: #fff; + background-color: #ced284; + border-color: #ced284 +} + +.custom-theme .el-button--warning.is-plain { + color: #9da408; + background: #f5f6e6; + border-color: #d8db9c +} + +.custom-theme .el-button--warning.is-plain:focus, .custom-theme .el-button--warning.is-plain:hover { + background: #9da408; + border-color: #9da408; + color: #fff +} + +.custom-theme .el-button--warning.is-plain:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-plain.is-disabled, .custom-theme .el-button--warning.is-plain.is-disabled:active, .custom-theme .el-button--warning.is-plain.is-disabled:focus, .custom-theme .el-button--warning.is-plain.is-disabled:hover { + color: #c4c86b; + background-color: #f5f6e6; + border-color: #ebedce +} + +.custom-theme .el-button--danger { + color: #fff; + background-color: #b3450e; + border-color: #b3450e +} + +.custom-theme .el-button--danger:focus, .custom-theme .el-button--danger:hover { + background: #c26a3e; + border-color: #c26a3e; + color: #fff +} + +.custom-theme .el-button--danger:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff +} + +.custom-theme .el-button--danger.is-disabled, .custom-theme .el-button--danger.is-disabled:active, .custom-theme .el-button--danger.is-disabled:focus, .custom-theme .el-button--danger.is-disabled:hover { + color: #fff; + background-color: #d9a287; + border-color: #d9a287 +} + +.custom-theme .el-button--danger.is-plain { + color: #b3450e; + background: #f7ece7; + border-color: #e1b59f +} + +.custom-theme .el-button--danger.is-plain:focus, .custom-theme .el-button--danger.is-plain:hover { + background: #b3450e; + border-color: #b3450e; + color: #fff +} + +.custom-theme .el-button--danger.is-plain:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-plain.is-disabled, .custom-theme .el-button--danger.is-plain.is-disabled:active, .custom-theme .el-button--danger.is-plain.is-disabled:focus, .custom-theme .el-button--danger.is-plain.is-disabled:hover { + color: #d18f6e; + background-color: #f7ece7; + border-color: #f0dacf +} + +.custom-theme .el-button--info { + color: #fff; + background-color: #0a76a4; + border-color: #0a76a4 +} + +.custom-theme .el-button--info:focus, .custom-theme .el-button--info:hover { + background: #3b91b6; + border-color: #3b91b6; + color: #fff +} + +.custom-theme .el-button--info:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-active { + background: #096a94; + border-color: #096a94; + color: #fff +} + +.custom-theme .el-button--info.is-disabled, .custom-theme .el-button--info.is-disabled:active, .custom-theme .el-button--info.is-disabled:focus, .custom-theme .el-button--info.is-disabled:hover { + color: #fff; + background-color: #85bbd2; + border-color: #85bbd2 +} + +.custom-theme .el-button--info.is-plain { + color: #0a76a4; + background: #e7f1f6; + border-color: #9dc8db +} + +.custom-theme .el-button--info.is-plain:focus, .custom-theme .el-button--info.is-plain:hover { + background: #0a76a4; + border-color: #0a76a4; + color: #fff +} + +.custom-theme .el-button--info.is-plain:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-plain.is-disabled, .custom-theme .el-button--info.is-plain.is-disabled:active, .custom-theme .el-button--info.is-plain.is-disabled:focus, .custom-theme .el-button--info.is-plain.is-disabled:hover { + color: #6cadc8; + background-color: #e7f1f6; + border-color: #cee4ed +} + +.custom-theme .el-button--medium { + padding: 10px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button--medium.is-round { + padding: 10px 20px +} + +.custom-theme .el-button--small { + padding: 9px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--small.is-round { + padding: 9px 15px +} + +.custom-theme .el-button--mini { + padding: 7px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--mini.is-round { + padding: 7px 15px +} + +.custom-theme .el-button--text { + border: none; + color: #262729; + background: 0 0; + padding-left: 0; + padding-right: 0 +} + +.custom-theme .el-button--text:focus, .custom-theme .el-button--text:hover { + color: #515254; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button--text:active { + color: #222325; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button-group { + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-button-group::after, .custom-theme .el-button-group::before { + display: table; + content: "" +} + +.custom-theme .el-button-group::after { + clear: both +} + +.custom-theme .el-button-group .el-button { + float: left; + position: relative +} + +.custom-theme .el-button-group .el-button + .el-button { + margin-left: 0 +} + +.custom-theme .el-button-group .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-button-group .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:last-child) { + margin-right: -1px +} + +.custom-theme .el-button-group .el-button:active, .custom-theme .el-button-group .el-button:focus, .custom-theme .el-button-group .el-button:hover { + z-index: 1 +} + +.custom-theme .el-button-group .el-button.is-active { + z-index: 1 +} + +.custom-theme .el-button-group .el-button--primary:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-checkbox { + color: #5a5e66; + font-weight: 500; + font-size: 14px; + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-checkbox.is-bordered { + padding: 9px 20px 9px 10px; + border-radius: 4px; + border: 1px solid #d8dce5 +} + +.custom-theme .el-checkbox.is-bordered.is-checked { + border-color: #262729 +} + +.custom-theme .el-checkbox.is-bordered.is-disabled { + border-color: #e6ebf5; + cursor: not-allowed +} + +.custom-theme .el-checkbox.is-bordered + .el-checkbox.is-bordered { + margin-left: 10px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium { + padding: 7px 20px 7px 10px; + border-radius: 4px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label { + line-height: 17px; + font-size: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner { + height: 14px; + width: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small { + padding: 3px 15px 7px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label { + line-height: 15px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini { + padding: 1px 15px 5px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label { + line-height: 12px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox__input { + white-space: nowrap; + cursor: pointer; + outline: 0; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + background-color: #b4bccc; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled + span.el-checkbox__label { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after { + -webkit-transform: rotate(45deg) scaleY(1); + transform: rotate(45deg) scaleY(1) +} + +.custom-theme .el-checkbox__input.is-checked + .el-checkbox__label { + color: #262729 +} + +.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + background-color: #fff; + height: 2px; + -webkit-transform: scale(.5); + transform: scale(.5); + left: 0; + right: 0; + top: 5px +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none +} + +.custom-theme .el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid #d8dce5; + border-radius: 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 14px; + height: 14px; + background-color: #fff; + z-index: 1; + -webkit-transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46); + transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46) +} + +.custom-theme .el-checkbox__inner:hover { + border-color: #262729 +} + +.custom-theme .el-checkbox__inner::after { + -webkit-box-sizing: content-box; + box-sizing: content-box; + content: ""; + border: 1px solid #fff; + border-left: 0; + border-top: 0; + height: 7px; + left: 4px; + position: absolute; + top: 1px; + -webkit-transform: rotate(45deg) scaleY(0); + transform: rotate(45deg) scaleY(0); + width: 3px; + -webkit-transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms, -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + -webkit-transform-origin: center; + transform-origin: center +} + +.custom-theme .el-checkbox__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + width: 0; + height: 0; + left: -999px +} + +.custom-theme .el-checkbox__label { + display: inline-block; + padding-left: 10px; + line-height: 19px; + font-size: 14px +} + +.custom-theme .el-checkbox + .el-checkbox { + margin-left: 30px +} + +.custom-theme .el-checkbox-button { + position: relative; + display: inline-block +} + +.custom-theme .el-checkbox-button__inner { + display: inline-block; + line-height: 1; + font-weight: 500; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-left: 0; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + position: relative; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button__inner.is-round { + padding: 12px 20px +} + +.custom-theme .el-checkbox-button__inner:hover { + color: #262729 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] { + line-height: .9 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-checkbox-button__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + left: -999px +} + +.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner { + color: #fff; + background-color: #262729; + border-color: #262729; + -webkit-box-shadow: -1px 0 0 0 #7d7d7f; + box-shadow: -1px 0 0 0 #7d7d7f +} + +.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5; + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner { + border-left: 1px solid #d8dce5; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner { + border-radius: 0 4px 4px 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round { + padding: 10px 20px +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round { + padding: 9px 15px +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round { + padding: 7px 15px +} + +.custom-theme .el-checkbox-group { + font-size: 0 +} + +.custom-theme .el-transfer { + font-size: 14px +} + +.custom-theme .el-transfer__buttons { + display: inline-block; + vertical-align: middle; + padding: 0 30px +} + +.custom-theme .el-transfer__button { + display: block; + margin: 0 auto; + padding: 10px; + border-radius: 50%; + color: #fff; + background-color: #262729; + font-size: 0 +} + +.custom-theme .el-transfer__button.is-with-texts { + border-radius: 4px +} + +.custom-theme .el-transfer__button.is-disabled { + border: 1px solid #d8dce5; + background-color: #f5f7fa; + color: #b4bccc +} + +.custom-theme .el-transfer__button.is-disabled:hover { + border: 1px solid #d8dce5; + background-color: #f5f7fa; + color: #b4bccc +} + +.custom-theme .el-transfer__button:first-child { + margin-bottom: 10px +} + +.custom-theme .el-transfer__button:nth-child(2) { + margin: 0 +} + +.custom-theme .el-transfer__button i, .custom-theme .el-transfer__button span { + font-size: 14px +} + +.custom-theme .el-transfer__button [class*=el-icon-] + span { + margin-left: 0 +} + +.custom-theme .el-transfer-panel { + border: 1px solid #e6ebf5; + border-radius: 4px; + overflow: hidden; + background: #fff; + display: inline-block; + vertical-align: middle; + width: 200px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + position: relative +} + +.custom-theme .el-transfer-panel__body { + height: 246px +} + +.custom-theme .el-transfer-panel__body.is-with-footer { + padding-bottom: 40px +} + +.custom-theme .el-transfer-panel__list { + margin: 0; + padding: 6px 0; + list-style: none; + height: 246px; + overflow: auto; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-transfer-panel__list.is-filterable { + height: 194px; + padding-top: 0 +} + +.custom-theme .el-transfer-panel__item { + height: 30px; + line-height: 30px; + padding-left: 15px; + display: block +} + +.custom-theme .el-transfer-panel__item + .el-transfer-panel__item { + margin-left: 0 +} + +.custom-theme .el-transfer-panel__item.el-checkbox { + color: #5a5e66 +} + +.custom-theme .el-transfer-panel__item:hover { + color: #262729 +} + +.custom-theme .el-transfer-panel__item.el-checkbox .el-checkbox__label { + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-left: 24px; + line-height: 30px +} + +.custom-theme .el-transfer-panel__item .el-checkbox__input { + position: absolute; + top: 8px +} + +.custom-theme .el-transfer-panel__filter { + text-align: center; + margin: 15px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: block; + width: auto +} + +.custom-theme .el-transfer-panel__filter .el-input__inner { + height: 32px; + width: 100%; + font-size: 12px; + display: inline-block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 16px; + padding-right: 10px; + padding-left: 30px +} + +.custom-theme .el-transfer-panel__filter .el-input__icon { + margin-left: 5px +} + +.custom-theme .el-transfer-panel__filter .el-icon-circle-close { + cursor: pointer +} + +.custom-theme .el-transfer-panel .el-transfer-panel__header { + height: 40px; + line-height: 40px; + background: #f5f7fa; + margin: 0; + padding-left: 15px; + border-bottom: 1px solid #e6ebf5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #000 +} + +.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox { + display: block; + line-height: 40px +} + +.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label { + font-size: 16px; + color: #2d2f33; + font-weight: 400 +} + +.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span { + position: absolute; + right: 15px; + color: #878d99; + font-size: 12px; + font-weight: 400 +} + +.custom-theme .el-transfer-panel .el-transfer-panel__footer { + height: 40px; + background: #fff; + margin: 0; + padding: 0; + border-top: 1px solid #e6ebf5; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + z-index: 1 +} + +.custom-theme .el-transfer-panel .el-transfer-panel__footer::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-transfer-panel .el-transfer-panel__footer .el-checkbox { + padding-left: 20px; + color: #5a5e66 +} + +.custom-theme .el-transfer-panel .el-transfer-panel__empty { + margin: 0; + height: 30px; + line-height: 30px; + padding: 6px 15px 0; + color: #878d99 +} + +.custom-theme .el-transfer-panel .el-checkbox__label { + padding-left: 8px +} + +.custom-theme .el-transfer-panel .el-checkbox__inner { + height: 14px; + width: 14px; + border-radius: 3px +} + +.custom-theme .el-transfer-panel .el-checkbox__inner::after { + height: 6px; + width: 3px; + left: 4px +} + +.custom-theme .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; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-container.is-vertical { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column +} + +.custom-theme .el-header { + padding: 0 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-aside { + overflow: auto; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-main { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: auto; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 20px +} + +.custom-theme .el-footer { + padding: 0 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/BackToTop/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/BackToTop/index.vue new file mode 100644 index 0000000..36522f4 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/BackToTop/index.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Breadcrumb/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Breadcrumb/index.vue new file mode 100644 index 0000000..2d1265f --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Breadcrumb/index.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Charts/Keyboard.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/Keyboard.vue new file mode 100644 index 0000000..e7d6382 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/Keyboard.vue @@ -0,0 +1,155 @@ + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Charts/LineMarker.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/LineMarker.vue new file mode 100644 index 0000000..8d97b54 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/LineMarker.vue @@ -0,0 +1,227 @@ + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Charts/MixChart.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/MixChart.vue new file mode 100644 index 0000000..c8a24b0 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/MixChart.vue @@ -0,0 +1,272 @@ + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Charts/mixins/resize.js b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/mixins/resize.js new file mode 100644 index 0000000..89fbed1 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/mixins/resize.js @@ -0,0 +1,56 @@ +import {debounce} from '@/utils' + +export default { + data() { + return { + $_sidebarElm: null, + $_resizeHandler: null + } + }, + mounted() { + this.initListener() + }, + activated() { + if (!this.$_resizeHandler) { + // avoid duplication init + this.initListener() + } + + // when keep-alive chart activated, auto resize + this.resize() + }, + beforeDestroy() { + this.destroyListener() + }, + deactivated() { + this.destroyListener() + }, + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_sidebarResizeHandler(e) { + if (e.propertyName === 'width') { + this.$_resizeHandler() + } + }, + initListener() { + this.$_resizeHandler = debounce(() => { + this.resize() + }, 100) + window.addEventListener('resize', this.$_resizeHandler) + + this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] + this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) + }, + destroyListener() { + window.removeEventListener('resize', this.$_resizeHandler) + this.$_resizeHandler = null + + this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) + }, + resize() { + const {chart} = this + chart && chart.resize() + } + } +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/DndList/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/DndList/index.vue new file mode 100644 index 0000000..23ca006 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/DndList/index.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/DragSelect/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/DragSelect/index.vue new file mode 100644 index 0000000..47f4247 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/DragSelect/index.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Dropzone/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Dropzone/index.vue new file mode 100644 index 0000000..bad9eb9 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Dropzone/index.vue @@ -0,0 +1,297 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ErrorLog/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/ErrorLog/index.vue new file mode 100644 index 0000000..9ad758d --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ErrorLog/index.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/GithubCorner/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/GithubCorner/index.vue new file mode 100644 index 0000000..92f7aa0 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/GithubCorner/index.vue @@ -0,0 +1,56 @@ + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Hamburger/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Hamburger/index.vue new file mode 100644 index 0000000..368b002 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Hamburger/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/HeaderSearch/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/HeaderSearch/index.vue new file mode 100644 index 0000000..5d61ba3 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/HeaderSearch/index.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/index.vue new file mode 100644 index 0000000..65a4262 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/index.vue @@ -0,0 +1,1779 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/data2blob.js b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/data2blob.js new file mode 100644 index 0000000..9c47f8a --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/data2blob.js @@ -0,0 +1,19 @@ +/** + * database64文件格式转换为2进制 + * + * @param {[String]} data dataURL 的格式为 “data:image/png;base64,****”,逗号之前都是一些说明性的文字,我们只需要逗号之后的就行了 + * @param {[String]} mime [description] + * @return {[blob]} [description] + */ +export default function(data, mime) { + data = data.split(',')[1] + data = window.atob(data) + var ia = new Uint8Array(data.length) + for (var i = 0; i < data.length; i++) { + ia[i] = data.charCodeAt(i) + } + // canvas.toDataURL 返回的默认格式就是 image/png + return new Blob([ia], { + type: mime + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/effectRipple.js b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/effectRipple.js new file mode 100644 index 0000000..46a0164 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/effectRipple.js @@ -0,0 +1,39 @@ +/** + * 点击波纹效果 + * + * @param {[event]} e [description] + * @param {[Object]} arg_opts [description] + * @return {[bollean]} [description] + */ +export default function(e, arg_opts) { + var opts = Object.assign({ + ele: e.target, // 波纹作用元素 + type: 'hit', // hit点击位置扩散center中心点扩展 + bgc: 'rgba(0, 0, 0, 0.15)' // 波纹颜色 + }, arg_opts) + var target = opts.ele + if (target) { + var rect = target.getBoundingClientRect() + var ripple = target.querySelector('.e-ripple') + if (!ripple) { + ripple = document.createElement('span') + ripple.className = 'e-ripple' + ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px' + target.appendChild(ripple) + } else { + ripple.className = 'e-ripple' + } + switch (opts.type) { + case 'center': + ripple.style.top = (rect.height / 2 - ripple.offsetHeight / 2) + 'px' + ripple.style.left = (rect.width / 2 - ripple.offsetWidth / 2) + 'px' + break + default: + ripple.style.top = (e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop) + 'px' + ripple.style.left = (e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft) + 'px' + } + ripple.style.backgroundColor = opts.bgc + ripple.className = 'e-ripple z-active' + return false + } +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/language.js b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/language.js new file mode 100644 index 0000000..727872d --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/language.js @@ -0,0 +1,232 @@ +export default { + zh: { + hint: '点击,或拖动图片至此处', + loading: '正在上传……', + noSupported: '浏览器不支持该功能,请使用IE10以上或其他现在浏览器!', + success: '上传成功', + fail: '图片上传失败', + preview: '头像预览', + btn: { + off: '取消', + close: '关闭', + back: '上一步', + save: '保存' + }, + error: { + onlyImg: '仅限图片格式', + outOfSize: '单文件大小不能超过 ', + lowestPx: '图片最低像素为(宽*高):' + } + }, + 'zh-tw': { + hint: '點擊,或拖動圖片至此處', + loading: '正在上傳……', + noSupported: '瀏覽器不支持該功能,請使用IE10以上或其他現代瀏覽器!', + success: '上傳成功', + fail: '圖片上傳失敗', + preview: '頭像預覽', + btn: { + off: '取消', + close: '關閉', + back: '上一步', + save: '保存' + }, + error: { + onlyImg: '僅限圖片格式', + outOfSize: '單文件大小不能超過 ', + lowestPx: '圖片最低像素為(寬*高):' + } + }, + en: { + hint: 'Click or drag the file here to upload', + loading: 'Uploading…', + noSupported: 'Browser is not supported, please use IE10+ or other browsers', + success: 'Upload success', + fail: 'Upload failed', + preview: 'Preview', + btn: { + off: 'Cancel', + close: 'Close', + back: 'Back', + save: 'Save' + }, + error: { + onlyImg: 'Image only', + outOfSize: 'Image exceeds size limit: ', + lowestPx: 'Image\'s size is too low. Expected at least: ' + } + }, + ro: { + hint: 'Atinge sau trage fișierul aici', + loading: 'Se încarcă', + noSupported: 'Browser-ul tău nu suportă acest feature. Te rugăm încearcă cu alt browser.', + success: 'S-a încărcat cu succes', + fail: 'A apărut o problemă la încărcare', + preview: 'Previzualizează', + + btn: { + off: 'Anulează', + close: 'Închide', + back: 'Înapoi', + save: 'Salvează' + }, + + error: { + onlyImg: 'Doar imagini', + outOfSize: 'Imaginea depășește limita de: ', + loewstPx: 'Imaginea este prea mică; Minim: ' + } + }, + ru: { + hint: 'Нажмите, или перетащите файл в это окно', + loading: 'Загружаю……', + noSupported: 'Ваш браузер не поддерживается, пожалуйста, используйте IE10 + или другие браузеры', + success: 'Загрузка выполнена успешно', + fail: 'Ошибка загрузки', + preview: 'Предпросмотр', + btn: { + off: 'Отменить', + close: 'Закрыть', + back: 'Назад', + save: 'Сохранить' + }, + error: { + onlyImg: 'Только изображения', + outOfSize: 'Изображение превышает предельный размер: ', + lowestPx: 'Минимальный размер изображения: ' + } + }, + 'pt-br': { + hint: 'Clique ou arraste o arquivo aqui para carregar', + loading: 'Carregando…', + noSupported: 'Browser não suportado, use o IE10+ ou outro browser', + success: 'Sucesso ao carregar imagem', + fail: 'Falha ao carregar imagem', + preview: 'Pré-visualizar', + btn: { + off: 'Cancelar', + close: 'Fechar', + back: 'Voltar', + save: 'Salvar' + }, + error: { + onlyImg: 'Apenas imagens', + outOfSize: 'A imagem excede o limite de tamanho: ', + lowestPx: 'O tamanho da imagem é muito pequeno. Tamanho mínimo: ' + } + }, + fr: { + hint: 'Cliquez ou glissez le fichier ici.', + loading: 'Téléchargement…', + noSupported: 'Votre navigateur n\'est pas supporté. Utilisez IE10 + ou un autre navigateur s\'il vous plaît.', + success: 'Téléchargement réussit', + fail: 'Téléchargement echoué', + preview: 'Aperçu', + btn: { + off: 'Annuler', + close: 'Fermer', + back: 'Retour', + save: 'Enregistrer' + }, + error: { + onlyImg: 'Image uniquement', + outOfSize: 'L\'image sélectionnée dépasse la taille maximum: ', + lowestPx: 'L\'image sélectionnée est trop petite. Dimensions attendues: ' + } + }, + nl: { + hint: 'Klik hier of sleep een afbeelding in dit vlak', + loading: 'Uploaden…', + noSupported: 'Je browser wordt helaas niet ondersteund. Gebruik IE10+ of een andere browser.', + success: 'Upload succesvol', + fail: 'Upload mislukt', + preview: 'Voorbeeld', + btn: { + off: 'Annuleren', + close: 'Sluiten', + back: 'Terug', + save: 'Opslaan' + }, + error: { + onlyImg: 'Alleen afbeeldingen', + outOfSize: 'De afbeelding is groter dan: ', + lowestPx: 'De afbeelding is te klein! Minimale afmetingen: ' + } + }, + tr: { + hint: 'Tıkla veya yüklemek istediğini buraya sürükle', + loading: 'Yükleniyor…', + noSupported: 'Tarayıcı desteklenmiyor, lütfen IE10+ veya farklı tarayıcı kullanın', + success: 'Yükleme başarılı', + fail: 'Yüklemede hata oluştu', + preview: 'Önizle', + btn: { + off: 'İptal', + close: 'Kapat', + back: 'Geri', + save: 'Kaydet' + }, + error: { + onlyImg: 'Sadece resim', + outOfSize: 'Resim yükleme limitini aşıyor: ', + lowestPx: 'Resmin boyutu çok küçük. En az olması gereken: ' + } + }, + 'es-MX': { + hint: 'Selecciona o arrastra una imagen', + loading: 'Subiendo...', + noSupported: 'Tu navegador no es soportado, porfavor usa IE10+ u otros navegadores mas recientes', + success: 'Subido exitosamente', + fail: 'Sucedió un error', + preview: 'Vista previa', + btn: { + off: 'Cancelar', + close: 'Cerrar', + back: 'Atras', + save: 'Guardar' + }, + error: { + onlyImg: 'Unicamente imagenes', + outOfSize: 'La imagen excede el tamaño maximo:', + lowestPx: 'La imagen es demasiado pequeño. Se espera por lo menos:' + } + }, + de: { + hint: 'Klick hier oder zieh eine Datei hier rein zum Hochladen', + loading: 'Hochladen…', + noSupported: 'Browser wird nicht unterstützt, bitte verwende IE10+ oder andere Browser', + success: 'Upload erfolgreich', + fail: 'Upload fehlgeschlagen', + preview: 'Vorschau', + btn: { + off: 'Abbrechen', + close: 'Schließen', + back: 'Zurück', + save: 'Speichern' + }, + error: { + onlyImg: 'Nur Bilder', + outOfSize: 'Das Bild ist zu groß: ', + lowestPx: 'Das Bild ist zu klein. Mindestens: ' + } + }, + ja: { + hint: 'クリック・ドラッグしてファイルをアップロード', + loading: 'アップロード中...', + noSupported: 'このブラウザは対応されていません。IE10+かその他の主要ブラウザをお使いください。', + success: 'アップロード成功', + fail: 'アップロード失敗', + preview: 'プレビュー', + btn: { + off: 'キャンセル', + close: '閉じる', + back: '戻る', + save: '保存' + }, + error: { + onlyImg: '画像のみ', + outOfSize: '画像サイズが上限を超えています。上限: ', + lowestPx: '画像が小さすぎます。最小サイズ: ' + } + } +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/mimes.js b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/mimes.js new file mode 100644 index 0000000..e20c085 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/mimes.js @@ -0,0 +1,7 @@ +export default { + 'jpg': 'image/jpeg', + 'png': 'image/png', + 'gif': 'image/gif', + 'svg': 'image/svg+xml', + 'psd': 'image/photoshop' +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/JsonEditor/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/JsonEditor/index.vue new file mode 100644 index 0000000..c05b090 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/JsonEditor/index.vue @@ -0,0 +1,77 @@ +