From 90bb29426b6551755aac03dc5cc3d8ec2b0004c7 Mon Sep 17 00:00:00 2001 From: wushaochuan Date: Fri, 24 Feb 2023 13:47:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-end/.editorconfig | 14 + front-end/.env.development | 11 + front-end/.env.production | 11 + front-end/.env.qa | 11 + front-end/.env.staging | 8 + front-end/.env.test | 11 + front-end/.env.uat | 11 + front-end/.eslintignore | 5 + front-end/.eslintrc.js | 293 +++ front-end/.gitignore | 23 + front-end/.gitlab-ci.yml | 5 + front-end/.prettierrc.js | 13 + front-end/.travis.yml | 5 + front-end/LICENSE | 21 + front-end/README.md | 156 ++ front-end/babel.config.js | 23 + front-end/charts/ebc-front/Chart.yaml | 5 + front-end/charts/ebc-front/README.md | 56 + .../charts/ebc-front/templates/_helpers.tpl | 28 + .../ebc-front/templates/deployment.yaml | 95 + .../charts/ebc-front/templates/service.yaml | 41 + front-end/charts/ebc-front/values.yaml | 72 + front-end/docker/Dockerfile | 6 + front-end/fj.png | Bin 0 -> 29732 bytes front-end/fjxx.png | Bin 0 -> 3822 bytes front-end/getRouter.js | 131 + front-end/gzh.png | Bin 0 -> 19557 bytes front-end/jest.config.js | 24 + front-end/jsconfig.json | 9 + front-end/package.json | 153 ++ front-end/plopfile.js | 9 + front-end/postcss.config.js | 5 + front-end/public/favicon.ico | Bin 0 -> 2268 bytes front-end/public/index.html | 15 + front-end/public/loading.html | 17 + front-end/src/App.vue | 52 + front-end/src/api/afterApi/index.js | 15 + .../src/api/afterApi/internalRefundApi.js | 138 ++ front-end/src/api/afterApi/thirdRefundApi.js | 49 + front-end/src/api/authApi/index.js | 73 + front-end/src/api/baseDataApi/afterSaleApi.js | 41 + front-end/src/api/baseDataApi/codeRuleApi.js | 41 + front-end/src/api/baseDataApi/countryApi.js | 76 + front-end/src/api/baseDataApi/index.js | 16 + front-end/src/api/baseDataApi/lovApi.js | 45 + front-end/src/api/channelApi/companyApi.js | 13 + front-end/src/api/channelApi/dealerApi.js | 42 + front-end/src/api/channelApi/index.js | 21 + .../api/channelApi/salesOrganizationApi.js | 54 + front-end/src/api/channelApi/shopManageApi.js | 25 + front-end/src/api/channelApi/shopOnlineApi.js | 48 + .../src/api/channelApi/shopPhysicalApi.js | 41 + front-end/src/api/channelApi/warehouseApi.js | 46 + front-end/src/api/commonApi/areaApi.js | 64 + front-end/src/api/commonApi/index.js | 15 + front-end/src/api/commonApi/loginApi.js | 20 + front-end/src/api/commonApi/optionApi.js | 100 + front-end/src/api/commonApi/settingApi.js | 23 + front-end/src/api/financeApi/checkingApi.js | 22 + front-end/src/api/financeApi/index.js | 7 + .../src/api/financeApi/parseStrategyApi.js | 64 + front-end/src/api/goodsApi/attributeApi.js | 69 + .../src/api/goodsApi/attributeRelationApi.js | 34 + front-end/src/api/goodsApi/auditApi.js | 33 + front-end/src/api/goodsApi/brandApi.js | 33 + front-end/src/api/goodsApi/categoryApi.js | 59 + front-end/src/api/goodsApi/index.js | 33 + .../src/api/goodsApi/installServiceApi.js | 23 + front-end/src/api/goodsApi/managerApi.js | 39 + front-end/src/api/goodsApi/materialApi.js | 38 + front-end/src/api/goodsApi/otherInfoApi.js | 39 + front-end/src/api/goodsApi/priceApi.js | 75 + front-end/src/api/goodsApi/skuApi.js | 96 + front-end/src/api/goodsApi/skuGroupApi.js | 35 + front-end/src/api/goodsApi/spuSonApi.js | 34 + front-end/src/api/index.js | 59 + front-end/src/api/logisticApi/abnormalApi.js | 21 + front-end/src/api/logisticApi/businessApi.js | 20 + front-end/src/api/logisticApi/claimApi.js | 25 + front-end/src/api/logisticApi/companyApi.js | 20 + front-end/src/api/logisticApi/freightApi.js | 48 + front-end/src/api/logisticApi/index.js | 32 + front-end/src/api/logisticApi/mappingApi.js | 20 + front-end/src/api/logisticApi/orderApi.js | 21 + front-end/src/api/logisticApi/relationApi.js | 21 + front-end/src/api/menuApi/index.js | 34 + front-end/src/api/messageApi/emailApi.js | 36 + front-end/src/api/messageApi/index.js | 25 + front-end/src/api/messageApi/noticeApi.js | 29 + front-end/src/api/messageApi/sendApi.js | 61 + front-end/src/api/messageApi/smsApi.js | 34 + front-end/src/api/messageApi/templateApi.js | 80 + front-end/src/api/orderApi/auditApi.js | 46 + front-end/src/api/orderApi/index.js | 27 + front-end/src/api/orderApi/internalApi.js | 92 + front-end/src/api/orderApi/itemPriceApi.js | 10 + front-end/src/api/orderApi/preemptApi.js | 60 + front-end/src/api/orderApi/processApi.js | 18 + front-end/src/api/orderApi/sourcingApi.js | 120 + front-end/src/api/orderApi/stockoutApi.js | 27 + front-end/src/api/orderApi/thirdApi.js | 25 + front-end/src/api/promotionApi/index.js | 6 + .../src/api/promotionApi/promoActivityApi.js | 53 + front-end/src/api/reportApi/channelApi.js | 11 + front-end/src/api/reportApi/index.js | 7 + front-end/src/api/reportApi/orderApi.js | 17 + front-end/src/api/roleApi/index.js | 118 + front-end/src/api/settingApi/fileApi.js | 121 + front-end/src/api/settingApi/index.js | 33 + front-end/src/api/settingApi/indexes.js | 109 + front-end/src/api/settingApi/instanceApi.js | 30 + front-end/src/api/settingApi/logistics.js | 42 + .../src/api/settingApi/orderProcessApi.js | 32 + front-end/src/api/settingApi/reportApi.js | 147 ++ front-end/src/api/settingApi/schedulerApi.js | 220 ++ .../src/api/settingApi/stockProcessApi.js | 42 + front-end/src/api/settingApi/strategyApi.js | 28 + front-end/src/api/simpApi/index.js | 34 + front-end/src/api/stockApi/abnormalApi.js | 27 + .../src/api/stockApi/adjustRecordsApi.js | 32 + front-end/src/api/stockApi/changeRecordApi.js | 25 + front-end/src/api/stockApi/deliveryApi.js | 62 + .../src/api/stockApi/distributeSpaceApi.js | 50 + front-end/src/api/stockApi/entryApi.js | 34 + front-end/src/api/stockApi/goodsStocksApi.js | 20 + front-end/src/api/stockApi/index.js | 59 + front-end/src/api/stockApi/initializeApi.js | 36 + front-end/src/api/stockApi/moveRecordsApi.js | 27 + .../src/api/stockApi/noticeAndResultApi.js | 26 + .../src/api/stockApi/reserveRecordsApi.js | 25 + front-end/src/api/stockApi/rulesApi.js | 62 + front-end/src/api/stockApi/sourcingApi.js | 21 + front-end/src/api/stockApi/stockOutApi.js | 41 + front-end/src/api/stockApi/structureApi.js | 26 + front-end/src/api/stockApi/transferApi.js | 145 ++ front-end/src/api/stockApi/warehouseApi.js | 67 + .../src/api/stockApi/warehouseRelationApi.js | 107 + front-end/src/api/strategyApi/index.js | 28 + .../src/api/strategyApi/marketingAuditApi.js | 47 + front-end/src/api/strategyApi/sourceApi.js | 32 + front-end/src/api/tagsApi/index.js | 34 + front-end/src/api/tenantApi/index.js | 20 + front-end/src/api/testApi.js | 78 + front-end/src/api/userApi/index.js | 264 ++ front-end/src/api/userGroupApi/index.js | 142 ++ front-end/src/api/worksheetApi/index.js | 9 + front-end/src/api/worksheetApi/serviceApi.js | 23 + front-end/src/assets/401_images/401.gif | Bin 0 -> 164227 bytes front-end/src/assets/404_images/404.png | Bin 0 -> 98071 bytes front-end/src/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 front-end/src/assets/custom-theme/index.css | 1 + .../src/assets/image/contact-phone-white.png | Bin 0 -> 1555 bytes front-end/src/assets/image/contact-phone.png | Bin 0 -> 2438 bytes .../src/assets/image/contact-wx-white.png | Bin 0 -> 1650 bytes front-end/src/assets/image/contact-wx.png | Bin 0 -> 2057 bytes front-end/src/assets/image/favicon.png | Bin 0 -> 2268 bytes .../src/assets/image/login-background.jpg | Bin 0 -> 521275 bytes front-end/src/assets/image/logo-circle.png | Bin 0 -> 7645 bytes front-end/src/assets/image/logo.png | Bin 0 -> 3565 bytes front-end/src/assets/image/welcome.png | Bin 0 -> 218179 bytes front-end/src/assets/image/wx.png | Bin 0 -> 43657 bytes front-end/src/assets/image/微信/微信.png | Bin 0 -> 668 bytes front-end/src/assets/image/电话1/电话1.png | Bin 0 -> 1030 bytes front-end/src/assets/sys/下架出库.png | Bin 0 -> 3057 bytes front-end/src/assets/sys/订单出库.png | Bin 0 -> 4446 bytes front-end/src/assets/sys/退货入库.png | Bin 0 -> 5874 bytes front-end/src/assets/sys/采购入库.png | Bin 0 -> 3731 bytes .../src/directive/clipboard/clipboard.js | 49 + front-end/src/directive/clipboard/index.js | 13 + .../src/directive/el-drag-dialog/drag.js | 77 + .../src/directive/el-drag-dialog/index.js | 13 + front-end/src/directive/el-table/adaptive.js | 41 + front-end/src/directive/el-table/index.js | 13 + .../src/directive/permission/draggable.js | 47 + .../permission/hasDropdownChildren.js | 7 + .../src/directive/permission/hasPermi.js | 0 front-end/src/directive/permission/hasRole.js | 24 + front-end/src/directive/permission/index.js | 19 + .../src/directive/permission/permission.js | 25 + front-end/src/directive/sticky.js | 91 + front-end/src/directive/waves/index.js | 13 + front-end/src/directive/waves/waves.css | 26 + front-end/src/directive/waves/waves.js | 72 + front-end/src/filters/index.js | 81 + front-end/src/icons/index.js | 9 + front-end/src/icons/svg/404.svg | 1 + front-end/src/icons/svg/bug.svg | 1 + front-end/src/icons/svg/build.svg | 1 + front-end/src/icons/svg/business-center.svg | 4 + front-end/src/icons/svg/cascader.svg | 1 + front-end/src/icons/svg/chart.svg | 1 + front-end/src/icons/svg/checkbox.svg | 1 + front-end/src/icons/svg/clipboard.svg | 1 + front-end/src/icons/svg/code.svg | 1 + front-end/src/icons/svg/color.svg | 1 + front-end/src/icons/svg/component.svg | 1 + front-end/src/icons/svg/dashboard.svg | 1 + front-end/src/icons/svg/date-range.svg | 1 + front-end/src/icons/svg/date.svg | 1 + front-end/src/icons/svg/dict.svg | 1 + front-end/src/icons/svg/documentation.svg | 1 + front-end/src/icons/svg/download.svg | 1 + front-end/src/icons/svg/drag.svg | 1 + front-end/src/icons/svg/druid.svg | 1 + front-end/src/icons/svg/edit.svg | 1 + front-end/src/icons/svg/education.svg | 1 + front-end/src/icons/svg/email.svg | 1 + front-end/src/icons/svg/example.svg | 1 + front-end/src/icons/svg/excel.svg | 1 + front-end/src/icons/svg/exit-fullscreen.svg | 1 + front-end/src/icons/svg/eye-open.svg | 1 + front-end/src/icons/svg/eye.svg | 1 + front-end/src/icons/svg/form.svg | 1 + front-end/src/icons/svg/fullscreen.svg | 1 + front-end/src/icons/svg/github.svg | 1 + front-end/src/icons/svg/guide.svg | 1 + front-end/src/icons/svg/html.svg | 1 + front-end/src/icons/svg/icon.svg | 1 + front-end/src/icons/svg/input.svg | 1 + front-end/src/icons/svg/international.svg | 1 + front-end/src/icons/svg/job.svg | 1 + front-end/src/icons/svg/language.svg | 1 + front-end/src/icons/svg/link.svg | 1 + front-end/src/icons/svg/list.svg | 1 + front-end/src/icons/svg/lock.svg | 1 + front-end/src/icons/svg/log.svg | 1 + front-end/src/icons/svg/logininfor.svg | 1 + front-end/src/icons/svg/logout.svg | 2 + front-end/src/icons/svg/message.svg | 1 + front-end/src/icons/svg/money.svg | 1 + front-end/src/icons/svg/monitor.svg | 2 + front-end/src/icons/svg/more.svg | 3 + front-end/src/icons/svg/nested.svg | 1 + front-end/src/icons/svg/number.svg | 1 + front-end/src/icons/svg/online.svg | 1 + front-end/src/icons/svg/password.svg | 1 + front-end/src/icons/svg/pdf.svg | 1 + front-end/src/icons/svg/people.svg | 1 + front-end/src/icons/svg/peoples.svg | 1 + front-end/src/icons/svg/phone.svg | 1 + front-end/src/icons/svg/pointer.svg | 2 + front-end/src/icons/svg/post.svg | 1 + front-end/src/icons/svg/qq.svg | 1 + front-end/src/icons/svg/question.svg | 1 + front-end/src/icons/svg/radio.svg | 1 + front-end/src/icons/svg/rate.svg | 1 + front-end/src/icons/svg/row.svg | 1 + front-end/src/icons/svg/search.svg | 1 + front-end/src/icons/svg/select.svg | 1 + front-end/src/icons/svg/server.svg | 1 + front-end/src/icons/svg/setting-center.svg | 4 + front-end/src/icons/svg/shopping.svg | 1 + front-end/src/icons/svg/size.svg | 1 + front-end/src/icons/svg/skill.svg | 1 + front-end/src/icons/svg/slider.svg | 1 + front-end/src/icons/svg/star.svg | 1 + front-end/src/icons/svg/swagger.svg | 1 + front-end/src/icons/svg/switch.svg | 1 + front-end/src/icons/svg/system.svg | 2 + front-end/src/icons/svg/tab.svg | 1 + front-end/src/icons/svg/table.svg | 1 + front-end/src/icons/svg/textarea.svg | 1 + front-end/src/icons/svg/theme.svg | 1 + front-end/src/icons/svg/time-range.svg | 1 + front-end/src/icons/svg/time.svg | 1 + front-end/src/icons/svg/tool.svg | 1 + front-end/src/icons/svg/tree-table.svg | 1 + front-end/src/icons/svg/tree.svg | 1 + front-end/src/icons/svg/upload.svg | 1 + front-end/src/icons/svg/user.svg | 2 + front-end/src/icons/svg/validCode.svg | 1 + front-end/src/icons/svg/wechat.svg | 1 + front-end/src/icons/svg/word.svg | 1 + front-end/src/icons/svg/zip.svg | 1 + front-end/src/icons/svgo.yml | 22 + front-end/src/layout/EmptyRouter.vue | 33 + front-end/src/layout/EmptyRouterAlive.vue | 35 + front-end/src/layout/components/AppMain.vue | 51 + .../src/layout/components/Contact/index.vue | 111 + front-end/src/layout/components/Navbar.vue | 207 ++ .../src/layout/components/Settings/index.vue | 108 + .../layout/components/Sidebar/FixiOSBug.js | 26 + .../layout/components/Sidebar/HoverItem.vue | 285 +++ .../src/layout/components/Sidebar/Item.vue | 123 + .../src/layout/components/Sidebar/Link.vue | 43 + .../src/layout/components/Sidebar/Logo.vue | 150 ++ .../layout/components/Sidebar/SidebarItem.vue | 141 ++ .../src/layout/components/Sidebar/index.vue | 92 + .../layout/components/TagsView/ScrollPane.vue | 94 + .../src/layout/components/TagsView/index.vue | 358 +++ .../layout/components/WelcomeDialog/index.vue | 108 + front-end/src/layout/components/index.js | 7 + front-end/src/layout/index.vue | 117 + front-end/src/layout/mixin/ResizeHandler.js | 49 + front-end/src/main.js | 128 + .../src/packages/BjCheckboxLov/index.vue | 129 + front-end/src/packages/BjCopyIcon/index.vue | 32 + .../src/packages/BjDateTimerPicker/index.vue | 117 + front-end/src/packages/BjDialog/index.vue | 122 + front-end/src/packages/BjDialogList/index.vue | 490 ++++ .../src/packages/BjDialogTable/index.vue | 566 +++++ front-end/src/packages/BjDivider/index.vue | 137 ++ front-end/src/packages/BjDrawerForm/index.vue | 155 ++ front-end/src/packages/BjImportFile/index.vue | 184 ++ front-end/src/packages/BjInputCode/index.vue | 105 + front-end/src/packages/BjInputMoney/index.vue | 81 + .../src/packages/BjInputNumber/index.vue | 181 ++ .../src/packages/BjPagingTable/README.md | 25 + .../src/packages/BjPagingTable/index.vue | 275 +++ front-end/src/packages/BjRadioLov/index.vue | 130 + front-end/src/packages/BjRouteTabs/index.vue | 131 + .../src/packages/BjSelectChinaArea/index.vue | 153 ++ front-end/src/packages/BjSelectLov/index.vue | 200 ++ .../src/packages/BjSelectProvinces/index.vue | 203 ++ front-end/src/packages/BjTag/index.vue | 108 + front-end/src/packages/BjTagList/index.vue | 89 + front-end/src/packages/BjTextarea/index.vue | 62 + front-end/src/packages/BjUpload/index.vue | 152 ++ front-end/src/packages/README.md | 32 + front-end/src/packages/ScrollLoad/README.md | 40 + front-end/src/packages/ScrollLoad/index.js | 105 + front-end/src/packages/ScrollSelect/README.md | 100 + front-end/src/packages/ScrollSelect/index.vue | 289 +++ front-end/src/packages/index.js | 105 + front-end/src/packages/package.json | 12 + front-end/src/permission.js | 105 + front-end/src/permissionOS.json | 2134 +++++++++++++++++ front-end/src/router/center-business/after.js | 208 ++ .../src/router/center-business/channel.js | 203 ++ front-end/src/router/center-business/goods.js | 757 ++++++ front-end/src/router/center-business/index.js | 42 + front-end/src/router/center-business/label.js | 84 + front-end/src/router/center-business/log.js | 53 + front-end/src/router/center-business/order.js | 92 + front-end/src/router/center-business/stock.js | 206 ++ front-end/src/router/center-business/user.js | 197 ++ .../src/router/center-business/worksheet.js | 62 + front-end/src/router/center-setting/after.js | 55 + .../src/router/center-setting/base-data.js | 278 +++ front-end/src/router/center-setting/file.js | 172 ++ front-end/src/router/center-setting/goods.js | 45 + front-end/src/router/center-setting/index.js | 47 + .../src/router/center-setting/indexes.js | 155 ++ .../src/router/center-setting/instance.js | 34 + .../src/router/center-setting/message.js | 175 ++ .../src/router/center-setting/scheduler.js | 158 ++ front-end/src/router/center-setting/user.js | 120 + front-end/src/router/index.js | 325 +++ front-end/src/settings.js | 35 + front-end/src/store/getters.js | 22 + front-end/src/store/index.js | 25 + front-end/src/store/modules/app.js | 204 ++ front-end/src/store/modules/errorLog.js | 28 + front-end/src/store/modules/fileUrl.js | 107 + front-end/src/store/modules/permission.js | 145 ++ front-end/src/store/modules/settings.js | 34 + front-end/src/store/modules/tagsView.js | 254 ++ front-end/src/store/modules/user.js | 294 +++ front-end/src/store/modules/values.js | 334 +++ front-end/src/styles/btn.scss | 103 + front-end/src/styles/element-ui.scss | 108 + front-end/src/styles/element-variables.scss | 36 + front-end/src/styles/index.scss | 728 ++++++ front-end/src/styles/mixin.scss | 66 + front-end/src/styles/ruoyi.scss | 274 +++ front-end/src/styles/shop.scss | 44 + front-end/src/styles/sidebar.scss | 253 ++ front-end/src/styles/transition.scss | 48 + front-end/src/styles/variables.scss | 58 + front-end/src/utils/BjDialogListConfig.js | 688 ++++++ front-end/src/utils/auth.js | 15 + front-end/src/utils/axios.js | 54 + front-end/src/utils/bpmn/customTranslate.js | 25 + front-end/src/utils/bpmn/defalutXml.js | 17 + .../src/utils/bpmn/translationsGerman.js | 239 ++ front-end/src/utils/clipboard.js | 32 + front-end/src/utils/constants.js | 1265 ++++++++++ front-end/src/utils/error-log.js | 35 + front-end/src/utils/get-page-title.js | 10 + front-end/src/utils/index.js | 911 +++++++ front-end/src/utils/jumper2router.js | 150 ++ front-end/src/utils/open-window.js | 25 + front-end/src/utils/page-mixin.js | 161 ++ front-end/src/utils/permission.js | 21 + front-end/src/utils/prototype-native.js | 39 + front-end/src/utils/prototype-vue.js | 85 + front-end/src/utils/request.js | 387 +++ front-end/src/utils/scroll-to.js | 58 + front-end/src/utils/validate.js | 299 +++ front-end/src/utils/view-mixin.js | 107 + front-end/src/vendor/Export2Excel.js | 220 ++ front-end/src/vendor/Export2Zip.js | 24 + .../after/components/BaseInfoDialog.vue | 133 + .../after/components/InternalOrderList.vue | 181 ++ .../after/components/LogisticsInfoDialog.vue | 150 ++ .../after/components/LogisticsListDialog.vue | 52 + .../components/ReceivingWarehouseDialog.vue | 80 + .../after/components/SkuList.vue | 203 ++ .../after/components/UploadImgDialog.vue | 108 + .../center-business/after/components/api.js | 152 ++ .../after/internal/exchange/add.vue | 242 ++ .../after/internal/exchange/data.json | 27 + .../after/internal/exchange/index.vue | 297 +++ .../after/internal/exchange/view.vue | 387 +++ .../after/internal/refund/add.vue | 615 +++++ .../after/internal/refund/data.json | 96 + .../after/internal/refund/index.vue | 307 +++ .../after/internal/refund/view.vue | 922 +++++++ .../after/internal/return/add.vue | 787 ++++++ .../after/internal/return/data.json | 67 + .../after/internal/return/index.vue | 333 +++ .../after/internal/return/view.vue | 1051 ++++++++ .../after/third/exchange/data.json | 25 + .../after/third/exchange/index.vue | 354 +++ .../after/third/exchange/view.vue | 198 ++ .../after/third/refund/add.vue | 550 +++++ .../after/third/refund/components/SkuList.vue | 140 ++ .../after/third/refund/data.json | 95 + .../after/third/refund/index.vue | 303 +++ .../after/third/refund/view.vue | 381 +++ .../after/third/return/add.vue | 679 ++++++ .../after/third/return/data.json | 24 + .../after/third/return/index.vue | 303 +++ .../after/third/return/view.vue | 460 ++++ .../channel/dealer/components/DataForm.vue | 126 + .../center-business/channel/dealer/index.vue | 272 +++ .../channel/online/components/DataForm.vue | 204 ++ .../center-business/channel/online/index.vue | 430 ++++ .../channel/physical/components/DataForm.vue | 242 ++ .../channel/physical/index.vue | 337 +++ .../channel/storage/components/DataForm.vue | 226 ++ .../center-business/channel/storage/index.vue | 275 +++ .../goods/audit/components/dataForm.vue | 80 + .../goods/audit/components/dialogIdea.vue | 54 + .../goods/audit/sku/components/DialogIdea.vue | 54 + .../sku/components/PageOrdinaryPackage.vue | 252 ++ .../components/RowDetailFromSkuDetailList.vue | 55 + .../goods/audit/sku/components/ViewForm.vue | 520 ++++ .../goods/audit/sku/ordinary/audit.vue | 20 + .../goods/audit/sku/ordinary/index.vue | 21 + .../goods/audit/sku/ordinary/view.vue | 20 + .../goods/audit/sku/package/audit.vue | 20 + .../goods/audit/sku/package/index.vue | 21 + .../goods/audit/sku/package/view.vue | 20 + .../goods/brand/components/DataForm.vue | 157 ++ .../center-business/goods/brand/index.vue | 273 +++ .../goods/classify/components/DataForm.vue | 182 ++ .../center-business/goods/classify/index.vue | 441 ++++ .../components/DefaultAttributeList.json | 46 + .../goods/components/GoodsAttribute.vue | 545 +++++ .../goods/components/GoodsAttributeList.vue | 266 ++ .../goods/components/README.md | 14 + .../goods/material/components/DataForm.vue | 267 +++ .../center-business/goods/material/index.vue | 229 ++ .../center-business/goods/otherInfo/add.vue | 20 + .../goods/otherInfo/components/ViewForm.vue | 410 ++++ .../center-business/goods/otherInfo/edit.vue | 36 + .../center-business/goods/otherInfo/index.vue | 197 ++ .../price/components/tableView/index.vue | 130 + .../goods/price/history/index.vue | 123 + .../goods/price/item/index.vue | 343 +++ .../center-business/goods/price/sku/add.vue | 15 + .../goods/price/sku/components/DataForm.vue | 65 + .../center-business/goods/price/sku/edit.vue | 270 +++ .../center-business/goods/price/sku/index.vue | 244 ++ .../goods/sku/components/AttributeInput.vue | 182 ++ .../goods/sku/components/ColumnSetting.vue | 148 ++ .../goods/sku/components/DataForm.vue | 98 + .../sku/components/PageOrdinaryPackage.vue | 585 +++++ .../goods/sku/components/SkuRowData.vue | 96 + .../goods/sku/components/ViewForm.vue | 489 ++++ .../goods/sku/components/addForm.vue | 1347 +++++++++++ .../center-business/goods/sku/draft/index.vue | 18 + .../goods/sku/ordinary/add.vue | 25 + .../goods/sku/ordinary/edit.vue | 28 + .../goods/sku/ordinary/index.vue | 21 + .../goods/sku/ordinary/view.vue | 21 + .../center-business/goods/sku/package/add.vue | 25 + .../goods/sku/package/edit.vue | 28 + .../goods/sku/package/index.vue | 21 + .../goods/sku/package/view.vue | 21 + .../spu/components/PageOrdinaryPackage.vue | 395 +++ .../goods/spu/components/viewForm.vue | 362 +++ .../goods/spu/ordinary/add.vue | 14 + .../goods/spu/ordinary/edit.vue | 40 + .../goods/spu/ordinary/index.vue | 21 + .../goods/spu/ordinary/view.vue | 45 + .../center-business/goods/spu/package/add.vue | 14 + .../goods/spu/package/edit.vue | 35 + .../goods/spu/package/index.vue | 21 + .../goods/spu/package/view.vue | 45 + .../goods/virtual/install-service/add.vue | 20 + .../install-service/components/ViewForm.vue | 412 ++++ .../goods/virtual/install-service/edit.vue | 35 + .../goods/virtual/install-service/index.vue | 243 ++ .../goods/virtual/install-service/view.vue | 35 + .../goods/virtual/sku-group/add.vue | 20 + .../virtual/sku-group/components/ViewForm.vue | 429 ++++ .../goods/virtual/sku-group/edit.vue | 35 + .../goods/virtual/sku-group/index.vue | 207 ++ .../goods/virtual/sku-group/view.vue | 35 + .../goods/virtual/spu-son/add.vue | 20 + .../virtual/spu-son/components/ViewForm.vue | 427 ++++ .../goods/virtual/spu-son/edit.vue | 35 + .../goods/virtual/spu-son/index.vue | 207 ++ .../goods/virtual/spu-son/view.vue | 35 + .../label/hand/components/DataForm.vue | 180 ++ .../label/hand/components/Page.vue | 380 +++ .../center-business/label/hand/index.vue | 13 + .../views/center-business/label/sys/index.vue | 13 + .../abnormal/components/setWarnDialog.vue | 81 + .../order/abnormal/syncAbnormal.vue | 203 ++ .../order/abnormal/warning.vue | 223 ++ .../order/components/BjOrderStatus/index.vue | 58 + .../order/components/EditTags/index.vue | 76 + .../order/components/FiveFlag/index.vue | 61 + .../order/components/LogTable/index.js | 17 + .../order/components/LogTable/log.vue | 98 + .../center-business/order/internal/add.vue | 20 + .../order/internal/components/AddForm.vue | 900 +++++++ .../components/EditReceiverInfo/index.vue | 156 ++ .../internal/components/EditRemarks/index.vue | 115 + .../components/GoodsInfoTab/SkuLineList.vue | 212 ++ .../components/GoodsInfoTab/SkuList.vue | 387 +++ .../components/GoodsInfoTab/index.vue | 209 ++ .../LogisticsTable/DeliverTable.vue | 90 + .../LogisticsTable/PackageTable.vue | 104 + .../LogisticsTable/ParcelDetails.vue | 89 + .../components/LogisticsTable/index.vue | 26 + .../components/O2oConfirmReceipt/index.vue | 113 + .../order/internal/components/O2oViewForm.vue | 1017 ++++++++ .../components/OrderItemTable/index.vue | 292 +++ .../order/internal/components/PageIndex.vue | 949 ++++++++ .../components/SuspendReason/index.vue | 120 + .../order/internal/components/ViewForm.vue | 999 ++++++++ .../center-business/order/internal/data.json | 442 ++++ .../center-business/order/internal/index.vue | 21 + .../center-business/order/internal/view.vue | 20 + .../views/center-business/order/third/add.vue | 20 + .../order/third/components/AddForm.vue | 843 +++++++ .../third/components/OrderItemTable/index.vue | 171 ++ .../order/third/components/PageIndex.vue | 436 ++++ .../order/third/components/ViewForm.vue | 498 ++++ .../order/third/components/dialogForm.vue | 111 + .../center-business/order/third/data.json | 375 +++ .../center-business/order/third/index.vue | 20 + .../center-business/order/third/view.vue | 20 + .../center-business/source/area/index.vue | 205 ++ .../source/components/viewForm.vue | 150 ++ .../source/parcel/components/dialogForm.vue | 92 + .../source/parcel/components/sendOut.vue | 130 + .../source/parcel/components/sendOut2.vue | 216 ++ .../parcel/components/setMealSeparate.vue | 94 + .../center-business/source/parcel/index.vue | 247 ++ .../stock/abnormal/components/allot.vue | 182 ++ .../stock/abnormal/components/purchase.vue | 123 + .../stock/abnormal/order/index.vue | 239 ++ .../stock/abnormal/warehouse/index.vue | 236 ++ .../center-business/stock/change/index.vue | 386 +++ .../components/DialogStockoutOrderAllot.vue | 175 ++ .../stock/delivery/components/tableDialog.vue | 47 + .../stock/delivery/inform/index.vue | 227 ++ .../stock/delivery/inform/view.vue | 229 ++ .../stock/delivery/result/index.vue | 208 ++ .../stock/delivery/result/view.vue | 161 ++ .../stock/distribution/plan/add.vue | 20 + .../distribution/plan/components/ViewForm.vue | 434 ++++ .../stock/distribution/plan/edit.vue | 36 + .../stock/distribution/plan/index.vue | 347 +++ .../stock/distribution/plan/view.vue | 37 + .../stock/distribution/qty/addSku.vue | 534 +++++ .../stock/distribution/qty/addWarehouse.vue | 433 ++++ .../distribution/qty/components/ViewForm.vue | 432 ++++ .../stock/distribution/qty/edit.vue | 36 + .../stock/distribution/qty/index.vue | 317 +++ .../stock/distribution/qty/view.vue | 37 + .../stock/distribution/ratio/addSku.vue | 555 +++++ .../stock/distribution/ratio/addWarehouse.vue | 419 ++++ .../ratio/components/ViewForm.vue | 424 ++++ .../stock/distribution/ratio/edit.vue | 36 + .../stock/distribution/ratio/index.vue | 260 ++ .../stock/distribution/ratio/view.vue | 37 + .../stock/entry/inform/index.vue | 225 ++ .../stock/entry/inform/view.vue | 252 ++ .../stock/entry/result/index.vue | 220 ++ .../stock/entry/result/view.vue | 227 ++ .../views/center-business/stock/out/add.vue | 316 +++ .../views/center-business/stock/out/index.vue | 325 +++ .../center-business/stock/search/index.vue | 218 ++ .../stock/synchronization/add.vue | 210 ++ .../stock/synchronization/index.vue | 279 +++ .../stock/transfer/logic/add.vue | 20 + .../transfer/logic/components/ViewForm.vue | 365 +++ .../stock/transfer/logic/edit.vue | 36 + .../stock/transfer/logic/index.vue | 328 +++ .../stock/transfer/logic/view.vue | 42 + .../stock/transfer/virtual/add.vue | 20 + .../transfer/virtual/components/ViewForm.vue | 435 ++++ .../stock/transfer/virtual/edit.vue | 37 + .../stock/transfer/virtual/index.vue | 329 +++ .../stock/transfer/virtual/view.vue | 43 + .../autoReplenish/components/tableData.vue | 607 +++++ .../onlineStore/components/DataForm.vue | 98 + .../autoReplenish/onlineStore/index.vue | 285 +++ .../order/components/DialogForm.vue | 63 + .../strategy/autoReplenish/order/index.vue | 269 +++ .../center-business/user/account/add.vue | 42 + .../center-business/user/account/allot.vue | 255 ++ .../components/DialogCompany/index.vue | 135 ++ .../account/components/viewForm/index.vue | 431 ++++ .../center-business/user/account/edit.vue | 171 ++ .../center-business/user/account/index.vue | 470 ++++ .../views/center-business/user/data/add.vue | 0 .../views/center-business/user/data/index.vue | 247 ++ .../views/center-business/user/group/edit.vue | 312 +++ .../center-business/user/group/index.vue | 301 +++ .../views/center-business/user/role/add.vue | 221 ++ .../center-business/user/role/allotData.vue | 244 ++ .../center-business/user/role/allotMenu.vue | 154 ++ .../center-business/user/role/allotUser.vue | 242 ++ .../views/center-business/user/role/index.vue | 494 ++++ .../center-business/user/role/menuData.vue | 129 + .../worksheet/service/components/DataForm.vue | 252 ++ .../worksheet/service/index.vue | 197 ++ .../worksheet/service/view.vue | 83 + .../components/DataForm.vue | 118 + .../base-data/after-sales-reason/refund.vue | 298 +++ .../base-data/after-sales-reason/return.vue | 299 +++ .../code-rule/components/DataForm.vue | 121 + .../code-rule/components/DataFormRuleDist.vue | 209 ++ .../code-rule/components/ViewForm.vue | 277 +++ .../base-data/code-rule/edit.vue | 36 + .../base-data/code-rule/index.vue | 240 ++ .../base-data/country/components/DataForm.vue | 137 ++ .../base-data/country/index.vue | 204 ++ .../base-data/lov/components/DataForm.vue | 122 + .../center-setting/base-data/lov/index.vue | 295 +++ .../base-data/region/components/DataForm.vue | 149 ++ .../center-setting/base-data/region/index.vue | 257 ++ .../file/search/components/DataForm.vue | 124 + .../center-setting/file/search/index.vue | 360 +++ .../file/storage/components/DataForm.vue | 233 ++ .../center-setting/file/storage/index.vue | 230 ++ .../upload-config/components/DataForm.vue | 169 ++ .../file/upload-config/index.vue | 187 ++ .../center-setting/file/upload-ram/index.vue | 161 ++ .../goods/audit/strategy/index.vue | 127 + .../indexes/components/BjCodeSelect/index.vue | 106 + .../center-setting/indexes/inquiry/add.vue | 23 + .../indexes/inquiry/components/condition.vue | 68 + .../indexes/inquiry/components/fieldList.vue | 111 + .../inquiry/components/inquiryOperate.vue | 282 +++ .../center-setting/indexes/inquiry/edit.vue | 23 + .../center-setting/indexes/inquiry/index.vue | 258 ++ .../views/center-setting/indexes/list/add.vue | 22 + .../indexes/list/components/details.vue | 229 ++ .../center-setting/indexes/list/edit.vue | 22 + .../center-setting/indexes/list/index.vue | 234 ++ .../views/center-setting/indexes/sync/add.vue | 22 + .../indexes/sync/components/syncOperate.vue | 256 ++ .../center-setting/indexes/sync/edit.vue | 22 + .../center-setting/indexes/sync/index.vue | 208 ++ .../components/instance-detail/index.vue | 253 ++ .../components/instance-img/index.vue | 214 ++ .../center-setting/instance/manage/index.vue | 234 ++ .../center-setting/manage/audit/index.vue | 32 + .../center-setting/manage/cancel/index.vue | 32 + .../center-setting/manage/search/index.vue | 32 + .../menu/components/DataForm.vue | 139 ++ .../menu/components/PermissionSelect.vue | 133 + .../src/views/center-setting/menu/index.vue | 238 ++ .../center-setting/message/email/add.vue | 20 + .../message/email/components/ConfigDialog.vue | 56 + .../message/email/components/DrawerTable.vue | 230 ++ .../message/email/components/ViewForm.vue | 328 +++ .../center-setting/message/email/edit.vue | 36 + .../center-setting/message/email/index.vue | 190 ++ .../center-setting/message/notice/add.vue | 20 + .../message/notice/components/ViewForm.vue | 218 ++ .../center-setting/message/notice/edit.vue | 36 + .../center-setting/message/notice/index.vue | 296 +++ .../views/center-setting/message/send/add.vue | 20 + .../message/send/components/DataForm.vue | 242 ++ .../message/send/components/ViewDataForm.vue | 279 +++ .../message/send/components/ViewForm.vue | 332 +++ .../center-setting/message/send/edit.vue | 46 + .../center-setting/message/send/index.vue | 223 ++ .../message/sms/components/DataForm.vue | 187 ++ .../center-setting/message/sms/index.vue | 218 ++ .../center-setting/message/template/add.vue | 20 + .../template/components/DrawerTable.vue | 245 ++ .../message/template/components/ViewForm.vue | 231 ++ .../center-setting/message/template/edit.vue | 36 + .../center-setting/message/template/index.vue | 188 ++ .../concurrent/components/DataForm.vue | 366 +++ .../scheduler/concurrent/index.vue | 347 +++ .../executable/components/DataForm.vue | 189 ++ .../scheduler/executable/index.vue | 222 ++ .../executor/components/DataForm.vue | 208 ++ .../executor/components/ExecutorsConfig.vue | 217 ++ .../scheduler/executor/index.vue | 275 +++ .../center-setting/scheduler/log/index.vue | 239 ++ .../center-setting/scheduler/request/add.vue | 20 + .../scheduler/request/components/DataForm.vue | 188 ++ .../scheduler/request/components/ViewForm.vue | 526 ++++ .../center-setting/scheduler/request/edit.vue | 36 + .../scheduler/request/index.vue | 255 ++ .../scheduler/request/permissions.vue | 139 ++ .../scheduler/task/components/DataForm.vue | 218 ++ .../center-setting/scheduler/task/index.vue | 299 +++ .../statement/base/components/Field/index.vue | 102 + .../statement/base/components/Log/index.vue | 50 + .../statement/base/components/Shop/index.vue | 65 + .../center-setting/statement/base/index.vue | 111 + .../strategy/components/DataForm.vue | 287 +++ .../statement/strategy/index.vue | 195 ++ .../statement/strategy/view.vue | 42 + .../src/views/center-setting/tenant/add.vue | 20 + .../tenant/components/ViewForm.vue | 308 +++ .../src/views/center-setting/tenant/edit.vue | 36 + .../src/views/center-setting/tenant/index.vue | 183 ++ .../center-setting/user/account/strategy.vue | 327 +++ .../user/organization/company.vue | 402 ++++ .../user/organization/components/DataForm.vue | 179 ++ .../user/organization/group.vue | 182 ++ .../dashboard/admin/components/BarChart.vue | 102 + .../dashboard/admin/components/BoxCard.vue | 114 + .../dashboard/admin/components/LineChart.vue | 135 ++ .../dashboard/admin/components/PanelGroup.vue | 181 ++ .../dashboard/admin/components/PieChart.vue | 79 + .../admin/components/RaddarChart.vue | 116 + .../admin/components/TodoList/Todo.vue | 81 + .../admin/components/TodoList/index.scss | 320 +++ .../admin/components/TodoList/index.vue | 127 + .../admin/components/TransactionTable.vue | 53 + .../admin/components/mixins/resize.js | 55 + .../views/common/dashboard/admin/index.vue | 116 + .../views/common/dashboard/editor/index.vue | 74 + .../src/views/common/dashboard/index.vue | 38 + front-end/src/views/common/error-page/401.vue | 97 + front-end/src/views/common/error-page/404.vue | 227 ++ .../src/views/common/login/auth-redirect.vue | 254 ++ front-end/src/views/common/login/index.vue | 337 +++ .../personal/components/rowText/index.vue | 80 + front-end/src/views/common/personal/index.vue | 638 +++++ front-end/src/views/common/redirect/index.vue | 13 + front-end/src/views/icons/element-icons.js | 3 + front-end/src/views/icons/index.vue | 104 + front-end/src/views/icons/svg-icons.js | 10 + .../views/test/components/endpoint/index.vue | 37 + front-end/src/views/test/empty.vue | 33 + front-end/src/views/test/index copy.vue | 674 ++++++ front-end/src/views/test/index cory1.vue | 614 +++++ front-end/src/views/test/index.vue | 116 + front-end/src/views/test/index11.vue | 157 ++ front-end/tests/unit/.eslintrc.js | 5 + .../tests/unit/components/Hamburger.spec.js | 18 + .../tests/unit/components/SvgIcon.spec.js | 22 + front-end/tests/unit/utils/formatTime.spec.js | 29 + front-end/tests/unit/utils/param2Obj.spec.js | 14 + front-end/tests/unit/utils/parseTime.spec.js | 37 + front-end/tests/unit/utils/validate.spec.js | 28 + front-end/vue.config.js | 222 ++ front-end/we.png | Bin 0 -> 36550 bytes front-end/业务架构.png | Bin 0 -> 185682 bytes front-end/云原生.png | Bin 0 -> 90390 bytes front-end/夯实数字化基座.png | Bin 0 -> 67317 bytes front-end/库存共享.png | Bin 0 -> 205728 bytes front-end/开发.png | Bin 0 -> 96551 bytes front-end/强大的技术与架构.png | Bin 0 -> 61051 bytes front-end/技术支持.png | Bin 0 -> 77968 bytes front-end/技术架构.png | Bin 0 -> 181638 bytes front-end/测试.png | Bin 0 -> 100824 bytes front-end/部署.png | Bin 0 -> 145009 bytes skyer-after-sales/.gitignore | 103 + skyer-after-sales/.gitlab-ci.yml | 11 + .../charts/skyer-after-sales/Chart.yaml | 5 + .../charts/skyer-after-sales/README.md | 81 + .../skyer-after-sales/templates/_helpers.tpl | 28 + .../templates/deployment.yaml | 121 + .../skyer-after-sales/templates/service.yaml | 41 + .../charts/skyer-after-sales/values.yaml | 138 ++ skyer-after-sales/docker/Dockerfile | 6 + skyer-after-sales/init-local-database.sh | 13 + skyer-after-sales/pom.xml | 321 +++ .../afterSales/AfterSalesApplication.java | 24 + .../controller/v1/InstallOrderController.java | 82 + .../v1/LogisticsCompanyController.java | 83 + .../app/service/InstallOrderService.java | 67 + .../app/service/LogisticsCompanyService.java | 67 + .../service/impl/InstallOrderServiceImpl.java | 153 ++ .../impl/LogisticsCompanyServiceImpl.java | 140 ++ .../config/AfterSalesExtraDataManager.java | 34 + .../config/AfterSalesSwaggerApiConfig.java | 28 + .../domain/dto/InstallOrderDTO.java | 64 + .../domain/dto/LogisticsCompanyDTO.java | 36 + .../domain/dto/MultiCodeDelDTO.java | 20 + .../afterSales/domain/dto/MultiDelDTO.java | 20 + .../domain/dto/PageInstallOrderDTO.java | 18 + .../domain/dto/PageLogisticsCompanyDTO.java | 17 + .../domain/entity/InstallOrder.java | 241 ++ .../domain/entity/LogisticsCompany.java | 136 ++ .../repository/InstallOrderRepository.java | 13 + .../LogisticsCompanyRepository.java | 13 + .../infra/annocations/DatasourceType.java | 23 + .../infra/feign/UserDetailRemoteService.java | 36 + .../impl/UserDetailRemoteServiceImpl.java | 24 + .../infra/mapper/InstallOrderMapper.java | 13 + .../infra/mapper/LogisticsCompanyMapper.java | 13 + .../properties/AfterSalesProperties.java | 118 + .../properties/DataHierarchyProperties.java | 19 + .../remote/api/RemoteCustomizeService.java | 39 + .../api/impl/RemoteCustomizeServiceImpl.java | 141 ++ .../impl/InstallOrderRepositoryImpl.java | 17 + .../impl/LogisticsCompanyRepositoryImpl.java | 17 + .../AfterSalesAutoConfiguration.java | 53 + .../afterSales/EnableSkyerAfterSales.java | 15 + .../src/main/resources/application.yml | 144 ++ .../src/main/resources/banner.txt | 10 + .../src/main/resources/bootstrap.yml | 45 + .../resources/mapper/InstallOrderMapper.xml | 25 + .../mapper/LogisticsCompanyMapper.xml | 18 + .../messages/messages_hpfm_en_US.properties | 182 ++ .../messages/messages_hpfm_zh_CN.properties | 183 ++ .../src/main/resources/static/js/babel.min.js | 25 + skyer-channel/.gitignore | 103 + skyer-channel/.gitlab-ci.yml | 5 + skyer-channel/charts/skyer-channel/Chart.yaml | 5 + skyer-channel/charts/skyer-channel/README.md | 81 + .../skyer-channel/templates/_helpers.tpl | 28 + .../skyer-channel/templates/deployment.yaml | 121 + .../skyer-channel/templates/service.yaml | 41 + .../charts/skyer-channel/values.yaml | 137 ++ skyer-channel/docker/Dockerfile | 6 + skyer-channel/init-local-database.sh | 13 + skyer-channel/pom.xml | 312 +++ .../channel/ChannelAutoConfiguration.java | 55 + .../channel/EnableSkyerChannel.java | 16 + .../org/skyer/channel/ChannelApplication.java | 25 + .../api/controller/v1/DealerController.java | 92 + .../api/controller/v1/GroupController.java | 52 + .../controller/v1/OnlineShopController.java | 113 + .../controller/v1/PhysicalShopController.java | 92 + .../v1/SalesOrganizationController.java | 116 + .../api/controller/v1/ShopController.java | 47 + .../controller/v1/WarehouseController.java | 102 + .../channel/api/dto/ChannelSaleOrderDTO.java | 31 + .../org/skyer/channel/api/dto/DealerDTO.java | 47 + .../skyer/channel/api/dto/DealerListDTO.java | 27 + .../skyer/channel/api/dto/OnlineShopDTO.java | 68 + .../channel/api/dto/OnlineShopSettingDTO.java | 32 + .../channel/api/dto/OnlineShopShowDTO.java | 31 + .../channel/api/dto/PhysicalShopDTO.java | 76 + .../channel/api/dto/PhysicalShopShowDTO.java | 29 + .../channel/api/dto/QueryShopListDTO.java | 38 + .../channel/api/dto/SalesOrganizationDTO.java | 62 + .../api/dto/SalesOrganizationListDTO.java | 36 + .../skyer/channel/api/dto/SaveShopDTO.java | 11 + .../org/skyer/channel/api/dto/ShopDTO.java | 30 + .../skyer/channel/api/dto/ShopDeleteDTO.java | 19 + .../skyer/channel/api/dto/WarehouseDTO.java | 71 + .../channel/api/dto/WarehouseListDTO.java | 27 + .../config/ChannelExtraDataManager.java | 36 + .../config/ChannelSwaggerApiConfig.java | 37 + .../skyer/channel/domain/entity/Dealer.java | 77 + .../skyer/channel/domain/entity/Group.java | 76 + .../domain/entity/SalesOrganization.java | 89 + .../org/skyer/channel/domain/entity/Shop.java | 133 + .../channel/domain/entity/Warehouse.java | 99 + .../domain/repository/DealerRepository.java | 24 + .../domain/repository/GroupRepository.java | 13 + .../SalesOrganizationReposotory.java | 11 + .../domain/repository/ShopRepository.java | 35 + .../repository/WarehouseRepository.java | 11 + .../channel/domain/service/DealerService.java | 62 + .../channel/domain/service/GroupService.java | 24 + .../domain/service/OnlineShopService.java | 50 + .../domain/service/PhysicalShopService.java | 26 + .../service/SalesOrganizationService.java | 87 + .../domain/service/WarehouseService.java | 71 + .../service/impl/DealerServiceImpl.java | 117 + .../domain/service/impl/GroupServiceImpl.java | 45 + .../service/impl/OnlineShopServiceImpl.java | 228 ++ .../service/impl/PhysicalShopServiceImpl.java | 181 ++ .../impl/SalesOrganizationServiceImpl.java | 252 ++ .../service/impl/WarehouseServiceImpl.java | 117 + .../domain/service/saga/ShopService.java | 22 + .../service/saga/impl/ShopServiceImpl.java | 171 ++ .../channel/domain/vo/ChannelSaleOrderVO.java | 46 + .../skyer/channel/domain/vo/ChildrenVO.java | 19 + .../org/skyer/channel/domain/vo/DealerVO.java | 39 + .../skyer/channel/domain/vo/ListOfTreeVO.java | 25 + .../channel/domain/vo/OnlineShopDetailVO.java | 112 + .../domain/vo/OnlineShopSettingVO.java | 30 + .../skyer/channel/domain/vo/OnlineShopVO.java | 78 + .../domain/vo/PhysicalShopDetailVO.java | 92 + .../channel/domain/vo/PhysicalShopVO.java | 74 + .../vo/SalesOrganizationByTenantIdVO.java | 21 + .../domain/vo/SalesOrganizationListVO.java | 48 + .../skyer/channel/domain/vo/ShopListVO.java | 36 + .../channel/domain/vo/WarehouseListVO.java | 45 + .../infra/annocations/DatasourceType.java | 23 + .../infra/constant/CompanyConstants.java | 47 + .../channel/infra/constant/Constants.java | 331 +++ .../constant/DataHierarchyDisplayStyle.java | 5 + .../channel/infra/constant/FndConstants.java | 344 +++ .../infra/constant/HpfmMsgCodeConstants.java | 264 ++ .../channel/infra/constant/HrConstants.java | 64 + .../infra/convertor/CommonConvertor.java | 80 + .../channel/infra/enums/DBPoolTypeEnum.java | 63 + .../channel/infra/enums/DatabaseTypeEnum.java | 70 + .../infra/feign/OrderReportRemoteService.java | 22 + .../skyer/channel/infra/feign/UserClient.java | 31 + .../infra/feign/fallback/UserClientImpl.java | 25 + .../impl/OrderReportRemoteServiceImpl.java | 19 + .../channel/infra/handler/MessageHandler.java | 63 + .../channel/infra/mapper/DealerMapper.java | 17 + .../channel/infra/mapper/GroupMapper.java | 13 + .../infra/mapper/SalesOrganizationMapper.java | 27 + .../channel/infra/mapper/ShopMapper.java | 34 + .../channel/infra/mapper/WarehouseMapper.java | 28 + .../infra/properties/ChannelProperties.java | 118 + .../properties/DataHierarchyProperties.java | 19 + .../remote/api/RemoteCustomizeService.java | 39 + .../remote/api/dto/SaleOrderOrderApiDTO.java | 20 + .../api/impl/RemoteCustomizeServiceImpl.java | 142 ++ .../repository/impl/DealerRepositoryImpl.java | 41 + .../repository/impl/GroupRepositoryImpl.java | 17 + .../impl/SalesOrganizationRepositoryImpl.java | 16 + .../repository/impl/ShopRepositoryImpl.java | 61 + .../impl/WarehouseRepositoryImpl.java | 16 + .../org/skyer/channel/infra/util/Dates.java | 32 + .../skyer/channel/infra/util/JsonUtils.java | 205 ++ .../skyer/channel/infra/util/ListUtil.java | 65 + .../src/main/resources/application.yml | 148 ++ skyer-channel/src/main/resources/banner.txt | 10 + .../src/main/resources/bootstrap.yml | 45 + .../main/resources/mapper/DealerMapper.xml | 29 + .../src/main/resources/mapper/GroupMapper.xml | 18 + .../mapper/SalesOrganizationMapper.xml | 69 + .../src/main/resources/mapper/ShopMapper.xml | 190 ++ .../main/resources/mapper/WarehouseMapper.xml | 53 + .../messages/messages_hpfm_en_US.properties | 182 ++ .../messages/messages_hpfm_zh_CN.properties | 183 ++ .../src/main/resources/skyer_channel.sql | 151 ++ .../src/main/resources/static/js/babel.min.js | 25 + skyer-gateway/.gitignore | 103 + skyer-gateway/.gitlab-ci.yml | 5 + skyer-gateway/charts/skyer-gateway/Chart.yaml | 5 + skyer-gateway/charts/skyer-gateway/README.md | 81 + .../skyer-gateway/templates/_helpers.tpl | 28 + .../skyer-gateway/templates/deployment.yaml | 121 + .../skyer-gateway/templates/service.yaml | 41 + .../charts/skyer-gateway/values.yaml | 109 + skyer-gateway/docker/Dockerfile | 6 + skyer-gateway/pom.xml | 212 ++ .../gateway/EnableSkyerGateway.java | 22 + .../WebConditionAutoConfiguration.java | 181 ++ .../org/skyer/gateway/GatewayApplication.java | 25 + .../skyer/gateway/common/SetRepository.java | 20 + .../gateway/common/StringSetRepository.java | 9 + .../gateway/config/GatewayProperties.java | 68 + .../gateway/config/MaintainProperties.java | 89 + .../gateway/endpoint/MaintainEndpoint.java | 80 + .../filter/AvailableServiceFilter.java | 125 + .../gateway/filter/GateWayHelperFilter.java | 137 ++ .../gateway/filter/HeaderWrapperFilter.java | 56 + .../skyer/gateway/filter/IpCheckedFilter.java | 109 + .../java/org/skyer/gateway/filter/Query.java | 11 + .../filter/RedisBlackSetRepository.java | 32 + .../gateway/filter/RedisSetRepository.java | 59 + .../filter/RedisWhiteSetRepository.java | 28 + .../gateway/filter/XForwardedForFilter.java | 31 + .../CustomInMemoryHttpTraceRepository.java | 38 + .../gateway/filter/metric/MetricEndpoint.java | 26 + .../filter/metric/MetricRuleEndpoint.java | 27 + .../gateway/filter/metric/RequestCount.java | 176 ++ .../filter/metric/RequestCountRules.java | 237 ++ .../metric/RequestCountTraceListener.java | 77 + .../gateway/filter/metric/RequestCounter.java | 115 + .../gateway/filter/metric/TimeWindow.java | 44 + .../gateway/filter/metric/TraceListener.java | 14 + .../ratelimit/RateLimitConfiguration.java | 68 + .../dimension/CombinedKeyResolver.java | 29 + .../dimension/OriginKeyResolver.java | 47 + .../ratelimit/dimension/RoleKeyResolver.java | 53 + .../dimension/TenantKeyResolver.java | 54 + .../ratelimit/dimension/UrlKeyResolver.java | 143 ++ .../ratelimit/dimension/UserKeyResolver.java | 54 + .../limiter/EnhancedRedisRateLimiter.java | 225 ++ .../switcher/DoubleModeSwitcher.java | 73 + .../ratelimit/switcher/EmptyModeSwitcher.java | 24 + .../ratelimit/switcher/ModeSwitcher.java | 22 + .../ratelimit/switcher/SwitcherDelegate.java | 12 + .../DatabaseRouteDefinitionRepository.java | 234 ++ .../gateway/route/entity/ServiceRoute.java | 109 + .../org/skyer/gateway/util/KeyGenerator.java | 20 + .../org/skyer/gateway/util/RedisOpUtils.java | 23 + .../skyer/gateway/util/RequestCountUtils.java | 57 + .../src/main/resources/application.yml | 295 +++ skyer-gateway/src/main/resources/banner.txt | 11 + .../src/main/resources/bootstrap.yml | 43 + skyer-goods/.gitignore | 103 + skyer-goods/.gitlab-ci.yml | 11 + skyer-goods/charts/skyer-goods/Chart.yaml | 5 + skyer-goods/charts/skyer-goods/README.md | 81 + .../charts/skyer-goods/templates/_helpers.tpl | 28 + .../skyer-goods/templates/deployment.yaml | 121 + .../charts/skyer-goods/templates/service.yaml | 41 + skyer-goods/charts/skyer-goods/values.yaml | 128 + skyer-goods/docker/Dockerfile | 6 + skyer-goods/init-local-database.sh | 13 + skyer-goods/pom.xml | 346 +++ .../autoconfigure/goods/EnableSkyerGoods.java | 16 + .../goods/GoodsAutoConfiguration.java | 55 + .../org/skyer/goods/GoodsApplication.java | 25 + .../api/controller/v1/BrandController.java | 88 + .../v1/CategoryAttributeController.java | 50 + .../api/controller/v1/CategoryController.java | 100 + .../controller/v1/GoodsShopController.java | 82 + .../api/controller/v1/GoodsSkuController.java | 134 ++ .../v1/InstallServiceController.java | 83 + .../api/controller/v1/MaterialController.java | 107 + .../v1/PriceItemSettingController.java | 202 ++ .../v1/SkuAttributeValueController.java | 75 + .../v1/SkuAttributeValueDraftController.java | 75 + .../api/controller/v1/SkuAuditController.java | 44 + .../v1/SkuAuditSettingController.java | 51 + .../api/controller/v1/SkuDraftController.java | 75 + .../api/controller/v1/SkuGroupController.java | 67 + .../v1/SpuAttrValueRelationController.java | 77 + .../controller/v1/SpuAttributeController.java | 86 + .../v1/SpuAttributeValueController.java | 77 + .../api/controller/v1/SpuController.java | 113 + .../v1/SpuInstallServiceController.java | 84 + .../controller/v1/SpuSonMumController.java | 83 + .../goods/api/dto/AttrListRequestDTO.java | 55 + .../org/skyer/goods/api/dto/AttributeDTO.java | 30 + .../skyer/goods/api/dto/BrandPageReqDTO.java | 38 + .../org/skyer/goods/api/dto/BrandReqDTO.java | 39 + .../api/dto/CategoryAttributeQueryDTO.java | 30 + .../api/dto/CategoryAttributeSaveDTO.java | 46 + .../dto/CategoryAttributeValueSaveDTO.java | 24 + .../skyer/goods/api/dto/CategoryQueryDTO.java | 38 + .../skyer/goods/api/dto/CategorySaveDTO.java | 52 + .../goods/api/dto/CategoryTreeQueryDTO.java | 19 + .../dto/CategoryUpdateByStatusFlagDTO.java | 24 + .../skyer/goods/api/dto/GoodsGroupReqDTO.java | 44 + .../goods/api/dto/GoodsGroupSkuReqDTO.java | 25 + .../skyer/goods/api/dto/GoodsPageReqDTO.java | 43 + .../org/skyer/goods/api/dto/GoodsReqDTO.java | 53 + .../skyer/goods/api/dto/GoodsRequestDTO.java | 63 + .../skyer/goods/api/dto/GoodsSkuPageDTO.java | 47 + .../skyer/goods/api/dto/GroupPageReqDTO.java | 21 + .../org/skyer/goods/api/dto/IdsReqDTO.java | 22 + .../skyer/goods/api/dto/LevelCategoryDTO.java | 34 + .../org/skyer/goods/api/dto/MaterialDTO.java | 71 + .../skyer/goods/api/dto/MaterialListDTO.java | 36 + .../org/skyer/goods/api/dto/PageReqDTO.java | 36 + .../skyer/goods/api/dto/SkuBatchAuditDTO.java | 21 + .../skyer/goods/api/dto/SkuBatchSaveDTO.java | 20 + .../goods/api/dto/SkuListRequestDTO.java | 75 + .../org/skyer/goods/api/dto/SkuUpdateDTO.java | 23 + .../skyer/goods/api/dto/SkuUpdateInfoDTO.java | 57 + .../org/skyer/goods/api/dto/SpuListDTO.java | 32 + .../org/skyer/goods/api/dto/StatusReqDTO.java | 28 + .../api/dto/UpdatePriceItemValueDTO.java | 37 + .../app/service/CategoryAttributeService.java | 10 + .../CategoryAttributeValueService.java | 10 + .../goods/app/service/CategoryService.java | 9 + .../app/service/InstallServiceService.java | 69 + .../app/service/MyEncryptionService.java | 33 + .../SkuAttributeValueDraftService.java | 10 + .../app/service/SkuAttributeValueService.java | 10 + .../app/service/SkuAuditSettingService.java | 10 + .../goods/app/service/SkuDraftService.java | 10 + .../skyer/goods/app/service/SkuEsService.java | 65 + .../goods/app/service/SkuPackageService.java | 10 + .../skyer/goods/app/service/SkuService.java | 114 + .../app/service/SpuAttributeService.java | 10 + .../app/service/SpuAttributeValueService.java | 10 + .../skyer/goods/app/service/SpuEsService.java | 66 + .../app/service/SpuInstallServiceService.java | 58 + .../service/SpuInstallServiceSkuService.java | 10 + .../SpuInstallServiceStoreService.java | 10 + .../goods/app/service/SpuSonMumService.java | 59 + .../app/service/SpuSonMumSkuService.java | 10 + .../app/service/SpuSonMumStoreService.java | 10 + .../impl/CategoryAttributeServiceImpl.java | 13 + .../CategoryAttributeValueServiceImpl.java | 13 + .../app/service/impl/CategoryServiceImpl.java | 21 + .../impl/InstallServiceServiceImpl.java | 218 ++ .../service/impl/MyEncryptionServiceImpl.java | 38 + .../SkuAttributeValueDraftServiceImpl.java | 13 + .../impl/SkuAttributeValueServiceImpl.java | 13 + .../impl/SkuAuditSettingServiceImpl.java | 13 + .../app/service/impl/SkuDraftServiceImpl.java | 13 + .../app/service/impl/SkuEsServiceImpl.java | 435 ++++ .../service/impl/SkuPackageServiceImpl.java | 13 + .../app/service/impl/SkuServiceImpl.java | 1095 +++++++++ .../service/impl/SpuAttributeServiceImpl.java | 13 + .../impl/SpuAttributeValueServiceImpl.java | 13 + .../app/service/impl/SpuEsServiceImpl.java | 345 +++ .../impl/SpuInstallServiceServiceImpl.java | 400 +++ .../impl/SpuInstallServiceSkuServiceImpl.java | 13 + .../SpuInstallServiceStoreServiceImpl.java | 13 + .../service/impl/SpuSonMumServiceImpl.java | 375 +++ .../service/impl/SpuSonMumSkuServiceImpl.java | 13 + .../impl/SpuSonMumStoreServiceImpl.java | 13 + .../goods/config/GoodsExtraDataManager.java | 36 + .../goods/config/GoodsSwaggerApiConfig.java | 60 + .../goods/domain/dto/AddSonMumSkuDTO.java | 19 + .../dto/AddSpuInstallServiceSkuDTO.java | 19 + .../org/skyer/goods/domain/dto/AuditDTO.java | 23 + .../goods/domain/dto/InstallServiceDTO.java | 53 + .../domain/dto/LevelRedisCategoryDTO.java | 41 + .../skyer/goods/domain/dto/MultiDelDTO.java | 21 + .../domain/dto/PageInstallServiceDTO.java | 15 + .../skyer/goods/domain/dto/PageSonMumDTO.java | 12 + .../domain/dto/PageSpuInstallServiceDTO.java | 19 + .../goods/domain/dto/ServiceZoneDTO.java | 35 + .../skyer/goods/domain/dto/SkuAuditDTO.java | 12 + .../domain/dto/SpuInstallServiceDTO.java | 45 + .../skyer/goods/domain/dto/SpuSonMumDTO.java | 42 + .../goods/domain/dto/TotalCategoryDTO.java | 20 + .../org/skyer/goods/domain/entity/Brand.java | 85 + .../skyer/goods/domain/entity/Category.java | 98 + .../domain/entity/CategoryAttribute.java | 98 + .../domain/entity/CategoryAttributeValue.java | 61 + .../skyer/goods/domain/entity/GoodsShop.java | 148 ++ .../goods/domain/entity/InstallService.java | 197 ++ .../skyer/goods/domain/entity/Material.java | 102 + .../org/skyer/goods/domain/entity/Sku.java | 184 ++ .../domain/entity/SkuAttrValueRelation.java | 133 + .../domain/entity/SkuAttributeValue.java | 77 + .../domain/entity/SkuAttributeValueDraft.java | 71 + .../goods/domain/entity/SkuAuditSetting.java | 79 + .../skyer/goods/domain/entity/SkuDraft.java | 107 + .../skyer/goods/domain/entity/SkuGroup.java | 174 ++ .../goods/domain/entity/SkuGroupSku.java | 140 ++ .../goods/domain/entity/SkuGroupStore.java | 133 + .../skyer/goods/domain/entity/SkuPackage.java | 69 + .../org/skyer/goods/domain/entity/Spu.java | 118 + .../domain/entity/SpuAttrValueRelation.java | 170 ++ .../goods/domain/entity/SpuAttribute.java | 86 + .../domain/entity/SpuAttributeValue.java | 65 + .../domain/entity/SpuInstallService.java | 220 ++ .../domain/entity/SpuInstallServiceSku.java | 151 ++ .../domain/entity/SpuInstallServiceStore.java | 136 ++ .../skyer/goods/domain/entity/SpuSonMum.java | 178 ++ .../goods/domain/entity/SpuSonMumSku.java | 166 ++ .../goods/domain/entity/SpuSonMumStore.java | 136 ++ .../domain/repository/BrandRepository.java | 52 + .../CategoryAttributeRepository.java | 24 + .../CategoryAttributeValueRepository.java | 19 + .../domain/repository/CategoryRepository.java | 67 + .../repository/InstallServiceRepository.java | 13 + .../domain/repository/MaterialRepository.java | 41 + .../SkuAttrValueRelationRepository.java | 13 + .../SkuAttributeValueDraftRepository.java | 22 + .../SkuAttributeValueRepository.java | 30 + .../repository/SkuAuditSettingRepository.java | 25 + .../domain/repository/SkuDraftRepository.java | 13 + .../domain/repository/SkuGroupRepository.java | 40 + .../repository/SkuGroupSkuRepository.java | 40 + .../repository/SkuGroupStoreRepository.java | 30 + .../repository/SkuPackageRepository.java | 18 + .../domain/repository/SkuRepository.java | 100 + .../SpuAttrValueRelationRepository.java | 35 + .../repository/SpuAttributeRepository.java | 30 + .../SpuAttributeValueRepository.java | 13 + .../SpuInstallServiceRepository.java | 13 + .../SpuInstallServiceSkuRepository.java | 13 + .../SpuInstallServiceStoreRepository.java | 13 + .../domain/repository/SpuRepository.java | 46 + .../repository/SpuSonMumRepository.java | 13 + .../repository/SpuSonMumSkuRepository.java | 13 + .../repository/SpuSonMumStoreRepository.java | 13 + .../goods/domain/service/BrandService.java | 49 + .../domain/service/CategoryManageService.java | 41 + .../domain/service/GoodsAttributeService.java | 8 + .../domain/service/GoodsShopService.java | 13 + .../goods/domain/service/MaterialService.java | 65 + .../goods/domain/service/SkuGroupService.java | 43 + .../domain/service/SkuGroupSkuService.java | 11 + .../domain/service/SkuGroupStoreService.java | 10 + .../goods/domain/service/SpuService.java | 76 + .../domain/service/impl/BrandServiceImpl.java | 134 ++ .../impl/CategoryManageServiceImpl.java | 359 +++ .../impl/GoodsAttributeServiceImpl.java | 30 + .../service/impl/GoodsShopServiceImpl.java | 18 + .../service/impl/MaterialServiceImpl.java | 202 ++ .../service/impl/SkuGroupServiceImpl.java | 162 ++ .../service/impl/SkuGroupSkuServiceImpl.java | 15 + .../impl/SkuGroupStoreServiceImpl.java | 15 + .../domain/service/impl/SpuServiceImpl.java | 350 +++ .../domain/vo/AllAttributeRelationResVO.java | 43 + .../domain/vo/AttributeAndValueResVO.java | 53 + .../goods/domain/vo/AttributeDetailResVO.java | 20 + .../goods/domain/vo/AttributePageResVO.java | 60 + .../goods/domain/vo/AttributeValueResVO.java | 30 + .../skyer/goods/domain/vo/BrandPageResVO.java | 67 + .../goods/domain/vo/CategoryAttributeVO.java | 51 + .../domain/vo/CategoryAttributeValueVO.java | 16 + .../goods/domain/vo/CategoryOldPageResVO.java | 56 + .../goods/domain/vo/CategoryOldResVO.java | 37 + .../skyer/goods/domain/vo/CategoryTreeVO.java | 50 + .../org/skyer/goods/domain/vo/CategoryVO.java | 56 + .../domain/vo/CheckGoodsAttributeResVO.java | 39 + .../goods/domain/vo/ChinaZoingRemoteVO.java | 46 + .../goods/domain/vo/CreateSkuListVo.java | 18 + .../goods/domain/vo/DetailSpecifResVO.java | 28 + .../goods/domain/vo/GoodsDetailResVO.java | 59 + .../skyer/goods/domain/vo/GoodsDetailsVO.java | 74 + .../skyer/goods/domain/vo/GoodsPageResVO.java | 80 + .../goods/domain/vo/GoodsSkuAuditPriceVO.java | 31 + .../goods/domain/vo/GoodsSkuAuditVO.java | 107 + .../goods/domain/vo/GoodsSkuDetailVO.java | 105 + .../skyer/goods/domain/vo/GoodsSkuPageVO.java | 106 + .../org/skyer/goods/domain/vo/GoodsSkuVO.java | 87 + .../skyer/goods/domain/vo/GroupPageResVO.java | 58 + .../goods/domain/vo/GroupStoreResVO.java | 32 + .../domain/vo/MainIdAttributeValueResVO.java | 40 + .../org/skyer/goods/domain/vo/MaterialVO.java | 74 + .../skyer/goods/domain/vo/OnlineShopVO.java | 93 + .../skyer/goods/domain/vo/PriceItemLov.java | 23 + .../skyer/goods/domain/vo/RpcGoodsResVO.java | 56 + .../skyer/goods/domain/vo/RpcOrderResVO.java | 87 + .../org/skyer/goods/domain/vo/SkuAuditVO.java | 17 + .../skyer/goods/domain/vo/SkuGroupResVO.java | 49 + .../goods/domain/vo/SkuGroupSkuResVO.java | 38 + .../skyer/goods/domain/vo/SkuInfoResVO.java | 41 + .../skyer/goods/domain/vo/SkuPackageVO.java | 33 + .../org/skyer/goods/domain/vo/SpuEsModel.java | 35 + .../goods/domain/vo/TotalCategoryResVO.java | 33 + .../infra/annocations/DatasourceType.java | 23 + .../infra/constant/CompanyConstants.java | 47 + .../skyer/goods/infra/constant/Constants.java | 330 +++ .../constant/DataHierarchyDisplayStyle.java | 5 + .../goods/infra/constant/FndConstants.java | 344 +++ .../infra/constant/HpfmMsgCodeConstants.java | 264 ++ .../goods/infra/constant/HrConstants.java | 44 + .../goods/infra/constant/ObjectConstant.java | 103 + .../skyer/goods/infra/constant/RedisKey.java | 22 + .../goods/infra/convertor/BrandConvertor.java | 22 + .../infra/convertor/CategoryConvertor.java | 25 + .../infra/convertor/CommonConvertor.java | 80 + .../goods/infra/convertor/GoodsConvertor.java | 37 + .../infra/convertor/SkuGroupConvertor.java | 20 + .../goods/infra/enums/DBPoolTypeEnum.java | 63 + .../goods/infra/enums/DatabaseTypeEnum.java | 70 + .../infra/feign/ChinaZoingRemoteService.java | 39 + .../infra/feign/LovManageRemoteService.java | 111 + .../goods/infra/feign/LovRemoteService.java | 150 ++ .../infra/feign/OnlineShopRemoteService.java | 30 + .../infra/feign/UserDetailRemoteService.java | 36 + .../goods/infra/feign/dto/LovHeaderDto.java | 39 + .../goods/infra/feign/dto/LovValueDto.java | 40 + .../impl/ChinaZoingRemoteServiceImpl.java | 15 + .../impl/LovManageRemoteServiceImpl.java | 57 + .../feign/impl/LovRemoteServiceImpl.java | 52 + .../impl/OnlineShopRemoteServiceImpl.java | 23 + .../impl/UserDetailRemoteServiceImpl.java | 24 + .../goods/infra/handler/MessageHandler.java | 63 + .../skyer/goods/infra/mapper/BrandMapper.java | 19 + .../infra/mapper/CategoryAttributeMapper.java | 19 + .../mapper/CategoryAttributeValueMapper.java | 19 + .../goods/infra/mapper/CategoryMapper.java | 22 + .../goods/infra/mapper/GoodsShopMapper.java | 14 + .../infra/mapper/InstallServiceMapper.java | 13 + .../goods/infra/mapper/MaterialMapper.java | 21 + .../mapper/SkuAttrValueRelationMapper.java | 13 + .../mapper/SkuAttributeValueDraftMapper.java | 24 + .../infra/mapper/SkuAttributeValueMapper.java | 32 + .../infra/mapper/SkuAuditSettingMapper.java | 13 + .../goods/infra/mapper/SkuDraftMapper.java | 13 + .../goods/infra/mapper/SkuGroupMapper.java | 23 + .../goods/infra/mapper/SkuGroupSkuMapper.java | 17 + .../infra/mapper/SkuGroupStoreMapper.java | 13 + .../skyer/goods/infra/mapper/SkuMapper.java | 40 + .../goods/infra/mapper/SkuPackageMapper.java | 13 + .../mapper/SpuAttrValueRelationMapper.java | 13 + .../infra/mapper/SpuAttributeMapper.java | 13 + .../infra/mapper/SpuAttributeValueMapper.java | 13 + .../infra/mapper/SpuInstallServiceMapper.java | 13 + .../mapper/SpuInstallServiceSkuMapper.java | 13 + .../mapper/SpuInstallServiceStoreMapper.java | 13 + .../skyer/goods/infra/mapper/SpuMapper.java | 32 + .../goods/infra/mapper/SpuSonMumMapper.java | 13 + .../infra/mapper/SpuSonMumSkuMapper.java | 13 + .../infra/mapper/SpuSonMumStoreMapper.java | 13 + .../properties/DataHierarchyProperties.java | 19 + .../infra/properties/GoodsProperties.java | 118 + .../remote/api/RemoteCustomizeService.java | 39 + .../api/impl/RemoteCustomizeServiceImpl.java | 142 ++ .../repository/impl/BrandRepositoryImpl.java | 64 + .../impl/CategoryAttributeRepositoryImpl.java | 29 + .../CategoryAttributeValueRepositoryImpl.java | 31 + .../impl/CategoryRepositoryImpl.java | 214 ++ .../impl/InstallServiceRepositoryImpl.java | 17 + .../impl/MaterialRepositoryImpl.java | 66 + .../SkuAttrValueRelationRepositoryImpl.java | 17 + .../SkuAttributeValueDraftRepositoryImpl.java | 27 + .../impl/SkuAttributeValueRepositoryImpl.java | 33 + .../impl/SkuAuditSettingRepositoryImpl.java | 48 + .../impl/SkuDraftRepositoryImpl.java | 17 + .../impl/SkuGroupRepositoryImpl.java | 54 + .../impl/SkuGroupSkuRepositoryImpl.java | 62 + .../impl/SkuGroupStoreRepositoryImpl.java | 53 + .../impl/SkuPackageRepositoryImpl.java | 38 + .../repository/impl/SkuRepositoryImpl.java | 121 + .../SpuAttrValueRelationRepositoryImpl.java | 58 + .../impl/SpuAttributeRepositoryImpl.java | 129 + .../impl/SpuAttributeValueRepositoryImpl.java | 17 + .../impl/SpuInstallServiceRepositoryImpl.java | 17 + .../SpuInstallServiceSkuRepositoryImpl.java | 17 + .../SpuInstallServiceStoreRepositoryImpl.java | 17 + .../repository/impl/SpuRepositoryImpl.java | 64 + .../impl/SpuSonMumRepositoryImpl.java | 17 + .../impl/SpuSonMumSkuRepositoryImpl.java | 17 + .../impl/SpuSonMumStoreRepositoryImpl.java | 17 + .../org/skyer/goods/infra/util/Dates.java | 32 + .../goods/infra/util/EsBoolQueryUtil.java | 548 +++++ .../org/skyer/goods/infra/util/JsonUtils.java | 205 ++ .../org/skyer/goods/infra/util/ListUtils.java | 67 + .../org/skyer/goods/infra/util/Md5Utils.java | 24 + .../src/main/resources/application.yml | 165 ++ skyer-goods/src/main/resources/banner.txt | 10 + skyer-goods/src/main/resources/bootstrap.yml | 32 + .../src/main/resources/mapper/BrandMapper.xml | 63 + .../mapper/CategoryAttributeMapper.xml | 83 + .../mapper/CategoryAttributeValueMapper.xml | 22 + .../main/resources/mapper/CategoryMapper.xml | 117 + .../main/resources/mapper/GoodsShopMapper.xml | 19 + .../resources/mapper/InstallServiceMapper.xml | 22 + .../main/resources/mapper/MaterialMapper.xml | 34 + .../mapper/SkuAttrValueRelationMapper.xml | 18 + .../mapper/SkuAttributeValueDraftMapper.xml | 20 + .../mapper/SkuAttributeValueMapper.xml | 25 + .../mapper/SkuAuditSettingMapper.xml | 17 + .../main/resources/mapper/SkuDraftMapper.xml | 21 + .../main/resources/mapper/SkuGroupMapper.xml | 42 + .../resources/mapper/SkuGroupSkuMapper.xml | 25 + .../resources/mapper/SkuGroupStoreMapper.xml | 18 + .../src/main/resources/mapper/SkuMapper.xml | 99 + .../resources/mapper/SkuPackageMapper.xml | 11 + .../mapper/SpuAttrValueRelationMapper.xml | 21 + .../resources/mapper/SpuAttributeMapper.xml | 23 + .../mapper/SpuAttributeValueMapper.xml | 13 + .../mapper/SpuInstallServiceMapper.xml | 22 + .../mapper/SpuInstallServiceSkuMapper.xml | 19 + .../mapper/SpuInstallServiceStoreMapper.xml | 18 + .../src/main/resources/mapper/SpuMapper.xml | 103 + .../main/resources/mapper/SpuSonMumMapper.xml | 20 + .../resources/mapper/SpuSonMumSkuMapper.xml | 20 + .../resources/mapper/SpuSonMumStoreMapper.xml | 17 + .../messages/messages_hpfm_en_US.properties | 186 ++ .../messages/messages_hpfm_zh_CN.properties | 187 ++ .../src/main/resources/static/js/babel.min.js | 25 + skyer-order/.gitignore | 103 + skyer-order/.gitlab-ci.yml | 5 + skyer-order/charts/skyer-order/Chart.yaml | 5 + skyer-order/charts/skyer-order/README.md | 81 + .../charts/skyer-order/templates/_helpers.tpl | 28 + .../skyer-order/templates/deployment.yaml | 95 + .../charts/skyer-order/templates/service.yaml | 41 + skyer-order/charts/skyer-order/values.yaml | 120 + skyer-order/docker/Dockerfile | 6 + skyer-order/init-local-database.sh | 13 + skyer-order/pom.xml | 474 ++++ skyer-order/sql/sord_process_define.sql | 49 + .../autoconfigure/order/EnableSkyerOrder.java | 16 + .../order/OrderAutoConfiguration.java | 53 + .../org/skyer/order/OrderApplication.java | 29 + .../v1/AfterSaleHeaderController.java | 156 ++ .../v1/AfterSaleItemController.java | 41 + .../v1/AfterSaleItemLineController.java | 56 + .../v1/AfterSaleLogisticsController.java | 77 + .../v1/AfterSalesReasonController.java | 98 + .../api/controller/v1/CouponController.java | 78 + .../controller/v1/DeliveryLogController.java | 77 + .../api/controller/v1/ItemController.java | 77 + .../api/controller/v1/ItemLineController.java | 47 + .../v1/ItemLinePriceController.java | 77 + .../controller/v1/ItemPriceController.java | 88 + .../controller/v1/ItemSnapshotController.java | 77 + .../controller/v1/OperateLogController.java | 76 + .../api/controller/v1/OrderController.java | 170 ++ .../controller/v1/OrderReportController.java | 58 + .../api/controller/v1/PriceController.java | 77 + .../v1/ProcessDefineController.java | 93 + .../controller/v1/ReceiverInfoController.java | 77 + .../api/controller/v1/RelatedController.java | 77 + .../controller/v1/ServiceLogController.java | 75 + .../controller/v1/ThirdItemController.java | 23 + .../controller/v1/ThirdOrderController.java | 67 + .../ThirdPartyAfterSaleHeaderController.java | 75 + .../v1/ThirdPartyOrderController.java | 77 + .../v1/ThirdReceiverInfoController.java | 23 + .../api/dto/AccountCheckingOrderDTO.java | 47 + .../api/dto/AccountCheckingOrderQueryDTO.java | 22 + .../skyer/order/api/dto/AddRefundOnlyDTO.java | 32 + .../skyer/order/api/dto/AfterItemAddDTO.java | 28 + .../order/api/dto/AfterItemDeleteDTO.java | 25 + .../skyer/order/api/dto/AfterSaleItemDTO.java | 18 + .../order/api/dto/AfterSaleItemLineDTO.java | 19 + .../api/dto/AfterSaleReceiveInfoDTO.java | 39 + .../skyer/order/api/dto/AuditRefundDTO.java | 32 + .../order/api/dto/BatchStringListDTO.java | 18 + .../org/skyer/order/api/dto/IdListDTO.java | 23 + .../skyer/order/api/dto/ItemConfirmDTO.java | 27 + .../skyer/order/api/dto/ItemSearchDTO.java | 52 + .../skyer/order/api/dto/OperateLogDTO.java | 33 + .../org/skyer/order/api/dto/OrderBaseDTO.java | 37 + .../skyer/order/api/dto/OrderBaseInfoDTO.java | 79 + .../order/api/dto/OrderBuyerInfoDTO.java | 66 + .../skyer/order/api/dto/OrderCancelDTO.java | 33 + .../skyer/order/api/dto/OrderDetailDTO.java | 23 + .../order/api/dto/OrderDetailSearchDTO.java | 15 + .../org/skyer/order/api/dto/OrderItemDTO.java | 74 + .../org/skyer/order/api/dto/OrderPageDTO.java | 15 + .../order/api/dto/OrderPaymentInfoDTO.java | 42 + .../order/api/dto/OrderRefundInfoDTO.java | 116 + .../org/skyer/order/api/dto/OrderSaleDTO.java | 25 + .../skyer/order/api/dto/OrderSaleDateDTO.java | 19 + .../skyer/order/api/dto/OrderTableDTO.java | 30 + .../org/skyer/order/api/dto/PageReqDTO.java | 36 + .../skyer/order/api/dto/ProcessDefineDTO.java | 36 + .../order/api/dto/ProcessDefinePageDTO.java | 16 + .../order/api/dto/QueryPreempPageDTO.java | 49 + .../skyer/order/api/dto/ReceiverInfoDTO.java | 48 + .../order/api/dto/RefundAuditPageDTO.java | 60 + .../skyer/order/api/dto/RefundGoodsDTO.java | 35 + .../skyer/order/api/dto/RefundInfoDTO.java | 47 + .../order/api/dto/RefundLogisticsDTO.java | 38 + .../api/dto/RefundOnlyAuditStartDTO.java | 28 + .../order/api/dto/RefundOnlyPageDTO.java | 38 + .../skyer/order/api/dto/RefundPageDTO.java | 47 + .../skyer/order/api/dto/RefundSearchDTO.java | 13 + .../api/dto/ReturnRefundAuditStartDTO.java | 30 + .../order/api/dto/SaleItemReportDTO.java | 23 + .../order/api/dto/ShopIdsAndSkuCodesDTO.java | 19 + .../skyer/order/api/dto/StatsStockoutDTO.java | 24 + .../skyer/order/api/dto/SuspendOrderDTO.java | 20 + .../order/api/dto/ThirdOrderBaseInfoDTO.java | 76 + .../order/api/dto/ThirdOrderBuyerInfoDTO.java | 64 + .../api/dto/ThirdOrderDiscountInfoDTO.java | 23 + .../order/api/dto/ThirdOrderItemDTO.java | 79 + .../api/dto/ThirdOrderPaymentInfoDTO.java | 44 + .../order/api/dto/ThirdOrderTableDTO.java | 27 + .../order/api/dto/ThirdPartyAfterSaleDTO.java | 44 + .../api/dto/ThirdPartyAfterSalePageDTO.java | 36 + .../api/dto/ThirdPartyReceiveInfoDTO.java | 61 + .../api/dto/ThirdPartyRefundBaseInfo.java | 63 + .../skyer/order/api/dto/UpdateRefundDTO.java | 48 + .../order/api/dto/UpdateWarehouseDTO.java | 26 + .../api/dto/WarehouseWarrantDetailDTO.java | 30 + .../api/dto/WarehouseWarrantLogisticsDTO.java | 19 + .../api/dto/WarehouseWarrantSaveDTO.java | 72 + .../skyer/order/api/es/OrderAuditEsModel.java | 235 ++ .../org/skyer/order/api/es/OrderEsModel.java | 243 ++ .../order/api/es/SearchOrderAuditEsParam.java | 100 + .../order/api/es/SearchOrderEsParam.java | 167 ++ .../order/api/es/SearchStockoutEsParam.java | 90 + .../order/api/es/SearchThirdOrderEsParam.java | 60 + .../org/skyer/order/api/es/SpuEsModel.java | 29 + .../skyer/order/api/es/ThirdOrderEsModel.java | 105 + .../skyer/order/api/vo/AfterSaleDetailVO.java | 26 + .../order/api/vo/AfterSaleItemLineVO.java | 43 + .../skyer/order/api/vo/AfterSaleItemVO.java | 55 + .../org/skyer/order/api/vo/AmountInfoVO.java | 23 + .../skyer/order/api/vo/CopyOrderItemVO.java | 69 + .../org/skyer/order/api/vo/CopyOrderVO.java | 39 + .../org/skyer/order/api/vo/OrderDetailVO.java | 15 + .../skyer/order/api/vo/OrderGoodsLineVO.java | 14 + .../org/skyer/order/api/vo/OrderInfoVO.java | 88 + .../order/api/vo/OrderItemLinePageVO.java | 87 + .../skyer/order/api/vo/OrderItemLineVO.java | 43 + .../skyer/order/api/vo/OrderItemPageVO.java | 87 + .../org/skyer/order/api/vo/OrderPageVo.java | 133 + .../skyer/order/api/vo/OrderSaleDateVO.java | 41 + .../skyer/order/api/vo/OrderSaleReportVO.java | 46 + .../order/api/vo/OrderStatusTotalVO.java | 21 + .../org/skyer/order/api/vo/OrderTotalVO.java | 34 + .../org/skyer/order/api/vo/PaymentInfoVO.java | 27 + .../skyer/order/api/vo/PriceTypeListVO.java | 20 + .../order/api/vo/ProcessDefineDetailsVO.java | 41 + .../order/api/vo/ProcessDefinePageVO.java | 34 + .../skyer/order/api/vo/ReceiverInfoVO.java | 45 + .../skyer/order/api/vo/RefundBaseInfoVO.java | 108 + .../skyer/order/api/vo/RefundBuyerInfoVO.java | 25 + .../skyer/order/api/vo/RefundDetailsVO.java | 30 + .../skyer/order/api/vo/RefundItemLineVO.java | 63 + .../order/api/vo/RefundLogisticsInfoVO.java | 32 + .../skyer/order/api/vo/RefundOnlyPageVO.java | 71 + .../org/skyer/order/api/vo/RefundPageVO.java | 86 + .../skyer/order/api/vo/RefundSearchVO.java | 85 + .../order/api/vo/RefundsLogisticsVO.java | 25 + .../skyer/order/api/vo/RpcOrderAmountVO.java | 18 + .../skyer/order/api/vo/RpcOrderInfoVO.java | 27 + .../skyer/order/api/vo/SaleItemReportVO.java | 50 + .../skyer/order/api/vo/ShopSkuStockoutVO.java | 19 + .../skyer/order/api/vo/StatsStockoutVO.java | 26 + .../skyer/order/api/vo/StockoutPageVo.java | 114 + .../skyer/order/api/vo/ThirdAmountInfoVO.java | 32 + .../org/skyer/order/api/vo/ThirdItemVO.java | 60 + .../order/api/vo/ThirdOrderDetailVO.java | 24 + .../skyer/order/api/vo/ThirdOrderInfoVO.java | 87 + .../skyer/order/api/vo/ThirdOrderPageVo.java | 101 + .../ThirdPartyAfterSaleHeaderDetailsVO.java | 49 + .../api/vo/ThirdPartyAfterSalePageVO.java | 62 + .../order/api/vo/ThirdPaymentInfoVO.java | 27 + .../order/api/vo/ThirdReceiverInfoVO.java | 45 + .../skyer/order/api/vo/UnfinishedTotalVO.java | 30 + .../skyer/order/api/vo/WaitDealTotalVO.java | 30 + .../api/vo/WarehouseWarrantResultVO.java | 33 + .../org/skyer/order/app/dto/BaseListDTO.java | 12 + .../org/skyer/order/app/dto/CalAmountDTO.java | 25 + .../org/skyer/order/app/dto/NeedOrderDTO.java | 20 + .../skyer/order/app/dto/OrderDetailDTO.java | 28 + .../org/skyer/order/app/dto/OrderInfoDTO.java | 44 + .../skyer/order/app/dto/OrderLineWorkDTO.java | 31 + .../app/dto/OutboundDeliveryOrderDTO.java | 98 + .../dto/OutboundDeliveryOrderDetailDTO.java | 27 + .../order/app/dto/PackItemAmountDTO.java | 29 + .../skyer/order/app/dto/ResultDetailDTO.java | 55 + .../skyer/order/app/dto/ResultRecordDTO.java | 100 + .../order/app/dto/SaleOrderOrderApiDTO.java | 20 + .../order/app/dto/SplitItemAmountDTO.java | 34 + .../app/service/AfterSaleHeaderService.java | 50 + .../app/service/AfterSaleItemLineService.java | 10 + .../app/service/AfterSaleItemService.java | 10 + .../service/AfterSaleLogisticsService.java | 10 + .../service/AfterSaleReceiverInfoService.java | 10 + .../app/service/AfterSalesReasonService.java | 27 + .../order/app/service/CouponService.java | 10 + .../order/app/service/DeliveryLogService.java | 10 + .../order/app/service/HeaderService.java | 109 + .../app/service/ItemLinePriceService.java | 19 + .../order/app/service/ItemLineService.java | 44 + .../order/app/service/ItemPriceService.java | 32 + .../skyer/order/app/service/ItemService.java | 41 + .../app/service/ItemSnapshotService.java | 37 + .../order/app/service/OperateLogService.java | 10 + .../order/app/service/OrderEsService.java | 46 + .../app/service/OrderLogisticsService.java | 10 + .../order/app/service/OrderReportService.java | 44 + .../skyer/order/app/service/OrderService.java | 49 + .../skyer/order/app/service/PriceService.java | 18 + .../app/service/ProcessDefineService.java | 22 + .../app/service/ReceiverInfoService.java | 10 + .../order/app/service/RedisUserService.java | 19 + .../order/app/service/RelatedService.java | 10 + .../order/app/service/ServiceLogService.java | 10 + .../order/app/service/SourceLogService.java | 10 + .../order/app/service/StockoutEsService.java | 33 + .../order/app/service/ThirdHeaderService.java | 34 + .../order/app/service/ThirdItemService.java | 10 + .../app/service/ThirdOrderEsService.java | 26 + .../ThirdPartyAfterReceiverInfoService.java | 10 + .../ThirdPartyAfterSaleHeaderService.java | 10 + .../ThirdPartyAfterSaleItemService.java | 10 + .../app/service/ThirdPartyOrderService.java | 10 + .../ThirdPartyReturnLogisticsService.java | 10 + .../app/service/ThirdReceiverInfoService.java | 10 + .../app/service/WarehousingNoticeService.java | 10 + .../app/service/component/OrderWorkTask.java | 75 + .../component/ReturnAndRefundWorkTask.java | 44 + .../impl/AfterSaleHeaderServiceImpl.java | 252 ++ .../impl/AfterSaleItemLineServiceImpl.java | 13 + .../impl/AfterSaleItemServiceImpl.java | 13 + .../impl/AfterSaleLogisticsServiceImpl.java | 13 + .../AfterSaleReceiverInfoServiceImpl.java | 13 + .../impl/AfterSalesReasonServiceImpl.java | 60 + .../app/service/impl/CouponServiceImpl.java | 13 + .../service/impl/DeliveryLogServiceImpl.java | 13 + .../app/service/impl/HeaderServiceImpl.java | 781 ++++++ .../impl/ItemLinePriceServiceImpl.java | 48 + .../app/service/impl/ItemLineServiceImpl.java | 324 +++ .../service/impl/ItemPriceServiceImpl.java | 85 + .../app/service/impl/ItemServiceImpl.java | 194 ++ .../service/impl/ItemSnapshotServiceImpl.java | 127 + .../service/impl/OperateLogServiceImpl.java | 13 + .../app/service/impl/OrderEsServiceImpl.java | 384 +++ .../impl/OrderLogisticsServiceImpl.java | 13 + .../service/impl/OrderReportServiceImpl.java | 145 ++ .../app/service/impl/OrderServiceImpl.java | 269 +++ .../app/service/impl/PriceServiceImpl.java | 37 + .../impl/ProcessDefineServiceImpl.java | 92 + .../service/impl/ReceiverInfoServiceImpl.java | 13 + .../service/impl/RedisUserServiceImpl.java | 30 + .../app/service/impl/RelatedServiceImpl.java | 13 + .../service/impl/ServiceLogServiceImpl.java | 13 + .../service/impl/StockoutEsServiceImpl.java | 341 +++ .../service/impl/ThirdHeaderServiceImpl.java | 221 ++ .../service/impl/ThirdItemServiceImpl.java | 13 + .../service/impl/ThirdOrderEsServiceImpl.java | 236 ++ ...hirdPartyAfterReceiverInfoServiceImpl.java | 13 + .../ThirdPartyAfterSaleHeaderServiceImpl.java | 13 + .../ThirdPartyAfterSaleItemServiceImpl.java | 13 + .../impl/ThirdPartyOrderServiceImpl.java | 13 + .../ThirdPartyReturnLogisticsServiceImpl.java | 13 + .../impl/ThirdReceiverInfoServiceImpl.java | 13 + .../impl/WarehousingNoticeServiceImpl.java | 13 + .../service/saga/OrderForwardSagaService.java | 99 + .../saga/ReturnAndRefundSagaService.java | 75 + .../saga/ReturnGoodsWarehouseSagaService.java | 71 + .../service/saga/StockSendSagaService.java | 37 + .../saga/ThirdOrderForWardSagaService.java | 115 + .../ThirdPartyAfterSaleSagaReturnService.java | 119 + .../service/saga/ThirdRefundSagaService.java | 107 + .../skyer/order/app/statemachine/BizBean.java | 49 + .../order/app/vo/ChannelSaleOrderVO.java | 43 + .../order/app/vo/PackageLogisticsVO.java | 50 + .../org/skyer/order/app/vo/PackageSku.java | 21 + .../skyer/order/app/vo/TransferRecordVO.java | 17 + .../org/skyer/order/app/vo/WorkExecuteVO.java | 26 + .../java/org/skyer/order/config/Events.java | 30 + .../order/config/OrderExtraDataManager.java | 34 + .../order/config/OrderSwaggerApiConfig.java | 38 + .../order/config/StateMachineConfig.java | 41 + .../java/org/skyer/order/config/States.java | 30 + .../order/domain/entity/AfterSaleHeader.java | 208 ++ .../order/domain/entity/AfterSaleItem.java | 141 ++ .../domain/entity/AfterSaleItemLine.java | 108 + .../domain/entity/AfterSaleLogistics.java | 70 + .../domain/entity/AfterSaleReceiverInfo.java | 121 + .../order/domain/entity/AfterSalesReason.java | 82 + .../org/skyer/order/domain/entity/Coupon.java | 233 ++ .../order/domain/entity/DeliveryLog.java | 155 ++ .../org/skyer/order/domain/entity/Header.java | 245 ++ .../org/skyer/order/domain/entity/Item.java | 194 ++ .../skyer/order/domain/entity/ItemLine.java | 217 ++ .../order/domain/entity/ItemLinePrice.java | 80 + .../skyer/order/domain/entity/ItemPrice.java | 81 + .../order/domain/entity/ItemSnapshot.java | 428 ++++ .../skyer/order/domain/entity/OperateLog.java | 76 + .../order/domain/entity/OrderLogistics.java | 299 +++ .../org/skyer/order/domain/entity/Price.java | 70 + .../order/domain/entity/ProcessDefine.java | 67 + .../order/domain/entity/ReceiverInfo.java | 289 +++ .../skyer/order/domain/entity/Related.java | 142 ++ .../skyer/order/domain/entity/ServiceLog.java | 72 + .../order/domain/entity/ThirdHeader.java | 149 ++ .../skyer/order/domain/entity/ThirdItem.java | 125 + .../entity/ThirdPartyAfterReceiverInfo.java | 102 + .../entity/ThirdPartyAfterSaleHeader.java | 109 + .../entity/ThirdPartyAfterSaleItem.java | 89 + .../order/domain/entity/ThirdPartyOrder.java | 169 ++ .../entity/ThirdPartyReturnLogistics.java | 70 + .../domain/entity/ThirdReceiverInfo.java | 106 + .../domain/entity/WarehousingNotice.java | 75 + .../repository/AfterSaleHeaderRepository.java | 223 ++ .../AfterSaleItemLineRepository.java | 62 + .../repository/AfterSaleItemRepository.java | 48 + .../AfterSaleLogisticsRepository.java | 21 + .../AfterSaleReceiverInfoRepository.java | 20 + .../AfterSalesReasonRepository.java | 13 + .../domain/repository/CouponRepository.java | 13 + .../repository/DeliveryLogRepository.java | 13 + .../domain/repository/HeaderRepository.java | 96 + .../repository/ItemLinePriceRepository.java | 29 + .../domain/repository/ItemLineRepository.java | 139 ++ .../repository/ItemPriceRepository.java | 37 + .../domain/repository/ItemRepository.java | 55 + .../repository/ItemSnapshotRepository.java | 31 + .../repository/OperateLogRepository.java | 14 + .../repository/OrderLogisticsRepository.java | 13 + .../domain/repository/PriceRepository.java | 29 + .../repository/ProcessDefineRepository.java | 45 + .../repository/ReceiverInfoRepository.java | 29 + .../domain/repository/RelatedRepository.java | 13 + .../repository/ServiceLogRepository.java | 13 + .../repository/ThirdHeaderRepository.java | 20 + .../repository/ThirdItemRepository.java | 23 + ...ThirdPartyAfterReceiverInfoRepository.java | 19 + .../ThirdPartyAfterSaleHeaderRepository.java | 53 + .../ThirdPartyAfterSaleItemRepository.java | 21 + .../repository/ThirdPartyOrderRepository.java | 13 + .../ThirdPartyReturnLogisticsRepository.java | 19 + .../ThirdReceiverInfoRepository.java | 24 + .../WarehousingNoticeRepository.java | 13 + .../infra/annocations/DatasourceType.java | 23 + .../order/infra/common/BaisonClient.java | 85 + .../order/infra/common/CommonConstants.java | 634 +++++ .../order/infra/common/LogInterceptor.java | 51 + .../skyer/order/infra/common/LovSettings.java | 58 + .../skyer/order/infra/constant/Constants.java | 329 +++ .../infra/convertor/CommonConvertor.java | 78 + .../infra/convertor/HeaderConvertor.java | 58 + .../convertor/ItemSnapshotConvertor.java | 23 + .../convertor/OrderAuditEsConvertor.java | 30 + .../infra/convertor/OrderEsConvertor.java | 31 + .../infra/convertor/OrderItemConvertor.java | 50 + .../convertor/OrderItemLineConvertor.java | 150 ++ .../convertor/ReceiverInfoConvertor.java | 22 + .../infra/convertor/RefundConvertor.java | 71 + .../convertor/SplitIemAmountConvertor.java | 34 + .../infra/convertor/ThirdHeaderConvertor.java | 138 ++ .../ThirdPartyAfterSaleConvertor.java | 57 + .../infra/enums/AfterSaleOrderException.java | 61 + .../infra/enums/BaiSonServiceTypeEnum.java | 90 + .../order/infra/enums/DBPoolTypeEnum.java | 62 + .../order/infra/enums/OrderItemEnum.java | 227 ++ .../order/infra/enums/OrderItemLineEnum.java | 206 ++ .../order/infra/enums/OrderStatusEnum.java | 231 ++ .../order/infra/enums/PriceTypeEnum.java | 60 + .../order/infra/enums/ReturnRefundEnum.java | 64 + .../infra/feign/GoodsSkuRemoteService.java | 34 + .../infra/feign/GoodsStockRemoteService.java | 27 + .../infra/feign/LogisticsRemoteService.java | 30 + .../infra/feign/LovManageRemoteService.java | 118 + .../order/infra/feign/LovRemoteService.java | 148 ++ .../infra/feign/OnlineShopRemoteService.java | 26 + .../order/infra/feign/SpuRemoteService.java | 19 + .../infra/feign/TenantRemoteService.java | 28 + .../infra/feign/UserDetailRemoteService.java | 36 + .../order/infra/feign/dto/OnlineShopDTO.java | 33 + .../order/infra/feign/dto/SearchGiftDTO.java | 25 + .../order/infra/feign/dto/SearchOrderDTO.java | 41 + .../in/OutboundDeliveryOrderDetailDTO.java | 39 + .../OutboundDeliveryOrderDetailLineDTO.java | 25 + .../odo/in/OutboundDeliveryOrderInfoDTO.java | 128 + .../odo/out/OutboundDeliveryOrder.java | 93 + .../entity/lov/header/in/LovHeaderDto.java | 39 + .../entity/lov/header/in/LovValueDto.java | 40 + .../preemption/exe/in/DetailListData.java | 14 + .../preemption/exe/in/PreemptionDTO.java | 33 + .../preemption/exe/out/PreemptionVO.java | 13 + .../select/logistics/postage/in/Address.java | 22 + .../postage/in/CalcPostageChargeDTO.java | 38 + .../postage/in/LogicWarehouseVO2.java | 50 + .../logistics/postage/in/PackageSku.java | 30 + .../select/logistics/postage/in/Position.java | 20 + .../select/logistics/postage/in/SkuData.java | 16 + .../logistics/postage/out/PackageSku.java | 31 + .../postage/out/PackageSkuLogistics.java | 40 + .../feign/entity/self/tenants/TenantDTO.java | 27 + .../feign/impl/GoodsSkuRemoteServiceImpl.java | 27 + .../impl/GoodsStockRemoteServiceImpl.java | 20 + .../impl/LogisticsRemoteServiceImpl.java | 20 + .../impl/LovManageRemoteServiceImpl.java | 57 + .../feign/impl/LovRemoteServiceImpl.java | 51 + .../impl/OnlineShopRemoteServiceImpl.java | 21 + .../feign/impl/SpuRemoteServiceImpl.java | 17 + .../feign/impl/TenantRemoteServiceImpl.java | 22 + .../impl/UserDetailRemoteServiceImpl.java | 24 + .../skyer/order/infra/feign/vo/GiftSkuVO.java | 32 + .../order/infra/feign/vo/GoodsPageResVO.java | 80 + .../order/infra/feign/vo/OrderSkuVO.java | 18 + .../order/infra/feign/vo/PromoSkuVO.java | 18 + .../order/infra/feign/vo/RpcGoodsResVO.java | 86 + .../infra/feign/vo/SkuUsableStockVO.java | 18 + .../infra/mapper/AfterSaleHeaderMapper.java | 61 + .../infra/mapper/AfterSaleItemLineMapper.java | 48 + .../infra/mapper/AfterSaleItemMapper.java | 38 + .../mapper/AfterSaleLogisticsMapper.java | 13 + .../mapper/AfterSaleReceiverInfoMapper.java | 13 + .../infra/mapper/AfterSalesReasonMapper.java | 13 + .../order/infra/mapper/CouponMapper.java | 13 + .../order/infra/mapper/DeliveryLogMapper.java | 13 + .../order/infra/mapper/HeaderMapper.java | 50 + .../order/infra/mapper/ItemLineMapper.java | 30 + .../infra/mapper/ItemLinePriceMapper.java | 13 + .../skyer/order/infra/mapper/ItemMapper.java | 24 + .../order/infra/mapper/ItemPriceMapper.java | 13 + .../infra/mapper/ItemSnapshotMapper.java | 13 + .../order/infra/mapper/OperateLogMapper.java | 13 + .../infra/mapper/OrderLogisticsMapper.java | 13 + .../skyer/order/infra/mapper/PriceMapper.java | 13 + .../infra/mapper/ProcessDefineMapper.java | 25 + .../infra/mapper/ReceiverInfoMapper.java | 13 + .../order/infra/mapper/RelatedMapper.java | 13 + .../order/infra/mapper/ServiceLogMapper.java | 13 + .../order/infra/mapper/ThirdHeaderMapper.java | 13 + .../order/infra/mapper/ThirdItemMapper.java | 13 + .../ThirdPartyAfterReceiverInfoMapper.java | 13 + .../ThirdPartyAfterSaleHeaderMapper.java | 25 + .../mapper/ThirdPartyAfterSaleItemMapper.java | 13 + .../infra/mapper/ThirdPartyOrderMapper.java | 13 + .../ThirdPartyReturnLogisticsMapper.java | 13 + .../infra/mapper/ThirdReceiverInfoMapper.java | 13 + .../infra/mapper/WarehousingNoticeMapper.java | 13 + .../properties/DataHierarchyProperties.java | 19 + .../infra/properties/OrderProperties.java | 118 + .../remote/api/RemoteCustomizeService.java | 39 + .../api/impl/RemoteCustomizeServiceImpl.java | 141 ++ .../impl/AfterSaleHeaderRepositoryImpl.java | 1228 ++++++++++ .../impl/AfterSaleItemLineRepositoryImpl.java | 86 + .../impl/AfterSaleItemRepositoryImpl.java | 63 + .../AfterSaleLogisticsRepositoryImpl.java | 39 + .../AfterSaleReceiverInfoRepositoryImpl.java | 36 + .../impl/AfterSalesReasonRepositoryImpl.java | 22 + .../repository/impl/CouponRepositoryImpl.java | 17 + .../impl/DeliveryLogRepositoryImpl.java | 17 + .../repository/impl/HeaderRepositoryImpl.java | 103 + .../impl/ItemLinePriceRepositoryImpl.java | 61 + .../impl/ItemLineRepositoryImpl.java | 259 ++ .../impl/ItemPriceRepositoryImpl.java | 71 + .../repository/impl/ItemRepositoryImpl.java | 159 ++ .../impl/ItemSnapshotRepositoryImpl.java | 49 + .../impl/OperateLogRepositoryImpl.java | 17 + .../impl/OrderLogisticsRepositoryImpl.java | 17 + .../repository/impl/PriceRepositoryImpl.java | 53 + .../impl/ProcessDefineRepositoryImpl.java | 88 + .../impl/ReceiverInfoRepositoryImpl.java | 47 + .../impl/RelatedRepositoryImpl.java | 17 + .../impl/ServiceLogRepositoryImpl.java | 17 + .../impl/ThirdHeaderRepositoryImpl.java | 42 + .../impl/ThirdItemRepositoryImpl.java | 38 + ...dPartyAfterReceiverInfoRepositoryImpl.java | 37 + ...irdPartyAfterSaleHeaderRepositoryImpl.java | 219 ++ ...ThirdPartyAfterSaleItemRepositoryImpl.java | 42 + .../impl/ThirdPartyOrderRepositoryImpl.java | 17 + ...irdPartyReturnLogisticsRepositoryImpl.java | 38 + .../impl/ThirdReceiverInfoRepositoryImpl.java | 39 + .../impl/WarehousingNoticeRepositoryImpl.java | 17 + .../order/infra/util/CollectorsUtil.java | 179 ++ .../org/skyer/order/infra/util/Dates.java | 33 + .../order/infra/util/EsBoolQueryUtil.java | 548 +++++ .../org/skyer/order/infra/util/JsonUtils.java | 204 ++ .../org/skyer/order/infra/util/ListUtil.java | 65 + .../skyer/order/infra/util/ObjectUtils.java | 62 + .../order/infra/util/OrderTagsUtils.java | 63 + .../infra/util/ToBigDecimalFunction.java | 9 + .../org/skyer/order/saga/IOrderService.java | 7 + .../order/saga/impl/IOrderServiceImpl.java | 9 + .../statemachine/AbstractEventProcessor.java | 74 + .../statemachine/AbstractStateProcessor.java | 49 + .../order/statemachine/EventDoAction.java | 32 + .../skyer/order/statemachine/FsmOrder.java | 19 + .../order/statemachine/OrderEventsEnum.java | 43 + .../order/statemachine/OrderExtraData.java | 41 + .../order/statemachine/OrderProcessor.java | 28 + .../order/statemachine/OrderStateEvent.java | 32 + .../order/statemachine/OrderStatusEnum.java | 46 + .../order/statemachine/ServiceResult.java | 22 + .../order/statemachine/StateActionStep.java | 37 + .../order/statemachine/StateContext.java | 18 + .../order/statemachine/StateProcessor.java | 8 + .../skyer/order/statemachine/TestClass.java | 15 + .../service/PreemptionAction.java | 36 + .../src/main/resources/application.yml | 177 ++ skyer-order/src/main/resources/banner.txt | 10 + skyer-order/src/main/resources/bootstrap.yml | 33 + .../mapper/AfterSaleHeaderMapper.xml | 381 +++ .../mapper/AfterSaleItemLineMapper.xml | 136 ++ .../resources/mapper/AfterSaleItemMapper.xml | 106 + .../mapper/AfterSaleLogisticsMapper.xml | 18 + .../mapper/AfterSaleReceiverInfoMapper.xml | 37 + .../mapper/AfterSalesReasonMapper.xml | 20 + .../resources/mapper/DeliveryLogMapper.xml | 20 + .../main/resources/mapper/HeaderMapper.xml | 210 ++ .../main/resources/mapper/ItemLineMapper.xml | 86 + .../resources/mapper/ItemLinePriceMapper.xml | 21 + .../src/main/resources/mapper/ItemMapper.xml | 60 + .../main/resources/mapper/ItemPriceMapper.xml | 20 + .../resources/mapper/ItemSnapshotMapper.xml | 41 + .../resources/mapper/OperateLogMapper.xml | 20 + .../resources/mapper/OrderLogisticsMapper.xml | 30 + .../src/main/resources/mapper/PriceMapper.xml | 19 + .../resources/mapper/ProcessDefineMapper.xml | 38 + .../resources/mapper/ReceiverInfoMapper.xml | 29 + .../main/resources/mapper/RelatedMapper.xml | 19 + .../resources/mapper/ServiceLogMapper.xml | 20 + .../resources/mapper/ThirdHeaderMapper.xml | 31 + .../main/resources/mapper/ThirdItemMapper.xml | 33 + .../ThirdPartyAfterReceiverInfoMapper.xml | 29 + .../ThirdPartyAfterSaleHeaderMapper.xml | 85 + .../mapper/ThirdPartyAfterSaleItemMapper.xml | 23 + .../mapper/ThirdPartyOrderMapper.xml | 21 + .../ThirdPartyReturnLogisticsMapper.xml | 20 + .../mapper/ThirdReceiverInfoMapper.xml | 29 + .../mapper/WarehousingNoticeMapper.xml | 20 + .../messages/messages_hpfm_en_US.properties | 182 ++ .../messages/messages_hpfm_zh_CN.properties | 183 ++ .../src/main/resources/order-send.bpmn | 56 + .../src/main/resources/static/js/babel.min.js | 25 + .../src/test/java/org/skyer/order/EsTest.java | 71 + .../java/org/skyer/order/OrderEsTest.java | 65 + skyer-stock/.gitignore | 103 + skyer-stock/.gitlab-ci.yml | 1 + skyer-stock/charts/skyer-stock/Chart.yaml | 5 + skyer-stock/charts/skyer-stock/README.md | 81 + .../charts/skyer-stock/templates/_helpers.tpl | 28 + .../skyer-stock/templates/deployment.yaml | 119 + .../charts/skyer-stock/templates/service.yaml | 41 + skyer-stock/charts/skyer-stock/values.yaml | 130 + skyer-stock/docker/Dockerfile | 6 + skyer-stock/init-local-database.sh | 13 + skyer-stock/pom.xml | 344 +++ skyer-stock/sql/sstock_adjust_detail.sql | 43 + skyer-stock/sql/sstock_adjust_record.sql | 42 + skyer-stock/sql/sstock_change_log.sql | 47 + skyer-stock/sql/sstock_goods_stock_detail.sql | 39 + .../sql/sstock_outbound_delivery_order.sql | 74 + .../sstock_outbound_delivery_order_detail.sql | 39 + skyer-stock/sql/sstock_result_detail.sql | 35 + skyer-stock/sql/sstock_result_record.sql | 72 + skyer-stock/sql/sstock_shop_warehouse.sql | 34 + skyer-stock/sql/sstock_storage_area.sql | 52 + skyer-stock/sql/sstock_warehouse.sql | 44 + skyer-stock/sql/sstock_warehouse_result.sql | 62 + .../sql/sstock_warehouse_result_detail.sql | 35 + skyer-stock/sql/sstock_warehouse_warrant.sql | 66 + .../sql/sstock_warehouse_warrant_detail.sql | 38 + .../sstock_warehouse_warrant_logistics.sql | 33 + skyer-stock/sql/注意 | 1 + .../autoconfigure/stock/EnableSkyerStock.java | 16 + .../stock/StockAutoConfiguration.java | 55 + .../org/skyer/stock/StockApplication.java | 25 + .../controller/v1/AdjustRecordController.java | 66 + .../controller/v1/ChangeLogController.java | 41 + .../controller/v1/GoodsStockController.java | 41 + .../v1/OutboundDeliveryOrderController.java | 46 + .../controller/v1/ResultRecordController.java | 51 + .../controller/v1/StorageAreaController.java | 90 + .../controller/v1/WarehouseController.java | 40 + .../v1/WarehouseResultController.java | 50 + .../v1/WarehouseWarrantController.java | 60 + .../stock/api/dto/AdjustDetailsReqDTO.java | 30 + .../skyer/stock/api/dto/AdjustPageReqDTO.java | 39 + .../stock/api/dto/AdjustRecordReqDTO.java | 39 + .../skyer/stock/api/dto/AdjustSagaDTO.java | 13 + .../org/skyer/stock/api/dto/AuditReqDTO.java | 29 + .../skyer/stock/api/dto/BatchRemoveDTO.java | 24 + .../org/skyer/stock/api/dto/CodeAndIdDTO.java | 12 + .../stock/api/dto/EsStockVersionDTO.java | 11 + .../skyer/stock/api/dto/ExeAllocationDTO.java | 10 + .../skyer/stock/api/dto/GoodsStockDTO.java | 45 + .../stock/api/dto/LogisticsResultDTO.java | 28 + .../org/skyer/stock/api/dto/NeedOrderDTO.java | 19 + .../api/dto/OutboundDeliveryOrderDTO.java | 96 + .../dto/OutboundDeliveryOrderDetailDTO.java | 30 + .../OutboundDeliveryOrderDetailLineDTO.java | 25 + .../api/dto/OutboundDeliveryOrderInfoDTO.java | 129 + .../api/dto/OutboundDeliveryOrderPageDTO.java | 48 + .../org/skyer/stock/api/dto/PageReqDTO.java | 36 + .../api/dto/ReplenishmentPreemptionDTO.java | 17 + .../skyer/stock/api/dto/ResultRecordDTO.java | 101 + .../stock/api/dto/ResultRecordPageDTO.java | 45 + .../java/org/skyer/stock/api/dto/ShopDTO.java | 30 + .../stock/api/dto/StockChangeListDTO.java | 48 + .../org/skyer/stock/api/dto/StockEsDTO.java | 61 + .../skyer/stock/api/dto/StockQueryReqDTO.java | 47 + .../skyer/stock/api/dto/StorageAreaDTO.java | 64 + .../stock/api/dto/StorageAreaListReqDTO.java | 22 + .../stock/api/dto/WarehouseQueryReqDTO.java | 34 + .../api/dto/WarehouseResultPageQueryDTO.java | 34 + .../api/dto/WarehouseWarrantDetailDTO.java | 25 + .../api/dto/WarehouseWarrantLogisticsDTO.java | 15 + .../api/dto/WarehouseWarrantPageQueryDTO.java | 33 + .../api/dto/WarehouseWarrantResultDTO.java | 82 + .../api/dto/WarehouseWarrantSaveDTO.java | 63 + .../stock/config/StockExtraDataManager.java | 36 + .../stock/config/StockSwaggerApiConfig.java | 41 + .../stock/domain/entity/AdjustDetail.java | 85 + .../stock/domain/entity/AdjustRecord.java | 82 + .../skyer/stock/domain/entity/ChangeLog.java | 106 + .../stock/domain/entity/GoodsStockDetail.java | 76 + .../domain/entity/OutboundDeliveryOrder.java | 198 ++ .../entity/OutboundDeliveryOrderDetail.java | 89 + .../stock/domain/entity/ResultDetail.java | 65 + .../stock/domain/entity/ResultRecord.java | 166 ++ .../stock/domain/entity/ShopWarehouse.java | 59 + .../stock/domain/entity/StorageArea.java | 114 + .../skyer/stock/domain/entity/Warehouse.java | 87 + .../stock/domain/entity/WarehouseResult.java | 142 ++ .../domain/entity/WarehouseResultDetail.java | 66 + .../stock/domain/entity/WarehouseWarrant.java | 159 ++ .../domain/entity/WarehouseWarrantDetail.java | 78 + .../entity/WarehouseWarrantLogistics.java | 54 + .../repository/AdjustDetailRepository.java | 36 + .../repository/AdjustRecordRepository.java | 41 + .../repository/ChangeLogRepository.java | 24 + .../GoodsStockDetailRepository.java | 17 + ...OutboundDeliveryOrderDetailRepository.java | 24 + .../OutboundDeliveryOrderRepository.java | 24 + .../repository/ResultDetailRepository.java | 29 + .../repository/ResultRecordRepository.java | 37 + .../repository/ShopWarehouseRepository.java | 21 + .../repository/StorageAreaRepository.java | 48 + .../repository/WarehouseRepository.java | 64 + .../WarehouseResultDetailRepository.java | 22 + .../repository/WarehouseResultRepository.java | 24 + .../WarehouseWarrantDetailRepository.java | 32 + .../WarehouseWarrantLogisticsRepository.java | 13 + .../WarehouseWarrantRepository.java | 33 + .../domain/service/AdjustRecordService.java | 55 + .../domain/service/ChangeLogService.java | 60 + .../service/ComputeAvailableStockService.java | 19 + .../service/OutboundDeliveryOrderService.java | 39 + .../domain/service/ResultRecordService.java | 51 + .../stock/domain/service/StockEsService.java | 42 + .../domain/service/StorageAreaService.java | 50 + .../service/WarehouseResultService.java | 41 + .../domain/service/WarehouseService.java | 29 + .../service/WarehouseWarrantService.java | 40 + .../service/impl/AdjustRecordServiceImpl.java | 292 +++ .../service/impl/ChangeLogServiceImpl.java | 125 + .../ComputeAvailableStockServiceImpl.java | 49 + .../OutboundDeliveryOrderServiceImpl.java | 186 ++ .../service/impl/ResultRecordServiceImpl.java | 223 ++ .../service/impl/StockEsServiceImpl.java | 330 +++ .../service/impl/StorageAreaServiceImpl.java | 190 ++ .../impl/WarehouseResultServiceImpl.java | 156 ++ .../service/impl/WarehouseServiceImpl.java | 113 + .../impl/WarehouseWarrantServiceImpl.java | 174 ++ .../domain/service/saga/StockService.java | 24 + .../saga/impl/ExeStockServiceImpl.java | 47 + .../saga/impl/SkuQtyAdjustServiceImpl.java | 42 + .../service/saga/impl/StockServiceImpl.java | 52 + .../stock/domain/vo/AdjustDetailResVO.java | 43 + .../domain/vo/AdjustRecordPageResVO.java | 68 + .../stock/domain/vo/AdjustRecordResVO.java | 27 + .../stock/domain/vo/AreaInfoDetailsVO.java | 27 + .../stock/domain/vo/GoodsStockResVO.java | 58 + .../stock/domain/vo/LogisticsResultVO.java | 33 + .../org/skyer/stock/domain/vo/OdoQtyVO.java | 20 + .../vo/OutboundDeliveryOrderInfoVO.java | 129 + .../vo/OutboundDeliveryOrderListVO.java | 102 + .../stock/domain/vo/ResultRecordInfoVO.java | 116 + .../stock/domain/vo/ResultRecordListVO.java | 83 + .../stock/domain/vo/ResultRecordQtyVO.java | 13 + .../skyer/stock/domain/vo/RpcGoodsResVO.java | 48 + .../stock/domain/vo/StockChangeListVO.java | 82 + .../skyer/stock/domain/vo/StockChangeVO.java | 20 + .../stock/domain/vo/StorageAreaListVO.java | 64 + .../stock/domain/vo/WarehouseQueryResVO.java | 36 + .../domain/vo/WarehouseResultInfoVO.java | 75 + .../stock/domain/vo/WarehouseResultQtyVO.java | 15 + .../stock/domain/vo/WarehouseResultVO.java | 55 + .../vo/WarehouseWarrantInfoLogisticsVO.java | 15 + .../domain/vo/WarehouseWarrantInfoVO.java | 99 + .../domain/vo/WarehouseWarrantQtyVO.java | 17 + .../stock/domain/vo/WarehouseWarrantVO.java | 70 + .../infra/annocations/DatasourceType.java | 23 + .../stock/infra/constant/ObjectConstant.java | 250 ++ .../convertor/AdjustRecordConvertor.java | 17 + .../infra/convertor/CommonConvertor.java | 80 + .../infra/convertor/StockEsConvertor.java | 20 + .../infra/feign/GoodsSkuRemoteService.java | 30 + .../feign/SkyerPlatformRemoteService.java | 31 + .../infra/feign/UserDetailRemoteService.java | 36 + .../feign/impl/GoodsSkuRemoteServiceImpl.java | 24 + .../impl/SkyerPlatformRemoteServiceImpl.java | 20 + .../impl/UserDetailRemoteServiceImpl.java | 24 + .../infra/mapper/AdjustDetailMapper.java | 13 + .../infra/mapper/AdjustRecordMapper.java | 28 + .../stock/infra/mapper/ChangeLogMapper.java | 24 + .../infra/mapper/GoodsStockDetailMapper.java | 16 + .../OutboundDeliveryOrderDetailMapper.java | 27 + .../mapper/OutboundDeliveryOrderMapper.java | 32 + .../infra/mapper/ResultDetailMapper.java | 22 + .../infra/mapper/ResultRecordMapper.java | 31 + .../infra/mapper/ShopWarehouseMapper.java | 21 + .../stock/infra/mapper/StorageAreaMapper.java | 32 + .../stock/infra/mapper/WarehouseMapper.java | 59 + .../mapper/WarehouseResultDetailMapper.java | 21 + .../infra/mapper/WarehouseResultMapper.java | 24 + .../mapper/WarehouseWarrantDetailMapper.java | 34 + .../WarehouseWarrantLogisticsMapper.java | 13 + .../infra/mapper/WarehouseWarrantMapper.java | 29 + .../properties/DataHierarchyProperties.java | 19 + .../infra/properties/StockProperties.java | 118 + .../remote/api/RemoteCustomizeService.java | 39 + .../api/impl/RemoteCustomizeServiceImpl.java | 142 ++ .../impl/AdjustDetailRepositoryImpl.java | 65 + .../impl/AdjustRecordRepositoryImpl.java | 55 + .../impl/ChangeLogRepositoryImpl.java | 42 + .../impl/GoodsStockDetailRepositoryImpl.java | 25 + ...oundDeliveryOrderDetailRepositoryImpl.java | 32 + .../OutboundDeliveryOrderRepositoryImpl.java | 34 + .../impl/ResultDetailRepositoryImpl.java | 38 + .../impl/ResultRecordRepositoryImpl.java | 53 + .../impl/ShopWarehouseRepositoryImpl.java | 25 + .../impl/StorageAreaRepositoryImpl.java | 58 + .../impl/WarehouseRepositoryImpl.java | 74 + .../WarehouseResultDetailRepositoryImpl.java | 27 + .../impl/WarehouseResultRepositoryImpl.java | 31 + .../WarehouseWarrantDetailRepositoryImpl.java | 33 + ...rehouseWarrantLogisticsRepositoryImpl.java | 18 + .../impl/WarehouseWarrantRepositoryImpl.java | 35 + .../stock/infra/util/EsBoolQueryUtil.java | 534 +++++ .../src/main/resources/application.yml | 168 ++ skyer-stock/src/main/resources/banner.txt | 10 + skyer-stock/src/main/resources/bootstrap.yml | 46 + .../resources/mapper/AdjustDetailMapper.xml | 22 + .../resources/mapper/AdjustRecordMapper.xml | 80 + .../main/resources/mapper/ChangeLogMapper.xml | 141 ++ .../mapper/GoodsStockDetailMapper.xml | 23 + .../OutboundDeliveryOrderDetailMapper.xml | 37 + .../mapper/OutboundDeliveryOrderMapper.xml | 102 + .../resources/mapper/ResultDetailMapper.xml | 20 + .../resources/mapper/ResultRecordMapper.xml | 122 + .../resources/mapper/ShopWarehouseMapper.xml | 20 + .../resources/mapper/StorageAreaMapper.xml | 91 + .../main/resources/mapper/WarehouseMapper.xml | 101 + .../mapper/WarehouseResultDetailMapper.xml | 21 + .../mapper/WarehouseResultMapper.xml | 87 + .../mapper/WarehouseWarrantDetailMapper.xml | 18 + .../WarehouseWarrantLogisticsMapper.xml | 12 + .../mapper/WarehouseWarrantMapper.xml | 63 + .../messages/messages_hpfm_en_US.properties | 182 ++ .../messages/messages_hpfm_zh_CN.properties | 183 ++ .../src/main/resources/static/js/babel.min.js | 25 + skyer-tags/.gitignore | 104 + skyer-tags/.gitlab-ci.yml | 3 + skyer-tags/README.md | 0 skyer-tags/charts/skyer-tags/Chart.yaml | 5 + skyer-tags/charts/skyer-tags/README.md | 81 + .../charts/skyer-tags/templates/_helpers.tpl | 28 + .../skyer-tags/templates/deployment.yaml | 121 + .../charts/skyer-tags/templates/service.yaml | 41 + skyer-tags/charts/skyer-tags/values.yaml | 131 + skyer-tags/docker/Dockerfile | 6 + skyer-tags/init-local-database.sh | 13 + skyer-tags/pom.xml | 312 +++ skyer-tags/sql/skyer_tags.sql | 55 + .../autoconfigure/tags/EnableSkyerLabel.java | 16 + .../tags/TagsAutoConfiguration.java | 55 + .../java/org/skyer/tags/TagsApplication.java | 25 + .../api/controller/v1/LabelController.java | 113 + .../tags/api/dto/BatchUpdateStatusDTO.java | 27 + .../java/org/skyer/tags/api/dto/IdsDTO.java | 21 + .../skyer/tags/api/dto/LabelListQueryDTO.java | 16 + .../org/skyer/tags/api/dto/LabelQueryDTO.java | 35 + .../org/skyer/tags/api/dto/LabelSaveDTO.java | 45 + .../skyer/tags/app/service/LabelService.java | 55 + .../app/service/impl/LabelServiceImpl.java | 164 ++ .../tags/config/TagsExtraDataManager.java | 35 + .../tags/config/TagsSwaggerApiConfig.java | 25 + .../org/skyer/tags/domain/entity/Label.java | 73 + .../domain/repository/LabelRepository.java | 24 + .../org/skyer/tags/domain/vo/LabelVO.java | 68 + .../infra/annocations/DatasourceType.java | 23 + .../tags/infra/constant/CompanyConstants.java | 47 + .../skyer/tags/infra/constant/Constants.java | 331 +++ .../constant/DataHierarchyDisplayStyle.java | 5 + .../tags/infra/constant/FndConstants.java | 344 +++ .../infra/constant/HpfmMsgCodeConstants.java | 264 ++ .../tags/infra/constant/HrConstants.java | 64 + .../tags/infra/convertor/CommonConvertor.java | 80 + .../tags/infra/enums/DBPoolTypeEnum.java | 63 + .../tags/infra/enums/DatabaseTypeEnum.java | 70 + .../tags/infra/handler/MessageHandler.java | 63 + .../skyer/tags/infra/mapper/LabelMapper.java | 22 + .../properties/DataHierarchyProperties.java | 19 + .../tags/infra/properties/TagsProperties.java | 118 + .../remote/api/RemoteCustomizeService.java | 39 + .../api/impl/RemoteCustomizeServiceImpl.java | 142 ++ .../repository/impl/LabelRepositoryImpl.java | 32 + .../java/org/skyer/tags/infra/util/Dates.java | 32 + .../org/skyer/tags/infra/util/JsonUtils.java | 205 ++ .../org/skyer/tags/infra/util/ListUtil.java | 65 + skyer-tags/src/main/resources/application.yml | 146 ++ skyer-tags/src/main/resources/banner.txt | 10 + skyer-tags/src/main/resources/bootstrap.yml | 49 + .../src/main/resources/mapper/LabelMapper.xml | 52 + .../messages/messages_hpfm_en_US.properties | 182 ++ .../messages/messages_hpfm_zh_CN.properties | 183 ++ .../src/main/resources/static/js/babel.min.js | 25 + 2164 files changed, 191564 insertions(+) create mode 100644 front-end/.editorconfig create mode 100644 front-end/.env.development create mode 100644 front-end/.env.production create mode 100644 front-end/.env.qa create mode 100644 front-end/.env.staging create mode 100644 front-end/.env.test create mode 100644 front-end/.env.uat create mode 100644 front-end/.eslintignore create mode 100644 front-end/.eslintrc.js create mode 100644 front-end/.gitignore create mode 100644 front-end/.gitlab-ci.yml create mode 100644 front-end/.prettierrc.js create mode 100644 front-end/.travis.yml create mode 100644 front-end/LICENSE create mode 100644 front-end/README.md create mode 100644 front-end/babel.config.js create mode 100644 front-end/charts/ebc-front/Chart.yaml create mode 100644 front-end/charts/ebc-front/README.md create mode 100644 front-end/charts/ebc-front/templates/_helpers.tpl create mode 100644 front-end/charts/ebc-front/templates/deployment.yaml create mode 100644 front-end/charts/ebc-front/templates/service.yaml create mode 100644 front-end/charts/ebc-front/values.yaml create mode 100644 front-end/docker/Dockerfile create mode 100644 front-end/fj.png create mode 100644 front-end/fjxx.png create mode 100644 front-end/getRouter.js create mode 100644 front-end/gzh.png create mode 100644 front-end/jest.config.js create mode 100644 front-end/jsconfig.json create mode 100644 front-end/package.json create mode 100644 front-end/plopfile.js create mode 100644 front-end/postcss.config.js create mode 100644 front-end/public/favicon.ico create mode 100644 front-end/public/index.html create mode 100644 front-end/public/loading.html create mode 100644 front-end/src/App.vue create mode 100644 front-end/src/api/afterApi/index.js create mode 100644 front-end/src/api/afterApi/internalRefundApi.js create mode 100644 front-end/src/api/afterApi/thirdRefundApi.js create mode 100644 front-end/src/api/authApi/index.js create mode 100644 front-end/src/api/baseDataApi/afterSaleApi.js create mode 100644 front-end/src/api/baseDataApi/codeRuleApi.js create mode 100644 front-end/src/api/baseDataApi/countryApi.js create mode 100644 front-end/src/api/baseDataApi/index.js create mode 100644 front-end/src/api/baseDataApi/lovApi.js create mode 100644 front-end/src/api/channelApi/companyApi.js create mode 100644 front-end/src/api/channelApi/dealerApi.js create mode 100644 front-end/src/api/channelApi/index.js create mode 100644 front-end/src/api/channelApi/salesOrganizationApi.js create mode 100644 front-end/src/api/channelApi/shopManageApi.js create mode 100644 front-end/src/api/channelApi/shopOnlineApi.js create mode 100644 front-end/src/api/channelApi/shopPhysicalApi.js create mode 100644 front-end/src/api/channelApi/warehouseApi.js create mode 100644 front-end/src/api/commonApi/areaApi.js create mode 100644 front-end/src/api/commonApi/index.js create mode 100644 front-end/src/api/commonApi/loginApi.js create mode 100644 front-end/src/api/commonApi/optionApi.js create mode 100644 front-end/src/api/commonApi/settingApi.js create mode 100644 front-end/src/api/financeApi/checkingApi.js create mode 100644 front-end/src/api/financeApi/index.js create mode 100644 front-end/src/api/financeApi/parseStrategyApi.js create mode 100644 front-end/src/api/goodsApi/attributeApi.js create mode 100644 front-end/src/api/goodsApi/attributeRelationApi.js create mode 100644 front-end/src/api/goodsApi/auditApi.js create mode 100644 front-end/src/api/goodsApi/brandApi.js create mode 100644 front-end/src/api/goodsApi/categoryApi.js create mode 100644 front-end/src/api/goodsApi/index.js create mode 100644 front-end/src/api/goodsApi/installServiceApi.js create mode 100644 front-end/src/api/goodsApi/managerApi.js create mode 100644 front-end/src/api/goodsApi/materialApi.js create mode 100644 front-end/src/api/goodsApi/otherInfoApi.js create mode 100644 front-end/src/api/goodsApi/priceApi.js create mode 100644 front-end/src/api/goodsApi/skuApi.js create mode 100644 front-end/src/api/goodsApi/skuGroupApi.js create mode 100644 front-end/src/api/goodsApi/spuSonApi.js create mode 100644 front-end/src/api/index.js create mode 100644 front-end/src/api/logisticApi/abnormalApi.js create mode 100644 front-end/src/api/logisticApi/businessApi.js create mode 100644 front-end/src/api/logisticApi/claimApi.js create mode 100644 front-end/src/api/logisticApi/companyApi.js create mode 100644 front-end/src/api/logisticApi/freightApi.js create mode 100644 front-end/src/api/logisticApi/index.js create mode 100644 front-end/src/api/logisticApi/mappingApi.js create mode 100644 front-end/src/api/logisticApi/orderApi.js create mode 100644 front-end/src/api/logisticApi/relationApi.js create mode 100644 front-end/src/api/menuApi/index.js create mode 100644 front-end/src/api/messageApi/emailApi.js create mode 100644 front-end/src/api/messageApi/index.js create mode 100644 front-end/src/api/messageApi/noticeApi.js create mode 100644 front-end/src/api/messageApi/sendApi.js create mode 100644 front-end/src/api/messageApi/smsApi.js create mode 100644 front-end/src/api/messageApi/templateApi.js create mode 100644 front-end/src/api/orderApi/auditApi.js create mode 100644 front-end/src/api/orderApi/index.js create mode 100644 front-end/src/api/orderApi/internalApi.js create mode 100644 front-end/src/api/orderApi/itemPriceApi.js create mode 100644 front-end/src/api/orderApi/preemptApi.js create mode 100644 front-end/src/api/orderApi/processApi.js create mode 100644 front-end/src/api/orderApi/sourcingApi.js create mode 100644 front-end/src/api/orderApi/stockoutApi.js create mode 100644 front-end/src/api/orderApi/thirdApi.js create mode 100644 front-end/src/api/promotionApi/index.js create mode 100644 front-end/src/api/promotionApi/promoActivityApi.js create mode 100644 front-end/src/api/reportApi/channelApi.js create mode 100644 front-end/src/api/reportApi/index.js create mode 100644 front-end/src/api/reportApi/orderApi.js create mode 100644 front-end/src/api/roleApi/index.js create mode 100644 front-end/src/api/settingApi/fileApi.js create mode 100644 front-end/src/api/settingApi/index.js create mode 100644 front-end/src/api/settingApi/indexes.js create mode 100644 front-end/src/api/settingApi/instanceApi.js create mode 100644 front-end/src/api/settingApi/logistics.js create mode 100644 front-end/src/api/settingApi/orderProcessApi.js create mode 100644 front-end/src/api/settingApi/reportApi.js create mode 100644 front-end/src/api/settingApi/schedulerApi.js create mode 100644 front-end/src/api/settingApi/stockProcessApi.js create mode 100644 front-end/src/api/settingApi/strategyApi.js create mode 100644 front-end/src/api/simpApi/index.js create mode 100644 front-end/src/api/stockApi/abnormalApi.js create mode 100644 front-end/src/api/stockApi/adjustRecordsApi.js create mode 100644 front-end/src/api/stockApi/changeRecordApi.js create mode 100644 front-end/src/api/stockApi/deliveryApi.js create mode 100644 front-end/src/api/stockApi/distributeSpaceApi.js create mode 100644 front-end/src/api/stockApi/entryApi.js create mode 100644 front-end/src/api/stockApi/goodsStocksApi.js create mode 100644 front-end/src/api/stockApi/index.js create mode 100644 front-end/src/api/stockApi/initializeApi.js create mode 100644 front-end/src/api/stockApi/moveRecordsApi.js create mode 100644 front-end/src/api/stockApi/noticeAndResultApi.js create mode 100644 front-end/src/api/stockApi/reserveRecordsApi.js create mode 100644 front-end/src/api/stockApi/rulesApi.js create mode 100644 front-end/src/api/stockApi/sourcingApi.js create mode 100644 front-end/src/api/stockApi/stockOutApi.js create mode 100644 front-end/src/api/stockApi/structureApi.js create mode 100644 front-end/src/api/stockApi/transferApi.js create mode 100644 front-end/src/api/stockApi/warehouseApi.js create mode 100644 front-end/src/api/stockApi/warehouseRelationApi.js create mode 100644 front-end/src/api/strategyApi/index.js create mode 100644 front-end/src/api/strategyApi/marketingAuditApi.js create mode 100644 front-end/src/api/strategyApi/sourceApi.js create mode 100644 front-end/src/api/tagsApi/index.js create mode 100644 front-end/src/api/tenantApi/index.js create mode 100644 front-end/src/api/testApi.js create mode 100644 front-end/src/api/userApi/index.js create mode 100644 front-end/src/api/userGroupApi/index.js create mode 100644 front-end/src/api/worksheetApi/index.js create mode 100644 front-end/src/api/worksheetApi/serviceApi.js create mode 100644 front-end/src/assets/401_images/401.gif create mode 100644 front-end/src/assets/404_images/404.png create mode 100644 front-end/src/assets/404_images/404_cloud.png create mode 100644 front-end/src/assets/custom-theme/fonts/element-icons.ttf create mode 100644 front-end/src/assets/custom-theme/fonts/element-icons.woff create mode 100644 front-end/src/assets/custom-theme/index.css create mode 100644 front-end/src/assets/image/contact-phone-white.png create mode 100644 front-end/src/assets/image/contact-phone.png create mode 100644 front-end/src/assets/image/contact-wx-white.png create mode 100644 front-end/src/assets/image/contact-wx.png create mode 100644 front-end/src/assets/image/favicon.png create mode 100644 front-end/src/assets/image/login-background.jpg create mode 100644 front-end/src/assets/image/logo-circle.png create mode 100644 front-end/src/assets/image/logo.png create mode 100644 front-end/src/assets/image/welcome.png create mode 100644 front-end/src/assets/image/wx.png create mode 100644 front-end/src/assets/image/微信/微信.png create mode 100644 front-end/src/assets/image/电话1/电话1.png create mode 100644 front-end/src/assets/sys/下架出库.png create mode 100644 front-end/src/assets/sys/订单出库.png create mode 100644 front-end/src/assets/sys/退货入库.png create mode 100644 front-end/src/assets/sys/采购入库.png create mode 100644 front-end/src/directive/clipboard/clipboard.js create mode 100644 front-end/src/directive/clipboard/index.js create mode 100644 front-end/src/directive/el-drag-dialog/drag.js create mode 100644 front-end/src/directive/el-drag-dialog/index.js create mode 100644 front-end/src/directive/el-table/adaptive.js create mode 100644 front-end/src/directive/el-table/index.js create mode 100644 front-end/src/directive/permission/draggable.js create mode 100644 front-end/src/directive/permission/hasDropdownChildren.js create mode 100644 front-end/src/directive/permission/hasPermi.js create mode 100644 front-end/src/directive/permission/hasRole.js create mode 100644 front-end/src/directive/permission/index.js create mode 100644 front-end/src/directive/permission/permission.js create mode 100644 front-end/src/directive/sticky.js create mode 100644 front-end/src/directive/waves/index.js create mode 100644 front-end/src/directive/waves/waves.css create mode 100644 front-end/src/directive/waves/waves.js create mode 100644 front-end/src/filters/index.js create mode 100644 front-end/src/icons/index.js create mode 100644 front-end/src/icons/svg/404.svg create mode 100644 front-end/src/icons/svg/bug.svg create mode 100644 front-end/src/icons/svg/build.svg create mode 100644 front-end/src/icons/svg/business-center.svg create mode 100644 front-end/src/icons/svg/cascader.svg create mode 100644 front-end/src/icons/svg/chart.svg create mode 100644 front-end/src/icons/svg/checkbox.svg create mode 100644 front-end/src/icons/svg/clipboard.svg create mode 100644 front-end/src/icons/svg/code.svg create mode 100644 front-end/src/icons/svg/color.svg create mode 100644 front-end/src/icons/svg/component.svg create mode 100644 front-end/src/icons/svg/dashboard.svg create mode 100644 front-end/src/icons/svg/date-range.svg create mode 100644 front-end/src/icons/svg/date.svg create mode 100644 front-end/src/icons/svg/dict.svg create mode 100644 front-end/src/icons/svg/documentation.svg create mode 100644 front-end/src/icons/svg/download.svg create mode 100644 front-end/src/icons/svg/drag.svg create mode 100644 front-end/src/icons/svg/druid.svg create mode 100644 front-end/src/icons/svg/edit.svg create mode 100644 front-end/src/icons/svg/education.svg create mode 100644 front-end/src/icons/svg/email.svg create mode 100644 front-end/src/icons/svg/example.svg create mode 100644 front-end/src/icons/svg/excel.svg create mode 100644 front-end/src/icons/svg/exit-fullscreen.svg create mode 100644 front-end/src/icons/svg/eye-open.svg create mode 100644 front-end/src/icons/svg/eye.svg create mode 100644 front-end/src/icons/svg/form.svg create mode 100644 front-end/src/icons/svg/fullscreen.svg create mode 100644 front-end/src/icons/svg/github.svg create mode 100644 front-end/src/icons/svg/guide.svg create mode 100644 front-end/src/icons/svg/html.svg create mode 100644 front-end/src/icons/svg/icon.svg create mode 100644 front-end/src/icons/svg/input.svg create mode 100644 front-end/src/icons/svg/international.svg create mode 100644 front-end/src/icons/svg/job.svg create mode 100644 front-end/src/icons/svg/language.svg create mode 100644 front-end/src/icons/svg/link.svg create mode 100644 front-end/src/icons/svg/list.svg create mode 100644 front-end/src/icons/svg/lock.svg create mode 100644 front-end/src/icons/svg/log.svg create mode 100644 front-end/src/icons/svg/logininfor.svg create mode 100644 front-end/src/icons/svg/logout.svg create mode 100644 front-end/src/icons/svg/message.svg create mode 100644 front-end/src/icons/svg/money.svg create mode 100644 front-end/src/icons/svg/monitor.svg create mode 100644 front-end/src/icons/svg/more.svg create mode 100644 front-end/src/icons/svg/nested.svg create mode 100644 front-end/src/icons/svg/number.svg create mode 100644 front-end/src/icons/svg/online.svg create mode 100644 front-end/src/icons/svg/password.svg create mode 100644 front-end/src/icons/svg/pdf.svg create mode 100644 front-end/src/icons/svg/people.svg create mode 100644 front-end/src/icons/svg/peoples.svg create mode 100644 front-end/src/icons/svg/phone.svg create mode 100644 front-end/src/icons/svg/pointer.svg create mode 100644 front-end/src/icons/svg/post.svg create mode 100644 front-end/src/icons/svg/qq.svg create mode 100644 front-end/src/icons/svg/question.svg create mode 100644 front-end/src/icons/svg/radio.svg create mode 100644 front-end/src/icons/svg/rate.svg create mode 100644 front-end/src/icons/svg/row.svg create mode 100644 front-end/src/icons/svg/search.svg create mode 100644 front-end/src/icons/svg/select.svg create mode 100644 front-end/src/icons/svg/server.svg create mode 100644 front-end/src/icons/svg/setting-center.svg create mode 100644 front-end/src/icons/svg/shopping.svg create mode 100644 front-end/src/icons/svg/size.svg create mode 100644 front-end/src/icons/svg/skill.svg create mode 100644 front-end/src/icons/svg/slider.svg create mode 100644 front-end/src/icons/svg/star.svg create mode 100644 front-end/src/icons/svg/swagger.svg create mode 100644 front-end/src/icons/svg/switch.svg create mode 100644 front-end/src/icons/svg/system.svg create mode 100644 front-end/src/icons/svg/tab.svg create mode 100644 front-end/src/icons/svg/table.svg create mode 100644 front-end/src/icons/svg/textarea.svg create mode 100644 front-end/src/icons/svg/theme.svg create mode 100644 front-end/src/icons/svg/time-range.svg create mode 100644 front-end/src/icons/svg/time.svg create mode 100644 front-end/src/icons/svg/tool.svg create mode 100644 front-end/src/icons/svg/tree-table.svg create mode 100644 front-end/src/icons/svg/tree.svg create mode 100644 front-end/src/icons/svg/upload.svg create mode 100644 front-end/src/icons/svg/user.svg create mode 100644 front-end/src/icons/svg/validCode.svg create mode 100644 front-end/src/icons/svg/wechat.svg create mode 100644 front-end/src/icons/svg/word.svg create mode 100644 front-end/src/icons/svg/zip.svg create mode 100644 front-end/src/icons/svgo.yml create mode 100644 front-end/src/layout/EmptyRouter.vue create mode 100644 front-end/src/layout/EmptyRouterAlive.vue create mode 100644 front-end/src/layout/components/AppMain.vue create mode 100644 front-end/src/layout/components/Contact/index.vue create mode 100644 front-end/src/layout/components/Navbar.vue create mode 100644 front-end/src/layout/components/Settings/index.vue create mode 100644 front-end/src/layout/components/Sidebar/FixiOSBug.js create mode 100644 front-end/src/layout/components/Sidebar/HoverItem.vue create mode 100644 front-end/src/layout/components/Sidebar/Item.vue create mode 100644 front-end/src/layout/components/Sidebar/Link.vue create mode 100644 front-end/src/layout/components/Sidebar/Logo.vue create mode 100644 front-end/src/layout/components/Sidebar/SidebarItem.vue create mode 100644 front-end/src/layout/components/Sidebar/index.vue create mode 100644 front-end/src/layout/components/TagsView/ScrollPane.vue create mode 100644 front-end/src/layout/components/TagsView/index.vue create mode 100644 front-end/src/layout/components/WelcomeDialog/index.vue create mode 100644 front-end/src/layout/components/index.js create mode 100644 front-end/src/layout/index.vue create mode 100644 front-end/src/layout/mixin/ResizeHandler.js create mode 100644 front-end/src/main.js create mode 100644 front-end/src/packages/BjCheckboxLov/index.vue create mode 100644 front-end/src/packages/BjCopyIcon/index.vue create mode 100644 front-end/src/packages/BjDateTimerPicker/index.vue create mode 100644 front-end/src/packages/BjDialog/index.vue create mode 100644 front-end/src/packages/BjDialogList/index.vue create mode 100644 front-end/src/packages/BjDialogTable/index.vue create mode 100644 front-end/src/packages/BjDivider/index.vue create mode 100644 front-end/src/packages/BjDrawerForm/index.vue create mode 100644 front-end/src/packages/BjImportFile/index.vue create mode 100644 front-end/src/packages/BjInputCode/index.vue create mode 100644 front-end/src/packages/BjInputMoney/index.vue create mode 100644 front-end/src/packages/BjInputNumber/index.vue create mode 100644 front-end/src/packages/BjPagingTable/README.md create mode 100644 front-end/src/packages/BjPagingTable/index.vue create mode 100644 front-end/src/packages/BjRadioLov/index.vue create mode 100644 front-end/src/packages/BjRouteTabs/index.vue create mode 100644 front-end/src/packages/BjSelectChinaArea/index.vue create mode 100644 front-end/src/packages/BjSelectLov/index.vue create mode 100644 front-end/src/packages/BjSelectProvinces/index.vue create mode 100644 front-end/src/packages/BjTag/index.vue create mode 100644 front-end/src/packages/BjTagList/index.vue create mode 100644 front-end/src/packages/BjTextarea/index.vue create mode 100644 front-end/src/packages/BjUpload/index.vue create mode 100644 front-end/src/packages/README.md create mode 100644 front-end/src/packages/ScrollLoad/README.md create mode 100644 front-end/src/packages/ScrollLoad/index.js create mode 100644 front-end/src/packages/ScrollSelect/README.md create mode 100644 front-end/src/packages/ScrollSelect/index.vue create mode 100644 front-end/src/packages/index.js create mode 100644 front-end/src/packages/package.json create mode 100644 front-end/src/permission.js create mode 100644 front-end/src/permissionOS.json create mode 100644 front-end/src/router/center-business/after.js create mode 100644 front-end/src/router/center-business/channel.js create mode 100644 front-end/src/router/center-business/goods.js create mode 100644 front-end/src/router/center-business/index.js create mode 100644 front-end/src/router/center-business/label.js create mode 100644 front-end/src/router/center-business/log.js create mode 100644 front-end/src/router/center-business/order.js create mode 100644 front-end/src/router/center-business/stock.js create mode 100644 front-end/src/router/center-business/user.js create mode 100644 front-end/src/router/center-business/worksheet.js create mode 100644 front-end/src/router/center-setting/after.js create mode 100644 front-end/src/router/center-setting/base-data.js create mode 100644 front-end/src/router/center-setting/file.js create mode 100644 front-end/src/router/center-setting/goods.js create mode 100644 front-end/src/router/center-setting/index.js create mode 100644 front-end/src/router/center-setting/indexes.js create mode 100644 front-end/src/router/center-setting/instance.js create mode 100644 front-end/src/router/center-setting/message.js create mode 100644 front-end/src/router/center-setting/scheduler.js create mode 100644 front-end/src/router/center-setting/user.js create mode 100644 front-end/src/router/index.js create mode 100644 front-end/src/settings.js create mode 100644 front-end/src/store/getters.js create mode 100644 front-end/src/store/index.js create mode 100644 front-end/src/store/modules/app.js create mode 100644 front-end/src/store/modules/errorLog.js create mode 100644 front-end/src/store/modules/fileUrl.js create mode 100644 front-end/src/store/modules/permission.js create mode 100644 front-end/src/store/modules/settings.js create mode 100644 front-end/src/store/modules/tagsView.js create mode 100644 front-end/src/store/modules/user.js create mode 100644 front-end/src/store/modules/values.js create mode 100644 front-end/src/styles/btn.scss create mode 100644 front-end/src/styles/element-ui.scss create mode 100644 front-end/src/styles/element-variables.scss create mode 100644 front-end/src/styles/index.scss create mode 100644 front-end/src/styles/mixin.scss create mode 100644 front-end/src/styles/ruoyi.scss create mode 100644 front-end/src/styles/shop.scss create mode 100644 front-end/src/styles/sidebar.scss create mode 100644 front-end/src/styles/transition.scss create mode 100644 front-end/src/styles/variables.scss create mode 100644 front-end/src/utils/BjDialogListConfig.js create mode 100644 front-end/src/utils/auth.js create mode 100644 front-end/src/utils/axios.js create mode 100644 front-end/src/utils/bpmn/customTranslate.js create mode 100644 front-end/src/utils/bpmn/defalutXml.js create mode 100644 front-end/src/utils/bpmn/translationsGerman.js create mode 100644 front-end/src/utils/clipboard.js create mode 100644 front-end/src/utils/constants.js create mode 100644 front-end/src/utils/error-log.js create mode 100644 front-end/src/utils/get-page-title.js create mode 100644 front-end/src/utils/index.js create mode 100644 front-end/src/utils/jumper2router.js create mode 100644 front-end/src/utils/open-window.js create mode 100644 front-end/src/utils/page-mixin.js create mode 100644 front-end/src/utils/permission.js create mode 100644 front-end/src/utils/prototype-native.js create mode 100644 front-end/src/utils/prototype-vue.js create mode 100644 front-end/src/utils/request.js create mode 100644 front-end/src/utils/scroll-to.js create mode 100644 front-end/src/utils/validate.js create mode 100644 front-end/src/utils/view-mixin.js create mode 100644 front-end/src/vendor/Export2Excel.js create mode 100644 front-end/src/vendor/Export2Zip.js create mode 100644 front-end/src/views/center-business/after/components/BaseInfoDialog.vue create mode 100644 front-end/src/views/center-business/after/components/InternalOrderList.vue create mode 100644 front-end/src/views/center-business/after/components/LogisticsInfoDialog.vue create mode 100644 front-end/src/views/center-business/after/components/LogisticsListDialog.vue create mode 100644 front-end/src/views/center-business/after/components/ReceivingWarehouseDialog.vue create mode 100644 front-end/src/views/center-business/after/components/SkuList.vue create mode 100644 front-end/src/views/center-business/after/components/UploadImgDialog.vue create mode 100644 front-end/src/views/center-business/after/components/api.js create mode 100644 front-end/src/views/center-business/after/internal/exchange/add.vue create mode 100644 front-end/src/views/center-business/after/internal/exchange/data.json create mode 100644 front-end/src/views/center-business/after/internal/exchange/index.vue create mode 100644 front-end/src/views/center-business/after/internal/exchange/view.vue create mode 100644 front-end/src/views/center-business/after/internal/refund/add.vue create mode 100644 front-end/src/views/center-business/after/internal/refund/data.json create mode 100644 front-end/src/views/center-business/after/internal/refund/index.vue create mode 100644 front-end/src/views/center-business/after/internal/refund/view.vue create mode 100644 front-end/src/views/center-business/after/internal/return/add.vue create mode 100644 front-end/src/views/center-business/after/internal/return/data.json create mode 100644 front-end/src/views/center-business/after/internal/return/index.vue create mode 100644 front-end/src/views/center-business/after/internal/return/view.vue create mode 100644 front-end/src/views/center-business/after/third/exchange/data.json create mode 100644 front-end/src/views/center-business/after/third/exchange/index.vue create mode 100644 front-end/src/views/center-business/after/third/exchange/view.vue create mode 100644 front-end/src/views/center-business/after/third/refund/add.vue create mode 100644 front-end/src/views/center-business/after/third/refund/components/SkuList.vue create mode 100644 front-end/src/views/center-business/after/third/refund/data.json create mode 100644 front-end/src/views/center-business/after/third/refund/index.vue create mode 100644 front-end/src/views/center-business/after/third/refund/view.vue create mode 100644 front-end/src/views/center-business/after/third/return/add.vue create mode 100644 front-end/src/views/center-business/after/third/return/data.json create mode 100644 front-end/src/views/center-business/after/third/return/index.vue create mode 100644 front-end/src/views/center-business/after/third/return/view.vue create mode 100644 front-end/src/views/center-business/channel/dealer/components/DataForm.vue create mode 100644 front-end/src/views/center-business/channel/dealer/index.vue create mode 100644 front-end/src/views/center-business/channel/online/components/DataForm.vue create mode 100644 front-end/src/views/center-business/channel/online/index.vue create mode 100644 front-end/src/views/center-business/channel/physical/components/DataForm.vue create mode 100644 front-end/src/views/center-business/channel/physical/index.vue create mode 100644 front-end/src/views/center-business/channel/storage/components/DataForm.vue create mode 100644 front-end/src/views/center-business/channel/storage/index.vue create mode 100644 front-end/src/views/center-business/goods/audit/components/dataForm.vue create mode 100644 front-end/src/views/center-business/goods/audit/components/dialogIdea.vue create mode 100644 front-end/src/views/center-business/goods/audit/sku/components/DialogIdea.vue create mode 100644 front-end/src/views/center-business/goods/audit/sku/components/PageOrdinaryPackage.vue create mode 100644 front-end/src/views/center-business/goods/audit/sku/components/RowDetailFromSkuDetailList.vue create mode 100644 front-end/src/views/center-business/goods/audit/sku/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/goods/audit/sku/ordinary/audit.vue create mode 100644 front-end/src/views/center-business/goods/audit/sku/ordinary/index.vue create mode 100644 front-end/src/views/center-business/goods/audit/sku/ordinary/view.vue create mode 100644 front-end/src/views/center-business/goods/audit/sku/package/audit.vue create mode 100644 front-end/src/views/center-business/goods/audit/sku/package/index.vue create mode 100644 front-end/src/views/center-business/goods/audit/sku/package/view.vue create mode 100644 front-end/src/views/center-business/goods/brand/components/DataForm.vue create mode 100644 front-end/src/views/center-business/goods/brand/index.vue create mode 100644 front-end/src/views/center-business/goods/classify/components/DataForm.vue create mode 100644 front-end/src/views/center-business/goods/classify/index.vue create mode 100644 front-end/src/views/center-business/goods/components/DefaultAttributeList.json create mode 100644 front-end/src/views/center-business/goods/components/GoodsAttribute.vue create mode 100644 front-end/src/views/center-business/goods/components/GoodsAttributeList.vue create mode 100644 front-end/src/views/center-business/goods/components/README.md create mode 100644 front-end/src/views/center-business/goods/material/components/DataForm.vue create mode 100644 front-end/src/views/center-business/goods/material/index.vue create mode 100644 front-end/src/views/center-business/goods/otherInfo/add.vue create mode 100644 front-end/src/views/center-business/goods/otherInfo/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/goods/otherInfo/edit.vue create mode 100644 front-end/src/views/center-business/goods/otherInfo/index.vue create mode 100644 front-end/src/views/center-business/goods/price/components/tableView/index.vue create mode 100644 front-end/src/views/center-business/goods/price/history/index.vue create mode 100644 front-end/src/views/center-business/goods/price/item/index.vue create mode 100644 front-end/src/views/center-business/goods/price/sku/add.vue create mode 100644 front-end/src/views/center-business/goods/price/sku/components/DataForm.vue create mode 100644 front-end/src/views/center-business/goods/price/sku/edit.vue create mode 100644 front-end/src/views/center-business/goods/price/sku/index.vue create mode 100644 front-end/src/views/center-business/goods/sku/components/AttributeInput.vue create mode 100644 front-end/src/views/center-business/goods/sku/components/ColumnSetting.vue create mode 100644 front-end/src/views/center-business/goods/sku/components/DataForm.vue create mode 100644 front-end/src/views/center-business/goods/sku/components/PageOrdinaryPackage.vue create mode 100644 front-end/src/views/center-business/goods/sku/components/SkuRowData.vue create mode 100644 front-end/src/views/center-business/goods/sku/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/goods/sku/components/addForm.vue create mode 100644 front-end/src/views/center-business/goods/sku/draft/index.vue create mode 100644 front-end/src/views/center-business/goods/sku/ordinary/add.vue create mode 100644 front-end/src/views/center-business/goods/sku/ordinary/edit.vue create mode 100644 front-end/src/views/center-business/goods/sku/ordinary/index.vue create mode 100644 front-end/src/views/center-business/goods/sku/ordinary/view.vue create mode 100644 front-end/src/views/center-business/goods/sku/package/add.vue create mode 100644 front-end/src/views/center-business/goods/sku/package/edit.vue create mode 100644 front-end/src/views/center-business/goods/sku/package/index.vue create mode 100644 front-end/src/views/center-business/goods/sku/package/view.vue create mode 100644 front-end/src/views/center-business/goods/spu/components/PageOrdinaryPackage.vue create mode 100644 front-end/src/views/center-business/goods/spu/components/viewForm.vue create mode 100644 front-end/src/views/center-business/goods/spu/ordinary/add.vue create mode 100644 front-end/src/views/center-business/goods/spu/ordinary/edit.vue create mode 100644 front-end/src/views/center-business/goods/spu/ordinary/index.vue create mode 100644 front-end/src/views/center-business/goods/spu/ordinary/view.vue create mode 100644 front-end/src/views/center-business/goods/spu/package/add.vue create mode 100644 front-end/src/views/center-business/goods/spu/package/edit.vue create mode 100644 front-end/src/views/center-business/goods/spu/package/index.vue create mode 100644 front-end/src/views/center-business/goods/spu/package/view.vue create mode 100644 front-end/src/views/center-business/goods/virtual/install-service/add.vue create mode 100644 front-end/src/views/center-business/goods/virtual/install-service/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/goods/virtual/install-service/edit.vue create mode 100644 front-end/src/views/center-business/goods/virtual/install-service/index.vue create mode 100644 front-end/src/views/center-business/goods/virtual/install-service/view.vue create mode 100644 front-end/src/views/center-business/goods/virtual/sku-group/add.vue create mode 100644 front-end/src/views/center-business/goods/virtual/sku-group/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/goods/virtual/sku-group/edit.vue create mode 100644 front-end/src/views/center-business/goods/virtual/sku-group/index.vue create mode 100644 front-end/src/views/center-business/goods/virtual/sku-group/view.vue create mode 100644 front-end/src/views/center-business/goods/virtual/spu-son/add.vue create mode 100644 front-end/src/views/center-business/goods/virtual/spu-son/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/goods/virtual/spu-son/edit.vue create mode 100644 front-end/src/views/center-business/goods/virtual/spu-son/index.vue create mode 100644 front-end/src/views/center-business/goods/virtual/spu-son/view.vue create mode 100644 front-end/src/views/center-business/label/hand/components/DataForm.vue create mode 100644 front-end/src/views/center-business/label/hand/components/Page.vue create mode 100644 front-end/src/views/center-business/label/hand/index.vue create mode 100644 front-end/src/views/center-business/label/sys/index.vue create mode 100644 front-end/src/views/center-business/order/abnormal/components/setWarnDialog.vue create mode 100644 front-end/src/views/center-business/order/abnormal/syncAbnormal.vue create mode 100644 front-end/src/views/center-business/order/abnormal/warning.vue create mode 100644 front-end/src/views/center-business/order/components/BjOrderStatus/index.vue create mode 100644 front-end/src/views/center-business/order/components/EditTags/index.vue create mode 100644 front-end/src/views/center-business/order/components/FiveFlag/index.vue create mode 100644 front-end/src/views/center-business/order/components/LogTable/index.js create mode 100644 front-end/src/views/center-business/order/components/LogTable/log.vue create mode 100644 front-end/src/views/center-business/order/internal/add.vue create mode 100644 front-end/src/views/center-business/order/internal/components/AddForm.vue create mode 100644 front-end/src/views/center-business/order/internal/components/EditReceiverInfo/index.vue create mode 100644 front-end/src/views/center-business/order/internal/components/EditRemarks/index.vue create mode 100644 front-end/src/views/center-business/order/internal/components/GoodsInfoTab/SkuLineList.vue create mode 100644 front-end/src/views/center-business/order/internal/components/GoodsInfoTab/SkuList.vue create mode 100644 front-end/src/views/center-business/order/internal/components/GoodsInfoTab/index.vue create mode 100644 front-end/src/views/center-business/order/internal/components/LogisticsTable/DeliverTable.vue create mode 100644 front-end/src/views/center-business/order/internal/components/LogisticsTable/PackageTable.vue create mode 100644 front-end/src/views/center-business/order/internal/components/LogisticsTable/ParcelDetails.vue create mode 100644 front-end/src/views/center-business/order/internal/components/LogisticsTable/index.vue create mode 100644 front-end/src/views/center-business/order/internal/components/O2oConfirmReceipt/index.vue create mode 100644 front-end/src/views/center-business/order/internal/components/O2oViewForm.vue create mode 100644 front-end/src/views/center-business/order/internal/components/OrderItemTable/index.vue create mode 100644 front-end/src/views/center-business/order/internal/components/PageIndex.vue create mode 100644 front-end/src/views/center-business/order/internal/components/SuspendReason/index.vue create mode 100644 front-end/src/views/center-business/order/internal/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/order/internal/data.json create mode 100644 front-end/src/views/center-business/order/internal/index.vue create mode 100644 front-end/src/views/center-business/order/internal/view.vue create mode 100644 front-end/src/views/center-business/order/third/add.vue create mode 100644 front-end/src/views/center-business/order/third/components/AddForm.vue create mode 100644 front-end/src/views/center-business/order/third/components/OrderItemTable/index.vue create mode 100644 front-end/src/views/center-business/order/third/components/PageIndex.vue create mode 100644 front-end/src/views/center-business/order/third/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/order/third/components/dialogForm.vue create mode 100644 front-end/src/views/center-business/order/third/data.json create mode 100644 front-end/src/views/center-business/order/third/index.vue create mode 100644 front-end/src/views/center-business/order/third/view.vue create mode 100644 front-end/src/views/center-business/source/area/index.vue create mode 100644 front-end/src/views/center-business/source/components/viewForm.vue create mode 100644 front-end/src/views/center-business/source/parcel/components/dialogForm.vue create mode 100644 front-end/src/views/center-business/source/parcel/components/sendOut.vue create mode 100644 front-end/src/views/center-business/source/parcel/components/sendOut2.vue create mode 100644 front-end/src/views/center-business/source/parcel/components/setMealSeparate.vue create mode 100644 front-end/src/views/center-business/source/parcel/index.vue create mode 100644 front-end/src/views/center-business/stock/abnormal/components/allot.vue create mode 100644 front-end/src/views/center-business/stock/abnormal/components/purchase.vue create mode 100644 front-end/src/views/center-business/stock/abnormal/order/index.vue create mode 100644 front-end/src/views/center-business/stock/abnormal/warehouse/index.vue create mode 100644 front-end/src/views/center-business/stock/change/index.vue create mode 100644 front-end/src/views/center-business/stock/components/DialogStockoutOrderAllot.vue create mode 100644 front-end/src/views/center-business/stock/delivery/components/tableDialog.vue create mode 100644 front-end/src/views/center-business/stock/delivery/inform/index.vue create mode 100644 front-end/src/views/center-business/stock/delivery/inform/view.vue create mode 100644 front-end/src/views/center-business/stock/delivery/result/index.vue create mode 100644 front-end/src/views/center-business/stock/delivery/result/view.vue create mode 100644 front-end/src/views/center-business/stock/distribution/plan/add.vue create mode 100644 front-end/src/views/center-business/stock/distribution/plan/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/stock/distribution/plan/edit.vue create mode 100644 front-end/src/views/center-business/stock/distribution/plan/index.vue create mode 100644 front-end/src/views/center-business/stock/distribution/plan/view.vue create mode 100644 front-end/src/views/center-business/stock/distribution/qty/addSku.vue create mode 100644 front-end/src/views/center-business/stock/distribution/qty/addWarehouse.vue create mode 100644 front-end/src/views/center-business/stock/distribution/qty/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/stock/distribution/qty/edit.vue create mode 100644 front-end/src/views/center-business/stock/distribution/qty/index.vue create mode 100644 front-end/src/views/center-business/stock/distribution/qty/view.vue create mode 100644 front-end/src/views/center-business/stock/distribution/ratio/addSku.vue create mode 100644 front-end/src/views/center-business/stock/distribution/ratio/addWarehouse.vue create mode 100644 front-end/src/views/center-business/stock/distribution/ratio/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/stock/distribution/ratio/edit.vue create mode 100644 front-end/src/views/center-business/stock/distribution/ratio/index.vue create mode 100644 front-end/src/views/center-business/stock/distribution/ratio/view.vue create mode 100644 front-end/src/views/center-business/stock/entry/inform/index.vue create mode 100644 front-end/src/views/center-business/stock/entry/inform/view.vue create mode 100644 front-end/src/views/center-business/stock/entry/result/index.vue create mode 100644 front-end/src/views/center-business/stock/entry/result/view.vue create mode 100644 front-end/src/views/center-business/stock/out/add.vue create mode 100644 front-end/src/views/center-business/stock/out/index.vue create mode 100644 front-end/src/views/center-business/stock/search/index.vue create mode 100644 front-end/src/views/center-business/stock/synchronization/add.vue create mode 100644 front-end/src/views/center-business/stock/synchronization/index.vue create mode 100644 front-end/src/views/center-business/stock/transfer/logic/add.vue create mode 100644 front-end/src/views/center-business/stock/transfer/logic/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/stock/transfer/logic/edit.vue create mode 100644 front-end/src/views/center-business/stock/transfer/logic/index.vue create mode 100644 front-end/src/views/center-business/stock/transfer/logic/view.vue create mode 100644 front-end/src/views/center-business/stock/transfer/virtual/add.vue create mode 100644 front-end/src/views/center-business/stock/transfer/virtual/components/ViewForm.vue create mode 100644 front-end/src/views/center-business/stock/transfer/virtual/edit.vue create mode 100644 front-end/src/views/center-business/stock/transfer/virtual/index.vue create mode 100644 front-end/src/views/center-business/stock/transfer/virtual/view.vue create mode 100644 front-end/src/views/center-business/strategy/autoReplenish/components/tableData.vue create mode 100644 front-end/src/views/center-business/strategy/autoReplenish/onlineStore/components/DataForm.vue create mode 100644 front-end/src/views/center-business/strategy/autoReplenish/onlineStore/index.vue create mode 100644 front-end/src/views/center-business/strategy/autoReplenish/order/components/DialogForm.vue create mode 100644 front-end/src/views/center-business/strategy/autoReplenish/order/index.vue create mode 100644 front-end/src/views/center-business/user/account/add.vue create mode 100644 front-end/src/views/center-business/user/account/allot.vue create mode 100644 front-end/src/views/center-business/user/account/components/DialogCompany/index.vue create mode 100644 front-end/src/views/center-business/user/account/components/viewForm/index.vue create mode 100644 front-end/src/views/center-business/user/account/edit.vue create mode 100644 front-end/src/views/center-business/user/account/index.vue create mode 100644 front-end/src/views/center-business/user/data/add.vue create mode 100644 front-end/src/views/center-business/user/data/index.vue create mode 100644 front-end/src/views/center-business/user/group/edit.vue create mode 100644 front-end/src/views/center-business/user/group/index.vue create mode 100644 front-end/src/views/center-business/user/role/add.vue create mode 100644 front-end/src/views/center-business/user/role/allotData.vue create mode 100644 front-end/src/views/center-business/user/role/allotMenu.vue create mode 100644 front-end/src/views/center-business/user/role/allotUser.vue create mode 100644 front-end/src/views/center-business/user/role/index.vue create mode 100644 front-end/src/views/center-business/user/role/menuData.vue create mode 100644 front-end/src/views/center-business/worksheet/service/components/DataForm.vue create mode 100644 front-end/src/views/center-business/worksheet/service/index.vue create mode 100644 front-end/src/views/center-business/worksheet/service/view.vue create mode 100644 front-end/src/views/center-setting/base-data/after-sales-reason/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/base-data/after-sales-reason/refund.vue create mode 100644 front-end/src/views/center-setting/base-data/after-sales-reason/return.vue create mode 100644 front-end/src/views/center-setting/base-data/code-rule/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/base-data/code-rule/components/DataFormRuleDist.vue create mode 100644 front-end/src/views/center-setting/base-data/code-rule/components/ViewForm.vue create mode 100644 front-end/src/views/center-setting/base-data/code-rule/edit.vue create mode 100644 front-end/src/views/center-setting/base-data/code-rule/index.vue create mode 100644 front-end/src/views/center-setting/base-data/country/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/base-data/country/index.vue create mode 100644 front-end/src/views/center-setting/base-data/lov/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/base-data/lov/index.vue create mode 100644 front-end/src/views/center-setting/base-data/region/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/base-data/region/index.vue create mode 100644 front-end/src/views/center-setting/file/search/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/file/search/index.vue create mode 100644 front-end/src/views/center-setting/file/storage/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/file/storage/index.vue create mode 100644 front-end/src/views/center-setting/file/upload-config/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/file/upload-config/index.vue create mode 100644 front-end/src/views/center-setting/file/upload-ram/index.vue create mode 100644 front-end/src/views/center-setting/goods/audit/strategy/index.vue create mode 100644 front-end/src/views/center-setting/indexes/components/BjCodeSelect/index.vue create mode 100644 front-end/src/views/center-setting/indexes/inquiry/add.vue create mode 100644 front-end/src/views/center-setting/indexes/inquiry/components/condition.vue create mode 100644 front-end/src/views/center-setting/indexes/inquiry/components/fieldList.vue create mode 100644 front-end/src/views/center-setting/indexes/inquiry/components/inquiryOperate.vue create mode 100644 front-end/src/views/center-setting/indexes/inquiry/edit.vue create mode 100644 front-end/src/views/center-setting/indexes/inquiry/index.vue create mode 100644 front-end/src/views/center-setting/indexes/list/add.vue create mode 100644 front-end/src/views/center-setting/indexes/list/components/details.vue create mode 100644 front-end/src/views/center-setting/indexes/list/edit.vue create mode 100644 front-end/src/views/center-setting/indexes/list/index.vue create mode 100644 front-end/src/views/center-setting/indexes/sync/add.vue create mode 100644 front-end/src/views/center-setting/indexes/sync/components/syncOperate.vue create mode 100644 front-end/src/views/center-setting/indexes/sync/edit.vue create mode 100644 front-end/src/views/center-setting/indexes/sync/index.vue create mode 100644 front-end/src/views/center-setting/instance/components/instance-detail/index.vue create mode 100644 front-end/src/views/center-setting/instance/components/instance-img/index.vue create mode 100644 front-end/src/views/center-setting/instance/manage/index.vue create mode 100644 front-end/src/views/center-setting/manage/audit/index.vue create mode 100644 front-end/src/views/center-setting/manage/cancel/index.vue create mode 100644 front-end/src/views/center-setting/manage/search/index.vue create mode 100644 front-end/src/views/center-setting/menu/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/menu/components/PermissionSelect.vue create mode 100644 front-end/src/views/center-setting/menu/index.vue create mode 100644 front-end/src/views/center-setting/message/email/add.vue create mode 100644 front-end/src/views/center-setting/message/email/components/ConfigDialog.vue create mode 100644 front-end/src/views/center-setting/message/email/components/DrawerTable.vue create mode 100644 front-end/src/views/center-setting/message/email/components/ViewForm.vue create mode 100644 front-end/src/views/center-setting/message/email/edit.vue create mode 100644 front-end/src/views/center-setting/message/email/index.vue create mode 100644 front-end/src/views/center-setting/message/notice/add.vue create mode 100644 front-end/src/views/center-setting/message/notice/components/ViewForm.vue create mode 100644 front-end/src/views/center-setting/message/notice/edit.vue create mode 100644 front-end/src/views/center-setting/message/notice/index.vue create mode 100644 front-end/src/views/center-setting/message/send/add.vue create mode 100644 front-end/src/views/center-setting/message/send/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/message/send/components/ViewDataForm.vue create mode 100644 front-end/src/views/center-setting/message/send/components/ViewForm.vue create mode 100644 front-end/src/views/center-setting/message/send/edit.vue create mode 100644 front-end/src/views/center-setting/message/send/index.vue create mode 100644 front-end/src/views/center-setting/message/sms/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/message/sms/index.vue create mode 100644 front-end/src/views/center-setting/message/template/add.vue create mode 100644 front-end/src/views/center-setting/message/template/components/DrawerTable.vue create mode 100644 front-end/src/views/center-setting/message/template/components/ViewForm.vue create mode 100644 front-end/src/views/center-setting/message/template/edit.vue create mode 100644 front-end/src/views/center-setting/message/template/index.vue create mode 100644 front-end/src/views/center-setting/scheduler/concurrent/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/scheduler/concurrent/index.vue create mode 100644 front-end/src/views/center-setting/scheduler/executable/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/scheduler/executable/index.vue create mode 100644 front-end/src/views/center-setting/scheduler/executor/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/scheduler/executor/components/ExecutorsConfig.vue create mode 100644 front-end/src/views/center-setting/scheduler/executor/index.vue create mode 100644 front-end/src/views/center-setting/scheduler/log/index.vue create mode 100644 front-end/src/views/center-setting/scheduler/request/add.vue create mode 100644 front-end/src/views/center-setting/scheduler/request/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/scheduler/request/components/ViewForm.vue create mode 100644 front-end/src/views/center-setting/scheduler/request/edit.vue create mode 100644 front-end/src/views/center-setting/scheduler/request/index.vue create mode 100644 front-end/src/views/center-setting/scheduler/request/permissions.vue create mode 100644 front-end/src/views/center-setting/scheduler/task/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/scheduler/task/index.vue create mode 100644 front-end/src/views/center-setting/statement/base/components/Field/index.vue create mode 100644 front-end/src/views/center-setting/statement/base/components/Log/index.vue create mode 100644 front-end/src/views/center-setting/statement/base/components/Shop/index.vue create mode 100644 front-end/src/views/center-setting/statement/base/index.vue create mode 100644 front-end/src/views/center-setting/statement/strategy/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/statement/strategy/index.vue create mode 100644 front-end/src/views/center-setting/statement/strategy/view.vue create mode 100644 front-end/src/views/center-setting/tenant/add.vue create mode 100644 front-end/src/views/center-setting/tenant/components/ViewForm.vue create mode 100644 front-end/src/views/center-setting/tenant/edit.vue create mode 100644 front-end/src/views/center-setting/tenant/index.vue create mode 100644 front-end/src/views/center-setting/user/account/strategy.vue create mode 100644 front-end/src/views/center-setting/user/organization/company.vue create mode 100644 front-end/src/views/center-setting/user/organization/components/DataForm.vue create mode 100644 front-end/src/views/center-setting/user/organization/group.vue create mode 100644 front-end/src/views/common/dashboard/admin/components/BarChart.vue create mode 100644 front-end/src/views/common/dashboard/admin/components/BoxCard.vue create mode 100644 front-end/src/views/common/dashboard/admin/components/LineChart.vue create mode 100644 front-end/src/views/common/dashboard/admin/components/PanelGroup.vue create mode 100644 front-end/src/views/common/dashboard/admin/components/PieChart.vue create mode 100644 front-end/src/views/common/dashboard/admin/components/RaddarChart.vue create mode 100644 front-end/src/views/common/dashboard/admin/components/TodoList/Todo.vue create mode 100644 front-end/src/views/common/dashboard/admin/components/TodoList/index.scss create mode 100644 front-end/src/views/common/dashboard/admin/components/TodoList/index.vue create mode 100644 front-end/src/views/common/dashboard/admin/components/TransactionTable.vue create mode 100644 front-end/src/views/common/dashboard/admin/components/mixins/resize.js create mode 100644 front-end/src/views/common/dashboard/admin/index.vue create mode 100644 front-end/src/views/common/dashboard/editor/index.vue create mode 100644 front-end/src/views/common/dashboard/index.vue create mode 100644 front-end/src/views/common/error-page/401.vue create mode 100644 front-end/src/views/common/error-page/404.vue create mode 100644 front-end/src/views/common/login/auth-redirect.vue create mode 100644 front-end/src/views/common/login/index.vue create mode 100644 front-end/src/views/common/personal/components/rowText/index.vue create mode 100644 front-end/src/views/common/personal/index.vue create mode 100644 front-end/src/views/common/redirect/index.vue create mode 100644 front-end/src/views/icons/element-icons.js create mode 100644 front-end/src/views/icons/index.vue create mode 100644 front-end/src/views/icons/svg-icons.js create mode 100644 front-end/src/views/test/components/endpoint/index.vue create mode 100644 front-end/src/views/test/empty.vue create mode 100644 front-end/src/views/test/index copy.vue create mode 100644 front-end/src/views/test/index cory1.vue create mode 100644 front-end/src/views/test/index.vue create mode 100644 front-end/src/views/test/index11.vue create mode 100644 front-end/tests/unit/.eslintrc.js create mode 100644 front-end/tests/unit/components/Hamburger.spec.js create mode 100644 front-end/tests/unit/components/SvgIcon.spec.js create mode 100644 front-end/tests/unit/utils/formatTime.spec.js create mode 100644 front-end/tests/unit/utils/param2Obj.spec.js create mode 100644 front-end/tests/unit/utils/parseTime.spec.js create mode 100644 front-end/tests/unit/utils/validate.spec.js create mode 100644 front-end/vue.config.js create mode 100644 front-end/we.png create mode 100644 front-end/业务架构.png create mode 100644 front-end/云原生.png create mode 100644 front-end/夯实数字化基座.png create mode 100644 front-end/库存共享.png create mode 100644 front-end/开发.png create mode 100644 front-end/强大的技术与架构.png create mode 100644 front-end/技术支持.png create mode 100644 front-end/技术架构.png create mode 100644 front-end/测试.png create mode 100644 front-end/部署.png create mode 100644 skyer-after-sales/.gitignore create mode 100644 skyer-after-sales/.gitlab-ci.yml create mode 100644 skyer-after-sales/charts/skyer-after-sales/Chart.yaml create mode 100644 skyer-after-sales/charts/skyer-after-sales/README.md create mode 100644 skyer-after-sales/charts/skyer-after-sales/templates/_helpers.tpl create mode 100644 skyer-after-sales/charts/skyer-after-sales/templates/deployment.yaml create mode 100644 skyer-after-sales/charts/skyer-after-sales/templates/service.yaml create mode 100644 skyer-after-sales/charts/skyer-after-sales/values.yaml create mode 100644 skyer-after-sales/docker/Dockerfile create mode 100644 skyer-after-sales/init-local-database.sh create mode 100644 skyer-after-sales/pom.xml create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/AfterSalesApplication.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/api/controller/v1/InstallOrderController.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/api/controller/v1/LogisticsCompanyController.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/app/service/InstallOrderService.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/app/service/LogisticsCompanyService.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/app/service/impl/InstallOrderServiceImpl.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/app/service/impl/LogisticsCompanyServiceImpl.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/config/AfterSalesExtraDataManager.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/config/AfterSalesSwaggerApiConfig.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/domain/dto/InstallOrderDTO.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/domain/dto/LogisticsCompanyDTO.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/domain/dto/MultiCodeDelDTO.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/domain/dto/MultiDelDTO.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/domain/dto/PageInstallOrderDTO.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/domain/dto/PageLogisticsCompanyDTO.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/domain/entity/InstallOrder.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/domain/entity/LogisticsCompany.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/domain/repository/InstallOrderRepository.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/domain/repository/LogisticsCompanyRepository.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/infra/annocations/DatasourceType.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/infra/feign/UserDetailRemoteService.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/infra/feign/impl/UserDetailRemoteServiceImpl.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/infra/mapper/InstallOrderMapper.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/infra/mapper/LogisticsCompanyMapper.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/infra/properties/AfterSalesProperties.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/infra/properties/DataHierarchyProperties.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/infra/remote/api/RemoteCustomizeService.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/infra/remote/api/impl/RemoteCustomizeServiceImpl.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/infra/repository/impl/InstallOrderRepositoryImpl.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/afterSales/infra/repository/impl/LogisticsCompanyRepositoryImpl.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/autoconfigure/afterSales/AfterSalesAutoConfiguration.java create mode 100644 skyer-after-sales/src/main/java/org/skyer/autoconfigure/afterSales/EnableSkyerAfterSales.java create mode 100644 skyer-after-sales/src/main/resources/application.yml create mode 100644 skyer-after-sales/src/main/resources/banner.txt create mode 100644 skyer-after-sales/src/main/resources/bootstrap.yml create mode 100644 skyer-after-sales/src/main/resources/mapper/InstallOrderMapper.xml create mode 100644 skyer-after-sales/src/main/resources/mapper/LogisticsCompanyMapper.xml create mode 100644 skyer-after-sales/src/main/resources/messages/messages_hpfm_en_US.properties create mode 100644 skyer-after-sales/src/main/resources/messages/messages_hpfm_zh_CN.properties create mode 100644 skyer-after-sales/src/main/resources/static/js/babel.min.js create mode 100644 skyer-channel/.gitignore create mode 100644 skyer-channel/.gitlab-ci.yml create mode 100644 skyer-channel/charts/skyer-channel/Chart.yaml create mode 100644 skyer-channel/charts/skyer-channel/README.md create mode 100644 skyer-channel/charts/skyer-channel/templates/_helpers.tpl create mode 100644 skyer-channel/charts/skyer-channel/templates/deployment.yaml create mode 100644 skyer-channel/charts/skyer-channel/templates/service.yaml create mode 100644 skyer-channel/charts/skyer-channel/values.yaml create mode 100644 skyer-channel/docker/Dockerfile create mode 100644 skyer-channel/init-local-database.sh create mode 100644 skyer-channel/pom.xml create mode 100644 skyer-channel/src/main/java/org/skyer/autoconfigure/channel/ChannelAutoConfiguration.java create mode 100644 skyer-channel/src/main/java/org/skyer/autoconfigure/channel/EnableSkyerChannel.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/ChannelApplication.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/controller/v1/DealerController.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/controller/v1/GroupController.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/controller/v1/OnlineShopController.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/controller/v1/PhysicalShopController.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/controller/v1/SalesOrganizationController.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/controller/v1/ShopController.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/controller/v1/WarehouseController.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/ChannelSaleOrderDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/DealerDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/DealerListDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/OnlineShopDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/OnlineShopSettingDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/OnlineShopShowDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/PhysicalShopDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/PhysicalShopShowDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/QueryShopListDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/SalesOrganizationDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/SalesOrganizationListDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/SaveShopDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/ShopDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/ShopDeleteDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/WarehouseDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/api/dto/WarehouseListDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/config/ChannelExtraDataManager.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/config/ChannelSwaggerApiConfig.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/entity/Dealer.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/entity/Group.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/entity/SalesOrganization.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/entity/Shop.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/entity/Warehouse.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/repository/DealerRepository.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/repository/GroupRepository.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/repository/SalesOrganizationReposotory.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/repository/ShopRepository.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/repository/WarehouseRepository.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/DealerService.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/GroupService.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/OnlineShopService.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/PhysicalShopService.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/SalesOrganizationService.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/WarehouseService.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/impl/DealerServiceImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/impl/GroupServiceImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/impl/OnlineShopServiceImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/impl/PhysicalShopServiceImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/impl/SalesOrganizationServiceImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/impl/WarehouseServiceImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/saga/ShopService.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/service/saga/impl/ShopServiceImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/ChannelSaleOrderVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/ChildrenVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/DealerVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/ListOfTreeVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/OnlineShopDetailVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/OnlineShopSettingVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/OnlineShopVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/PhysicalShopDetailVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/PhysicalShopVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/SalesOrganizationByTenantIdVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/SalesOrganizationListVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/ShopListVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/domain/vo/WarehouseListVO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/annocations/DatasourceType.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/constant/CompanyConstants.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/constant/Constants.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/constant/DataHierarchyDisplayStyle.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/constant/FndConstants.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/constant/HpfmMsgCodeConstants.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/constant/HrConstants.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/convertor/CommonConvertor.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/enums/DBPoolTypeEnum.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/enums/DatabaseTypeEnum.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/feign/OrderReportRemoteService.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/feign/UserClient.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/feign/fallback/UserClientImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/feign/impl/OrderReportRemoteServiceImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/handler/MessageHandler.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/mapper/DealerMapper.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/mapper/GroupMapper.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/mapper/SalesOrganizationMapper.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/mapper/ShopMapper.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/mapper/WarehouseMapper.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/properties/ChannelProperties.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/properties/DataHierarchyProperties.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/remote/api/RemoteCustomizeService.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/remote/api/dto/SaleOrderOrderApiDTO.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/remote/api/impl/RemoteCustomizeServiceImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/repository/impl/DealerRepositoryImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/repository/impl/GroupRepositoryImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/repository/impl/SalesOrganizationRepositoryImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/repository/impl/ShopRepositoryImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/repository/impl/WarehouseRepositoryImpl.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/util/Dates.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/util/JsonUtils.java create mode 100644 skyer-channel/src/main/java/org/skyer/channel/infra/util/ListUtil.java create mode 100644 skyer-channel/src/main/resources/application.yml create mode 100644 skyer-channel/src/main/resources/banner.txt create mode 100644 skyer-channel/src/main/resources/bootstrap.yml create mode 100644 skyer-channel/src/main/resources/mapper/DealerMapper.xml create mode 100644 skyer-channel/src/main/resources/mapper/GroupMapper.xml create mode 100644 skyer-channel/src/main/resources/mapper/SalesOrganizationMapper.xml create mode 100644 skyer-channel/src/main/resources/mapper/ShopMapper.xml create mode 100644 skyer-channel/src/main/resources/mapper/WarehouseMapper.xml create mode 100644 skyer-channel/src/main/resources/messages/messages_hpfm_en_US.properties create mode 100644 skyer-channel/src/main/resources/messages/messages_hpfm_zh_CN.properties create mode 100644 skyer-channel/src/main/resources/skyer_channel.sql create mode 100644 skyer-channel/src/main/resources/static/js/babel.min.js create mode 100644 skyer-gateway/.gitignore create mode 100644 skyer-gateway/.gitlab-ci.yml create mode 100644 skyer-gateway/charts/skyer-gateway/Chart.yaml create mode 100644 skyer-gateway/charts/skyer-gateway/README.md create mode 100644 skyer-gateway/charts/skyer-gateway/templates/_helpers.tpl create mode 100644 skyer-gateway/charts/skyer-gateway/templates/deployment.yaml create mode 100644 skyer-gateway/charts/skyer-gateway/templates/service.yaml create mode 100644 skyer-gateway/charts/skyer-gateway/values.yaml create mode 100644 skyer-gateway/docker/Dockerfile create mode 100644 skyer-gateway/pom.xml create mode 100644 skyer-gateway/src/main/java/org/skyer/autoconfigure/gateway/EnableSkyerGateway.java create mode 100644 skyer-gateway/src/main/java/org/skyer/autoconfigure/gateway/WebConditionAutoConfiguration.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/GatewayApplication.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/common/SetRepository.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/common/StringSetRepository.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/config/GatewayProperties.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/config/MaintainProperties.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/endpoint/MaintainEndpoint.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/AvailableServiceFilter.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/GateWayHelperFilter.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/HeaderWrapperFilter.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/IpCheckedFilter.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/Query.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/RedisBlackSetRepository.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/RedisSetRepository.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/RedisWhiteSetRepository.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/XForwardedForFilter.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/metric/CustomInMemoryHttpTraceRepository.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/metric/MetricEndpoint.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/metric/MetricRuleEndpoint.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/metric/RequestCount.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/metric/RequestCountRules.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/metric/RequestCountTraceListener.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/metric/RequestCounter.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/metric/TimeWindow.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/filter/metric/TraceListener.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/RateLimitConfiguration.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/dimension/CombinedKeyResolver.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/dimension/OriginKeyResolver.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/dimension/RoleKeyResolver.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/dimension/TenantKeyResolver.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/dimension/UrlKeyResolver.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/dimension/UserKeyResolver.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/limiter/EnhancedRedisRateLimiter.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/switcher/DoubleModeSwitcher.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/switcher/EmptyModeSwitcher.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/switcher/ModeSwitcher.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/ratelimit/switcher/SwitcherDelegate.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/route/DatabaseRouteDefinitionRepository.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/route/entity/ServiceRoute.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/util/KeyGenerator.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/util/RedisOpUtils.java create mode 100644 skyer-gateway/src/main/java/org/skyer/gateway/util/RequestCountUtils.java create mode 100644 skyer-gateway/src/main/resources/application.yml create mode 100644 skyer-gateway/src/main/resources/banner.txt create mode 100644 skyer-gateway/src/main/resources/bootstrap.yml create mode 100644 skyer-goods/.gitignore create mode 100644 skyer-goods/.gitlab-ci.yml create mode 100644 skyer-goods/charts/skyer-goods/Chart.yaml create mode 100644 skyer-goods/charts/skyer-goods/README.md create mode 100644 skyer-goods/charts/skyer-goods/templates/_helpers.tpl create mode 100644 skyer-goods/charts/skyer-goods/templates/deployment.yaml create mode 100644 skyer-goods/charts/skyer-goods/templates/service.yaml create mode 100644 skyer-goods/charts/skyer-goods/values.yaml create mode 100644 skyer-goods/docker/Dockerfile create mode 100644 skyer-goods/init-local-database.sh create mode 100644 skyer-goods/pom.xml create mode 100644 skyer-goods/src/main/java/org/skyer/autoconfigure/goods/EnableSkyerGoods.java create mode 100644 skyer-goods/src/main/java/org/skyer/autoconfigure/goods/GoodsAutoConfiguration.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/GoodsApplication.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/BrandController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/CategoryAttributeController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/CategoryController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/GoodsShopController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/GoodsSkuController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/InstallServiceController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/MaterialController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/PriceItemSettingController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SkuAttributeValueController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SkuAttributeValueDraftController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SkuAuditController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SkuAuditSettingController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SkuDraftController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SkuGroupController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SpuAttrValueRelationController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SpuAttributeController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SpuAttributeValueController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SpuController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SpuInstallServiceController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/controller/v1/SpuSonMumController.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/AttrListRequestDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/AttributeDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/BrandPageReqDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/BrandReqDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/CategoryAttributeQueryDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/CategoryAttributeSaveDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/CategoryAttributeValueSaveDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/CategoryQueryDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/CategorySaveDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/CategoryTreeQueryDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/CategoryUpdateByStatusFlagDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/GoodsGroupReqDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/GoodsGroupSkuReqDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/GoodsPageReqDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/GoodsReqDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/GoodsRequestDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/GoodsSkuPageDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/GroupPageReqDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/IdsReqDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/LevelCategoryDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/MaterialDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/MaterialListDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/PageReqDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/SkuBatchAuditDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/SkuBatchSaveDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/SkuListRequestDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/SkuUpdateDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/SkuUpdateInfoDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/SpuListDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/StatusReqDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/api/dto/UpdatePriceItemValueDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/CategoryAttributeService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/CategoryAttributeValueService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/CategoryService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/InstallServiceService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/MyEncryptionService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SkuAttributeValueDraftService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SkuAttributeValueService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SkuAuditSettingService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SkuDraftService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SkuEsService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SkuPackageService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SkuService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SpuAttributeService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SpuAttributeValueService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SpuEsService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SpuInstallServiceService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SpuInstallServiceSkuService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SpuInstallServiceStoreService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SpuSonMumService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SpuSonMumSkuService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/SpuSonMumStoreService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/CategoryAttributeServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/CategoryAttributeValueServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/CategoryServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/InstallServiceServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/MyEncryptionServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SkuAttributeValueDraftServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SkuAttributeValueServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SkuAuditSettingServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SkuDraftServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SkuEsServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SkuPackageServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SkuServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SpuAttributeServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SpuAttributeValueServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SpuEsServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SpuInstallServiceServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SpuInstallServiceSkuServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SpuInstallServiceStoreServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SpuSonMumServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SpuSonMumSkuServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/app/service/impl/SpuSonMumStoreServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/config/GoodsExtraDataManager.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/config/GoodsSwaggerApiConfig.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/AddSonMumSkuDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/AddSpuInstallServiceSkuDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/AuditDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/InstallServiceDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/LevelRedisCategoryDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/MultiDelDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/PageInstallServiceDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/PageSonMumDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/PageSpuInstallServiceDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/ServiceZoneDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/SkuAuditDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/SpuInstallServiceDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/SpuSonMumDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/dto/TotalCategoryDTO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/Brand.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/Category.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/CategoryAttribute.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/CategoryAttributeValue.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/GoodsShop.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/InstallService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/Material.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/Sku.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SkuAttrValueRelation.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SkuAttributeValue.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SkuAttributeValueDraft.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SkuAuditSetting.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SkuDraft.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SkuGroup.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SkuGroupSku.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SkuGroupStore.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SkuPackage.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/Spu.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SpuAttrValueRelation.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SpuAttribute.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SpuAttributeValue.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SpuInstallService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SpuInstallServiceSku.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SpuInstallServiceStore.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SpuSonMum.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SpuSonMumSku.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/entity/SpuSonMumStore.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/BrandRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/CategoryAttributeRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/CategoryAttributeValueRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/CategoryRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/InstallServiceRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/MaterialRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SkuAttrValueRelationRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SkuAttributeValueDraftRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SkuAttributeValueRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SkuAuditSettingRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SkuDraftRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SkuGroupRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SkuGroupSkuRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SkuGroupStoreRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SkuPackageRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SkuRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SpuAttrValueRelationRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SpuAttributeRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SpuAttributeValueRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SpuInstallServiceRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SpuInstallServiceSkuRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SpuInstallServiceStoreRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SpuRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SpuSonMumRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SpuSonMumSkuRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/repository/SpuSonMumStoreRepository.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/BrandService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/CategoryManageService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/GoodsAttributeService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/GoodsShopService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/MaterialService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/SkuGroupService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/SkuGroupSkuService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/SkuGroupStoreService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/SpuService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/impl/BrandServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/impl/CategoryManageServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/impl/GoodsAttributeServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/impl/GoodsShopServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/impl/MaterialServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/impl/SkuGroupServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/impl/SkuGroupSkuServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/impl/SkuGroupStoreServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/service/impl/SpuServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/AllAttributeRelationResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/AttributeAndValueResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/AttributeDetailResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/AttributePageResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/AttributeValueResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/BrandPageResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/CategoryAttributeVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/CategoryAttributeValueVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/CategoryOldPageResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/CategoryOldResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/CategoryTreeVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/CategoryVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/CheckGoodsAttributeResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/ChinaZoingRemoteVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/CreateSkuListVo.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/DetailSpecifResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/GoodsDetailResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/GoodsDetailsVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/GoodsPageResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/GoodsSkuAuditPriceVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/GoodsSkuAuditVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/GoodsSkuDetailVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/GoodsSkuPageVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/GoodsSkuVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/GroupPageResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/GroupStoreResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/MainIdAttributeValueResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/MaterialVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/OnlineShopVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/PriceItemLov.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/RpcGoodsResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/RpcOrderResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/SkuAuditVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/SkuGroupResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/SkuGroupSkuResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/SkuInfoResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/SkuPackageVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/SpuEsModel.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/domain/vo/TotalCategoryResVO.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/annocations/DatasourceType.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/constant/CompanyConstants.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/constant/Constants.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/constant/DataHierarchyDisplayStyle.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/constant/FndConstants.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/constant/HpfmMsgCodeConstants.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/constant/HrConstants.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/constant/ObjectConstant.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/constant/RedisKey.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/convertor/BrandConvertor.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/convertor/CategoryConvertor.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/convertor/CommonConvertor.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/convertor/GoodsConvertor.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/convertor/SkuGroupConvertor.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/enums/DBPoolTypeEnum.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/enums/DatabaseTypeEnum.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/ChinaZoingRemoteService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/LovManageRemoteService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/LovRemoteService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/OnlineShopRemoteService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/UserDetailRemoteService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/dto/LovHeaderDto.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/dto/LovValueDto.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/impl/ChinaZoingRemoteServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/impl/LovManageRemoteServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/impl/LovRemoteServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/impl/OnlineShopRemoteServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/feign/impl/UserDetailRemoteServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/handler/MessageHandler.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/BrandMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/CategoryAttributeMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/CategoryAttributeValueMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/CategoryMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/GoodsShopMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/InstallServiceMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/MaterialMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SkuAttrValueRelationMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SkuAttributeValueDraftMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SkuAttributeValueMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SkuAuditSettingMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SkuDraftMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SkuGroupMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SkuGroupSkuMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SkuGroupStoreMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SkuMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SkuPackageMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SpuAttrValueRelationMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SpuAttributeMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SpuAttributeValueMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SpuInstallServiceMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SpuInstallServiceSkuMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SpuInstallServiceStoreMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SpuMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SpuSonMumMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SpuSonMumSkuMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/mapper/SpuSonMumStoreMapper.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/properties/DataHierarchyProperties.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/properties/GoodsProperties.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/remote/api/RemoteCustomizeService.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/remote/api/impl/RemoteCustomizeServiceImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/BrandRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/CategoryAttributeRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/CategoryAttributeValueRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/CategoryRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/InstallServiceRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/MaterialRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SkuAttrValueRelationRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SkuAttributeValueDraftRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SkuAttributeValueRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SkuAuditSettingRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SkuDraftRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SkuGroupRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SkuGroupSkuRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SkuGroupStoreRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SkuPackageRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SkuRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SpuAttrValueRelationRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SpuAttributeRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SpuAttributeValueRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SpuInstallServiceRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SpuInstallServiceSkuRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SpuInstallServiceStoreRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SpuRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SpuSonMumRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SpuSonMumSkuRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/repository/impl/SpuSonMumStoreRepositoryImpl.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/util/Dates.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/util/EsBoolQueryUtil.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/util/JsonUtils.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/util/ListUtils.java create mode 100644 skyer-goods/src/main/java/org/skyer/goods/infra/util/Md5Utils.java create mode 100644 skyer-goods/src/main/resources/application.yml create mode 100644 skyer-goods/src/main/resources/banner.txt create mode 100644 skyer-goods/src/main/resources/bootstrap.yml create mode 100644 skyer-goods/src/main/resources/mapper/BrandMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/CategoryAttributeMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/CategoryAttributeValueMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/CategoryMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/GoodsShopMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/InstallServiceMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/MaterialMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SkuAttrValueRelationMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SkuAttributeValueDraftMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SkuAttributeValueMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SkuAuditSettingMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SkuDraftMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SkuGroupMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SkuGroupSkuMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SkuGroupStoreMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SkuMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SkuPackageMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SpuAttrValueRelationMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SpuAttributeMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SpuAttributeValueMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SpuInstallServiceMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SpuInstallServiceSkuMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SpuInstallServiceStoreMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SpuMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SpuSonMumMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SpuSonMumSkuMapper.xml create mode 100644 skyer-goods/src/main/resources/mapper/SpuSonMumStoreMapper.xml create mode 100644 skyer-goods/src/main/resources/messages/messages_hpfm_en_US.properties create mode 100644 skyer-goods/src/main/resources/messages/messages_hpfm_zh_CN.properties create mode 100644 skyer-goods/src/main/resources/static/js/babel.min.js create mode 100644 skyer-order/.gitignore create mode 100644 skyer-order/.gitlab-ci.yml create mode 100644 skyer-order/charts/skyer-order/Chart.yaml create mode 100644 skyer-order/charts/skyer-order/README.md create mode 100644 skyer-order/charts/skyer-order/templates/_helpers.tpl create mode 100644 skyer-order/charts/skyer-order/templates/deployment.yaml create mode 100644 skyer-order/charts/skyer-order/templates/service.yaml create mode 100644 skyer-order/charts/skyer-order/values.yaml create mode 100644 skyer-order/docker/Dockerfile create mode 100644 skyer-order/init-local-database.sh create mode 100644 skyer-order/pom.xml create mode 100644 skyer-order/sql/sord_process_define.sql create mode 100644 skyer-order/src/main/java/org/skyer/autoconfigure/order/EnableSkyerOrder.java create mode 100644 skyer-order/src/main/java/org/skyer/autoconfigure/order/OrderAutoConfiguration.java create mode 100644 skyer-order/src/main/java/org/skyer/order/OrderApplication.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/AfterSaleHeaderController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/AfterSaleItemController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/AfterSaleItemLineController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/AfterSaleLogisticsController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/AfterSalesReasonController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/CouponController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/DeliveryLogController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ItemController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ItemLineController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ItemLinePriceController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ItemPriceController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ItemSnapshotController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/OperateLogController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/OrderController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/OrderReportController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/PriceController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ProcessDefineController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ReceiverInfoController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/RelatedController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ServiceLogController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ThirdItemController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ThirdOrderController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ThirdPartyAfterSaleHeaderController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ThirdPartyOrderController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/controller/v1/ThirdReceiverInfoController.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/AccountCheckingOrderDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/AccountCheckingOrderQueryDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/AddRefundOnlyDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/AfterItemAddDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/AfterItemDeleteDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/AfterSaleItemDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/AfterSaleItemLineDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/AfterSaleReceiveInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/AuditRefundDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/BatchStringListDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/IdListDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ItemConfirmDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ItemSearchDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OperateLogDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderBaseDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderBaseInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderBuyerInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderCancelDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderDetailDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderDetailSearchDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderItemDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderPageDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderPaymentInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderRefundInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderSaleDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderSaleDateDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/OrderTableDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/PageReqDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ProcessDefineDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ProcessDefinePageDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/QueryPreempPageDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ReceiverInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/RefundAuditPageDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/RefundGoodsDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/RefundInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/RefundLogisticsDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/RefundOnlyAuditStartDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/RefundOnlyPageDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/RefundPageDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/RefundSearchDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ReturnRefundAuditStartDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/SaleItemReportDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ShopIdsAndSkuCodesDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/StatsStockoutDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/SuspendOrderDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ThirdOrderBaseInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ThirdOrderBuyerInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ThirdOrderDiscountInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ThirdOrderItemDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ThirdOrderPaymentInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ThirdOrderTableDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ThirdPartyAfterSaleDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ThirdPartyAfterSalePageDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ThirdPartyReceiveInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/ThirdPartyRefundBaseInfo.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/UpdateRefundDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/UpdateWarehouseDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/WarehouseWarrantDetailDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/WarehouseWarrantLogisticsDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/dto/WarehouseWarrantSaveDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/es/OrderAuditEsModel.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/es/OrderEsModel.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/es/SearchOrderAuditEsParam.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/es/SearchOrderEsParam.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/es/SearchStockoutEsParam.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/es/SearchThirdOrderEsParam.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/es/SpuEsModel.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/es/ThirdOrderEsModel.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/AfterSaleDetailVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/AfterSaleItemLineVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/AfterSaleItemVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/AmountInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/CopyOrderItemVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/CopyOrderVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/OrderDetailVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/OrderGoodsLineVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/OrderInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/OrderItemLinePageVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/OrderItemLineVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/OrderItemPageVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/OrderPageVo.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/OrderSaleDateVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/OrderSaleReportVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/OrderStatusTotalVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/OrderTotalVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/PaymentInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/PriceTypeListVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ProcessDefineDetailsVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ProcessDefinePageVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ReceiverInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/RefundBaseInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/RefundBuyerInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/RefundDetailsVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/RefundItemLineVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/RefundLogisticsInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/RefundOnlyPageVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/RefundPageVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/RefundSearchVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/RefundsLogisticsVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/RpcOrderAmountVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/RpcOrderInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/SaleItemReportVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ShopSkuStockoutVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/StatsStockoutVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/StockoutPageVo.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ThirdAmountInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ThirdItemVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ThirdOrderDetailVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ThirdOrderInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ThirdOrderPageVo.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ThirdPartyAfterSaleHeaderDetailsVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ThirdPartyAfterSalePageVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ThirdPaymentInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/ThirdReceiverInfoVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/UnfinishedTotalVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/WaitDealTotalVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/api/vo/WarehouseWarrantResultVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/BaseListDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/CalAmountDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/NeedOrderDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/OrderDetailDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/OrderInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/OrderLineWorkDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/OutboundDeliveryOrderDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/OutboundDeliveryOrderDetailDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/PackItemAmountDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/ResultDetailDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/ResultRecordDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/SaleOrderOrderApiDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/dto/SplitItemAmountDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/AfterSaleHeaderService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/AfterSaleItemLineService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/AfterSaleItemService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/AfterSaleLogisticsService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/AfterSaleReceiverInfoService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/AfterSalesReasonService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/CouponService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/DeliveryLogService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/HeaderService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ItemLinePriceService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ItemLineService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ItemPriceService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ItemService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ItemSnapshotService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/OperateLogService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/OrderEsService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/OrderLogisticsService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/OrderReportService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/OrderService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/PriceService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ProcessDefineService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ReceiverInfoService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/RedisUserService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/RelatedService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ServiceLogService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/SourceLogService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/StockoutEsService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ThirdHeaderService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ThirdItemService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ThirdOrderEsService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ThirdPartyAfterReceiverInfoService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ThirdPartyAfterSaleHeaderService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ThirdPartyAfterSaleItemService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ThirdPartyOrderService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ThirdPartyReturnLogisticsService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/ThirdReceiverInfoService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/WarehousingNoticeService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/component/OrderWorkTask.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/component/ReturnAndRefundWorkTask.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/AfterSaleHeaderServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/AfterSaleItemLineServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/AfterSaleItemServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/AfterSaleLogisticsServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/AfterSaleReceiverInfoServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/AfterSalesReasonServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/CouponServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/DeliveryLogServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/HeaderServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ItemLinePriceServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ItemLineServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ItemPriceServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ItemServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ItemSnapshotServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/OperateLogServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/OrderEsServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/OrderLogisticsServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/OrderReportServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/OrderServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/PriceServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ProcessDefineServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ReceiverInfoServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/RedisUserServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/RelatedServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ServiceLogServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/StockoutEsServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ThirdHeaderServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ThirdItemServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ThirdOrderEsServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ThirdPartyAfterReceiverInfoServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ThirdPartyAfterSaleHeaderServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ThirdPartyAfterSaleItemServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ThirdPartyOrderServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ThirdPartyReturnLogisticsServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/ThirdReceiverInfoServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/impl/WarehousingNoticeServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/saga/OrderForwardSagaService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/saga/ReturnAndRefundSagaService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/saga/ReturnGoodsWarehouseSagaService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/saga/StockSendSagaService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/saga/ThirdOrderForWardSagaService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/saga/ThirdPartyAfterSaleSagaReturnService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/service/saga/ThirdRefundSagaService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/statemachine/BizBean.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/vo/ChannelSaleOrderVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/vo/PackageLogisticsVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/vo/PackageSku.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/vo/TransferRecordVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/app/vo/WorkExecuteVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/config/Events.java create mode 100644 skyer-order/src/main/java/org/skyer/order/config/OrderExtraDataManager.java create mode 100644 skyer-order/src/main/java/org/skyer/order/config/OrderSwaggerApiConfig.java create mode 100644 skyer-order/src/main/java/org/skyer/order/config/StateMachineConfig.java create mode 100644 skyer-order/src/main/java/org/skyer/order/config/States.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/AfterSaleHeader.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/AfterSaleItem.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/AfterSaleItemLine.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/AfterSaleLogistics.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/AfterSaleReceiverInfo.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/AfterSalesReason.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/Coupon.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/DeliveryLog.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/Header.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/Item.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ItemLine.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ItemLinePrice.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ItemPrice.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ItemSnapshot.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/OperateLog.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/OrderLogistics.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/Price.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ProcessDefine.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ReceiverInfo.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/Related.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ServiceLog.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ThirdHeader.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ThirdItem.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ThirdPartyAfterReceiverInfo.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ThirdPartyAfterSaleHeader.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ThirdPartyAfterSaleItem.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ThirdPartyOrder.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ThirdPartyReturnLogistics.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/ThirdReceiverInfo.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/entity/WarehousingNotice.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/AfterSaleHeaderRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/AfterSaleItemLineRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/AfterSaleItemRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/AfterSaleLogisticsRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/AfterSaleReceiverInfoRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/AfterSalesReasonRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/CouponRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/DeliveryLogRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/HeaderRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ItemLinePriceRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ItemLineRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ItemPriceRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ItemRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ItemSnapshotRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/OperateLogRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/OrderLogisticsRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/PriceRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ProcessDefineRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ReceiverInfoRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/RelatedRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ServiceLogRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ThirdHeaderRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ThirdItemRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ThirdPartyAfterReceiverInfoRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ThirdPartyAfterSaleHeaderRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ThirdPartyAfterSaleItemRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ThirdPartyOrderRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ThirdPartyReturnLogisticsRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/ThirdReceiverInfoRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/domain/repository/WarehousingNoticeRepository.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/annocations/DatasourceType.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/common/BaisonClient.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/common/CommonConstants.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/common/LogInterceptor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/common/LovSettings.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/constant/Constants.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/CommonConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/HeaderConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/ItemSnapshotConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/OrderAuditEsConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/OrderEsConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/OrderItemConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/OrderItemLineConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/ReceiverInfoConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/RefundConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/SplitIemAmountConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/ThirdHeaderConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/convertor/ThirdPartyAfterSaleConvertor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/enums/AfterSaleOrderException.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/enums/BaiSonServiceTypeEnum.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/enums/DBPoolTypeEnum.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/enums/OrderItemEnum.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/enums/OrderItemLineEnum.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/enums/OrderStatusEnum.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/enums/PriceTypeEnum.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/enums/ReturnRefundEnum.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/GoodsSkuRemoteService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/GoodsStockRemoteService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/LogisticsRemoteService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/LovManageRemoteService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/LovRemoteService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/OnlineShopRemoteService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/SpuRemoteService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/TenantRemoteService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/UserDetailRemoteService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/dto/OnlineShopDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/dto/SearchGiftDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/dto/SearchOrderDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/generate/odo/in/OutboundDeliveryOrderDetailDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/generate/odo/in/OutboundDeliveryOrderDetailLineDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/generate/odo/in/OutboundDeliveryOrderInfoDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/generate/odo/out/OutboundDeliveryOrder.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/lov/header/in/LovHeaderDto.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/lov/header/in/LovValueDto.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/preemption/exe/in/DetailListData.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/preemption/exe/in/PreemptionDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/preemption/exe/out/PreemptionVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/select/logistics/postage/in/Address.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/select/logistics/postage/in/CalcPostageChargeDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/select/logistics/postage/in/LogicWarehouseVO2.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/select/logistics/postage/in/PackageSku.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/select/logistics/postage/in/Position.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/select/logistics/postage/in/SkuData.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/select/logistics/postage/out/PackageSku.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/select/logistics/postage/out/PackageSkuLogistics.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/entity/self/tenants/TenantDTO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/impl/GoodsSkuRemoteServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/impl/GoodsStockRemoteServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/impl/LogisticsRemoteServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/impl/LovManageRemoteServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/impl/LovRemoteServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/impl/OnlineShopRemoteServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/impl/SpuRemoteServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/impl/TenantRemoteServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/impl/UserDetailRemoteServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/vo/GiftSkuVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/vo/GoodsPageResVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/vo/OrderSkuVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/vo/PromoSkuVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/vo/RpcGoodsResVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/feign/vo/SkuUsableStockVO.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/AfterSaleHeaderMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/AfterSaleItemLineMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/AfterSaleItemMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/AfterSaleLogisticsMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/AfterSaleReceiverInfoMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/AfterSalesReasonMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/CouponMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/DeliveryLogMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/HeaderMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ItemLineMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ItemLinePriceMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ItemMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ItemPriceMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ItemSnapshotMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/OperateLogMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/OrderLogisticsMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/PriceMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ProcessDefineMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ReceiverInfoMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/RelatedMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ServiceLogMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ThirdHeaderMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ThirdItemMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ThirdPartyAfterReceiverInfoMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ThirdPartyAfterSaleHeaderMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ThirdPartyAfterSaleItemMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ThirdPartyOrderMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ThirdPartyReturnLogisticsMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/ThirdReceiverInfoMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/mapper/WarehousingNoticeMapper.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/properties/DataHierarchyProperties.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/properties/OrderProperties.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/remote/api/RemoteCustomizeService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/remote/api/impl/RemoteCustomizeServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/AfterSaleHeaderRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/AfterSaleItemLineRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/AfterSaleItemRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/AfterSaleLogisticsRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/AfterSaleReceiverInfoRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/AfterSalesReasonRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/CouponRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/DeliveryLogRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/HeaderRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ItemLinePriceRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ItemLineRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ItemPriceRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ItemRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ItemSnapshotRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/OperateLogRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/OrderLogisticsRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/PriceRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ProcessDefineRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ReceiverInfoRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/RelatedRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ServiceLogRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ThirdHeaderRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ThirdItemRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ThirdPartyAfterReceiverInfoRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ThirdPartyAfterSaleHeaderRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ThirdPartyAfterSaleItemRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ThirdPartyOrderRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ThirdPartyReturnLogisticsRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/ThirdReceiverInfoRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/repository/impl/WarehousingNoticeRepositoryImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/util/CollectorsUtil.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/util/Dates.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/util/EsBoolQueryUtil.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/util/JsonUtils.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/util/ListUtil.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/util/ObjectUtils.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/util/OrderTagsUtils.java create mode 100644 skyer-order/src/main/java/org/skyer/order/infra/util/ToBigDecimalFunction.java create mode 100644 skyer-order/src/main/java/org/skyer/order/saga/IOrderService.java create mode 100644 skyer-order/src/main/java/org/skyer/order/saga/impl/IOrderServiceImpl.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/AbstractEventProcessor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/AbstractStateProcessor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/EventDoAction.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/FsmOrder.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/OrderEventsEnum.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/OrderExtraData.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/OrderProcessor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/OrderStateEvent.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/OrderStatusEnum.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/ServiceResult.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/StateActionStep.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/StateContext.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/StateProcessor.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/TestClass.java create mode 100644 skyer-order/src/main/java/org/skyer/order/statemachine/service/PreemptionAction.java create mode 100644 skyer-order/src/main/resources/application.yml create mode 100644 skyer-order/src/main/resources/banner.txt create mode 100644 skyer-order/src/main/resources/bootstrap.yml create mode 100644 skyer-order/src/main/resources/mapper/AfterSaleHeaderMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/AfterSaleItemLineMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/AfterSaleItemMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/AfterSaleLogisticsMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/AfterSaleReceiverInfoMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/AfterSalesReasonMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/DeliveryLogMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/HeaderMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ItemLineMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ItemLinePriceMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ItemMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ItemPriceMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ItemSnapshotMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/OperateLogMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/OrderLogisticsMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/PriceMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ProcessDefineMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ReceiverInfoMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/RelatedMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ServiceLogMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ThirdHeaderMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ThirdItemMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ThirdPartyAfterReceiverInfoMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ThirdPartyAfterSaleHeaderMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ThirdPartyAfterSaleItemMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ThirdPartyOrderMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ThirdPartyReturnLogisticsMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/ThirdReceiverInfoMapper.xml create mode 100644 skyer-order/src/main/resources/mapper/WarehousingNoticeMapper.xml create mode 100644 skyer-order/src/main/resources/messages/messages_hpfm_en_US.properties create mode 100644 skyer-order/src/main/resources/messages/messages_hpfm_zh_CN.properties create mode 100644 skyer-order/src/main/resources/order-send.bpmn create mode 100644 skyer-order/src/main/resources/static/js/babel.min.js create mode 100644 skyer-order/src/test/java/org/skyer/order/EsTest.java create mode 100644 skyer-order/src/test/java/org/skyer/order/OrderEsTest.java create mode 100644 skyer-stock/.gitignore create mode 100644 skyer-stock/.gitlab-ci.yml create mode 100644 skyer-stock/charts/skyer-stock/Chart.yaml create mode 100644 skyer-stock/charts/skyer-stock/README.md create mode 100644 skyer-stock/charts/skyer-stock/templates/_helpers.tpl create mode 100644 skyer-stock/charts/skyer-stock/templates/deployment.yaml create mode 100644 skyer-stock/charts/skyer-stock/templates/service.yaml create mode 100644 skyer-stock/charts/skyer-stock/values.yaml create mode 100644 skyer-stock/docker/Dockerfile create mode 100644 skyer-stock/init-local-database.sh create mode 100644 skyer-stock/pom.xml create mode 100644 skyer-stock/sql/sstock_adjust_detail.sql create mode 100644 skyer-stock/sql/sstock_adjust_record.sql create mode 100644 skyer-stock/sql/sstock_change_log.sql create mode 100644 skyer-stock/sql/sstock_goods_stock_detail.sql create mode 100644 skyer-stock/sql/sstock_outbound_delivery_order.sql create mode 100644 skyer-stock/sql/sstock_outbound_delivery_order_detail.sql create mode 100644 skyer-stock/sql/sstock_result_detail.sql create mode 100644 skyer-stock/sql/sstock_result_record.sql create mode 100644 skyer-stock/sql/sstock_shop_warehouse.sql create mode 100644 skyer-stock/sql/sstock_storage_area.sql create mode 100644 skyer-stock/sql/sstock_warehouse.sql create mode 100644 skyer-stock/sql/sstock_warehouse_result.sql create mode 100644 skyer-stock/sql/sstock_warehouse_result_detail.sql create mode 100644 skyer-stock/sql/sstock_warehouse_warrant.sql create mode 100644 skyer-stock/sql/sstock_warehouse_warrant_detail.sql create mode 100644 skyer-stock/sql/sstock_warehouse_warrant_logistics.sql create mode 100644 skyer-stock/sql/注意 create mode 100644 skyer-stock/src/main/java/org/skyer/autoconfigure/stock/EnableSkyerStock.java create mode 100644 skyer-stock/src/main/java/org/skyer/autoconfigure/stock/StockAutoConfiguration.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/StockApplication.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/controller/v1/AdjustRecordController.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/controller/v1/ChangeLogController.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/controller/v1/GoodsStockController.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/controller/v1/OutboundDeliveryOrderController.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/controller/v1/ResultRecordController.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/controller/v1/StorageAreaController.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/controller/v1/WarehouseController.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/controller/v1/WarehouseResultController.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/controller/v1/WarehouseWarrantController.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/AdjustDetailsReqDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/AdjustPageReqDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/AdjustRecordReqDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/AdjustSagaDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/AuditReqDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/BatchRemoveDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/CodeAndIdDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/EsStockVersionDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/ExeAllocationDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/GoodsStockDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/LogisticsResultDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/NeedOrderDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/OutboundDeliveryOrderDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/OutboundDeliveryOrderDetailDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/OutboundDeliveryOrderDetailLineDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/OutboundDeliveryOrderInfoDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/OutboundDeliveryOrderPageDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/PageReqDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/ReplenishmentPreemptionDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/ResultRecordDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/ResultRecordPageDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/ShopDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/StockChangeListDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/StockEsDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/StockQueryReqDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/StorageAreaDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/StorageAreaListReqDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/WarehouseQueryReqDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/WarehouseResultPageQueryDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/WarehouseWarrantDetailDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/WarehouseWarrantLogisticsDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/WarehouseWarrantPageQueryDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/WarehouseWarrantResultDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/api/dto/WarehouseWarrantSaveDTO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/config/StockExtraDataManager.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/config/StockSwaggerApiConfig.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/AdjustDetail.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/AdjustRecord.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/ChangeLog.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/GoodsStockDetail.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/OutboundDeliveryOrder.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/OutboundDeliveryOrderDetail.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/ResultDetail.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/ResultRecord.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/ShopWarehouse.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/StorageArea.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/Warehouse.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/WarehouseResult.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/WarehouseResultDetail.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/WarehouseWarrant.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/WarehouseWarrantDetail.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/entity/WarehouseWarrantLogistics.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/AdjustDetailRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/AdjustRecordRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/ChangeLogRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/GoodsStockDetailRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/OutboundDeliveryOrderDetailRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/OutboundDeliveryOrderRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/ResultDetailRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/ResultRecordRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/ShopWarehouseRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/StorageAreaRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/WarehouseRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/WarehouseResultDetailRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/WarehouseResultRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/WarehouseWarrantDetailRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/WarehouseWarrantLogisticsRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/repository/WarehouseWarrantRepository.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/AdjustRecordService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/ChangeLogService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/ComputeAvailableStockService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/OutboundDeliveryOrderService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/ResultRecordService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/StockEsService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/StorageAreaService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/WarehouseResultService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/WarehouseService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/WarehouseWarrantService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/impl/AdjustRecordServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/impl/ChangeLogServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/impl/ComputeAvailableStockServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/impl/OutboundDeliveryOrderServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/impl/ResultRecordServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/impl/StockEsServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/impl/StorageAreaServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/impl/WarehouseResultServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/impl/WarehouseServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/impl/WarehouseWarrantServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/saga/StockService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/saga/impl/ExeStockServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/saga/impl/SkuQtyAdjustServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/service/saga/impl/StockServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/AdjustDetailResVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/AdjustRecordPageResVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/AdjustRecordResVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/AreaInfoDetailsVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/GoodsStockResVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/LogisticsResultVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/OdoQtyVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/OutboundDeliveryOrderInfoVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/OutboundDeliveryOrderListVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/ResultRecordInfoVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/ResultRecordListVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/ResultRecordQtyVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/RpcGoodsResVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/StockChangeListVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/StockChangeVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/StorageAreaListVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/WarehouseQueryResVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/WarehouseResultInfoVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/WarehouseResultQtyVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/WarehouseResultVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/WarehouseWarrantInfoLogisticsVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/WarehouseWarrantInfoVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/WarehouseWarrantQtyVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/domain/vo/WarehouseWarrantVO.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/annocations/DatasourceType.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/constant/ObjectConstant.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/convertor/AdjustRecordConvertor.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/convertor/CommonConvertor.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/convertor/StockEsConvertor.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/feign/GoodsSkuRemoteService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/feign/SkyerPlatformRemoteService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/feign/UserDetailRemoteService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/feign/impl/GoodsSkuRemoteServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/feign/impl/SkyerPlatformRemoteServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/feign/impl/UserDetailRemoteServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/AdjustDetailMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/AdjustRecordMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/ChangeLogMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/GoodsStockDetailMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/OutboundDeliveryOrderDetailMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/OutboundDeliveryOrderMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/ResultDetailMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/ResultRecordMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/ShopWarehouseMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/StorageAreaMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/WarehouseMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/WarehouseResultDetailMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/WarehouseResultMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/WarehouseWarrantDetailMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/WarehouseWarrantLogisticsMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/mapper/WarehouseWarrantMapper.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/properties/DataHierarchyProperties.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/properties/StockProperties.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/remote/api/RemoteCustomizeService.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/remote/api/impl/RemoteCustomizeServiceImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/AdjustDetailRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/AdjustRecordRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/ChangeLogRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/GoodsStockDetailRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/OutboundDeliveryOrderDetailRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/OutboundDeliveryOrderRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/ResultDetailRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/ResultRecordRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/ShopWarehouseRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/StorageAreaRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/WarehouseRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/WarehouseResultDetailRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/WarehouseResultRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/WarehouseWarrantDetailRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/WarehouseWarrantLogisticsRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/repository/impl/WarehouseWarrantRepositoryImpl.java create mode 100644 skyer-stock/src/main/java/org/skyer/stock/infra/util/EsBoolQueryUtil.java create mode 100644 skyer-stock/src/main/resources/application.yml create mode 100644 skyer-stock/src/main/resources/banner.txt create mode 100644 skyer-stock/src/main/resources/bootstrap.yml create mode 100644 skyer-stock/src/main/resources/mapper/AdjustDetailMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/AdjustRecordMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/ChangeLogMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/GoodsStockDetailMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/OutboundDeliveryOrderDetailMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/OutboundDeliveryOrderMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/ResultDetailMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/ResultRecordMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/ShopWarehouseMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/StorageAreaMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/WarehouseMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/WarehouseResultDetailMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/WarehouseResultMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/WarehouseWarrantDetailMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/WarehouseWarrantLogisticsMapper.xml create mode 100644 skyer-stock/src/main/resources/mapper/WarehouseWarrantMapper.xml create mode 100644 skyer-stock/src/main/resources/messages/messages_hpfm_en_US.properties create mode 100644 skyer-stock/src/main/resources/messages/messages_hpfm_zh_CN.properties create mode 100644 skyer-stock/src/main/resources/static/js/babel.min.js create mode 100644 skyer-tags/.gitignore create mode 100644 skyer-tags/.gitlab-ci.yml create mode 100644 skyer-tags/README.md create mode 100644 skyer-tags/charts/skyer-tags/Chart.yaml create mode 100644 skyer-tags/charts/skyer-tags/README.md create mode 100644 skyer-tags/charts/skyer-tags/templates/_helpers.tpl create mode 100644 skyer-tags/charts/skyer-tags/templates/deployment.yaml create mode 100644 skyer-tags/charts/skyer-tags/templates/service.yaml create mode 100644 skyer-tags/charts/skyer-tags/values.yaml create mode 100644 skyer-tags/docker/Dockerfile create mode 100644 skyer-tags/init-local-database.sh create mode 100644 skyer-tags/pom.xml create mode 100644 skyer-tags/sql/skyer_tags.sql create mode 100644 skyer-tags/src/main/java/org/skyer/autoconfigure/tags/EnableSkyerLabel.java create mode 100644 skyer-tags/src/main/java/org/skyer/autoconfigure/tags/TagsAutoConfiguration.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/TagsApplication.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/api/controller/v1/LabelController.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/api/dto/BatchUpdateStatusDTO.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/api/dto/IdsDTO.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/api/dto/LabelListQueryDTO.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/api/dto/LabelQueryDTO.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/api/dto/LabelSaveDTO.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/app/service/LabelService.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/app/service/impl/LabelServiceImpl.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/config/TagsExtraDataManager.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/config/TagsSwaggerApiConfig.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/domain/entity/Label.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/domain/repository/LabelRepository.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/domain/vo/LabelVO.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/annocations/DatasourceType.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/constant/CompanyConstants.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/constant/Constants.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/constant/DataHierarchyDisplayStyle.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/constant/FndConstants.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/constant/HpfmMsgCodeConstants.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/constant/HrConstants.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/convertor/CommonConvertor.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/enums/DBPoolTypeEnum.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/enums/DatabaseTypeEnum.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/handler/MessageHandler.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/mapper/LabelMapper.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/properties/DataHierarchyProperties.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/properties/TagsProperties.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/remote/api/RemoteCustomizeService.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/remote/api/impl/RemoteCustomizeServiceImpl.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/repository/impl/LabelRepositoryImpl.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/util/Dates.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/util/JsonUtils.java create mode 100644 skyer-tags/src/main/java/org/skyer/tags/infra/util/ListUtil.java create mode 100644 skyer-tags/src/main/resources/application.yml create mode 100644 skyer-tags/src/main/resources/banner.txt create mode 100644 skyer-tags/src/main/resources/bootstrap.yml create mode 100644 skyer-tags/src/main/resources/mapper/LabelMapper.xml create mode 100644 skyer-tags/src/main/resources/messages/messages_hpfm_en_US.properties create mode 100644 skyer-tags/src/main/resources/messages/messages_hpfm_zh_CN.properties create mode 100644 skyer-tags/src/main/resources/static/js/babel.min.js diff --git a/front-end/.editorconfig b/front-end/.editorconfig new file mode 100644 index 0000000..3454886 --- /dev/null +++ b/front-end/.editorconfig @@ -0,0 +1,14 @@ +# https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/front-end/.env.development b/front-end/.env.development new file mode 100644 index 0000000..2f6e1f1 --- /dev/null +++ b/front-end/.env.development @@ -0,0 +1,11 @@ +# just a flag +VUE_APP_ENV = 'development' +# 以下路径变量必须得用VUE_APP开头 +# ACCESS_TOKEN default value +VUE_APP_ACCESS_TOKEN = '' +# base api 本地环境执行npm run dev ,取此 api 前缀; 不是线上(生产)环境使用的 +VUE_APP_BASE_API = 'http://api.ebc.com' +# client id +VUE_APP_CLIENT_ID = 'localhost' +# 默认的图片上传分组 +VUE_APP_UPLOAD_BUCKET_NAME = 'test' diff --git a/front-end/.env.production b/front-end/.env.production new file mode 100644 index 0000000..69eb5a3 --- /dev/null +++ b/front-end/.env.production @@ -0,0 +1,11 @@ +# just a flag +VUE_APP_ENV = 'production' +# 以下路径变量必须得用VUE_APP开头 +# ACCESS_TOKEN default value +VUE_APP_ACCESS_TOKEN = '' +# base api 生产环境执行npm run build; 从src\utils\index.js 的 VUE_APP_BASE_API() 动态获取 +VUE_APP_BASE_API = 'http://api.test.org' +# client id +VUE_APP_CLIENT_ID = 'localhost' +# 默认的图片上传分组 +VUE_APP_UPLOAD_BUCKET_NAME = 'test' diff --git a/front-end/.env.qa b/front-end/.env.qa new file mode 100644 index 0000000..2c9b845 --- /dev/null +++ b/front-end/.env.qa @@ -0,0 +1,11 @@ +# 连接测试的api数据 +VUE_APP_ENV = 'qa' +# 以下路径变量必须得用VUE_APP开头 +# ACCESS_TOKEN default value +VUE_APP_ACCESS_TOKEN = '' +# base api 本地环境执行npm run qa ,取此 api 前缀; 不是线上(生产)环境使用的 +VUE_APP_BASE_API = 'http://api.ebc1.com' +# client id +VUE_APP_CLIENT_ID = 'localhost' +# 默认的图片上传分组 +VUE_APP_UPLOAD_BUCKET_NAME = 'test' diff --git a/front-end/.env.staging b/front-end/.env.staging new file mode 100644 index 0000000..a8793a0 --- /dev/null +++ b/front-end/.env.staging @@ -0,0 +1,8 @@ +NODE_ENV = production + +# just a flag +ENV = 'staging' + +# base api +VUE_APP_BASE_API = '/stage-api' + diff --git a/front-end/.env.test b/front-end/.env.test new file mode 100644 index 0000000..094d62f --- /dev/null +++ b/front-end/.env.test @@ -0,0 +1,11 @@ +# test 环境,默认了 VUE_APP_ACCESS_TOKEN 的值,将不经过Api +VUE_APP_ENV = 'test' +# 以下路径变量必须得用VUE_APP开头 +# ACCESS_TOKEN default value +VUE_APP_ACCESS_TOKEN = 'test' +# base api +VUE_APP_BASE_API = 'http://api.skyer.org' +# client id +VUE_APP_CLIENT_ID = 'localhost' +# 默认的图片上传分组 +VUE_APP_UPLOAD_BUCKET_NAME = 'test' diff --git a/front-end/.env.uat b/front-end/.env.uat new file mode 100644 index 0000000..a3edf8a --- /dev/null +++ b/front-end/.env.uat @@ -0,0 +1,11 @@ +# 连接测试的api数据 +VUE_APP_ENV = 'uat' +# 以下路径变量必须得用VUE_APP开头 +# ACCESS_TOKEN default value +VUE_APP_ACCESS_TOKEN = '' +# base api 本地环境执行npm run uat ,取此 api 前缀; 不是线上(生产)环境使用的 +VUE_APP_BASE_API = 'https://omniapi.k8s9.com' +# client id +VUE_APP_CLIENT_ID = 'localhost' +# 默认的图片上传分组 +VUE_APP_UPLOAD_BUCKET_NAME = 'test' diff --git a/front-end/.eslintignore b/front-end/.eslintignore new file mode 100644 index 0000000..4b1d2dc --- /dev/null +++ b/front-end/.eslintignore @@ -0,0 +1,5 @@ +build/*.js +src/assets +public +dist +src/components/BjTreeSelect/vue-treeselect.cjs.js diff --git a/front-end/.eslintrc.js b/front-end/.eslintrc.js new file mode 100644 index 0000000..36326cd --- /dev/null +++ b/front-end/.eslintrc.js @@ -0,0 +1,293 @@ +module.exports = { + root: true, + parserOptions: { + parser: 'babel-eslint', + sourceType: 'module', + }, + env: { + browser: true, + node: true, + es6: true, + }, + extends: ['plugin:vue/recommended', 'eslint:recommended'], + + // add your custom rules here + //it is base on https://github.com/vuejs/eslint-config-vue + rules: { + 'vue/max-attributes-per-line': [ + 0, + { + singleline: 3, + multiline: { + max: 3, + allowFirstLine: false, + }, + }, + ], + 'vue/html-self-closing': [ + 'error', + { + html: { + void: 'always', + normal: 'any', + component: 'any', + }, + svg: 'always', + math: 'always', + }, + ], + 'vue/no-side-effects-in-computed-properties': 'off', + 'vue/singleline-html-element-content-newline': 'off', + 'vue/multiline-html-element-content-newline': 'off', + 'vue/name-property-casing': ['error', 'PascalCase'], + 'vue/no-v-html': 'off', + 'vue/html-closing-bracket-newline': [ + 'off', + { + singleline: 'never', + multiline: 'always', + }, + ], + 'vue/html-indent': [ + 'off', + { + attribute: 1, + baseIndent: 1, + closeBracket: 0, + alignAttributesVertically: true, + ignores: [], + }, + ], + 'accessor-pairs': 2, + 'arrow-spacing': [ + 2, + { + before: true, + after: true, + }, + ], + 'block-spacing': [2, 'always'], + 'brace-style': [ + 2, + '1tbs', + { + allowSingleLine: true, + }, + ], + camelcase: [ + 0, + { + properties: 'always', + }, + ], + 'comma-dangle': [2, 'only-multiline'], + 'comma-spacing': [ + 2, + { + before: false, + after: true, + }, + ], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + curly: [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + eqeqeq: [0, 'always', { null: 'ignore' }], + 'generator-star-spacing': [ + 2, + { + before: true, + after: true, + }, + ], + 'handle-callback-err': [2, '^(err|error)$'], + // 'indent': [2, 2, { + // 'SwitchCase': 1 + // }], + 'jsx-quotes': [2, 'prefer-single'], + 'key-spacing': [ + 2, + { + beforeColon: false, + afterColon: true, + }, + ], + 'keyword-spacing': [ + 2, + { + before: true, + after: true, + }, + ], + 'new-cap': [ + 2, + { + newIsCap: true, + capIsNew: false, + }, + ], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [ + 2, + { + allowLoop: false, + allowSwitch: false, + }, + ], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [ + 2, + { + max: 1, + }, + ], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [ + 2, + { + defaultAssignment: false, + }, + ], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [ + 2, + { + vars: 'all', + args: 'none', + }, + ], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [ + 2, + { + initialized: 'never', + }, + ], + 'operator-linebreak': [ + 2, + 'after', + { + overrides: { + '?': 'before', + ':': 'before', + }, + }, + ], + 'padded-blocks': [2, 'never'], + quotes: [ + 2, + 'single', + { + avoidEscape: true, + allowTemplateLiterals: true, + }, + ], + semi: [2, 'always'], + 'semi-spacing': [ + 2, + { + before: false, + after: true, + }, + ], + 'space-before-blocks': [2, 'always'], + 'space-before-function-paren': [0, 'always'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [ + 2, + { + words: true, + nonwords: false, + }, + ], + 'spaced-comment': [ + 2, + 'always', + { + markers: ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','], + }, + ], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + yoda: [2, 'never'], + 'prefer-const': 2, + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'object-curly-spacing': [ + 0, + 'always', + { + objectsInObjects: false, + }, + ], + 'array-bracket-spacing': [2, 'never'], + }, +}; diff --git a/front-end/.gitignore b/front-end/.gitignore new file mode 100644 index 0000000..78a752d --- /dev/null +++ b/front-end/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +**/*.log + +tests/**/coverage/ +tests/e2e/reports +selenium-debug.log + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.local + +package-lock.json +yarn.lock diff --git a/front-end/.gitlab-ci.yml b/front-end/.gitlab-ci.yml new file mode 100644 index 0000000..32da9a2 --- /dev/null +++ b/front-end/.gitlab-ci.yml @@ -0,0 +1,5 @@ +include: http://api.k8s9.com/devops/v1/projects/285085540595404800/ci_contents/pipelines/afb0fc82-1964-4557-bf7d-954d8a380b47/content.yaml + +#include: http://api.baogicloud.com/devops/v1/projects/204888765897510912/ci_contents/pipelines/0ce800a5-e58a-4953-9636-f506efb3ff85/content.yaml +# +##include: http://api.baogicloud.com/devops/v1/projects/187577360164982784/ci_contents/pipelines/84c3efc1-6c6e-4e3c-b5c4-7237b03c9413/content.yaml \ No newline at end of file diff --git a/front-end/.prettierrc.js b/front-end/.prettierrc.js new file mode 100644 index 0000000..00bfa9c --- /dev/null +++ b/front-end/.prettierrc.js @@ -0,0 +1,13 @@ +module.exports = { + endOfLine: 'auto', //换行 自动 + printWidth: 100, // 每行代码长度(默认80) + singleQuote: true, // 使用单引号(默认false) + tabWidth: 2, //缩进 + useTabs: false, // 是否使用tab进行缩进(默认false) + trailingComma: 'all', // 多行使用拖尾逗号(默认none) + semi: true, // 声明结尾使用分号(默认true) + bracketSpacing: true, // 对象字面量的大括号间使用空格(默认true) + jsxBracketSameLine: false, // 多行JSX中的>放置在最后一行的结尾,而不是另起一行(默认false) + jsxSingleQuote: true, // 在jsx中使用单引号代替双引号 + arrowParens: 'avoid', // 只有一个参数的箭头函数的参数是否带圆括号(默认avoid) +}; diff --git a/front-end/.travis.yml b/front-end/.travis.yml new file mode 100644 index 0000000..f4be7a0 --- /dev/null +++ b/front-end/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: 10 +script: npm run test +notifications: + email: false diff --git a/front-end/LICENSE b/front-end/LICENSE new file mode 100644 index 0000000..6151575 --- /dev/null +++ b/front-end/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-present PanJiaChen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/front-end/README.md b/front-end/README.md new file mode 100644 index 0000000..c54ecc0 --- /dev/null +++ b/front-end/README.md @@ -0,0 +1,156 @@ +# 规范 + +多行查询 /this\.cancel\(\{\n._\n._\)/ + +- 全局 element 组件已经默认 size="mini" +- 组件名称/文件 大写开头 +- 声明变量必须加上 let 关键字.不要再使用 var +- const 常量 ,大写 如:`PAGE_LIST` +- 禁用、启用、删除等操作,需要弹窗确认 + ```js + /** 禁用 */ + onStatus(flag, row) { + const TEXT = STATUS_ENABLED_NUM.bjGet(flag); + this.$confirm(`您正在 ${TEXT} ${row.brandName},是否继续?`, '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }) + .then(() => { + this.operationApi({ + ids: [row.id], + status: flag, + }); + }) + .catch(() => {}); + }, + /** 删除操作 */ + onDelete(row) { + this.$confirm(`您正在删除 ${row.brandName},是否继续?`, '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }) + .then(() => { + this.batchDeleteApi({ ids: [row.id] }); + }) + .catch(() => {}); + }, + ``` +- 列表的状态列,用`el-tag`展示 + ```html + {{ STATUS_ENABLED_NUM.bjGet(scope.row.status) }} + ``` + - 新增/编辑的内容较少,使用`BjDrawerForm`弹窗展示,较多内容使用新页面 + - (新增/编辑等)页面的保存确认等按钮,放在右上角,可吸顶 + ```html + 基本信息 + + + + ``` +- 路由命名 + 以父级路由为前缀,依次向后增长 + 当前路由名称应与文件路径基本一致 + 列表页面路由以 Index 结尾 + 新增页面路由以 Add 结尾 + 编辑页面路由以 Edit 结尾 + 详情页面路由以 View 结尾 + 配置页面路由以 Config 结尾 + 路由长度默认为四级,前三级为模块菜单,第四级为页面和功能 + +# 通用样式 + +- `bj-label-colon` 表单 label 文字加冒号 +- `full-width` 宽度 100% +- `tips` 提示文字,小号,灰色 +- `link` 模拟链接,蓝色,可点击 + +# 组件 + +## 列表页面的公共混入 + +`import pageMiXin from '@/utils/page-mixin.js';` + +## BjPage + +路径 src\components\BjPage\index.vue +路径 src\components\BjPage\mixin.js + +## 详情页面的公共混入 + +`import viewMiXin from '@/utils/view-mixin.js';` + +## BjDialogList + +## ScrollLoad + +列表滚动加载 packages\ScrollLoad\README.md + +## ScrollSelect + +## + +- BjImportFile 导入 +- BjDialogList 通用弹窗选择:弹出一个列表,可以搜索 +- BjDivider 分割线 +- BjDrawerForm 右侧弹窗 【新建、编辑】类使用 +- BjSelectLov 下拉选择 +- BjCheckboxLov 复选 +- BjRadioLov 单选 +- BjRouteTabs tab 页的路由跳转头部 +- BjInputMoney 金额 input +- ScrollSelect 支持 滚动加载、api 搜索 的下拉选择框, +- BjPagingTable 带分页的表格 +- BjSelectProvinces dialog 弹窗选择中国的省/市 +- BjInputNumber 数量 input 正整数 +- BjSelectChinaArea 下拉选择中国的省/市/区 单独 all type="city" type="area" +- BjUpload 带缩略图的上传组件 +- BjDialogTable + +## 其它组件 + +1. 日期组件 `el-date-picker` 需要设置 + +- class="full-width => 宽度 100% +- value-format="yyyy-MM-dd" + +2. 下拉选择 尽量使用 `BjSelectLov` 组件 + 单选 尽量使用 `BjRadioLov` 组件 + 复选 尽量使用 `BjCheckboxLov` 组件 + +3. `input` 需要设置 + +- :maxlength="MAX_LENGTH.DEFAULT" +- clearable + +4. `el-dialog` 需要设置 + +- :close-on-click-modal="false" +- :close-on-press-escape="false" + +# 依赖 Node-sass 安装 + +不使用 Node-sass 会出现图标乱码 +Node-sass 版本高于 5.0.0,与会构建失败 +使用 原镜像 https://registry.npmjs.org/ 无法下载 5.0.0 以下的 Node-sass 版本 + +[来源知乎](https://zhuanlan.zhihu.com/p/147005226) + +```npm +npm config set registry http://registry.npm.taobao.org/ + +npm config set disturl https://npm.taobao.org/mirrors/node/ + +npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/ + +npm cache clean -f + +npm install node-sass@1.14.1 +``` diff --git a/front-end/babel.config.js b/front-end/babel.config.js new file mode 100644 index 0000000..9cfd5d7 --- /dev/null +++ b/front-end/babel.config.js @@ -0,0 +1,23 @@ +module.exports = { + presets: [ + // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app + '@vue/cli-plugin-babel/preset', + ], + env: { + development: { + // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require(). + // This plugin can significantly increase the speed of hot updates, when you have a large number of pages. + // https://panjiachen.github.io/vue-element-admin-site/guide/advanced/lazy-loading.html + plugins: ['dynamic-import-node'], + }, + }, + plugins: [ + [ + 'import', + { + libraryName: 'vxe-table', + style: true, + }, + ], + ], +}; diff --git a/front-end/charts/ebc-front/Chart.yaml b/front-end/charts/ebc-front/Chart.yaml new file mode 100644 index 0000000..adb5e6b --- /dev/null +++ b/front-end/charts/ebc-front/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +appVersion: "1.0" +description: A Helm chart for Kubernetes +name: ebc-front +version: 0.1.0 diff --git a/front-end/charts/ebc-front/README.md b/front-end/charts/ebc-front/README.md new file mode 100644 index 0000000..5b153fd --- /dev/null +++ b/front-end/charts/ebc-front/README.md @@ -0,0 +1,56 @@ +# Quick start + +部署文件的渲染模板,我们下文将定义一些变量,helm执行时会将变量渲染进模板文件中。 + +## _helpers.tpl + +这个文件我们用来进行标签模板的定义,以便在上文提到的位置进行标签渲染。 + +此项目标签总共分为两个部分: 平台、日志。 + +### 平台标签 + +#### deployment 级: + +``` +{{- define "service.labels.standard" -}} +choerodon.io/release: {{ .Release.Name | quote }} +{{- end -}} +``` +平台管理实例需要的实例ID。 + + +### 日志标签 + +#### deployment 级: + +``` +{{- define "service.logging.deployment.label" -}} +choerodon.io/logs-parser: {{ .Values.logs.parser | quote }} +{{- end -}} +``` +日志管理所需要的应用标签。该标签指定应用程序的日志格式,内置格式有`nginx`,`spring-boot`,`docker`对于前端服务请使用`nginx`,如果不需要收集日志请移除此段代码,并删除模板文件关于`service.logging.deployment.label`的引用。 + +## values.yaml + +这个文件中的键值对,即为我们上文中所引用的变量。 + +将所以有变量集中在一个文件中,方便部署的时候进行归档以及灵活替换。 + +同时,helm命令支持使用 `--set FOO_BAR=FOOBAR` 参数对values 文件中的变量进行赋值,可以进一步简化部署流程。 + + +## 参数对照表 + +参数名 | 含义 +--- | --- +preJob.preConfig.mysql{}|初始化配置所需manager_service数据库信息 +env.open.PRO_API_HOST|api地址 +env.open.PRO_DEVOPS_HOST|devops service地址 +env.open.PRO_CLIENT_ID|client id +env.open.PRO_TITLE_NAME|页面显示标题 +env.open.PRO_HEADER_TITLE_NAME|页面header标题 +env.open.PRO_HTTP|使用协议 +service.enable|创建service对象 +ingress.enable|创建ingress对象 +ingress.host|域名地址,此处不能带http:// diff --git a/front-end/charts/ebc-front/templates/_helpers.tpl b/front-end/charts/ebc-front/templates/_helpers.tpl new file mode 100644 index 0000000..2baa342 --- /dev/null +++ b/front-end/charts/ebc-front/templates/_helpers.tpl @@ -0,0 +1,28 @@ +{{/* vim: set filetype=mustache: */}} +{{- /* +service.labels.standard prints the standard service Helm labels. +The standard labels are frequently used in metadata. +*/ -}} + +{{- define "service.image" -}} +{{- printf "%s:%s" .Values.image.repository (default (.Chart.Version) .Values.image.tag) -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for deployment. +*/}} +{{- define "app.deployment.apiVersion" -}} +{{- if semverCompare "<1.9-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "apps/v1beta2" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + + +{{- define "service.labels.kubesphere" -}} +app: {{ .Release.Name | quote }} +app.kubernetes.io/name: {{ .Values.kubesphere.app.name | quote }} +app.kubernetes.io/version: {{ .Values.kubesphere.app.version | quote }} +version: {{ .Values.kubesphere.app.version | quote }} +{{- end -}} diff --git a/front-end/charts/ebc-front/templates/deployment.yaml b/front-end/charts/ebc-front/templates/deployment.yaml new file mode 100644 index 0000000..e51dba5 --- /dev/null +++ b/front-end/charts/ebc-front/templates/deployment.yaml @@ -0,0 +1,95 @@ +apiVersion: {{ include "app.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ .Release.Name }} + labels: +{{ include "service.labels.kubesphere" . | indent 4 }} + annotations: + deployment.kubernetes.io/revision: '1' + kubesphere.io/creator: {{ .Values.kubesphere.app.creator | quote }} + servicemesh.kubesphere.io/enabled: '{{ .Values.kubesphere.app.servicemesh }}' +spec: + strategy: + type: {{ .Values.deploymentUpdate.type }} + {{- if eq .Values.deploymentUpdate.type "RollingUpdate" }} + rollingUpdate: + maxSurge: {{ .Values.deploymentUpdate.maxSurge }} + maxUnavailable: {{ .Values.deploymentUpdate.maxUnavailable }} + {{- else }} + rollingUpdate: null + {{- end}} + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: +{{ include "service.labels.kubesphere" . | indent 6 }} + template: + metadata: + annotations: + sidecar.istio.io/inject: '{{ .Values.kubesphere.app.servicemesh }}' + labels: +{{ include "service.labels.kubesphere" . | indent 8 }} + spec: + volumes: + - name: host-time + hostPath: + path: /etc/localtime + type: '' + - name: data + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default ( .Release.Name ) }} + {{- else }} + emptyDir: {} + {{- end }} + containers: + - name: {{ .Release.Name }} + image: {{ include "service.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + {{- range $name, $value := .Values.env.open }} + {{- if ne (len ($value | quote)) 0 }} + - name: {{ $name | quote }} + value: {{ $value | quote }} + {{- end }} + {{- end }} + ports: + - name: http-{{ .Values.service.port }} + containerPort: {{ .Values.service.port }} + protocol: TCP + {{- if not (empty .Values.deployment.managementPort) }} + - name: http-{{ .Values.deployment.managementPort }} + containerPort: {{ .Values.deployment.managementPort }} + protocol: TCP + {{- end }} + resources: +{{ toYaml .Values.resources | indent 12 }} + volumeMounts: + - name: host-time + readOnly: true + mountPath: /etc/localtime + - mountPath: /Charts + name: data + {{- if not (empty .Values.persistence.subPath) }} + subPath: {{ .Values.persistence.subPath }} + {{- end }} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + restartPolicy: Always + terminationGracePeriodSeconds: 30 + dnsPolicy: ClusterFirst + serviceAccountName: default + serviceAccount: default + securityContext: {} + schedulerName: default-scheduler +{{- with .Values.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} +{{- end }} +{{- with .Values.affinity }} + affinity: +{{ toYaml . | indent 8 }} +{{- end }} +{{- with .Values.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} +{{- end }} diff --git a/front-end/charts/ebc-front/templates/service.yaml b/front-end/charts/ebc-front/templates/service.yaml new file mode 100644 index 0000000..90584c9 --- /dev/null +++ b/front-end/charts/ebc-front/templates/service.yaml @@ -0,0 +1,41 @@ +{{- if .Values.service.enabled }} +kind: Service +apiVersion: v1 +metadata: + name: {{ .Release.Name }} + labels: +{{ include "service.labels.kubesphere" . | indent 4 }} + annotations: + kubesphere.io/creator: {{ .Values.kubesphere.app.creator }} + kubesphere.io/serviceType: {{ .Values.kubesphere.app.serviceType | quote }} + {{- if .Values.kubesphere.app.ingress }} + service.beta.kubernetes.io/qingcloud-load-balancer-eip-ids: '' + service.beta.kubernetes.io/qingcloud-load-balancer-type: '0' + {{- end }} + servicemesh.kubesphere.io/enabled: '{{ .Values.kubesphere.app.servicemesh }}' +spec: + ports: + - name: http-{{ .Values.service.port }} + protocol: TCP + port: {{ .Values.service.port }} + targetPort: {{ .Values.service.port }} + {{- if not (empty .Values.service.nodePort) }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} + {{- if not (empty .Values.deployment.managementPort) }} + - name: http-{{ .Values.deployment.managementPort }} + protocol: TCP + port: {{ .Values.deployment.managementPort }} + targetPort: {{ .Values.deployment.managementPort }} + {{- if not (empty .Values.deployment.nodePort) }} + nodePort: {{ .Values.deployment.nodePort }} + {{- end }} + {{- end }} + selector: +{{ include "service.labels.kubesphere" . | indent 4 }} + type: {{ .Values.service.type | quote }} + sessionAffinity: None + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + {{- end }} diff --git a/front-end/charts/ebc-front/values.yaml b/front-end/charts/ebc-front/values.yaml new file mode 100644 index 0000000..5870139 --- /dev/null +++ b/front-end/charts/ebc-front/values.yaml @@ -0,0 +1,72 @@ +## 实例运行数量 +replicaCount: 1 +## 设置默认的 image、imageTag 和 imagePullPolicy。 +image: + # 需设置镜像地址 repository: xxxxxx + pullPolicy: IfNotPresent +deployment: + managementPort: + nodePort: +kubesphere: + app: + name: ebc + version: v1 + creator: admin + servicemesh: true + # statelessservice statefulservice + serviceType: statelessservice + ingress: true +## Deployment 更新策略 +deploymentUpdate: + type: RollingUpdate + maxUnavailable: 25% + maxSurge: 25% +## Pod 节点分配 +## ref: https://kubernetes.io/docs/user-guide/node-selection/ +## +nodeSelector: {} +tolerations: [] +affinity: {} +## 资源请求和限制相关配置 +## ref: http://kubernetes.io/docs/user-guide/compute-resources/ +## +resources: + limits: + cpu: 900m + memory: 2Gi + requests: + cpu: 100m + memory: 512Mi +## service 相关设置 +## ref: http://kubernetes.io/docs/user-guide/services/ +## +service: + enabled: true + # LoadBalancer ClusterIP + type: LoadBalancer + port: 8080 + nodePort: +persistence: + enabled: false + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + # subPath: +env: + open: + SERVER_PORT: 8080 + BUILD_BASE_PATH: / + BUILD_WEBSOCKET_HOST: ws://192.168.16.173:8120 + BUILD_CLIENT_ID: ebc-front-uat + BUILD_API_HOST: http://192.168.12.101:8080/ + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true + BUILD_PLATFORM_VERSION: SAAS + BUILD_MULTIPLE_SKIN_ENABLE: false + BUILD_TOP_MENU_LABELS: HZERO_MENU + BUILD_TOP_MENU_UNION_LABEL: false + BUILD_TRACE_LOG_ENABLE: true + BUILD_IM_ENABLE: true + BUILD_IM_WEBSOCKET_HOST: ws://172.23.16.46:9876 + BUILD_INVALID_TIME: 120 + BUILD_CUSTOMIZE_ICON_NAME: customize-icon diff --git a/front-end/docker/Dockerfile b/front-end/docker/Dockerfile new file mode 100644 index 0000000..bef9414 --- /dev/null +++ b/front-end/docker/Dockerfile @@ -0,0 +1,6 @@ +FROM registry.cn-shanghai.aliyuncs.com/c7n/frontbase:0.9.0 +RUN echo "Asia/shanghai" > /etc/timezone; +RUN chown -R nginx:nginx /usr/share/nginx/html +COPY --chown=nginx:nginx ./dist /usr/share/nginx/html +USER 101 +CMD ["nginx", "-g", "daemon off;"] diff --git a/front-end/fj.png b/front-end/fj.png new file mode 100644 index 0000000000000000000000000000000000000000..c485612dd40b2894367d3d6e3a5dd6987e7c00d1 GIT binary patch literal 29732 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 WJ0(2D<{$m@oxF^Sbfu(8@c#pF63f;A literal 0 HcmV?d00001 diff --git a/front-end/fjxx.png b/front-end/fjxx.png new file mode 100644 index 0000000000000000000000000000000000000000..841aea299c5e3294e9b1bf2eb9915d252717414c GIT binary patch literal 3822 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 ZR0AYfSloDL<#LY&=xQ2iRI541{s%lzR$Bl7 literal 0 HcmV?d00001 diff --git a/front-end/getRouter.js b/front-end/getRouter.js new file mode 100644 index 0000000..2435fbd --- /dev/null +++ b/front-end/getRouter.js @@ -0,0 +1,131 @@ +// import { asyncRoutes } from './src/router/index'; +const asyncRoutes = require('./src/router/index'); +console.log(asyncRoutes); + +// console.log( +// '权限表 permission.json 用于初始化菜单权限数据', +// [asyncRoutes[0], asyncRoutes[1]].map((e1, n1) => { +// return { +// permissionType: e1.permissionType || 'api', +// title: e1.meta.title, +// icon: e1.meta.icon || null, +// code: e1.name, +// hiddenFlag: false, +// sort: n1, +// children: !e1.children +// ? [] +// : e1.children.map((e2, n2) => { +// if (!e2.children || e2.children.length == 0) { +// console.log('只有二级:' + e1.meta.title + '-' + e2.meta.title); +// } +// return { +// permissionType: e2.permissionType || 'api', +// title: e2.meta.title, +// icon: e2.meta.icon || null, +// code: e2.name, +// hiddenFlag: false, +// sort: n2, +// children: !e2.children +// ? [] +// : e2.children.map((e3, n3) => { +// if (!e3.children || e3.children.length == 0) { +// console.log( +// '只有三级:' + e1.meta.title + '-' + e2.meta.title + '-' + e3.meta.title, +// ); +// } +// return { +// permissionType: e3.permissionType || 'api', +// title: e3.meta.title, +// icon: e3.meta.icon || null, +// code: e3.name, +// hiddenFlag: false, +// sort: n3, +// children: !e3.children +// ? [] +// : e3.children.map((e4, n4) => { +// // 有下划线的 默认为按钮,没有下划线的为页面,如果是tab页,则对应路由表permissionType=tab +// const DEFAULT_TYPE = e4.name.includes('_') ? 'btn' : 'page'; +// return { +// permissionType: e4.permissionType || DEFAULT_TYPE, +// title: e4.meta.title, +// icon: e4.meta.icon || null, +// code: e4.name, +// hiddenFlag: true, +// sort: n4, +// }; +// }), +// }; +// }), +// }; +// }), +// }; +// }), +// ); +const routes = [asyncRoutes[0], asyncRoutes[1]].map((e1, n1) => { + return { + permissionType: e1.permissionType || 'api', + title: e1.meta.title, + icon: e1.meta.icon || null, + code: e1.name, + hiddenFlag: false, + sort: n1, + children: !e1.children + ? [] + : e1.children.map((e2, n2) => { + if (!e2.children || e2.children.length == 0) { + console.log('只有二级:' + e1.meta.title + '-' + e2.meta.title); + } + return { + permissionType: e2.permissionType || 'api', + title: e2.meta.title, + icon: e2.meta.icon || null, + code: e2.name, + hiddenFlag: false, + sort: n2, + children: !e2.children + ? [] + : e2.children.map((e3, n3) => { + if (!e3.children || e3.children.length == 0) { + console.log( + '只有三级:' + e1.meta.title + '-' + e2.meta.title + '-' + e3.meta.title, + ); + } + return { + permissionType: e3.permissionType || 'api', + title: e3.meta.title, + icon: e3.meta.icon || null, + code: e3.name, + hiddenFlag: false, + sort: n3, + children: !e3.children + ? [] + : e3.children.map((e4, n4) => { + // 有下划线的 默认为按钮,没有下划线的为页面,如果是tab页,则对应路由表permissionType=tab + const DEFAULT_TYPE = e4.name.includes('_') ? 'btn' : 'page'; + return { + permissionType: e4.permissionType || DEFAULT_TYPE, + title: e4.meta.title, + icon: e4.meta.icon || null, + code: e4.name, + hiddenFlag: true, + sort: n4, + }; + }), + }; + }), + }; + }), + }; +}); + +const fs = require('fs'); +const content = JSON.stringify(routes, null, '\t'); +// 写入文件 +fs.writeFile('111.json', content, function(err) { + if (err) { + return console.log(err); + } + console.log('路由文件已经生成'); +}); + +// export default routes; diff --git a/front-end/gzh.png b/front-end/gzh.png new file mode 100644 index 0000000000000000000000000000000000000000..dab4a4040a9a4b41434edb4102754550566c07fd GIT binary patch literal 19557 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 U%CcW2-2eap07*qoM6N<$g7{wW#sB~S literal 0 HcmV?d00001 diff --git a/front-end/jest.config.js b/front-end/jest.config.js new file mode 100644 index 0000000..143cdc8 --- /dev/null +++ b/front-end/jest.config.js @@ -0,0 +1,24 @@ +module.exports = { + moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], + transform: { + '^.+\\.vue$': 'vue-jest', + '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': + 'jest-transform-stub', + '^.+\\.jsx?$': 'babel-jest' + }, + moduleNameMapper: { + '^@/(.*)$': '/src/$1' + }, + snapshotSerializers: ['jest-serializer-vue'], + testMatch: [ + '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' + ], + collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'], + coverageDirectory: '/tests/unit/coverage', + // 'collectCoverage': true, + 'coverageReporters': [ + 'lcov', + 'text-summary' + ], + testURL: 'http://localhost/' +} diff --git a/front-end/jsconfig.json b/front-end/jsconfig.json new file mode 100644 index 0000000..adc4845 --- /dev/null +++ b/front-end/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@/*": ["src/*"] + } + }, + "exclude": ["node_modules", "dist"] +} diff --git a/front-end/package.json b/front-end/package.json new file mode 100644 index 0000000..8d9e577 --- /dev/null +++ b/front-end/package.json @@ -0,0 +1,153 @@ +{ + "name": "bj-admin", + "version": "4.4.0", + "description": "飞骥管理系统", + "author": "飞骥管理系统", + "scripts": { + "dev": "vue-cli-service serve --host 0.0.0.0", + "test": "vue-cli-service serve --host 0.0.0.0 --mode test", + "qa": "vue-cli-service serve --host 0.0.0.0 --mode qa", + "uat": "vue-cli-service serve --host 0.0.0.0 --mode uat", + "lint": "eslint --ext .js,.vue src", + "build:prod": "vue-cli-service build", + "build:stage": "vue-cli-service build --mode staging", + "preview": "node build/index.js --preview", + "new": "plop", + "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml", + "test:unit": "jest --clearCache && vue-cli-service test:unit", + "test:ci": "npm run lint && npm run test:unit" + }, + "dependencies": { + "@antv/g6": "^3.1.1", + "@antv/x6": "^1.28.1", + "@antv/x6-vue-shape": "^1.2.10", + "@bpmn-io/add-exporter": "^0.2.0", + "@bpmn-io/align-to-origin": "^0.7.0", + "@bpmn-io/properties-panel": "^0.10.0", + "@riophae/vue-treeselect": "^0.4.0", + "@vue/composition-api": "^1.4.1", + "axios": "^0.21.1", + "babel-loader": "^7.1.5", + "bin-code-editor": "^0.9.0", + "bpmn-js": "^8.7.3", + "bpmn-js-properties-panel": "^0.45.0", + "bpmn-js-signavio-compat": "^1.2.3", + "bpmn-moddle": "^7.1.2", + "browserslist": "^4.20.2", + "camunda-bpmn-moddle": "^6.1.0", + "clipboard": "2.0.4", + "codemirror": "^5.62.3", + "core-js": "3.6.5", + "diagram-js-minimap": "^2.0.4", + "diagram-js-origin": "^1.3.2", + "driver.js": "0.9.5", + "dropzone": "5.5.1", + "echarts": "4.2.1", + "element-china-area-data": "^5.0.2", + "element-ui": "2.15.6", + "file-saver": "2.0.1", + "flowchart-vue": "^0.19.2", + "fuse.js": "3.4.4", + "highlight.js": "^11.0.1", + "html2pdf.js": "^0.10.1", + "install": "^0.13.0", + "js-cookie": "2.2.0", + "jsonlint": "1.6.3", + "jsplumb": "^2.15.6", + "jszip": "^3.7.1", + "lodash": "^4.17.21", + "node-sass": "^4.14.1", + "normalize.css": "7.0.0", + "nprogress": "0.2.0", + "path-to-regexp": "2.4.0", + "screenfull": "4.2.0", + "script-loader": "0.7.2", + "sortablejs": "1.8.4", + "sql-formatter": "^4.0.2", + "vant": "^2.12.18", + "vue": "2.6.12", + "vue-axios": "^3.2.4", + "vue-clipboard2": "^0.3.1", + "vue-count-to": "1.0.13", + "vue-drag-resize": "^1.5.4", + "vue-draggable-resizable": "^2.3.0", + "vue-json-editor": "^1.4.3", + "vue-pdf": "^4.3.0", + "vue-router": "3.0.2", + "vue-scroll": "^2.1.13", + "vue-scrollto": "^2.20.0", + "vue-splitpane": "1.0.4", + "vue-super-flow": "^1.3.6", + "vuedraggable": "^2.24.3", + "vuescroll": "^4.17.3", + "vuex": "3.1.0", + "vxe-table": "^3.5.6", + "xe-utils": "^3.5.4" + }, + "devDependencies": { + "@babel/core": "^7.17.2", + "@vue/cli-plugin-babel": "4.4.4", + "@vue/cli-plugin-eslint": "4.4.4", + "@vue/cli-plugin-unit-jest": "4.4.4", + "@vue/cli-service": "4.4.4", + "@vue/test-utils": "1.0.0-beta.29", + "autoprefixer": "9.5.1", + "babel-eslint": "10.1.0", + "babel-jest": "23.6.0", + "babel-plugin-dynamic-import-node": "2.3.3", + "babel-plugin-import": "^1.13.3", + "chalk": "2.4.2", + "chokidar": "2.1.5", + "connect": "3.6.6", + "eslint": "6.7.2", + "eslint-plugin-vue": "6.2.2", + "html-webpack-plugin": "3.2.0", + "husky": "1.3.1", + "lint-staged": "8.1.5", + "mockjs": "1.0.1-beta3", + "plop": "^2.7.4", + "runjs": "4.3.2", + "sass-loader": "8.0.2", + "script-ext-html-webpack-plugin": "2.1.3", + "serve-static": "1.13.2", + "svg-sprite-loader": "4.1.3", + "svgo": "1.2.0", + "vue-template-compiler": "2.6.12" + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ], + "bugs": { + "url": "https://github.com/PanJiaChen/vue-element-admin/issues" + }, + "engines": { + "node": ">=8.9", + "npm": ">= 3.0.0" + }, + "keywords": [ + "vue", + "admin", + "dashboard", + "element-ui", + "boilerplate", + "admin-template", + "management-system" + ], + "license": "MIT", + "lint-staged": { + "src/**/*.{js,vue}": [ + "eslint --fix", + "git add" + ] + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "repository": { + "type": "git", + "url": "git+https://github.com/PanJiaChen/vue-element-admin.git" + } +} diff --git a/front-end/plopfile.js b/front-end/plopfile.js new file mode 100644 index 0000000..57387bf --- /dev/null +++ b/front-end/plopfile.js @@ -0,0 +1,9 @@ +const viewGenerator = require('./plop-templates/view/prompt') +const componentGenerator = require('./plop-templates/component/prompt') +const storeGenerator = require('./plop-templates/store/prompt.js') + +module.exports = function(plop) { + plop.setGenerator('view', viewGenerator) + plop.setGenerator('component', componentGenerator) + plop.setGenerator('store', storeGenerator) +} diff --git a/front-end/postcss.config.js b/front-end/postcss.config.js new file mode 100644 index 0000000..961986e --- /dev/null +++ b/front-end/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {} + } +} diff --git a/front-end/public/favicon.ico b/front-end/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6d8196446d0ae7ae9060a1bd9d36fc6f54fefca7 GIT binary patch literal 2268 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 + + + + + + + + <%= webpackConfig.name %> + + +
+ + + diff --git a/front-end/public/loading.html b/front-end/public/loading.html new file mode 100644 index 0000000..832c902 --- /dev/null +++ b/front-end/public/loading.html @@ -0,0 +1,17 @@ + + + + + + + + + 加载中…… + + +

加载中……

+ + diff --git a/front-end/src/App.vue b/front-end/src/App.vue new file mode 100644 index 0000000..769c7f7 --- /dev/null +++ b/front-end/src/App.vue @@ -0,0 +1,52 @@ + + diff --git a/front-end/src/api/afterApi/index.js b/front-end/src/api/afterApi/index.js new file mode 100644 index 0000000..bd1cd7b --- /dev/null +++ b/front-end/src/api/afterApi/index.js @@ -0,0 +1,15 @@ +/* + * @Author: 订单模块 + * @Date: 2021-10-19 10:27:31 + * @LastEditTime: 2021-11-03 20:08:48 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\orderApi\index.js + */ +import internalRefundApi from './internalRefundApi'; +import thirdRefundApi from './thirdRefundApi'; + +export default { + ...internalRefundApi, + ...thirdRefundApi, +}; diff --git a/front-end/src/api/afterApi/internalRefundApi.js b/front-end/src/api/afterApi/internalRefundApi.js new file mode 100644 index 0000000..52b9a09 --- /dev/null +++ b/front-end/src/api/afterApi/internalRefundApi.js @@ -0,0 +1,138 @@ +/* + * @Author: your name + * @Date: 2021-11-03 17:08:17 + * @LastEditTime: 2022-02-24 13:28:45 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: 内部售后订单 + * @FilePath: \newBj-admin\src\api\orderApi\audit.js + */ +import { generate } from '@/utils/request'; + +const config = { + prefix: '/sord/v1', + items: [ + // 创建退货退款单 + { + key: 'addRefundGoodsOrder', + url: '/after-sale-headers/create-refund-goods', + method: 'POST', + loadingMore: 999, + }, + // 创建仅退款单 + { + key: 'addRefundOnlyOrder', + url: '/after-sale-headers/create-refund-only', + method: 'POST', + loadingMore: 999, + }, + // 退货退款单审核 + { key: 'auditRefundOrder', url: '/after-sale-headers/audit-refund', method: 'PUT' }, + // 退货退款单修改/打标 + { key: 'updateRefundOrder', url: '/after-sale-headers/refund-goods-edit', method: 'PUT' }, + // 退款单详情 + { + key: 'detailRefundOrder', + url: '/after-sale-headers/refund-goods-detail/{orderId}', + method: 'GET', + }, + // 内部售后单详情订单基本信息通过code和Id + { + key: 'detailRefundOrderByIdCode', + url: '/after-sale-headers/order-base-detail-by-id-code', + method: 'POST', + }, + // 退货退款单列表 + { key: 'pageRefundGoodsOrder', url: '/after-sale-headers/refund-goods-page', method: 'POST' }, + // 仅退款单列表 + { key: 'pageRefundOnlyOrder', url: '/after-sale-headers/refund-only-page', method: 'POST' }, + + // 详情 新增加退货退款商品 + { + key: 'addSkuToRefundGoodsOrder', + url: '/after-sale-headers/add-refund-goods', + method: 'POST', + }, + // 详情 新增加仅退款商品 + { key: 'addSkuToRefundOnlyOrder', url: '/after-sale-headers/add-refund-only', method: 'POST' }, + + // 根据innerNo查询可退款/退货商品 + + { + key: 'getRefundPageByInnerNo', + url: '/after-sale-items/refund-page-by-innerNo', + method: 'POST', + }, + + // 查询可退货商品行 itemId + { + key: 'getRefundGoodsItemListByItemId', + url: '/after-sale-item-lines/refund-goods-item-list/', + method: 'GET', + loadingHide: true, + }, + // 查询可退款商品行 itemId + { + key: 'getRefundOnlyItemListByItemId', + url: '/after-sale-item-lines/refund-only-item-list/', + method: 'GET', + loadingHide: true, + }, + // 详情页 查询商品行 itemId + { + key: 'getRefundDetailItemListByItemId', + url: '/after-sale-item-lines/item-line-details', + method: 'POST', + loadingHide: true, + }, + // 详情里的退货物流LIST + { + key: 'getAfterSaleLogistics', + url: '/after-sale-headers/refund-logistics/{orderId}', + method: 'GET', + }, + + // 详情页 删除 商品行 itemId + { + key: 'deleteRefundDetailItemListByItemId', + url: '/after-sale-headers/refund-delete-item', + method: 'DELETE', + }, + // 退货退款单审核 + { + key: 'auditRefundOrder', + url: '/after-sale-headers/audit-refund', + method: 'PUT', + }, + // 批量 退货退款单审核 + { + key: 'batchAuditRefundOrder', + url: '/after-sale-headers/batch-audit-refund', + method: 'PUT', + loadingMore: 999, + }, + + // 退货退款单审核列表 + { + key: 'getAuditRefundOrderPage', + url: '/after-sale-headers/refund-audit-page', + method: 'POST', + }, + // 退货退款单 已全部入库 + { + key: 'confirmRefundOrderWare', + url: '/after-sale-headers/confirm-ware/{orderId}', + method: 'PATCH', + }, + // 退货退款单 修改退货仓库 + + { + key: 'updateRefundOrderWarehouse', + url: '/after-sale-headers/update-warehouse', + method: 'PUT', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/afterApi/thirdRefundApi.js b/front-end/src/api/afterApi/thirdRefundApi.js new file mode 100644 index 0000000..3d469a0 --- /dev/null +++ b/front-end/src/api/afterApi/thirdRefundApi.js @@ -0,0 +1,49 @@ +/* + * @Author: your name + * @Date: 2021-11-03 17:08:17 + * @LastEditTime: 2022-02-24 13:28:45 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: 三方售后订单 + * @FilePath: \newBj-admin\src\api\orderApi\audit.js + */ +import { generate } from '@/utils/request'; + +const config = { + prefix: '/sord/v1', + items: [ + // 创建第三方售后单头 + { + key: 'addThirdRefundOrder', + url: '/third-party-after-sale-headers/create-thirdParty-refund', + method: 'POST', + loadingMore: 0, + }, + + // 第三方售后单头列表 + { + key: 'getThirdRefundOrder', + url: '/third-party-after-sale-headers/order-page', + method: 'POST', + loadingMore: 0, + }, + // 第三方售后单明细-退货/退款 + { + key: 'detailThirdRefundOrder', + url: '/third-party-after-sale-headers/{id}', + method: 'GET', + loadingMore: 0, + }, + + // 第三方售后单明细-退货/退款 + { + key: 'detailThirdRefundOrder', + url: '/third-party-after-sale-headers/order-base-detail-by-id-code', + method: 'POST', + loadingMore: 0, + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/authApi/index.js b/front-end/src/api/authApi/index.js new file mode 100644 index 0000000..866f6ee --- /dev/null +++ b/front-end/src/api/authApi/index.js @@ -0,0 +1,73 @@ +/** + * 示例 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/iam', + items: [ + /** *********** 字段权限 ********************* */ + /** + * 字段权限 - 分页查询接口列表 + * @organizationId : 0 + */ + { + key: 'xxx', + url: '/v1/{organizationId}/apis', + method: 'GET', + }, + /** + * 字段权限 - 接口字段维护列表 + * @organizationId : 0 + */ + { + key: 'xxx', + url: '/v1/{organizationId}/apis/{permissionId}/fields', + method: 'GET', + }, + + /** + * 权限维护 - 权限数据(角色),新建 or 更新 + * @organizationId : 0 + */ + { + key: 'xxx', + url: '/v1/{organizationId}/data-auth-manager/role/data/assign-role', + method: 'POST', + }, + + /** *********** 一个角色对应的 数据权限 ********************* */ + + /** + * 角色数据权限定义 - 数据权限定义列表 + * @organizationId : 0 + */ + { + key: 'getAuthorizationsByRoleId', + url: '/v1/{organizationId}/roles/{roleId}/role-auths/{organizationId}', + method: 'GET', + }, + /** + * 角色数据权限定义 - 批量新增或保存角色数据权限定义明细 + * @organizationId : 0 + */ + { + key: 'addAuthorizationsByRoleId', + url: '/v1/{organizationId}/roles/{roleId}/role-auths', + method: 'POST', + }, + /** + * 角色数据权限定义 - 删除角色数据权限定义 + * @organizationId : 0 + */ + { + key: 'delAuthorizationsByRoleId', + url: '/v1/{organizationId}/roles/{roleId}/role-auths', + method: 'DELETE', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/baseDataApi/afterSaleApi.js b/front-end/src/api/baseDataApi/afterSaleApi.js new file mode 100644 index 0000000..b835202 --- /dev/null +++ b/front-end/src/api/baseDataApi/afterSaleApi.js @@ -0,0 +1,41 @@ +/** + * + * after-sales-reason-controller + * + * +POST /v1/after-sales-reasons/create +创建售后原因 + +DELETE /v1/after-sales-reasons/delete +删除售后原因 + +GET /v1/after-sales-reasons/detail/{id} +售后原因明细 + +GET /v1/after-sales-reasons/list +售后原因列表 + +GET /v1/after-sales-reasons/page +售后原因分页 + +PUT /v1/after-sales-reasons/update +修改售后原因 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/sord/v1/after-sales-reasons', + items: [ + { key: 'getAfterSalesReasonsList', url: '/list', method: 'GET' }, + { key: 'getAfterSalesReasons', url: '/page', method: 'GET' }, + { key: 'addAfterSalesReasons', url: '/create', method: 'POST' }, + { key: 'deleteAfterSalesReasons', url: '/delete', method: 'DELETE' }, + { key: 'detailAfterSalesReasons', url: '/detail/{id}', method: 'GET' }, + { key: 'updateAfterSalesReasons', url: '/update', method: 'PUT' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/baseDataApi/codeRuleApi.js b/front-end/src/api/baseDataApi/codeRuleApi.js new file mode 100644 index 0000000..656a909 --- /dev/null +++ b/front-end/src/api/baseDataApi/codeRuleApi.js @@ -0,0 +1,41 @@ +/** + * + *Code Rule Manager : 编码规则管理 + +DELETE /v1/{organizationId}/code-rule-dist +租户级删除编码规则分配 + +POST /v1/{organizationId}/code-rule-dist +租户级新增和更新编码规则分配 + +GET /v1/{organizationId}/code-rule/one +查询获取编码规则、编码规则分配、编码规则明细 + +GET /v1/{organizationId}/code-rule/rule-code +查询获取编码规则、编码规则分配、编码规则明细 + + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/spfm/v1', + items: [ + { key: 'getCodeRule', url: '/{organizationId}/code-rule', method: 'GET' }, + { key: 'addCodeRule', url: '/{organizationId}/code-rule', method: 'POST' }, + { key: 'deleteCodeRule', url: '/{organizationId}/code-rule', method: 'DELETE' }, + { key: 'detailCodeRule', url: '/{organizationId}/code-rule/{ruleId}', method: 'GET' }, + { + key: 'detailCodeRuleDistId', + url: '/{organizationId}/code-rule-detail/{ruleDistId}', + method: 'GET', + }, + // 租户级新增和更新编码规则明细 + { key: 'addCodeRuleDetail', url: '/{organizationId}/code-rule-detail', method: 'POST' }, + { key: 'deleteCodeRuleDetail', url: '/{organizationId}/code-rule-detail', method: 'DELETE' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/baseDataApi/countryApi.js b/front-end/src/api/baseDataApi/countryApi.js new file mode 100644 index 0000000..0aef79d --- /dev/null +++ b/front-end/src/api/baseDataApi/countryApi.js @@ -0,0 +1,76 @@ +/** + *Country : 国家信息管理 + +PATCH /v1/{organizationId}/countries +批量禁用国家定义 + +GET /v1/{organizationId}/countries/all +获取所有国家 + +POST /v1/{organizationId}/countries/regions +listCountryRegion + +POST /v1/{organizationId}/countries/regions/address +查询国家、地区 + +GET /v1/{organizationId}/country/region +queryCountryRegion + + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/spfm/v1', + items: [ + { key: 'getCountry', url: '/{organizationId}/countries', method: 'GET' }, + { key: 'listCountry', url: '/{organizationId}/countries/all', method: 'GET' }, + { key: 'addCountry', url: '/{organizationId}/country', method: 'POST' }, + { key: 'updateCountry', url: '/{organizationId}/countries/{countryId}', method: 'PUT' }, + // { key: 'deleteCountry', url: '/{organizationId}/countries', method: 'DELETE' }, + { key: 'detailCountry', url: '/v1/{organizationId}/countries/{countryId}', method: 'GET' }, + + /** + * Country Region : 地区信息管理Show/HideList OperationsExpand Operations +GET /v1/{organizationId}/countries/regions +查询国家/地区下的地区列表 + +GET /v1/{organizationId}/countries/regions/{regionId} +查询指定地区 + +PUT /v1/{organizationId}/countries/regions/{regionId} +禁用/启用地区定义,影响下级 + +POST /v1/{organizationId}/countries/{countryId}/region +新增地区定义 + +GET /v1/{organizationId}/countries/{countryId}/regions +查询国家下地区定义,使用树状结构返回 + +POST /v1/{organizationId}/countries/{countryId}/regions +批量新增地区定义 + +GET /v1/{organizationId}/countries/{countryId}/regions/lazy-tree +查询国家下地区定义,使用树状懒加载结构返回 + +GET /v1/{organizationId}/countries/{countryId}/regions/list +分页查询国家下地区定义 + +PUT /v1/{organizationId}/countries/{countryId}/regions/{regionId} +更新地区定义 + */ + { key: 'getCountryRegions', url: '/{organizationId}/countries', method: 'GET' }, + { key: 'addCountryRegions', url: '/{organizationId}/country', method: 'POST' }, + { key: 'updateCountryRegions', url: '/{organizationId}/countries/{countryId}', method: 'PUT' }, + // { key: 'deleteCountry', url: '/{organizationId}/countries', method: 'DELETE' }, + { + key: 'detailCountryRegions', + url: '/v1/{organizationId}/countries/{countryId}', + method: 'GET', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/baseDataApi/index.js b/front-end/src/api/baseDataApi/index.js new file mode 100644 index 0000000..cc8919c --- /dev/null +++ b/front-end/src/api/baseDataApi/index.js @@ -0,0 +1,16 @@ +/* + */ +/** + * 模块接口 + */ + +import codeRuleApi from './codeRuleApi'; +import countryApi from './countryApi'; +import afterSaleApi from './afterSaleApi'; +import lovApi from './lovApi'; +export default { + ...codeRuleApi, + ...countryApi, + ...afterSaleApi, + ...lovApi, +}; diff --git a/front-end/src/api/baseDataApi/lovApi.js b/front-end/src/api/baseDataApi/lovApi.js new file mode 100644 index 0000000..87cd500 --- /dev/null +++ b/front-end/src/api/baseDataApi/lovApi.js @@ -0,0 +1,45 @@ +/** + * Dealer Manage : 经销商管理 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/spfm/v1', + items: [ + /** + * 根据lovCode查询单个值集头 + */ + { + key: 'getLovHeadersByLovCode', + url: '/{organizationId}/lov-headers-code/{lovCode}', + method: 'GET', + }, + + /** + * 根据值集头ID分页查询值集值 + */ + { + key: 'getLovValuesByLovId', + url: '/{organizationId}/lov-headers/{lovId}/values', + method: 'GET', + }, + /** + * 批量删除值集值 + */ + { key: 'deleteLovValues', url: '/{organizationId}/lov-values', method: 'DELETE' }, + + /** + * 插入值集值 + */ + { key: 'addLovValues', url: '/{organizationId}/lov-values', method: 'POST' }, + + /** + * 更新值集值 + */ + { key: 'updateLovValues', url: '/{organizationId}/lov-values', method: 'PUT' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/channelApi/companyApi.js b/front-end/src/api/channelApi/companyApi.js new file mode 100644 index 0000000..cd6ff0a --- /dev/null +++ b/front-end/src/api/channelApi/companyApi.js @@ -0,0 +1,13 @@ +import { generate } from '@/utils/request'; +const config = { + prefix: '/schl', + items: [ + /** 获取默认集团 */ + { key: 'getDefaultCompany', url: '/v1/groups/default', method: 'GET' }, + /** 修改默认集团信息 */ + { key: 'updateCompanyInfo', url: '/v1/groups/update', method: 'POST' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/channelApi/dealerApi.js b/front-end/src/api/channelApi/dealerApi.js new file mode 100644 index 0000000..7ce8b5d --- /dev/null +++ b/front-end/src/api/channelApi/dealerApi.js @@ -0,0 +1,42 @@ +/** + * Dealer Manage : 经销商管理 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/schl/v1/channel/dealer', + items: [ + /** + * 新增经销商 + */ + { key: 'addDealer', url: '/add', method: 'POST' }, + /** + * 删除经销商信息 + */ + { key: 'deleteDealer', url: '/delete', method: 'POST', type: 'query' }, + /** + * 根据Id获取经销商信息信息 + */ + { key: 'getDealerDetails', url: '/details', method: 'GET' }, + /** + * 分页获取信息 + */ + { key: 'getDealerPage', url: '/list', method: 'GET' }, + /** + * 修改经销商信息 + */ + { key: 'updateDealer', url: '/update', method: 'POST' }, + /** + * 禁用 OR 启用 + */ + { key: 'operationDealer', url: '/operation', method: 'POST', type: 'query' }, + /** + * 批量删除数据 + */ + { key: 'batchDeleteDealer', url: '/deletes', method: 'POST' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/channelApi/index.js b/front-end/src/api/channelApi/index.js new file mode 100644 index 0000000..a80cbdc --- /dev/null +++ b/front-end/src/api/channelApi/index.js @@ -0,0 +1,21 @@ +/** + * 渠道模块接口 + */ + +import shopOnlineApi from './shopOnlineApi'; +import shopPhysicalApi from './shopPhysicalApi'; +import dealerApi from './dealerApi'; +import warehouseApi from './warehouseApi'; +import salesOrganizationApi from './salesOrganizationApi'; +import shopManageApi from './shopManageApi'; +import companyApi from './companyApi'; + +export default { + ...shopOnlineApi, + ...shopPhysicalApi, + ...dealerApi, + ...warehouseApi, + ...salesOrganizationApi, + ...shopManageApi, + ...companyApi, +}; diff --git a/front-end/src/api/channelApi/salesOrganizationApi.js b/front-end/src/api/channelApi/salesOrganizationApi.js new file mode 100644 index 0000000..cbb5b42 --- /dev/null +++ b/front-end/src/api/channelApi/salesOrganizationApi.js @@ -0,0 +1,54 @@ +/** + * SalesOrganization Manage : 销售组织管理 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/schl/v1/channel/salesOrganization', + items: [ + /** + * 新增经销商 + */ + { key: 'addSalesOrganization', url: '/add', method: 'POST' }, + /** + * 删除经销商信息 + */ + { key: 'deleteSalesOrganization', url: '/delete', method: 'POST' }, + /** + * 根据Id获取经销商信息信息 + */ + { + key: 'getSalesOrganizationDetails', + url: '/details', + method: 'GET', + }, + /** + * 分页获取信息 + */ + { key: 'getSalesOrganizationPage', url: '/list', method: 'GET' }, + /** + * 修改销售组织 + */ + { key: 'updateSalesOrganization', url: '/update', method: 'POST' }, + /** + * 禁用 OR 启用 + */ + { key: 'operationSalesOrganization', url: '/operation', method: 'POST', type: 'query' }, + /** + * 根据租户Id获取销售组织信息 + */ + { key: 'getSalesOrganizationByTenantId', url: '/getByTenantId', method: 'GET' }, + /** + * 批量删除数据 + */ + { key: 'batchDeleteSalesOrganization', url: '/deletes', method: 'POST' }, + /** + * 公司列表树 + */ + { key: 'getSalesOrganizationTree', url: '/listOfTree', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/channelApi/shopManageApi.js b/front-end/src/api/channelApi/shopManageApi.js new file mode 100644 index 0000000..e0ac749 --- /dev/null +++ b/front-end/src/api/channelApi/shopManageApi.js @@ -0,0 +1,25 @@ +/* + * @Author: your name + * @Date: 2021-08-06 13:46:48 + * @LastEditTime: 2021-10-19 13:46:07 + * @LastEditors: your name + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\channelApi\shopManageApi.js + */ +/** + * Physical Shop Manage : 门店管理 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/schl/v1', + items: [ + /** + * 查询列表 + */ + { key: 'getAllShopPage', url: '/shop/page', method: 'POST' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/channelApi/shopOnlineApi.js b/front-end/src/api/channelApi/shopOnlineApi.js new file mode 100644 index 0000000..2532af8 --- /dev/null +++ b/front-end/src/api/channelApi/shopOnlineApi.js @@ -0,0 +1,48 @@ +/** + * Online Shop Manage : 网店管理 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/schl/v1/online/shop', + items: [ + /** + * 查询列表 + */ + { key: 'getOnlineShopPage', url: '/page', method: 'get' }, + /** + * 网店设置 + */ + { key: 'setOnlineShop', url: '/setting', method: 'POST' }, + + /** + * 查询网店设置 + */ + { key: 'getOnlineShopSetting', url: '/get/setting', method: 'GET' }, + + /** + * 新增与修改 + */ + { key: 'saveOnlineShop', url: '/save', method: 'POST' }, + /** + * 禁用 OR 启用 + */ + { key: 'operationOnlineShop', url: '/operation', method: 'POST', type: 'query' }, + /** + * 查询详情 + */ + { key: 'getOnlineShopDetails', url: '/details', method: 'GET' }, + /** + * 删除数据 + */ + { key: 'deleteOnlineShop', url: '/delete', method: 'POST', type: 'query' }, + /** + * 批量删除数据 + */ + { key: 'batchDeleteOnlineShop', url: '/deletes', method: 'POST' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/channelApi/shopPhysicalApi.js b/front-end/src/api/channelApi/shopPhysicalApi.js new file mode 100644 index 0000000..4af1854 --- /dev/null +++ b/front-end/src/api/channelApi/shopPhysicalApi.js @@ -0,0 +1,41 @@ +/** + * Physical Shop Manage : 门店管理 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/schl/v1/physical/shop', + items: [ + /** + * 查询列表 + */ + { key: 'getPhysicalShopPage', url: '/page', method: 'get' }, + /** + * 网店设置 + */ + { key: 'setPhysicalShop', url: '/setting', method: 'POST' }, + /** + * 新增与修改 + */ + { key: 'addPhysicalShop', url: '/save', method: 'POST' }, + /** + * 禁用 OR 启用 + */ + { key: 'operationPhysicalShop', url: '/operation', method: 'POST', type: 'query' }, + /** + * 查询详情 + */ + { key: 'getPhysicalShopDetails', url: '/details', method: 'GET' }, + /** + * 删除数据 + */ + { key: 'deletePhysicalShop', url: '/delete', method: 'POST', type: 'query' }, + /** + * 批量删除数据 + */ + { key: 'batchDeletePhysicalShop', url: '/deletes', method: 'POST' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/channelApi/warehouseApi.js b/front-end/src/api/channelApi/warehouseApi.js new file mode 100644 index 0000000..03d0c77 --- /dev/null +++ b/front-end/src/api/channelApi/warehouseApi.js @@ -0,0 +1,46 @@ +/* + * @Author: your name + * @Date: 2021-06-29 09:18:37 + * @LastEditTime: 2021-10-12 11:41:39 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\channelApi\warehouseApi.js + */ +/** + * Warehouse Manage : 渠道仓库管理 + */ +import { generate } from '@/utils/request'; +const config = { + // prefix: '/schl/v1/channel/warehouse', + prefix: 'stock/v1/storage/area', + items: [ + /** + * 新增渠道仓库 + */ + { key: 'addWarehouse', url: '', method: 'POST' }, + /** + * 根据Id获取渠道仓库信息 + */ + { key: 'getWarehouseDetails', url: '/{id}', method: 'GET' }, + /** + * 分页获取渠道仓库信息 + */ + { key: 'getWarehousePage', url: '', method: 'GET' }, + /** + * 修改渠道仓库 + */ + { key: 'updateWarehouse', url: '', method: 'PUT' }, + /** + * 禁用 OR 启用 + */ + { key: 'operationWarehouse', url: '/operation', method: 'POST', type: 'query' }, + /** + * 批量删除数据 + */ + { key: 'batchDeleteWarehouse', url: '/batchDelete', method: 'PATCH' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/commonApi/areaApi.js b/front-end/src/api/commonApi/areaApi.js new file mode 100644 index 0000000..6643f8b --- /dev/null +++ b/front-end/src/api/commonApi/areaApi.js @@ -0,0 +1,64 @@ +/* + * @Author: your name + * @Date: 2021-06-29 09:18:37 + * @LastEditTime: 2021-09-10 17:52:10 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\commonApi\areaApi.js + */ +/** + * CnareaAdministrativeDivision Manage : 中国行政区划分管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/spfm/v1', + items: [ + /** + * 获取省市 + */ + { key: 'getDistrictTree', url: '/cnareaAdministrativeDivision/getDistrictTree', method: 'GET' }, + /** + * 获得省级行政区信息 + */ + { key: 'getProvince', url: '/cnareaAdministrativeDivision/getProvince', method: 'GET' }, + /** + * 获得市级及以下行政区信息 + */ + { key: 'getCity', url: '/cnareaAdministrativeDivision/getCity', method: 'GET' }, + /** + * 根据Id获取中国行政地区表信息 + */ + { + key: 'getAreaDetails', + url: '/cnareaAdministrativeDivision/details', + method: 'GET', + }, + /** + * 修改中国行政地区表 + */ + { key: 'updateArea', url: '/cnareaAdministrativeDivision/update', method: 'POST' }, + /** + * 删除中国行政地区表 + */ + { + key: 'deleteArea', + url: '/cnareaAdministrativeDivision/delete', + method: 'POST', + type: 'query', + }, + /** + * 新增中国行政地区表 + */ + { key: 'addArea', url: '/cnareaAdministrativeDivision/add', method: 'POST' }, + // 语言列表 + { key: 'getLanguages', url: '/languages/list', method: 'GET' }, + /** 数据源 */ + { key: 'getDatasource', url: '/{organizationId}/datasources', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/commonApi/index.js b/front-end/src/api/commonApi/index.js new file mode 100644 index 0000000..cb6b157 --- /dev/null +++ b/front-end/src/api/commonApi/index.js @@ -0,0 +1,15 @@ +/** + * 渠道模块接口 + */ + +import areaApi from './areaApi'; +import optionApi from './optionApi'; +import settingApi from './settingApi'; +import loginApi from './loginApi'; + +export default { + ...areaApi, + ...optionApi, + ...settingApi, + ...loginApi, +}; diff --git a/front-end/src/api/commonApi/loginApi.js b/front-end/src/api/commonApi/loginApi.js new file mode 100644 index 0000000..312b7d3 --- /dev/null +++ b/front-end/src/api/commonApi/loginApi.js @@ -0,0 +1,20 @@ +/** + * CnareaAdministrativeDivision Manage : 中国行政区划分管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/oauth', + items: [ + /** + * + * @access_token // http://api.skyer.org/oauth/logout?access_token=bf4411f3-95db-45f4-87c1-c179ab39e7ed + */ + { key: 'logout', url: '/logout', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/commonApi/optionApi.js b/front-end/src/api/commonApi/optionApi.js new file mode 100644 index 0000000..d46e159 --- /dev/null +++ b/front-end/src/api/commonApi/optionApi.js @@ -0,0 +1,100 @@ +/** + * CnareaAdministrativeDivision Manage : 中国行政区划分管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '', + items: [ + /** + * 获取值集值 + * @lovCode + * SCHL.CHANNEL_TYPE 渠道类型 + * SCHL.SHOP_TYPE 店铺类型 + * SCHL.INVOICE_TYPE 发票种类 + */ + { key: 'getLovsValue', url: '/spfm/v1/lovs/value', method: 'GET', loadingHide: true }, + /** + * 商品分类管理-获取全部分类 + */ + { + key: 'getAllCategory', + url: '/sgoo/v1/categorys/tree', + method: 'POST', + loadingHide: true, + }, + /** + * 商品分页 + */ + { key: 'getPageGoods', url: '/sgoo/v1/goods/manager/page', method: 'post' }, + /** + * 品牌分页 + */ + { key: 'getPageBrand', url: '/sgoo/v1/goods/brand/page', method: 'post', loadingHide: true }, + /** + * 仓库 + */ + { + key: 'getListWarehouses', + url: '/stock/v1/warehouses/list-warehouse', + method: 'POST', + loadingHide: true, + }, + { + key: 'getListStorage', + url: '/stock/v1/storage/area', + method: 'GET', + loadingHide: true, + }, + /** + * 素材分页获取 + */ + { + key: 'getPageMaterial', + url: '/sgoo/v1/goods/material/list', + method: 'GET', + loadingHide: true, + }, + /** + * 查询全部属性 + */ + { key: 'getListAttribute', url: '/sgoo/v1/goods/attribute/list', method: 'POST' }, + + /** + * 执行器分页 + */ + { key: 'getExecutorList', url: '/ssdr/v1/executors', method: 'GET' }, + + /** + * 登录用户 - 查询可访问的租户列表 + */ + { + key: 'getTenants', + url: '/iam/skyer/v1/users/self-tenants', + method: 'GET', + }, + /** + * 并发可执行列表 + */ + { key: 'getExecutableList', url: '/ssdr/v1/executables', method: 'GET' }, + /** + * 并发可执行列表 + */ + { key: 'getInstallServices', url: '/sgoo/v1/install-services', method: 'GET' }, + + /** + * 标签列表 ?systemLabelFlag=true + */ + { key: 'getTags', url: '/tags/v1/labels/labelList', method: 'GET', loadingHide: true }, + + /** + * 售后原因列表 type 0 仅退款;1 退货退款 + */ + { key: 'getAfterSalesReasons', url: '/sord/v1/after-sales-reasons/list', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/commonApi/settingApi.js b/front-end/src/api/commonApi/settingApi.js new file mode 100644 index 0000000..e8da2e2 --- /dev/null +++ b/front-end/src/api/commonApi/settingApi.js @@ -0,0 +1,23 @@ +/** + * CnareaAdministrativeDivision Manage : 中国行政区划分管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/iam', + items: [ + /** + * 保存列表动态标题 + */ + { key: 'saveTabulation', url: '/v1/tabulation/save', method: 'POST', loadingHide: true }, + /** + * 获取用户动态标题 + */ + { key: 'getTabulation', url: '/v1/tabulation/list', method: 'GET', loadingHide: true }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/financeApi/checkingApi.js b/front-end/src/api/financeApi/checkingApi.js new file mode 100644 index 0000000..58b6986 --- /dev/null +++ b/front-end/src/api/financeApi/checkingApi.js @@ -0,0 +1,22 @@ +/** + * Account Checking Manage : 对账管理 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sfin/v1', + items: [ + // 对账列表 + { key: 'getAccountCheckingList', url: '/account/checking/list', method: 'POST' }, + // 确认对账 + { key: 'notarizeAccountChecking', url: '/account/checking/notarize', method: 'POST' }, + + // 已对账列表 + { key: 'getAccountCheckingFinish', url: '/account/checking/finish', method: 'POST' }, + // 已对账详情 + { key: 'detailAccountCheckingFinish', url: '/account/checking/detail/{id}', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/financeApi/index.js b/front-end/src/api/financeApi/index.js new file mode 100644 index 0000000..b269961 --- /dev/null +++ b/front-end/src/api/financeApi/index.js @@ -0,0 +1,7 @@ +import parseStrategyApi from './parseStrategyApi'; +import checkingApi from './checkingApi'; + +export default { + ...parseStrategyApi, + ...checkingApi, +}; diff --git a/front-end/src/api/financeApi/parseStrategyApi.js b/front-end/src/api/financeApi/parseStrategyApi.js new file mode 100644 index 0000000..067ae99 --- /dev/null +++ b/front-end/src/api/financeApi/parseStrategyApi.js @@ -0,0 +1,64 @@ +/** + * Brand Manage : 渠道仓库管理 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sfin/v1', + items: [ + // 平台账单(原始)-天猫 + { key: 'getOriginalBillTmallsPage', url: '/original/bill/tmalls/page', method: 'POST' }, + // 获取查询条件栏数据-天猫 + { + key: 'getOriginalBillTmallsQueryData', + url: '/original/bill/tmalls/query/data', + method: 'GET', + }, + + // 自动导入到正式表,一次执行三个流程(同步) + { + key: 'importOriginalBillTmalls', + url: '/{organizationId}/import/data/sync/auto-import?templateCode=SFIN.BILL_TM', + method: 'POST', + type: 'form', + }, + // 平台账单(原始)-京东 + { key: 'getOriginalBillJdsPage', url: '/original/bill/jds/page', method: 'POST' }, + // 获取查询条件栏数据-京东 + { key: 'getOriginalBillJdsQueryData', url: '/original/bill/jds/query/data', method: 'GET' }, + // 自动导入到正式表,一次执行三个流程(同步) + { + key: 'importOriginalBillJds', + url: '/{organizationId}/import/data/sync/auto-import?templateCode=SFIN.BILL_JD', + method: 'POST', + type: 'form', + }, + + // 平台账单管理 + { key: 'getBillsPage', url: '/bills/page', method: 'POST' }, + // 获取查询条件栏数据-平台账单管理 + { key: 'getBillsQueryData', url: '/bills/query/data', method: 'GET' }, + + // 新增、修改解析规则 + { key: 'saveParsingStrategys', url: '/parsing-strategys/save', method: 'PUT' }, + // 分页 + { key: 'getParsingStrategysPage', url: '/parsing-strategys/page', method: 'POST' }, + // 详情 + { key: 'getParsingStrategysDetail', url: '/parsing-strategys/detail/{id}', method: 'GET' }, + // 启用/禁用 + { + key: 'updateParsingStrategysStatus', + url: '/parsing-strategys/batch/enable', + method: 'PATCH', + }, + // 根据渠道类型编码,获取字段集 + { + key: 'getBasicSettingFieldList', + url: '/basic/setting/field/list', + method: 'GET', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/attributeApi.js b/front-end/src/api/goodsApi/attributeApi.js new file mode 100644 index 0000000..dad6d86 --- /dev/null +++ b/front-end/src/api/goodsApi/attributeApi.js @@ -0,0 +1,69 @@ +/** + * Attribute Manage : 渠道仓库管理 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1/goods/attribute', + items: [ + /** + * 新增 + */ + { key: 'addAttribute', url: '/attribute', method: 'POST' }, + // /** + // * 删除 + // */ + // { key: 'deleteAttribute', url: '/delete', method: 'DELETE', type: 'query' }, + /** + * 分页 + */ + { key: 'getPageAttribute', url: '/page', method: 'POST' }, + /** + * 修改 + */ + { key: 'updateAttribute', url: '/attribute', method: 'PUT' }, + /** + * 根据Id获取 + */ + { key: 'getDetailAttribute', url: '/detail/', method: 'GET' }, + /** + * 批量删除 + */ + { key: 'batchDeleteAttribute', url: '/batch-delete-attribute', method: 'PATCH' }, + /** + * 更新状态 + */ + { key: 'patchAttributeStatus', url: '/status', method: 'PATCH' }, + + /** ************************* */ + /** + * 根据分类或者商品查询所有属性及对应属性值 + * @goodsId + */ + { + key: 'getAttributeValueByGoodsId', + url: '/all-attribute-value-by-main/', + method: 'GET', + }, + /** + * 对属性添加对应属性值 + */ + { key: 'addAttributeValue', url: '/attribute-value', method: 'POST' }, + /** + * 查询属性对应的属性值 + * @attributeId + */ + { key: 'getAttributeValueByAttributeId', url: '/attribute-value/', method: 'GET' }, + /** + * 对属性更新对应属性值 + */ + { key: 'updateAttributeValue', url: '/attribute-value', method: 'POST' }, + /** + * 对属性更新对应属性值(单个) + */ + { key: 'updateSingleAttributeValue', url: '/single-attribute-value', method: 'PUT' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/attributeRelationApi.js b/front-end/src/api/goodsApi/attributeRelationApi.js new file mode 100644 index 0000000..c158790 --- /dev/null +++ b/front-end/src/api/goodsApi/attributeRelationApi.js @@ -0,0 +1,34 @@ +/** + * Attribute Manage : 渠道仓库管理 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1/goods/attribute/relation', + items: [ + /** + * 新增 + */ + { key: 'addAttributeRelation', url: '/attribute-relation', method: 'POST' }, + + /** + * 分页 + */ + { key: 'getPageAttributeRelation', url: '/page-attribute-relation', method: 'POST' }, + /** + * 修改 + */ + { key: 'updateAttributeRelation', url: '/attribute-relation', method: 'PUT' }, + /** + * 批量删除 + */ + { key: 'batchDeleteAttributeRelation', url: '/attribute-relation', method: 'PATCH' }, + /** + * 通过mainId查询当前属性 + */ + { key: 'getListAttributeRelation', url: '/list-attribute-relation/', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/auditApi.js b/front-end/src/api/goodsApi/auditApi.js new file mode 100644 index 0000000..4fc9173 --- /dev/null +++ b/front-end/src/api/goodsApi/auditApi.js @@ -0,0 +1,33 @@ +/** + * : 商品审核 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1', + items: [ + /** + * 获取商品审核 + */ + { key: 'getSkuAudit', url: '/sku-audit-settings/default', method: 'GET' }, + /** + * 修改审核 + */ + { key: 'updateSkuAudit', url: '/sku-audit-settings/update', method: 'PUT' }, + /** + * 获取sku审核列表 + */ + { key: 'getSkuAuditList', url: '/goods/sku/page', method: 'POST' }, + /** + * 获取sku审核详情 + */ + { key: 'getSkuAuditDetail', url: '/sku/audit/detail', method: 'POST' }, + /** + * sku审核 + */ + { key: 'skuAudit', url: '/sku/audit', method: 'POST', loadingMore: 100 }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/brandApi.js b/front-end/src/api/goodsApi/brandApi.js new file mode 100644 index 0000000..ab4b7aa --- /dev/null +++ b/front-end/src/api/goodsApi/brandApi.js @@ -0,0 +1,33 @@ +/** + * Brand Manage : 渠道仓库管理 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1/goods/brand', + items: [ + /** + * 新增 + */ + { key: 'addBrand', url: '/brand', method: 'POST' }, + /** + * 分页 + */ + { key: 'getPageBrand', url: '/page', method: 'post' }, + /** + * 修改 + */ + { key: 'updateBrand', url: '/brand', method: 'PUT' }, + /** + * 状态 + */ + { key: 'operationBrand', url: '/status', method: 'PATCH' }, + /** + * 批量删除 + */ + { key: 'batchDeleteBrand', url: '/batch-delete-brand', method: 'PATCH' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/categoryApi.js b/front-end/src/api/goodsApi/categoryApi.js new file mode 100644 index 0000000..7a8b913 --- /dev/null +++ b/front-end/src/api/goodsApi/categoryApi.js @@ -0,0 +1,59 @@ +/** + * + * Category Manage : 商品分类管理 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1', + items: [ + /** + * 新增 + */ + { key: 'addCategory', url: '/categorys/save', method: 'POST' }, + /** + * 分页 + */ + { key: 'getPageCategory', url: '/categorys/page', method: 'POST' }, + /** + * 修改 + */ + { key: 'updateCategory', url: '/categorys/save', method: 'POST' }, + /** + * 状态 + */ + { key: 'operationCategory', url: '/categorys/update/status', method: 'POST' }, + /** + * 批量删除 + */ + { key: 'batchDeleteCategory', url: '/categorys/batch/delete', method: 'DELETE' }, + /** ************* */ + /** + * 统计分类 + */ + { key: 'getTotalCategory', url: '/total-category', method: 'POST' }, + /** + * 根据父级获取子级id + */ + { key: 'getSonCategory', url: '/list-by-front', method: 'GET' }, + /** + * 刷新分类redis + */ + { key: 'refreshCategory', url: '/category-refresh', method: 'GET' }, + /** + * 获取全部分类 + */ + { key: 'getAllCategory', url: '/categorys/tree', method: 'POST' }, + /** + * 复制上级 + */ + { + key: 'getPrentAttribute', + url: '/category/attributes/list/category/attribute', + method: 'POST', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/index.js b/front-end/src/api/goodsApi/index.js new file mode 100644 index 0000000..d80302d --- /dev/null +++ b/front-end/src/api/goodsApi/index.js @@ -0,0 +1,33 @@ +/* jshint esversion: 9 */ /** + * 商品模块接口 + */ + +import materialApi from './materialApi'; +import attributeApi from './attributeApi'; +import attributeRelationApi from './attributeRelationApi'; +import brandApi from './brandApi'; +import categoryApi from './categoryApi'; +import managerApi from './managerApi'; +import priceApi from './priceApi'; +import skuApi from './skuApi'; +import skuGroupApi from './skuGroupApi'; +import spuSonApi from './spuSonApi'; +import installServiceApi from './installServiceApi'; +import otherInfoApi from './otherInfoApi'; +import auditApi from './auditApi'; + +export default { + ...materialApi, + ...attributeApi, + ...attributeRelationApi, + ...brandApi, + ...categoryApi, + ...managerApi, + ...priceApi, + ...skuApi, + ...skuGroupApi, + ...spuSonApi, + ...installServiceApi, + ...otherInfoApi, + ...auditApi, +}; diff --git a/front-end/src/api/goodsApi/installServiceApi.js b/front-end/src/api/goodsApi/installServiceApi.js new file mode 100644 index 0000000..ef95076 --- /dev/null +++ b/front-end/src/api/goodsApi/installServiceApi.js @@ -0,0 +1,23 @@ +/** + * goods-install-service : 安装服务管理 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1/spu-install-services', + items: [ + { key: 'addSpuInstallServices', url: '', method: 'POST' }, + + { key: 'deleteSpuInstallServices', url: '', method: 'DELETE' }, + + { key: 'DetailSpuInstallServices', url: '/', method: 'GET' }, + + { key: 'getSpuInstallServices', url: '', method: 'GET' }, + + { key: 'updateSpuInstallServices', url: '', method: 'PUT' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/managerApi.js b/front-end/src/api/goodsApi/managerApi.js new file mode 100644 index 0000000..48974d7 --- /dev/null +++ b/front-end/src/api/goodsApi/managerApi.js @@ -0,0 +1,39 @@ +/** + * + * goods Manage : 商品管理 + + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1/goods/manager', + items: [ + /** + * 新增 + */ + { key: 'add', url: '/goods', method: 'POST' }, + /** + * 分页 + */ + { key: 'getPage', url: '/page', method: 'post' }, + /** + * 修改 + */ + { key: 'update', url: '/goods', method: 'PUT' }, + /** + * 状态 + */ + { key: 'operation', url: '/goods', method: 'PATCH' }, + /** + * 详情 + */ + { key: 'detail', url: '/detail/', method: 'Get' }, + /** + * 批量删除 + */ + { key: 'batchDelete', url: '/batch-delete-goods', method: 'PATCH' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/materialApi.js b/front-end/src/api/goodsApi/materialApi.js new file mode 100644 index 0000000..f196b24 --- /dev/null +++ b/front-end/src/api/goodsApi/materialApi.js @@ -0,0 +1,38 @@ +/** + * Material Manage : 管理 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1/goods/material', + items: [ + /** + * 新增 + */ + { key: 'addMaterial', url: '/add', method: 'POST' }, + /** + * 删除 + */ + { key: 'deleteMaterial', url: '/delete', method: 'DELETE', type: 'query' }, + + /** + * 分页获取 + */ + { key: 'getPageMaterial', url: '/list', method: 'GET' }, + /** + * 修改 + */ + { key: 'updateMaterial', url: '/edit', method: 'PUT' }, + /** + * 根据Id获取 + */ + { key: 'getDetailMaterial', url: '/', method: 'GET' }, + /** + * 批量删除 + */ + { key: 'batchDeleteMaterial', url: '/batch-delete', method: 'PATCH' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/otherInfoApi.js b/front-end/src/api/goodsApi/otherInfoApi.js new file mode 100644 index 0000000..3e45c5d --- /dev/null +++ b/front-end/src/api/goodsApi/otherInfoApi.js @@ -0,0 +1,39 @@ +/** + * goods-spu-son : 子母商品管理 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1/other/info', + items: [ + /** + * 新增 + */ + { key: 'addOtherInfo', url: '/save', method: 'POST' }, + /** + * 删除 + */ + { key: 'deleteOtherInfo', url: '/delete', method: 'POST' }, + + /** + * 分页获取 + */ + { key: 'getOtherInfo', url: '/page', method: 'POST' }, + /** + * 修改 + */ + { key: 'updateOtherInfo', url: '/save', method: 'POST' }, + /** + * 修改 + */ + { key: 'detailsOtherInfo', url: '/details', method: 'GET' }, + + /** + * 禁用 OR 启用 + */ + { key: 'operationOtherInfo', url: '/operation', method: 'POST' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/priceApi.js b/front-end/src/api/goodsApi/priceApi.js new file mode 100644 index 0000000..9121f3c --- /dev/null +++ b/front-end/src/api/goodsApi/priceApi.js @@ -0,0 +1,75 @@ +/** + * Price: 价格管理 + * + * 值集头创建 POST /v1/price/item/setting/add-head + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1', + items: [ + /** * SKU价格 */ + + // 查看商品价格列表 + { + key: 'getSkuPrices', + url: '/goods/prices/{skuCode}', + method: 'GET', + }, + { + key: 'addSkuPrices', + url: '/goods/prices', + method: 'POST', + }, + { + key: 'updateSkuPrices', + url: '/goods/prices', + method: 'PUT', + }, + { + key: 'deleteSkuPrices', + url: '/goods/prices', + method: 'DELETE', + }, + + /** * 价格项 */ + + /** + * 新增 + */ + { + key: 'addPriceItem', + url: '/price/item/setting/addValue', + method: 'POST', + }, + /** + * 分页 + */ + { key: 'getPagePriceItem', url: '/price/item/setting/page', method: 'GET' }, + /** + * 修改 + */ + { + key: 'updatePriceItem', + url: '/price/item/setting/value-update', + method: 'PUT', + }, + /** + * 租户价格项值集查询(所有数据列表) + */ + { key: 'getListPriceItem', url: '/price/item/setting', method: 'GET' }, + /** + * 删除 + */ + { + key: 'deletePriceItem', + url: '/price/item/setting/value-delete/', + method: 'DELETE', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/skuApi.js b/front-end/src/api/goodsApi/skuApi.js new file mode 100644 index 0000000..386e7b1 --- /dev/null +++ b/front-end/src/api/goodsApi/skuApi.js @@ -0,0 +1,96 @@ +/* + * @Author: your name + * @Date: 2021-07-29 14:15:07 + * @LastEditTime: 2021-08-02 14:49:28 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\goodsApi\skuApi.js + */ +/** + * goods-sku : 商品SKU + * + * 值集头创建 POST /v1/price/item/setting/add-head + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1/goods/sku', + items: [ + /** + * 新增 + */ + { + key: 'addSku', + url: '', + method: 'POST', + loadingMore: 999, + }, + /** + * 分页 + */ + { key: 'getSku', url: '/page', method: 'POST' }, + /** + * 修改 + */ + { + key: 'updateSku', + url: '/update', + method: 'PUT', + }, + /** + * 根据属性创建商品sku列表 + */ + { + key: 'createSku', + url: '/createSkuList', + method: 'POST', + }, + + /** + * SKU详情 + */ + { key: 'detailSku', url: '/{id}', method: 'GET' }, + /** + * 根据商品id获取已经生成的sku + */ + { key: 'getOldSkuListBySpuId', url: '/goods/', method: 'GET' }, + /** + * 批量 提交 审核 + */ + { key: 'skuBatchSubmitAudit', url: '/batchAudit', method: 'PUT' }, + /** + * 删除 + */ + { + key: 'deleteSku', + url: '', + method: 'DELETE', + }, + + // 修改商品sku显示状态 + { + key: 'updateSkuStatus', + url: '/updateShowFlag', + method: 'PUT', + }, + + // 编辑商品价格 + { + key: 'updateSkuPrice', + url: '/sku-price', + method: 'PUT', + }, + + // 批量获取套餐明细列表 Array[ skuCode] + { + key: 'getMealsGoodsList', + url: '/meals-goods-list', + method: 'POST', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/skuGroupApi.js b/front-end/src/api/goodsApi/skuGroupApi.js new file mode 100644 index 0000000..6d73529 --- /dev/null +++ b/front-end/src/api/goodsApi/skuGroupApi.js @@ -0,0 +1,35 @@ +/** + * sku-group + + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1/sku-groups', + items: [ + /** + * 新增 + */ + { key: 'addSkuGroup', url: '/sku-group', method: 'POST' }, + /** + * 删除 + */ + { key: 'deleteSkuGroup', url: '/group', method: 'DELETE' }, + + /** + * 分页获取 + */ + { key: 'getSkuGroup', url: '/page', method: 'POST' }, + /** + * 修改 + */ + { key: 'updateSkuGroup', url: '/sku-group', method: 'POST' }, + /** + * 根据Id获取 + */ + { key: 'detailSkuGroup', url: '/detail/{groupId}', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/goodsApi/spuSonApi.js b/front-end/src/api/goodsApi/spuSonApi.js new file mode 100644 index 0000000..47d2639 --- /dev/null +++ b/front-end/src/api/goodsApi/spuSonApi.js @@ -0,0 +1,34 @@ +/** + * goods-spu-son : 子母商品管理 + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1/spu-son-mums', + items: [ + /** + * 新增 + */ + { key: 'addSpuSonNum', url: '', method: 'POST' }, + /** + * 删除 + */ + { key: 'deleteSpuSonNum', url: '', method: 'DELETE' }, + + /** + * 分页获取 + */ + { key: 'getSpuSonNum', url: '', method: 'GET' }, + /** + * 修改 + */ + { key: 'updateSpuSonNum', url: '', method: 'PUT' }, + /** + * 根据Id获取 + */ + { key: 'detailSpuSonNum', url: '/', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/index.js b/front-end/src/api/index.js new file mode 100644 index 0000000..75c6ee1 --- /dev/null +++ b/front-end/src/api/index.js @@ -0,0 +1,59 @@ +/* + * @Author: your name + * @Date: 2021-06-23 10:00:10 + * @LastEditTime: 2022-04-28 10:23:35 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\index.js + */ +import commonApi from './commonApi/index'; +import userApi from './userApi/index'; +import userGroupApi from './userGroupApi/index'; +import testApi from './testApi'; +import tenantApi from './tenantApi/index'; +import roleApi from './roleApi/index'; +import authApi from './authApi/index'; +import channelApi from './channelApi/index'; +import goodsApi from './goodsApi/index'; +import settingApi from './settingApi/index'; +import messageApi from './messageApi/index'; +import stockApi from './stockApi/index'; +import baseDataApi from './baseDataApi/index'; +import worksheetApi from './worksheetApi/index'; +import logisticApi from './logisticApi/index'; +import menuApi from './menuApi/index'; +import simpApi from './simpApi/index'; +import orderApi from './orderApi'; +import strategyApi from './strategyApi'; +import tagsApi from './tagsApi'; +import promotionApi from './promotionApi'; +import afterApi from './afterApi'; +import financeApi from './financeApi'; // 财务 +import reportApi from './reportApi'; // 报表 + +export { + commonApi, + userApi, + userGroupApi, + testApi, + tenantApi, + roleApi, + authApi, + channelApi, + goodsApi, + settingApi, + messageApi, + stockApi, + baseDataApi, + worksheetApi, + logisticApi, + menuApi, + simpApi, + orderApi, + strategyApi, + tagsApi, + promotionApi, + afterApi, + financeApi, + reportApi, +}; diff --git a/front-end/src/api/logisticApi/abnormalApi.js b/front-end/src/api/logisticApi/abnormalApi.js new file mode 100644 index 0000000..b2c928f --- /dev/null +++ b/front-end/src/api/logisticApi/abnormalApi.js @@ -0,0 +1,21 @@ +/* + * @Author: your name + * @Date: 2021-09-08 11:16:34 + * @LastEditTime: 2021-09-14 19:44:02 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\logisticApi\abnormalApi.js + */ +/** 物流异常 */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/lgit/v1/logistics/abnormal', + items: [ + { key: 'getLogisticAbnormal', url: '', method: 'get' }, + { key: 'getLogisticRefreshConfig', url: '/getRefreshConfig', method: 'get' }, + { key: 'updateRefreshConfig', url: '/updateRefreshConfig', method: 'PUT' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/logisticApi/businessApi.js b/front-end/src/api/logisticApi/businessApi.js new file mode 100644 index 0000000..0e34ae0 --- /dev/null +++ b/front-end/src/api/logisticApi/businessApi.js @@ -0,0 +1,20 @@ +/* jshint esversion: 9 */ +/** + * Logistics Businesss : 物流业务管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/lgit/v1/logistics-businesss', + items: [ + { key: 'addLogisticsBusiness', url: '', method: 'POST' }, + { key: 'deleteLogisticsBusiness', url: '', method: 'DELETE' }, + { key: 'updateLogisticsBusiness', url: '', method: 'PUT' }, + { key: 'getLogisticsBusiness', url: '', method: 'GET' }, + { key: 'detailLogisticsBusiness', url: '/', method: 'GET' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/logisticApi/claimApi.js b/front-end/src/api/logisticApi/claimApi.js new file mode 100644 index 0000000..01b2ca9 --- /dev/null +++ b/front-end/src/api/logisticApi/claimApi.js @@ -0,0 +1,25 @@ +/* + * @Author: your name + * @Date: 2021-09-06 14:05:56 + * @LastEditTime: 2021-09-14 22:05:46 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\logisticApi\claim.js + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/lgit/v1/breakage/claims', + items: [ + /** 破损理赔单列表 */ + { key: 'getLogisticClaim', url: '/page', method: 'get' }, + /** 破损理赔单明细 */ + { key: 'getLogisticClaimDetail', url: '/detail/{serialNum}', method: 'get' }, + /** 修改理赔单状态 */ + { key: 'updataLogisticClaimStatus', url: '/orderStatus', method: 'PATCH' }, + /** 修改理赔单 */ + { key: 'updataLogisticClaim', url: '/update', method: 'POST' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/logisticApi/companyApi.js b/front-end/src/api/logisticApi/companyApi.js new file mode 100644 index 0000000..e6c4d97 --- /dev/null +++ b/front-end/src/api/logisticApi/companyApi.js @@ -0,0 +1,20 @@ +/* jshint esversion: 9 */ +/** + * Logistics Companys : 物流商管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/lgit/v1/logistics-companys', + items: [ + { key: 'addLogisticsCompany', url: '', method: 'POST' }, + { key: 'deleteLogisticsCompany', url: '', method: 'DELETE' }, + { key: 'updateLogisticsCompany', url: '', method: 'PUT' }, + { key: 'getLogisticsCompany', url: '', method: 'GET' }, + { key: 'detailLogisticsCompany', url: '/', method: 'GET' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/logisticApi/freightApi.js b/front-end/src/api/logisticApi/freightApi.js new file mode 100644 index 0000000..b033409 --- /dev/null +++ b/front-end/src/api/logisticApi/freightApi.js @@ -0,0 +1,48 @@ +/* + * @Author: your name + * @Date: 2021-09-08 17:20:28 + * @LastEditTime: 2022-02-18 15:26:59 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\logisticApi\freightApi.js + */ +/* jshint esversion: 9 */ +/** + * Postage Template : 运费模板 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/lgit/v1/postage-templates', + items: [ + { key: 'addLogisticsFreightTemplate', url: '', method: 'POST' }, + { key: 'deleteLogisticsFreightTemplate', url: '', method: 'DELETE' }, + { key: 'updateLogisticsFreightTemplate', url: '', method: 'PUT' }, + { key: 'getLogisticsFreightTemplate', url: '', method: 'GET' }, + { key: 'detailLogisticsFreightTemplate', url: '/', method: 'GET' }, + { key: 'operationLogisticsFreightTemplate', url: '/enabled', method: 'PUT' }, + + /** 模板适用物流业务、仓库 */ + { + key: 'getLogisticsFreightTemplateBusinessStorehouse', + url: '/business-storehouse', + method: 'GET', + }, + /** 查询模板已经绑定的仓库 */ + { + key: 'getBusinessStorehouse', + url: '/business-storehouse', + method: 'GET', + }, + /** 根据运费模板关联关系查物流商和物业业务 */ + { + key: 'getQueryLogistics', + url: '/query/logistics', + method: 'POST', + }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/logisticApi/index.js b/front-end/src/api/logisticApi/index.js new file mode 100644 index 0000000..4ccb9f6 --- /dev/null +++ b/front-end/src/api/logisticApi/index.js @@ -0,0 +1,32 @@ +/* + * @Author: your name + * @Date: 2021-08-06 13:55:19 + * @LastEditTime: 2021-09-08 17:10:17 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\stockApi\index.js + */ +/* jshint esversion: 9 */ +/** + * 模块接口 + */ + +import companyApi from './companyApi'; +import businessApi from './businessApi'; +import mappingApi from './mappingApi'; +import relationApi from './relationApi'; +import orderApi from './orderApi'; +import claimApi from './claimApi'; +import freightApi from './freightApi'; +import abnormalApi from './abnormalApi'; + +export default { + ...companyApi, + ...businessApi, + ...mappingApi, + ...relationApi, + ...orderApi, + ...claimApi, + ...freightApi, + ...abnormalApi, +}; diff --git a/front-end/src/api/logisticApi/mappingApi.js b/front-end/src/api/logisticApi/mappingApi.js new file mode 100644 index 0000000..aaaa084 --- /dev/null +++ b/front-end/src/api/logisticApi/mappingApi.js @@ -0,0 +1,20 @@ +/* jshint esversion: 9 */ +/** + * logistics-mapping : 物流商管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/lgit/v1/logistics/mappings', + items: [ + { key: 'addLogisticsMapping', url: '', method: 'POST' }, + { key: 'deleteLogisticsMapping', url: '/deletes', method: 'PATCH' }, + { key: 'updateLogisticsMapping', url: '', method: 'PUT' }, + { key: 'getLogisticsMapping', url: '/page', method: 'GET' }, + { key: 'detailLogisticsMapping', url: '/', method: 'GET' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/logisticApi/orderApi.js b/front-end/src/api/logisticApi/orderApi.js new file mode 100644 index 0000000..f86dec5 --- /dev/null +++ b/front-end/src/api/logisticApi/orderApi.js @@ -0,0 +1,21 @@ +/* jshint esversion: 9 */ +/** + * Logistics Orders : 物流商管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/lgit/v1/logistics-orders', + items: [ + { key: 'addLogisticsOrder', url: '', method: 'POST' }, + { key: 'deleteLogisticsOrder', url: '', method: 'DELETE' }, + { key: 'updateLogisticsOrder', url: '', method: 'PUT' }, + { key: 'getLogisticsOrderSales', url: '/sales', method: 'GET' }, + { key: 'getLogisticsOrderAfter', url: '/customer-service', method: 'GET' }, + { key: 'detailLogisticsOrder', url: '/', method: 'GET' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/logisticApi/relationApi.js b/front-end/src/api/logisticApi/relationApi.js new file mode 100644 index 0000000..7832e02 --- /dev/null +++ b/front-end/src/api/logisticApi/relationApi.js @@ -0,0 +1,21 @@ +/* jshint esversion: 9 */ +/** + * logistics-mapping : 物流商管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/lgit/v1/logistics/relations', + items: [ + { key: 'addLogisticsRelation', url: '', method: 'POST' }, + { key: 'deleteLogisticsRelation', url: '/deletes', method: 'PATCH' }, + { key: 'updateLogisticsRelation', url: '/update', method: 'POST' }, + { key: 'getLogisticsRelation', url: '', method: 'GET' }, + { key: 'detailLogisticsRelation', url: '/', method: 'GET' }, + { key: 'getLogisticsWarehouse', url: '/warehouse', method: 'GET' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/menuApi/index.js b/front-end/src/api/menuApi/index.js new file mode 100644 index 0000000..dd5cdb9 --- /dev/null +++ b/front-end/src/api/menuApi/index.js @@ -0,0 +1,34 @@ +/** + * Tenant(Site Level) : 租户管理(平台级) + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/iam', + items: [ + // GET /skyer/v1/menus/tree菜单展示-获取导航栏树形菜单 + { key: 'treeMenu', url: '/skyer/v1/menus/tree', method: 'get' }, + + // 租户层-菜单管理-获取树形菜单 + { key: 'getMenuTree', url: '/skyer/v1/{organizationId}/menus/manage-tree', method: 'get' }, + + // 租户层-创建菜单 + + { key: 'addMenu', url: '/skyer/v1/{organizationId}/menus/create', method: 'POST' }, + + // 租户层-禁用菜单及其子菜单 + { key: 'disableMenu', url: '/skyer/v1/{organizationId}/menus/disable', method: 'PUT' }, + + // 租户层-启用菜单及其子菜单 + { key: 'enableMenu', url: '/skyer/v1/{organizationId}/menus/enable', method: 'PUT' }, + + { key: 'detailMenu', url: '/v1/tenants-manager/', method: 'GET' }, + + // 租户层-更新菜单 + { key: 'updateMenu', url: '/skyer/v1/{organizationId}/menus/update', method: 'POST' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/messageApi/emailApi.js b/front-end/src/api/messageApi/emailApi.js new file mode 100644 index 0000000..bc35cb7 --- /dev/null +++ b/front-end/src/api/messageApi/emailApi.js @@ -0,0 +1,36 @@ +/** + * File : 文件 + * + + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/smsg/v1', + items: [ + /** + * 获取列表 + */ + + { key: 'getEmail', url: '/{organizationId}/email/servers', method: 'GET' }, + { key: 'addEmail', url: '/{organizationId}/email/servers', method: 'POST' }, + { key: 'updateEmail', url: '/{organizationId}/email/servers', method: 'PUT' }, + { key: 'deleteEmail', url: '/{organizationId}/email/servers', method: 'DELETE' }, + // 查询邮箱服务明细 + { key: 'detailEmail', url: '/{organizationId}/email/servers/{serverId}', method: 'Get' }, + { + key: 'detailEmailConfig', + url: '/{organizationId}/email/servers/{serverId}/properties', + method: 'Get', + }, + // Email Filter : 邮箱账户黑白名单 + { key: 'getEmailFilters', url: '/{organizationId}/email-filters', method: 'GET' }, + { key: 'addEmailFilters', url: '/{organizationId}/email-filters', method: 'POST' }, + { key: 'updateEmailFilters', url: '/{organizationId}/email-filters', method: 'POST' }, + { key: 'deleteEmailFilters', url: '/{organizationId}/email-filters', method: 'DELETE' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/messageApi/index.js b/front-end/src/api/messageApi/index.js new file mode 100644 index 0000000..ebd2323 --- /dev/null +++ b/front-end/src/api/messageApi/index.js @@ -0,0 +1,25 @@ +/* + * @Author: your name + * @Date: 2021-07-13 14:49:11 + * @LastEditTime: 2021-07-22 17:08:03 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\settingApi\index.js + */ +/** + * 模块接口 + */ + +import noticeApi from './noticeApi'; +import emailApi from './emailApi'; +import smsApi from './smsApi'; +import templateApi from './templateApi'; +import sendApi from './sendApi'; + +export default { + ...noticeApi, + ...emailApi, + ...smsApi, + ...templateApi, + ...sendApi, +}; diff --git a/front-end/src/api/messageApi/noticeApi.js b/front-end/src/api/messageApi/noticeApi.js new file mode 100644 index 0000000..4b7a33f --- /dev/null +++ b/front-end/src/api/messageApi/noticeApi.js @@ -0,0 +1,29 @@ +/** + * File : 文件 + * + + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/smsg/v1', + items: [ + /** + * 获取列表 + */ + + { key: 'getNotices', url: '/{organizationId}/notices', method: 'GET' }, + { key: 'deleteNotices', url: '/{organizationId}/notices', method: 'DELETE' }, + { key: 'addNotices', url: '/{organizationId}/notices', method: 'POST' }, + { key: 'updateNotices', url: '/{organizationId}/notices', method: 'PUT' }, + { key: 'detailNotices', url: '/{organizationId}/notices/{noticeId}', method: 'GET' }, + // 发布 + { key: 'publishNotices', url: '/{organizationId}/notices/{noticeId}/publish', method: 'POST' }, + // 撤消 + { key: 'revokeNotices', url: '/{organizationId}/notices/{noticeId}/revoke', method: 'POST' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/messageApi/sendApi.js b/front-end/src/api/messageApi/sendApi.js new file mode 100644 index 0000000..c2ef64b --- /dev/null +++ b/front-end/src/api/messageApi/sendApi.js @@ -0,0 +1,61 @@ +/** + * Template Maintain : 邮箱账户与模板关系维护 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/smsg/v1', + items: [ + /** + * 获取列表 + */ + + { key: 'getSend', url: '/{organizationId}/template-servers', method: 'GET' }, + { key: 'addSend', url: '/{organizationId}/template-servers', method: 'POST' }, + { key: 'updateSend', url: '/{organizationId}/template-servers/{tempServerId}', method: 'PUT' }, + { + key: 'deleteSend', + url: '/{organizationId}/template-servers/{tempServerId}', + method: 'DELETE', + }, + // 查询邮箱服务明细 + { key: 'detailSend', url: '/{organizationId}/template-servers/detail', method: 'Get' }, + // 消息模板账户关联:查询模板行 + { + key: 'detailLineSend', + url: '/{organizationId}/template-servers/detail/line', + method: 'Get', + }, + // 消息模板账户关联:查询消息模板关联的服务 + { + key: 'getTempServerList', + url: '/{organizationId}/template-servers/line/{tempServerId}', + method: 'Get', + }, + // 删除消息模板账户行 + { + key: 'deleteLineSend', + url: '/{organizationId}/template-servers/line/{tempServerLineId}', + method: 'DELETE', + }, + // 复制消息发送配置 + { + key: 'addSendFilters', + url: '/{organizationId}/template-servers/{tempServerId}/copy', + method: 'GET', + }, + + /** * Relation Send Message : 关联发送消息 */ + // 关联发送消息,邮件/短信/站内信 + { + key: 'sendMessageRelevance', + url: '/{organizationId}/message/relevance', + method: 'POST', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/messageApi/smsApi.js b/front-end/src/api/messageApi/smsApi.js new file mode 100644 index 0000000..2ed9c70 --- /dev/null +++ b/front-end/src/api/messageApi/smsApi.js @@ -0,0 +1,34 @@ +/** + * SMS Server : 短信配置 + * + + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/smsg/v1', + items: [ + /** + * 发送一条短信消息,指定模板和参数 + */ + { key: 'sendSMS', url: '/{organizationId}/messages/call/template', method: 'POST' }, + // 列表 + { key: 'getSMS', url: '/{organizationId}/sms/servers', method: 'GET' }, + // 创建短信服务 + { key: 'addSMS', url: '/{organizationId}/sms/servers', method: 'POST' }, + // 删除短信配置 + { key: 'deleteSMS', url: '/{organizationId}/sms/servers', method: 'DELETE' }, + /** + * 修改短信服务 + */ + { key: 'updateSMS', url: '/{organizationId}/sms/servers', method: 'PUT' }, + /** + * 查询短信服务配置 + */ + { key: 'detailSMS', url: '/{organizationId}/sms/servers/{serverId}', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/messageApi/templateApi.js b/front-end/src/api/messageApi/templateApi.js new file mode 100644 index 0000000..0631286 --- /dev/null +++ b/front-end/src/api/messageApi/templateApi.js @@ -0,0 +1,80 @@ +/** + * File : 文件 + * + + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/smsg/v1', + items: [ + { key: 'getTemplates', url: '/{organizationId}/message/templates', method: 'GET' }, + { key: 'deleteTemplate', url: '/{organizationId}/message/templates', method: 'DELETE' }, + { key: 'addTemplate', url: '/{organizationId}/message/templates', method: 'POST' }, + { key: 'updateTemplate', url: '/{organizationId}/message/templates', method: 'PUT' }, + { + key: 'detailTemplate', + url: '/{organizationId}/message/templates/{templateId}', + method: 'GET', + }, + + /** * */ + + // 查询消息模板参数 + { + key: 'argsTemplate', + url: '/{organizationId}/message/templates/template-args', + method: 'GET', + }, + + // 根据编码查询消息模板明细 + { + key: 'codeTemplate', + url: '/{organizationId}/message/templates/template-code', + method: 'GET', + }, + + // 查询消息模板语言 + { + key: 'langTemplate', + url: '/{organizationId}/message/templates/template-lang', + method: 'GET', + }, + + // 消息模板复制 + { + key: 'copyTemplate', + url: '/{organizationId}/message/templates/{templateId}/copy', + method: 'GET', + }, + + /** * Template Arg 消息模板参数管理*/ + { + key: 'getTemplateArgs', + url: '/{organizationId}/template-args/{templateId}', + method: 'GET', + }, + + { + key: 'deleteTemplateArgs', + url: '/{organizationId}/template-args', + method: 'DELETE', + }, + { + key: 'updateTemplateArgs', + url: '/{organizationId}/template-args', + method: 'PUT', + }, + // 初始化消息模板参数列表 + { + key: 'initTemplateArgs', + url: '/{organizationId}/template-args/init', + type: 'query', + method: 'POST', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/orderApi/auditApi.js b/front-end/src/api/orderApi/auditApi.js new file mode 100644 index 0000000..b963371 --- /dev/null +++ b/front-end/src/api/orderApi/auditApi.js @@ -0,0 +1,46 @@ +/* + * @Author: your name + * @Date: 2021-11-03 17:08:17 + * @LastEditTime: 2022-02-24 13:28:45 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\orderApi\audit.js + */ +import { generate } from '@/utils/request'; + +const config = { + prefix: '/sord/v1/', + items: [ + { key: 'getWaitAuditOrders', url: '/order-header/wait-audit-orders', method: 'GET' }, + { + key: 'getWaitAuditOrdersTabs', + url: '/order-flow-config/get-order-flow-confiy-by-tenantId/{tenantId}', + method: 'GET', + }, + // { key: 'AuditWaitAuditOrders', url: '/order-header/audit-order', method: 'PUT' }, + /** 订单审核列表 */ + { key: 'getOrderAuditPage', url: '/order/order-audit-page', method: 'POST' }, + /** 订单审核 */ + { key: 'orderAuditdeal', url: '/audit/deal', method: 'POST', loadingMore: 999 }, + + // 获取订单Item列表(某订单的SKU汇总) + { + key: 'getInternalSkuListByAuditId', + url: '/audit/order-item-page', + method: 'POST', + }, + // 获取订单平摊行列表(某订单的商品行列表) + { key: 'getInternalSkuLineListByAuditId', url: '/audit/item-line-page', method: 'POST' }, + // 展开行:根据itemId获取平摊商品行列表(某订单的某SKU的商品行列表) + { + key: 'getInternalSkuLineListByAuditIdSku', + url: '/audit/item-line-details/{itemId}/{auditId}', + method: 'GET', + loadingHide: true, + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/orderApi/index.js b/front-end/src/api/orderApi/index.js new file mode 100644 index 0000000..e77b37f --- /dev/null +++ b/front-end/src/api/orderApi/index.js @@ -0,0 +1,27 @@ +/* + * @Author: 订单模块 + * @Date: 2021-10-19 10:27:31 + * @LastEditTime: 2022-04-21 15:36:00 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\orderApi\index.js + */ +import internalApi from './internalApi'; +import stockoutApi from './stockoutApi'; +import auditApi from './auditApi'; +import processApi from './processApi'; +import sourcingApi from './sourcingApi'; +import preemptApi from './preemptApi'; +import itemPriceApi from './itemPriceApi'; +import thirdApi from './thirdApi'; + +export default { + ...internalApi, + ...stockoutApi, + ...processApi, + ...auditApi, + ...sourcingApi, + ...preemptApi, + ...itemPriceApi, + ...thirdApi, +}; diff --git a/front-end/src/api/orderApi/internalApi.js b/front-end/src/api/orderApi/internalApi.js new file mode 100644 index 0000000..19fae0f --- /dev/null +++ b/front-end/src/api/orderApi/internalApi.js @@ -0,0 +1,92 @@ +/* + * @Author: your name + * @Date: 2021-10-19 10:27:23 + * @LastEditTime: 2022-04-25 15:36:26 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\orderApi\internal.js + */ +import { generate } from '@/utils/request'; + +const config = { + prefix: '/sord/v1', + items: [ + // 创建手工单 + { key: 'addInternalOrderByHand', url: '/order/hand-order', method: 'POST', loadingMore: 999 }, + // 复制手工单 + { + key: 'addInternalOrderByCopy', + url: '/order/copy-order?innerOrderNo={innerOrderNo}', + method: 'GET', + }, // innerOrderNo + // 内部订单列表 + { key: 'getInternalPage', url: '/order/order-page', method: 'POST' }, + // 订单详情订单基本信息 + { key: 'getInternalDetail', url: '/order/order-base-detail/{orderId}', method: 'GET' }, + // 订单详情订单基本信息{"orderCode": "string","orderId": 0} + { + key: 'getInternalDetailByIdCode', + url: '/order/order-base-detail-by-id-code', + method: 'POST', + }, + // 获取订单Item列表(某订单的SKU汇总) + { + key: 'getInternalSkuListByOrder', + url: '/order/order-item-page', + method: 'POST', + }, + // 获取订单平摊行列表(某订单的商品行列表) + { key: 'getInternalSkuLineListByOrder', url: '/order/item-line-page', method: 'POST' }, + // 展开行:根据itemId获取平摊商品行列表(某订单的某SKU的商品行列表) + + { + key: 'getInternalSkuLineListBySku', + url: '/order/item-line-details/{itemId}', + method: 'GET', + loadingHide: true, + }, + /** 订单审核(通过,拒绝) */ + { key: 'auditOrder', url: '/order-header/audit-order', method: 'PUT' }, + /** 订单商品行审核(通过, 拒绝) */ + { key: 'auditGoodsLineAuditOrder', url: '/order-header/goods-line-audit-order', method: 'PUT' }, + /** 订单挂起/解挂 */ + { key: 'upOrderHandUpOrder', url: '/order-header/order-hand-up', method: 'PUT' }, + /** 订单商品行挂起/解挂 */ + { key: 'upGoodsLineHandUpOrder', url: '/order-header/goods-line-hand-up', method: 'PUT' }, + + /** 订单基础信息的修改 */ + { key: 'updateOrderBase', url: '/order/order-base', method: 'PUT' }, + + /** 订单取消 普通订单 */ + { key: 'cancelInternalOrder', url: '/order/cancel-order', method: 'PATCH' }, + /** 订单取消 O2O */ + { key: 'cancelInternalO2oOrder', url: '/order/cancel-o2o-order', method: 'PATCH' }, + /** 订单级挂起 */ + { key: 'suspendOrderByOrderId', url: '/order/suspend-order', method: 'POST' }, + /** 订单级解挂 */ + { key: 'unsuspendOrderByOrderId', url: '/order/unsuspend-order', method: 'POST' }, + /** 商品行级挂起/解挂 */ + { key: 'suspendOrderByItemLine', url: '/order/itemLine-suspend-order', method: 'POST' }, + /** 商品行级预占/解占 */ + { key: 'preemptionOrderByItemLine', url: '/order/re-preemption', method: 'POST' }, + + /** 订单级-确认收货 普通订单 */ + { key: 'confirmReceiptByOrderId', url: '/order/confirm-receipt/', method: 'PATCH' }, + + /** 订单级-确认收货 o2o */ + { key: 'o2oConfirmReceiptByOrderId', url: '/order/o2o-confirm-receipt', method: 'POST' }, + + /** 商品行级-确认收货 */ + { key: 'confirmReceiptByItemLine', url: '/order/item-confirm-receipt', method: 'POST' }, + + // 内部订单缺货管理列表 + { key: 'getInternalStockoutPage', url: '/order/stockout-page', method: 'POST' }, + + /** 缺货统计列表 */ + { key: 'getOrderStatsStockout', url: '/order/stats/stockout', method: 'POST' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/orderApi/itemPriceApi.js b/front-end/src/api/orderApi/itemPriceApi.js new file mode 100644 index 0000000..9efa95a --- /dev/null +++ b/front-end/src/api/orderApi/itemPriceApi.js @@ -0,0 +1,10 @@ +import { generate } from '@/utils/request'; + +const config = { + prefix: '/sord/v1', + items: [{ key: 'getPriceType', url: '/item-prices/price-type', method: 'GET' }], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/orderApi/preemptApi.js b/front-end/src/api/orderApi/preemptApi.js new file mode 100644 index 0000000..c8389bc --- /dev/null +++ b/front-end/src/api/orderApi/preemptApi.js @@ -0,0 +1,60 @@ +/* + * @Author: your name + * @Date: 2021-10-19 10:27:23 + * @LastEditTime: 2021-11-12 17:30:54 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\orderApi\internal.js + */ +import { generate } from '@/utils/request'; + +const config = { + prefix: '/sord/v1', + items: [ + /** 预占管理 */ + // 列表 + { key: 'getPreemptionOrders', url: '/preemp-notice/preemp-page', method: 'POST' }, + // 详情-基本信息 + { + key: 'getPreemptionOrderDetail', + url: '/preemp-notice/preemp-notice-details/', + method: 'GET', + }, + // 详情-SKU汇总 + { + key: 'getPreemptionOrderSkuListByOrder', + url: '/preemp-notice/items-page', + method: 'POST', + }, + // 详情-商品行预占统计 + { + key: 'getPreemptionOrderSkuCountByOrder', + url: '/preemp-notice/item-lines-count', + method: 'POST', + loadingHide: true, + }, + // 详情-商品行列表 + { + key: 'getPreemptionOrderSkuLineListByOrder', + url: '/preemp-notice/item-lines-page', + method: 'POST', + }, + // 详情-展开行:根据itemId获取平摊商品行列表(某订单的某SKU的商品行列表) + { + key: 'getPreemptionOrderSkuLineListBySku', + url: '/preemp-notice/item-lines/{itemId}', + method: 'GET', + loadingHide: true, + }, + // 重新预占 + { + key: 'rePreemptOrderByNoticeId', + url: '/preemp-notice/re-preemption?noticeId={noticeId}', // noticeId + method: 'POST', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/orderApi/processApi.js b/front-end/src/api/orderApi/processApi.js new file mode 100644 index 0000000..70d3781 --- /dev/null +++ b/front-end/src/api/orderApi/processApi.js @@ -0,0 +1,18 @@ +import { generate } from '@/utils/request'; + +const config = { + prefix: '/sord/v1/process-defines', + items: [ + { key: 'addOrderProcessDefines', url: '', method: 'POST' }, + { key: 'deleteOrderProcessDefines', url: '', method: 'DELETE' }, + { key: 'updateOrderProcessDefines', url: '', method: 'PUT' }, + { key: 'getOrderProcessDefines', url: '', method: 'GET' }, + { key: 'detailOrderProcessDefines', url: '/', method: 'GET' }, + // 流程部署 + { key: 'deploymentOrderProcessDefines', url: '/deploy-process/', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/orderApi/sourcingApi.js b/front-end/src/api/orderApi/sourcingApi.js new file mode 100644 index 0000000..ae291e8 --- /dev/null +++ b/front-end/src/api/orderApi/sourcingApi.js @@ -0,0 +1,120 @@ +/* + * @Author: your name + * @Date: 2021-10-19 10:27:23 + * @LastEditTime: 2022-04-14 10:53:09 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\orderApi\internal.js + */ +import { generate } from '@/utils/request'; + +const config = { + prefix: '/sourcing/v1', + items: [ + /** 寻源列表 */ + { key: 'getOrderSourcingPage', url: '/sourcing/page', method: 'POST' }, + /** 寻源详情 */ + { key: 'getOrderSourcingDetail', url: '/sourcing/detail', method: 'GET' }, + + /** 寻源详情 按商品行汇总 sourcingId */ + { key: 'getOrderSourcingSkuListByOrder', url: '/sourcing/goods/page/spu', method: 'GET' }, + + /** 寻源详情 按照商品行分页查询列表 sourcingId */ + { key: 'getOrderSourcingSkuLineListByOrder', url: '/sourcing/goods/page', method: 'GET' }, + + /** 寻源详情 商品行汇总展开列表 skuCode */ + { + key: 'getOrderSourcingSkuLineListBySku', + url: '/sourcing/goods/listBySkuCode', + method: 'GET', + loadingHide: true, + }, + /** 创建寻源包裹 */ + { + key: 'addSourcingPackages', + url: '/sourcing/packages', + method: 'POST', + }, + /** 重新寻源 */ + { + key: 'reAutoSource', + url: '/sourcing/re-auto-source/{sourceId}', + method: 'GET', + }, + { + key: 'reAutoSourceBatch', + url: '/sourcing/re-auto-source', + method: 'PATCH', + }, + + /** **** 配置 ******** */ + // 寻源策略-寻源规则 列表 + { + key: 'getSouringStrategyConfigs', + url: '/souring-strategy-configs', + method: 'GET', + loadingHide: true, + }, + // 寻源策略-寻源规则 修改 + { + key: 'updateSouringStrategyConfigs', + url: '/souring-strategy-configs', + method: 'PUT', + loadingHide: true, + }, + // 寻源策略-寻源规则 批量修改 + { + key: 'updateSouringStrategyConfigsBatch', + url: '/souring-strategy-configs/batch-update', + method: 'PATCH', + loadingHide: true, + }, + + // 寻源策略-包裹规则 列表 + { + key: 'getSouringStrategyPackage', + url: '/package-strategy', + method: 'GET', + }, + // 寻源策略-包裹规则 批量删除 + { + key: 'deleteSouringStrategyPackageBatch', + url: '/package-strategy', + method: 'DELETE', + }, + // 寻源策略-包裹规则 批量创建 + { + key: 'addSouringStrategyPackageBatch', + url: '/package-strategy', + method: 'POST', + }, + // 寻源策略-包裹规则 批量修改 + { + key: 'updateSouringStrategyPackageBatch', + url: '/package-strategy/batch-update-split', + method: 'PATCH', + }, + // 寻源策略-包裹规则 排除条件配置列表 + { + key: 'getSouringStrategyPackageExcludes', + url: '/souring-exclude-strategy', + method: 'GET', + }, + // 寻源策略-包裹规则 排除条件配置列表 + { + key: 'updateSouringStrategyPackageExcludes', + url: '/souring-exclude-strategy', + method: 'PUT', + }, + // 寻源策略-包裹规则 排除条件配置列表 + { + key: 'addSouringStrategyPackageExcludes', + url: '/souring-exclude-strategy', + method: 'POST', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/orderApi/stockoutApi.js b/front-end/src/api/orderApi/stockoutApi.js new file mode 100644 index 0000000..45d0c4f --- /dev/null +++ b/front-end/src/api/orderApi/stockoutApi.js @@ -0,0 +1,27 @@ +/* + * @Author: your name + * @Date: 2021-10-28 10:59:27 + * @LastEditTime: 2022-04-25 16:57:39 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\orderApi\stockoutApi.js + */ +import { generate } from '@/utils/request'; + +const config = { + prefix: '/stock/v1', + items: [ + /** 缺货管理列表 */ + { key: 'getStockoutManageList', url: '/stockout/manage/page', method: 'POST' }, + /** 缺货订单列表 */ + { key: 'getStockoutOrderList', url: '/stockout/order/page', method: 'POST' }, + /** 缺货店铺列表 */ + { key: 'getStockoutShopList', url: '/stockout/shop/page', method: 'POST' }, + /** 批量保存 */ + { key: 'saveStockoutList', url: '/stockout/batch/setting', method: 'POST' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/orderApi/thirdApi.js b/front-end/src/api/orderApi/thirdApi.js new file mode 100644 index 0000000..c000bb9 --- /dev/null +++ b/front-end/src/api/orderApi/thirdApi.js @@ -0,0 +1,25 @@ +/* + * @Author: your name + * @Date: 2021-10-19 10:27:23 + * @LastEditTime: 2022-04-24 09:56:32 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\orderApi\internal.js + */ +import { generate } from '@/utils/request'; + +const config = { + prefix: '/sord/v1', + items: [ + // 创建第三方订单头 + { key: 'addThirdOrderByHand', url: '/third-order/create', method: 'POST' }, + // 获取第三方订单列表 + { key: 'getThirdOrderPage', url: '/third-order/page', method: 'POST' }, + // 获取第三方订单详情 + { key: 'getThirdOrderDetail', url: '/third-order/detail', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/promotionApi/index.js b/front-end/src/api/promotionApi/index.js new file mode 100644 index 0000000..1252983 --- /dev/null +++ b/front-end/src/api/promotionApi/index.js @@ -0,0 +1,6 @@ +// 赠品活动 +import promoActivityApi from './promoActivityApi'; + +export default { + ...promoActivityApi, +}; diff --git a/front-end/src/api/promotionApi/promoActivityApi.js b/front-end/src/api/promotionApi/promoActivityApi.js new file mode 100644 index 0000000..9ec0aa1 --- /dev/null +++ b/front-end/src/api/promotionApi/promoActivityApi.js @@ -0,0 +1,53 @@ +/** + * File : 文件 + * + + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/spro/v1', + items: [ + // 赠品活动列表 + { key: 'getPromoActivityPage', url: '/activity/page', method: 'POST' }, + // 赠品活动详情 + { key: 'getPromoActivityDetail', url: '/activity/detail', method: 'GET' }, + // 新建赠品活动 + { key: 'addPromoActivity', url: '/activity/create', method: 'POST' }, + // 修改赠品活动 + { key: 'updatePromoActivity', url: '/activity/update', method: 'PUT' }, + // 修改赠品活动状态 + { key: 'updatePromoActivityStatus', url: '/activity/updateStatus', method: 'PUT' }, + // 参与活动商品sku + { + key: 'getPromoActivitySkuCodeMap', + url: '/activity/sku/skuCodeMap', + method: 'POST', + loadingHide: true, + }, + + /** + * 随品规则 + */ + // 随品规则 新增 + { key: 'addPromotionGiftRules', url: '/gift/rules/create', method: 'POST' }, + // 随品规则 详情 + { key: 'detailPromotionGiftRules', url: '/gift/rules/detail/', method: 'GET' }, + // 随品规则 列表 + { key: 'pagePromotionGiftRules', url: '/gift/rules/page', method: 'POST' }, + // 随品规则 删除 + { key: 'removePromotionGiftRules', url: '/gift/rules/remove/', method: 'DELETE' }, + // 随品规则 更新 + { key: 'updatePromotionGiftRules', url: '/gift/rules/update', method: 'PUT' }, + // 已有随品规则的skuCodeList + { + key: 'getPromotionGiftRulesSkuCodeMap', + url: '/gift/rules/skuCodeList', + method: 'POST', + loadingHide: true, + }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/reportApi/channelApi.js b/front-end/src/api/reportApi/channelApi.js new file mode 100644 index 0000000..c5584b2 --- /dev/null +++ b/front-end/src/api/reportApi/channelApi.js @@ -0,0 +1,11 @@ +import { generate } from '@/utils/request'; +const config = { + prefix: '/schl/v1', + items: [ + // 店铺销售表 + { key: 'getChannelorderReport', url: '/shop/channel-order-report', method: 'POST' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/reportApi/index.js b/front-end/src/api/reportApi/index.js new file mode 100644 index 0000000..52dc103 --- /dev/null +++ b/front-end/src/api/reportApi/index.js @@ -0,0 +1,7 @@ +import orderApi from './orderApi'; +import channelApi from './channelApi'; + +export default { + ...orderApi, + ...channelApi, +}; diff --git a/front-end/src/api/reportApi/orderApi.js b/front-end/src/api/reportApi/orderApi.js new file mode 100644 index 0000000..629dae0 --- /dev/null +++ b/front-end/src/api/reportApi/orderApi.js @@ -0,0 +1,17 @@ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sord/v1', + items: [ + // 订单销售统计表 + { key: 'getOrderSaleReport', url: '/order-report/order-sale-report', method: 'POST' }, + // 订单销售分析表(订单每日统计表) + { key: 'getOrderDailyReport', url: '/order-report/order-daily-report', method: 'POST' }, + // 渠道销售统计表 + { key: 'getChannelSaleReport', url: '/order-report/channel-sale-report', method: 'POST' }, + // 订单商品统计表 + { key: 'getOrderItemReport', url: '/order-report/order-item-report', method: 'POST' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/roleApi/index.js b/front-end/src/api/roleApi/index.js new file mode 100644 index 0000000..6c79494 --- /dev/null +++ b/front-end/src/api/roleApi/index.js @@ -0,0 +1,118 @@ +/** + * 示例 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/iam', + items: [ + /** + * 角色管理-分页查询 + * @organizationId : 0 + */ + { key: 'getRoleList', url: '/skyer/v1/roles/self/manageable-roles', method: 'get' }, + /** + * 角色管理-创建角色 + * @organizationId : 0 + */ + { key: 'createRole', url: '/skyer/v1/{organizationId}/roles', method: 'POST' }, + /** + * 角色管理-编辑角色 + * @organizationId : 0 + */ + { key: 'updateRole', url: '/skyer/v1/{organizationId}/roles', method: 'PUT' }, + /** + * 角色管理-禁用角色 + * @organizationId : 0 + */ + { key: 'disableRole', url: '/skyer/v1/{organizationId}/roles/disable', method: 'PUT' }, + /** + * 角色管理-启用角色 + * @organizationId : 0 + */ + { key: 'enableRole', url: '/skyer/v1/{organizationId}/roles/enable', method: 'PUT' }, + + /** *********** 一个角色对应的用户列表 ********************* */ + /** + * 角色管理-查询角色已分配的用户 + * @organizationId : 0 + */ + { + key: 'getUserListByRoleId', + url: '/skyer/v1/{organizationId}/member-roles/role-users/{roleId}', + method: 'GET', + }, + /** *********** 一个角色对应的权限分配 ********************* */ + /** + * 权限分配 - 查询角色可分配的权限集树 + * @organizationId : 0 + */ + { + key: 'getPermissionTreeByRoleId', + url: '/skyer/v1/{organizationId}/roles/{roleId}/permission-set-tree', + method: 'GET', + }, + /** + * 权限分配 - 分配角色权限集 + * @organizationId : 0 + */ + { + key: 'assignPermissionTreeByRoleId', + url: '/skyer/v1/{organizationId}/roles/{roleId}/permission-sets/assign', + method: 'PUT', + }, + /** + * 权限分配 - 回收角色权限集 + * @organizationId : 0 + */ + { + key: 'recyclePermissionTreeByRoleId', + url: '/skyer/v1/{organizationId}/roles/{roleId}/permission-sets/recycle', + method: 'PUT', + }, + /** *********** 一个角色对应的 数据权限 ********************* */ + /** + * 角色数据权限定义 - 数据权限定义列表 + * @organizationId : 0 + */ + { + key: 'getAuthorizationsByRoleId', + url: '/v1/{organizationId}/roles/{roleId}/role-auths/{organizationId}', + method: 'GET', + }, + /** + * 角色数据权限定义 - 批量新增或保存角色数据权限定义明细 + * @organizationId : 0 + */ + { + key: 'addAuthorizationsByRoleId', + url: '/v1/{organizationId}/roles/{roleId}/role-auths', + method: 'POST', + }, + /** + * 角色数据权限定义 - 删除角色数据权限定义 + * @organizationId : 0 + */ + { + key: 'delAuthorizationsByRoleId', + url: '/v1/{organizationId}/roles/{roleId}/role-auths', + method: 'DELETE', + }, + // 获取角色菜单权限树 + { + key: 'getAllmenu', + url: '/v1/sys/menu/manage/role/menu', + method: 'GET', + }, + // 批量更新角色菜单权限数据 + { + key: 'saveRoleMenu', + url: '/v1/sys/menu/manage/role/menu/batch/save', + method: 'POST', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/settingApi/fileApi.js b/front-end/src/api/settingApi/fileApi.js new file mode 100644 index 0000000..fe033fe --- /dev/null +++ b/front-end/src/api/settingApi/fileApi.js @@ -0,0 +1,121 @@ +/** + * File : 文件 + * + + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/sfle', + items: [ + /** + * 获取文件列表汇总 + */ + + { key: 'getFileList', url: '/v1/files/summary', method: 'GET' }, + /** + * 根据key下载文件 + */ + { + key: 'downloadFileByKey', + url: '/v1/files/download-by-key', + method: 'GET', + rType: 2, + }, + /** + * 根据key获取文件授权url + */ + { + key: 'getFileUrlByKey', + url: '/v1/files/file-url', + method: 'GET', + }, + /** + * 获取文件授权ur + */ + { + key: 'getFileUrlByUrl', + url: '/v1/files/signedUrl', + method: 'GET', + errorHide: true, + loadingHide: true, + }, + + /** + * 根据文件key预览文件 + */ + { + key: 'viewFileByKey', + url: '/v1/{organizationId}/file-preview/by-key', + method: 'GET', + rType: 2, + }, + /** + * 基于Multipart上传文件 + */ + { + key: 'uploadFiles', + url: '/v1/{organizationId}/files/multipart', + method: 'POST', + cType: 2, + }, + + /** + * 文件存储配置信息 + */ + { key: 'getFileStorageConfigs', url: '/v2/storage-configs/{storageType}', method: 'GET' }, + /** + * 新增 + */ + { key: 'createFileStorageConfigs', url: '/v2/storage-configs', method: 'put' }, + /** + * 删除 + */ + { key: 'deleteFileStorageConfigs', url: '/v2/storage-configs', method: 'DELETE' }, + + /** ** File Capacity Config : 文件容量配置**** */ + + /** + * 文件容量配置列表 + */ + { key: 'getFileCapacityConfigs', url: '/v1/{organizationId}/capacity-configs', method: 'GET' }, + + /** + * 保存文件容量配置 + */ + { + key: 'updateFileCapacityConfigs', + url: '/v1/{organizationId}/capacity-configs', + method: 'PUT', + }, + + /** + * 删除文件上传配置 + */ + { key: 'deleteUploadConfigs', url: '/v1/upload-configs', method: 'DELETE' }, + + /** + * 创建文件上传配置 + */ + { key: 'addUploadConfigs', url: '/v1/upload-configs', method: 'POST' }, + /** + * 修改文件上传配置 + */ + { key: 'updateUploadConfigs', url: '/v1/upload-configs', method: 'PUT' }, + /** + * 文件上传配置查询明细 + */ + { key: 'getUploadConfigsDetail', url: '/v1/upload-configs/detail', method: 'GET' }, + /** + * 文件上传配置明细 + */ + { + key: 'getUploadConfigsDetailById', + url: '/v1/upload-configs/{uploadConfigId}', + method: 'GET', + }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/settingApi/index.js b/front-end/src/api/settingApi/index.js new file mode 100644 index 0000000..9b4b244 --- /dev/null +++ b/front-end/src/api/settingApi/index.js @@ -0,0 +1,33 @@ +/* + * @Author: your name + * @Date: 2021-07-13 14:49:11 + * @LastEditTime: 2021-10-14 13:56:18 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\settingApi\index.js + */ +/** + * 模块接口 + */ + +import strategyApi from './strategyApi'; +import schedulerApi from './schedulerApi'; +import fileApi from './fileApi'; +import instance from './instanceApi'; +import indexes from './indexes'; +import reportApi from './reportApi'; +import stockProcessApi from './stockProcessApi'; +import logistics from './logistics'; +import orderProcessApi from './orderProcessApi'; + +export default { + ...strategyApi, + ...schedulerApi, + ...fileApi, + ...instance, + ...indexes, + ...reportApi, + ...stockProcessApi, + ...logistics, + ...orderProcessApi, +}; diff --git a/front-end/src/api/settingApi/indexes.js b/front-end/src/api/settingApi/indexes.js new file mode 100644 index 0000000..80b4d8c --- /dev/null +++ b/front-end/src/api/settingApi/indexes.js @@ -0,0 +1,109 @@ +/* + * @Author: your name + * @Date: 2021-07-20 16:07:16 + * @LastEditTime: 2021-07-28 14:45:25 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\settingApi\indexes.js + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/ssrh', + items: [ + /** 索引配置管理列表 */ + { + key: 'getIndexesList', + url: '/v1/{organizationId}/indices', + method: 'get', + }, + /** 索引配置管理列表-添加数据 */ + { + key: 'getIndexesAdd', + url: '/v1/{organizationId}/indices/with-fields', + method: 'post', + }, + /** 索引配置管理列表-详情 */ + { + key: 'getIndexesDetail', + url: '/v1/{organizationId}/index-fields/without-pages', + method: 'get', + loadingHide: true, + }, + /** 索引配置管理列表-更新状态 */ + { + key: 'updataIndexes', + url: '/v1/{organizationId}/indices/with-fields', + method: 'post', + }, + /** ************************* 查询配置 **********************************/ + /** 查询配置列表 */ + { + key: 'getInquiryList', + url: '/v1/{organizationId}/query-configs', + method: 'get', + }, + /** 配置查询 */ + { + key: 'getInquiryQuery', + url: '/v1/{organizationId}/query-configs/{configCode}/query', + method: 'post', + }, + /** 创建查询配置 */ + { + key: 'addInquiry', + url: '/v1/{organizationId}/query-configs', + method: 'post', + }, + /** 修改查询配置 */ + { + key: 'editInquiry', + url: '/v1/{organizationId}/query-configs', + method: 'put', + }, + /** 删除查询配置 */ + { + key: 'deleteInquiry', + url: '/v1/{organizationId}/query-configs', + method: 'delete', + }, + /** 获取显示字段列表 */ + { + key: 'getInquiryFieldList', + url: '/v1/{organizationId}/indices/with-fields', + method: 'get', + }, + { + key: 'addInquiryField', + url: '/v1/{organizationId}/indices/with-fields', + method: 'post', + }, + { + key: 'InquiryFieldQuery', + url: '/v1/{organizationId}/query-configs/{configCode}/query', + method: 'post', + }, + /** ************************* 索引同步 **********************************/ + /** 索引同步列表 */ + { + key: 'getIndexesSyncList', + url: '/v1/{organizationId}/index-sync-configs', + method: 'get', + }, + /** 创建索引同步配置 */ + { + key: 'AddIndexesSync', + url: '/v1/{organizationId}/index-sync-configs', + method: 'post', + }, + /** 查询索引同步配置明细 */ + { + key: 'getIndexesSyncConfigs', + url: '/v1/{organizationId}/index-sync-configs/{syncConfId}', + method: 'get', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/settingApi/instanceApi.js b/front-end/src/api/settingApi/instanceApi.js new file mode 100644 index 0000000..07115e3 --- /dev/null +++ b/front-end/src/api/settingApi/instanceApi.js @@ -0,0 +1,30 @@ +import { generate } from '@/utils/request'; +const config = { + prefix: '/hagd', + items: [ + { + key: 'getInstancesList', + url: '/v1/sagas/instances', + method: 'get', + }, + { + key: 'getInstancesDetail', + url: '/v1/sagas/instances/{id}', + method: 'get', + }, + { + key: 'retryInstancesTask', + url: '/v1/sagas/tasks/instances/{id}/retry', + method: 'put', + }, + { + key: 'failedInstancesTask', + url: '/v1/sagas/tasks/instances/{id}/failed', + method: 'put', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/settingApi/logistics.js b/front-end/src/api/settingApi/logistics.js new file mode 100644 index 0000000..5fe91d5 --- /dev/null +++ b/front-end/src/api/settingApi/logistics.js @@ -0,0 +1,42 @@ +/* + * @Author: your name + * @Date: 2021-09-26 17:56:19 + * @LastEditTime: 2021-09-29 18:00:22 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\settingApi\logistics.js + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/lgit', + items: [ + { key: 'updateStrategyLogistics', url: '/v1/logistics-rule-setting', method: 'PUT' }, + { key: 'getStrategyLogistics', url: '/v1/logistics-rule-setting/detail', method: 'GET' }, + /** 订单金额 */ + { key: 'getStrategyOrderAmounts', url: '/v1/strategy-order-amounts', method: 'GET' }, + { key: 'addStrategyOrderAmounts', url: '/v1/strategy-order-amounts', method: 'POST' }, + { key: 'deleteStrategyOrderAmounts', url: '/v1/strategy-order-amounts', method: 'DELETE' }, + { key: 'updateStrategyOrderAmounts', url: '/v1/strategy-order-amounts', method: 'PUT' }, + /** 指定商品 */ + { key: 'getStrategyGoods', url: '/v1/strategy-goods', method: 'GET' }, + { key: 'addStrategyGoods', url: '/v1/strategy-goods', method: 'POST' }, + { key: 'updateStrategyGoods', url: '/v1/strategy-goods', method: 'PUT' }, + { key: 'deleteStrategyGoods', url: '/v1/strategy-goods', method: 'DELETE' }, + /** 指定省市区 */ + { key: 'getStrategyZones', url: '/v1/strategy-zones', method: 'GET' }, + { key: 'addStrategyZones', url: '/v1/strategy-zones', method: 'POST' }, + { key: 'updateStrategyZones', url: '/v1/strategy-zones', method: 'PUT' }, + { key: 'deleteStrategyZones', url: '/v1/strategy-zones', method: 'DELETE' }, + { key: 'getStrategyZonesDetail', url: '/v1/strategy-zones/{id}', method: 'GET' }, + { key: 'getStrategyZonesHasSetArea', url: '/v1/strategy-zones/hasSetArea', method: 'GET' }, + /** 指定仓库 */ + { key: 'getStrategyStoreHouses', url: '/v1/strategy-storehouses', method: 'GET' }, + { key: 'addStrategyStoreHouses', url: '/v1/strategy-storehouses', method: 'POST' }, + { key: 'updateStrategyStoreHouses', url: '/v1/strategy-storehouses', method: 'PUT' }, + { key: 'deleteStrategyStoreHouses', url: '/v1/strategy-storehouses', method: 'DELETE' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/settingApi/orderProcessApi.js b/front-end/src/api/settingApi/orderProcessApi.js new file mode 100644 index 0000000..6082463 --- /dev/null +++ b/front-end/src/api/settingApi/orderProcessApi.js @@ -0,0 +1,32 @@ +/* + * @Author: your name + * @Date: 2021-10-14 13:51:56 + * @LastEditTime: 2021-11-02 11:32:09 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\settingApi\processOrderApi.js + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/sord/v1/order-flow-config', + items: [ + /** 创建 */ + { key: 'addOrderFlowConfig', url: '', method: 'POST' }, + /* 删除订单流程配置(不允许删除) */ + { key: 'deleteOrderFlowConfig', url: '', method: 'DELETE' }, + /* 订单流程配置列表分页 */ + { key: 'getOrderFlowConfig', url: '', method: 'GET' }, + /* 保存订单流程配置 */ + { key: 'saveOrderFlowConfig', url: '', method: 'PUT' }, + /* 订单流程配置明细 */ + { key: 'getOrderFlowConfigDetail', url: '/{id}', method: 'GET' }, + /* 流程发布 */ + { key: 'releaseFlow', url: '/publish/{id}', method: 'PUT' }, + /* 流程下架 */ + { key: 'undercarriageRelease', url: '/undercarriage/{id}', method: 'PUT' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/settingApi/reportApi.js b/front-end/src/api/settingApi/reportApi.js new file mode 100644 index 0000000..9f4243d --- /dev/null +++ b/front-end/src/api/settingApi/reportApi.js @@ -0,0 +1,147 @@ +/* + * @Author: your name + * @Date: 2021-08-06 15:12:58 + * @LastEditTime: 2021-08-17 09:46:27 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\settingApi\report.js + */ +import { generate } from '@/utils/request'; + +const config = { + prefix: '/srpt', + items: [ + /** 获取数据集列表 */ + { + key: 'getReportList', + url: '/v1/{organizationId}/datasets', + method: 'get', + }, + /** 创建数据集 */ + { + key: 'addReport', + url: '/v1/{organizationId}/datasets', + method: 'post', + }, + /** 修改数据集 */ + { + key: 'editReport', + url: '/v1/{organizationId}/datasets', + method: 'put', + }, + /** 删除数据集 */ + { + key: 'deleteReport', + url: '/v1/{organizationId}/datasets', + method: 'delete', + }, + /** 数据集详情 */ + { + key: 'getReportDetail', + url: '/v1/{organizationId}/datasets/detail', + method: 'get', + }, + /** 查看报表 */ + { + key: 'lookReportDetail', + url: '/v1/{organizationId}/datasets/{dataSetId}', + method: 'get', + }, + /** 预览SQL语句 */ + { + key: 'previewReportSql', + url: '/v1/{organizationId}/datasets/preview-sql', + method: 'post', + }, + /** 获取XML示例 */ + // 暂废 + // { + // key: 'getReporXmlExample', + // url: '/v1/{organizationId}/datasets/xml-sample', + // method: 'post' + // } + /** **************************************** 报表模板管理接口部分 ************************************************/ + /** 报表模板管理列表 */ + { + key: 'getTemplateList', + url: '/v1/{organizationId}/templates', + method: 'get', + }, + { + key: 'addTemplate', + url: '/v1/{organizationId}/templates', + method: 'post', + }, + { + key: 'updateTemplate', + url: '/v1/{organizationId}/templates', + method: 'put', + }, + { + key: 'deleteTemplate', + url: '/v1/{organizationId}/templates', + method: 'delete', + }, + /** **************************************** 报表定义 ************************************************/ + /** 报表定义列表 */ + { + key: 'getDesigner', + url: '/v1/{organizationId}/reports/designer', + method: 'get', + }, + /** 新建报表定义 */ + { + key: 'addDesigner', + url: '/v1/{organizationId}/reports/designer', + method: 'post', + }, + /** 编辑报表定义 */ + { + key: 'editDesigner', + url: '/v1/{organizationId}/reports/designer', + method: 'put', + }, + /** 删除报表定义 */ + { + key: 'deleteDesigner', + url: '/v1/{organizationId}/reports/designer', + method: 'delete', + }, + /** 报表定义数据详情 */ + { + key: 'getDesignerDetail', + url: '/v1/{organizationId}/reports/designer/{reportId}', + method: 'get', + }, + /* ********************************* 报表查询 **************************************** */ + /** 报表查询列表 */ + { + key: 'getInquire', + url: '/v1/{organizationId}/reports', + method: 'get', + }, + /** 报表查看 元数据 */ + { + key: 'getInquireDetail', + url: '/v1/{organizationId}/reports/{reportUuid}', + method: 'get', + }, + /** 生成报表 */ + { + key: 'createInquireDetail', + url: '/v1/{organizationId}/reports/{reportUuid}/data', + method: 'post', + }, + /* ********************************* 报表请求 **************************************** */ + /** 报表请求列表 */ + { + key: 'getInquireRequest', + url: '/v1/{organizationId}/report-requests', + method: 'get', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/settingApi/schedulerApi.js b/front-end/src/api/settingApi/schedulerApi.js new file mode 100644 index 0000000..9c04943 --- /dev/null +++ b/front-end/src/api/settingApi/schedulerApi.js @@ -0,0 +1,220 @@ +/** + * JobInfo : 任务 + * + + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/ssdr', + items: [ + /** + * 任务列表 + */ + { key: 'getJobInfo', url: '/v1/{organizationId}/job-info', method: 'Get' }, + /** + * 任务创建 + */ + { key: 'createJobInfo', url: '/v1/{organizationId}/job-info', method: 'POST' }, + /** + * 任务修改 + */ + { key: 'updateJobInfo', url: '/v1/{organizationId}/job-info', method: 'PUT' }, + /** + * 批量任务删除 + */ + { key: 'deleteJobInfo', url: '/v1/{organizationId}/job-info', method: 'DELETE' }, + /** + * 任务明细 + */ + { key: 'getJobInfoById', url: '/v1/{organizationId}/job-info/{jobId}', method: 'GET' }, + /** + * 任务挂起 + */ + { + key: 'pauseJobInfo', + url: '/v1/{organizationId}/job-info/pause', + method: 'POST', + type: 'query', + }, + /** + * 恢复任务 + */ + { + key: 'resumeJobInfo', + url: '/v1/{organizationId}/job-info/resume', + method: 'POST', + type: 'query', + }, + /** + * 终止任务 + */ + { + key: 'stopJobInfo', + url: '/v1/{organizationId}/job-info/stop', + method: 'POST', + type: 'query', + }, + /** + * 立即执行 + */ + { + key: 'triggerJobInfo', + url: '/v1/{organizationId}/job-info/trigger', + method: 'POST', + type: 'query', + }, + /** ******** Job Log : 任务日志 ************* */ + /** + * 任务日志列表 + */ + { key: 'getJobLogs', url: '/v1/{organizationId}/job-logs', method: 'Get' }, + /** + * 单条删除日志 + */ + { key: 'deleteJobLogs', url: '/v1/{organizationId}/job-logs', method: 'DELETE' }, + + // POST /v1/{organizationId}/job-logs/callback + // 客户端日志回写 + + // DELETE /v1/{organizationId}/job-logs/clear + // 日志清理 + + // GET /v1/{organizationId}/job-logs/{jobId}/logs + // 单个任务日志列表 + + // GET /v1/{organizationId}/job-logs/{logId}/error-detail + // 查询任务异常详情 + + // GET /v1/{organizationId}/job-logs/{logId}/log-detail + // 查询任务日志详情 + + // GET /v1/{organizationId}/job-logs/{logId}/progress + // 查询任务进度 + + /** + * Executor(Site Level) : 任务执行器(平台级) + * + */ + + /** + * 删除执行器 + */ + { key: 'deleteExecutors', url: '/v1/executors', method: 'DELETE' }, + + /** + * 查询执行器列表 + */ + { key: 'getExecutors', url: '/v1/executors', method: 'GET' }, + /** + * 创建执行器 + */ + { key: 'addExecutors', url: '/v1/executors', method: 'POST' }, + /** + * 更新执行器 + */ + { key: 'updateExecutors', url: '/v1/executors', method: 'PUT' }, + /** 配置执行器 addressList */ + + /** + * 执行器配置列表 + */ + { key: 'getExecutorsConfig', url: '/v1/executor-configs/{executorId}/config', method: 'GET' }, + + /** + * 更新及新建执行器配置 + */ + { key: 'updateExecutorsConfig', url: '/v1/executor-configs', method: 'POST' }, + + /** + * 删除执行器配置 + */ + { key: 'deleteExecutorsConfig', url: '/v1/executor-configs', method: 'DELETE' }, + + /** + * + * Executable(Site Level) : 可执行定义(平台级) + * + */ + /** + * 删除并发可执行 + */ + { key: 'deleteExecutables', url: '/v1/executables', method: 'DELETE' }, + /** + * 并发可执行列表 + */ + { key: 'getExecutables', url: '/v1/executables', method: 'GET' }, + /** + * 创建并发可执行 + */ + { key: 'addExecutables', url: '/v1/executables', method: 'POST' }, + /** + * 修改并发可执行 + */ + { key: 'updateExecutables', url: '/v1/executables', method: 'PUT' }, + /** + * 并发可执行明细 + */ + { key: 'getExecutablesDetail', url: '/v1/executables/', method: 'GET' }, + + /** + * SettingSchedulerRequest: Concurrent(Site Level) : 请求定义(平台级) + */ + + /** + * 列表 + */ + { key: 'getRequest', url: '/v1/concurrents', method: 'GET' }, + /** + * 创建 + */ + { key: 'addRequest', url: '/v1/concurrents', method: 'POST' }, + /** + * 修改 + */ + { key: 'updateRequest', url: '/v1/concurrents', method: 'PUT' }, + /** + * 明细 + */ + { key: 'detailRequest', url: '/v1/concurrents/', method: 'GET' }, + /** + * 用户可选并发程序列表 + */ + { key: 'getUsableRequest', url: '/v1/concurrents/usable', method: 'GET' }, + + /** + * Concurrent Permission: 请求权限定义(平台级) + */ + /** + * 列表 + */ + { key: 'getRequestPermissions', url: '/v1/conc-permissions/{concurrentId}', method: 'GET' }, + /** + * 创建 + */ + { key: 'addRequestPermissions', url: '/v1/conc-permissions', method: 'POST' }, + /** + * 修改 + */ + { key: 'updateRequestPermissions', url: '/v1/conc-permissions', method: 'PUT' }, + /** + *Concurrent Request: 并发请求(平台级) + */ + /** + * 明细 + */ + { key: 'detailConcurrent', url: '/v1/concurrent-requests/{requestId}', method: 'GET' }, + /** + * 创建 + */ + { key: 'addConcurrent', url: '/v1/concurrent-requests', method: 'POST' }, + /** + * 列表 + */ + { key: 'getConcurrent', url: '/v1/concurrent-requests', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/settingApi/stockProcessApi.js b/front-end/src/api/settingApi/stockProcessApi.js new file mode 100644 index 0000000..9b40384 --- /dev/null +++ b/front-end/src/api/settingApi/stockProcessApi.js @@ -0,0 +1,42 @@ +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1/process', + items: [ + { + key: 'getStockProcess', + url: '/page', + method: 'POST', + }, + { + key: 'deleteStockProcess', + url: '/delete', + method: 'POST', + type: 'form', + }, + { + key: 'addStockProcess', + url: '/create', + method: 'POST', + }, + { + key: 'detailStockProcess', + url: '/detail', + method: 'POST', + type: 'form', + }, + { + key: 'operationStockProcess', + url: '/operation', + method: 'POST', + }, + { + key: 'updateStockProcess', + url: '/update', + method: 'POST', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/settingApi/strategyApi.js b/front-end/src/api/settingApi/strategyApi.js new file mode 100644 index 0000000..39096c6 --- /dev/null +++ b/front-end/src/api/settingApi/strategyApi.js @@ -0,0 +1,28 @@ +/** + * PasswordPolicy : 密码策略 + * + + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/iam', + items: [ + /** + * 查询组织的密码策略 + */ + { key: 'getPasswordPolicy', url: '/v1/{tenantId}/password-policies', method: 'Get' }, + /** + * 修改组织的密码策略 + */ + { key: 'updatPasswordPolicy', url: '/v1/{tenantId}/password-policies', method: 'PUT' }, + /** + * 查询密码策略 + */ + { key: 'getPasswordPolicyQuery', url: '/v1/{tenantId}/password-policies/query', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/simpApi/index.js b/front-end/src/api/simpApi/index.js new file mode 100644 index 0000000..b39cf1c --- /dev/null +++ b/front-end/src/api/simpApi/index.js @@ -0,0 +1,34 @@ +/** + * 示例 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/simp/v1/{organizationId}', + items: [ + /** + * 导出Csv模板 + * @organizationId : 0 + */ + { key: 'importTemplateCSV', url: '/import/template/{templateCode}/csv', method: 'GET' }, + /** + * 导出Excel模板 + * @organizationId : 0 + */ + { + key: 'importTemplateEXCEL', + url: '/import/template/{templateCode}/excel', + method: 'GET', + rType: 2, + }, + /** + * 获取模板头行详细信息 + * @organizationId : 0 + */ + { key: 'importTemplateInfo', url: '/import/template/{templateCode}/info', method: 'GET' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/abnormalApi.js b/front-end/src/api/stockApi/abnormalApi.js new file mode 100644 index 0000000..99905da --- /dev/null +++ b/front-end/src/api/stockApi/abnormalApi.js @@ -0,0 +1,27 @@ +/* + * @Author: your name + * @Date: 2021-11-19 15:40:59 + * @LastEditTime: 2021-11-19 15:44:47 + * @LastEditors: Please set LastEditors + * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + * @FilePath: \newBj-admin\src\api\stockApi\abnormalApi.js + */ +/* jshint esversion: 9 */ +/** + * + * adjust record : 库存管理->异常库存管理 + * + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1', + items: [ + /* 快速补货 */ + { key: 'processServiceFastReplenish', url: '/process/service/fast/replenish', method: 'POST' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/adjustRecordsApi.js b/front-end/src/api/stockApi/adjustRecordsApi.js new file mode 100644 index 0000000..8ec092f --- /dev/null +++ b/front-end/src/api/stockApi/adjustRecordsApi.js @@ -0,0 +1,32 @@ +/* jshint esversion: 9 */ +/** + * + * adjust record : 调整单 + * + * 数据同步管理 + +GET /v1/adjust-records +查看调整单详情 + +POST /v1/adjust-records/page +调整单分页 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1/adjust-records', + items: [ + // 创建或者更新调整单 + { key: 'addAdjustRecords', url: '/adjust-record', method: 'PUT' }, + // 分页 + { key: 'getAdjustRecords', url: '/page', method: 'POST' }, + // 审核调整单 + { key: 'statusAdjustRecords', url: '/adjust-status', method: 'POST' }, + // 详情 + { key: 'detailAdjustRecords', url: '/detail/', method: 'GET' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/changeRecordApi.js b/front-end/src/api/stockApi/changeRecordApi.js new file mode 100644 index 0000000..49189cf --- /dev/null +++ b/front-end/src/api/stockApi/changeRecordApi.js @@ -0,0 +1,25 @@ +/* jshint esversion: 9 */ +/** + * reserve-record-controller : + + * + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1/change-logs', + items: [ + // 创建或者更新 + { key: 'addChangeRecords', url: '/reserve', method: 'POST' }, + // 分页 + { key: 'getChangeRecords', url: '/page', method: 'POST' }, + // 审核 审核状态 STOCK.RECORD_STATUS ,typeCode (string, optional): 值集 STOCK.RECORD_TYPE + { key: 'statusChangeRecords', url: '/reserve-status', method: 'POST' }, + // 详情 + { key: 'detailChangeRecords', url: '/detail/', method: 'GET' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/deliveryApi.js b/front-end/src/api/stockApi/deliveryApi.js new file mode 100644 index 0000000..d4a8f91 --- /dev/null +++ b/front-end/src/api/stockApi/deliveryApi.js @@ -0,0 +1,62 @@ +/* jshint esversion: 9 */ +/** + * reserve-record-controller : + + * + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1', + items: [ + // 出库通知单列表 + { key: 'getOutboundDelivery', url: '/outbound/delivery/order/page', method: 'POST' }, + // 出库通知单详情 + { + key: 'getOutboundDeliveryDetail', + url: '/outbound/delivery/order/detail/{id}', + method: 'GET', + }, + // 出库通知单商品信息分页 + { + key: 'getOutboundDeliveryDetailPage', + url: '/outbound/delivery/order/detail/page', + method: 'POST', + }, + // 统计出库通知单发货及已发货数量 + { + key: 'getOutboundDeliveryDetailStats', + url: '/outbound/delivery/order/detail/stats/', + method: 'POST', + type: 'query', + }, + // 出库结果单分页 + { + key: 'getResultRecordsPage', + url: '/result-records/page', + method: 'POST', + }, + // 出库结果单详情 + { + key: 'getResultRecordsDetail', + url: '/result-records/{id}', + method: 'GET', + }, + // 出库结果单商品信息分页 + { + key: 'getResultDetailPage', + url: '/result-detail/page', + method: 'POST', + }, + // 统计出库通知单发货及已发货数量 + { + key: 'getResultDetailStatus', + url: '/result-detail/stats/{resultId}', + method: 'GET', + }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/distributeSpaceApi.js b/front-end/src/api/stockApi/distributeSpaceApi.js new file mode 100644 index 0000000..99bf1e1 --- /dev/null +++ b/front-end/src/api/stockApi/distributeSpaceApi.js @@ -0,0 +1,50 @@ +/* jshint esversion: 9 */ +/** + * Freight Space Manage : 仓位管理 + * + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1/freight/spaces', + items: [ + // 分页 + { key: 'getDistributeSpaces', url: '/page', method: 'POST' }, + { key: 'getDistributeSpacesRatio', url: '/ratio/page', method: 'POST' }, + + // 创建或者更新 + { key: 'addDistributeSpacesQty', url: '/qty/save', method: 'POST' }, + { key: 'addDistributeSpacesRatio', url: '/ratio/save', method: 'POST' }, + // 批量保存 + { key: 'addBatchDistributeSpacesQty', url: '/qty/batch/save', method: 'POST' }, + { key: 'addBatchDistributeSpacesRatio', url: '/ratio/batch/save', method: 'POST' }, + + // 详情 + { key: 'detailDistributeSpaces', url: '/detail/', method: 'POST' }, + + // 仓位分配-可配置商品信息列表 + { + key: 'getMayDistributeSpacesGoods', + url: '/may/setting/goods/page', + method: 'POST', + }, + // 仓位分配-已分配商品信息列表 + { + key: 'getDistributeSpacesGoods', + url: '/setting/goods/page', + method: 'POST', + }, + // 仓位分配->批量删除商品和仓库的关联明细 + { + key: 'deleteDistributeSpacesGoods', + url: '/delete/goods', + method: 'POST', + }, + // 仓位分配->批量分配->已分配接收仓列表 + { key: 'getDistributeSpacesWarehouse', url: '/receive/warehouse/page', method: 'POST' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/entryApi.js b/front-end/src/api/stockApi/entryApi.js new file mode 100644 index 0000000..1c922d9 --- /dev/null +++ b/front-end/src/api/stockApi/entryApi.js @@ -0,0 +1,34 @@ +/* jshint esversion: 9 */ +/** + * reserve-record-controller : + + * + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1', + items: [ + // 入库通知单详情 + { key: 'detailEntryInform', url: '/warehouse/warrants/detail', method: 'GET' }, + + // 入库通知单列表 + { key: 'getEntryInform', url: '/warehouse/warrants/page', method: 'POST' }, + + // 入库通知单商品列表 + { key: 'getEntryInformDetailGoods', url: '/warehouse/warrant/details/page', method: 'POST' }, + + // 入库结果单详情 + { key: 'detailEntryResult', url: '/warehouse-results/detail', method: 'GET' }, + + // 入库结果单列表 + { key: 'getEntryResult', url: '/warehouse-results/page', method: 'POST' }, + + // 入库结果单商品列表 + { key: 'getEntryResultDetailGoods', url: '/warehouse-result-details/page', method: 'POST' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/goodsStocksApi.js b/front-end/src/api/stockApi/goodsStocksApi.js new file mode 100644 index 0000000..50fc7e2 --- /dev/null +++ b/front-end/src/api/stockApi/goodsStocksApi.js @@ -0,0 +1,20 @@ +/* jshint esversion: 9 */ +/** + * Goods Stock Manage : 库存管理 + * + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1/goods-stocks', + items: [ + // 查看仓库库存 + { key: 'getGoodsStockList', url: '/stock-list', method: 'POST' }, + // 分页 仓库库存表列表 + { key: 'getGoodsStockPage', url: '/page', method: 'POST' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/index.js b/front-end/src/api/stockApi/index.js new file mode 100644 index 0000000..60f650b --- /dev/null +++ b/front-end/src/api/stockApi/index.js @@ -0,0 +1,59 @@ +/* + * @Author: your name + * @Date: 2021-08-06 13:55:19 + * @LastEditTime: 2022-03-10 11:16:45 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\stockApi\index.js + */ +/* jshint esversion: 9 */ +/** + * 模块接口 + */ + +import rulesApi from './rulesApi'; +import warehouseApi from './warehouseApi'; +import adjustRecordsApi from './adjustRecordsApi'; +import moveRecordsApi from './moveRecordsApi'; +import goodsStocksApi from './goodsStocksApi'; +import warehouseRelationApi from './warehouseRelationApi'; +import reserveRecordsApi from './reserveRecordsApi'; +import distributeSpaceApi from './distributeSpaceApi'; +/** 出入库通知/结果单 */ +import noticeAndResultApi from './noticeAndResultApi'; +import changeRecordApi from './changeRecordApi'; +import initializeApi from './initializeApi'; +/** 库存管理-->仓库结构管理 */ +import structureApi from './structureApi'; +import stockOutApi from './stockOutApi'; +import abnormalApi from './abnormalApi'; +/** 寻源管理 */ +import sourcingApi from './sourcingApi'; +/** 出库 */ +import deliveryApi from './deliveryApi'; +/** 入库 */ +import entryApi from './entryApi'; + +/** 调拨管理 */ +import transferApi from './transferApi'; + +export default { + ...rulesApi, + ...warehouseApi, + ...adjustRecordsApi, + ...moveRecordsApi, + ...goodsStocksApi, + ...warehouseRelationApi, + ...reserveRecordsApi, + ...distributeSpaceApi, + ...noticeAndResultApi, + ...changeRecordApi, + ...initializeApi, + ...structureApi, + ...stockOutApi, + ...abnormalApi, + ...sourcingApi, + ...deliveryApi, + ...entryApi, + ...transferApi, +}; diff --git a/front-end/src/api/stockApi/initializeApi.js b/front-end/src/api/stockApi/initializeApi.js new file mode 100644 index 0000000..50890b6 --- /dev/null +++ b/front-end/src/api/stockApi/initializeApi.js @@ -0,0 +1,36 @@ +/* jshint esversion: 9 */ +/** + * Initialize Manage : 库存初始化管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1', + items: [ + // 创建或者更新 + { key: 'addInitialize', url: '/initialize/create', method: 'POST' }, + // 分页 + { key: 'getInitialize', url: '/initialize/page', method: 'POST' }, + // 查询文件上传情况 + { key: 'getImportInfo', url: '/initialize/query', method: 'GET' }, + // 自动导入到正式表,一次执行三个流程(同步) + { + key: 'importStockInitialize', + url: '/{organizationId}/import/data/sync/auto-import?templateCode=STOCK.INITIALIZE_CODE', + method: 'POST', + type: 'form', + }, + // 导出临时数据Excel + { + key: 'exportStockInitialize', + url: + '/{organizationId}/import/manager/export/excel?templateCode=STOCK.INITIALIZE_CODE&batch={batch}', + method: 'GET', + rType: 2, + }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/moveRecordsApi.js b/front-end/src/api/stockApi/moveRecordsApi.js new file mode 100644 index 0000000..58eb66f --- /dev/null +++ b/front-end/src/api/stockApi/moveRecordsApi.js @@ -0,0 +1,27 @@ +/* jshint esversion: 9 */ +/** + * move record : 移仓单 + * + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1/move-records', + items: [ + // 创建或者更新调整单 + { key: 'addMoveRecords', url: '/move-record', method: 'PUT' }, + // 分页 + { key: 'getMoveRecords', url: '/page', method: 'POST' }, + // 审核调整单 审核状态 0待审核1审核成功2审核失败 + // {"id":0,"status":0,"typeCode":"string"} + { key: 'statusAllMoveRecords', url: '/move-record-status', method: 'PATCH' }, + // [{"id":0,"status":0,"typeCode":"string"}] + { key: 'statusOneMoveRecords', url: '/move-record-detail-status', method: 'PATCH' }, + // 详情 + { key: 'detailMoveRecords', url: '/detail/', method: 'GET' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/noticeAndResultApi.js b/front-end/src/api/stockApi/noticeAndResultApi.js new file mode 100644 index 0000000..c28b0d5 --- /dev/null +++ b/front-end/src/api/stockApi/noticeAndResultApi.js @@ -0,0 +1,26 @@ +/* + * @Author: 出/入库管理 + * @Date: 2021-08-27 14:48:35 + * @LastEditTime: 2021-11-03 14:45:02 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\stockApi\record.js + */ +/** 出入库管理 */ +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1', + items: [ + /** 出入库通知单 */ + { key: 'getNoticRecords', url: '/outbound/delivery/order/page', method: 'POST' }, + /** 出入库通知单详情 */ + { key: 'getNoticRecordsDetail', url: '/outbound/delivery/order/detail/{id}', method: 'POST' }, + /** 出入库结果单详情 */ + { key: 'getResultRecordsDetail', url: '/result-records/detail/{resultCode}', method: 'get' }, + /** 内部订单详情中的发货单列表 */ + { key: 'getOrderNoticRecords', url: '/outbound/delivery/order/order', method: 'POST', type: 'form' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/reserveRecordsApi.js b/front-end/src/api/stockApi/reserveRecordsApi.js new file mode 100644 index 0000000..5327bfa --- /dev/null +++ b/front-end/src/api/stockApi/reserveRecordsApi.js @@ -0,0 +1,25 @@ +/* jshint esversion: 9 */ +/** + * reserve-record-controller : + + * + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1/reserve-records', + items: [ + // 创建或者更新 + { key: 'addReserveRecords', url: '/reserve', method: 'POST' }, + // 分页 + { key: 'getReserveRecords', url: '/page', method: 'POST' }, + // 审核 审核状态 STOCK.RECORD_STATUS ,typeCode (string, optional): 值集 STOCK.RECORD_TYPE + { key: 'statusReserveRecords', url: '/reserve-status', method: 'POST' }, + // 详情 + { key: 'detailReserveRecords', url: '/detail/', method: 'GET' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/rulesApi.js b/front-end/src/api/stockApi/rulesApi.js new file mode 100644 index 0000000..9476cb7 --- /dev/null +++ b/front-end/src/api/stockApi/rulesApi.js @@ -0,0 +1,62 @@ +/** + * + * rule-controller : Rule Controller + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1', + items: [ + // 库存规则明细 + { key: 'detailRules', url: '/rules/detail', method: 'GET' }, + + // 创建与修改库存规则 + { key: 'updateRules', url: '/rules/save', method: 'POST' }, + + /** Surplus Qty Replenish Manage : 剩余数量优先补货管理 */ + + { key: 'deleteSurplusQtyReplenish', url: '/surplus/qty/replenishs', method: 'DELETE' }, + + { key: 'getSurplusQtyReplenish', url: '/surplus/qty/replenishs', method: 'get' }, + + { key: 'addSurplusQtyReplenish', url: '/surplus/qty/replenishs', method: 'POST' }, + + { + key: 'operationSurplusQtyReplenish', + url: '/surplus/qty/replenishs/operation', + method: 'POST', + type: 'query', + }, + /** 仓库结构规则管理*/ + + // 仓库结构规则明 + { + key: 'detailWarehouseStructuralRules', + url: '/warehouse/structural/rule/detail', + method: 'GET', + }, + { + key: 'saveWarehouseStructuralRules', + url: '/warehouse/structural/rule/save', + method: 'post', + }, + /** 店铺补货优先管理 */ + // 店铺补货优先级列表 + { + key: 'getShopReplenishPriority', + url: '/shop/replenish/prioritys', + method: 'GET', + }, + // 店铺补货优先级保存接口 + { + key: 'saveShopReplenishPriority', + url: '/shop/replenish/prioritys/save', + method: 'POST', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/sourcingApi.js b/front-end/src/api/stockApi/sourcingApi.js new file mode 100644 index 0000000..5d91e98 --- /dev/null +++ b/front-end/src/api/stockApi/sourcingApi.js @@ -0,0 +1,21 @@ +/* + * @Author: your name + * @Date: 2021-10-19 10:27:23 + * @LastEditTime: 2022-02-18 10:47:15 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\orderApi\internal.js + */ +import { generate } from '@/utils/request'; + +const config = { + prefix: 'stock/v1', + items: [ + /** 根据订单信息获取相关的逻辑仓集合 */ + { key: 'getOrderSourcingLogicWarehouse', url: '/sourcing/get/logic/warehouse', method: 'POST' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/stockOutApi.js b/front-end/src/api/stockApi/stockOutApi.js new file mode 100644 index 0000000..10d51ae --- /dev/null +++ b/front-end/src/api/stockApi/stockOutApi.js @@ -0,0 +1,41 @@ +/* + * @Author: your name + * @Date: 2021-10-26 10:11:25 + * @LastEditTime: 2022-04-25 16:59:08 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\stockApi\structureApi.js + */ +/** + * + * StockOut Manage : 缺货管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1', + items: [ + // 缺货店铺列表 + { key: 'getStockOutShopPage', url: '/stockout/shop/page', method: 'POST' }, + // 缺货订单列表 + { key: 'getStockOutOrderPage', url: '/stockout/order/page', method: 'POST' }, + // 缺货订单待发货列表 + { key: 'getStockOutWaitPage', url: '/stockout/wait/page', method: 'POST' }, + // 缺货订单——发货 + { key: 'sendStockOutWait', url: '/stockout/send/{id}', method: 'POST' }, + // 批量设置保存 + { key: 'stockOutBatSetting', url: '/stockout/batch/setting', method: 'POST' }, + // 添加补货店铺数据 + { key: 'stockOutAdd', url: '/stockout/add', method: 'POST' }, + /** 发货汇总 */ + { key: 'getReportLogisticsResult', url: '/report/form/logistics/result', method: 'POST' }, + ], +}; + +// POST /v1/stockout/manage/page +// 缺货管理列表 + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/structureApi.js b/front-end/src/api/stockApi/structureApi.js new file mode 100644 index 0000000..17dc089 --- /dev/null +++ b/front-end/src/api/stockApi/structureApi.js @@ -0,0 +1,26 @@ +/* + * @Author: your name + * @Date: 2021-10-26 10:11:25 + * @LastEditTime: 2021-10-26 10:16:32 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\stockApi\structureApi.js + */ +/** + * + * rule-controller : Rule Controller + * + */ + + import { generate } from '@/utils/request'; + const config = { + prefix: '/stock/v1/warehouse/relation', + items: [ + // 租户配置比率关系图(租户级) + { key: 'getAllwarehouseSetting', url: '/setting/all', method: 'POST' }, + ], + }; + + export default { + ...generate(config), + }; diff --git a/front-end/src/api/stockApi/transferApi.js b/front-end/src/api/stockApi/transferApi.js new file mode 100644 index 0000000..4879cf6 --- /dev/null +++ b/front-end/src/api/stockApi/transferApi.js @@ -0,0 +1,145 @@ +/* jshint esversion: 9 */ +/** + * allot record : 调拨单 + * + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1', + items: [ + // 创建或者更新调整单 + { key: 'addAllotRecords', url: '/allot-records/allot-record', method: 'PUT' }, + // 调拨单分页 + { key: 'getAllotRecords', url: '/allot-records/page', method: 'POST' }, + // 审核调整单 审核状态 0待审核1审核成功2审核失败 + // {"id":0,"status":0,"typeCode":"string"} + { key: 'statusAllAllotRecords', url: '/allot-records/allot-record-status', method: 'PATCH' }, + // 详情 + { key: 'detailAllotRecords', url: '/allot-records/detail/', method: 'GET' }, + + /** 新版接口开发者:许荣发 */ + // 调拨单详情 + { key: 'getAllotRecordsDetail', url: '/allot-records/detail/{allotId}', method: 'GET' }, + // 创建更新调拨单 + { key: 'saveAllotRecords', url: '/allot-records/save', method: 'PUT' }, + // 获取商品对应逻辑仓库存信息 + { key: 'getAllotRecordsSkuStock', url: '/allot-records/list/sku/allot/stock', method: 'POST' }, + // 取消 + { key: 'cancelAllotRecords', url: '/allot-records/cancel', method: 'PATCH', type: 'query' }, + // 作废 + { key: 'invalidAllotRecords', url: '/allot-records/invalid', method: 'PATCH', type: 'query' }, + // 重置 + { key: 'resetAllotRecords', url: '/allot-records/reset', method: 'PATCH', type: 'query' }, + // 执行/再次执行 + { key: 'executeAllotRecords', url: '/allot-records/execute', method: 'PATCH', type: 'query' }, + // 审核 + { key: 'auditAllotRecords', url: '/allot-records/audit', method: 'PATCH' }, + + /* ********************** + 分仓计划部分 + *************************/ + + // 分仓计划列表 + { key: 'getDistributePlansPage', url: '/distribute/plans/page', method: 'POST' }, + // 分仓计划详情 + { key: 'getDistributePlansDetail', url: '/distribute/plans/detail/{id}', method: 'GET' }, + // 创建或者更新分仓计划 + { key: 'saveDistributePlans', url: '/distribute/plans/save', method: 'PUT' }, + // 获取商品对应库存信息 + { key: 'getDistributePlansSkuStock', url: '/distribute/plans/list/sku/stock', method: 'POST' }, + // 取消 + { + key: 'cancelDistributePlan', + url: '/distribute/plans/cancel', + method: 'PATCH', + type: 'query', + }, + // 作废 + { + key: 'invalidDistributePlan', + url: '/distribute/plans/invalid', + method: 'PATCH', + type: 'query', + }, + // 重置 + { key: 'resetDistributePlan', url: '/distribute/plans/reset', method: 'PATCH', type: 'query' }, + // 审核 + { key: 'auditDistributePlan', url: '/distribute/plans/audit', method: 'PATCH' }, + + /* ********************** + 虚仓移仓部分部分 + *************************/ + + // 虚仓移仓列表 + { key: 'getDistributeVirtualsPage', url: '/transfer-records/page', method: 'POST' }, + // 虚仓移仓详情 + { key: 'getDistributeVirtualsDetail', url: '/transfer-records/detail/{id}', method: 'GET' }, + // 创建或者更新虚仓移仓 + { key: 'saveDistributeVirtuals', url: '/transfer-records/save', method: 'PUT' }, + // 获取商品对应库存信息 + { + key: 'getDistributeVirtualsSkuStock', + url: '/transfer-records/list/sku/transfer/stock', + method: 'POST', + }, + // 取消 + { + key: 'cancelDistributeVirtuals', + url: '/transfer-records/cancel', + method: 'PATCH', + type: 'query', + }, + // 作废 + { + key: 'invalidDistributeVirtuals', + url: '/transfer-records/invalid', + method: 'PATCH', + type: 'query', + }, + // 重置 + { + key: 'resetDistributeVirtuals', + url: '/transfer-records/reset', + method: 'PATCH', + type: 'query', + }, + // 执行/再次执行 + { + key: 'executeDistributeVirtuals', + url: '/transfer-records/execute', + method: 'PATCH', + type: 'query', + }, + // 审核 + { + key: 'auditDistributeVirtuals', + url: '/transfer-records/audit', + method: 'PATCH', + }, + + // // 查询分仓计划缺货订单 + // { + // key: 'getDistributePlanStockoutList', + // url: '/stockout/list/order/stockout', + // method: 'POST', + // }, + + // 分仓计划缺货订单管理 + { + key: 'getDistributePlanShopStockoutList', + url: '/distribute/plan/shop/stockout/list', + method: 'POST', + }, + // 虚仓移仓详情管理 + { + key: 'getTransferStockoutDetailsList', + url: '/transfer-stockout-details/list', + method: 'POST', + }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/warehouseApi.js b/front-end/src/api/stockApi/warehouseApi.js new file mode 100644 index 0000000..16b8485 --- /dev/null +++ b/front-end/src/api/stockApi/warehouseApi.js @@ -0,0 +1,67 @@ +/* + * @Author: your name + * @Date: 2021-08-06 13:55:19 + * @LastEditTime: 2021-08-24 17:52:42 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\stockApi\warehouseApi.js + */ +/** + * + * Warehouse Manage : 仓库管理 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1', + items: [ + // + { key: 'addWarehouses', url: '/warehouses/save', method: 'POST' }, + + { key: 'updateWarehouses', url: '/warehouses/save', method: 'POST' }, + + { key: 'detailWarehouses', url: '/warehouses/detail/{id}', method: 'get' }, + + { key: 'getWarehousesList', url: '/warehouses/list-warehouse', method: 'POST' }, + { key: 'getWarehousesPage', url: '/warehouses/page-warehouse', method: 'POST' }, + + { key: 'deleteWarehouses', url: '/warehouses/remove', method: 'DELETE' }, + + { key: 'getWarehousesTypePage', url: '/warehouses/type/page', method: 'POST' }, + { key: 'getWarehouses', url: '/warehouses/list', method: 'get' }, + /** 删除仓库 */ + { key: 'deleteWarehouses', url: '/warehouses/remove', method: 'DELETE' }, + /** 保存 */ + { key: 'saveWarehouses', url: '/warehouses/save/coord', method: 'POST' }, + /** *** Warehouse Structure */ + + { key: 'addWarehouseStructures', url: '/warehouse/structures', method: 'POST' }, + + { + key: 'statusWarehouseStructures', + url: '/warehouse/structures/operation', + method: 'POST', + type: 'query', + }, + + // { key: 'detailWarehouseStructures', url: '/warehouses/detail/{id}', method: 'get' }, + + { key: 'getWarehouseStructures', url: '/warehouse/structures', method: 'get' }, + + { key: 'deleteWarehouseStructures', url: '/warehouse/structures', method: 'DELETE' }, + // 根据登录租户查询结构ID + { + key: 'getWarehouseStructureId', + url: '/warehouse/structures/query/structural/id', + method: 'POST', + }, + + /** 添加/修改仓库 */ + { key: 'updataWarehouseStructures', url: '/warehouses/save', method: 'post' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/stockApi/warehouseRelationApi.js b/front-end/src/api/stockApi/warehouseRelationApi.js new file mode 100644 index 0000000..d233262 --- /dev/null +++ b/front-end/src/api/stockApi/warehouseRelationApi.js @@ -0,0 +1,107 @@ +/* jshint esversion: 9 */ +/** + * Warehouse Relation Manage : 仓库关系管理 +POST /add +接收仓添加 + +POST /all +仓库结构关系图 + +POST /channel/add +渠道仓添加 + +POST /channel/detail +渠道仓添加页面详情 + +POST /detail +接收仓添加页面详情 + +POST /interline/add +中转仓添加 + +POST /interline/detail +中转仓添加页面详情 + +POST /setting/all +租户配置比率关系图(租户级) + +POST /setting/ratio +设置仓库比例值(租户级) + + * + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/stock/v1/warehouse/relation', + items: [ + /** 仓库关系添加 */ + { key: 'addWarehouseStructuresRelation', url: '/add', method: 'post' }, + { key: 'getWarehouseStructuresDetail', url: '/all', method: 'post' }, + + /** 渠道仓关系添加 */ + { + key: 'addWarehouseStructuresChannel', + url: '/channel/add', + method: 'post', + }, + /** 渠道仓关系详情 */ + { + key: 'getWarehouseStructuresChannelDetail', + url: '/channel/detail', + method: 'post', + }, + /** 接收仓关系详情 */ + { + key: 'getWarehouseStructureslReceiveDetail', + url: '/detail', + method: 'post', + }, + + /** 中转虚仓关系添加 */ + { + key: 'addWarehouseStructuresInterline', + url: '/interline/add', + method: 'post', + }, + /** 中转虚仓关系详情 */ + { + key: 'getWarehouseStructureslInterlineDetail', + url: '/interline/detail', + method: 'post', + }, + /** 中转仓取消渠道仓关系校验 */ + { + key: 'checkoutWarehouseCancelChannel', + url: '/cancel/channel', + method: 'post', + }, + + /** 根据供货仓及接货仓类型获取有效的接收仓列表 */ + { + key: 'getReceiveWarehouse', + url: '/query/receive/warehouse', + method: 'post', + }, + + /** 租户配置比率关系图(租户级) */ + { + key: 'addWarehouseStructuresAll', + url: '/setting/all', + method: 'post', + }, + + /** 设置仓库比例值 */ + { + key: 'addWarehouseStructuresRatio', + url: '/setting/ratio', + method: 'post', + }, + // 查询出供应仓对应的接收仓列表 + { key: 'getWarehouserBySupport', url: '/warehouse-by-support', method: 'POST' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/strategyApi/index.js b/front-end/src/api/strategyApi/index.js new file mode 100644 index 0000000..dc7a656 --- /dev/null +++ b/front-end/src/api/strategyApi/index.js @@ -0,0 +1,28 @@ +/* + * @Author: your name + * @Date: 2021-10-28 20:58:01 + * @LastEditTime: 2021-11-11 17:07:55 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\strategyApi\index.js + */ +/* + * @Author: your name + * @Date: 2021-08-06 13:55:19 + * @LastEditTime: 2021-09-08 17:10:17 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\stockApi\index.js + */ +/* jshint esversion: 9 */ +/** + * 模块接口 + */ + + import marketingAuditApi from './marketingAuditApi'; + import sourceApi from './sourceApi'; + + export default { + ...marketingAuditApi, + ...sourceApi, + }; diff --git a/front-end/src/api/strategyApi/marketingAuditApi.js b/front-end/src/api/strategyApi/marketingAuditApi.js new file mode 100644 index 0000000..016e59f --- /dev/null +++ b/front-end/src/api/strategyApi/marketingAuditApi.js @@ -0,0 +1,47 @@ +/* + * @Author: your name + * @Date: 2021-10-28 20:58:39 + * @LastEditTime: 2021-11-01 17:26:54 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\strategyApi\marketingAuditApi.js + */ +/** + * Postage Template : 销售审核策略 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: 'sord/v1', + items: [ + /** 订单审核列表 */ + { key: 'getOrderAuditSetting', url: '/order-audit-setting', method: 'GET' }, + /** 删除订单审核 */ + { key: 'deleteOrderAuditSetting', url: '/order-audit-setting', method: 'DELETE' }, + /** 创建订单审核 */ + { key: 'addOrderAuditSetting', url: '/order-audit-setting', method: 'POST' }, + /** 修改订单审核 */ + { key: 'putOrderAuditSetting', url: '/order-audit-setting', method: 'PUT' }, + /** 订单审核明细 */ + { key: 'getOrderAuditSettingDetail', url: '/order-audit-setting/{id}', method: 'GET' }, + + /** + * 商品行部分 + */ + + /** 获取商品行审核列表 */ + { key: 'getGoodLineAuditSetting', url: '/goods-line-audit-setting', method: 'GET' }, + /** 创建商品行审核 */ + { key: 'addGoodLineAuditSetting', url: '/goods-line-audit-setting', method: 'POST' }, + /** 删除商品行审核 */ + { key: 'deleteGoodLineAuditSetting', url: '/goods-line-audit-setting', method: 'DELETE' }, + /** 修改商品行审核 */ + { key: 'putGoodLineAuditSetting', url: '/goods-line-audit-setting', method: 'PUT' }, + /** 商品行审核明细 */ + { key: 'getGoodLineAuditSettingDetail', url: '/goods-line-audit-setting/{id}', method: 'GET' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/strategyApi/sourceApi.js b/front-end/src/api/strategyApi/sourceApi.js new file mode 100644 index 0000000..170c192 --- /dev/null +++ b/front-end/src/api/strategyApi/sourceApi.js @@ -0,0 +1,32 @@ +/* + * @Author: your name + * @Date: 2021-10-28 20:58:39 + * @LastEditTime: 2021-11-17 17:27:14 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\api\strategyApi\marketingAuditApi.js + */ +/** + * Postage Template : 寻源策略 + * + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: 'sord/v1', + items: [ + /** 删除单品发包设置 */ + { key: 'deletePackageSettingSingleGoods', url: '/package-setting-single-goods', method: 'DELETE' }, + /** 单品发包列表 */ + { key: 'getPackageSettingSingleGoods', url: '/package-setting-single-goods', method: 'GET' }, + /** 创建单品发包设置 */ + { key: 'addPackageSettingSingleGoods', url: '/package-setting-single-goods', method: 'POST' }, + /** 修改单品发包设置 */ + { key: '', url: '/package-setting-single-goods', method: 'PUT' }, + // /** 单品发包设置明细 */ + { key: '', url: '/package-setting-single-goods/{id}', method: 'GET' }, + ], +}; +export default { + ...generate(config), +}; diff --git a/front-end/src/api/tagsApi/index.js b/front-end/src/api/tagsApi/index.js new file mode 100644 index 0000000..5e27e81 --- /dev/null +++ b/front-end/src/api/tagsApi/index.js @@ -0,0 +1,34 @@ +/** + * 示例 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: 'tags/v1/labels', + items: [ + /** + * 分页 + */ + { key: 'getLabels', url: '', method: 'GET' }, + /** + * 新增 + */ + { key: 'addLabels', url: '', method: 'POST' }, + /** + * 修改 + */ + { key: 'updateLabels', url: '', method: 'PUT' }, + /** + * 状态 + */ + { key: 'operationLabels', url: '/batch/update/status', method: 'PUT' }, + /** + * 批量删除 + */ + { key: 'batchDeleteLabels', url: '/batch/remove', method: 'delete' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/tenantApi/index.js b/front-end/src/api/tenantApi/index.js new file mode 100644 index 0000000..3a20573 --- /dev/null +++ b/front-end/src/api/tenantApi/index.js @@ -0,0 +1,20 @@ +/** + * Tenant(Site Level) : 租户管理(平台级) + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/iam', + items: [ + // 租户列表 ///skyer/v1/users/self-tenants/page + { key: 'getTenants', url: '/v1/{organizationId}/tenants/paging-tenant', method: 'get' }, + { key: 'addTenants', url: '/v1/tenants-manager', method: 'POST' }, + { key: 'userTenants', url: '/v1/tenants-manager/assign-to-user', method: 'POST' }, + { key: 'detailTenants', url: '/v1/tenants-manager/', method: 'GET' }, + { key: 'updateTenants', url: '/v1/tenants-manager/', method: 'PUT' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/testApi.js b/front-end/src/api/testApi.js new file mode 100644 index 0000000..fc2986f --- /dev/null +++ b/front-end/src/api/testApi.js @@ -0,0 +1,78 @@ +/** + * 示例 + * 作者:匿名用户 + _ooOoo_ + o8888888o + 88" . "88 + (| -_- |) + O\ = /O + ____/`---'\____ + . ' \\| | `. + / \\||| : ||| \ + / _||||| -:- |||||- \ + | | \\\ - / | | + | \_| ''\---/'' | | + \ .-\__ `-` ___/-. / + ___`. .' /--.--\ `. . __ + ."" '< `.___\_<|>_/___.' >'"". + | | : `- \`.;`\ _ /`;.`/ - ` : | | + \ \ `-. \_ __\ /__ _/ .-` / / + ======`-.____`-.___\_____/___.-`____.-'====== + `=---=' + + ............................................. + 佛祖保佑 永无BUG + 佛曰: + 写字楼里写字间,写字间里程序员; + 程序人员写程序,又拿程序换酒钱。 + 酒醒只在网上坐,酒醉还来网下眠; + 酒醉酒醒日复日,网上网下年复年。 + 但愿老死电脑间,不愿鞠躬老板前; + 奔驰宝马贵者趣,公交自行程序员。 + 别人笑我忒疯癫,我笑自己命太贱; + 不见满街漂亮妹,哪个归得程序员? + + */ + +/** + * @description API 配置 + * config.prefix : API url前缀 + * config.items[n].key : 别名,调用此接口时用到,如 testApi.transactionList(API_DATA).then(res=>{}) + * config.items[n].url : API url + * 如果链接以 / 结尾,兼容rest风格(请求参数拼接在路径上) + * 带{key}花括号 , 把value = data[key] 替换到url上{key}里,并删除data.key + * config.items[n].method: + * config.items[n].type : 强制传参方式:query / body; 为空,按method方式对应默认:get=>query,其它=>body + * config.items[n].loadingHide : 请求不显示loading动画; 为空,显示loading + * + * 特殊:(在url的{}替换后) 如果存在data.BjBody , 则执行 data=data.BjBody + */ +import { generate } from '@/utils/request'; +const config = { + prefix: '', + items: [ + /** + * 示例 + * @organizationId : 0 + */ + { + key: 'transactionList', + url: '/iam/skyer/v1/{organizationId}/users/paging', + method: 'get', + type: 'query', + loadingHide: true, + }, + { + key: 'getBillJdExcel', + url: '/simp/v1/0/template/SFIN.BILL_JD/excel', + method: 'get', + type: 'query', + loadingHide: true, + rType: 2, + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/userApi/index.js b/front-end/src/api/userApi/index.js new file mode 100644 index 0000000..4ce4df8 --- /dev/null +++ b/front-end/src/api/userApi/index.js @@ -0,0 +1,264 @@ +/** + * 示例 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/iam', + items: [ + // 用户信息 + { key: 'getUserInfo', url: '/skyer/v1/users/self', method: 'get' }, + // 用户菜单权限 获取当前用户树形菜单 + { + key: 'getUserMenuTree', + url: '/v1/sys/menu/manage/user/tree', + method: 'get', + loadingHide: true, + }, + // 初始化菜单(仅第一次调用) + { + key: 'initMenuTree', + url: '/v1/sys/menu/manage/menu/init', + method: 'POST', + }, + // 创建菜单 + { + key: 'addMenuTree', + url: '/v1/sys/menu/manage/menu/create', + method: 'POST', + }, + // 删除菜单 + { + key: 'deleteMenuTree', + url: '/v1/sys/menu/manage/menu/delete', + method: 'POST', + }, + // 批量删除菜单 + { + key: 'batchDeleteMenuTree', + url: '/v1/sys/menu/manage/menu/batch/delete', + method: 'POST', + }, + // 修改菜单 + { + key: 'updateMenuTree', + url: '/v1/sys/menu/manage/menu/update', + method: 'POST', + }, + + /** + * 用户管理-分页查询 + * @organizationId : 0 + */ + { key: 'getUserList', url: '/skyer/v1/{organizationId}/users/paging', method: 'get' }, + /** + * 用户管理-修改密码 + * @organizationId : 0 + * @userId : 194783206599467008 + */ + { + key: 'adminUpdatePassword', + url: '/skyer/v1/{organizationId}/users/{userId}/admin-password', + method: 'PUT', + type: 'BODY', + }, + /** + * 用户管理-创建用户 + * @organizationId : 0 + */ + { + key: 'createUser', + url: '/skyer/v1/{organizationId}/users', + method: 'POST', + }, + + /** + * 用户管理-根据id查询用户信息 + * @organizationId : 0 + * @userId + */ + { + key: 'getUserInfoById', + url: '/skyer/v1/{organizationId}/users/{userId}/info', + method: 'GET', + }, + + /** + * 用户管理- 子账户 - 根据id查询所有分配给用户的角色 + * @organizationId : 0 + * @userId + */ + { + key: 'getUserAllRolesById', + url: '/skyer/v1/{organizationId}/member-roles/user-all-roles/{userId}', + method: 'GET', + }, + /** + * 用户管理- 角色管理 - 批量删除用户的角色 + * @organizationId : 0 + * @userId + */ + { + key: 'deleteUserRoles', + url: '/skyer/v1/{organizationId}/member-roles/batch-delete', + method: 'DELETE', + }, + /** + * 用户管理- 角色管理 - 批量分配成员角色 + * @organizationId : 0 + * @userId + */ + { + key: 'addUserRoles', + url: '/skyer/v1/{organizationId}/member-roles/batch-assign', + method: 'POST', + }, + + /** + * 用户管理 - 修改用户 + * @organizationId : 0 + */ + { + key: 'updateUserInfo', + url: '/skyer/v1/{organizationId}/users', + method: 'PUT', + type: 'BODY', + }, + + /** *************** 个人中心 ******************* */ + + /** + * 登录用户 - 修改自己的密 + { + "organizationId": 0, + "originalPassword": "string", + "password": "string" + } + */ + { + key: 'updateMyPassword', + url: '/skyer/v1/users/password', + method: 'PUT', + type: 'BODY', + }, + /** + * 登录用户 - 更改名称 + * @realName + */ + { + key: 'updateMyRealName', + url: '/skyer/v1/users/real-name', + method: 'PUT', + type: 'Query', + }, + /** + * 登录用户 - 更改头像 + * @avatar + */ + { + key: 'updateMyAvatar', + url: '/skyer/v1/users/avatar', + method: 'PUT', + type: 'Query', + }, + /** + * 登录用户 - 前置密码校验 + * @password + * @ResponseBody {lastCheckKey} + */ + { + key: 'checkMyPassword', + url: '/skyer/v1/users/password/pre-validate', + method: 'GET', + }, + /** + * 登录用户 - 给新手机号发送验证码 + * @lastCheckKey + * @phone + * @ResponseBody "captchaKey", "message" , "interval": 60 + */ + { + key: 'sendCaptchaByPhone', + url: '/skyer/v1/users/phone-new/send-captcha', + method: 'GET', + }, + /** + * 登录用户 - 新手机号验证码验证并修改手机 + * @lastCheckKey 前置密码校验返回的 + * @captchaKey 给新手机号发送验证码返回的 + * @captcha 手机接收的验证码 + * @phone 手机号 + */ + { + key: 'checkCaptchaByPhone', + url: '/skyer/v1/users/phone-new/validate-captcha', + method: 'GET', + }, + + /** + * 登录用户 - 给新邮箱发送验证码 + * @lastCheckKey + * @email + * @ResponseBody "captchaKey", "message" , "interval": 60 + */ + { + key: 'sendCaptchaByEmail', + url: '/skyer/v1/users/email-new/send-captcha', + method: 'GET', + }, + /** + * 登录用户 - 新邮箱验证码验证并修改邮箱 + * @lastCheckKey 前置密码校验返回的 + * @captchaKey 给新邮箱发送验证码返回的 + * @captcha 邮箱接收的验证码 + * @email 邮箱号 + */ + { + key: 'checkCaptchaByEmail', + url: '/skyer/v1/users/email-new/validate-captcha', + method: 'GET', + }, + /** + * 查询用户公司的 ids + */ + { + key: 'getUserCompany', + url: '/skyer/v1/users/{userId}/company', + method: 'GET', + }, + // 启用用户 + { + key: 'userNnfrozen', + url: '/skyer/v1/{organizationId}/users/{userId}/unfrozen', + method: 'POST', + }, + // 禁用用户 + { + key: 'userFrozen', + url: '/skyer/v1/{organizationId}/users/{userId}/frozen', + method: 'POST', + }, + // 锁定用户 + { + key: 'userLocked', + url: '/skyer/v1/{organizationId}/users/{userId}/locked', + method: 'POST', + }, + // 解锁用户 + { + key: 'userUnlocked', + url: '/skyer/v1/{organizationId}/users/{userId}/unlocked', + method: 'POST', + }, + // 删除用户 + { + key: 'deleteUser', + url: '/skyer/v1/{organizationId}/users/{userId}/delete', + method: 'DELETE', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/userGroupApi/index.js b/front-end/src/api/userGroupApi/index.js new file mode 100644 index 0000000..cd43046 --- /dev/null +++ b/front-end/src/api/userGroupApi/index.js @@ -0,0 +1,142 @@ +/** + * 示例 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/iam', + items: [ + /** + * 用户组管理 - 用户组列表 + * @organizationId : 0 + */ + { + key: 'getUserGroupList', + url: '/v1/{organizationId}/user-groups', + method: 'GET', + }, + /** + * 用户组管理 - 创建 + * @organizationId : 0 + */ + { + key: 'createUserGroup', + url: '/v1/{organizationId}/user-groups', + method: 'POST', + }, + /** + * 用户组管理 - 修改 + * @organizationId : 0 + */ + { + key: 'updateUserGroup', + url: '/v1/{organizationId}/user-groups', + method: 'PUT', + }, + /** + * 用户组管理 - 删除 + * @organizationId : 0 + */ + { + key: 'deleteUserGroup', + url: '/v1/{organizationId}/user-groups', + method: 'DELETE', + }, + /** + * 用户组管理 - 用户组明细 + * @organizationId : 0 + * @userGroupId + */ + { + key: 'getUserGroupInfo', + url: '/v1/{organizationId}/user-groups/details/{userGroupId}', + method: 'GET', + }, + /** *****************一个用户组 对应的 用户列表******************************** */ + /** + * 用户组管理 - 用户分配列表 + * @organizationId : 0 + * @userGroupId + */ + { + key: 'getUserListByGroupId', + url: '/v1/{organizationId}/user-groups/{userGroupId}/users', + method: 'GET', + }, + /** + * 用户组管理 - 查询排除已经分配的用户列表 + * @organizationId : 0 + * @userGroupId + */ + { + key: 'getUserListByGroupIdExclude', + url: '/v1/{organizationId}/user-groups/{userGroupId}/users/exclude-users', + method: 'GET', + }, + /** + * 用户组管理 - 创建用户分配 + * @organizationId : 0 + * @userGroupId + */ + { + key: 'addUserListToGroupId', + url: '/v1/{organizationId}/user-groups/{userGroupId}/users', + method: 'POST', + }, + /** + * 用户组管理 - 删除用户分配 + * @organizationId : 0 + * @userGroupId + */ + { + key: 'deleteUserListToGroupId', + url: '/v1/{organizationId}/user-groups/{userGroupId}/users', + method: 'DELETE', + }, + /** ************** 一个用户 对应的 用户组列表***************************** */ + /** + * 用户组管理 - 用户组分配列表 + * @organizationId : 0 + * @userGroupId + */ + { + key: 'getUserGroupListByUserId', + url: '/v1/{organizationId}/{userId}/user-group-assigns', + method: 'GET', + }, + /** + * 用户组管理 - 查询排除已经分配的用户组列表 + * @organizationId : 0 + * @userGroupId + */ + { + key: 'getUserGroupListByUserIdExclude', + url: '/v1/{organizationId}/{userId}/user-group-assigns/exclude-groups', + method: 'GET', + }, + /** + * 用户组管理 - 创建用户组分配 + * @organizationId : 0 + * @userGroupId + */ + { + key: 'addUserGroupListToUserId', + url: '/v1/{organizationId}/{userId}/user-group-assigns', + method: 'POST', + }, + /** + * 用户组管理 - 删除用户组分配 + * @organizationId : 0 + * @userGroupId + */ + { + key: 'deleteUserGroupListToUserId', + url: '/v1/{organizationId}/{userId}/user-group-assigns', + method: 'DELETE', + }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/api/worksheetApi/index.js b/front-end/src/api/worksheetApi/index.js new file mode 100644 index 0000000..6c3dc89 --- /dev/null +++ b/front-end/src/api/worksheetApi/index.js @@ -0,0 +1,9 @@ +/** + * 渠道模块接口 + */ + +import serviceApi from './serviceApi'; + +export default { + ...serviceApi, +}; diff --git a/front-end/src/api/worksheetApi/serviceApi.js b/front-end/src/api/worksheetApi/serviceApi.js new file mode 100644 index 0000000..5702332 --- /dev/null +++ b/front-end/src/api/worksheetApi/serviceApi.js @@ -0,0 +1,23 @@ +/** + * goods-install-service : 安装服务管理 + */ + +import { generate } from '@/utils/request'; +const config = { + prefix: '/sgoo/v1/install-services', + items: [ + { key: 'addInstallServices', url: '', method: 'POST' }, + + { key: 'deleteInstallServices', url: '', method: 'DELETE' }, + + { key: 'DetailInstallServices', url: '/', method: 'GET' }, + + { key: 'getInstallServices', url: '', method: 'GET' }, + + { key: 'updateInstallServices', url: '', method: 'PUT' }, + ], +}; + +export default { + ...generate(config), +}; diff --git a/front-end/src/assets/401_images/401.gif b/front-end/src/assets/401_images/401.gif new file mode 100644 index 0000000000000000000000000000000000000000..cd6e0d9433421b3f29d0ec0c40f755e354728000 GIT binary patch literal 164227 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⋘jgFP=;s&56II*5tLII8*PlN8jx1nb5rMA@;htGb{z% zve2><;}yOubOr{5YaftlUuqy8r|o>kA;qejtE{ueLbnW3n0j!_zLM+XfD^AMUVGvQ zs}P_)1h$TeB5~k*IXhfJOx(AeZ|Q0Ax4h*Cf8H&Bm1`<*A&?!(h;qS1LlJTdyo{4a zhX)~fMUn%q^eHMa)mdlPR{nrfK?BbGyhs-zMc( z+Vp3#A1am_Mfp!_+kYe8{)=kc^L`Wx2Ru$wNSRp9DN4=yA!tFzapx2Qsff0eAn{W8 z&|4>52&Y$Yh__xJudZR7TCMU*BnyeMQ*KzXKl#T4B|mHiKMGz}*oM>(RzwcC?Tl9a zxc6PZ{?mQA>;&!zONQNqVU}Dw%E(jJg{_Ct{)2+U>^roj4~xL@DOV4LD-J?`hm8vC z%Dw0a-E(0Ne4fxddE$=NhSFPe?Q0U&2Tm+>Zsn5H+IWN#ewihgao{!QZZn)35*&>=fAf?}>!NZO63TX0YjSv+I(`#rGCgo6SD zsTnZiUf$EU7es9+yG1w;!$_F&`0m0e@^gakZKs8^6X7Xmie7d=pU%6*4$~u4Txr0ijuSyAHUDzv7)B?hg z23_hVXO`A!bKJx#S0}IoMI)Cy8WVpEEU_x65c37RK3j5+29mR`4f`#G1ES*M5255` zl4TVWzV_Vzupj!@NADMZ`Q>lkOXtOk5OgFz=*6iEZ?PoP8GYQGn;k<9D`C!DaGc{t z$tyiNj9A`l5mT@-2B)4Aja#T`cN*^bdy$~G&mu@$?vJ*X_BEYd+;NK$^tt+ZS;&gH zx~w$c+B2Gj`E`%lOuHj43We@Cj004Ks0AMvH5Y$`iK&6D9p7>?T7ZSS}-jLZX z_HdB6)DW-R&S|Xz1$I(+ycLn_Jy@KuiBPoWh{$w%#LHbws_W^f5%Ik*x2@Y32_847 z=)>AE@kdi5P)KDI3YU|UrIL~MyN38*4}ia;GD!0_FTXIc(`V{YObVYk4`#eSJLcIZzBXj+Cb$?tz!F($d5`e2~FXRh&j{eh8l zTW~Y4ga(v-`P3rpu}_a|_YGWZ<@m5;PY>)0Lf%p3C()-5;d1Pq?R_vB>^^MeQdCHF zab7L&CF{yg44g{BX~ePBylc^kl#47}2<7ky1nwLSf`k&shv=aQAjSz=uOz$TB*4X1 zw*#SlGJqJG?}q7-!1Q;NbEw94VStMORHB%)FczJghsLHzZRhn%D=W80$%~_KwYc?l zIJxQyNHO-;b+-SGxL{wXu`Hg4q`&@fscDciSl08%`<4}TCs=OnAMbQz#LmkhG)0J* zdA*n!hf}RoOidqG7WyrId}}uBJ-w)WFHF4i+$SLYP17_F&hCA;3&`*!K6KDaG+t%* ziLcOr;}^1G#dQsLvSo+X03Q#(;=?&Z1X-!vz*{D(@O8N2v(CdLi&tS`7kK;VJWE2F zVo@OjriBv|+J4xcLlCQY{xS@7#1H4b*z_JOT(MHIN&~NYjUDd0BgpXyk(fC1gJ`gg z+{Zsa3X9$-pP!FGV|k?y3hzpt%~fs{g^qZ?^;dez@X`H2hvdj7*&Y z#^#(IwO-IaOp$zr3KQbQ2@phtGKcc`Xb#GbH{*3;%oR7%yZRz46D*?Er0e?{?s~QF zwfOC3#nLCgF0zIzWZrNSqef1=;}b^gRnqv0Yes~Jk2*s%6p2xB3}Z)%6+p_PFA*jc zAO+KJnOz>X;Yd}y5!BlIBDvxftg~LJW+JjAxq2XgPOGUqtI-IpSv%)-{*Es+@a&%( zXtO^Ytmdg(^RvYSC=h7a?vIFyNlfzfk8=#7(bEs1sOrLKjH)aOS6nEk7>uVTWB^&8 z4MAMBczX#_e4_*NA13*3kHo)53hRHu&Ar`~wV7)taHfm_sTlYvmhTper$8(D@P;8TD9}p24Z4*_I!T~aC?0Uw zlbS^HjrUGWrl(sXBb9iC^YYx4^$ul}GBkD98JVDPOq_HrPJRn^-Tt!H6DlaQzJ1;1 zMr4Z~mVC0W->TO_{`{Y!r}`fhbz)bDoBj4L%TlwmkeVEyfrV`9U8GQ0(%p!<^6RH1>$ac zFf9b03CUlLo}njRp}biqjiJ3}%41^T!}BI=II;jZdd7yMi1=5!>yqo-*>aoieZ4Rz zd2Ow<7!IZWm?c%Gg~8LHsZIz-VXlrIT_wq05RS^Jj~i|JW)~vNquy!1AyX(wcONlK zOcKox6L(k)4fgRLpl;^Hn(k6iSck?2Y9wS;RuLmqgwbX=+~&sZXyHv!)u-At1KjJa z+@y^|+I#zC6vUexaNB$O|NB*)|3)~{a^M$JWIA_KI~$}^TdJLQkh}Tb4N6!VjtE^V zRX}82b|wMYuo8mdEF={g)KW^sA~IkbBE4nCGPwsjg&#?!hb3TQR~=-Q9XhF@@+iLG ze$COf7>zvZI0+ zQi&s6%1}{_AY6`FE1?4FDn8L7VGLV>p@P zlb-#R6+a^Im}H_b+GD3Wub$GvPQtb~q1+r15!^?q078%A*Mx*^=X|#hUbd4vMDQ^; zY-`Zt&1+>V9k+;ln18&V?+$x`_IoVh^COT5rCU~K*U#%-2+d(jpjVqDS)SkX+LG8- z!J19-l$VBZ*$zyw2Bos)*fwO1IM&e`St>17cf6}x?VKwn zrsvNRng4sxk;3TX>7HZ?0;d@vp>qxq&MDq2X9Pc)drTV9KdU+2Lk?4ZCCSw|cMjcH z8ak)jO;FP%i%H@>_KZqK+~&Gr9E&lKe?-Mz)s@ucm!b~wa2EtVjQbdoxAzD3RQh|= zxO(b{2U=x6K8~H&HSqlUJ%OL$u#(V@xP~PLvdl6JufAm-3{9~*UX@uV3ko=`lF4sx zTmx$2_L8oNg@|)86EmO5?%w{;$RE*ATUZ&1+Aou)ijLBvC4z6^GGwzDH6b@|%U(5J6>~JNhEslJ)n-(M6fY*n423C^ z=54G#S*3Dfw_M4oKYyC#e=^Y|Yzc~Sl+caYiQDSfwgHv3n;+dI7pl zI7ZF*GfxMNSzhm6P@ng_HUYO6r&xaCf)-{Bt~x+@w&`jQCi16#Wn##ELgKhxM?{4V zTXOt8NL)R$O4O?lPJMf1bru#0TQ&cpgeNUcY3{&0o|i7RZ613eTrT5(X1qmYSR`%m z`3chD?e+Ixv};GE+yd>wDAJw9&yLswQaG77JeHT7oMLVT6j2$O8`JI6fcjG$73+iv zEnJ$?{F}53|IQ#Oz8D*`0xcn8)O|+X7c7LgbG*8ngUN>=VJ7Kh3O!v+LZVHN@jfsW z%@3O}?D_NPI^cyPkvZnvHwE&^$WgdpKI_RkO&Py~eM# zId*DXoWTq(rJIrLL*@`NCcn~$tI=NCdxh+OHDoSosUO8FuEI`ZjQJ)QAd0A4a-KdB?rrp47%i(x!Tr5s*&Zp&cE zaAyY)47_jT>(?S-)Nbxr)0}m7^p~T;$gI_KXK%hHu4n(W?l3GJHV6a%X>fgZ{0l}O z|3>nVqW`noPMsgu)s0($?u~CG>T=xj5)%Ny9a`5dq<%Q8Wg?LY0Lv>O6Cu?!eXKxO61TqJvg~H4vHD48-H(#qEaCX99 z`euZk3NOdE+Ufu-mcti@1v=5?@iGrvlJ^YB3tHwA&C42qJNB>!XwQY(Dg!#4=g7kX zWiCwpW*dPD_~mjQRDG!SyvXUNBGQ*Ph~7E1qG(;o-PtPDbEA}>KZizoW%l#EJ zpLs0X6Z;VTELFEL=bcUR%&`WZ^5BpS_ggT#1=Y2LTS=9Pjm7b89qXF!nx`yYZ-f}b z*Z=DX2H6g*rARkK#FDZz%uMqN#U0&?NI^<_q{A60!l^a1aI_MC|*XdL^5YKrX+ai6QS(3l}erb1RpG GY5fOuZZib{ literal 0 HcmV?d00001 diff --git a/front-end/src/assets/404_images/404.png b/front-end/src/assets/404_images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8e2305cc973ad2121403aee4bf08728f76c461 GIT binary patch literal 98071 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
Uu4Um7DAUpfcjI28Sm@@eQW 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 literal 0 HcmV?d00001 diff --git a/front-end/src/assets/404_images/404_cloud.png b/front-end/src/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/front-end/src/assets/custom-theme/fonts/element-icons.ttf b/front-end/src/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} \ No newline at end of file diff --git a/front-end/src/assets/image/contact-phone-white.png b/front-end/src/assets/image/contact-phone-white.png new file mode 100644 index 0000000000000000000000000000000000000000..137b05f4ae947a99387589dd91aedf54d99c3615 GIT binary patch literal 1555 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 Ef@q$j#{d8T literal 0 HcmV?d00001 diff --git a/front-end/src/assets/image/contact-wx-white.png b/front-end/src/assets/image/contact-wx-white.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cffc3cd04e6d97316ef5c98dc02dd19d9fe012 GIT binary patch literal 1650 zcmV-&295cNP)Px*EJ;K`R9HvNnR%#HRT#y8%Zlci=Gg|L0m?#)up%w=kBlao37P{<{U?(KC?PAN z)P_GAi7bo;GHE1DiEJRtqC!oq)S>|_8Z;=~u}#rr+R>jXi4 z;R|p{Qc5Z92V4Q12^<*jCg5w}E8v&-Zfjs4U=Ob=zWW?_7I;9?7bzuwue|6c9E|{D zfPRwJq?8<;Yk|umO3Q#3fY%~ID}gm$L`2BrZUpQQ5k3VN3G59xx(@+&NLrCn@^fqR zyLF�oK5s1>6hl0xSk@0cJ}2+0Qi%oF~f9q?EP+P6ciP4g$UdMoD_66Ubfwol=KA zUYY<*1il4skMyjH1yn0{Nj8DZX#`wzRfJPYTSS?R2X+N+1SUnMs=3Q3_5fI{*2VrH zZ~^cEaK5BPIkEw&$3R`yvgfPPnNk`6JP8a0o&YYFw7Q;^7QmRiA}jC+a53;4aH-js zQrftzv%UZ|{XIut(x0IQ4+Ccaj{%o>@u3)h--}wwsddO*XHPqVlKybIoq~T0s@;2e z%#_k55y7)vpOPl#GHU@W9zF+{4!j49khHRVxIR(V$6}$4Y-|9TgJQP73=9I!mGo4` z#K8jRo!orb-%9VT-}~1B-wqz)_MaDJkV6 zlPDNy=8Xc526hYaHb6Vdo4|d+`d+fpkm_o#kf8a%0l)xBOEbVpz;(bylBU&DTQJ7t!$WB+0>I;F#f!icaFzl^@6xO~YLsD8RFC&>!x+fy% z`m*?X;tVQ(mvI>Q^^$JwM6@<4;zs1du*5+IcoHzntCcjmUVFvLEZWlm*QGUaDX@L~ zWRUJ)eA&A*frd$%(0e)Jxh;k&)28G@xZ~r+yLzQ8y5EW zI$%}sHA~X4vMXvzb)hKsY&RoSik}Bgb2A|6`&vqK@w(qz09aIgeFB`&2H=UnmVg1e z_4+uh^3EV$$3C!7l%1oQm|=kKP+Wig?HV=uXN?>Vyi_AZyA=NjEDUlOq)Wk(H0Xtr zz6sUn*ad~Vc>GlcXnAl$Fr?15BIH9Nm6@@1_GW_2i)Qw)uuD5bX1nKk)hZxqK_~kR z)v#O*ti%U+Mbe0RZ4@Cl8LW}Eq>{Dy6{pUB_ZHyl09OU8h5gu0{El}nGE*{}6pudqWm5;ue$I`y6Q-9shKE}5Lc z7M@>OUB_mj1Q_*_cXR&Oic<7*?h9RyUbMBb+9bu@zuU)MU)~dsuenwxV{R5q-oah9 zTSYB4IzW-0ZQUw)vsGAQPO<0n#IC*fOR;Wjw<0QiHmvnXw)j1v+T6aZ;G<1wzRR4_om5bH~(y!a^c5A>$L6c253zMdYot#!D-%h7Ax6sH}2VP z0_^%c`Y_`k1y1kt=%e(+l+yY*Jo0wIheq8U9<@oe1^K@^e!DUbMAz;3trTQ4Fo?5Z w9bh(q+^~*-YtqmX-VN#yy$#6!<=+s00S0luy#+(!VE_OC07*qoM6N<$f*bA`JOBUy literal 0 HcmV?d00001 diff --git a/front-end/src/assets/image/contact-wx.png b/front-end/src/assets/image/contact-wx.png new file mode 100644 index 0000000000000000000000000000000000000000..179020c092b97eecd78a189f521aa9a097b8e4b1 GIT binary patch literal 2057 zcmV+k2=@1hP)Px+!%0LzR9HvNnR|>>cNND!=gvOamcq_#sqNAtYN=Qgr3NGhAuToVN88wkFEl2$ z7D=FGXGGX&TONr(%gzGQCe&)vw3sSt3Qc`9rP4IEmI$IzEJ%>Tvgvkbwgi~jb(#4c z^ZU)ccV}j2cL$BgO*VJ$-Ftuc`#a}+zvr<+6^E|IvyaJYj6G}Tgb7gd35?DLnT62YT?lrP9{>^U**K187}p&F)_6ingPy1KtJM$Ypg;%Hr;<@16)?0{2&PQQ$^! zVd5;T+piwSxxxEER{~cdJVa}Hz4Mg+?c%jc0EW9wwl<>uKLi#basZF7$nwDQ{r9yod!$MX=tz_lIC4}q-3lbwva zZjmhBf8M&=y5PS7Hq4^_n!5d_TC(r#!00`o4@;tNU9qbjzyN@Dw0sfF^N8$Ye8WPy zudA<8T!aMh^~|}>9;2|aVvGhxd8)OUGXuXybtZUUl0@%M156T$yz_E# zbs0syYcO5|5zUgTIUy^0GGVsx1%9m12)?BqvE?>T0b3=Je$Ziai*-(#ipd>DFBSKdK+btC=Qk zJ;w?FlP&8}vkLf{B+}27yEbIFeRy+p9R~ZX)j`X+VyW`4C4;B!w57M%C&m)7Z^zpzAN$c z_p7mF$ORiVCh{kj5*xgkqMgy3G3)_vnlRz+~T)dnA#bUtAT9M4Hfw$=GeE?nY=A?TEer+<~c?BrAH} zD{-k`4Ctn-rX%MM0=0$3y}u&$bB6&GZyqX5U@XA1pnq|xvZ-#9BitvKBYUFKM zmg;td7^4c(?bMQq9Rtl;3ufIe+fsAN**0YImN}@gt_&Dk&fWq+gg2peJH`gE$1jJ=NN3=7ci=Qk2hEgY6F0~bGW?L-E$M^SAqV{Pz? z1$PuvKN}fX;&OT6DBei$dj?^V#M8S*O{2+}O??YS1z7A3O-47PJm|C2YG82qACBCO zr-Cs%3()i+BE7(^KGr`YUN@=>LHZDxCGp;)Be`2cfXQeUl>@|wyEsT$u7KSbyP8_v z>-QqIvT==+@Ah|*#*d)`yFouwxEonQy}rPJIay%2e2WIz#eg{u)Fa*&iT5raF{Oqs zPDT%djH^VF&_sS-){f{_U|EqBEzk%eFF~XollvV))PJuVxq!lsblGdVTamHI)f2j?=G zsYhtpLzAqQM zxUx`>k?Klx(ROBiedo$+y)Ydnqw7$<=chwUq{?lry(`=zZRuA_@_rafe$F>G)s0as z43i$ek9GHV`b0V88t|MxJ*9#7&%K1|&3-{)p;(P9Kq};Mn~ffoM0#aO)(VosP_dAu z!JAc8xfRCZC>bDh&xVOtQ0Hv`xffMGHI`_iO$>7-p88|4SPxa!W#yI&jw%Y)a!Xda zE-7j|TnWDbktr@lh3-OQ#C(X%k;Hp%grEX)*q%8vcmUN8g$3({l>AkJESlvE3lH1D z^`E#C!+s~yfm?&v+Z1aNc9;_2lM+ketDRRz?a?QjTTI_l2;bfJWJLHlVN`MhhI z`b(N7=i=a@3v4^90a^m4Y@!t!XSBAnNQ?_JnTy`IQ%g2BdgC6X8wd7cjy|?ey@Jfy zr&06yF-IT8IZ-dh@Mu%?20YnO_3&tztN)kdx6I&TRP8|Y!p3jKf*ej)FSP+?MUa=; n2)INVF4ZCWFp&SJe?$Bm&L~yL-)i`q00000NkvXXu0mjf>eb)Y literal 0 HcmV?d00001 diff --git a/front-end/src/assets/image/favicon.png b/front-end/src/assets/image/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6d8196446d0ae7ae9060a1bd9d36fc6f54fefca7 GIT binary patch literal 2268 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¥}>uauIoY!`8n(7niSl_m2d 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

LZs5vs<4*dn)6_orH;Y;`bzi*q=#N#x6 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

8A%Us3k< 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𝔫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

&!CIz1Ns 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⩛TtXwH2N8q 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

Wf@+FD?DGvA4he?g#aN51zy(O$Xy! z?jQSAXPqX%mP6S3SLHaVl82{yT@XXaJz?PDS^57ppW4ws_W0NFQGq6&Hch(d=d;_| zi)DM`ZvT;Ip1Fs+)X z8DN!f%pO77Lk90ma73z+?Q#k0H}p(X=TbRtt@d49rvzT+-F_5&&WLDDn8M0x%~L$U zYg5np)c@a3#$o!otXN(?xCdzl-?0{W5P1AgfA@;>!QXTdUWSYZex>@1 z<9YrAgevsMM(U&r+ED~sXD@7CK7aacxdHsbOQ|9=fB!71e=2F*07)}t5P}ywsC&vA zg`S^0$35-M3@bHtmG2cIx&1k&U)l_1`1%4O5YA6qK|`qSXcQ7i-JwY|q$q#rLBkcD}H{`XZkG ztUILS0y`?WFs0f~m#(3gE)jfw)^8yx14;{K5|abh>KyOsYP&r~k?6d&KWGL>z;$>w zT`R}_uO}epI5c`1>zVOROWgGgZ6CjRp^+1Hq_wpG^d5D4(J=Z5QEP4TmKxLZ?YPDm{MoYDT3~2{qlIW z*KA<_Si(*6HMeI`*ncks^;$=*K4jW*aU;@!juX~R&^;tLGz<)$d|KvYFzg210-u_k-f5XAI{;3Zg8c!=X>F2i|&t#iZ z+}@_4E?z=khDrn;y0!K$3_Fw6OC-IuUgP&@E^OV9^<&y!9)C@K(mC72;ErM>N{w8) zb!huK$69ziU3`bNTdaO1d)6ugvwege>vUIxIN_LPY;6AvQ;qFm^BenTYZl0gL0wWszr%dZiQ7$^3 zLi!)JDO%GRT^noCe5krsF*w~h6YhTB-u}%0YyxbH7VD0BOTlN{={J%H0g%gwIWVVD zF+IWPt_ogFZ+!>!Rs69?1dOVY(fV@t?=(73-Z;P10uPVlwz;g2y6#%j`1m>-?iGKj zX}b2z0Np|d;TeFnx3=TsK%3hvI9j&^v@w88Q#J-c)Lf-jFlj4OP(cfq>1RCNqn4ju zYV7@rMYGnQ9_Fo`W@z`%=WSv>RTr*DT59{6A9Kcx(bq^Nb8F}}R@#jMPEQUt*p7ds z87TeoXK8KD0GSnAI`h7BImF(R*Xp1QwY&7cax03y1rgAe4WgOseL-qSi)dZ52dJe8 zfk1>4o7q+W!53$LJjI23J+?o;u1DnK`XEVOYc4U&(GQ1vB188ez5}8O#*`Fi#cg_Z zyaM`TOvp<7Ckr*;Q`=42uOGj`@*G>m&FH}L@z)7j&*&HSqmF00+JCRhI6k8}e-mlF zU5@HSh%cfE%ce7w2)y*(dDmFs$3fc`#EM> z$?FZAbK5y=>o93!5(DrwvG7MA@HG3ih|MAfm`8?m_jSG_+V291x?m%eOoGI4_h9DP_!cal_}EB#?DS>~2W z?r5Rdkm^b_!31@N1Zla_Pp^iLHM+aPJq?g4Ms{Y(p=49)TXcaQinTdWO$Yy4je%iP z7jE034^U`&l)vd@rIv3pjrMjZy#;Nwd*vpqW7bOKTCwr&#q~dBD%rYgGwF=996VLC z+>0wuF2|ihafMOuWg4ldNjwY6H)gQ&JM(TEf&Y3V0Vzz&*P|F!`o4(fkI@(%paVabT}3o&rJXYzihVb-w7lNBJb$ZH+A8mo;ee z$95>GTr9x6p7vWIGQfR4#{ntOoB~?>jgsR$Jd!{CULFl`LFZ9MKVk6rp~y_rM5kbdl+RTy!@w|w`d_MC-Xz*_C^mDWUSl>LwqIMe zI6Pik+FinL&BX5~DW-%o}_k2nV+;NzeWNCeC;r>-0l6B3UoD;cSNdomL5t7Ce-xOvNx^%{O~Bu=KccF zTV!W^@gCJt6scHvZ|MH>`gr^1JPn4;S|QrBSx}9Y@%S$V;F6{DTU85*u+5vHDXjdh-3ASihp&a)I2%U(kj4# z*{o{KT7y<>Mh4>BCcB)bSCu?PmQgLk}8kt^NhIcpE4-aYK&O}f#s{59=ys+vCCHjrNkF6jrOsMtue4;9uz#j){9E?5GXV{xF{{;x2<38=nMoc6^ArakExGwSjpSu)EnO5Ppma* z?-UyS1MS9X${-%FYC1L8BxO&SEQGEeu&z2QroTMa`WpcDs^ykGm!BaUzut zSh4z?gZUcO<;~s>+oKfr51EGlOvLk0{ajS%Efl5~Lur#)gyh|nN?MUUJ%^5Tv$j$@ zAMow3A+g5{JMvbqTT5A5v@jRl!CTo|Q=dCA(lvG+6kEA>J6}F68F+n5&bK0_s3`GM0d2&DuhdLz+06O1!MGmj zuCI29V18wW_Y|LMb#!0(=Gskx_XWNzrnSkAqe2})l~}9{JHhSryIbmG70+*DS0UQ& zC*;d<)5sofMr8gwPU{eQdTh~oBDY7BvV~FZ#!Z&V8$89#%DEz8cN_aSK1k+G`378n z8gLr8-SUJ-9dA^s2-?%m`v0t|!2_4Mdh0kbq*Dv=t*4R3Z4wju6l=j?c%>bWc$wjl z4fbiOL|wMDFBLk8io)-}0?T^-1I(R8dPYFKq;;TLWu>J{Clqj;+(UR=K?TPqkQ&&o zLrMU1$^LkkyWlqvQgEVeHwnLYao4fXd<>i1))q2R2g)r4r>>ml9EhE}{`^ZVQ-o8b zDjy!(-CN9F^~BA zk~!!nNaK8^F8V3-TB(nZdbEhzxIm7ZSk!ebkRXq1 zHS9N`+V8T!a|r^VpiG46vRExWQzzl=dD|br?m?P7kru;}-!EBvCLJJT^^|4Gp6+_> z?~Q<-&mx9wN=|Vtw83Q}R}d-|n3;l&%;s7t^cu%c3x{v>0v0|qPp5we>Ck_S1ZU|A zZ|mI>b785aF038TY|67#Eh#k$3tRK&*H0p`V#PS-X=7=&j4+HH&Qi* zo;_Rmm!>#w`#1yFhLZOvGV$V_Ib&5iJeouwbiT5>VBJ zQ$ZV*rv{MDvJBT%920XP5xQ1#4SzyUBMmt2S!q1ph2JhJ{;tB<#KQimG~f0S8;{E2 z6rLa(Dv*W70CD=Z#A-vvs*}2}2H%8FFg{vEtRxFHa2MFqd^-Z9vC@k z5%&qw34B6{sGV9i&)!S>*T$IJTM!fqLGU^e7vj{X#Cs0xEma;Mh8&9<$_@d_oU>sG+^Qb%$lho zy#!tKO=g1>yqAoIdaOBl(&=6MyeVrNyJbUExNDZDSXNct4ixZmw}%kVH>_Oi0_1BR zCo@j*Q!cT~ng(Oas1{3;I%!ujX#F@NdO1~oj}lvN9r7_{Z{`a+W);cDwcp#iBVEb) zQstJDBf5%1wD|m9wAp3kkHffhzR~GTSyb?V=e~eS1fsd}yS&#G7c0XsW;^R|XtV_y zre)i}Yn%3pcGx4h=Arf3(kPj}?8TlN`K5&4 z1y-7RbY)ZIS8#z%b$!JsPC59UMg9VsfgI(%$39HEi^_*wvmfQVq|*fgXhbuNQyO3T zI8?>=(}AT6D?K#Dj*fo$cm=3V&=SfBOXn9?^)q*`Z3 zc7A7RF>eScV*)-enQ;Qp0EuK6T}T=i`bo)NJFol=O`-&`aJ{w7<{jR~tHt)6eF9%R z5~_fND8v5Y(#?1=$=6Q+!l62Q{tCMi01zKshjw<&G`sZI6qC3vZ-AgPNeoahO z0>IC0aoWNN>n;?F-u|Nn1SeN|c9gfv<6mjKyrIWo47M@wMrM6tetpaC;Ugg&bxq#S zA8FexShG60wGuGR9$@+W)sKelnL3CNeO(x(jR6YIVueW|Va^jixuA-NAvNMG&%)3c z+?#6j5)6TR$m(jED#4N)LT-7L!i#26eE(+*9L(M0iq-6D>BDDud93jbs<83nX|{#e zwkBPj2Z1BLhPeq6G6uJP6T=!<&_-WEKD2e}Q-WVn#H(do!8`n^4wxrM&?2EcY=U{Qf_Cyb zhD#T8>r#GpZ;(yKKUq<$!8-xd4V`QwC4I^H(HO@qVh;n2loOWzW>-~?E)!>pVtR#@ z(lxwRR6-qYExrST9b^1;j-5t1hgO=qC=9LqfjNSA8N&{?f6 zU+JpPFv7o30za!)=Kyk~_W_X)RAiqzcoxm_ZDy+Tco=WN;oOb&+_YKxC|WoX;JE~_ zCxn93C1a|YNe>?zSkmu#Z z;Sj!rUExBbO)j0)D+97!RGo)uED5W4qbaAQ6hCL|K*|yxZF?x>GT+>idw7VP%S720 z_#uiA6zOtvWs=GVR{87MoL$!hP5AWdxbA-^(Yy{=4fVwvRp#hv>5oMAjvc(bc5Noc zC*^w#B>P)jT`;6k8l_K#U?`kahs_?@o5OC)zh3jTF+w>2?<~x6Tn#8C2SP0!7sU}{IEO806pmFxZ*LNg_-zyG*IyxFPZz%P6JuAqTAJSBq072k;lGM2v|mUr~Vc$!M#OnWRG za10^O98&C|%r+c|KWVm6q?=m*;&eu|6afi)%ljWOS4?MrZ+=c|N>@`b)U1L>7m=|r z7C(C%8y&_nI%YRrdwtGa`0TJ{`uPp}>`ip{1GEQTe!CSjoz<*BghZc$8ivz=4%O0Z zPm)g-SY`o{xeavcX51^yb03ye(8)usa^K9njWIR@^q?|Iw^}SCB*2Q51+u4~dsY-& z`+)=>+n4uYNNEg8K5ETJirU-Y6g>Y9@p`Jm;{|l2pn{d}@h3S}*&7DHJ(b~w_&h_} zm)VBPc=dKA4{1iKVi>o$DBmk-;rCLFW-{FeXCi@dHr_;l zzHJRN)$V+MVOz*7yrLE!+{C{F-QQTRv^Rz5+L1==Qu|x0V!z$7D}vjRIyNQv#!UhC*q-Ket)Z^liW`W?{(Qc;x~$a zDvKCTd9+cY8|mDnDO8jQi3;68A7qYtBu*x_^RUh4R?O3 zB+(gyI3QVVXC-g@kMp&O zF5I!FtB#*fW{?UrJZIAvF|oTrsJeH~xbco6|dxqrAl7IycgDpOY(2CNU}|lsq9*az(busT zyi0y!Jnmk!WPr0IPb!>&M>I6tu1DLmMcHQBKn7H;G0n|WwWoWnU{m;$cS=PGO56^s zxA=~S+*tD;z~=AxH4XD54A!YOx{*Sn6V7V7(~*J_>FCVk-XSl*xLT%cECk5}NPtce z+xIk{vF?y*GyW)`4aLyTEx|?pXbu0ka;0sOmv+}eBYE_u2%947#Y+$M(5{56S*s5t zJGH=z+%n=Y5?1Nui{G47i3wRqAcqQprcIYwGqt4i2la$*d6W%L846xg!!_!zgk>Nd zi1oihMjBM1Bd0RznahLJl~)_Crn8|fRdt<#JHu3y(tiW~h{nu1z}7*UjHK9HG#zwr ziqyu<=4bgVF6g6~Bg~qPB`t@?2eq*8=;V`4TjIz}GFm~?P{f~)gNAs;>-7i3FBQ_& zax4YZW~(2J_}a%v3wjB*+QNZ((}q4%JCjY9`P>ABwj?sn4#@9BIRS}g8u*k|Dhw4| zZqTNQ={?8^)5(k~d14gf@56fd;mt61qjV#C@ZpuU0 z@RhXXbB5}xpQ{xsVGi8#BwOp(xllUW7ib0(Zm29z-Kyf@(P=C<6oPDLY;&Z~knJmI z_N@+mj$IT>>O=E7Z_-6tc-YT9;QcFJXwEVW7DxkzpZCa^vSrI7=AH#vD16U0zhZqs z4PY}73C9hKVW|eaV`^AKkdi1_#}cWI#EEjd-FNSsM19Em=$6N9hS99w2jvl{9Me{; zZZ&46P#oZkZ7LnFo%xaa(f9tj89Xy7%~q@dYTp$Hg)S^%CF{~F@<(v=xPOPIi~IxF z5i0m^;>ZngL~4oJQNeAx2?!p}2mwJrOMb)YGL%sT4gZFpd|Bdt>dD})&+*Jy-CO9a z`m!O}K5T@cH>JQsM2ycKKvE__f%_uq^5wDV`p?|*IwseCw39!^s|{1D1&J(`t%P5C zvE_C3^Tu2=+L_PfU_?}YM4Nzx6O+rz;Z{0^3I-3oyz=Zs^bK7HR8VFgRrGKS*&r3X znS;{Otky(cr+ZC#J8)qZv|oOU?-qkNb!FwXNAatw8V{%zCmKxbxF^|zYI0Ii&LPXu z6OKiwYC^H~XAi~dQJpOTz)>}OKzuRd~*4^?+@Oy$Cs zj?et-Xa~8m_tn&bMz|>yKEx|XwMLy~5xMo2{3gx@Fp(D#6B)@b*O*ro@KE8-3Aec&(!>k%F3r^w|^rlMDRpn`hXx4@r$#?F6G^Lf#Y$%6{s zKn16}L(6501x`?|)Mx~G&KoY56mH1ZJ-|qjVXxXRD=!|iA6>r7KiGw2p{`!IMlG(p zy(B6dFP?i89yUC{Ok92*D!z%H{FE>cM;I+Ay=+UOJxTB%!Y>b8xg3VAg~~9t#U){P|`q^MVz0LBGS#7 z2#F>wQd^hpA3sJ*UCRB{CG;%|qRvH${ggz)=K1MIQD7+d)l=vB41o5t3#+w@j-H$! zR$5I(31yT1rTbAY)@I?o8Ay+=ByrQZ%_#bQ-1ST0%!q1~m8<0>6CcIJb=rNp*K$4Z z_tisby|KPdiQaNRX6@R~*FjGsQPd_BqJ`)$SE&zso3`9924x^)oPwqW(b$Dfargks_MWN+5FKM3K5jn84}bIGyyeL%UHD? zoMj9YI*Io)amUxQB{UzJLT@}1uD&EuTJ%Qf^A~4P)0dXH`c&R_o^zCOcP-lUH}mo* zp|Z8tIL?TW3L8V3Jjt<973Kk6nOCf$r|bmU3x-~q#;mH%gZ}^`kS!}ZgSZh0OYlb{ zL%$de0zD>;W|A@Q#vLw&rvVQF{3)GQ@o%RKQ<(-UMbffDd5wgknEvh3xO0sc&c3oJV4Wa4V^E@YCpv@PBtrOIwRESSpA>l=flp ze}J3L4TOg$o`L08JC50_6JJLee<1OA)(Ti^s)eTOus+Z$(QWSRIT4uu!D_`O=qSzV zK9sjR3D?dV3`p>cZg&k^z=$yP`S7$PowD7(kM(pQiA5e!_s2iOK0u3v(Kfqjp%3EN3Q~Y&UoCzT=u$!m1|Mr z?oxJp!*I`;>9jg@^^5Dc*M6GRD!<8?*Fz#gWeqndaIghSSPh zVGjY=Fl3&#Oxw1Ol+K*LCvDZ0?OD+%KfA=iHsDWlT_^<9NqrF3I0|kRl5p{+BF=%j7gEVov6-pNN z9So`CUA|1M1h+0rR60~--+KqKfce<5UddU1!CpHN)qPf`8c#Dw;1*yg*dMlng-CRq zqMK>34LU^b>IZVVnR!+wU-s3-^LUIfD=?71K)JUUOBp+%_w?Q6w%NqSTal=obI1li zr=X3sH2TSI3QeZ^MYk2KNxT^dlg=bapQb)57VF==?9aTPusG??Y6Nro4?rs2+}nKg zL)yiV34k58nkenNdr4qEo4N%p+ZaQA{p^Ub1xG**cjDlE3~Jxj2nt zTAVwwISDPwC}%}dbnhCn(E-6{mDz`sgE=KnX7$vkqNFXEgmnMfC^LMKk$cPIgLRgj z9W6{O>wbpWwH<;^`-#+P=EmqR|~Un-9MITbTO+;{~Y=s%0KU_*v#zn0)JNqTJTH$*)Zj zRW(pD`ahDwe6^A}lqYFW*2ISUW|5I?)i2z1E%Qt_Y<;-z?TF#Eyn-)!^ARM{v}X#K z+~x4f-r*gs^u4=>=+`Ezo0!Xz1MHT{t+MgPsOhcgRlJ=NM^?RV`2ygQ|Abs>9<;?G zsjcGNk$O~{rB{O(^b|4x;3a5&E_~HxI6dnumu$pjsozs0CD@6TWvQ^LO(hEd$}T!o zZ*)p_uYj=_4_lgh&Do*=lVt!shNbT%ftS56KV+eZCBlJYnTMX$3QH5-Kn!f>dw=Ag&&M}LaQxw z4=#C@FG-g_Gs8p8T$Mb^QQfc_FCF8xch9Ywh}$QrP(8E6B1xZADW3T;TN7--Pf~^K zW4%EW`H=|+9=Lvl3B#uFFT9c6q;&DS;-3c7FA#Dm>|>rpn(y4+4wZJ^*?326W3hn( zRe6K1a1ziim%fMN(>h`Q=>Bo`w(}~OjaORCFa?|w{h(ezi0Q`p{x%W~GH6@;wPkhq z)WzspjyCzbd=oL>H0NEFZ01f{u<*jVLi%F3-&pE0vv+nM*|M}27-fA#YIEAv&NnnR z!}v=AhEKXFXsa44_Uh{BxAZ!_1P6b_{VMz^{r}6c6z!~_Qyl2??k+^@P2AM^g>>`r zn8prgwz}l%pqH&Y4HeNb`juyJ;L-fjTlr5A976#mj(CR!bvM$_(ZA2VM98PGA!>B0 z-SX$05;(`uQNGBiE9fsTE%6n(<+X$V!X<@H>gDAffnz)o(!x_(!uGWm^5{w%nFhHM z2FM_5kWp~|Z$apDJovh}D%Y}&VuHw3p9_<3nSlR;BPq(m9{v{E9Gm~Yuv%{5;7@zn z6@*s}%0vL|_grA9TjxyOWcrhDU7nGvmw(HJ(f1$26JKI~pCgIydPMPGUTpC}ni@6E zyI)K;=BQfcwzU+3yJbTavjf8Tqs-#lCxWaQhs|& zM|*t#0^iick#Q)-{5rfQdqnSI`u?P!lU>_1fvb$0)#z5)Rhur^B4-67V*F1fIIDsz zfYjlx%a64=Vc6(vIr8aimKCS+(|3-_r&;@Kl^o=JMTy#!jy8s@cB>j{lMu;u>4{AOLYqYgh}RK~rq-Z6Y91zHbz~SkPDy&~onhus{cP_I`G89;1wPH( znLB(0fNwk#w03Q6Qs$daT3$+05)&Eb9#Sk4&cXVCsZx2Iq`gw@BHwav`RX5;1SWon zaO+?Bpd7JR@FB5o=AE)V_6}}rfD^i*@3}_-=tSsNgIef=tl?m)P)|C*lpcMhbIiM% z=eN5%ZKFTO9(UL*Zl(u-tP4AY!YI2|#oajhKFQ{)JLiC_3y+mzRCeB-TEcEE@AB_9 zYHFMxmt-g7C0;*D=Q1iFf^LDFPiXY~td!_wCT4QhOP)E{KHdzt8z`QLnsb1AA{go4 z#y(}BWk(xxy+MwbRcotfubDpetnqyaN{Q#T#C^C>6w;?Lp~}z&PXw>)mKD(M##3X+ ziK6k{l7oTnA!U@E4rQSI?(YUgbl)aonzGbN*QVb6VG=6$lX2pbmDYL^5)Jpm$^FuG zcszLC$x;xi@Z`xQ?k8459n8;r&FQG6eSG!jR2Te49ycJR^i%15ZC_Ilq+*S8E_ECk zt7Zcuo*BsvwJke*IT6oD$WwbSnh{Zew|?I2Ma(&~1A0jJXR(e_Af$g@D&?oBjr^Wq zmC<1+_#_LXkV&SmD=vkmXXQw?Qi8l?70vI2w z3_7)G@|v3VV7eTaAK^J^S(n^Der!jlnx4`)l#Wtr$?~6Qj2ygWlyDIjAv|8Q?8SWF zGrLe)XDUm#T3_+1g-%o9vX!BPmYGhTLzYZBHg#Au40)AZ^gi{_Ep1nZwcX!eD%iyI z0Nmgbz5`)O^tDG~?#_qc#`?Dz*lx9=X0|Dcgl4JK_DR&C(78VzK0t1(S+_q6$b;5eqsHQnn(0G z%7MdP8NPVAT|X!YD6f7%MN8ogsQ9fLso#2mt;YSKB!O?p;A&Lt^!pmiR?V~C8^aIy5s9P%46}BMX;Eazo|vry#3x&_o)c`|Iu-)mzULSU z!WDd-tf{13s!CxOQ8J7)S+p$4clO{a@B>e_0j{ISbwpS<=m91SRriI}Hx^`H!G4Cp(9r5!CLh?(mf2O=+oU zuZ*e{;?i~AjOG@@Jz~q92exmH1q1Y8i%yfd@6uxYju35!n>lT8_3LEr)V2iRF*uL> zryHRDWF1Cbm8Bjwcc-zYHo*Rd9qgCVU2(6PqOOV(S#k=*q{ydT{*YOm!Cp0K#Zmre zgD4(cS3ZFDlMa;MCGLZ2v@i?GlOr<^s8V#^TQcK7l=@Mf{O5YHUNm8Pkj6+@>ue^P zv|gUcmzC~SS&t*hr|rJ?^s9!8r%H*EDi<8p0`$%Bhk#?DtEt3jJvycuCEZ5jQs4s1 zZml^aF^G%qicW(y(p^_F&7>lm)JDrirD5h3a`|N{J@(HETGtxJm(l&MbU-{J%d^DP zK-tcI%0^RcsOqB-&g?P|$uQ?uYiwfT&g#IQLRip|b1q%csGI)$XDQ{UT6SDoT68=L z!zO~QS7PPD5-Jg~WmCf4YYDY78P(N0CB5=6aYYkK&m($xD)6GUa^j3_Nfe^>XF{@+SIdJHphl7OE4WvK3Kvr3nTKLoR zhes>1uEP0Ff&ZiEyrbEE|27_**dt161hHb&h!(X8N$kB_yFy#E^ovrPQZsgHZ?RX= zR;fK|MbN6MSwx3j6u&3W-#I7e-J|Kr~fVwt^hkInmr!S5g9f zz)PFI9?YU55DqN_iH3-#kN65aZ>^AXK{vbFJd_JF16l=%(Nqss+p?rp9wQ!dF%mWvv}c zDSG0JT>y$C^MY_nVjbjrK>LK{RLAkIu8FG`t;JLyjqD2=E*CC|5@?F5qUEx8Md0gS zQws?V&$zc%0<1p%D1T|WvAdLm>x7(xf1yvZ>gPdOZmjPe6TGu+Hnh8-CCk4p#u@X6 zj3U7leYTX<+h!Oe3c@RI8^em$=#3K(5zE%OHAowkRuJ1DpraJ}BV}IP^ZCudQyX7V z$JgVFx7#t9V>VMeYIso4nD+=vFmg76yR$3e$+9d^?L>MrIbiJQh-9=R{ph!6>L*Dc z*Gx1WtE?cVk9Xs~qQQa4M&sz87ZcyU+6Hg_C$irB)gneo_qK>6GZSIcrxjx$ZOx$s z(orzjf(ql87JHB7w!Q`}4-I@H?g&)46GP4ePDb=DCqu+0;ixyQ?~MYnBop$@&L&n+ zI;J3?GG{hIS~FGbhj}lapDAAV_I?iB(^HxU4);G0BHk(|RqsZ)nYVwQ_4Ofli&};p za5b$BJ^c|%pX&0BYTnbv;wKEG6NL>+R9ZErXkwEhG%;RwzK|yL%^7z5rE#h)H~8lF zX#D2P>A_CbXy26ReRCJ-8rGSAX8)YAEyBxeJfQ`aFDun0DAq$UA(>C)RUB&wCQ_g2 z`b{Wm#d_I&*ls9KqgB6ejUCuZCFYynx1M>Aa{+bzntv=|@7%j% z193+7zANnYb1mPE8WEt54nAk|4z@j?tEhYbhmr4&&gSi^-(ap-z!nPdUjX1og{2Cq z@y>T$KhxM=;b)5LzP?X;o_=^@Y|!aTG6$E18sK;oUPs(vV&tNe(FQpv2M=P@JUz@R z?X5*)EgrqgOA@c=a7$R6n-)|YnJ$0&ocpSMT0X7+ZEQ3`gQI()1F)-+ClVKMuYTwr zuBxa?DTY_=X}cejjJc8;acZfy3V68biQG>0aA{diGY4k{{0wg4W~!eY#HE4+ACR-G zmSsU$#7v9Cf_4e9FU6Xg8*)42OsfH7rbzJ06upnQ*S=mB5A?AP)K3i-E^2*~lA4nq zPMic}9M>6KFun48T9;rNTWdF_O2pPzFKUFGsL>zpt-#BI*RnZ6vkY?SQ2)y%hHajV@*#~Cs5PN664kJ~St#m${Vl@K4?`v+kTEhOmwABI+ zZ#(N~xGM&;DY|{fEtYer(K320S&M3rX#xe%N}Wb%bTZ0xr7k%3h1F2L37hmb zh_9HhbC8Evv9wrk!oJi(s^cA^7>(9d@+*qWDf7iW42I`MnrulH^@zBaX6h~SW-V>x zPF*OURT72K42u#3$XAqObk9@gAd#oR8@^Zhyr{4PAdB-@h%?AVk#@=ps~dCFl9lK^ zLzq+;4a{EM9frOfL8i$YWC)xRDzFh$-_&#(XL*PPzyrvII~QfI25+@(+DEqbjFnb$ zxfyL1^$THd6Bb_*ir)((YG(w`u(qT=0FJ_D)RVz8XV(BZ7J}8*VZgl(_?jj&|HRCkEyfF(0+6R3x!?+F^|H zURKnjPe_X^>m9YPsyAvbNb!B)>Q9Vm?@jW{R|*0fW*2c!d! zNI5uQh+TG$YEo`zGV9#G3@wvbi~c(>w$H3{?#|S?)&V7KPcS>){`8`8%A4+W)Be#L zeK{DKS>VqnT=LWuI>DQIwcOng|SMmrDRif4nZ+>S-6L*Ls8X9aw9s<$4Sv zj}A!($bx0Qb{h*W%VMjX&;2AJBV{>YlKq&lgE|11DIzOlXL8*o+-2kJFcsDC9~?mJ+E}lkMR8!lQ0IXa`F~SYg1a6# z-zS@J$7E?@lP@yLpZMQvrPLy~G_$yUOPGQ$_g9hbgjIs_$YhQY`X3?y%7}H4DLI3&u+1NXR?k*1xN?q^`$iFZ56j1tuMFT*>U?7BFF^yaku5pbgaF&*7h zQK7>+&zfO~%gYjiu>_R_nL=cYQVpDax~%6(_e^9^4B zx;vt%mi))4#cpvldUuFKLW2C;9`h{uF#9pq+rR&{n3+AA)fOf^866 zMJVA^NKRHe`coaRTJUVPIl6hn^eo)Z_X}KElbz{_K8kBn-5`1-N~g$-x`Nz|} zPVGNB$`{Kasr)u}6?V8S3G#Flq#mVJ7I`-jPPECUGJZm1nEE#rMLj^Y8T#_|@{8vx z<_Q-}{U`VGGMUx-rqNCxNeE024$$zJAxl5prmVM=a>@)pGgaY(6--YJJN`jC2^MJn1>)FA@ zs!46NxEPQxr%Q>?M%)PpFw^g#yR%)aiz-c@w58j|Eio`^DO|uh-hFf=D4Cgld(!R7 z-~eZ1hRA;z?R!^JHL~U6O1+z3Nk(db9QV2LP2OI|rtXM${fV}6&CzA*6U$5?L`plr zLE`-KEBfl;L+0+&h8Cl9mOS9tfsE<7TJPsQeqLcbWoOUl8m1fnq$A94Q(cD72k(>S z=gKeR3tof=ZWA?YZr|vfxq7V9)AYy1pZbKf>$6(a1qfn>aIa~tvP5VSzpuO{u&il+ za|#kos*ul~-)5G;X{}%xoPpJuK|fAAH@<~US4m#qYkY1|^4F{S>i*`&0u(B7!tT}c zk=wDep}Uvr;(0SKFPYU^DK}i~=M*#6crgZ~j2@XQ4F?(=U;O*qANpCw26*lC!a3r9 z3*`^}5VPhs59Gf-m&vFf-E98CWNpotC8ZXaG0)1S*n39+qz^BnJy&Q=*|st*KZQ)K?WM&+mocxoAN zCb23QOVE0gA@(P`3@K#?ea$xTc5EHe$d5NwKLdIq`8JWg{CgCja);?nwc{glIxu)IH^*?~)QY(pu(V_=p_e1sApng|P%KY@IC}M4oZ`RZpN*ns0 zw*QicO|q&KVh;39*RyXqQaL=h-x_-JI%O@pR?`#!%x;ci%r&%IVzIG`wQ&E&Zzv_bTio z29hVF5Sc2)w2aAMR#UkbQ&l6WqY9r1M8O?u*@w!`=r=tHXU}Jf*!tUm;XU>Zvi&6Q zqL}dlwZzM}!}38x^%x&IVxi;{_-jsgU-q*boB#e2^@tQ7Cshv}jPY2Z;jjW}{QXIN*ViOBXpDKds*F2=Lhi*Z%L0l58ZW6v_GNVpIk{<>(c?w2clAc(T;Zv1l$ zH#9w%+*GuZ>E9tu+p7@lF3{uST(m=rmq16w{LrdyD$*p!$lu-Y$G)w_%$b7?zKJ!$ zza%w$mPz|3*wn*MAe#A#ruv$8f=CmskA;HZ^z`tvwk_TBw6BBi^$pEOm)s6gJ1i9S z_pDFsUdfP=2!P_s4@H-EZdycuw5$I=c%SBQm;Z!9L%>^WUdQ+T{;u+nhBNYB&oY83 zNg`$Pr4o8b+piXk(mvDFeymP>Y*QIc@)68sRV7FE`Bnav?GHCXlQXw0FxwV7GhtKe zY8Rh+9(65KgtGaGWdFlf!lP>1RB0S(H;N)w!q0v`D{DyCAQy@3f4PNC`jn*vp+Z~a zL-(o1yELq;okr{*yboP^=vBvkr%tHpgb*bBJtpFGp;zPdKM5|{AXm%Xz3su1>MxIl z0dEr0lV-vWVaDnaxkaId5BATE3p0oFVP&a3ZlLx#^U?eL2Sj9Kj(jAK+JBcZ*WbT3 z8}oni(z7i45WLI$t>O)bF5ddU&WFY~`C{h9toed-XQzT=iZ7`)MSZQt^zNq>xqF`f z9S`Hfq5lJDyM+IC>~eXefa6}9Z>X2O1*&>URat{N5fN0oAY}hjwKe<6RH$UdIj;oL zBl}9^p>Z9%t)=%_a$H7skhcX1BTF}y-BmZNTnvgwLpI_fRF5BUj|5O>Oi1bN75I>M z<^Z{)Dos&GA~Y})GdTHFi$m#=iwIuOA|2k%IyAyf7vtB^(<+-sZt9_54?eh#AdLv* zT>p;NPq~D&aMzXsa;9hy$dl@fYH-ld?FQ9P{SIO&NDrOdOg%g(x;5U6fovo1{aSQ; zkprZkd~SORwz8c#6x@Ey-~Kw+Hdg!**CGYk2WOKFKTp2csJ;K~p-=y&?uE5;rI%T` zJ&;Y|T+>iMmidq0!zktx{ z+3@vv_FK9^)wcbDi~ttE7jRX2(RJhW_&*k{1?Cq6*G(r6D$?Hczx;@-^chia*W7F> zlIjcCkZq)d=x4lRalb~D{{T-szs3a@Dtn?6^h zNEPdCYcTNktcnB3)ii1rQzfVJ8&-XtH=j4}vY?#T8Zpx}7nXOSeA5Hv*IjuZ1nVnO zChc~PCkvENPd9{(0X%DesOA?2s6W%UHd7i?{K8T}abNfKa&$5UB*L@z>p%H&3_O&K zH2AqwZ^)MoTaQZ|DG}=cX?h=P6sm4K;5tik->?bZy_{%x9QgL_%7vYM?5oF!m%V4t zzjBsZvFfI64=$d%r%f~rqg=~0jwg{P)FILI)2uM7WkCzEf^?bH0I; zC_lxXZXXwEj;!Ee+M{Zcr-94kOWD~B6kP>o1rMfTCK?qRoMdO(KY^m$N`WNX)XB<+ z^qrRm0)LkJ+{rg0Yt4Dnd#{DfxViJPDSJC#4r#*Xh(SF0AU9peTtJ|w@W;S-i-~Y2 z!P3oZgI+T^^z1wxY z(21jabu(2x>vzRVb1jNQ4QoyEHeqFnb?T^Jb~cl-gH&e-NJl)T1s8Af^9km3Q`w8n zVYX@O&R#5I1EnphazCBOT79PHFXh4SFnUehM^v9?IZzS3Gn|R@VzAN~REzunO9D#7JbjWA~|W zhrbB$6E9w05m&4c`8v91Xs|Vr%7+5446acNJ0rVmdT5bRl?VvG$1QR#QDu*&?k~%b z4RuiU)0k+6qg`VG?gxqPsVdY_OFBV}po3w6cGXZ!=6TPDqB%9(6BE-zP|41a3}c~u z>e`V&bdmko5W_K`s2dTJJ;2d=EAjp)MK?EjR@eTDQNVyN>Q|eJGdZ}swy^O=#$sFx z992pO3ERCcH)(zYL--L%%loL!>?>R9qFYz2lz;!a%9B4Qd+uzT?s1pf)y-UfJf`g> z@u^+DeVEHH;TVl%(lQUXbtC)SP0OjS!n<0nlV%nxuBp<|YzS`v*%Y_9cpA7wG9UG; z>4}^CNiTT6Vfx?q4iVZOsE-f4RB2B}&0<2h-nDRg*5EX9^(q4Jd|t|=F)BZfhw2DU zUPDI~a#C9>{p5smJfrkl=H9H7uj)EF%YMR6xY_Y@T5TusO8wOvPuGW7h+kp?`{{mz zu|W}rtPuDCslE2wG&CB zX{>qudXgUnQ$%luB!_HV-%3ExT!In@DCPB);KDd0LZxQSiFU)1;1ykFy1L+>61?dS z?uyNEQ4;0?lvrR?wk;&Bs=+N_Uc*T)^ChAzaO}TS3P4?*lA3cFJUS$+c=*~4ZCQG zs_G1UX&`DINq&QQ@r21ov&NtBSKCxgYTXmc4fPT8&$mz+|lah`dSN<&X~ z@1?K~t9(A8QTtFSxRQLD&ub+mR4BcJcSKyrSoiil{YjcLe?zGwXdKMBH!!;JA^Tq_ zYrD_1|E6knil`C*2B0j9-Bsdpwi-4Nh+nc@%%~Rr$zS!KF;uEcT6U2CUi@lnT0_(I zt!6WcK1)8esB^vtY2=X4n1PMEzRO0uax-;O^0^g|o6$i)3WokHk}Zl-yT3UW$m&63 z|LUe3Br=5dyX7_2%4dF69Vi*r|~;g|FkdsR4f10-wXh*WooIpHjIFtDDgIzPy~>GEqrjS~X@E zN(9-|;H^b!>L6@FHY!#CI*vwI95V?Mrl&(u{vg$HZb^W8_!qOmYq&UAMWcPSkSE->h_r-)F2$-3$*^$Wc}u6KB1&4o85G#(m7!`5MWPEx1vq%|O7P>~%BYhJ9z0X= zts=?fB60o@&q!^2wNo_C4j4yGjB(lpm9+`{G8io?*cekCjHbO3*4?8NeJ1_AyOKgQ z@rH#;_r>$BxCwwe*oQ^&G%Y(^`2-0~TBVD7mtkyZZiUM*D~qq@A5ao5Pu%0y?}>i7 za)e>5EQe9Qx=1_a$~NRcMD<>*T(V{BYa>ck1apgN8no4v&IZw!r?m>12iGogX$h{F^{~+HZcj(vv?(Tzv%Rhg`IX zF3XwH1CnR~`aBs)lGH#D2w)TUq0jQ2!HwKO>mNt+Rx@)5dbXFZ#i@YXCI9lvs*=D! zyX#p`B{AoF*+L;g9h7}Eu(em@v!mqZ`fl@AVXP-RmrL(wr@qd_F z(BdFWVvcP{nSgTX2*Kz<>eEr#`d=i9m-lWuKjb!L?zc)2ZdXGc@k#C(?XS%}>BfN9 z%v@6R^&TIx4rn(vIPAJmV$6+_+Aqe>4($fGeO|L0m}JY3Q2e{tt#zwHZUrv{i{~+{ z;0m)c!Pl}XX|#&A|sZR*z6RuLU79n+d-79_7#ma|wEh%&msm?xTotD613_MAL^ zM4}_!%HCLs-zx^fMRo}{VSZDeA6HIk=hn-xS2UvCzPkhJ8nWsiNyKNY=tWmGSmab~ zTPl=QWsvv;A9fK9MZk>#+Scc+S`;+`v5S>cG+n8Zj8?=j^$ulmXW&AK4{e3{6FF7D zo_|N4{gdc7s%maOq)1^dlLBa1i-h-rPo2exfSTzR(7I?1gt{&}xIu;Hf5>bs*L|iv zg+b#|HPr%f7>;E3faMS6Op4ZSKJ~*LmiGh_82L=Z9;)BF?WZIvL9Wy-Lnk3!Ll})t z@EL8zKR*(&{K{13N>%udz(_a&PZTo6md6Nj%Z8#waP`{kmAHuYtcvmGX~oi7 zZ2RWUR;-|~geuhK*7N7@(F21AJoF?4tv8KY7vFihq{9VE!&Bi;ZaE4(SPBRhX6)@~ zXr2Ot4RRtLLu2P$w{a!b)AU@N#J&vja}k!q$!1kk)qZ4X&Ju+*B;){Fv-iR0X?|Mss&e~Dkedx6tukbfUBDnm#f^=o zdel_yp-~-PiY;7xK1fV~o-m36{OB%GKIUrB>{EM-93}W1l;Xr*W#-x?OT;7 zDgFWKy!OB3tqd*QeC54$PbJ{I29K#m?w?o{F+{o>=9OlZTZLfe-QAKJgCwC{EzB$W zScgfb(Jg*&06E9Dm6U0Tr3ri6(=*B`vt&rtq|I!ov%PAd*+;Hu^I&GBhS2KE>S2w~ zUsMVv6@I3^aWE z%=CencnXuYzM09JF=z>I`LXss0ELalso-^l9s!mq`g%1cLoCKgUr9MXzRbvJ$q&Y) zo915B&6+Atc77Z4JHF<_+L+8t5kZyS71#hXWw!!k<>Ks*{S;$9!e%Xqpp@ekg1f2D zy?P*!?`o#ft#HVUBL-)H#cs^i1u&uH}De;gD; ztQKqEp1%Nw;@(VHSdudGtb7Vxqq33o!2W|#XRg<;Sd=fGf9?PA3IYjXdY}Y4qDuJE zcd)CO5K?QzR?~IhL=C#}ysZ5s52$8mLQldu8 zM0I-)Z`yV$zGH#CcMkHTv)iicbg?hZVZcB6kuM)e3vC^hln}yWuJqow(i~#|trLdu zU)`@e4c8Lbkmc;Vr#J>FiR@z!{uu#zW_K|+~iGNB%i}$83Sc+P4&3rnZ zRVf~Fw5#+LU=^a#GlReMiHnJjYtM$<5?GXy0b}f3yB=(t2}gNT>!2ro zu;#mIsEFIG3OJPjhN5hK;F3R0B!^6T7*T|*D(b?47nOjix!-Zg?WurY)9rKfVb}{KGXmHr9 zK9n+hL9p8$Il+`M8FW?QM!|edw5xddYJIr=xYBMW^B%m36WqLzK5S0CF(?iE)4ptk%VW6Z^I})2?7>`i>2-%g{wf_57 zVayo*Ok4>7+!t{2?IW_NiwcJ@#pPq_g#dE0L_mwUdG&sj$qLj~5|2OMGKy`R1(qWC zj;#{8h#5o!zUDRpsWvsk2b!nqgf7xFm~T{X6KU1w<)|oxa44ra0VS(nd%c$=ymQo* zaL*`xS%OGcq7XN)Rr)C2-k6Rd+)lfLI?WiD_eDY5OMNjudbi-IB^7OL6GmlT?s8_j zNC3bGN~tEBKi9qsg!P5|h-J;C4D0bNs(FnmU|6%m33prA?eaioPS{fg`eic|6*bteiTOA?{f1qQX$2LCjZk0B+DMTFfs|3GL#{a?uhTPpPx6w6)Nxk>9>AJ^i91;sF6y6 z6SM&Z0AypiNg*g*I#Y>!q*`J?;?y2wjR3NOO%ut3*TUbL{-5LA7`ShAzQm)vr!p;z z(Jl+!B5D}4)xn;hA4OvBP{p{8qKvj|1xHyH9}5}_=a5>WGYyzmoQue&FVYf;-5n(i z@W8fWvj1^GqAT?AR@qxQee8Z59OGDX4^ZjRs#FFp)G~ojpmD#gY`A8UUc}siUp|Qq zC1k7%6e}JuHwzZoJJMGQ4c=>6m;d*aQ27v>)|UJ-+avi?{XE05XSWH(_BW3%)mcZA zHeAezh5;2%tw8(k-PgG+Qxq1laxN6A2-P|AV$cx6eueCgLDtVVw@Le=*`QrTznwh3Lx;FMU7mA0fe zN0vdAPMhUId1wc-gu%SuS=VEg&A8#bKKFsS@peE`I%>+GP;y~`r%B|$i~F-){(Ws` zHC)sbmNp^?2`O~UNGY9Eow%v7T9AMLEVs}AGGpP~Jt~Db-#zoP(mExzQZ;yEX$3ZyODJ+!#NT-6Y*J(aQKjozqSv^JDBwJ>%g68a{n zj}LD+q?1M&E$eOw+?Lt^=8 z+7@bOG(huUjJu^dI)q87j1q6dW>F=YVUJ|8UN_M5O3%ia*_)IZGF~*e{sdp3750?$ zYmbywAXZjk2`mtg<0_;z_7?4D1!Y@Nn35E1hq8k1X01nXaUZCT|zOX&cel45S2VfHySX7WdNGYsr(1Xc9JkRcc2l@ z-mo;&Iya-f#Z`U75>ADlhMJw}WFMk4FdP_L?=NYYq+-XbTfefHb@?JWDheWvCHrIj z&jm;4>L#dPrU22$5ZNdPc*2_sn=FVqauQY2h!*pm*LdiS$UKqn z+P1v;{o(>U+h;mg(%>C@&Xh4AG6M{3l_;_O^A45_|4Vk{{$8LBBoY^?lZbrjM{*oW zSW!Odz6!j@1qRZJt!Iq8Lr&u2J6HeB-e>lJ&0ADFpzW?+(gtPF;pb>A-`bvK4=wq1L>Tk|jh0g-bEXHFyvi|>sAZy$fOtK9*8QeIPd1fq z){m7G1~0kX`xnalWgQyErvD^dG0FW8w=T?{h1AI|O;{FHtmh@)+$y2TpX6-~qWA!NA7ZmR2f{xEaP|~le z+bNCJ>P(LUqg^iEKS3x5G_i_U?hRZ^Rl#2ItWswN3&TuT{aLxGm%eA7_jXX5v9?vA zns{N#;l&5{{mdnoEA>n$+o*>AJl3W?-L$)T@MjzeNmYM%8(Z&y=4Y(oDk!6>k8%Y88zA|j^)48eEj6+=iX;2N6p zeDjAlEuDPbr@O<~|5K8>h~(6QRZ!AO;Q~sl2U&B?muOqxM&E!8i0ZPLdX?5NM-1rd z?$(%L=?rnI<7X9m6Ru_TweWfod}-crXJo??S`t6i+a#uvS{5tQ;P)6`H~f~y>^Az` zr*^dZu(ni5BmAz)ext0O-j$AiAf3!IOuxiJ8((jT!KaToY?N&s+E&Xcz4K~nenS{R zydDH)Dy634yv0V{t)q!HJt`?SKs<`)F6wEc804`0vwPm@=;KEzLvKlM&Fif7t%}vG zGS1!0uhRT;7M}Wmuwn!%z-CMZyR%*-OkpW)7%w@1|684(2lX)&avbmLW^eBwrQ3A_ zHuP%FEkD{XAOm`)3c}ukYhCEmKvbhe8rH*VwIdUwiz!Nh{sW>S^7kPSXPT6XcQlM2 zWlEloEG(XW9T9)&>~C<HDa(wZyb!3-&Y%Akn41naM0ZU0TfN@QtG4P=$7z$;6` zSy})Gi*@CTzBm!i8}zLj3fUM%cXac;x_|VG-j$bEWW1;-f^>fD#}?8dKxNx+b!$zf zn$KnN<@%G*Nq(+KWv|Vew});NI=&}Q?7TaVoB95^AgTCf_K#I|1`*u(x@ceRB(OjA z_LU4>?x&(2e#XJN8b%Iuvm0v)ugo)PDohYvOt|LS?-kiME)`~>2Uo?e)#M{(D*b@8 zf`N%xHxCz?gbdlA%Gf1lRbnr=tuC{50$)d>KhtWOb#7)}cW-}>t;^w)!tGxk{0KPO z(@|BIfZLRha_Zu&4lW^?=LdU=Bg)U96)htV%!Yd_%eK$M*QT!PnCGXxl zXGl#=a&^EnZ8^6-QX;(58zK?*BbHK&>ml*nzjTr>BLf9w{oywsyFgNL@$VB7be=YX{%`8M7E|r}GRfZLn*qgpU+)XERmO0r{De_X%(I zcZW9>Fmi3LdG(IUb!`bai$8Gag$y0{|UWH-sw~u)M*JE-`fqKqF6AW3;O;^g?G` zEXQMNiD?Fq1?0jkAn_Rj$|gI?;4&VY`Gk4$L$N6uOI3Ae2sMQ{C!<=?54IM{yd?zh zIePNREz?w<(PhpOv-PhqXA*;ZtC`=-WJN5ygyMzoTIKwP#K;N79 zhJ6u>jB`cTz-vZF*d!DvMl8L`;z}%ka8gdN&2$22oZXFH7{bz-6J4j*mqSFYy?#PA zi=Bu`R%DCY(DBcV_ceUofqiEvu+^qpIUUriH`g2*%`c8H+&zwtlkTG^8!;^OG&sI< zLuBud&;I~y?2A84)Q#1KOa&c)K?czXeRflAGds-hx#38k=`)0};_UNZ9f^uWHtky( zB17U(_4$>m(!%?e>aT6p1Sh8#KPNo=#Iy-OoeK*6P@b_Y@so$s9`cl^CuObr2g$3U zuJ3gNin0rpGYr!v8Gs}ZF*cqiI~%jPS<~_BOgvRnVD7O8bboZ94aEoZG5seveYi7` ztE1kr>Yl!5WaY2+g!Rh~nWHnc!56F0mE6rBI{HWp&##pq?3w%}<)`MtsS|l-4E>As zrmOUpKi#wf9_%1JqBw_=%qzd60P?i$zb6D?^K}(eTA@>~Qn0pWfBsTLJf4Zpyy+Y1PZO;}@SESkIStB$3U7SE20>FQ`;;siXkfEI=sJ#YK?8gN0pc zgqgk__&>QCvGyaI%iTR(t0#sVjiDm&bLc`6)l7!;b7WU3$vlAe&x}-8bh0Dm_aBy( z^M$M7DL$@86otB32PQ+u9W5f+B%x;WDN=DNz~D3(1vUmgCyl+8^%(`joNxrTSW|Nt zRFQ!|u0I{Xbnl)p(qloEqi)e~yL{u^6^$5XTKcs;gfR^F}reN1sfZRNY^ z^UJp;+M=)c7OzqZB}osEA5lDPG{h9$9l$E5%dL^^;-WjKL{O=^A2OoO< zCa$HXl}U!SHr%Qnz6vR5Dv(e@4aEu2c&K+^EsMIG9GqDg7+6G9N+0i64xG00Qv6)EtTYQuGBf0?)UJ8C+}3PHv7IV&@^`((3j1n)0h8X|g4CVaR=#?#xVx!1 zH~b^9q!zDb6_?D$r4Y$qv{SK5%%!`$d2oG8Vcw=d(xKr0CFk4UYkt+G(8z_6kkGj~ z0q21DaJZFu@Rg;ztA2`F%qP5F1@>*Q{IEs=>)789-x;XbjpoMlH?Er|8pMj(vvaZm z*V2T9(KPMD5rO;%9tY#C`ojG%6J(jN?SSV=bw4bOR&^m z{78tCKOC_qmxt%wH9GvzpnCN{KQ9VqJUtuH7GXNKG8~D7L~R{uYT$H*AZ?^{pn&+5 z)$uwVI0$ zL-qGgdTxFDQJWo2qr~O%ZbZZYbJX>6lAwUyg?wHt??3OHrP$hmbiVu^43jv1g@0j!VR~Jd4-5p_`DN$=gE^wd?Dp-QN8r9~btBo>}tr;INYQ>ulNb`kN~72C`6+HbZS=+c2aeXZ5~&0BYcc

Acrih5KDW9ugPSk3y-@mXy^-HnY=Jp77llly?k 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 Js(`-=`hS6L{J8)C literal 0 HcmV?d00001 diff --git a/front-end/src/assets/image/logo.png b/front-end/src/assets/image/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0db9ae3c2f459ac40be93ff767ce346f9d383d06 GIT binary patch literal 3565 zcmVPx?r%6OXRA@u(n+tGU)p^H%-`SOHgk|4d+kjnSn?f=T&{Bpx$h2VdaGEp;Bq?-& zLdXEcp~Zl;l5N~fP)Lbo@2(6OaIl>aT88i@83@F!oq(GV%EKi|osjVIP>>U_byxCB zk@lXibMEe4t)$iN3fDAFbY?u(NcWy|?*D#||M&mS6-{}{I~xHI12#)GH`h&}?Zl;> zytXE;M0K_M6(Ds^Uw-Xe$>uiexx~01D}{N`l=mcXDv$@_D0`XQG+o-e_9{qpUA6Vx zoN_;bws;Ldz1F#SWRMs(}>00vrNn)l3kk(*zudLkB6#^K=m%$hq#g?~-#pYpx zeK5hrnku6YCMLS1eOq5RXIX6fU5|lPRcTC(N@UbI50nKi zn(_feo(w}$VdN2Ws${x|3MNHHQQl~i-@Gbj%MF1a-#bP;cuD;;mY9M$XfDB<8$n-?bni=%MTNF@IdNIbfTp|*kSYNP&(J^ZR9XGam3I+LSjN(HBvfIM~pV4Zuw_=r2&QF9ZN1c0sH6DY2Q>a4Q?*h6#EVUfxcwkuP~V-f4FbM6`SVIm+MJZ>Gw zE*w8~zu$>+hIHnBQeIgNvA`?n*=hqNtm z3aZ~gIi~6!gy#t2SIDXz&y6Tc>yCjf-ku^8au(Q((XUFn=b!cqz?Q@UL~jN9(7LS8 z*{B1s;KB`jR626oMp$4=VgsTd1$v9FxQphd+2xJ(QVdJYoQCvWh}us8??+t!SN4Fu zg|Y>s|AtO{G?dVW$#NrN@5ps`)7&)6tt;9-Gh*Te@9*jwhywUnNObwN4t$vD1lh5V z9;2*!qpxCJ+&*U_yZ6PI6f4Cl_YlJu8SaX-&zS)I1{y6}w+%Q~FA?uDx-!~kwaU8n z#HO)>@H=ovXuS@c3QBj#^UlRMWqdRxyxvD}lJgJ{>p5Ri&*a1Bt>>QTnre0N@OkRl z?{H!~mc5i)YWaQ9y1%y;I98C}>Gk6PzEk9i_l*NM4&Z(wu%Ea8zgS?Y?5gun?o9wqTw3p?mSE+c9zY%Ka`@lcf(dR;&%1y?f>$cx-BqLd-s<& zg|uKH6ZkcGjtfDyV^O|~CmWpd91K5%6qRz}8pDnU*9%%$1Pq%yoX;J$ni-agL%NHi zi>Cfj#mPkt4caR!{GLjsPPGk%i+NK{z{X?l#9`RB+^26cLFbTVtulr`>BYtIbgNbdjJ!=OIGgub|m9h-E*;=(-v<% z65k}*9p8$)C=@ALr(OlYsglW^GlUOn%KO#Gi8TO8AhJp_{)%v8PVH@Awxo0Jpm)VF zC@CF&81z40R6CNOFGFl81Xm*b2FqtL4Hu&WS7SK>V}6d&7kKT=+vWcIgKF|Tt=`or ze*q*g9EOz{#Iyr#*o4~IlG*v4aK9;UE25o}>G}Ft>UvFi8xeD_WV+XBJ7GEMtWH}K z*P=RKvbocTc!9P~IdcdauJ|{m533y*`KhG+D|AU>7I}RPl{cl+|Ev1m*=Yp) z4-$Ndc&v>;Pe64la21X6dHS^lk(UVUT4Lq~tge;L+z+Z*jHbLrh|EMe4Yj{y@`)Eq z`xALxoScuf_hDs?bo$FQ<-LID>RJGnUb^$dxSfO5Rlw6U=D)%~!rx)I1(}L zME@(r{?(xvyI@2NEKQh7+>OyLg7{h_@7!Z60cXpNxm-0jD@o#Q-a=Gnq2@lswt_qe zd<+7o49~}~7|eT7{VYl^LN6wEeWlY0$v(%tuluDdvSWOx7t`)x$mNVaEvJuX~Okg)9XHiG%C zWV^GGs}{a}NnVQDvn885tK5J_x4_mZw}H6=)qadzCuzT?|Jq0ZqiodX ztphz2D_;ZdLQEg3mxP}mR3X5F04DFi@Omhn2lh{y+;joE_I?L3Z-Q)r;O|lSIq}#= z^1-E`k4ZLnebx9^TvtP}bl-MV@0D!s!Vm=aWdNj6uA|w{uq%v#w@RkxcE<|p)i^cf zJ&I!>Vm70WVX_FrFR}U}Vq&0&pqc`?TeAL@BLR#~7dTh3_LMN|ESj7|%zBKR#-u4n zN&B`@L-br4Omu7XYOBWxo{{d@9z6MupdWpNwpiK!&#W7rmO+e zD_MU@xJFCzWW+v5Ts|Tz{MRd4VBveWly?!(L38dsVV|M>*hcnj{~&$-bF!M>)OAT><*DLIYinMz|r2pUbAr z!0M5xHel_)V%@iJ=D!hrQ!@TN!}nZz*=^I0AQ-q0!?P%#0<%)G-Rld0xo_%Z6U63A zcE|IY@_vTl-zA-E3B7H^q^0vM$&a8eqv?rZi?R6osuU)2v6kldA@MU2eLsi+J;5aj zEK`6FBRU6Sk0W*pR_7x;0p>r8+-u0O;UVPsnrSnL<(~(ZfEGW@}$}cZJDK2ZDA5ho-Fgzj|{}#ssLk`&HeFe+OsJw;IKf%Q3 zm9d4Pkd)qv%apC&7DQZNZY#Km>$b`9lJ*x=+DuveI|tEA(eSMGM$pSp^CMJVLev3! zJjku6nF_%|jNF7p3Cs`V#+|>YaGoUuRa+AmpqwRH|2%C=tRWyKo&M$8miQ!CM?YR; zpkX_EXYZi-mH)z!k#z2xwOlxSwkY`6`y%~*tN;-FL(iU$sf-l+J*|jXPTt?TF_b{SQL+nt*HesC=%GM&Oo=|Xa zjicrP>Fj=LG%8aN4`xmbyKt?E+gyT@jQ@p-UA2_=6GU$gvv3_rWUz|zHi10sEU=Kx z6X&~Z4*D#}K2%)1{z8dz)h^4tJ5l)@@G|IZ;%1(!J4b!U$c-Hz3-ohHSauzW#Lq$V zCt*2{7`r9yU#O|cA4KH(u-&M756y{3s~y5D7c?}LSQ7%6^%sB@Q#}E&$#M-M7xdT5VLwzHKz1NTuX0H?*&*+ zAtsN=%AF6@MPn9En@Nyw0ka3}HxM}wv7aW8E}yncdmrRiA_V^nsOtQMJ%JVe00000NkvXXu0mjfi3i%6 literal 0 HcmV?d00001 diff --git a/front-end/src/assets/image/welcome.png b/front-end/src/assets/image/welcome.png new file mode 100644 index 0000000000000000000000000000000000000000..f57a6ec0d2da44331fcee01eb491c6e4ce741a40 GIT binary patch literal 218179 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 z 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%0ABOgTXS6oQr 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 AhX4Qo literal 0 HcmV?d00001 diff --git a/front-end/src/assets/sys/下架出库.png b/front-end/src/assets/sys/下架出库.png new file mode 100644 index 0000000000000000000000000000000000000000..f42fcc1bb0b3d27357801f2ed1843f6f853bdeb6 GIT binary patch literal 3057 zcmbVOdpOg78^-2Lp@o=)kVs{SbYxBmEvFn}Ipnl`+d{ljNDhrzqlks%e44F(jWx%# z2|u(nmNlnNXhI5w_U`xJ@2~fd_xa;$!8z%~4TKLrzRgOwrj1 zeqKxr#1-XrG9c0UB{=N4n3y>H+*wb1p-@;-QUZg)Mn^}Bii!k6p@0eyhK0g8icrXA z6JY>VARH!8=7caJn=KT=(3G;WG7*b_rT}OPn+Q3k&bwFT~-p2{2${V&d`R$21ykb8~ZLWrZ>)APfs=%)d(;pJZia0WhGw|8>Em z+NGr>$}pw4rjaca2-eu-4kml;C4ov|jq(RZ#stFzfJh*S3=?63ISTMl z4rnaX#kNLR98C^yeLGgiz3~CNuS1EcN+8Y1BT&m+K`}b|);aZzMYK1$@aGdE3aD-J z_4O=xqiO7|1pX-$4)sU*yBt>mmyE=4GVOY&Ml%OA;U}%MW$w5xX9WqEe`EPiz8+mk zA6z-*gu*!rd@t~Emo>x`JQ`w~4tIids79sRFJC0~fBUUx6t~0Y1s9RH?&6MRshKIM z*eK!DilY8JYW?mNAkJzF>Pe2;qGQEHBD+Tk%4~)slf%(DN*l@0M)ykHQ8de(Oz_XC zzJfK9x_#Mqbea$tn8)1{vyT75CQ9I3=1(C}UUo{wQTg1^ZJo=OZ{K#!oR3y2DEG2I zXENAzm5hl9rI; zNkKSTmHgh-8?^pP>~2}GVQyzGEQ66eDB*Mx8qT;KJEnUL9Q{n{WypIl=`*CJVzvY1 zT(jro^=y9v`0l33#2*UZ6mn$17Q4mQR&^J1`u0aRIc!g7xVu*8V`=Ek*^py9hnch| zCs>s5HUHlS7&hqvfAb20+Mczf#peEJFX{Vd(b2G^u;eQt^R*V_46b z_W@I?n$}~d-(YiSr)xZaPm>lgI?I@(ozUGgpfd`Ijm|Gk2J;wOK8L&C=xy!4|{Z75n@awnUL)bsn%U5hEe5+2H% zY7O^hwOoIb6YU@ge&N-l)vUL^66YfSd~(%xdkP9I2gBeE@Vb#J5>I2btU)u6puTtTN%`FFw`X*v^pr67qajqamwQLM13t6_$ViG z=dgD$_E)v8#^eO^SojL&NP&6U134~!t8~YBgVyV4hAA#|w*Yo=e|(NdYeicy&klr; zLtQm(ZM9XrwJc+o?z|(Nn-Lu5e$Iw*6jG<;S>EKC^IgHp#ca#`;|E7}fomn+? zT%E_c4zZsfOl?mzj8x$+1cu&@K3rQuRMjk@HMQ2SWr0&~gvQJALK?++pCXxQgoxLu zH)CV6f*#G|b0#KVU*?;LKec6+zG~4V$6$IQnPJhThpN2;oHmhdhRlo*Ca#_FS3DW5 zR&1VqFEhv35q{PE@B!kuc^XtTb&K?iFS(YBe`e#SVr?(K+&v7h_eS~SmK)#t-VW-l z;^tdB=E0H8ValoKFH2VS*Bp?fo6vWJxQLKaX$FE*a17b)h!GSt6yQ7TXsZaXrEZwPBUqep0DPX^6Wj-9r+2-40Zs?kz{z zmepbS*{NyQj6Kpvrqnro1m|e-xP#<}%@BOGn*fJeZjiqXoGGeW)*_|ema3kN>#~Hr z9YQs!yfM+J6Oddr)C3KT0bU-Vgl?nL8}2L{|AlKif2GA+J2tsM-y-h)n0dt!!+Edy z=gEw0KPjCN1+%@a*TCN%?~y#gR5i;rVbd=iEeg(mNA(5MPMSAu3~2qF>5=IRUGwo8 z?5HZ=ksc%Xu9%)(S;r<$QJ?N7cXixPujrF+k@xrPN0_=8)4oD=TyT7Z`SxzNr@wEZ z)rJr8PN{`;xxpl^AI%OowP}T_1<0R0F%4eDkV%c&+*y5BjrQzWdR%6m<6;da6mh@k zfwrI=mQ%9}Y#>dO$jE4x+~{6AXWRTX)H`kKen8qt)fa9r&TT2vKyI9H|La_l{l%)o zbniN5gq!FAkSV98fp}S2AJ5&>&V_QV+jJqk3pZ2q(8pURVv}9&b9T5JPayDfC2S~z z*0kPtUnfdEg}dO%iG5VyAx@L|1felD1v04PTm%b)Rzo52ma0v^r+g1qLci9{tT4b& zgQyJ$1S;H!2+rliRo^&_=nwfoHwpz*n$l=>SI%J}40CQF&MiV{X5OQZNx>gCZR?NK zFV^K6()hiXp;d0ptiYjEelfvu$2awX8>%SPdW+QS@@6eM8BPTgi%SPe<1j_+`UKJJ zFllE}z1mKP^$q88&;N2LTpIjnIw+O}0wIj=CWjolu`b4ebH5bjL$f zb&e?SP?zQG+<>Cv5$CI=#@s=Px>`~m$^SyE9+^?2Nuq|!JB=||s71ke@IBE0{*pg8d zyGk2;$FmHN3tu(3`|hOQgVe2{*0s(Kbj)fq@iKC3yj}QH`@kl0aoc%_)UACf4oec` zfTJK4d!M`?mZVhi#pH4<9C26<_>1xT_`#*Q8BLk;fv^mm*3rOcK6><<7pQu@4Xb8$ z@*s%K)waZDZQ6_@71Y}he<`IZ38!Th$TYs$$o3MnF7FTQ4_|H%?#278Xz(k_J9+Dq z+g&TT(#0M?TfN$3S$+GQclPRrP<@yr$pNF<^QvBchUrOidR0>#xoO&%B hJ8k3n@818;QzT`uKj5jiR$BhyIorFz$+pN_{{_s4)zJU| literal 0 HcmV?d00001 diff --git a/front-end/src/assets/sys/订单出库.png b/front-end/src/assets/sys/订单出库.png new file mode 100644 index 0000000000000000000000000000000000000000..7612d5962899ce8ebc5ff812e91664ced17885fe GIT binary patch literal 4446 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 literal 0 HcmV?d00001 diff --git a/front-end/src/assets/sys/退货入库.png b/front-end/src/assets/sys/退货入库.png new file mode 100644 index 0000000000000000000000000000000000000000..776707abbd3422129f7ba1386f54d7ee19e5f304 GIT binary patch literal 5874 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 literal 0 HcmV?d00001 diff --git a/front-end/src/assets/sys/采购入库.png b/front-end/src/assets/sys/采购入库.png new file mode 100644 index 0000000000000000000000000000000000000000..94af5017bdf9e2582b82e811754998d99c329c32 GIT binary patch literal 3731 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 lBR1-wlW9=#Z{z-z03K^NP { + const callback = el._v_clipboard_success; + callback && callback(e) // eslint-disable-line + }); + clipboard.on('error', e => { + const callback = el._v_clipboard_error; + callback && callback(e) // eslint-disable-line + }); + el._v_clipboard = clipboard; + } + }, + update(el, binding) { + if (binding.arg === 'success') { + el._v_clipboard_success = binding.value; + } else if (binding.arg === 'error') { + el._v_clipboard_error = binding.value; + } else { + el._v_clipboard.text = function() { return binding.value; }; + el._v_clipboard.action = function() { return binding.arg === 'cut' ? 'cut' : 'copy'; }; + } + }, + unbind(el, binding) { + if (binding.arg === 'success') { + delete el._v_clipboard_success; + } else if (binding.arg === 'error') { + delete el._v_clipboard_error; + } else { + el._v_clipboard.destroy(); + delete el._v_clipboard; + } + } +}; diff --git a/front-end/src/directive/clipboard/index.js b/front-end/src/directive/clipboard/index.js new file mode 100644 index 0000000..c67459d --- /dev/null +++ b/front-end/src/directive/clipboard/index.js @@ -0,0 +1,13 @@ +import Clipboard from './clipboard'; + +const install = function(Vue) { + Vue.directive('Clipboard', Clipboard); +}; + +if (window.Vue) { + window.clipboard = Clipboard; + Vue.use(install); // eslint-disable-line +} + +Clipboard.install = install; +export default Clipboard; diff --git a/front-end/src/directive/el-drag-dialog/drag.js b/front-end/src/directive/el-drag-dialog/drag.js new file mode 100644 index 0000000..f5f786c --- /dev/null +++ b/front-end/src/directive/el-drag-dialog/drag.js @@ -0,0 +1,77 @@ +export default { + bind(el, binding, vnode) { + const dialogHeaderEl = el.querySelector('.el-dialog__header'); + const dragDom = el.querySelector('.el-dialog'); + dialogHeaderEl.style.cssText += ';cursor:move;'; + dragDom.style.cssText += ';top:0px;'; + + // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null); + const getStyle = (function() { + if (window.document.currentStyle) { + return (dom, attr) => dom.currentStyle[attr]; + } else { + return (dom, attr) => getComputedStyle(dom, false)[attr]; + } + })(); + + dialogHeaderEl.onmousedown = (e) => { + // 鼠标按下,计算当前元素距离可视区的距离 + const disX = e.clientX - dialogHeaderEl.offsetLeft; + const disY = e.clientY - dialogHeaderEl.offsetTop; + + const dragDomWidth = dragDom.offsetWidth; + const dragDomHeight = dragDom.offsetHeight; + + const screenWidth = document.body.clientWidth; + const screenHeight = document.body.clientHeight; + + const minDragDomLeft = dragDom.offsetLeft; + const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth; + + const minDragDomTop = dragDom.offsetTop; + const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomHeight; + + // 获取到的值带px 正则匹配替换 + let styL = getStyle(dragDom, 'left'); + let styT = getStyle(dragDom, 'top'); + + if (styL.includes('%')) { + styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100); + styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100); + } else { + styL = +styL.replace(/\px/g, ''); + styT = +styT.replace(/\px/g, ''); + } + + document.onmousemove = function(e) { + // 通过事件委托,计算移动的距离 + let left = e.clientX - disX; + let top = e.clientY - disY; + + // 边界处理 + if (-(left) > minDragDomLeft) { + left = -minDragDomLeft; + } else if (left > maxDragDomLeft) { + left = maxDragDomLeft; + } + + if (-(top) > minDragDomTop) { + top = -minDragDomTop; + } else if (top > maxDragDomTop) { + top = maxDragDomTop; + } + + // 移动当前元素 + dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`; + + // emit onDrag event + vnode.child.$emit('dragDialog'); + }; + + document.onmouseup = function(e) { + document.onmousemove = null; + document.onmouseup = null; + }; + }; + } +}; diff --git a/front-end/src/directive/el-drag-dialog/index.js b/front-end/src/directive/el-drag-dialog/index.js new file mode 100644 index 0000000..a436dbf --- /dev/null +++ b/front-end/src/directive/el-drag-dialog/index.js @@ -0,0 +1,13 @@ +import drag from './drag'; + +const install = function(Vue) { + Vue.directive('el-drag-dialog', drag); +}; + +if (window.Vue) { + window['el-drag-dialog'] = drag; + Vue.use(install); // eslint-disable-line +} + +drag.install = install; +export default drag; diff --git a/front-end/src/directive/el-table/adaptive.js b/front-end/src/directive/el-table/adaptive.js new file mode 100644 index 0000000..8e56d2c --- /dev/null +++ b/front-end/src/directive/el-table/adaptive.js @@ -0,0 +1,41 @@ +import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event'; + +/** + * How to use + * ... + * el-table height is must be set + * bottomOffset: 30(default) // The height of the table from the bottom of the page. + */ + +const doResize = (el, binding, vnode) => { + const { componentInstance: $table } = vnode; + + const { value } = binding; + + if (!$table.height) { + throw new Error(`el-$table must set the height. Such as height='100px'`); + } + const bottomOffset = (value && value.bottomOffset) || 30; + + if (!$table) return; + + const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset; + $table.layout.setHeight(height); + $table.doLayout(); +}; + +export default { + bind(el, binding, vnode) { + el.resizeListener = () => { + doResize(el, binding, vnode); + }; + // parameter 1 is must be "Element" type + addResizeListener(window.document.body, el.resizeListener); + }, + inserted(el, binding, vnode) { + doResize(el, binding, vnode); + }, + unbind(el) { + removeResizeListener(window.document.body, el.resizeListener); + } +}; diff --git a/front-end/src/directive/el-table/index.js b/front-end/src/directive/el-table/index.js new file mode 100644 index 0000000..1b89cb5 --- /dev/null +++ b/front-end/src/directive/el-table/index.js @@ -0,0 +1,13 @@ +import adaptive from './adaptive'; + +const install = function(Vue) { + Vue.directive('el-height-adaptive-table', adaptive); +}; + +if (window.Vue) { + window['el-height-adaptive-table'] = adaptive; + Vue.use(install); // eslint-disable-line +} + +adaptive.install = install; +export default adaptive; diff --git a/front-end/src/directive/permission/draggable.js b/front-end/src/directive/permission/draggable.js new file mode 100644 index 0000000..5a1f240 --- /dev/null +++ b/front-end/src/directive/permission/draggable.js @@ -0,0 +1,47 @@ +const draggable = { + inserted: function(e, binding) { + // console.log(binding) + // document.onclick = function(e) { + // e.path[0].focus() + // return + // } + document.ondblclick = function(e) { + e.path[0].focus(); + return; + }; + document.onselectstart = function() { + return false; // 禁止选择网页文字 + }; + e.onmousedown = el => { + el.preventDefault(); + // 计算当前可视区域距离元素的距离 + // e.clientX:鼠标指针的X坐标 + // el.offsetLeft:距离浏览器左边距离 + const disX = el.clientX - e.offsetLeft; + const disY = el.clientY - e.offsetTop; + document.onmousemove = function(el) { + el.preventDefault(); + const className = e.parentNode.className; + const listEl = document.getElementsByClassName(className)[0]; + // const listEl = document.getElementById('virtual') + let left = el.clientX - disX; + let top = el.clientY - disY; + const MAX_W = listEl.clientWidth - e.clientWidth; + const AMX_H = listEl.clientHeight - e.clientHeight; + if (left < 0) left = 0; + if (top < 0) top = 0; + if (left > MAX_W) left = MAX_W; + if (top > AMX_H) top = AMX_H; + // console.log(MAX_W,AMX_H) + e.style.left = left + 'px'; + e.style.top = top + 'px'; + // binding.value.set(binding.value.index, left, top) + }; + document.onmouseup = function() { + document.onmousemove = document.onmouseup = null; + }; + return false; + }; + }, +}; +export default draggable; diff --git a/front-end/src/directive/permission/hasDropdownChildren.js b/front-end/src/directive/permission/hasDropdownChildren.js new file mode 100644 index 0000000..12a02bb --- /dev/null +++ b/front-end/src/directive/permission/hasDropdownChildren.js @@ -0,0 +1,7 @@ +export default { + inserted(el, binding) { + if (el.children[1].children.length === 0) { + el.remove(); + } + }, +}; diff --git a/front-end/src/directive/permission/hasPermi.js b/front-end/src/directive/permission/hasPermi.js new file mode 100644 index 0000000..e69de29 diff --git a/front-end/src/directive/permission/hasRole.js b/front-end/src/directive/permission/hasRole.js new file mode 100644 index 0000000..861bf7f --- /dev/null +++ b/front-end/src/directive/permission/hasRole.js @@ -0,0 +1,24 @@ +/** + * 角色权限处理 + */ +import store from '@/store'; +export default { + inserted(el, binding, vnode) { + const { value } = binding; + // console.log(value) + const super_admin = 'admin'; + const roles = store.getters && store.getters.roles; + // console.log(roles) + if (value && value.length > 0 && value instanceof Array) { + const hasRole = roles.some(role => { + return super_admin === role || value.includes(role); + }); + // console.log(hasRole) + if (!hasRole) { + el.parentNode && el.parentNode.removeChild(el); + } + } else { + throw new Error(`请设置角色权限标签值`); + } + } +}; diff --git a/front-end/src/directive/permission/index.js b/front-end/src/directive/permission/index.js new file mode 100644 index 0000000..1029533 --- /dev/null +++ b/front-end/src/directive/permission/index.js @@ -0,0 +1,19 @@ +import permission from './permission'; +import hasRole from './hasRole'; +import draggable from './draggable'; +import hasDropdownChildren from './hasDropdownChildren'; + +const install = function (Vue) { + Vue.directive('permission', permission); + Vue.directive('hasRole', hasRole); + Vue.directive('draggable', draggable); + Vue.directive('hasDropdownChildren', hasDropdownChildren); +}; + +if (window.Vue) { + window['permission'] = permission; + Vue.use(install); // eslint-disable-line +} + +permission.install = install; +export default permission; diff --git a/front-end/src/directive/permission/permission.js b/front-end/src/directive/permission/permission.js new file mode 100644 index 0000000..189fde7 --- /dev/null +++ b/front-end/src/directive/permission/permission.js @@ -0,0 +1,25 @@ +import store from '@/store'; + +function checkPermission(el, binding) { + const permissionCode = binding.arg + ? binding.arg.toLocaleLowerCase() + : binding.value.toLocaleLowerCase(); + + if (!permissionCode) { + throw new Error(`need permission code ! Like v-permission="code"`); + } + const userPermissionBtns = store.getters && store.getters.userPermissionBtns; + const hasPermission = userPermissionBtns.includes(permissionCode); + if (!hasPermission && el) { + (el.parentNode && el.parentNode.removeChild(el)) || (el.style.display = 'none'); + } +} + +export default { + inserted(el, binding) { + checkPermission(el, binding); + }, + update(el, binding) { + checkPermission(el, binding); + }, +}; diff --git a/front-end/src/directive/sticky.js b/front-end/src/directive/sticky.js new file mode 100644 index 0000000..ff0cfaf --- /dev/null +++ b/front-end/src/directive/sticky.js @@ -0,0 +1,91 @@ +const vueSticky = {}; +let listenAction; +vueSticky.install = Vue => { + Vue.directive('sticky', { + inserted(el, binding) { + const params = binding.value || {}; + const stickyTop = params.stickyTop || 0; + const zIndex = params.zIndex || 1000; + const elStyle = el.style; + + elStyle.position = '-webkit-sticky'; + elStyle.position = 'sticky'; + // if the browser support css sticky(Currently Safari, Firefox and Chrome Canary) + // if (~elStyle.position.indexOf('sticky')) { + // elStyle.top = `${stickyTop}px`; + // elStyle.zIndex = zIndex; + // return + // } + const elHeight = el.getBoundingClientRect().height; + const elWidth = el.getBoundingClientRect().width; + elStyle.cssText = `top: ${stickyTop}px; z-index: ${zIndex}`; + + const parentElm = el.parentNode || document.documentElement; + const placeholder = document.createElement('div'); + placeholder.style.display = 'none'; + placeholder.style.width = `${elWidth}px`; + placeholder.style.height = `${elHeight}px`; + parentElm.insertBefore(placeholder, el); + + let active = false; + + const getScroll = (target, top) => { + const prop = top ? 'pageYOffset' : 'pageXOffset'; + const method = top ? 'scrollTop' : 'scrollLeft'; + let ret = target[prop]; + if (typeof ret !== 'number') { + ret = window.document.documentElement[method]; + } + return ret; + }; + + const sticky = () => { + if (active) { + return; + } + if (!elStyle.height) { + elStyle.height = `${el.offsetHeight}px`; + } + + elStyle.position = 'fixed'; + elStyle.width = `${elWidth}px`; + placeholder.style.display = 'inline-block'; + active = true; + }; + + const reset = () => { + if (!active) { + return; + } + + elStyle.position = ''; + placeholder.style.display = 'none'; + active = false; + }; + + const check = () => { + const scrollTop = getScroll(window, true); + const offsetTop = el.getBoundingClientRect().top; + if (offsetTop < stickyTop) { + sticky(); + } else { + if (scrollTop < elHeight + stickyTop) { + reset(); + } + } + }; + listenAction = () => { + check(); + }; + + window.addEventListener('scroll', listenAction); + }, + + unbind() { + window.removeEventListener('scroll', listenAction); + } + }); +}; + +export default vueSticky; + diff --git a/front-end/src/directive/waves/index.js b/front-end/src/directive/waves/index.js new file mode 100644 index 0000000..c38d799 --- /dev/null +++ b/front-end/src/directive/waves/index.js @@ -0,0 +1,13 @@ +import waves from './waves'; + +const install = function(Vue) { + Vue.directive('waves', waves); +}; + +if (window.Vue) { + window.waves = waves; + Vue.use(install); // eslint-disable-line +} + +waves.install = install; +export default waves; diff --git a/front-end/src/directive/waves/waves.css b/front-end/src/directive/waves/waves.css new file mode 100644 index 0000000..af7a7ef --- /dev/null +++ b/front-end/src/directive/waves/waves.css @@ -0,0 +1,26 @@ +.waves-ripple { + position: absolute; + border-radius: 100%; + background-color: rgba(0, 0, 0, 0.15); + background-clip: padding-box; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + opacity: 1; +} + +.waves-ripple.z-active { + opacity: 0; + -webkit-transform: scale(2); + -ms-transform: scale(2); + transform: scale(2); + -webkit-transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; + transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; + transition: opacity 1.2s ease-out, transform 0.6s ease-out; + transition: opacity 1.2s ease-out, transform 0.6s ease-out, -webkit-transform 0.6s ease-out; +} \ No newline at end of file diff --git a/front-end/src/directive/waves/waves.js b/front-end/src/directive/waves/waves.js new file mode 100644 index 0000000..fc32338 --- /dev/null +++ b/front-end/src/directive/waves/waves.js @@ -0,0 +1,72 @@ +import './waves.css'; + +const context = '@@wavesContext'; + +function handleClick(el, binding) { + function handle(e) { + const customOpts = Object.assign({}, binding.value); + const opts = Object.assign({ + ele: el, // 波纹作用元素 + type: 'hit', // hit 点击位置扩散 center中心点扩展 + color: 'rgba(0, 0, 0, 0.15)' // 波纹颜色 + }, + customOpts + ); + const target = opts.ele; + if (target) { + target.style.position = 'relative'; + target.style.overflow = 'hidden'; + const rect = target.getBoundingClientRect(); + let ripple = target.querySelector('.waves-ripple'); + if (!ripple) { + ripple = document.createElement('span'); + ripple.className = 'waves-ripple'; + ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px'; + target.appendChild(ripple); + } else { + ripple.className = 'waves-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.documentElement.scrollTop || + document.body.scrollTop) + 'px'; + ripple.style.left = + (e.pageX - rect.left - ripple.offsetWidth / 2 - document.documentElement.scrollLeft || + document.body.scrollLeft) + 'px'; + } + ripple.style.backgroundColor = opts.color; + ripple.className = 'waves-ripple z-active'; + return false; + } + } + + if (!el[context]) { + el[context] = { + removeHandle: handle + }; + } else { + el[context].removeHandle = handle; + } + + return handle; +} + +export default { + bind(el, binding) { + el.addEventListener('click', handleClick(el, binding), false); + }, + update(el, binding) { + el.removeEventListener('click', el[context].removeHandle, false); + el.addEventListener('click', handleClick(el, binding), false); + }, + unbind(el) { + el.removeEventListener('click', el[context].removeHandle, false); + el[context] = null; + delete el[context]; + } +}; diff --git a/front-end/src/filters/index.js b/front-end/src/filters/index.js new file mode 100644 index 0000000..285d40c --- /dev/null +++ b/front-end/src/filters/index.js @@ -0,0 +1,81 @@ +// import parseTime, formatTime and set to filter +export { parseTime, formatTime } from '@/utils'; + +/** + * Show plural label if time is plural number + * @param {number} time + * @param {string} label + * @return {string} + */ +function pluralize(time, label) { + if (time === 1) { + return time + label; + } + return time + label + 's'; +} + +/** + * @param {number} time + */ +export function timeAgo(time) { + const between = Date.now() / 1000 - Number(time); + if (between < 3600) { + return pluralize(~~(between / 60), ' minute'); + } else if (between < 86400) { + return pluralize(~~(between / 3600), ' hour'); + } else { + return pluralize(~~(between / 86400), ' day'); + } +} + +/** + * Number formatting + * like 10000 => 10k + * @param {number} num + * @param {number} digits + */ +export function numberFormatter(num, digits) { + const si = [ + { value: 1e18, symbol: 'E' }, + { value: 1e15, symbol: 'P' }, + { value: 1e12, symbol: 'T' }, + { value: 1e9, symbol: 'G' }, + { value: 1e6, symbol: 'M' }, + { value: 1e3, symbol: 'k' }, + ]; + for (let i = 0; i < si.length; i++) { + if (num >= si[i].value) { + return ( + (num / si[i].value).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol + ); + } + } + return num.toString(); +} + +/** + * 10000 => "10,000" + * @param {number} num + */ +export function toThousandFilter(num) { + return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ',')); +} + +/** + * Upper case first char + * @param {String} string + */ +export function uppercaseFirst(string) { + return string.charAt(0).toUpperCase() + string.slice(1); +} +/** + * + * @param {*} val + * @returns + */ +export function phoneFilter(val) { + if (val) { + const reg = /^(.{3}).*(.{4})$/; + return val.replace(reg, '$1****$2'); + } +} diff --git a/front-end/src/icons/index.js b/front-end/src/icons/index.js new file mode 100644 index 0000000..3a58838 --- /dev/null +++ b/front-end/src/icons/index.js @@ -0,0 +1,9 @@ +import Vue from 'vue'; +import SvgIcon from '@/components/SvgIcon';// svg component + +// register globally +Vue.component('svg-icon', SvgIcon); + +const req = require.context('./svg', false, /\.svg$/); +const requireAll = requireContext => requireContext.keys().map(requireContext); +requireAll(req); diff --git a/front-end/src/icons/svg/404.svg b/front-end/src/icons/svg/404.svg new file mode 100644 index 0000000..6df5019 --- /dev/null +++ b/front-end/src/icons/svg/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/bug.svg b/front-end/src/icons/svg/bug.svg new file mode 100644 index 0000000..05a150d --- /dev/null +++ b/front-end/src/icons/svg/bug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/build.svg b/front-end/src/icons/svg/build.svg new file mode 100644 index 0000000..97c4688 --- /dev/null +++ b/front-end/src/icons/svg/build.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/business-center.svg b/front-end/src/icons/svg/business-center.svg new file mode 100644 index 0000000..2712f79 --- /dev/null +++ b/front-end/src/icons/svg/business-center.svg @@ -0,0 +1,4 @@ + + + + diff --git a/front-end/src/icons/svg/cascader.svg b/front-end/src/icons/svg/cascader.svg new file mode 100644 index 0000000..e256024 --- /dev/null +++ b/front-end/src/icons/svg/cascader.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/chart.svg b/front-end/src/icons/svg/chart.svg new file mode 100644 index 0000000..27728fb --- /dev/null +++ b/front-end/src/icons/svg/chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/checkbox.svg b/front-end/src/icons/svg/checkbox.svg new file mode 100644 index 0000000..013fd3a --- /dev/null +++ b/front-end/src/icons/svg/checkbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/clipboard.svg b/front-end/src/icons/svg/clipboard.svg new file mode 100644 index 0000000..90923ff --- /dev/null +++ b/front-end/src/icons/svg/clipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/code.svg b/front-end/src/icons/svg/code.svg new file mode 100644 index 0000000..ed4d23c --- /dev/null +++ b/front-end/src/icons/svg/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/color.svg b/front-end/src/icons/svg/color.svg new file mode 100644 index 0000000..44a81aa --- /dev/null +++ b/front-end/src/icons/svg/color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/component.svg b/front-end/src/icons/svg/component.svg new file mode 100644 index 0000000..29c3458 --- /dev/null +++ b/front-end/src/icons/svg/component.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/dashboard.svg b/front-end/src/icons/svg/dashboard.svg new file mode 100644 index 0000000..5317d37 --- /dev/null +++ b/front-end/src/icons/svg/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/date-range.svg b/front-end/src/icons/svg/date-range.svg new file mode 100644 index 0000000..fda571e --- /dev/null +++ b/front-end/src/icons/svg/date-range.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/date.svg b/front-end/src/icons/svg/date.svg new file mode 100644 index 0000000..52dc73e --- /dev/null +++ b/front-end/src/icons/svg/date.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/dict.svg b/front-end/src/icons/svg/dict.svg new file mode 100644 index 0000000..4849377 --- /dev/null +++ b/front-end/src/icons/svg/dict.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/documentation.svg b/front-end/src/icons/svg/documentation.svg new file mode 100644 index 0000000..7043122 --- /dev/null +++ b/front-end/src/icons/svg/documentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/download.svg b/front-end/src/icons/svg/download.svg new file mode 100644 index 0000000..c896951 --- /dev/null +++ b/front-end/src/icons/svg/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/drag.svg b/front-end/src/icons/svg/drag.svg new file mode 100644 index 0000000..4185d3c --- /dev/null +++ b/front-end/src/icons/svg/drag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/druid.svg b/front-end/src/icons/svg/druid.svg new file mode 100644 index 0000000..a2b4b4e --- /dev/null +++ b/front-end/src/icons/svg/druid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/edit.svg b/front-end/src/icons/svg/edit.svg new file mode 100644 index 0000000..d26101f --- /dev/null +++ b/front-end/src/icons/svg/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/education.svg b/front-end/src/icons/svg/education.svg new file mode 100644 index 0000000..7bfb01d --- /dev/null +++ b/front-end/src/icons/svg/education.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/email.svg b/front-end/src/icons/svg/email.svg new file mode 100644 index 0000000..74d25e2 --- /dev/null +++ b/front-end/src/icons/svg/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/example.svg b/front-end/src/icons/svg/example.svg new file mode 100644 index 0000000..46f42b5 --- /dev/null +++ b/front-end/src/icons/svg/example.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/excel.svg b/front-end/src/icons/svg/excel.svg new file mode 100644 index 0000000..74d97b8 --- /dev/null +++ b/front-end/src/icons/svg/excel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/exit-fullscreen.svg b/front-end/src/icons/svg/exit-fullscreen.svg new file mode 100644 index 0000000..485c128 --- /dev/null +++ b/front-end/src/icons/svg/exit-fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/eye-open.svg b/front-end/src/icons/svg/eye-open.svg new file mode 100644 index 0000000..88dcc98 --- /dev/null +++ b/front-end/src/icons/svg/eye-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/eye.svg b/front-end/src/icons/svg/eye.svg new file mode 100644 index 0000000..16ed2d8 --- /dev/null +++ b/front-end/src/icons/svg/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/form.svg b/front-end/src/icons/svg/form.svg new file mode 100644 index 0000000..dcbaa18 --- /dev/null +++ b/front-end/src/icons/svg/form.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/fullscreen.svg b/front-end/src/icons/svg/fullscreen.svg new file mode 100644 index 0000000..0e86b6f --- /dev/null +++ b/front-end/src/icons/svg/fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/github.svg b/front-end/src/icons/svg/github.svg new file mode 100644 index 0000000..db0a0d4 --- /dev/null +++ b/front-end/src/icons/svg/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/guide.svg b/front-end/src/icons/svg/guide.svg new file mode 100644 index 0000000..b271001 --- /dev/null +++ b/front-end/src/icons/svg/guide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/html.svg b/front-end/src/icons/svg/html.svg new file mode 100644 index 0000000..86fc845 --- /dev/null +++ b/front-end/src/icons/svg/html.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/icon.svg b/front-end/src/icons/svg/icon.svg new file mode 100644 index 0000000..82be8ee --- /dev/null +++ b/front-end/src/icons/svg/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/input.svg b/front-end/src/icons/svg/input.svg new file mode 100644 index 0000000..ab91381 --- /dev/null +++ b/front-end/src/icons/svg/input.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/international.svg b/front-end/src/icons/svg/international.svg new file mode 100644 index 0000000..e9b56ee --- /dev/null +++ b/front-end/src/icons/svg/international.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/job.svg b/front-end/src/icons/svg/job.svg new file mode 100644 index 0000000..2a93a25 --- /dev/null +++ b/front-end/src/icons/svg/job.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/language.svg b/front-end/src/icons/svg/language.svg new file mode 100644 index 0000000..0082b57 --- /dev/null +++ b/front-end/src/icons/svg/language.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/link.svg b/front-end/src/icons/svg/link.svg new file mode 100644 index 0000000..48197ba --- /dev/null +++ b/front-end/src/icons/svg/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/list.svg b/front-end/src/icons/svg/list.svg new file mode 100644 index 0000000..20259ed --- /dev/null +++ b/front-end/src/icons/svg/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/lock.svg b/front-end/src/icons/svg/lock.svg new file mode 100644 index 0000000..74fee54 --- /dev/null +++ b/front-end/src/icons/svg/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/log.svg b/front-end/src/icons/svg/log.svg new file mode 100644 index 0000000..d879d33 --- /dev/null +++ b/front-end/src/icons/svg/log.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/logininfor.svg b/front-end/src/icons/svg/logininfor.svg new file mode 100644 index 0000000..267f844 --- /dev/null +++ b/front-end/src/icons/svg/logininfor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/logout.svg b/front-end/src/icons/svg/logout.svg new file mode 100644 index 0000000..72780f7 --- /dev/null +++ b/front-end/src/icons/svg/logout.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/message.svg b/front-end/src/icons/svg/message.svg new file mode 100644 index 0000000..14ca817 --- /dev/null +++ b/front-end/src/icons/svg/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/money.svg b/front-end/src/icons/svg/money.svg new file mode 100644 index 0000000..c1580de --- /dev/null +++ b/front-end/src/icons/svg/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/monitor.svg b/front-end/src/icons/svg/monitor.svg new file mode 100644 index 0000000..bc308cb --- /dev/null +++ b/front-end/src/icons/svg/monitor.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/more.svg b/front-end/src/icons/svg/more.svg new file mode 100644 index 0000000..a2a37af --- /dev/null +++ b/front-end/src/icons/svg/more.svg @@ -0,0 +1,3 @@ + + + diff --git a/front-end/src/icons/svg/nested.svg b/front-end/src/icons/svg/nested.svg new file mode 100644 index 0000000..06713a8 --- /dev/null +++ b/front-end/src/icons/svg/nested.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/number.svg b/front-end/src/icons/svg/number.svg new file mode 100644 index 0000000..ad5ce9a --- /dev/null +++ b/front-end/src/icons/svg/number.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/online.svg b/front-end/src/icons/svg/online.svg new file mode 100644 index 0000000..330a202 --- /dev/null +++ b/front-end/src/icons/svg/online.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/password.svg b/front-end/src/icons/svg/password.svg new file mode 100644 index 0000000..6c64def --- /dev/null +++ b/front-end/src/icons/svg/password.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/pdf.svg b/front-end/src/icons/svg/pdf.svg new file mode 100644 index 0000000..957aa0c --- /dev/null +++ b/front-end/src/icons/svg/pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/people.svg b/front-end/src/icons/svg/people.svg new file mode 100644 index 0000000..2bd54ae --- /dev/null +++ b/front-end/src/icons/svg/people.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/peoples.svg b/front-end/src/icons/svg/peoples.svg new file mode 100644 index 0000000..aab852e --- /dev/null +++ b/front-end/src/icons/svg/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/phone.svg b/front-end/src/icons/svg/phone.svg new file mode 100644 index 0000000..ab8e8c4 --- /dev/null +++ b/front-end/src/icons/svg/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/pointer.svg b/front-end/src/icons/svg/pointer.svg new file mode 100644 index 0000000..10e2fc5 --- /dev/null +++ b/front-end/src/icons/svg/pointer.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/post.svg b/front-end/src/icons/svg/post.svg new file mode 100644 index 0000000..2922c61 --- /dev/null +++ b/front-end/src/icons/svg/post.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/qq.svg b/front-end/src/icons/svg/qq.svg new file mode 100644 index 0000000..ee13d4e --- /dev/null +++ b/front-end/src/icons/svg/qq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/question.svg b/front-end/src/icons/svg/question.svg new file mode 100644 index 0000000..cf75bd4 --- /dev/null +++ b/front-end/src/icons/svg/question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/radio.svg b/front-end/src/icons/svg/radio.svg new file mode 100644 index 0000000..0cde345 --- /dev/null +++ b/front-end/src/icons/svg/radio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/rate.svg b/front-end/src/icons/svg/rate.svg new file mode 100644 index 0000000..aa3b14d --- /dev/null +++ b/front-end/src/icons/svg/rate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/row.svg b/front-end/src/icons/svg/row.svg new file mode 100644 index 0000000..0780992 --- /dev/null +++ b/front-end/src/icons/svg/row.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/search.svg b/front-end/src/icons/svg/search.svg new file mode 100644 index 0000000..84233dd --- /dev/null +++ b/front-end/src/icons/svg/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/select.svg b/front-end/src/icons/svg/select.svg new file mode 100644 index 0000000..d628382 --- /dev/null +++ b/front-end/src/icons/svg/select.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/server.svg b/front-end/src/icons/svg/server.svg new file mode 100644 index 0000000..ca37b00 --- /dev/null +++ b/front-end/src/icons/svg/server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/setting-center.svg b/front-end/src/icons/svg/setting-center.svg new file mode 100644 index 0000000..714ec9c --- /dev/null +++ b/front-end/src/icons/svg/setting-center.svg @@ -0,0 +1,4 @@ + + + + diff --git a/front-end/src/icons/svg/shopping.svg b/front-end/src/icons/svg/shopping.svg new file mode 100644 index 0000000..87513e7 --- /dev/null +++ b/front-end/src/icons/svg/shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/size.svg b/front-end/src/icons/svg/size.svg new file mode 100644 index 0000000..ddb25b8 --- /dev/null +++ b/front-end/src/icons/svg/size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/skill.svg b/front-end/src/icons/svg/skill.svg new file mode 100644 index 0000000..a3b7312 --- /dev/null +++ b/front-end/src/icons/svg/skill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/slider.svg b/front-end/src/icons/svg/slider.svg new file mode 100644 index 0000000..fbe4f39 --- /dev/null +++ b/front-end/src/icons/svg/slider.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/star.svg b/front-end/src/icons/svg/star.svg new file mode 100644 index 0000000..6cf86e6 --- /dev/null +++ b/front-end/src/icons/svg/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/swagger.svg b/front-end/src/icons/svg/swagger.svg new file mode 100644 index 0000000..05d4e7b --- /dev/null +++ b/front-end/src/icons/svg/swagger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/switch.svg b/front-end/src/icons/svg/switch.svg new file mode 100644 index 0000000..0ba61e3 --- /dev/null +++ b/front-end/src/icons/svg/switch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/system.svg b/front-end/src/icons/svg/system.svg new file mode 100644 index 0000000..dba28cf --- /dev/null +++ b/front-end/src/icons/svg/system.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/tab.svg b/front-end/src/icons/svg/tab.svg new file mode 100644 index 0000000..b4b48e4 --- /dev/null +++ b/front-end/src/icons/svg/tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/table.svg b/front-end/src/icons/svg/table.svg new file mode 100644 index 0000000..0e3dc9d --- /dev/null +++ b/front-end/src/icons/svg/table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/textarea.svg b/front-end/src/icons/svg/textarea.svg new file mode 100644 index 0000000..2709f29 --- /dev/null +++ b/front-end/src/icons/svg/textarea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/theme.svg b/front-end/src/icons/svg/theme.svg new file mode 100644 index 0000000..5982a2f --- /dev/null +++ b/front-end/src/icons/svg/theme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/time-range.svg b/front-end/src/icons/svg/time-range.svg new file mode 100644 index 0000000..13c1202 --- /dev/null +++ b/front-end/src/icons/svg/time-range.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/time.svg b/front-end/src/icons/svg/time.svg new file mode 100644 index 0000000..b376e32 --- /dev/null +++ b/front-end/src/icons/svg/time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/tool.svg b/front-end/src/icons/svg/tool.svg new file mode 100644 index 0000000..c813067 --- /dev/null +++ b/front-end/src/icons/svg/tool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/tree-table.svg b/front-end/src/icons/svg/tree-table.svg new file mode 100644 index 0000000..8aafdb8 --- /dev/null +++ b/front-end/src/icons/svg/tree-table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/tree.svg b/front-end/src/icons/svg/tree.svg new file mode 100644 index 0000000..dd4b7dd --- /dev/null +++ b/front-end/src/icons/svg/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/upload.svg b/front-end/src/icons/svg/upload.svg new file mode 100644 index 0000000..bae49c0 --- /dev/null +++ b/front-end/src/icons/svg/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/user.svg b/front-end/src/icons/svg/user.svg new file mode 100644 index 0000000..59c623f --- /dev/null +++ b/front-end/src/icons/svg/user.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/validCode.svg b/front-end/src/icons/svg/validCode.svg new file mode 100644 index 0000000..cfb1021 --- /dev/null +++ b/front-end/src/icons/svg/validCode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/wechat.svg b/front-end/src/icons/svg/wechat.svg new file mode 100644 index 0000000..c586e55 --- /dev/null +++ b/front-end/src/icons/svg/wechat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/word.svg b/front-end/src/icons/svg/word.svg new file mode 100644 index 0000000..e9cef7d --- /dev/null +++ b/front-end/src/icons/svg/word.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svg/zip.svg b/front-end/src/icons/svg/zip.svg new file mode 100644 index 0000000..f806fc4 --- /dev/null +++ b/front-end/src/icons/svg/zip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front-end/src/icons/svgo.yml b/front-end/src/icons/svgo.yml new file mode 100644 index 0000000..d11906a --- /dev/null +++ b/front-end/src/icons/svgo.yml @@ -0,0 +1,22 @@ +# replace default config + +# multipass: true +# full: true + +plugins: + + # - name + # + # or: + # - name: false + # - name: true + # + # or: + # - name: + # param1: 1 + # param2: 2 + +- removeAttrs: + attrs: + - 'fill' + - 'fill-rule' diff --git a/front-end/src/layout/EmptyRouter.vue b/front-end/src/layout/EmptyRouter.vue new file mode 100644 index 0000000..279e8d7 --- /dev/null +++ b/front-end/src/layout/EmptyRouter.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/front-end/src/layout/EmptyRouterAlive.vue b/front-end/src/layout/EmptyRouterAlive.vue new file mode 100644 index 0000000..ea4eaf5 --- /dev/null +++ b/front-end/src/layout/EmptyRouterAlive.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/front-end/src/layout/components/AppMain.vue b/front-end/src/layout/components/AppMain.vue new file mode 100644 index 0000000..f297f50 --- /dev/null +++ b/front-end/src/layout/components/AppMain.vue @@ -0,0 +1,51 @@ + + + + + + + diff --git a/front-end/src/layout/components/Contact/index.vue b/front-end/src/layout/components/Contact/index.vue new file mode 100644 index 0000000..855da84 --- /dev/null +++ b/front-end/src/layout/components/Contact/index.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/front-end/src/layout/components/Navbar.vue b/front-end/src/layout/components/Navbar.vue new file mode 100644 index 0000000..b35c829 --- /dev/null +++ b/front-end/src/layout/components/Navbar.vue @@ -0,0 +1,207 @@ + + + + + diff --git a/front-end/src/layout/components/Settings/index.vue b/front-end/src/layout/components/Settings/index.vue new file mode 100644 index 0000000..4919f4a --- /dev/null +++ b/front-end/src/layout/components/Settings/index.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/front-end/src/layout/components/Sidebar/FixiOSBug.js b/front-end/src/layout/components/Sidebar/FixiOSBug.js new file mode 100644 index 0000000..9386e52 --- /dev/null +++ b/front-end/src/layout/components/Sidebar/FixiOSBug.js @@ -0,0 +1,26 @@ +export default { + computed: { + device() { + return this.$store.state.app.device; + } + }, + mounted() { + // In order to fix the click on menu on the ios device will trigger the mouseleave bug + // https://github.com/PanJiaChen/vue-element-admin/issues/1135 + this.fixBugIniOS(); + }, + methods: { + fixBugIniOS() { + const $subMenu = this.$refs.subMenu; + if ($subMenu) { + const handleMouseleave = $subMenu.handleMouseleave; + $subMenu.handleMouseleave = (e) => { + if (this.device === 'mobile') { + return; + } + handleMouseleave(e); + }; + } + } + } +}; diff --git a/front-end/src/layout/components/Sidebar/HoverItem.vue b/front-end/src/layout/components/Sidebar/HoverItem.vue new file mode 100644 index 0000000..6fb5fff --- /dev/null +++ b/front-end/src/layout/components/Sidebar/HoverItem.vue @@ -0,0 +1,285 @@ + + + diff --git a/front-end/src/layout/components/Sidebar/Item.vue b/front-end/src/layout/components/Sidebar/Item.vue new file mode 100644 index 0000000..3663a3a --- /dev/null +++ b/front-end/src/layout/components/Sidebar/Item.vue @@ -0,0 +1,123 @@ + + + diff --git a/front-end/src/layout/components/Sidebar/Link.vue b/front-end/src/layout/components/Sidebar/Link.vue new file mode 100644 index 0000000..c0f4f08 --- /dev/null +++ b/front-end/src/layout/components/Sidebar/Link.vue @@ -0,0 +1,43 @@ + + + diff --git a/front-end/src/layout/components/Sidebar/Logo.vue b/front-end/src/layout/components/Sidebar/Logo.vue new file mode 100644 index 0000000..53b6dbb --- /dev/null +++ b/front-end/src/layout/components/Sidebar/Logo.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/front-end/src/layout/components/Sidebar/SidebarItem.vue b/front-end/src/layout/components/Sidebar/SidebarItem.vue new file mode 100644 index 0000000..cbdc241 --- /dev/null +++ b/front-end/src/layout/components/Sidebar/SidebarItem.vue @@ -0,0 +1,141 @@ + + + + diff --git a/front-end/src/layout/components/Sidebar/index.vue b/front-end/src/layout/components/Sidebar/index.vue new file mode 100644 index 0000000..6bdc44e --- /dev/null +++ b/front-end/src/layout/components/Sidebar/index.vue @@ -0,0 +1,92 @@ + + + diff --git a/front-end/src/layout/components/TagsView/ScrollPane.vue b/front-end/src/layout/components/TagsView/ScrollPane.vue new file mode 100644 index 0000000..b81ac7c --- /dev/null +++ b/front-end/src/layout/components/TagsView/ScrollPane.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/front-end/src/layout/components/TagsView/index.vue b/front-end/src/layout/components/TagsView/index.vue new file mode 100644 index 0000000..98a14ba --- /dev/null +++ b/front-end/src/layout/components/TagsView/index.vue @@ -0,0 +1,358 @@ + + + + + + + diff --git a/front-end/src/layout/components/WelcomeDialog/index.vue b/front-end/src/layout/components/WelcomeDialog/index.vue new file mode 100644 index 0000000..3b94a8e --- /dev/null +++ b/front-end/src/layout/components/WelcomeDialog/index.vue @@ -0,0 +1,108 @@ + + + + diff --git a/front-end/src/layout/components/index.js b/front-end/src/layout/components/index.js new file mode 100644 index 0000000..585d6a5 --- /dev/null +++ b/front-end/src/layout/components/index.js @@ -0,0 +1,7 @@ +export { default as AppMain } from './AppMain'; +export { default as Navbar } from './Navbar'; +export { default as Settings } from './Settings'; +export { default as Sidebar } from './Sidebar/index.vue'; +export { default as TagsView } from './TagsView/index.vue'; +export { default as Contact } from './Contact/index.vue'; +export { default as WelcomeDialog } from './WelcomeDialog'; diff --git a/front-end/src/layout/index.vue b/front-end/src/layout/index.vue new file mode 100644 index 0000000..128627c --- /dev/null +++ b/front-end/src/layout/index.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/front-end/src/layout/mixin/ResizeHandler.js b/front-end/src/layout/mixin/ResizeHandler.js new file mode 100644 index 0000000..0621d53 --- /dev/null +++ b/front-end/src/layout/mixin/ResizeHandler.js @@ -0,0 +1,49 @@ +import store from '@/store'; + +const { body } = document; +const WIDTH = 992; // refer to Bootstrap's responsive design + +export default { + watch: { + $route(route) { + if (this.device === 'mobile' && this.sidebar.opened) { + store.dispatch('app/closeSideBar', { withoutAnimation: false }); + } + }, + }, + beforeMount() { + window.addEventListener('resize', this.$_resizeHandler); + }, + beforeDestroy() { + window.removeEventListener('resize', this.$_resizeHandler); + }, + mounted() { + const isMobile = this.$_isMobile(); + if (isMobile) { + // 禁用手机模式 + // store.dispatch('app/toggleDevice', 'mobile'); + store.dispatch('app/closeSideBar', { withoutAnimation: true }); + } + }, + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_isMobile() { + const rect = body.getBoundingClientRect(); + return rect.width - 1 < WIDTH; + }, + $_resizeHandler() { + if (!document.hidden) { + const isMobile = this.$_isMobile(); + // 禁用手机模式 + // store.dispatch('app/toggleDevice', isMobile ? 'mobile' : 'desktop'); + + if (isMobile) { + store.dispatch('app/closeSideBar', { withoutAnimation: true }); + } else { + store.dispatch('app/openSideBar', { withoutAnimation: false }); + } + } + }, + }, +}; diff --git a/front-end/src/main.js b/front-end/src/main.js new file mode 100644 index 0000000..ed81021 --- /dev/null +++ b/front-end/src/main.js @@ -0,0 +1,128 @@ +import Vue from 'vue'; + +import Cookies from 'js-cookie'; + +import 'normalize.css/normalize.css'; // a modern alternative to CSS resets + +import Element from 'element-ui'; +import './styles/element-variables.scss'; +import 'element-ui/lib/theme-chalk/base.css'; +// import enLang from 'element-ui/lib/locale/lang/en'// 如果使用中文语言包请默认支持,无需额外引入,请删除该依赖 +// import UmyUi from 'umy-ui' +// import 'umy-ui/lib/theme-chalk/index.css' // 引入样式 + +// 引入vxe-table 组件 https://vxetable.cn/#/table/start/install +import XEUtils from 'xe-utils'; +import { + VXETable, + Header, + Column, + Table, + Icon, + Keyboard, + Tooltip, + Colgroup, + Menu, +} from 'vxe-table'; +import zhCN from 'vxe-table/lib/locale/lang/zh-CN'; +// 按需加载的方式默认是不带国际化的,自定义国际化需要自行解析占位符 '{0}',例如: +VXETable.setup({ + i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args), + zIndex: 3001, + icon: { + TABLE_SORT_ASC: 'vxe-icon--caret-top', + TABLE_SORT_DESC: 'vxe-icon--caret-bottom', + TABLE_FILTER_NONE: 'vxe-icon--funnel', + TABLE_FILTER_MATCH: 'vxe-icon--funnel', + TABLE_EDIT: 'vxe-icon--edit-outline', + TABLE_TREE_LOADED: 'vxe-icon--refresh roll', + TABLE_TREE_OPEN: 'vxe-icon--caret-right rotate90', + TABLE_TREE_CLOSE: 'vxe-icon--caret-right', + TABLE_EXPAND_LOADED: 'vxe-icon--refresh roll', + TABLE_EXPAND_OPEN: 'vxe-icon--arrow-right rotate90', + TABLE_EXPAND_CLOSE: 'vxe-icon--arrow-right', + }, +}); +// 表格功能 +Vue.use(Keyboard).use(Header).use(Menu).use(Column).use(Table).use(Icon).use(Tooltip).use(Colgroup); + +import '@/styles/index.scss'; // global css +import '@/styles/ruoyi.scss'; // global css +import 'vue-draggable-resizable/dist/VueDraggableResizable.css'; + +import App from './App'; +import store from './store'; +import router from './router'; + +import './icons'; // icon +import './permission'; // permission control +import './utils/error-log'; // error log +import '@/utils/prototype-native.js'; // window原生方法绑定 +import '@/utils/prototype-vue.js'; // Vue.prototype.$全局方法绑定 + +import permission from './directive/permission'; +Vue.use(permission); + +// 注册全局实用过滤器 +import * as filters from './filters'; +Object.keys(filters).forEach(key => { + Vue.filter(key, filters[key]); +}); + +// 自定义的npm包 UI组件 +import FeiJiUI from './packages'; +Vue.use(FeiJiUI); +Vue.prototype.$ScrollLoad = FeiJiUI.ScrollLoad; + +// 自定义的npm包 用于个人列表配置 +import ElementTableSortable from './components/ElementTableSortable'; +Vue.use(ElementTableSortable); + +// 自定义组件 全局挂载 +import componentsUI from '@/components'; +Vue.use(componentsUI); + +import vuescroll from 'vuescroll'; +Vue.use(vuescroll); +// Vue.use(vuescroll, { +// ops: {}, // 在这里设置全局默认配置 +// name: 'vueScroll', // 在这里自定义组件名字,默认是vueScroll +// }); + +import SuperFlow from 'vue-super-flow'; +import 'vue-super-flow/lib/index.css'; +Vue.use(SuperFlow); + +import VueClipboard from 'vue-clipboard2'; +Vue.use(VueClipboard); + +// https://vue-scrollto.netlify.app/docs/#as-a-vue-directive +import VueScrollTo from 'vue-scrollto'; +Vue.use(VueScrollTo, { + container: 'body', + duration: 500, + easing: 'ease', + offset: 0, + force: true, + cancelable: true, + onStart: false, + onDone: false, + onCancel: false, + x: false, + y: true, +}); + +Vue.use(Element, { + size: Cookies.get('size') || 'mini', // set element-ui default size + // locale: enLang // 如果使用中文,无需设置,请删除 +}); +// Vue.use(UmyUi) + +Vue.config.productionTip = false; + +new Vue({ + el: '#app', + router, + store, + render: h => h(App), +}); diff --git a/front-end/src/packages/BjCheckboxLov/index.vue b/front-end/src/packages/BjCheckboxLov/index.vue new file mode 100644 index 0000000..ad05f01 --- /dev/null +++ b/front-end/src/packages/BjCheckboxLov/index.vue @@ -0,0 +1,129 @@ + + diff --git a/front-end/src/packages/BjCopyIcon/index.vue b/front-end/src/packages/BjCopyIcon/index.vue new file mode 100644 index 0000000..058a9f1 --- /dev/null +++ b/front-end/src/packages/BjCopyIcon/index.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/front-end/src/packages/BjDateTimerPicker/index.vue b/front-end/src/packages/BjDateTimerPicker/index.vue new file mode 100644 index 0000000..7dcfab2 --- /dev/null +++ b/front-end/src/packages/BjDateTimerPicker/index.vue @@ -0,0 +1,117 @@ + + diff --git a/front-end/src/packages/BjDialog/index.vue b/front-end/src/packages/BjDialog/index.vue new file mode 100644 index 0000000..f8b9322 --- /dev/null +++ b/front-end/src/packages/BjDialog/index.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/front-end/src/packages/BjDialogList/index.vue b/front-end/src/packages/BjDialogList/index.vue new file mode 100644 index 0000000..aeeb650 --- /dev/null +++ b/front-end/src/packages/BjDialogList/index.vue @@ -0,0 +1,490 @@ + + + diff --git a/front-end/src/packages/BjDialogTable/index.vue b/front-end/src/packages/BjDialogTable/index.vue new file mode 100644 index 0000000..a5a0474 --- /dev/null +++ b/front-end/src/packages/BjDialogTable/index.vue @@ -0,0 +1,566 @@ + + + diff --git a/front-end/src/packages/BjDivider/index.vue b/front-end/src/packages/BjDivider/index.vue new file mode 100644 index 0000000..c48b3f4 --- /dev/null +++ b/front-end/src/packages/BjDivider/index.vue @@ -0,0 +1,137 @@ + + + diff --git a/front-end/src/packages/BjDrawerForm/index.vue b/front-end/src/packages/BjDrawerForm/index.vue new file mode 100644 index 0000000..158d801 --- /dev/null +++ b/front-end/src/packages/BjDrawerForm/index.vue @@ -0,0 +1,155 @@ + + + + diff --git a/front-end/src/packages/BjImportFile/index.vue b/front-end/src/packages/BjImportFile/index.vue new file mode 100644 index 0000000..5fbc608 --- /dev/null +++ b/front-end/src/packages/BjImportFile/index.vue @@ -0,0 +1,184 @@ + + + diff --git a/front-end/src/packages/BjInputCode/index.vue b/front-end/src/packages/BjInputCode/index.vue new file mode 100644 index 0000000..273e9b1 --- /dev/null +++ b/front-end/src/packages/BjInputCode/index.vue @@ -0,0 +1,105 @@ + + + + + + diff --git a/front-end/src/packages/BjInputMoney/index.vue b/front-end/src/packages/BjInputMoney/index.vue new file mode 100644 index 0000000..54b5998 --- /dev/null +++ b/front-end/src/packages/BjInputMoney/index.vue @@ -0,0 +1,81 @@ + + + diff --git a/front-end/src/packages/BjInputNumber/index.vue b/front-end/src/packages/BjInputNumber/index.vue new file mode 100644 index 0000000..547a2e1 --- /dev/null +++ b/front-end/src/packages/BjInputNumber/index.vue @@ -0,0 +1,181 @@ + + + diff --git a/front-end/src/packages/BjPagingTable/README.md b/front-end/src/packages/BjPagingTable/README.md new file mode 100644 index 0000000..1c41c45 --- /dev/null +++ b/front-end/src/packages/BjPagingTable/README.md @@ -0,0 +1,25 @@ +# BjPagingTable 简单的分页表格 + +## 使用方法 + +```js + + + + +``` + +```js + data(){ + tableApi:commonApi.getLogPage, //必填 + defaultParams:{} //接口的默认参数,非必填 + } +``` diff --git a/front-end/src/packages/BjPagingTable/index.vue b/front-end/src/packages/BjPagingTable/index.vue new file mode 100644 index 0000000..c30f59f --- /dev/null +++ b/front-end/src/packages/BjPagingTable/index.vue @@ -0,0 +1,275 @@ + + + diff --git a/front-end/src/packages/BjRadioLov/index.vue b/front-end/src/packages/BjRadioLov/index.vue new file mode 100644 index 0000000..91026e4 --- /dev/null +++ b/front-end/src/packages/BjRadioLov/index.vue @@ -0,0 +1,130 @@ + + diff --git a/front-end/src/packages/BjRouteTabs/index.vue b/front-end/src/packages/BjRouteTabs/index.vue new file mode 100644 index 0000000..03c3114 --- /dev/null +++ b/front-end/src/packages/BjRouteTabs/index.vue @@ -0,0 +1,131 @@ + + + + diff --git a/front-end/src/packages/BjSelectChinaArea/index.vue b/front-end/src/packages/BjSelectChinaArea/index.vue new file mode 100644 index 0000000..71fb4ad --- /dev/null +++ b/front-end/src/packages/BjSelectChinaArea/index.vue @@ -0,0 +1,153 @@ + + + diff --git a/front-end/src/packages/BjSelectLov/index.vue b/front-end/src/packages/BjSelectLov/index.vue new file mode 100644 index 0000000..48cff6c --- /dev/null +++ b/front-end/src/packages/BjSelectLov/index.vue @@ -0,0 +1,200 @@ + + diff --git a/front-end/src/packages/BjSelectProvinces/index.vue b/front-end/src/packages/BjSelectProvinces/index.vue new file mode 100644 index 0000000..935237c --- /dev/null +++ b/front-end/src/packages/BjSelectProvinces/index.vue @@ -0,0 +1,203 @@ + + + + diff --git a/front-end/src/packages/BjTag/index.vue b/front-end/src/packages/BjTag/index.vue new file mode 100644 index 0000000..85308dc --- /dev/null +++ b/front-end/src/packages/BjTag/index.vue @@ -0,0 +1,108 @@ + + + diff --git a/front-end/src/packages/BjTagList/index.vue b/front-end/src/packages/BjTagList/index.vue new file mode 100644 index 0000000..abd9ba9 --- /dev/null +++ b/front-end/src/packages/BjTagList/index.vue @@ -0,0 +1,89 @@ + + + diff --git a/front-end/src/packages/BjTextarea/index.vue b/front-end/src/packages/BjTextarea/index.vue new file mode 100644 index 0000000..209f8cb --- /dev/null +++ b/front-end/src/packages/BjTextarea/index.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/front-end/src/packages/BjUpload/index.vue b/front-end/src/packages/BjUpload/index.vue new file mode 100644 index 0000000..8b5fc8c --- /dev/null +++ b/front-end/src/packages/BjUpload/index.vue @@ -0,0 +1,152 @@ + + + + diff --git a/front-end/src/packages/README.md b/front-end/src/packages/README.md new file mode 100644 index 0000000..7d974b1 --- /dev/null +++ b/front-end/src/packages/README.md @@ -0,0 +1,32 @@ +## Introduction + +基于 vue 和 element-ui + +- BjImportFile +- BjDialogList +- BjDivider +- BjDrawerForm +- BjSelectLov +- BjRouteTabs +- BjInputMoney +- ScrollLoad +- BjPagingTable +- BjSelectProvinces +- BjInputNumber +- BjSelectChinaArea +- BjUpload +- BjDialogTable +- BjInputCode +- BjTag + +## Getting started + +```bash +# install +npm i bj-ui + +``` + +- 1.3.0 新增 ScrollLoad ,用于下拉框的滚动加载 +- 1.3.1 ScrollLoad 组件增加参数:defaultParams +- 1.3.3 BjDialogList 组件:1、修复多选分页时数据清空的问题;2、增加参数:tagName rowKeys。 diff --git a/front-end/src/packages/ScrollLoad/README.md b/front-end/src/packages/ScrollLoad/README.md new file mode 100644 index 0000000..35aa4cf --- /dev/null +++ b/front-end/src/packages/ScrollLoad/README.md @@ -0,0 +1,40 @@ +# ScrollLoad 表格的滚动加载 + +## 使用示例 + +```js + +import ScrollLoad from 'scrollLoad'; + +const DEFAULT_PAGE=1; +export default { + data() { + return { + tableData:[], + ScrollLoad:null + } + }, + mounted() { + + this.ScrollLoad = new ScrollLoad(this.loadFun,{el:this.$refs.elTable.bodyWrapper, page:DEFAULT_PAGE}); + + }, + methods(){ + resetSearch(){ + this.ScrollLoad.init(); + }, + loadFun(){ + const CURRENT_PAGE = this.ScrollLoad.page(); + ajax({page:CURRENT_PAGE}).then(res=>{ + this.ScrollLoad.maxPage(res.totalPages); //最大页码,控制滚动加载 + this.ScrollLoad.page(true); //下一页 + if (CURRENT_PAGE === 0) { + this.tableData = res.list || []; + } else { + this.tableData = this.tableData.concat(res.list || []); + } + }) + }, + } +} +``` diff --git a/front-end/src/packages/ScrollLoad/index.js b/front-end/src/packages/ScrollLoad/index.js new file mode 100644 index 0000000..83c076a --- /dev/null +++ b/front-end/src/packages/ScrollLoad/index.js @@ -0,0 +1,105 @@ +/** + * + * @param {*} loadFun 加载回调函数 + * @param {*} options 配置 {} + * @param {*} options.el null, 滚动元素的父级 + * @param {*} options.offset: 0, 滚动计算的偏差 + * @param {*} options.autoLoad false,首次自动加载 + * @param {*} options.page: 0, 当前页 + * @param {*} options.maxPage: 0, 最大页(page>maxPage时,不再触发loadFun) + * @param {*} options.autoPage: false,内部自动累加page(会在loadFun前触发) + * @param {*} options.isEnd: false,停止触发loadFun + */ +export default function(loadFun, options = {}) { + const _THIS = this; + const DEFAULT_OPTIONS = { + log: false, + el: null, + offset: 0, + autoLoad: false, + page: 0, + maxPage: 0, + autoPage: false, + isEnd: false, + }; + _THIS.defaultOptions = Object.assign({}, DEFAULT_OPTIONS, options); + _THIS.options = Object.assign({}, _THIS.defaultOptions, {}); + + /** *debug */ + function log(v) { + if (_THIS.options.log) console.log(v); + } + log(_THIS.options); + + _THIS.init = function(options) { + _THIS.options = Object.assign({}, _THIS.defaultOptions, options || {}); + }; + /** + * + * @param {*} value 为数字时,设置值; 为空时,返回当前page; 为true时,累加 + * @returns + */ + _THIS.page = function(value) { + if (value === undefined) { + return _THIS.options.page; + } + if (value === true) { + _THIS.options.page++; + return _THIS.options.page; + } + _THIS.options.page = value; + return _THIS.options.page; + }; + /** + * + * @param {*} value 设置值; 为空时,返回当前maxPage; + * @returns + */ + _THIS.maxPage = function(value) { + if (value === undefined) { + return _THIS.options.maxPage; + } + _THIS.options.maxPage = value; + return _THIS.options.maxPage; + }; + /** + * + * @param {*} value 设置值; 为空时,返回当前isEnd; + * @returns + */ + _THIS.isEnd = function(value) { + if (value === undefined) { + return _THIS.options.isEnd; + } + _THIS.options.isEnd = value; + return _THIS.options.isEnd; + }; + + _THIS.options.el.addEventListener('scroll', function(res) { + const TARGET = res.target; + if (TARGET.clientHeight + TARGET.scrollTop + _THIS.options.offset >= TARGET.scrollHeight) { + if (_THIS.isEnd()) { + log(`ScrollLoad.js:_THIS.isEnd`); + return; + } + + if (_THIS.maxPage() && _THIS.page() > _THIS.maxPage()) { + log(`ScrollLoad.js:End By _THIS.maxPage ( ${_THIS.maxPage()} ) `); + return; + } + + log('加载下一页'); + if (_THIS.options.autoPage) { + _THIS.page(true); + log(`ScrollLoad.js:_THIS.autoPage`); + } + log(`ScrollLoad.js:_THIS.Page ${_THIS.page()}/${_THIS.maxPage()} `); + loadFun(); + } + }); + if (_THIS.options.autoLoad) { + setTimeout(() => { + loadFun(); + }, 100); + } +} diff --git a/front-end/src/packages/ScrollSelect/README.md b/front-end/src/packages/ScrollSelect/README.md new file mode 100644 index 0000000..a65a691 --- /dev/null +++ b/front-end/src/packages/ScrollSelect/README.md @@ -0,0 +1,100 @@ +# ScrollLoad 表格的滚动加载 + +## 使用示例 + +### res-key + +res-key 目标数据 在 接口返回体的位置。多层嵌套 json。 如 response: + +```javascript +{ + data: { + title: '', + content: { + list: [{ a: '1' }, { b: '2' }], + }, + }, +} + +``` + +则:`res-key = 'data/content/list'` + +### + +```js + + + +``` diff --git a/front-end/src/packages/ScrollSelect/index.vue b/front-end/src/packages/ScrollSelect/index.vue new file mode 100644 index 0000000..2c66a9a --- /dev/null +++ b/front-end/src/packages/ScrollSelect/index.vue @@ -0,0 +1,289 @@ + + diff --git a/front-end/src/packages/index.js b/front-end/src/packages/index.js new file mode 100644 index 0000000..c2f8d0a --- /dev/null +++ b/front-end/src/packages/index.js @@ -0,0 +1,105 @@ +/* + * @Author: your name + * @Date: 2021-08-12 09:28:35 + * @LastEditTime: 2022-04-27 15:08:49 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\packages\index.js + */ +import BjImportFile from './BjImportFile'; +import BjDialogList from './BjDialogList'; +import BjDivider from './BjDivider'; +import BjDrawerForm from './BjDrawerForm'; +import BjSelectLov from './BjSelectLov'; +import BjCheckboxLov from './BjCheckboxLov'; +import BjRadioLov from './BjRadioLov'; +import BjRouteTabs from './BjRouteTabs'; +import BjInputMoney from './BjInputMoney'; +import ScrollLoad from './ScrollLoad'; +import ScrollSelect from './ScrollSelect'; +import BjPagingTable from './BjPagingTable'; +import BjSelectProvinces from './BjSelectProvinces'; +import BjInputNumber from './BjInputNumber'; +import BjSelectChinaArea from './BjSelectChinaArea'; +import BjUpload from './BjUpload'; +import BjDialogTable from './BjDialogTable'; +import BjDialog from './BjDialog'; +import BjDateTimerPicker from './BjDateTimerPicker'; +import BjCopyIcon from './BjCopyIcon'; +import BjTextarea from './BjTextarea'; + +// 编码组件 +import BjInputCode from './BjInputCode'; +import BjTag from './BjTag'; +import BjTagList from './BjTagList'; + +const components = [ + BjImportFile, + BjDialogList, + BjDivider, + BjDrawerForm, + BjSelectLov, + BjCheckboxLov, + BjRadioLov, + BjRouteTabs, + BjInputMoney, + ScrollSelect, + BjPagingTable, + BjSelectProvinces, + BjInputNumber, + BjSelectChinaArea, + BjUpload, + BjDialogTable, + BjDialog, + BjDateTimerPicker, + BjInputCode, + BjTag, + BjTagList, + BjCopyIcon, + BjTextarea, +]; +const version = '1.4.0'; +const install = function(Vue, opts = {}) { + components.forEach(component => { + if (component.name) { + Vue.component(component.name, component); + } else { + try { + console.log(`组件 ${component.__file.split('/')[1]} 未命名,注册失败`, component); + } catch (error) { + console.log('组件未命名,注册失败', component, error); + } + } + }); + console.log('%c npm i bj-ui@' + version, 'background-color:#f88;color:#fff'); + // Vue.prototype.$loading = Loading.service; +}; + +/* istanbul ignore if */ +if (typeof window !== 'undefined' && window.Vue) { + install(window.Vue); +} + +export default { + version: version, + install, + BjImportFile, + BjDialogList, + BjDivider, + BjDrawerForm, + BjSelectLov, + BjRouteTabs, + BjInputMoney, + ScrollLoad, + ScrollSelect, + BjPagingTable, + BjSelectProvinces, + BjInputNumber, + BjSelectChinaArea, + BjUpload, + BjDialogTable, + BjDialog, + BjInputCode, + BjCopyIcon, + BjTextarea, +}; diff --git a/front-end/src/packages/package.json b/front-end/src/packages/package.json new file mode 100644 index 0000000..9cf2f70 --- /dev/null +++ b/front-end/src/packages/package.json @@ -0,0 +1,12 @@ +{ + "name": "bj-ui", + "version": "1.4.0", + "description": "一个暴击你怕不怕", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "zxq", + "license": "ISC" +} diff --git a/front-end/src/permission.js b/front-end/src/permission.js new file mode 100644 index 0000000..cbc3f61 --- /dev/null +++ b/front-end/src/permission.js @@ -0,0 +1,105 @@ +import router from './router'; +import store from './store'; +import { Message } from 'element-ui'; +import NProgress from 'nprogress'; // progress bar +import 'nprogress/nprogress.css'; // progress bar style +import { getToken } from '@/utils/auth'; // get token from cookie +import getPageTitle from '@/utils/get-page-title'; + +NProgress.configure({ showSpinner: false }); // NProgress Configuration + +const whiteList = ['/login', '/auth-redirect']; // no redirect whitelist 没有重定向白名单 + +router.beforeEach(async (to, from, next) => { + // console.log('%c ************* router.beforeEach *****************', 'color:red;font-weight:700'); + // console.log(`%c fullPath: ${from.fullPath} => ${to.fullPath}`, 'font-weight:700'); + + // start progress bar + NProgress.start(); + + // set page title + document.title = getPageTitle(to.meta.title); + + if (process.env.VUE_APP_ACCESS_TOKEN) { + await store.dispatch('user/getInfo'); + const USER_PERMISSIONS = store.getters.userPermissions; + const accessRoutes = await store.dispatch('permission/generateRoutes', USER_PERMISSIONS); + router.addRoutes(accessRoutes); + next(); + return; + } + + // determine whether the user has logged in + const hasToken = getToken(); + if (hasToken) { + if (to.path === '/login') { + // if is logged in, redirect to the home page + next({ path: '/' }); + NProgress.done(); // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939 + } else { + // determine whether the user has obtained his permission roles through get Info + const HAS_PERMISSIONS = + store.getters.userPermissions && store.getters.userPermissions.length > 0; + if (HAS_PERMISSIONS) { + next(); + } else { + try { + // get user info + // note: roles must be a object array! such as: ['admin'] or ,['developer','editor'] + await store.dispatch('user/getInfo'); + // console.log('router.beforeEach: user/getInfo => roles =', roles); + + const USER_PERMISSIONS = store.getters.userPermissions; + if (USER_PERMISSIONS.length == 0) { + throw new Error('账号未配置角色,或角色的相关信息错误,请联系管理员'); + } + // console.log('store.getters.userPermissions', JSON.stringify(USER_PERMISSIONS)); + // generate accessible routes map based on roles + // TODO: 把菜单的权限 传入异步路由生成 + const accessRoutes = await store.dispatch('permission/generateRoutes', USER_PERMISSIONS); + console.log('---------accessRoutes---------------------'); + console.log('router.beforeEach: generateRoutes => accessRoutes=', accessRoutes); + // dynamically add accessible routes + // console.log(router); + router.addRoutes(accessRoutes); + // hack method to ensure that addRoutes is complete + // set the replace: true, so the navigation will not leave a history record + next({ ...to, replace: true }); + } catch (error) { + // remove token and go to login page to re-login + // 删除令牌并转到登录页面重新登录 + // await store.dispatch('user/resetToken') + // console.log(error); + Message.error(error || 'Has Error'); + setTimeout(async () => { + await store.dispatch('user/logout'); + next(`/login?redirect=${to.path}`); + NProgress.done(); + }, 1000); + } + } + } + } else { + /* has no token*/ + // console.log('===== >>>>> has no token 。 to:', to); + if (whiteList.indexOf(to.path) !== -1) { + // in the free login whitelist, go directly + // 在免费登录白名单,直接去 + // console.log('===== >>>>> 在免费登录白名单,直接去。to.fullPath=', to.fullPath); + next(); + } else { + // other pages that do not have permission to access are redirected to the login page. + // 其他没有访问权限的页面被重定向到登录页面。 + next(`/login?redirect=${to.path}`); + console.log( + `===== >>>>> 其他没有访问权限的页面被重定向到登录页面。/login?redirect=${to.path}`, + ); + NProgress.done(); + } + } +}); + +router.afterEach(() => { + // finish progress bar + NProgress.done(); +}); diff --git a/front-end/src/permissionOS.json b/front-end/src/permissionOS.json new file mode 100644 index 0000000..d3aafde --- /dev/null +++ b/front-end/src/permissionOS.json @@ -0,0 +1,2134 @@ +[ + { + "permissionType": "api", + "title": "配置中心", + "icon": "el-icon-s-operation", + "code": "Setting", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "api", + "title": "用户", + "icon": null, + "code": "SettingUser", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "api", + "title": "组织架构", + "icon": null, + "code": "SettingUserOrganization", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "tab", + "title": "集团设置", + "icon": null, + "code": "SettingUserOrganizationGroup", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "tab", + "title": "下属公司", + "icon": null, + "code": "SettingUserOrganizationCompany", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑-集团设置", + "icon": null, + "code": "SettingUserOrganizationGroup_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "删除-下属公司", + "icon": null, + "code": "SettingUserOrganizationCompany_Delete", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "新增公司-下属公司", + "icon": null, + "code": "SettingUserOrganizationCompany_Add", + "hiddenFlag": true, + "sort": 4 + }, + { + "permissionType": "btn", + "title": "编辑-下属公司", + "icon": null, + "code": "SettingUserOrganizationCompany_Edit", + "hiddenFlag": true, + "sort": 5 + }, + { + "permissionType": "btn", + "title": "禁用/启用-下属公司", + "icon": null, + "code": "SettingUserOrganizationCompany_Status", + "hiddenFlag": true, + "sort": 6 + } + ] + }, + { + "permissionType": "api", + "title": "账号安全策略", + "icon": null, + "code": "SettingUserAccount", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "page", + "title": "账号安全策略配置", + "icon": null, + "code": "SettingUserAccountStrategy", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "保存-账号安全策略配置", + "icon": null, + "code": "SettingUserAccountStrategy_Save", + "hiddenFlag": true, + "sort": 1 + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "商品", + "icon": null, + "code": "SettingGoods", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "api", + "title": "商品审核策略", + "icon": null, + "code": "SettingGoodsAudit", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "page", + "title": "商品审核策略", + "icon": null, + "code": "SettingGoodsAuditStrategyIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "保存-商品审核策略", + "icon": null, + "code": "SettingGoodsAuditStrategyIndex_Save", + "hiddenFlag": true, + "sort": 1 + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "基础数据", + "icon": null, + "code": "SettingBaseData", + "hiddenFlag": false, + "sort": 2, + "children": [ + { + "permissionType": "api", + "title": "编码规则", + "icon": null, + "code": "SettingBaseDataCodeRule", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "page", + "title": "编码规则", + "icon": null, + "code": "SettingBaseDataCodeRuleIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "新增-编码规则", + "icon": null, + "code": "SettingBaseDataCodeRule_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "编辑-编码规则", + "icon": null, + "code": "SettingBaseDataCodeRuleEdit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "删除-编码规则", + "icon": null, + "code": "SettingBaseDataCodeRule_Delete", + "hiddenFlag": true, + "sort": 3 + } + ] + }, + { + "permissionType": "api", + "title": "国家定义", + "icon": null, + "code": "SettingBaseDataCountry", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "page", + "title": "国家定义", + "icon": null, + "code": "SettingBaseDataCountryIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "新增-国家", + "icon": null, + "code": "SettingBaseDataCountryIndex_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑-国家", + "icon": null, + "code": "SettingBaseDataCountryIndex_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "启用/禁用-国家", + "icon": null, + "code": "SettingBaseDataCountryIndex_Status", + "hiddenFlag": true, + "sort": 3 + } + ] + }, + { + "permissionType": "api", + "title": "中国行政区定义", + "icon": null, + "code": "SettingBaseDataRegion", + "hiddenFlag": false, + "sort": 2, + "children": [ + { + "permissionType": "page", + "title": "中国行政区定义", + "icon": null, + "code": "SettingBaseDataRegionIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "新增-中国行政区", + "icon": null, + "code": "SettingBaseDataRegionIndex_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑-中国行政区", + "icon": null, + "code": "SettingBaseDataRegionIndex_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "删除-中国行政区", + "icon": null, + "code": "SettingBaseDataRegionIndex_Delete", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "新建下级区域-中国行政区", + "icon": null, + "code": "SettingBaseDataRegionIndex_AddChild", + "hiddenFlag": true, + "sort": 4 + } + ] + }, + { + "permissionType": "api", + "title": "售后原因", + "icon": null, + "code": "SettingBaseDataAfterSalesReason", + "hiddenFlag": false, + "sort": 3, + "children": [ + { + "permissionType": "tab", + "title": "仅退款原因", + "icon": null, + "code": "SettingBaseDataAfterSalesReasonRefundIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "新增仅退款原因", + "icon": null, + "code": "SettingBaseDataAfterSalesReasonRefundIndex_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑仅退款原因", + "icon": null, + "code": "SettingBaseDataAfterSalesReasonRefundIndex_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "禁用/启用仅退款原因", + "icon": null, + "code": "SettingBaseDataAfterSalesReasonRefundIndex_Status", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "删除仅退款原因", + "icon": null, + "code": "SettingBaseDataAfterSalesReasonRefundIndex_Delete", + "hiddenFlag": true, + "sort": 4 + }, + { + "permissionType": "tab", + "title": "退货退款原因", + "icon": null, + "code": "SettingBaseDataAfterSalesReasonReturnIndex", + "hiddenFlag": true, + "sort": 5 + }, + { + "permissionType": "btn", + "title": "新增退货退款原因", + "icon": null, + "code": "SettingBaseDataAfterSalesReasonReturnIndex_Add", + "hiddenFlag": true, + "sort": 6 + }, + { + "permissionType": "btn", + "title": "编辑退货退款原因", + "icon": null, + "code": "SettingBaseDataAfterSalesReasonReturnIndex_Edit", + "hiddenFlag": true, + "sort": 7 + }, + { + "permissionType": "btn", + "title": "禁用/启用退货退款原因", + "icon": null, + "code": "SettingBaseDataAfterSalesReasonReturnIndex_Status", + "hiddenFlag": true, + "sort": 8 + }, + { + "permissionType": "btn", + "title": "删除退货退款原因", + "icon": null, + "code": "SettingBaseDataAfterSalesReasonReturnIndex_Delete", + "hiddenFlag": true, + "sort": 9 + } + ] + }, + { + "permissionType": "api", + "title": "值集管理", + "icon": null, + "code": "SettingBaseDataLov", + "hiddenFlag": false, + "sort": 4, + "children": [ + { + "permissionType": "page", + "title": "值集管理", + "icon": null, + "code": "SettingBaseDataLovIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "创建值集值", + "icon": null, + "code": "SettingBaseDataLovIndex_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑值集值", + "icon": null, + "code": "SettingBaseDataLovIndex_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "删除值集值", + "icon": null, + "code": "SettingBaseDataLovIndex_Delete", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "启用/禁用", + "icon": null, + "code": "SettingBaseDataLovIndex_Status", + "hiddenFlag": true, + "sort": 4 + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "索引配置", + "icon": null, + "code": "SettingIndexes", + "hiddenFlag": false, + "sort": 3, + "children": [ + { + "permissionType": "api", + "title": "索引配置列表", + "icon": null, + "code": "SettingIndexesConfig", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "page", + "title": "索引配置列表", + "icon": null, + "code": "SettingIndexesConfigListIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "新增索引", + "icon": null, + "code": "SettingIndexesConfigListAdd", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "编辑索引", + "icon": null, + "code": "SettingIndexesConfigListEdit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "启用/禁用-索引", + "icon": null, + "code": "SettingIndexesConfigList_Status", + "hiddenFlag": true, + "sort": 3 + } + ] + }, + { + "permissionType": "api", + "title": "查询配置", + "icon": null, + "code": "SettingInquiry", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "page", + "title": "查询配置", + "icon": null, + "code": "SettingInquiryIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "添加查询配置", + "icon": null, + "code": "SettingInquiryAdd", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "编辑查询配置", + "icon": null, + "code": "SettingInquiryEdit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "删除-查询配置", + "icon": null, + "code": "SettingInquiry_Delete", + "hiddenFlag": true, + "sort": 3 + } + ] + }, + { + "permissionType": "api", + "title": "索引同步", + "icon": null, + "code": "SettingIndexesSync", + "hiddenFlag": false, + "sort": 2, + "children": [ + { + "permissionType": "page", + "title": "索引同步", + "icon": null, + "code": "SettingIndexesSyncIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "添加同步索引", + "icon": null, + "code": "SettingIndexesSyncAdd", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "编辑同步索引", + "icon": null, + "code": "SettingIndexesSyncEdit", + "hiddenFlag": true, + "sort": 2 + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "文件管理", + "icon": null, + "code": "SettingFile", + "hiddenFlag": false, + "sort": 4, + "children": [ + { + "permissionType": "api", + "title": "汇总查询", + "icon": null, + "code": "SettingFileSearch", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "page", + "title": "汇总查询", + "icon": null, + "code": "SettingFileSearchIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "文件上传-汇总查询", + "icon": null, + "code": "SettingFileSearchIndex_UpLoad", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "预览-汇总查询", + "icon": null, + "code": "SettingFileSearchIndex_View", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "下载-汇总查询", + "icon": null, + "code": "SettingFileSearchIndex_DownLoad", + "hiddenFlag": true, + "sort": 3 + } + ] + }, + { + "permissionType": "api", + "title": "存储配置", + "icon": null, + "code": "SettingFileStorage", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "page", + "title": "存储配置", + "icon": null, + "code": "SettingFileStorageIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "新增-存储配置", + "icon": null, + "code": "SettingFileStorageIndex_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑-存储配置", + "icon": null, + "code": "SettingFileStorageIndex_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "删除-存储配置", + "icon": null, + "code": "SettingFileStorageIndex_Delete", + "hiddenFlag": true, + "sort": 3 + } + ] + }, + { + "permissionType": "api", + "title": "上传容量配置", + "icon": null, + "code": "SettingFileUploadRam", + "hiddenFlag": false, + "sort": 2, + "children": [ + { + "permissionType": "page", + "title": "上传容量配置", + "icon": null, + "code": "SettingFileUploadRamIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "保存-上传容量配置", + "icon": null, + "code": "SettingFileUploadRamIndex_Save", + "hiddenFlag": true, + "sort": 1 + } + ] + }, + { + "permissionType": "api", + "title": "上传详细配置", + "icon": null, + "code": "SettingFileUploadConfig", + "hiddenFlag": false, + "sort": 3, + "children": [ + { + "permissionType": "page", + "title": "上传详细配置", + "icon": null, + "code": "SettingFileUploadConfigIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "新增-上传详细配置", + "icon": null, + "code": "SettingFileUploadConfigIndex_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑-上传详细配置", + "icon": null, + "code": "SettingFileUploadConfigIndex_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "删除-上传详细配置", + "icon": null, + "code": "SettingFileUploadConfigIndex_Delete", + "hiddenFlag": true, + "sort": 3 + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "事务管理", + "icon": null, + "code": "SettingInstance", + "hiddenFlag": false, + "sort": 5, + "children": [ + { + "permissionType": "api", + "title": "事务列表", + "icon": null, + "code": "SettingInstanceManage", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "page", + "title": "事务列表", + "icon": null, + "code": "SettingInstanceManageIndex", + "hiddenFlag": true, + "sort": 0 + } + ] + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "业务中心", + "icon": "el-icon-notebook-1", + "code": "Business", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "api", + "title": "用户管理", + "icon": null, + "code": "BusinessUser", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "api", + "title": "账户管理", + "icon": null, + "code": "BusinessUserAccount", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "page", + "title": "账户管理", + "icon": null, + "code": "BusinessUserAccountIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "新建账户", + "icon": null, + "code": "BusinessUserAccountAdd", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "编辑账户", + "icon": null, + "code": "BusinessUserAccountEdit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "关联组织架构", + "icon": null, + "code": "BusinessUserAccountIndex_RelatedCompany", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "修改密码", + "icon": null, + "code": "BusinessUserAccountIndex_ChangePassword", + "hiddenFlag": true, + "sort": 4 + }, + { + "permissionType": "btn", + "title": "启用/禁用", + "icon": null, + "code": "BusinessUserAccountIndex_UseStatus", + "hiddenFlag": true, + "sort": 5 + }, + { + "permissionType": "btn", + "title": "锁定/解锁", + "icon": null, + "code": "BusinessUserAccountIndex_Locked", + "hiddenFlag": true, + "sort": 6 + }, + { + "permissionType": "btn", + "title": "删除账户", + "icon": null, + "code": "BusinessUserAccountIndex_Delete", + "hiddenFlag": true, + "sort": 7 + } + ] + }, + { + "permissionType": "api", + "title": "角色管理", + "icon": null, + "code": "BusinessUserRole", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "page", + "title": "角色管理", + "icon": null, + "code": "BusinessUserRoleIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "分配用户", + "icon": null, + "code": "BusinessUserRoleAllotUser", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "分配数据权限", + "icon": null, + "code": "BusinessUserRoleAllotData", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "page", + "title": "分配菜单权限", + "icon": null, + "code": "BusinessUserRoleAllotMenu", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "创建角色", + "icon": null, + "code": "BusinessUserRoleIndex_AddRole", + "hiddenFlag": true, + "sort": 4 + }, + { + "permissionType": "btn", + "title": "编辑角色", + "icon": null, + "code": "BusinessUserRoleIndex_Edit", + "hiddenFlag": true, + "sort": 5 + }, + { + "permissionType": "btn", + "title": "启用/禁用", + "icon": null, + "code": "BusinessUserRoleIndex_Status", + "hiddenFlag": true, + "sort": 6 + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "渠道管理", + "icon": null, + "code": "BusinessChannel", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "api", + "title": "网店管理", + "icon": null, + "code": "BusinessChannelOnline", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "page", + "title": "网店管理", + "icon": null, + "code": "BusinessChannelOnlineIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "创建网店", + "icon": null, + "code": "BusinessChannelOnlineList_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑网店", + "icon": null, + "code": "BusinessChannelOnlineList_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "删除网店", + "icon": null, + "code": "BusinessChannelOnlineList_Delete", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "启用/禁用", + "icon": null, + "code": "BusinessChannelOnlineList_Status", + "hiddenFlag": true, + "sort": 4 + } + ] + }, + { + "permissionType": "api", + "title": "门店管理", + "icon": null, + "code": "BusinessChannelPhysical", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "page", + "title": "门店管理", + "icon": null, + "code": "BusinessChannelPhysicalIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "创建门店", + "icon": null, + "code": "BusinessChannelPhysicalList_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑门店", + "icon": null, + "code": "BusinessChannelPhysicalList_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "删除门店", + "icon": null, + "code": "BusinessChannelPhysicalList_Delete", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "启用/禁用", + "icon": null, + "code": "BusinessChannelPhysicalList_Status", + "hiddenFlag": true, + "sort": 4 + } + ] + }, + { + "permissionType": "api", + "title": "仓储管理", + "icon": null, + "code": "BusinessChannelStorage", + "hiddenFlag": false, + "sort": 2, + "children": [ + { + "permissionType": "page", + "title": "仓储管理", + "icon": null, + "code": "BusinessChannelStorageIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "创建仓储", + "icon": null, + "code": "BusinessChannelStorageIndex_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑仓储", + "icon": null, + "code": "BusinessChannelStorageIndex_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "启用/禁用", + "icon": null, + "code": "BusinessChannelStorageIndex_Status", + "hiddenFlag": true, + "sort": 3 + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "商品管理", + "icon": null, + "code": "BusinessGoods", + "hiddenFlag": false, + "sort": 2, + "children": [ + { + "permissionType": "api", + "title": "商品管理", + "icon": null, + "code": "BusinessGoodsSpu", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "tab", + "title": "普通商品管理", + "icon": null, + "code": "BusinessGoodsSpuOrdinaryIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "普通商品详情", + "icon": null, + "code": "BusinessGoodsSpuOrdinaryView", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "添加普通商品", + "icon": null, + "code": "BusinessGoodsSpuOrdinaryAdd", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "page", + "title": "编辑普通商品", + "icon": null, + "code": "BusinessGoodsSpuOrdinaryEdit", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "普通商品-导入数据", + "icon": null, + "code": "BusinessGoodsSpuOrdinary_ImportData", + "hiddenFlag": true, + "sort": 4 + }, + { + "permissionType": "btn", + "title": "普通商品-下载模板", + "icon": null, + "code": "BusinessGoodsSpuOrdinary_DownloadTemplate", + "hiddenFlag": true, + "sort": 5 + }, + { + "permissionType": "btn", + "title": "普通商品-删除商品", + "icon": null, + "code": "BusinessGoodsSpuOrdinary_Delete", + "hiddenFlag": true, + "sort": 6 + }, + { + "permissionType": "btn", + "title": "普通商品-启用/禁用", + "icon": null, + "code": "BusinessGoodsSpuOrdinary_Status", + "hiddenFlag": true, + "sort": 7 + }, + { + "permissionType": "tab", + "title": "套餐商品管理", + "icon": null, + "code": "BusinessGoodsSpuPackageIndex", + "hiddenFlag": true, + "sort": 8 + }, + { + "permissionType": "page", + "title": "套餐商品详情", + "icon": null, + "code": "BusinessGoodsSpuPackageView", + "hiddenFlag": true, + "sort": 9 + }, + { + "permissionType": "page", + "title": "添加套餐商品", + "icon": null, + "code": "BusinessGoodsSpuPackageAdd", + "hiddenFlag": true, + "sort": 10 + }, + { + "permissionType": "page", + "title": "编辑套餐商品", + "icon": null, + "code": "BusinessGoodsSpuPackageEdit", + "hiddenFlag": true, + "sort": 11 + }, + { + "permissionType": "btn", + "title": "套餐商品-导入数据", + "icon": null, + "code": "BusinessGoodsSpuPackage_ImportData", + "hiddenFlag": true, + "sort": 12 + }, + { + "permissionType": "btn", + "title": "套餐商品-下载模板", + "icon": null, + "code": "BusinessGoodsSpuPackage_DownloadTemplate", + "hiddenFlag": true, + "sort": 13 + }, + { + "permissionType": "btn", + "title": "套餐商品-删除商品", + "icon": null, + "code": "BusinessGoodsSpuPackage_Delete", + "hiddenFlag": true, + "sort": 14 + }, + { + "permissionType": "btn", + "title": "套餐商品-启用/禁用", + "icon": null, + "code": "BusinessGoodsSpuPackage_Status", + "hiddenFlag": true, + "sort": 15 + } + ] + }, + { + "permissionType": "api", + "title": "SKU管理", + "icon": null, + "code": "BusinessGoodsSku", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "tab", + "title": "普通SKU列表", + "icon": null, + "code": "BusinessGoodsSkuOrdinaryIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "添加普通SKU", + "icon": null, + "code": "BusinessGoodsSkuOrdinaryAdd", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "编辑普通SKU", + "icon": null, + "code": "BusinessGoodsSkuOrdinaryEdit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "page", + "title": "查看普通SKU", + "icon": null, + "code": "BusinessGoodsSkuOrdinaryView", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "普通SKU-导入数据", + "icon": null, + "code": "BusinessGoodsSkuOrdinary_ImportData", + "hiddenFlag": true, + "sort": 4 + }, + { + "permissionType": "btn", + "title": "普通SKU-下载模板", + "icon": null, + "code": "BusinessGoodsSkuOrdinary_DownloadTemplate", + "hiddenFlag": true, + "sort": 5 + }, + { + "permissionType": "btn", + "title": "普通SKU-删除SKU", + "icon": null, + "code": "BusinessGoodsSkuOrdinary_Delete", + "hiddenFlag": true, + "sort": 6 + }, + { + "permissionType": "btn", + "title": "普通SKU-启用/禁用", + "icon": null, + "code": "BusinessGoodsSkuOrdinary_Status", + "hiddenFlag": true, + "sort": 7 + }, + { + "permissionType": "btn", + "title": "普通SKU-提交", + "icon": null, + "code": "BusinessGoodsSkuOrdinary_Audit", + "hiddenFlag": true, + "sort": 8 + }, + { + "permissionType": "tab", + "title": "套餐SKU列表", + "icon": null, + "code": "BusinessGoodsSkuPackageIndex", + "hiddenFlag": true, + "sort": 9 + }, + { + "permissionType": "page", + "title": "添加套餐SKU", + "icon": null, + "code": "BusinessGoodsSkuPackageAdd", + "hiddenFlag": true, + "sort": 10 + }, + { + "permissionType": "page", + "title": "编辑套餐SKU", + "icon": null, + "code": "BusinessGoodsSkuPackageEdit", + "hiddenFlag": true, + "sort": 11 + }, + { + "permissionType": "page", + "title": "查看套餐SKU", + "icon": null, + "code": "BusinessGoodsSkuPackageView", + "hiddenFlag": true, + "sort": 12 + }, + { + "permissionType": "btn", + "title": "套餐SKU-导入数据", + "icon": null, + "code": "BusinessGoodsSkuPackage_ImportData", + "hiddenFlag": true, + "sort": 13 + }, + { + "permissionType": "btn", + "title": "套餐SKU-下载模板", + "icon": null, + "code": "BusinessGoodsSkuPackage_DownloadTemplate", + "hiddenFlag": true, + "sort": 14 + }, + { + "permissionType": "btn", + "title": "套餐SKU-删除SKU", + "icon": null, + "code": "BusinessGoodsSkuPackage_Delete", + "hiddenFlag": true, + "sort": 15 + }, + { + "permissionType": "btn", + "title": "套餐SKU-启用/禁用", + "icon": null, + "code": "BusinessGoodsSkuPackage_Status", + "hiddenFlag": true, + "sort": 16 + }, + { + "permissionType": "btn", + "title": "套餐SKU-提交", + "icon": null, + "code": "BusinessGoodsSkuPackage_Audit", + "hiddenFlag": true, + "sort": 17 + }, + { + "permissionType": "tab", + "title": "草稿SKU列表", + "icon": null, + "code": "BusinessGoodsSkuDraftIndex", + "hiddenFlag": true, + "sort": 18 + }, + { + "permissionType": "btn", + "title": "草稿SKU-提交", + "icon": null, + "code": "BusinessGoodsSkuDraft_Audit", + "hiddenFlag": true, + "sort": 19 + } + ] + }, + { + "permissionType": "api", + "title": "分类管理", + "icon": null, + "code": "BusinessGoodsClassify", + "hiddenFlag": false, + "sort": 2, + "children": [ + { + "permissionType": "page", + "title": "分类管理", + "icon": null, + "code": "BusinessGoodsClassifyIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "添加分类", + "icon": null, + "code": "BusinessGoodsClassify_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑分类", + "icon": null, + "code": "BusinessGoodsClassify_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "导入数据", + "icon": null, + "code": "BusinessGoodsClassify_ImportData", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "下载模板", + "icon": null, + "code": "BusinessGoodsClassify_DownloadTemplate", + "hiddenFlag": true, + "sort": 4 + }, + { + "permissionType": "btn", + "title": "删除分类", + "icon": null, + "code": "BusinessGoodsClassify_Delete", + "hiddenFlag": true, + "sort": 5 + }, + { + "permissionType": "btn", + "title": "启用/禁用", + "icon": null, + "code": "BusinessGoodsClassify_Status", + "hiddenFlag": true, + "sort": 6 + } + ] + }, + { + "permissionType": "api", + "title": "品牌管理", + "icon": null, + "code": "BusinessGoodsBrand", + "hiddenFlag": false, + "sort": 3, + "children": [ + { + "permissionType": "page", + "title": "品牌管理", + "icon": null, + "code": "BusinessGoodsBrandIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "创建品牌", + "icon": null, + "code": "BusinessGoodsBrandIndex_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑品牌", + "icon": null, + "code": "BusinessGoodsBrandIndex_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "删除品牌", + "icon": null, + "code": "BusinessGoodsBrandIndex_Delete", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "启用/禁用", + "icon": null, + "code": "BusinessGoodsBrandIndex_Status", + "hiddenFlag": true, + "sort": 4 + } + ] + }, + { + "permissionType": "api", + "title": "素材管理", + "icon": null, + "code": "BusinessGoodsMaterial", + "hiddenFlag": false, + "sort": 4, + "children": [ + { + "permissionType": "page", + "title": "素材管理", + "icon": null, + "code": "BusinessGoodsMaterialIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "创建素材", + "icon": null, + "code": "BusinessGoodsMaterialIndex_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑素材", + "icon": null, + "code": "BusinessGoodsMaterialIndex_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "删除素材", + "icon": null, + "code": "BusinessGoodsMaterialIndex_Delete", + "hiddenFlag": true, + "sort": 3 + } + ] + }, + { + "permissionType": "api", + "title": "价格项管理", + "icon": null, + "code": "BusinessGoodsPriceItem", + "hiddenFlag": false, + "sort": 5, + "children": [ + { + "permissionType": "page", + "title": "价格项管理", + "icon": null, + "code": "BusinessGoodsPriceItemIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "编辑价格项", + "icon": null, + "code": "BusinessGoodsPriceItemIndex_Edit", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "启用/禁用", + "icon": null, + "code": "BusinessGoodsPriceItemIndex_Status", + "hiddenFlag": true, + "sort": 2 + } + ] + }, + { + "permissionType": "api", + "title": "商品审核", + "icon": null, + "code": "BusinessGoodsAudit", + "hiddenFlag": false, + "sort": 6, + "children": [ + { + "permissionType": "tab", + "title": "商品SKU审核", + "icon": null, + "code": "BusinessGoodsAuditSkuOrdinaryIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "查看商品SKU审核详情", + "icon": null, + "code": "BusinessGoodsAuditSkuOrdinaryView", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "审核商品SKU审核详情", + "icon": null, + "code": "BusinessGoodsAuditSkuOrdinaryAudit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "商品SKU审核-通过", + "icon": null, + "code": "BusinessGoodsAuditSkuOrdinary_Pass", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "商品SKU审核-驳回", + "icon": null, + "code": "BusinessGoodsAuditSkuOrdinary_reject", + "hiddenFlag": true, + "sort": 4 + }, + { + "permissionType": "tab", + "title": "套餐SKU审核", + "icon": null, + "code": "BusinessGoodsAuditSkuPackageIndex", + "hiddenFlag": true, + "sort": 5 + }, + { + "permissionType": "page", + "title": "查看套餐SKU审核详情", + "icon": null, + "code": "BusinessGoodsAuditSkuPackageView", + "hiddenFlag": true, + "sort": 6 + }, + { + "permissionType": "page", + "title": "审核套餐SKU审核详情", + "icon": null, + "code": "BusinessGoodsAuditSkuPackageAudit", + "hiddenFlag": true, + "sort": 7 + }, + { + "permissionType": "btn", + "title": "套餐SKU审核-通过", + "icon": null, + "code": "BusinessGoodsAuditSkuPackage_Pass", + "hiddenFlag": true, + "sort": 8 + }, + { + "permissionType": "btn", + "title": "套餐SKU审核-驳回", + "icon": null, + "code": "BusinessGoodsAuditSkuPackage_reject", + "hiddenFlag": true, + "sort": 9 + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "库存管理", + "icon": null, + "code": "BusinessStock", + "hiddenFlag": false, + "sort": 3, + "children": [ + { + "permissionType": "api", + "title": "库存查询", + "icon": null, + "code": "BusinessStockSearch", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "page", + "title": "库存查询", + "icon": null, + "code": "BusinessStockSearchIndex", + "hiddenFlag": true, + "sort": 0 + } + ] + }, + { + "permissionType": "api", + "title": "库存变动查询", + "icon": null, + "code": "BusinessStockChange", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "page", + "title": "库存变动查询", + "icon": null, + "code": "BusinessStockChangeIndex", + "hiddenFlag": true, + "sort": 0 + } + ] + }, + { + "permissionType": "api", + "title": "入库管理", + "icon": null, + "code": "BusinessStockEntry", + "hiddenFlag": false, + "sort": 2, + "children": [ + { + "permissionType": "tab", + "title": "入库通知单", + "icon": null, + "code": "BusinessStockEntryInformIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "入库通知单详情", + "icon": null, + "code": "BusinessStockEntryInformView", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "tab", + "title": "入库结果单", + "icon": null, + "code": "BusinessStockEntryResultIndex", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "page", + "title": "入库结果单详情", + "icon": null, + "code": "BusinessStockEntryResultView", + "hiddenFlag": true, + "sort": 3 + } + ] + }, + { + "permissionType": "api", + "title": "出库管理", + "icon": null, + "code": "BusinessStockDelivery", + "hiddenFlag": false, + "sort": 3, + "children": [ + { + "permissionType": "tab", + "title": "出库通知单", + "icon": null, + "code": "BusinessStockDeliveryInformIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "出库通知单详情", + "icon": null, + "code": "BusinessStockDeliveryInformView", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "tab", + "title": "出库结果单", + "icon": null, + "code": "BusinessStockDeliveryResultIndex", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "page", + "title": "出库结果单详情", + "icon": null, + "code": "BusinessStockDeliveryResultView", + "hiddenFlag": true, + "sort": 3 + } + ] + }, + { + "permissionType": "api", + "title": "数据同步管理", + "icon": null, + "code": "BusinessStockSynchronization", + "hiddenFlag": false, + "sort": 4, + "children": [ + { + "permissionType": "page", + "title": "数据同步管理", + "icon": null, + "code": "BusinessStockSynchronizationIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "新建数据同步", + "icon": null, + "code": "BusinessStockSynchronizationAdd", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "审核通过", + "icon": null, + "code": "BusinessStockSynchronizationIndex_Pass", + "hiddenFlag": true, + "sort": 2 + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "普通订单", + "icon": null, + "code": "BusinessOrder", + "hiddenFlag": false, + "sort": 4, + "children": [ + { + "permissionType": "api", + "title": "三方销售单", + "icon": null, + "code": "BusinessOrderThird", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "page", + "title": "三方销售单", + "icon": null, + "code": "BusinessOrderThirdIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "三方单录入", + "icon": null, + "code": "BusinessOrderThirdAdd", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "三方销售单详情", + "icon": null, + "code": "BusinessOrderThirdView", + "hiddenFlag": true, + "sort": 2 + } + ] + }, + { + "permissionType": "api", + "title": "内部销售单", + "icon": null, + "code": "BusinessOrderInternal", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "page", + "title": "内部销售单", + "icon": null, + "code": "BusinessOrderInternalIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "内部销售单详情", + "icon": null, + "code": "BusinessOrderInternalView", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "销售单录入", + "icon": null, + "code": "BusinessOrderInternalAdd", + "hiddenFlag": true, + "sort": 2 + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "售后管理", + "icon": null, + "code": "BusinessAfter", + "hiddenFlag": false, + "sort": 5, + "children": [ + { + "permissionType": "api", + "title": "三方售后单", + "icon": null, + "code": "BusinessAfterThird", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "tab", + "title": "三方仅退款", + "icon": null, + "code": "BusinessAfterThirdRefundIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "三方仅退款详情", + "icon": null, + "code": "BusinessAfterThirdRefundView", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "新增三方仅退款单", + "icon": null, + "code": "BusinessAfterThirdRefundAdd", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "tab", + "title": "三方退货退款", + "icon": null, + "code": "BusinessAfterThirdReturnIndex", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "page", + "title": "三方退货退款详情", + "icon": null, + "code": "BusinessAfterThirdReturnView", + "hiddenFlag": true, + "sort": 4 + }, + { + "permissionType": "page", + "title": "新增三方退货退款单", + "icon": null, + "code": "BusinessAfterThirdReturnAdd", + "hiddenFlag": true, + "sort": 5 + } + ] + }, + { + "permissionType": "api", + "title": "内部售后单", + "icon": null, + "code": "BusinessAfterInternal", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "tab", + "title": "内部仅退款", + "icon": null, + "code": "BusinessAfterInternalRefundIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "page", + "title": "新增内部仅退款单", + "icon": null, + "code": "BusinessAfterInternalRefundAdd", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "page", + "title": "内部仅退款单详情", + "icon": null, + "code": "BusinessAfterInternalRefundView", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "tab", + "title": "内部退货退款", + "icon": null, + "code": "BusinessAfterInternalReturnIndex", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "page", + "title": "新增内部退货退款单", + "icon": null, + "code": "BusinessAfterInternalReturnAdd", + "hiddenFlag": true, + "sort": 4 + }, + { + "permissionType": "page", + "title": "内部退货退款单详情", + "icon": null, + "code": "BusinessAfterInternalReturnView", + "hiddenFlag": true, + "sort": 5 + }, + { + "permissionType": "page", + "title": "新增内部换货单", + "icon": null, + "code": "BusinessAfterInternalExchangeAdd", + "hiddenFlag": true, + "sort": 6 + }, + { + "permissionType": "page", + "title": "内部换货单详情", + "icon": null, + "code": "BusinessAfterInternalExchangeView", + "hiddenFlag": true, + "sort": 7 + } + ] + } + ] + }, + { + "permissionType": "api", + "title": "标签管理", + "icon": null, + "code": "BusinessLabel", + "hiddenFlag": false, + "sort": 6, + "children": [ + { + "permissionType": "api", + "title": "系统标签", + "icon": null, + "code": "BusinessLabelSys", + "hiddenFlag": false, + "sort": 0, + "children": [ + { + "permissionType": "page", + "title": "系统标签", + "icon": null, + "code": "BusinessLabelSysIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "启用/禁用", + "icon": null, + "code": "BusinessLabelSysIndex_Status", + "hiddenFlag": true, + "sort": 1 + } + ] + }, + { + "permissionType": "api", + "title": "人工标签", + "icon": null, + "code": "BusinessLabelHand", + "hiddenFlag": false, + "sort": 1, + "children": [ + { + "permissionType": "page", + "title": "人工标签", + "icon": null, + "code": "BusinessLabelHandIndex", + "hiddenFlag": true, + "sort": 0 + }, + { + "permissionType": "btn", + "title": "新增", + "icon": null, + "code": "BusinessLabelHandIndex_Add", + "hiddenFlag": true, + "sort": 1 + }, + { + "permissionType": "btn", + "title": "编辑", + "icon": null, + "code": "BusinessLabelHandIndex_Edit", + "hiddenFlag": true, + "sort": 2 + }, + { + "permissionType": "btn", + "title": "启用/禁用", + "icon": null, + "code": "BusinessLabelHandIndex_Status", + "hiddenFlag": true, + "sort": 3 + }, + { + "permissionType": "btn", + "title": "删除", + "icon": null, + "code": "BusinessLabelHandIndex_Delete", + "hiddenFlag": true, + "sort": 4 + } + ] + } + ] + } + ] + } +] diff --git a/front-end/src/router/center-business/after.js b/front-end/src/router/center-business/after.js new file mode 100644 index 0000000..7eb99d7 --- /dev/null +++ b/front-end/src/router/center-business/after.js @@ -0,0 +1,208 @@ +/* + * 订单管理 + */ +import EmptyRouter from '@/layout/EmptyRouter.vue'; +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +// import Test0Empty from '@/views/test/empty.vue'; +export default { + path: 'after', + name: 'BusinessAfter', + component: EmptyRouterAlive, + meta: { + title: '售后管理', + }, + children: [ + /** 三方售后单 */ + { + path: 'third', + name: 'BusinessAfterThird', + component: EmptyRouter, + redirect: 'third/refund', + meta: { + title: '三方售后单', + }, + children: [ + // 仅退款 + { + path: 'refund', + name: 'BusinessAfterThirdRefundIndex', + component: () => import('@/views/center-business/after/third/refund/index'), + meta: { + title: '三方仅退款', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: 'refund/view', + name: 'BusinessAfterThirdRefundView', + component: () => import('@/views/center-business/after/third/refund/view'), + meta: { + title: '三方仅退款详情', + }, + hidden: true, + }, + { + path: 'refund/add', + name: 'BusinessAfterThirdRefundAdd', + component: () => import('@/views/center-business/after/third/refund/add'), + meta: { + title: '新增三方仅退款单', + }, + hidden: true, + }, + // 退货退款 + { + path: 'return', + name: 'BusinessAfterThirdReturnIndex', + component: () => import('@/views/center-business/after/third/return/index'), + meta: { + title: '三方退货退款', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: 'return/view', + name: 'BusinessAfterThirdReturnView', + component: () => import('@/views/center-business/after/third/return/view'), + meta: { + title: '三方退货退款详情', + }, + hidden: true, + }, + { + path: 'return/add', + name: 'BusinessAfterThirdReturnAdd', + component: () => import('@/views/center-business/after/third/return/add'), + meta: { + title: '新增三方退货退款单', + }, + hidden: true, + }, + // 换货 + // { + // path: 'exchange', + // name: 'BusinessAfterThirdExchange', + // component: () => import('@/views/center-business/after/third/exchange/index'), + // meta: { + // title: '三方换货', + // }, + // permissionType: 'tab', + // hidden: true, + // }, + // { + // path: 'exchange/view', + // name: 'BusinessAfterThirdExchangeView', + // component: () => import('@/views/center-business/after/third/exchange/view'), + // meta: { + // title: '三方换货详情', + // }, + // hidden: true, + // }, + ], + }, + /** 内部售后单 */ + { + path: 'internal', + name: 'BusinessAfterInternal', + component: EmptyRouter, + redirect: 'internal/refund', + meta: { + title: '内部售后单', + }, + children: [ + // 仅退款 + { + path: 'refund', + name: 'BusinessAfterInternalRefundIndex', + component: () => import('@/views/center-business/after/internal/refund/index'), + meta: { + title: '内部仅退款', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: 'refund/add', + name: 'BusinessAfterInternalRefundAdd', + component: () => import('@/views/center-business/after/internal/refund/add'), + meta: { + title: '新增内部仅退款单', + isCache: true, + }, + hidden: true, + }, + { + path: 'refund/view', + name: 'BusinessAfterInternalRefundView', + component: () => import('@/views/center-business/after/internal/refund/view'), + meta: { + title: '内部仅退款单详情', + }, + hidden: true, + }, + // 退货退款 + { + path: 'return', + name: 'BusinessAfterInternalReturnIndex', + component: () => import('@/views/center-business/after/internal/return/index'), + meta: { + title: '内部退货退款', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: 'return/add', + name: 'BusinessAfterInternalReturnAdd', + component: () => import('@/views/center-business/after/internal/return/add'), + meta: { + title: '新增内部退货退款单', + isCache: true, + }, + hidden: true, + }, + { + path: 'return/view', + name: 'BusinessAfterInternalReturnView', + component: () => import('@/views/center-business/after/internal/return/view'), + meta: { + title: '内部退货退款单详情', + }, + hidden: true, + }, + // 换货 + // { + // path: 'exchange', + // name: 'BusinessAfterInternalExchangeIndex', + // component: () => import('@/views/center-business/after/internal/exchange/index'), + // meta: { + // title: '内部换货', + // }, + // permissionType: 'tab', + // hidden: true, + // }, + { + path: 'exchange/add', + name: 'BusinessAfterInternalExchangeAdd', + component: () => import('@/views/center-business/after/internal/exchange/add'), + meta: { + title: '新增内部换货单', + isCache: true, + }, + hidden: true, + }, + { + path: 'exchange/view', + name: 'BusinessAfterInternalExchangeView', + component: () => import('@/views/center-business/after/internal/exchange/view'), + meta: { + title: '内部换货单详情', + }, + hidden: true, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/center-business/channel.js b/front-end/src/router/center-business/channel.js new file mode 100644 index 0000000..7a740e5 --- /dev/null +++ b/front-end/src/router/center-business/channel.js @@ -0,0 +1,203 @@ +/* + * 渠道管理 + */ + +import EmptyRouter from '@/layout/EmptyRouter.vue'; +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +export default { + path: 'channel', + name: 'BusinessChannel', + component: EmptyRouterAlive, + meta: { + title: '渠道管理', + }, + children: [ + { + path: 'online', + name: 'BusinessChannelOnline', + component: EmptyRouter, + redirect: 'online/index', + meta: { + title: '网店管理', + }, + children: [ + { + path: 'index', + name: 'BusinessChannelOnlineIndex', + component: () => import('@/views/center-business/channel/online'), + meta: { + title: '网店管理', + }, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessChannelOnlineList_Add', + meta: { title: '创建网店', isCache: true }, + hidden: true, + }, + { + path: '', + name: 'BusinessChannelOnlineList_Edit', + meta: { title: '编辑网店' }, + hidden: true, + }, + { + path: '', + name: 'BusinessChannelOnlineList_Delete', + meta: { title: '删除网店' }, + hidden: true, + }, + { + path: '', + name: 'BusinessChannelOnlineList_Status', + meta: { title: '启用/禁用' }, + hidden: true, + }, + // { + // path: '', + // name: 'BusinessChannelOnlineList_Set', + // meta: { title: '设置网店' }, + // hidden: true, + // }, + /** 按钮权限end */ + ], + }, + { + path: 'physical', + name: 'BusinessChannelPhysical', + component: EmptyRouter, + redirect: 'physical/index', + meta: { + title: '门店管理', + }, + children: [ + { + path: 'index', + name: 'BusinessChannelPhysicalIndex', + component: () => import('@/views/center-business/channel/physical'), + meta: { + title: '门店管理', + }, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessChannelPhysicalList_Add', + meta: { title: '创建门店', isCache: true }, + hidden: true, + }, + { + path: '', + name: 'BusinessChannelPhysicalList_Edit', + meta: { title: '编辑门店' }, + hidden: true, + }, + { + path: '', + name: 'BusinessChannelPhysicalList_Delete', + meta: { title: '删除门店' }, + hidden: true, + }, + { + path: '', + name: 'BusinessChannelPhysicalList_Status', + meta: { title: '启用/禁用' }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + /* ****************************** 暂时不显示 *******************************/ + // { + // path: 'dealer', + // name: 'BusinessChannelDealer', + // component: EmptyRouter, + // redirect: 'dealer/index', + // meta: { + // title: '经销商管理', + // }, + // children: [ + // { + // path: 'index', + // name: 'BusinessChannelDealerIndex', + // component: () => import('@/views/center-business/channel/dealer'), + // meta: { + // title: '经销商管理', + // }, + // }, + // /** 按钮权限start */ + // { + // path: '', + // name: 'BusinessChannelDealerIndex_Add', + // meta: { title: '创建经销商' }, + // hidden: true, + // }, + // { + // path: '', + // name: 'BusinessChannelDealerIndex_Edit', + // meta: { title: '编辑经销商' }, + // hidden: true, + // }, + // { + // path: '', + // name: 'BusinessChannelDealerIndex_Delete', + // meta: { title: '删除经销商' }, + // hidden: true, + // }, + // { + // path: '', + // name: 'BusinessChannelDealerIndex_Status', + // meta: { title: '启用/禁用' }, + // hidden: true, + // }, + // /** 按钮权限end */ + // ], + // }, + { + path: 'storage', + name: 'BusinessChannelStorage', + component: EmptyRouter, + redirect: 'storage/index', + meta: { + title: '仓储管理', + }, + children: [ + { + path: 'index', + name: 'BusinessChannelStorageIndex', + component: () => import('@/views/center-business/channel/storage'), + meta: { + title: '仓储管理', + }, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessChannelStorageIndex_Add', + meta: { title: '创建仓储', isCache: true }, + hidden: true, + }, + { + path: '', + name: 'BusinessChannelStorageIndex_Edit', + meta: { title: '编辑仓储' }, + hidden: true, + }, + // { + // path: '', + // name: 'BusinessChannelStorageIndex_Delete', + // meta: { title: '删除仓储' }, + // hidden: true, + // }, + { + path: '', + name: 'BusinessChannelStorageIndex_Status', + meta: { title: '启用/禁用' }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + ], +}; diff --git a/front-end/src/router/center-business/goods.js b/front-end/src/router/center-business/goods.js new file mode 100644 index 0000000..ca2da7d --- /dev/null +++ b/front-end/src/router/center-business/goods.js @@ -0,0 +1,757 @@ +/* + * 商品中心 + */ + +import EmptyRouter from '@/layout/EmptyRouter.vue'; +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +// import Test0Empty from '@/views/test/empty.vue'; +export default { + path: 'goods', + name: 'BusinessGoods', + component: EmptyRouterAlive, + meta: { + title: '商品管理', + }, + children: [ + /** **** 商品管理 **** */ + { + path: 'spu', + name: 'BusinessGoodsSpu', + component: EmptyRouter, + redirect: 'spu/ordinary', + meta: { + title: '商品管理', + }, + children: [ + { + path: 'ordinary', + name: 'BusinessGoodsSpuOrdinaryIndex', + component: () => import('@/views/center-business/goods/spu/ordinary'), + meta: { + title: '普通商品管理', + }, + permissionType: 'tab', + }, + { + path: 'ordinary/view', + name: 'BusinessGoodsSpuOrdinaryView', + component: () => import('@/views/center-business/goods/spu/ordinary/view'), + meta: { + title: '普通商品详情', + }, + hidden: true, + }, + { + path: 'ordinary/add', + name: 'BusinessGoodsSpuOrdinaryAdd', + component: () => import('@/views/center-business/goods/spu/ordinary/add'), + meta: { + title: '添加普通商品', + isCache: true, + }, + hidden: true, + }, + { + path: 'ordinary/edit', + name: 'BusinessGoodsSpuOrdinaryEdit', + component: () => import('@/views/center-business/goods/spu/ordinary/edit'), + meta: { + title: '编辑普通商品', + }, + hidden: true, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessGoodsSpuOrdinary_ImportData', + meta: { title: '普通商品-导入数据' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSpuOrdinary_DownloadTemplate', + meta: { title: '普通商品-下载模板' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSpuOrdinary_Delete', + meta: { title: '普通商品-删除商品' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSpuOrdinary_Status', + meta: { title: '普通商品-启用/禁用' }, + hidden: true, + }, + /** 按钮权限end */ + { + path: 'package', + name: 'BusinessGoodsSpuPackageIndex', + component: () => import('@/views/center-business/goods/spu/package'), + meta: { + title: '套餐商品管理', + }, + permissionType: 'tab', + }, + { + path: 'package/view', + name: 'BusinessGoodsSpuPackageView', + component: () => import('@/views/center-business/goods/spu/package/view'), + meta: { + title: '套餐商品详情', + }, + hidden: true, + }, + { + path: 'package/add', + name: 'BusinessGoodsSpuPackageAdd', + component: () => import('@/views/center-business/goods/spu/package/add'), + meta: { + title: '添加套餐商品', + isCache: true, + }, + hidden: true, + }, + { + path: 'package/edit', + name: 'BusinessGoodsSpuPackageEdit', + component: () => import('@/views/center-business/goods/spu/package/edit'), + meta: { + title: '编辑套餐商品', + }, + hidden: true, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessGoodsSpuPackage_ImportData', + meta: { title: '套餐商品-导入数据' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSpuPackage_DownloadTemplate', + meta: { title: '套餐商品-下载模板' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSpuPackage_Delete', + meta: { title: '套餐商品-删除商品' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSpuPackage_Status', + meta: { title: '套餐商品-启用/禁用' }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + /** **** SKU管理 **** */ + { + path: 'sku', + name: 'BusinessGoodsSku', + component: EmptyRouter, + redirect: 'sku/ordinary', + meta: { + title: 'SKU管理', + }, + children: [ + { + path: 'ordinary', + name: 'BusinessGoodsSkuOrdinaryIndex', + component: () => import('@/views/center-business/goods/sku/ordinary'), + meta: { + title: '普通SKU列表', + }, + permissionType: 'tab', + }, + { + path: 'ordinary/add', + name: 'BusinessGoodsSkuOrdinaryAdd', + component: () => import('@/views/center-business/goods/sku/ordinary/add'), + meta: { + title: '添加普通SKU', + isCache: true, + }, + hidden: true, + }, + { + path: 'ordinary/edit', + name: 'BusinessGoodsSkuOrdinaryEdit', + component: () => import('@/views/center-business/goods/sku/ordinary/edit'), + meta: { + title: '编辑普通SKU', + }, + hidden: true, + }, + { + path: 'ordinary/view', + name: 'BusinessGoodsSkuOrdinaryView', + component: () => import('@/views/center-business/goods/sku/ordinary/view'), + meta: { + title: '查看普通SKU', + }, + hidden: true, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessGoodsSkuOrdinary_ImportData', + meta: { title: '普通SKU-导入数据' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSkuOrdinary_DownloadTemplate', + meta: { title: '普通SKU-下载模板' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSkuOrdinary_Delete', + meta: { title: '普通SKU-删除SKU' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSkuOrdinary_Status', + meta: { title: '普通SKU-启用/禁用' }, + hidden: true, + }, + + { + path: '', + name: 'BusinessGoodsSkuOrdinary_Audit', + meta: { title: '普通SKU-提交' }, + hidden: true, + }, + /** 按钮权限end */ + { + path: 'package', + name: 'BusinessGoodsSkuPackageIndex', + component: () => import('@/views/center-business/goods/sku/package'), + meta: { + title: '套餐SKU列表', + }, + permissionType: 'tab', + }, + { + path: 'package/add', + name: 'BusinessGoodsSkuPackageAdd', + component: () => import('@/views/center-business/goods/sku/package/add'), + meta: { + title: '添加套餐SKU', + isCache: true, + }, + hidden: true, + }, + { + path: 'package/edit', + name: 'BusinessGoodsSkuPackageEdit', + component: () => import('@/views/center-business/goods/sku/package/edit'), + meta: { + title: '编辑套餐SKU', + }, + hidden: true, + }, + { + path: 'package/view', + name: 'BusinessGoodsSkuPackageView', + component: () => import('@/views/center-business/goods/sku/package/view'), + meta: { + title: '查看套餐SKU', + }, + hidden: true, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessGoodsSkuPackage_ImportData', + meta: { title: '套餐SKU-导入数据' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSkuPackage_DownloadTemplate', + meta: { title: '套餐SKU-下载模板' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSkuPackage_Delete', + meta: { title: '套餐SKU-删除SKU' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsSkuPackage_Status', + meta: { title: '套餐SKU-启用/禁用' }, + hidden: true, + }, + + { + path: '', + name: 'BusinessGoodsSkuPackage_Audit', + meta: { title: '套餐SKU-提交' }, + hidden: true, + }, + /** 按钮权限end */ + { + path: 'draft', + name: 'BusinessGoodsSkuDraftIndex', + component: () => import('@/views/center-business/goods/sku/draft/index'), + meta: { + title: '草稿SKU列表', + }, + permissionType: 'tab', + }, + { + path: '', + name: 'BusinessGoodsSkuDraft_Audit', + meta: { title: '草稿SKU-提交' }, + hidden: true, + }, + ], + }, + /** 分类 */ + { + path: 'classify', + name: 'BusinessGoodsClassify', + component: EmptyRouter, + redirect: 'classify/index', + meta: { + title: '分类管理', + }, + children: [ + { + path: 'index', + name: 'BusinessGoodsClassifyIndex', + component: () => import('@/views/center-business/goods/classify'), + meta: { + title: '分类管理', + }, + }, + + /** 按钮权限start */ + { + path: '', + name: 'BusinessGoodsClassify_Add', + meta: { title: '添加分类', isCache: true }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsClassify_Edit', + meta: { title: '编辑分类' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsClassify_ImportData', + meta: { title: '导入数据' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsClassify_DownloadTemplate', + meta: { title: '下载模板' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsClassify_Delete', + meta: { title: '删除分类' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsClassify_Status', + meta: { title: '启用/禁用' }, + hidden: true, + }, + + /** 按钮权限end */ + ], + }, + /** 品牌 */ + { + path: 'brand', + name: 'BusinessGoodsBrand', + component: EmptyRouter, + redirect: 'brand/index', + meta: { + title: '品牌管理', + }, + children: [ + { + path: 'index', + name: 'BusinessGoodsBrandIndex', + component: () => import('@/views/center-business/goods/brand'), + meta: { + title: '品牌管理', + }, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessGoodsBrandIndex_Add', + meta: { title: '创建品牌', isCache: true }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsBrandIndex_Edit', + meta: { title: '编辑品牌' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsBrandIndex_Delete', + meta: { title: '删除品牌' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsBrandIndex_Status', + meta: { title: '启用/禁用' }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + /** **** 素材管理 **** */ + { + path: 'material', + name: 'BusinessGoodsMaterial', + component: EmptyRouter, + redirect: 'material/index', + meta: { + title: '素材管理', + }, + children: [ + { + path: 'index', + name: 'BusinessGoodsMaterialIndex', + component: () => import('@/views/center-business/goods/material'), + meta: { + title: '素材管理', + }, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessGoodsMaterialIndex_Add', + meta: { title: '创建素材' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsMaterialIndex_Edit', + meta: { title: '编辑素材' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsMaterialIndex_Delete', + meta: { title: '删除素材' }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + /** **** 价格项管理 **** */ + { + path: 'price/item', + name: 'BusinessGoodsPriceItem', + component: EmptyRouter, + redirect: 'price/item/index', + meta: { + title: '价格项管理', + }, + children: [ + { + path: 'index', + name: 'BusinessGoodsPriceItemIndex', + component: () => import('@/views/center-business/goods/price/item'), + meta: { + title: '价格项管理', + }, + }, + + /** 按钮权限start */ + // { + // path: '', + // name: 'BusinessGoodsPriceItemIndex_Add', + // meta: { title: '创建价格项' }, + // hidden: true, + // }, + { + path: '', + name: 'BusinessGoodsPriceItemIndex_Edit', + meta: { title: '编辑价格项' }, + hidden: true, + }, + // { + // path: '', + // name: 'BusinessGoodsPriceItemIndex_Delete', + // meta: { title: '删除价格项' }, + // hidden: true, + // }, + { + path: '', + name: 'BusinessGoodsPriceItemIndex_Status', + meta: { title: '启用/禁用' }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + + /** **** 虚拟商品 **** */ + // { + // path: 'virtual', + // name: 'BusinessGoodsVirtual', + // component: EmptyRouter, + // redirect: 'virtual/sku-group', + // meta: { + // title: '虚拟商品管理', + // }, + // children: [ + // // 组合商品 + // { + // path: 'sku-group', + // name: 'BusinessGoodsVirtualSkuGroupList', + // component: () => import('@/views/center-business/goods/virtual/sku-group/index'), + // meta: { + // title: '组合商品', + // }, + // permissionType: 'tab', + // hidden: true, + // }, + // { + // path: 'add', + // name: 'BusinessGoodsVirtualSkuGroupAdd', + // component: () => import('@/views/center-business/goods/virtual/sku-group/add'), + // meta: { + // title: '添加组合商品', + // }, + // hidden: true, + // }, + // { + // path: 'edit', + // name: 'BusinessGoodsVirtualSkuGroupEdit', + // component: () => import('@/views/center-business/goods/virtual/sku-group/edit'), + // meta: { + // title: '编辑组合商品', + // }, + // hidden: true, + // }, + // { + // path: 'view', + // name: 'BusinessGoodsVirtualSkuGroupView', + // component: () => import('@/views/center-business/goods/virtual/sku-group/view'), + // meta: { + // title: '组合商品详情', + // }, + // hidden: true, + // }, + // /** 按钮权限start */ + // { + // path: '', + // name: 'BusinessGoodsVirtualSkuGroup_Delete', + // meta: { title: '删除组合商品' }, + // hidden: true, + // }, + // // 子母件商品 + // { + // path: 'spu-son', + // name: 'BusinessGoodsVirtualSpuSonList', + // component: () => import('@/views/center-business/goods/virtual/spu-son/index'), + // meta: { + // title: '子母件商品', + // }, + // permissionType: 'tab', + // hidden: true, + // }, + // { + // path: 'spu-son/add', + // name: 'BusinessGoodsVirtualSpuSonAdd', + // component: () => import('@/views/center-business/goods/virtual/spu-son/add'), + // meta: { + // title: '添加子母件商品', + // }, + // hidden: true, + // }, + // { + // path: 'spu-son/edit', + // name: 'BusinessGoodsVirtualSpuSonEdit', + // component: () => import('@/views/center-business/goods/virtual/spu-son/edit'), + // meta: { + // title: '编辑子母件商品', + // }, + // hidden: true, + // }, + // { + // path: 'spu-son/view', + // name: 'BusinessGoodsVirtualSpuSonView', + // component: () => import('@/views/center-business/goods/virtual/spu-son/view'), + // meta: { + // title: '子母件商品详情', + // }, + // hidden: true, + // }, + // /** 按钮权限start */ + // { + // path: '', + // name: 'BusinessGoodsVirtualSpuSon_Delete', + // meta: { title: '删除子母件商品' }, + // hidden: true, + // }, + // // 安装服务 + // { + // path: 'install-service', + // name: 'BusinessGoodsVirtualInstallServiceList', + // component: () => import('@/views/center-business/goods/virtual/install-service/index'), + // meta: { + // title: '安装服务', + // }, + // permissionType: 'tab', + // hidden: true, + // }, + // { + // path: 'install-service/add', + // name: 'BusinessGoodsVirtualInstallServiceAdd', + // component: () => import('@/views/center-business/goods/virtual/install-service/add'), + // meta: { + // title: '添加安装服务', + // }, + // hidden: true, + // }, + // { + // path: 'install-service/edit', + // name: 'BusinessGoodsVirtualInstallServiceEdit', + // component: () => import('@/views/center-business/goods/virtual/install-service/edit'), + // meta: { + // title: '编辑安装服务', + // }, + // hidden: true, + // }, + // { + // path: 'install-service/view', + // name: 'BusinessGoodsVirtualInstallServiceView', + // component: () => import('@/views/center-business/goods/virtual/install-service/view'), + // meta: { + // title: '安装服务详情', + // }, + // hidden: true, + // }, + // /** 按钮权限start */ + // { + // path: '', + // name: 'BusinessGoodsVirtualInstallService_Delete', + // meta: { title: '删除安装服务' }, + // hidden: true, + // }, + // ], + // }, + /** **** 审核商品 **** */ + { + path: 'audit', + name: 'BusinessGoodsAudit', + component: EmptyRouter, + redirect: 'audit/sku/ordinary', + meta: { + title: '商品审核', + }, + children: [ + { + path: 'sku/ordinary', + name: 'BusinessGoodsAuditSkuOrdinaryIndex', + component: () => import('@/views/center-business/goods/audit/sku/ordinary'), + meta: { + title: '商品SKU审核', + }, + permissionType: 'tab', + hidden: true, + }, + + { + path: 'sku/ordinary/view', + name: 'BusinessGoodsAuditSkuOrdinaryView', + component: () => import('@/views/center-business/goods/audit/sku/ordinary/view'), + meta: { + title: '查看商品SKU审核详情', + }, + hidden: true, + }, + { + path: 'sku/ordinary/audit', + name: 'BusinessGoodsAuditSkuOrdinaryAudit', + component: () => import('@/views/center-business/goods/audit/sku/ordinary/audit'), + meta: { + title: '审核商品SKU审核详情', + }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsAuditSkuOrdinary_Pass', + meta: { title: '商品SKU审核-通过' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsAuditSkuOrdinary_reject', + meta: { title: '商品SKU审核-驳回' }, + hidden: true, + }, + { + path: 'sku/package', + name: 'BusinessGoodsAuditSkuPackageIndex', + component: () => import('@/views/center-business/goods/audit/sku/package'), + meta: { + title: '套餐SKU审核', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: 'sku/package/view', + name: 'BusinessGoodsAuditSkuPackageView', + component: () => import('@/views/center-business/goods/audit/sku/package/view'), + meta: { + title: '查看套餐SKU审核详情', + }, + hidden: true, + }, + { + path: 'sku/package/audit', + name: 'BusinessGoodsAuditSkuPackageAudit', + component: () => import('@/views/center-business/goods/audit/sku/package/audit'), + meta: { + title: '审核套餐SKU审核详情', + }, + hidden: true, + }, + + { + path: '', + name: 'BusinessGoodsAuditSkuPackage_Pass', + meta: { title: '套餐SKU审核-通过' }, + hidden: true, + }, + { + path: '', + name: 'BusinessGoodsAuditSkuPackage_reject', + meta: { title: '套餐SKU审核-驳回' }, + hidden: true, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/center-business/index.js b/front-end/src/router/center-business/index.js new file mode 100644 index 0000000..79e0c87 --- /dev/null +++ b/front-end/src/router/center-business/index.js @@ -0,0 +1,42 @@ +/* + * @Author: your name + * @Date: 2021-07-13 14:49:11 + * @LastEditTime: 2022-06-10 09:49:54 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\router\center-business\index.js + */ +import user from './user'; // 用户管理 +import channel from './channel'; // 渠道管理 +import goods from './goods'; // 商品管理 +import stock from './stock'; // 库存管理 +import order from './order'; // 订单管理 +import after from './after'; // 售后管理 +import label from './label'; // 标签管理 + +/* ****************************** 暂时不显示 *******************************/ +// import log from './log'; // 日志管理 +// import worksheet from './worksheet'; // 工单管理 +// import strategy from './strategy'; +// 修改以下数组,需同时修改 src\layout\components\Sidebar\HoverItem.vue 99:TODO +const BUSINESS_CENTER_ROUTER = [ + user, + channel, + goods, + stock, + order, + after, + label, + // log, + + // worksheet, + // strategy, +]; +// 按可见子菜单数量 从小到大 排序一下…… +// BUSINESS_CENTER_ROUTER.sort(function(a, b) { +// return ( +// a.children.filter(e => e.hidden != true).length - +// b.children.filter(e => e.hidden != true).length +// ); +// }); +export default BUSINESS_CENTER_ROUTER; diff --git a/front-end/src/router/center-business/label.js b/front-end/src/router/center-business/label.js new file mode 100644 index 0000000..db9e329 --- /dev/null +++ b/front-end/src/router/center-business/label.js @@ -0,0 +1,84 @@ +// -- 标签管理 label +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +import EmptyRouter from '@/layout/EmptyRouter.vue'; +// import Test0Empty from '@/views/test/empty.vue'; +export default { + path: 'label', + name: 'BusinessLabel', + component: EmptyRouterAlive, + meta: { + title: '标签管理', + }, + children: [ + { + path: 'sys', + name: 'BusinessLabelSys', + component: EmptyRouter, + redirect: 'sys/index', + meta: { + title: '系统标签', + }, + children: [ + { + path: 'index', + name: 'BusinessLabelSysIndex', + component: () => import('@/views/center-business/label/sys/index'), + meta: { + title: '系统标签', + }, + }, + { + path: '', + name: 'BusinessLabelSysIndex_Status', + meta: { title: '启用/禁用' }, + hidden: true, + }, + ], + }, + { + path: 'hand', + name: 'BusinessLabelHand', + component: EmptyRouter, + redirect: 'hand/index', + meta: { + title: '人工标签', + }, + children: [ + { + path: 'index', + name: 'BusinessLabelHandIndex', + component: () => import('@/views/center-business/label/hand/index'), + meta: { + title: '人工标签', + }, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessLabelHandIndex_Add', + meta: { title: '新增', isCache: true }, + hidden: true, + }, + { + path: '', + name: 'BusinessLabelHandIndex_Edit', + meta: { title: '编辑' }, + hidden: true, + }, + { + path: '', + name: 'BusinessLabelHandIndex_Status', + meta: { title: '启用/禁用' }, + hidden: true, + }, + { + path: '', + name: 'BusinessLabelHandIndex_Delete', + meta: { title: '删除' }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + ], +}; diff --git a/front-end/src/router/center-business/log.js b/front-end/src/router/center-business/log.js new file mode 100644 index 0000000..2bce5ac --- /dev/null +++ b/front-end/src/router/center-business/log.js @@ -0,0 +1,53 @@ +// --- 日志管理 log + +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +import EmptyRouter from '@/layout/EmptyRouter.vue'; +import Test0Empty from '@/views/test/empty.vue'; +export default { + path: 'log', + name: 'BusinessLog', + component: EmptyRouterAlive, + meta: { + title: '日志管理', + }, + children: [ + { + path: 'operation/sys', + name: 'BusinessLogOperationSys', + component: EmptyRouter, + redirect: 'operation/sys/index', + meta: { + title: '系统操作日志', + }, + children: [ + { + path: 'index', + name: 'BusinessLogOperationSysIndex', + component: Test0Empty, + meta: { + title: '系统操作日志', + }, + }, + ], + }, + { + path: 'data', + name: 'BusinessLogData', + component: EmptyRouter, + redirect: 'data/index', + meta: { + title: '数据对接日志', + }, + children: [ + { + path: 'index', + name: 'BusinessLogDataIndex', + component: Test0Empty, + meta: { + title: '数据对接日志', + }, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/center-business/order.js b/front-end/src/router/center-business/order.js new file mode 100644 index 0000000..3ce5a5c --- /dev/null +++ b/front-end/src/router/center-business/order.js @@ -0,0 +1,92 @@ +/* + * 订单管理 + */ +import EmptyRouter from '@/layout/EmptyRouter.vue'; +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +// import Test0Empty from '@/views/test/empty.vue'; +export default { + path: 'order', + name: 'BusinessOrder', + component: EmptyRouterAlive, + meta: { + title: '普通订单', + }, + children: [ + { + path: 'third', + name: 'BusinessOrderThird', + component: EmptyRouter, + redirect: 'third/list', + meta: { + title: '三方销售单', + }, + children: [ + { + path: 'list', + name: 'BusinessOrderThirdIndex', + component: () => import('@/views/center-business/order/third/index'), + meta: { + title: '三方销售单', // 拉取订单管理 + }, + }, + { + path: 'add', + name: 'BusinessOrderThirdAdd', + component: () => import('@/views/center-business/order/third/add'), + meta: { + title: '三方单录入', + isCache: true, + }, + hidden: true, + }, + { + path: 'view', + name: 'BusinessOrderThirdView', + component: () => import('@/views/center-business/order/third/view'), + meta: { + title: '三方销售单详情', + }, + hidden: true, + }, + ], + }, + { + path: 'internal', + name: 'BusinessOrderInternal', + component: EmptyRouter, + redirect: 'internal/list', + meta: { + title: '内部销售单', + }, + children: [ + { + path: 'list', + name: 'BusinessOrderInternalIndex', + component: () => import('@/views/center-business/order/internal/index'), + meta: { + title: '内部销售单', + }, + }, + { + path: 'view', + name: 'BusinessOrderInternalView', + component: () => import('@/views/center-business/order/internal/view'), + meta: { + title: '内部销售单详情', + }, + hidden: true, + }, + { + path: 'add', + name: 'BusinessOrderInternalAdd', + component: () => import('@/views/center-business/order/internal/add'), + meta: { + title: '销售单录入', + isCache: true, + }, + hidden: true, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/center-business/stock.js b/front-end/src/router/center-business/stock.js new file mode 100644 index 0000000..ebd4175 --- /dev/null +++ b/front-end/src/router/center-business/stock.js @@ -0,0 +1,206 @@ +/* + * @Author: your name + * @Date: 2021-07-13 14:49:11 + * @LastEditTime: 2022-06-10 09:51:03 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\router\center-business\stock.js + */ +/* + * 库存管理 + */ +import EmptyRouter from '@/layout/EmptyRouter.vue'; +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +// import Test0Empty from '@/views/test/empty.vue'; +export default { + path: 'stock', + name: 'BusinessStock', + component: EmptyRouterAlive, + meta: { + title: '库存管理', + }, + children: [ + /** **** 库存查询 Search **** */ + { + path: 'search', + name: 'BusinessStockSearch', + component: EmptyRouter, + redirect: 'search/sku', + meta: { + title: '库存查询', + }, + children: [ + { + path: 'sku', + name: 'BusinessStockSearchIndex', + component: () => import('@/views/center-business/stock/search/index.vue'), + meta: { + title: '库存查询', + }, + hidden: true, + }, + ], + }, + /** **** 库存变动查询 Change **** */ + { + path: 'change', + name: 'BusinessStockChange', + component: EmptyRouter, + redirect: 'change/index', + meta: { + title: '库存变动查询', + }, + children: [ + { + path: 'index', + name: 'BusinessStockChangeIndex', + component: () => import('@/views/center-business/stock/change/index.vue'), + meta: { + title: '库存变动查询', + }, + }, + ], + }, + /** 入库管理 **/ + { + path: 'entry', + name: 'BusinessStockEntry', + component: EmptyRouter, + redirect: 'entry/inform', + meta: { + title: '入库管理', + }, + children: [ + { + path: 'inform', + name: 'BusinessStockEntryInformIndex', + component: () => import('@/views/center-business/stock/entry/inform/index.vue'), + meta: { + title: '入库通知单', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: 'inform/view', + name: 'BusinessStockEntryInformView', + component: () => import('@/views/center-business/stock/entry/inform/view.vue'), + meta: { + title: '入库通知单详情', + }, + hidden: true, + }, + { + path: 'result', + name: 'BusinessStockEntryResultIndex', + component: () => import('@/views/center-business/stock/entry/result/index.vue'), + meta: { + title: '入库结果单', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: 'result/view', + name: 'BusinessStockEntryResultView', + component: () => import('@/views/center-business/stock/entry/result/view.vue'), + meta: { + title: '入库结果单详情', + }, + hidden: true, + }, + ], + }, + /** 入库管理end */ + /** 出库管理 **/ + { + path: 'delivery', + name: 'BusinessStockDelivery', + component: EmptyRouter, + redirect: 'delivery/inform', + meta: { + title: '出库管理', + }, + children: [ + { + path: 'inform', + name: 'BusinessStockDeliveryInformIndex', + component: () => import('@/views/center-business/stock/delivery/inform/index.vue'), + meta: { + title: '出库通知单', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: 'inform/view', + name: 'BusinessStockDeliveryInformView', + component: () => import('@/views/center-business/stock/delivery/inform/view.vue'), + meta: { + title: '出库通知单详情', + }, + hidden: true, + }, + { + path: 'result', + name: 'BusinessStockDeliveryResultIndex', + component: () => import('@/views/center-business/stock/delivery/result/index.vue'), + meta: { + title: '出库结果单', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: 'result/view', + name: 'BusinessStockDeliveryResultView', + component: () => import('@/views/center-business/stock/delivery/result/view.vue'), + meta: { + title: '出库结果单详情', + }, + hidden: true, + }, + ], + }, + /** 出库管理end */ + /** **** 数据同步管理 Synchronization **** */ + { + path: 'synchronization', + name: 'BusinessStockSynchronization', + component: EmptyRouter, + redirect: 'synchronization/List', + meta: { + title: '数据同步管理', + }, + children: [ + { + path: 'list', + name: 'BusinessStockSynchronizationIndex', + component: () => import('@/views/center-business/stock/synchronization'), + meta: { + title: '数据同步管理', + }, + }, + { + path: 'add', + name: 'BusinessStockSynchronizationAdd', + component: () => import('@/views/center-business/stock/synchronization/add'), + meta: { + title: '新建数据同步', + isCache: true, + }, + hidden: true, + }, + { + path: '', + name: 'BusinessStockSynchronizationIndex_Pass', + meta: { + title: '审核通过', + }, + hidden: true, + }, + ], + }, + /** 数据同步管理end */ + ], +}; diff --git a/front-end/src/router/center-business/user.js b/front-end/src/router/center-business/user.js new file mode 100644 index 0000000..d5ea096 --- /dev/null +++ b/front-end/src/router/center-business/user.js @@ -0,0 +1,197 @@ +/* + * 用户管理 + */ + +import EmptyRouter from '@/layout/EmptyRouter.vue'; +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +export default { + path: 'user', + name: 'BusinessUser', + component: EmptyRouterAlive, + meta: { + title: '用户管理', + }, + children: [ + /** ****** 用户管理 ******** */ + { + path: 'account', + name: 'BusinessUserAccount', + component: EmptyRouter, + redirect: 'account/list', + meta: { title: '账户管理', isCache: true }, + children: [ + { + path: 'list', + name: 'BusinessUserAccountIndex', + component: () => import('@/views/center-business/user/account/index'), + meta: { title: '账户管理', isCache: true }, + }, + { + path: 'add', + name: 'BusinessUserAccountAdd', + component: () => import('@/views/center-business/user/account/add'), + meta: { title: '新建账户', isCache: true }, + hidden: true, + }, + { + path: 'edit', + name: 'BusinessUserAccountEdit', + component: () => import('@/views/center-business/user/account/edit'), + meta: { title: '编辑账户' }, + hidden: true, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessUserAccountIndex_RelatedCompany', + meta: { title: '关联组织架构' }, + hidden: true, + }, + { + path: '', + name: 'BusinessUserAccountIndex_ChangePassword', + meta: { title: '修改密码' }, + hidden: true, + }, + { + path: '', + name: 'BusinessUserAccountIndex_UseStatus', + meta: { title: '启用/禁用' }, + hidden: true, + }, + { + path: '', + name: 'BusinessUserAccountIndex_Locked', + meta: { title: '锁定/解锁' }, + hidden: true, + }, + { + path: '', + name: 'BusinessUserAccountIndex_Delete', + meta: { title: '删除账户' }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + + // { + // path: 'account/allot', + // name: 'BusinessUserAccountAllot', + // component: () => import('@/views/center-business/user/account/allot'), + // meta: { title: '分配用户组' }, + // hidden: true, + // }, + /** ****** 用户组管理 ******** */ + // { + // path: 'group/list', + // name: 'BusinessUserGroupList', + // component: () => import('@/views/center-business/user/group/index'), + // meta: { title: '用户组管理' }, + // }, + // { + // path: 'group/edit', + // name: 'BusinessUserGroupEdit', + // component: () => import('@/views/center-business/user/group/edit'), + // meta: { title: '编辑用户组' }, + // hidden: true, + // }, + + /** ****** 角色管理 ******** */ + { + path: 'role', + name: 'BusinessUserRole', + component: EmptyRouter, + redirect: 'role/list', + meta: { title: '角色管理' }, + children: [ + { + path: 'list', + name: 'BusinessUserRoleIndex', + component: () => import('@/views/center-business/user/role/index'), + meta: { title: '角色管理' }, + }, + { + path: 'allot-account', + name: 'BusinessUserRoleAllotUser', + component: () => import('@/views/center-business/user/role/allotUser'), + meta: { title: '分配用户' }, + hidden: true, + }, + { + path: 'allot-data', + name: 'BusinessUserRoleAllotData', + component: () => import('@/views/center-business/user/role/allotData'), + meta: { title: '分配数据权限' }, + hidden: true, + }, + { + path: 'allot-menu', + name: 'BusinessUserRoleAllotMenu', + component: () => import('@/views/center-business/user/role/allotMenu'), + meta: { title: '分配菜单权限' }, + hidden: true, + }, + /** 按钮权限start */ + { + path: '', + name: 'BusinessUserRoleIndex_AddRole', + meta: { title: '创建角色', isCache: true }, + hidden: true, + }, + { + path: '', + name: 'BusinessUserRoleIndex_Edit', + meta: { title: '编辑角色' }, + hidden: true, + }, + { + path: '', + name: 'BusinessUserRoleIndex_Status', + meta: { title: '启用/禁用' }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + + /** ****** 权限管理 ******** */ + /* ****************************** 暂时不显示 *******************************/ + // { + // path: 'data', + // name: 'BusinessUserData', + // component: EmptyRouter, + // redirect: 'data/list', + // meta: { title: '权限管理' }, + // children: [ + // { + // path: 'list', + // name: 'BusinessUserDataList', + // component: () => import('@/views/center-business/user/data/index'), + // meta: { title: '权限管理' }, + // }, + // { + // path: 'add', + // name: 'BusinessUserDataAdd', + // component: () => import('@/views/center-business/user/data/add'), + // meta: { title: '新建权限' }, + // hidden: true, + // }, + // /** 按钮权限start */ + // { + // path: '', + // name: 'BusinessUserDataList_Delete', + // meta: { title: '删除权限' }, + // hidden: true, + // }, + // { + // path: '', + // name: 'BusinessUserDataList_AllotData', + // meta: { title: '分配数据权限' }, + // hidden: true, + // }, + // /** 按钮权限end */ + // ], + // }, + ], +}; diff --git a/front-end/src/router/center-business/worksheet.js b/front-end/src/router/center-business/worksheet.js new file mode 100644 index 0000000..d3ac1ab --- /dev/null +++ b/front-end/src/router/center-business/worksheet.js @@ -0,0 +1,62 @@ +// ---工单管理 worksheet + +import EmptyRouter from '@/layout/EmptyRouter.vue'; +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +import Test0Empty from '@/views/test/empty.vue'; +export default { + path: 'worksheet', + name: 'BusinessWorksheet', + component: EmptyRouterAlive, + meta: { + title: '工单管理', + }, + children: [ + { + path: 'install', + name: 'BusinessWorksheetInstall', + component: EmptyRouter, + redirect: 'install/index', + meta: { + title: '安装工单管理', + }, + children: [ + { + path: 'index', + name: 'BusinessWorksheetInstallIndex', + component: Test0Empty, + meta: { + title: '安装工单管理', + }, + }, + ], + }, + { + path: 'service', + name: 'BusinessWorksheetService', + component: EmptyRouter, + redirect: 'service/list', + meta: { + title: '服务管理', + }, + children: [ + { + path: 'list', + name: 'BusinessWorksheetServiceIndex', + component: () => import('@/views/center-business/worksheet/service'), + meta: { + title: '服务管理', + }, + }, + { + path: 'view', + name: 'BusinessWorksheetServiceView', + component: () => import('@/views/center-business/worksheet/service/view.vue'), + meta: { + title: '服务管理详情', + }, + hidden: true, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/center-setting/after.js b/front-end/src/router/center-setting/after.js new file mode 100644 index 0000000..b198791 --- /dev/null +++ b/front-end/src/router/center-setting/after.js @@ -0,0 +1,55 @@ +/* + * 售后 + */ + +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +import EmptyRouter from '@/layout/EmptyRouter.vue'; +import Test0Empty from '@/views/test/empty.vue'; +export default { + path: 'after', + name: 'SettingAfter', + component: EmptyRouterAlive, + meta: { + title: '售后', + }, + children: [ + { + path: 'process', + name: 'SettingAfterProcess', + redirect: 'process/config', + component: EmptyRouter, + meta: { + title: '售后流程配置', + }, + children: [ + { + path: 'config', + name: 'SettingAfterProcessConfig', + component: Test0Empty, + meta: { + title: '售后流程配置', + }, + }, + ], + }, + { + path: 'audit', + name: 'SettingAfterAudit', + redirect: 'audit/strategy', + component: EmptyRouter, + meta: { + title: '售后审核策略', + }, + children: [ + { + path: 'strategy', + name: 'SettingAfterAuditStrategy', + component: Test0Empty, + meta: { + title: '售后审核策略', + }, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/center-setting/base-data.js b/front-end/src/router/center-setting/base-data.js new file mode 100644 index 0000000..f0a268c --- /dev/null +++ b/front-end/src/router/center-setting/base-data.js @@ -0,0 +1,278 @@ +/* + * 基础数据设置 + */ + +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +import EmptyRouter from '@/layout/EmptyRouter.vue'; +export default { + path: 'base-data', + name: 'SettingBaseData', + component: EmptyRouterAlive, + meta: { + title: '基础数据', + }, + children: [ + { + path: 'code-rule', + name: 'SettingBaseDataCodeRule', + component: EmptyRouter, + redirect: 'code-rule/list', + meta: { + title: '编码规则', + }, + children: [ + { + path: 'list', + name: 'SettingBaseDataCodeRuleIndex', + component: () => import('@/views/center-setting/base-data/code-rule/index'), + meta: { + title: '编码规则', + }, + }, + { + path: '', + name: 'SettingBaseDataCodeRule_Add', + meta: { + title: '新增-编码规则', + }, + hidden: true, + }, + { + path: 'code-rule/edit', + name: 'SettingBaseDataCodeRuleEdit', + component: () => import('@/views/center-setting/base-data/code-rule/edit'), + meta: { + title: '编辑-编码规则', + }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataCodeRule_Delete', + meta: { + title: '删除-编码规则', + }, + hidden: true, + }, + ], + }, + { + path: 'country', + name: 'SettingBaseDataCountry', + component: EmptyRouter, + redirect: 'country/index', + meta: { + title: '国家定义', + }, + children: [ + { + path: 'index', + name: 'SettingBaseDataCountryIndex', + component: () => import('@/views/center-setting/base-data/country/index'), + meta: { + title: '国家定义', + }, + }, + { + path: '', + name: 'SettingBaseDataCountryIndex_Add', + meta: { + title: '新增-国家', + }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataCountryIndex_Edit', + meta: { + title: '编辑-国家', + }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataCountryIndex_Status', + meta: { + title: '启用/禁用-国家', + }, + hidden: true, + }, + ], + }, + { + path: 'region', + name: 'SettingBaseDataRegion', + component: EmptyRouter, + redirect: 'region/index', + meta: { + title: '中国行政区定义', + }, + children: [ + { + path: 'index', + name: 'SettingBaseDataRegionIndex', + component: () => import('@/views/center-setting/base-data/region/index'), + meta: { + title: '中国行政区定义', + }, + }, + { + path: '', + name: 'SettingBaseDataRegionIndex_Add', + meta: { + title: '新增-中国行政区', + }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataRegionIndex_Edit', + meta: { + title: '编辑-中国行政区', + }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataRegionIndex_Delete', + meta: { + title: '删除-中国行政区', + }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataRegionIndex_AddChild', + meta: { + title: '新建下级区域-中国行政区', + }, + hidden: true, + }, + ], + }, + { + path: 'after-sales-reason', + name: 'SettingBaseDataAfterSalesReason', + component: EmptyRouter, + redirect: 'after-sales-reason/refund', + meta: { + title: '售后原因', + }, + children: [ + { + path: 'refund', + name: 'SettingBaseDataAfterSalesReasonRefundIndex', + component: () => import('@/views/center-setting/base-data/after-sales-reason/refund'), + meta: { + title: '仅退款原因', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataAfterSalesReasonRefundIndex_Add', + meta: { title: '新增仅退款原因', isCache: true }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataAfterSalesReasonRefundIndex_Edit', + meta: { title: '编辑仅退款原因' }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataAfterSalesReasonRefundIndex_Status', + meta: { title: '禁用/启用仅退款原因' }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataAfterSalesReasonRefundIndex_Delete', + meta: { title: '删除仅退款原因' }, + hidden: true, + }, + { + path: 'return', + name: 'SettingBaseDataAfterSalesReasonReturnIndex', + component: () => import('@/views/center-setting/base-data/after-sales-reason/return'), + meta: { + title: '退货退款原因', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataAfterSalesReasonReturnIndex_Add', + meta: { title: '新增退货退款原因', isCache: true }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataAfterSalesReasonReturnIndex_Edit', + meta: { title: '编辑退货退款原因' }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataAfterSalesReasonReturnIndex_Status', + meta: { title: '禁用/启用退货退款原因' }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataAfterSalesReasonReturnIndex_Delete', + meta: { title: '删除退货退款原因' }, + hidden: true, + }, + ], + }, + { + path: 'lov', + name: 'SettingBaseDataLov', + component: EmptyRouter, + redirect: 'lov/index', + meta: { + title: '值集管理', + }, + children: [ + { + path: 'index', + name: 'SettingBaseDataLovIndex', + component: () => import('@/views/center-setting/base-data/lov'), + meta: { + title: '值集管理', + }, + }, + /** 按钮权限start */ + { + path: '', + name: 'SettingBaseDataLovIndex_Add', + meta: { title: '创建值集值', isCache: true }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataLovIndex_Edit', + meta: { title: '编辑值集值' }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataLovIndex_Delete', + meta: { title: '删除值集值' }, + hidden: true, + }, + { + path: '', + name: 'SettingBaseDataLovIndex_Status', + meta: { title: '启用/禁用' }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + ], +}; diff --git a/front-end/src/router/center-setting/file.js b/front-end/src/router/center-setting/file.js new file mode 100644 index 0000000..a3701fa --- /dev/null +++ b/front-end/src/router/center-setting/file.js @@ -0,0 +1,172 @@ +/* + * 文件管理 File + */ +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +import EmptyRouter from '@/layout/EmptyRouter.vue'; +export default { + path: 'file', + name: 'SettingFile', + component: EmptyRouterAlive, + redirect: 'file/list', + meta: { + title: '文件管理', + }, + children: [ + { + path: 'search', + name: 'SettingFileSearch', + component: EmptyRouter, + redirect: 'search/list', + meta: { + title: '汇总查询', + }, + children: [ + { + path: 'list', + name: 'SettingFileSearchIndex', + component: () => import('@/views/center-setting/file/search'), + meta: { + title: '汇总查询', + }, + }, + { + path: '', + name: 'SettingFileSearchIndex_UpLoad', + meta: { + title: '文件上传-汇总查询', + }, + hidden: true, + }, + { + path: '', + name: 'SettingFileSearchIndex_View', + meta: { + title: '预览-汇总查询', + }, + hidden: true, + }, + { + path: '', + name: 'SettingFileSearchIndex_DownLoad', + meta: { + title: '下载-汇总查询', + }, + hidden: true, + }, + ], + }, + { + path: 'storage', + name: 'SettingFileStorage', + component: EmptyRouter, + redirect: 'storage/list', + meta: { + title: '存储配置', + }, + children: [ + { + path: 'list', + name: 'SettingFileStorageIndex', + component: () => import('@/views/center-setting/file/storage'), + meta: { + title: '存储配置', + }, + }, + { + path: '', + name: 'SettingFileStorageIndex_Add', + meta: { + title: '新增-存储配置', + }, + hidden: true, + }, + { + path: '', + name: 'SettingFileStorageIndex_Edit', + meta: { + title: '编辑-存储配置', + }, + hidden: true, + }, + { + path: '', + name: 'SettingFileStorageIndex_Delete', + meta: { + title: '删除-存储配置', + }, + hidden: true, + }, + ], + }, + { + path: 'upload/ram', + name: 'SettingFileUploadRam', + component: EmptyRouter, + redirect: 'upload/ram/index', + meta: { + title: '上传容量配置', + }, + children: [ + { + path: 'index', + name: 'SettingFileUploadRamIndex', + component: () => import('@/views/center-setting/file/upload-ram/index'), + meta: { + title: '上传容量配置', + }, + }, + { + path: '', + name: 'SettingFileUploadRamIndex_Save', + meta: { + title: '保存-上传容量配置', + }, + hidden: true, + }, + ], + }, + { + path: 'upload/config', + name: 'SettingFileUploadConfig', + component: EmptyRouter, + redirect: 'upload/config/index', + meta: { + title: '上传详细配置', + }, + children: [ + { + path: 'index', + name: 'SettingFileUploadConfigIndex', + component: () => import('@/views/center-setting/file/upload-config/index'), + meta: { + title: '上传详细配置', + }, + }, + { + path: '', + name: 'SettingFileUploadConfigIndex_Add', + meta: { + title: '新增-上传详细配置', + }, + hidden: true, + }, + { + path: '', + name: 'SettingFileUploadConfigIndex_Edit', + meta: { + title: '编辑-上传详细配置', + }, + hidden: true, + }, + { + path: '', + name: 'SettingFileUploadConfigIndex_Delete', + meta: { + title: '删除-上传详细配置', + }, + hidden: true, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/center-setting/goods.js b/front-end/src/router/center-setting/goods.js new file mode 100644 index 0000000..0db39ee --- /dev/null +++ b/front-end/src/router/center-setting/goods.js @@ -0,0 +1,45 @@ +/* + * 商品 + */ + +import EmptyRouter from '@/layout/EmptyRouter.vue'; +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +export default { + path: 'goods', + name: 'SettingGoods', + component: EmptyRouterAlive, + meta: { + title: '商品', + }, + children: [ + { + path: 'audit', + name: 'SettingGoodsAudit', + component: EmptyRouter, + redirect: 'audit/strategy', + meta: { + title: '商品审核策略', + }, + children: [ + { + path: 'strategy', + name: 'SettingGoodsAuditStrategyIndex', + component: () => import('@/views/center-setting/goods/audit/strategy'), + meta: { + title: '商品审核策略', + }, + }, + /** 按钮权限start */ + { + path: '', + name: 'SettingGoodsAuditStrategyIndex_Save', + meta: { + title: '保存-商品审核策略', + }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + ], +}; diff --git a/front-end/src/router/center-setting/index.js b/front-end/src/router/center-setting/index.js new file mode 100644 index 0000000..48a3c1d --- /dev/null +++ b/front-end/src/router/center-setting/index.js @@ -0,0 +1,47 @@ +/* + * @Author: your name + * @Date: 2021-07-13 14:49:11 + * @LastEditTime: 2022-06-10 09:52:01 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\router\center-setting\index.js + */ +import user from './user'; // 用户 +import goods from './goods'; // 商品 +import baseData from './base-data'; // 基础数据 +import indexes from './indexes'; // 索引配置 +import file from './file'; // 文件管理 +import instance from './instance'; // 事务管理 + +/* ****************************** 暂时不显示 *******************************/ +// import message from './message'; // 消息服务 +// import after from './after'; // 售后 +// import scheduler from './scheduler'; // 调度服务 +// 修改以下数组,需同时修改 src\layout\components\Sidebar\HoverItem.vue 99:TODO +const SETTING_CENTER_ROUTER = [ + user, + goods, + + // after + + baseData, + // message, + indexes, + file, + // scheduler, + instance, + // manage, + // processOrder, + // stockStructure, + // processChecking, + // search, + // statement, +]; +// 按可见子菜单数量 从小到大 排序一下…… +// SETTING_CENTER_ROUTER.sort(function(a, b) { +// return ( +// a.children.filter(e => e.hidden != true).length - +// b.children.filter(e => e.hidden != true).length +// ); +// }); +export default SETTING_CENTER_ROUTER; diff --git a/front-end/src/router/center-setting/indexes.js b/front-end/src/router/center-setting/indexes.js new file mode 100644 index 0000000..911b953 --- /dev/null +++ b/front-end/src/router/center-setting/indexes.js @@ -0,0 +1,155 @@ +/* + * @Author: your name + * @Date: 2021-07-20 15:46:13 + * @LastEditTime: 2022-06-07 16:50:25 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\router\center-setting\indexes.js + */ +/* + * 索引配置 indexes + */ +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +import EmptyRouter from '@/layout/EmptyRouter.vue'; +export default { + path: 'indexes', + name: 'SettingIndexes', + component: EmptyRouterAlive, + meta: { + title: '索引配置', + }, + children: [ + { + path: 'config', + name: 'SettingIndexesConfig', + component: EmptyRouter, + redirect: 'config/list', + meta: { + title: '索引配置列表', + }, + children: [ + { + path: 'list', + name: 'SettingIndexesConfigListIndex', + component: () => import('@/views/center-setting/indexes/list'), + meta: { + title: '索引配置列表', + }, + }, + { + path: 'add', + name: 'SettingIndexesConfigListAdd', + component: () => import('@/views/center-setting/indexes/list/add'), + meta: { + title: '新增索引', + isCache: true, + }, + hidden: true, + }, + { + path: 'edit', + name: 'SettingIndexesConfigListEdit', + component: () => import('@/views/center-setting/indexes/list/edit'), + meta: { + title: '编辑索引', + }, + hidden: true, + }, + { + path: 'edit', + name: 'SettingIndexesConfigList_Status', + meta: { + title: '启用/禁用-索引', + }, + hidden: true, + }, + ], + }, + /** 查询配置部分 */ + { + path: 'inquiry', + name: 'SettingInquiry', + component: EmptyRouter, + redirect: 'inquiry/list', + meta: { + title: '查询配置', + }, + children: [ + { + path: 'list', + name: 'SettingInquiryIndex', + component: () => import('@/views/center-setting/indexes/inquiry'), + meta: { + title: '查询配置', + }, + }, + { + path: 'inquiryAdd', + name: 'SettingInquiryAdd', + component: () => import('@/views/center-setting/indexes/inquiry/add'), + meta: { + title: '添加查询配置', + isCache: true, + }, + hidden: true, + }, + { + path: 'inquiryEdit', + name: 'SettingInquiryEdit', + component: () => import('@/views/center-setting/indexes/inquiry/edit'), + meta: { + title: '编辑查询配置', + }, + hidden: true, + }, + { + path: '', + name: 'SettingInquiry_Delete', + meta: { + title: '删除-查询配置', + }, + hidden: true, + }, + ], + }, + /** 索引同步配置部分 */ + { + path: 'sync', + name: 'SettingIndexesSync', + component: EmptyRouter, + redirect: 'sync/list', + meta: { + title: '索引同步', + }, + children: [ + { + path: 'list', + name: 'SettingIndexesSyncIndex', + component: () => import('@/views/center-setting/indexes/sync'), + meta: { + title: '索引同步', + }, + }, + { + path: 'add', + name: 'SettingIndexesSyncAdd', + component: () => import('@/views/center-setting/indexes/sync/add'), + meta: { + title: '添加同步索引', + isCache: true, + }, + hidden: true, + }, + { + path: 'edit', + name: 'SettingIndexesSyncEdit', + component: () => import('@/views/center-setting/indexes/sync/edit'), + meta: { + title: '编辑同步索引', + }, + hidden: true, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/center-setting/instance.js b/front-end/src/router/center-setting/instance.js new file mode 100644 index 0000000..e5035a5 --- /dev/null +++ b/front-end/src/router/center-setting/instance.js @@ -0,0 +1,34 @@ +/* + * 事务管理 instance + */ +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +import EmptyRouter from '@/layout/EmptyRouter.vue'; +export default { + path: 'instance', + name: 'SettingInstance', + component: EmptyRouterAlive, + meta: { + title: '事务管理', + }, + children: [ + { + path: 'manage', + name: 'SettingInstanceManage', + component: EmptyRouter, + redirect: 'manage/index', + meta: { + title: '事务列表', + }, + children: [ + { + path: 'index', + name: 'SettingInstanceManageIndex', + component: () => import('@/views/center-setting/instance/manage'), + meta: { + title: '事务列表', + }, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/center-setting/message.js b/front-end/src/router/center-setting/message.js new file mode 100644 index 0000000..d4cc019 --- /dev/null +++ b/front-end/src/router/center-setting/message.js @@ -0,0 +1,175 @@ +/* + * -消息服务 message + */ +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +import EmptyRouter from '@/layout/EmptyRouter.vue'; +// import Test0Empty from '@/views/test/empty.vue'; +export default { + path: 'message', + name: 'SettingMessage', + component: EmptyRouterAlive, + meta: { + title: '消息服务', + }, + children: [ + { + path: 'notice', + name: 'SettingMessageNotice', + component: EmptyRouter, + redirect: 'notice/list', + meta: { + title: '公告管理', + }, + children: [ + { + path: 'list', + name: 'SettingMessageNoticeIndex', + component: () => import('@/views/center-setting/message/notice/index'), + meta: { + title: '公告管理', + }, + }, + { + path: 'add', + name: 'SettingMessageNoticeAdd', + component: () => import('@/views/center-setting/message/notice/add'), + meta: { + title: '新增公告', + isCache: true, + }, + hidden: true, + }, + { + path: 'edit', + name: 'SettingMessageNoticeEdit', + component: () => import('@/views/center-setting/message/notice/edit'), + meta: { + title: '编辑公告', + }, + hidden: true, + }, + ], + }, + { + path: 'email', + name: 'SettingMessageEmail', + component: EmptyRouter, + redirect: 'email/list', + meta: { + title: '邮箱账户配置', + }, + children: [ + { + path: 'list', + name: 'SettingMessageEmailIndex', + component: () => import('@/views/center-setting/message/email/index'), + meta: { + title: '邮箱账户配置', + }, + }, + { + path: 'add', + name: 'SettingMessageEmailAdd', + component: () => import('@/views/center-setting/message/email/add'), + meta: { + title: '新增邮箱配置', + isCache: true, + }, + hidden: true, + }, + { + path: 'edit', + name: 'SettingMessageEmailEdit', + component: () => import('@/views/center-setting/message/email/edit'), + meta: { + title: '编辑邮箱配置', + }, + hidden: true, + }, + ], + }, + { + path: 'sms', + name: 'SettingMessageSms', + component: EmptyRouter, + redirect: 'sms/index', + meta: { + title: '短信账户配置', + }, + children: [ + { + path: 'index', + name: 'SettingMessageSmsIndex', + component: () => import('@/views/center-setting/message/sms/index'), + meta: { + title: '短信账户配置', + }, + }, + ], + }, + // { + // path: 'template', + // name: 'SettingMessageTemplate', + // component: () => import('@/views/center-setting/message/template/index'), + // meta: { + // title: '消息模板管理', + // }, + // }, + // { + // path: 'template/add', + // name: 'SettingMessageTemplateAdd', + // component: () => import('@/views/center-setting/message/template/add'), + // meta: { + // title: '新增消息模板', + // }, + // hidden: true, + // }, + // { + // path: 'template/edit', + // name: 'SettingMessageTemplateEdit', + // component: () => import('@/views/center-setting/message/template/edit'), + // meta: { + // title: '编辑消息模板', + // }, + // hidden: true, + // }, + { + path: 'send', + name: 'SettingMessageSend', + component: EmptyRouter, + redirect: 'send/list', + meta: { + title: '消息发送配置', + }, + children: [ + { + path: 'list', + name: 'SettingMessageSendIndex', + component: () => import('@/views/center-setting/message/send/index'), + meta: { + title: '消息发送配置', + }, + }, + { + path: 'add', + name: 'SettingMessageSendAdd', + component: () => import('@/views/center-setting/message/send/add'), + meta: { + title: '新增消息发送配置', + isCache: true, + }, + hidden: true, + }, + { + path: 'edit', + name: 'SettingMessageSendEdit', + component: () => import('@/views/center-setting/message/send/edit'), + meta: { + title: '编辑消息发送配置', + }, + hidden: true, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/center-setting/scheduler.js b/front-end/src/router/center-setting/scheduler.js new file mode 100644 index 0000000..a29d406 --- /dev/null +++ b/front-end/src/router/center-setting/scheduler.js @@ -0,0 +1,158 @@ +/* + * 任务管理 SchedulerManage + */ +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +import EmptyRouter from '@/layout/EmptyRouter.vue'; +export default { + path: 'scheduler', + name: 'SettingScheduler', + component: EmptyRouterAlive, + meta: { + title: '调度服务', + }, + children: [ + { + path: 'executor', + name: 'SettingSchedulerExecutor', + component: EmptyRouter, + redirect: 'executor/index', + meta: { + title: '执行器管理', + }, + children: [ + { + path: 'index', + name: 'SettingSchedulerExecutorIndex', + component: () => import('@/views/center-setting/scheduler/executor'), + meta: { + title: '执行器管理', + }, + }, + ], + }, + + { + path: 'task', + name: 'SettingSchedulerTask', + component: EmptyRouter, + redirect: 'task/index', + meta: { + title: '调度任务', + }, + children: [ + { + path: 'index', + name: 'SettingSchedulerTaskIndex', + component: () => import('@/views/center-setting/scheduler/task'), + meta: { + title: '调度任务', + }, + }, + ], + }, + { + path: 'log', + name: 'SettingSchedulerLog', + component: EmptyRouter, + redirect: 'log/index', + meta: { + title: '调度日志', + }, + children: [ + { + path: 'index', + name: 'SettingSchedulerLogIndex', + component: () => import('@/views/center-setting/scheduler/log'), + meta: { + title: '调度日志', + }, + }, + ], + }, + { + path: 'executable', + name: 'SettingSchedulerExecutable', + component: EmptyRouter, + redirect: 'executable/index', + meta: { + title: '可执行定义', + }, + children: [ + { + path: 'index', + name: 'SettingSchedulerExecutableIndex', + component: () => import('@/views/center-setting/scheduler/executable'), + meta: { + title: '可执行定义', + }, + }, + ], + }, + { + path: 'request', + name: 'SettingSchedulerRequest', + component: EmptyRouter, + redirect: 'request/list', + meta: { + title: '请求定义', + }, + children: [ + { + path: 'list', + name: 'SettingSchedulerRequestIndex', + component: () => import('@/views/center-setting/scheduler/request'), + meta: { + title: '请求定义', + }, + }, + { + path: 'add', + name: 'SettingSchedulerRequestAdd', + component: () => import('@/views/center-setting/scheduler/request/add'), + meta: { + title: '新增请求定义', + isCache: true, + }, + hidden: true, + }, + { + path: 'edit', + name: 'SettingSchedulerRequestEdit', + component: () => import('@/views/center-setting/scheduler/request/edit'), + meta: { + title: '编辑请求定义', + }, + hidden: true, + }, + { + path: 'permissions', + name: 'SettingSchedulerRequestPermissions', + component: () => import('@/views/center-setting/scheduler/request/permissions'), + meta: { + title: '权限分配', + }, + hidden: true, + }, + ], + }, + { + path: 'concurrent', + name: 'SettingSchedulerConcurrent', + component: EmptyRouter, + redirect: 'concurrent/index', + meta: { + title: '并发请求', + }, + children: [ + { + path: 'index', + name: 'SettingSchedulerConcurrentIndex', + component: () => import('@/views/center-setting/scheduler/concurrent'), + meta: { + title: '并发请求', + }, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/center-setting/user.js b/front-end/src/router/center-setting/user.js new file mode 100644 index 0000000..20268df --- /dev/null +++ b/front-end/src/router/center-setting/user.js @@ -0,0 +1,120 @@ +/* + * 配置中心路由 + */ + +import EmptyRouter from '@/layout/EmptyRouter.vue'; +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +export default { + path: 'user', + name: 'SettingUser', + component: EmptyRouterAlive, + meta: { + title: '用户', + }, + children: [ + /** 组织架构部分 */ + { + path: 'organization', + name: 'SettingUserOrganization', + redirect: 'organization/group', + meta: { + title: '组织架构', + }, + component: EmptyRouter, + children: [ + { + path: 'group', + name: 'SettingUserOrganizationGroup', + component: () => import('@/views/center-setting/user/organization/group'), + meta: { + title: '集团设置', + }, + permissionType: 'tab', + hidden: true, + }, + { + path: 'company', + name: 'SettingUserOrganizationCompany', + component: () => import('@/views/center-setting/user/organization/company'), + meta: { + title: '下属公司', + }, + permissionType: 'tab', + hidden: true, + }, + /** 按钮权限start */ + { + path: '', + name: 'SettingUserOrganizationGroup_Edit', + meta: { + title: '编辑-集团设置', + }, + hidden: true, + }, + { + path: '', + name: 'SettingUserOrganizationCompany_Delete', + meta: { + title: '删除-下属公司', + }, + hidden: true, + }, + { + path: '', + name: 'SettingUserOrganizationCompany_Add', + meta: { + title: '新增公司-下属公司', + isCache: true, + }, + hidden: true, + }, + { + path: '', + name: 'SettingUserOrganizationCompany_Edit', + meta: { + title: '编辑-下属公司', + }, + hidden: true, + }, + { + path: '', + name: 'SettingUserOrganizationCompany_Status', + meta: { + title: '禁用/启用-下属公司', + }, + hidden: true, + }, + /** 按钮权限end */ + ], + }, + + { + path: 'account', + name: 'SettingUserAccount', + component: EmptyRouter, + meta: { + title: '账号安全策略', + }, + + redirect: 'account/strategy', + children: [ + { + path: 'strategy', + name: 'SettingUserAccountStrategy', + component: () => import('@/views/center-setting/user/account/strategy.vue'), + meta: { + title: '账号安全策略配置', + }, + }, + { + path: '', + name: 'SettingUserAccountStrategy_Save', + meta: { + title: '保存-账号安全策略配置', + }, + hidden: true, + }, + ], + }, + ], +}; diff --git a/front-end/src/router/index.js b/front-end/src/router/index.js new file mode 100644 index 0000000..81f7b85 --- /dev/null +++ b/front-end/src/router/index.js @@ -0,0 +1,325 @@ +import Vue from 'vue'; +import Router from 'vue-router'; + +Vue.use(Router); + +/* Layout */ +import Layout from '@/layout'; +import EmptyRouterAlive from '@/layout/EmptyRouterAlive.vue'; +import EmptyRouter from '@/layout/EmptyRouter.vue'; +// 新的 +import settingCenter from './center-setting/index'; +import businessCenter from './center-business/index'; + +/** + * 注意:子菜单只在路由子时出现。 长度> = 1 + * Note: sub-menu only appear when route children.length >= 1 + * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html + * + * hidden: true 如果设置为true,项目将不会显示在侧边栏中(默认为false) + * alwaysShow: true 如果设置为true,将始终显示根菜单 + * 如果没有设置alwaysShow,当item有多个子路由时, + * 它将变成嵌套模式,否则不显示根菜单 + * redirect: noRedirect 如果设置noRedirect,则不会在面包屑中重定向 + * name:'router-name' (必须设置!!) + * meta : { + roles: ['admin','editor'] 控制页面角色(可以设置多个角色) + title: 'title' 名称显示在侧边栏和面包屑中(推荐集) + icon: 'svg-name'/'el-icon-x' 图标显示在侧栏中 + isCache: false 如果设置为true,页面将会被缓存(默认为false) 有效 + affix: true 如果设置为true,标记将附着在标记视图中 + breadcrumb: false 如果设置为false,该项将隐藏在breadcrumb中(默认为true) + activeMenu: '/example/list' 如果设置路径,侧边栏将突出显示您设置的路径 + isShowChildrenByHover: false 如果设置为true, 鼠标在一级菜单上时,展示所有的二、三级菜单(默认false: 正常下拉展示 二、三级菜单) + mulTag:false 如果设置为true,不同query的链接将打开一个新的tag页面 + } + */ + +/** + * constantRoutes + * a base page that does not have permission requirements + * all roles can be accessed + */ +export const constantRoutes = [ + { + path: '/redirect', + component: Layout, + name: 'Redirect', + hidden: true, + children: [ + { + path: '/redirect/:path(.*)', + component: () => import('@/views/common/redirect/index'), + }, + ], + }, + { + path: '/login', + name: 'Login', + component: () => import('@/views/common/login/auth-redirect'), + hidden: true, + }, + { + path: '/auth-redirect', + component: () => import('@/views/common/login/auth-redirect'), + hidden: true, + }, + { + path: '/404', + name: '404', + component: () => import('@/views/common/error-page/404'), + hidden: true, + }, + { + path: '/401', + name: '401', + component: () => import('@/views/common/error-page/401'), + hidden: true, + }, + { + path: '/', + component: Layout, + redirect: '/dashboard', + name: 'Dashboard1', + meta: { + // 展示在侧边栏 + title: '', + icon: 'dashboard', + breadcrumb: false, + }, + hidden: true, + children: [ + { + path: '占位,第二级路由', + name: 'Dashboard2', + component: EmptyRouterAlive, + redirect: '/dashboard', + meta: { + // 占位,凑四级路由,不展示 + title: '首页2', + breadcrumb: false, + }, + hidden: true, + children: [ + { + path: '占位,第三级路由', + name: 'Dashboard3', + component: EmptyRouter, + redirect: '/dashboard', + meta: { + // 占位,凑四级路由,不展示 + title: '首页2', + breadcrumb: false, + }, + hidden: true, + children: [ + { + path: '/dashboard', + component: () => import('@/views/common/dashboard/index'), + name: 'Dashboard', + meta: { + // 展示在 面包屑、页签title + title: '', + icon: 'dashboard', + affix: false, + }, + }, + ], + }, + ], + }, + ], + }, + + { + path: '/common', + component: Layout, + redirect: 'index', + name: 'Common', + hidden: true, + children: [ + { + path: 'xx', + name: 'xxxxxx', + component: EmptyRouterAlive, + meta: { + // 占位,凑四级路由,不展示 + title: '通用模块', + breadcrumb: false, + }, + hidden: true, + children: [ + { + path: 'xx', + name: 'xxxxxx', + component: EmptyRouter, + meta: { + // 占位,凑四级路由,不展示 + title: '通用模块', + breadcrumb: false, + }, + hidden: true, + children: [ + { + path: '/common/personal', + component: () => import('@/views/common/personal'), + name: 'CommonPersonal', + meta: { + // 展示在 面包屑、页签title + title: '个人中心', + }, + }, + { + path: '/common/menu', + component: () => import('@/views/center-setting/menu'), + name: 'CommonMenu', + meta: { + title: '菜单配置', + }, + }, + ], + }, + ], + }, + ], + }, +]; + +export const asyncRoutes = [ + { + path: '/setting', + component: Layout, + // redirect: '/personal/index', + name: 'Setting', + meta: { + title: '配置中心', + icon: 'el-icon-s-operation', + isShowChildrenByHover: true, + }, + children: [...settingCenter], + }, + { + path: '/business', + component: Layout, + // redirect: '/personal/index', + name: 'Business', + meta: { + title: '业务中心', + icon: 'el-icon-notebook-1', + isShowChildrenByHover: true, + }, + children: [...businessCenter], + }, + // { + // path: '/test', + // component: Layout, + // redirect: '/test/index', + // name: 'Test', + // meta: { + // title: 'DEMO', + // breadcrumb: false, + // icon: 'bug', + // }, + // children: [ + // { + // path: 'xx20210825', + // name: 'XX20210825', + // component: EmptyRouter, + // meta: { + // // 占位,凑三级路由,不展示 + // breadcrumb: false, + // }, + // hidden: true, + // children: [ + // { + // path: '/test/index', + // component: () => import('@/views/test/index'), + // name: 'TestIndex', + // meta: { title: '测试', isCache: true }, + // hidden: true, + // }, + // ], + // }, + // ], + // }, + { path: '*', redirect: '/404', hidden: true }, +]; + +console.log('asyncRoutes', asyncRoutes); +console.log( + '权限表 permission.json 用于初始化菜单权限数据', + [asyncRoutes[0], asyncRoutes[1]].map((e1, n1) => { + return { + permissionType: e1.permissionType || 'api', + title: e1.meta.title, + icon: e1.meta.icon || null, + code: e1.name, + hiddenFlag: false, + sort: n1, + children: !e1.children + ? [] + : e1.children.map((e2, n2) => { + if (!e2.children || e2.children.length == 0) { + console.log('只有二级:' + e1.meta.title + '-' + e2.meta.title); + } + return { + permissionType: e2.permissionType || 'api', + title: e2.meta.title, + icon: e2.meta.icon || null, + code: e2.name, + hiddenFlag: false, + sort: n2, + children: !e2.children + ? [] + : e2.children.map((e3, n3) => { + if (!e3.children || e3.children.length == 0) { + console.log( + '只有三级:' + e1.meta.title + '-' + e2.meta.title + '-' + e3.meta.title, + ); + } + return { + permissionType: e3.permissionType || 'api', + title: e3.meta.title, + icon: e3.meta.icon || null, + code: e3.name, + hiddenFlag: false, + sort: n3, + children: !e3.children + ? [] + : e3.children.map((e4, n4) => { + // 有下划线的 默认为按钮,没有下划线的为页面,如果是tab页,则对应路由表permissionType=tab + const DEFAULT_TYPE = e4.name.includes('_') ? 'btn' : 'page'; + return { + permissionType: e4.permissionType || DEFAULT_TYPE, + title: e4.meta.title, + icon: e4.meta.icon || null, + code: e4.name, + hiddenFlag: true, + sort: n4, + }; + }), + }; + }), + }; + }), + }; + }), +); + +const createRouter = () => + new Router({ + // mode: 'history', // require service support + scrollBehavior: () => ({ + y: 0, + }), + routes: constantRoutes, + }); + +const router = createRouter(); +// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465 +export function resetRouter() { + const newRouter = createRouter(); + router.matcher = newRouter.matcher; // reset router +} + +export default router; diff --git a/front-end/src/settings.js b/front-end/src/settings.js new file mode 100644 index 0000000..36f4c25 --- /dev/null +++ b/front-end/src/settings.js @@ -0,0 +1,35 @@ +module.exports = { + title: '飞骥管理系统', + + /** + * @type {boolean} true | false + * @是否显示设置右面板 + */ + showSettings: false, + + /** + * @type {boolean} true | false + * @description Whether need tagsView + */ + tagsView: true, + + /** + * @type {boolean} true | false + * @description Whether fix the header + */ + fixedHeader: true, + + /** + * @type {boolean} true | false + * @description Whether show the logo in sidebar + */ + sidebarLogo: true, + + /** + * @type {string | array} 'production' | ['production', 'development'] + * @description Need show err logs component. + * The default is only used in the production env + * If you want to also use it in dev, you can pass ['production', 'development'] + */ + errorLog: 'production', +}; diff --git a/front-end/src/store/getters.js b/front-end/src/store/getters.js new file mode 100644 index 0000000..b614914 --- /dev/null +++ b/front-end/src/store/getters.js @@ -0,0 +1,22 @@ +const getters = { + sidebar: state => state.app.sidebar, + size: state => state.app.size, + device: state => state.app.device, + loadingCount: state => state.app.loadingCount, + loadingDelayed: state => state.app.loadingDelayed, + visitedViews: state => state.tagsView.visitedViews, + cachedViews: state => state.tagsView.cachedViews, + token: state => state.user.token, + avatar: state => state.user.avatar, + name: state => state.user.name, + introduction: state => state.user.introduction, + roles: state => state.user.roles, + userInfo: state => state.user.userInfo, + tenantId: state => state.user.userInfo.organizationId, + permission_routes: state => state.permission.routes, + errorLogs: state => state.errorLog.logs, + isSuperAdmin: state => state.user.isSuperAdmin, + userPermissions: state => state.user.permissions, + userPermissionBtns: state => state.user.permissionBtns, +}; +export default getters; diff --git a/front-end/src/store/index.js b/front-end/src/store/index.js new file mode 100644 index 0000000..2e119c4 --- /dev/null +++ b/front-end/src/store/index.js @@ -0,0 +1,25 @@ +import Vue from 'vue'; +import Vuex from 'vuex'; +import getters from './getters'; + +Vue.use(Vuex); + +// https://webpack.js.org/guides/dependency-management/#requirecontext +const modulesFiles = require.context('./modules', true, /\.js$/); + +// you do not need `import app from './modules/app'` +// it will auto require all vuex module from modules file +const modules = modulesFiles.keys().reduce((modules, modulePath) => { + // set './app.js' => 'app' + const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1'); + const value = modulesFiles(modulePath); + modules[moduleName] = value.default; + return modules; +}, {}); + +const store = new Vuex.Store({ + modules, + getters, +}); + +export default store; diff --git a/front-end/src/store/modules/app.js b/front-end/src/store/modules/app.js new file mode 100644 index 0000000..d6ee299 --- /dev/null +++ b/front-end/src/store/modules/app.js @@ -0,0 +1,204 @@ +import Cookies from 'js-cookie'; +import { commonApi } from '@/api'; +const LIKE_CODE = 'myLikeMenuList'; +const LIKE_CODE_VERSION = 3; +const state = { + sidebar: { + opened: true, // Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true, + liked: Cookies.get('sidebarLiked') ? !!+Cookies.get('sidebarLiked') : false, + withoutAnimation: false, + likedData: [], + likedMax: 8, // 最多添加 8 个收藏菜单 + }, + device: 'desktop', + size: Cookies.get('size') || 'medium', + loadingCount: 0, + loadingDelayed: 501, // ms 延时关闭,防止递归请求的loading频繁开关。 +}; + +const mutations = { + TOGGLE_SIDEBAR: state => { + state.sidebar.opened = !state.sidebar.opened; + state.sidebar.withoutAnimation = false; + if (state.sidebar.opened) { + Cookies.set('sidebarStatus', 1); + } else { + Cookies.set('sidebarStatus', 0); + } + }, + TOGGLE_SIDEBAR_LIKE: state => { + state.sidebar.liked = !state.sidebar.liked; + state.sidebar.withoutAnimation = false; + if (state.sidebar.liked) { + Cookies.set('sidebarLiked', 1); + } else { + Cookies.set('sidebarLiked', 0); + } + }, + OPEN_SIDEBAR: (state, withoutAnimation) => { + Cookies.set('sidebarStatus', 1); + state.sidebar.opened = true; + state.sidebar.withoutAnimation = withoutAnimation; + }, + CLOSE_SIDEBAR: (state, withoutAnimation) => { + Cookies.set('sidebarStatus', 0); + state.sidebar.opened = false; + state.sidebar.withoutAnimation = withoutAnimation; + }, + CLOSE_SIDEBAR_LIKE: (state, withoutAnimation) => { + Cookies.set('sidebarLiked', 0); + state.sidebar.liked = false; + state.sidebar.withoutAnimation = withoutAnimation; + }, + TOGGLE_DEVICE: (state, device) => { + state.device = device; + }, + SET_SIZE: (state, size) => { + state.size = size; + Cookies.set('size', size); + }, + SET_LOADING_COUNT: (state, loadingCount) => { + state.loadingCount = loadingCount; + Cookies.set('loadingCount', loadingCount); + }, + SET_SIDEBAR_LIKED_DATA: (state, list) => { + state.sidebar.likedData = list; + }, + ADD_SIDEBAR_LIKED_DATA: (state, route) => { + route.meta.icon = ''; // 'el-icon-star-on'; + + state.sidebar.likedData.push({ + ...route, + children: [], + }); + const LEN = state.sidebar.likedData.length; + const MAX = state.sidebar.likedMax; + if (LEN > MAX) { + state.sidebar.likedData = state.sidebar.likedData.slice(LEN - MAX, LEN); + } + }, + DELETE_SIDEBAR_LIKED_DATA: (state, route) => { + const TEMP = [].concat(state.sidebar.likedData); + TEMP.remove(route.name, 'name'); + state.sidebar.likedData = [].concat(TEMP); + }, +}; + +const actions = { + toggleSideBar({ commit }) { + commit('TOGGLE_SIDEBAR'); + }, + toggleSideBarLike({ commit }) { + commit('TOGGLE_SIDEBAR_LIKE'); + }, + openSideBar({ commit }, { withoutAnimation }) { + commit('OPEN_SIDEBAR', withoutAnimation); + }, + closeSideBar({ commit }, { withoutAnimation }) { + commit('CLOSE_SIDEBAR', withoutAnimation); + }, + closeSideBarLike({ commit }, { withoutAnimation }) { + commit('CLOSE_SIDEBAR_LIKE', withoutAnimation); + }, + + toggleDevice({ commit }, device) { + commit('TOGGLE_DEVICE', device); + }, + setSize({ commit }, size) { + commit('SET_SIZE', size); + }, + addLoadingCount({ commit, state }, isAdd = true) { + const ov = state.loadingCount; + let nv; + if (isAdd) { + nv = ov + 1; + } else { + nv = ov ? ov - 1 : 0; + } + commit('SET_LOADING_COUNT', nv); + }, + // 当isCache==true时,强制从接口获取数据 + getLikeData({ commit, state }, isCache) { + if (state.sidebar.likedData.length && !isCache) { + return state.sidebar.likedData; + } + return new Promise((resolve, reject) => { + commonApi + .getTabulation({ + code: LIKE_CODE, + }) + .then(res => { + console.log('saveConfig', res); + const remoteVersion = res.flag || 1; + let tempList = []; + + if (Array.isArray(res)) { + tempList = res; + } + if (Array.isArray(res.titleList)) { + tempList = res.titleList; + } + + if (tempList && tempList.length && remoteVersion == LIKE_CODE_VERSION) { + console.log('get really'); + tempList = tempList.map((e, i) => { + return { + children: [], + component: null, + hidden: false, + meta: { + title: e.label, + icon: e.fixed, + }, + name: e.prop, + path: e.prop, + redirect: e.width, + sort: e.sort, + }; + }); + } else { + tempList = []; + } + // 只取后几个 + if (tempList.length > 8) { + tempList = tempList.slice(tempList.length - state.sidebar.likedMax, tempList.length); + } + + commit('SET_SIDEBAR_LIKED_DATA', tempList); + resolve(tempList); + }) + .catch(err => { + console.error(err); + reject(err); + }); + }); + }, + saveLikeData({ commit, state }, list) { + commonApi + .saveTabulation({ + code: LIKE_CODE, + flag: LIKE_CODE_VERSION, + tabulationTitleDTOS: state.sidebar.likedData.map((e, i) => { + return { + disabled: false, + fixed: e.meta && e.meta.icon, + isCheck: false, + label: e.meta && e.meta.title, + prop: e.name, + sort: i, + width: e.redirect, + }; + }), + }) + .then(res => { + console.log('saveConfig', res); + }); + }, +}; + +export default { + namespaced: true, + state, + mutations, + actions, +}; diff --git a/front-end/src/store/modules/errorLog.js b/front-end/src/store/modules/errorLog.js new file mode 100644 index 0000000..17174cc --- /dev/null +++ b/front-end/src/store/modules/errorLog.js @@ -0,0 +1,28 @@ +const state = { + logs: [] +}; + +const mutations = { + ADD_ERROR_LOG: (state, log) => { + state.logs.push(log); + }, + CLEAR_ERROR_LOG: (state) => { + state.logs.splice(0); + } +}; + +const actions = { + addErrorLog({ commit }, log) { + commit('ADD_ERROR_LOG', log); + }, + clearErrorLog({ commit }) { + commit('CLEAR_ERROR_LOG'); + } +}; + +export default { + namespaced: true, + state, + mutations, + actions +}; diff --git a/front-end/src/store/modules/fileUrl.js b/front-end/src/store/modules/fileUrl.js new file mode 100644 index 0000000..b39a2b7 --- /dev/null +++ b/front-end/src/store/modules/fileUrl.js @@ -0,0 +1,107 @@ +/** + * @author zhengxinquan + * @description 从api或缓存中获取授权的图片 + * @调用 await this.$store.dispatch('values/getValueList', 'SCHL.CHANNEL_TYPE'); + * + */ +import { settingApi } from '@/api'; + +const DEFAULT_EXPIRES = 1 * 60 * 60; +const DEFAULT_BUCKET_NAME = process.env.VUE_APP_UPLOAD_BUCKET_NAME; +const getDefaultState = () => { + return { + FILES: [ + { + bucketName: '', + url: '', + key: '', + + // new Date().getTime()/1000 + create: '', // 秒 + + expires: '', // 秒 + fileTokenUrl: '', // + }, + ], + }; +}; +const state = getDefaultState(); + +const mutations = { + ADD_FILES: (state, FILE) => { + const index = state.FILES.findIndex(e => { + if (FILE.url) { + return e.bucketName == FILE.bucketName && e.url == FILE.url; + } + if (FILE.key) { + return e.bucketName == FILE.bucketName && e.key == FILE.key; + } + return false; + }); + if (index == -1) { + state.FILES.push(FILE); + } else { + state.FILES.splice(index, 1, FILE); + } + }, +}; + +const actions = { + getFileTokenUrl({ commit, state }, { url, bucketName, expires }) { + const EXPIRES = expires || DEFAULT_EXPIRES; + const BUCKET_NAME = bucketName || DEFAULT_BUCKET_NAME; + const URL = url; + const finder_file = state.FILES.find(e => { + const NOW_TIME = new Date().getTime() / 1000; + const TIME_FLAG = e.create + e.expires > NOW_TIME; + return e.bucketName == BUCKET_NAME && e.url == URL && TIME_FLAG; + }); + + return new Promise((resolve, reject) => { + if (finder_file) { + resolve(finder_file.fileTokenUrl); + } else { + // 去授权 + settingApi + .getFileUrlByUrl({ + bucketName: BUCKET_NAME, + url: URL, + expires: EXPIRES, + // 授权有效时长(单位秒) + }) + .then(res => { + if (res.failed !== true) { + let url = res.fileTokenUrl || res.message || res; + if (url.indexOf('http') !== 0) { + url = 'http://' + url; + } + const FILE = { + bucketName: BUCKET_NAME, + url: URL, + key: '', + create: new Date().getTime() / 1000, + expires: EXPIRES, // 秒 + fileTokenUrl: url, + }; + commit('ADD_FILES', FILE); + resolve(url); + } else { + reject(url); + } + }); + } + }); + }, +}; + +export default { + namespaced: true, + state, + mutations, + actions, +}; diff --git a/front-end/src/store/modules/permission.js b/front-end/src/store/modules/permission.js new file mode 100644 index 0000000..79aa192 --- /dev/null +++ b/front-end/src/store/modules/permission.js @@ -0,0 +1,145 @@ +import { asyncRoutes, constantRoutes } from '@/router'; +/** + * Use meta.role to determine if the current user has permission + * @param roles + * @param route + */ +function hasPermission(permissions, route) { + const code = route.name; + + const f = p => { + let find = null; + for (let index = 0; index < p.length; index++) { + const e = p[index]; + if (e.code == code) { + find = e; + break; + } + find = f(e.children || []); + if (find) break; + } + return find; + }; + const obj = f(permissions); + + // 覆盖部分路由的配置 + let newRoute = route; + if (obj) { + newRoute = { + ...route, + // redirect + meta: { + ...route.meta, + title: obj.title, + icon: obj.icon, + }, + hidden: obj.hidden, + sort: obj.sort, + }; + } + return { + flag: !!obj, + route: newRoute, + permission: obj, + }; +} + +/** + * Filter asynchronous routing tables by recursion + * @param routes asyncRoutes + * @param roles + */ +export function filterAsyncRoutes(routes, USER_PERMISSIONS) { + const res = []; + routes.forEach(route => { + const re = hasPermission(USER_PERMISSIONS, route); + if (re.flag) { + const tmp = re.route; + if (tmp.children) { + tmp.children = filterAsyncRoutes(tmp.children, USER_PERMISSIONS); + } + res.push(tmp); + } + }); + + return res; +} + +const state = { + routes: [], + addRoutes: [], +}; +// 按sort从小到大排序 +function sortRoutes(routes) { + routes.sort((a, b) => { + return a.sort - b.sort; + }); + routes.forEach(e => { + if (e.children && e.children.length) { + e.children = sortRoutes(e.children); + } + }); + return routes; +} +// +function redirectFix(routes) { + routes.forEach(e => { + if (e.children && e.children.length) { + e.children = redirectFix(e.children); + const tabs = e.children.filter(r => r.permissionType == 'tab'); + if (tabs.length) { + // 在父级的meta.tabs 自动构建一个数组,用于 BjRouteTabs 组件的支持 + e.meta['tabs'] = tabs.map(tab => { + return { + label: tab.meta && tab.meta.title, + name: tab.name, + }; + }); + const NEW_END_PATH = tabs[0].path; // 'sku/ordinary' + + // 当第1个tab无权访问时,自动redirect到下一个有权限的tab + if (e.redirect) { + const OLD_END_PATH = e.redirect.replace(e.path + '/', ''); // (e.redirect || '').split('/').slice(-1)[0]; //'ordinary' + // const OLD_START_PATH_ARR = (e.redirect || '').split('/').slice(0, -1); //['audit', 'sku'] + if (NEW_END_PATH != OLD_END_PATH) { + e.redirect = e.path + '/' + NEW_END_PATH; // [...OLD_START_PATH_ARR, NEW_END_PATH].join('/'); + console.log(' e.redirect', e.redirect); + } + } + } + } + }); + + return routes; +} + +const mutations = { + SET_ROUTES: (state, routes) => { + state.addRoutes = routes; + state.routes = constantRoutes.concat(routes); + }, +}; + +const actions = { + generateRoutes({ commit }, USER_PERMISSIONS) { + return new Promise(resolve => { + // 按权限code过滤 + let accessedRoutes = filterAsyncRoutes(asyncRoutes, USER_PERMISSIONS); + // permissionType: 'tab',处理父级redirect + accessedRoutes = redirectFix(accessedRoutes); + // 按sort从小到大排序 + accessedRoutes = sortRoutes(accessedRoutes); + // 在路由最后,加入404 + accessedRoutes.push({ path: '*', redirect: '/404', hidden: true }); + commit('SET_ROUTES', accessedRoutes); + resolve(accessedRoutes); + }); + }, +}; + +export default { + namespaced: true, + state, + mutations, + actions, +}; diff --git a/front-end/src/store/modules/settings.js b/front-end/src/store/modules/settings.js new file mode 100644 index 0000000..5eee4c0 --- /dev/null +++ b/front-end/src/store/modules/settings.js @@ -0,0 +1,34 @@ +import variables from '@/styles/element-variables.scss'; +import defaultSettings from '@/settings'; + +const { showSettings, tagsView, fixedHeader, sidebarLogo } = defaultSettings; + +const state = { + theme: variables.theme, + showSettings: showSettings, + tagsView: tagsView, + fixedHeader: fixedHeader, + sidebarLogo: sidebarLogo, +}; + +const mutations = { + CHANGE_SETTING: (state, { key, value }) => { + // eslint-disable-next-line no-prototype-builtins + if (state.hasOwnProperty(key)) { + state[key] = value; + } + }, +}; + +const actions = { + changeSetting({ commit }, data) { + commit('CHANGE_SETTING', data); + }, +}; + +export default { + namespaced: true, + state, + mutations, + actions, +}; diff --git a/front-end/src/store/modules/tagsView.js b/front-end/src/store/modules/tagsView.js new file mode 100644 index 0000000..8ff0415 --- /dev/null +++ b/front-end/src/store/modules/tagsView.js @@ -0,0 +1,254 @@ +import router from '@/router'; +const state = { + visitedViews: [], + cachedViews: [], + visitedViewsMax: 12, +}; +const checkMulTag = view => { + return view.meta.mulTag === true ? 'fullPath' : 'path'; +}; +const mutations = { + REPLACE_VISITED_VIEW: (state, view) => { + const PATH_KEY = checkMulTag(view); + const findViewIndex = state.visitedViews.findIndex(v => v[PATH_KEY] === view[PATH_KEY]); + if (findViewIndex > -1) { + state.visitedViews.splice( + findViewIndex, + 1, + Object.assign({}, view, { + title: view.otherTitle ? view.otherTitle : view.meta.title || 'no-name', + }), + ); + } + }, + INIT_VISITED_VIEW: (state, view) => { + state.visiteViews = view; + }, + ADD_VISITED_VIEW: (state, view) => { + const PATH_KEY = checkMulTag(view); + if (state.visitedViews.some(v => v[PATH_KEY] === view[PATH_KEY])) return; + state.visitedViews.push( + Object.assign({}, view, { + title: view.meta.title || 'no-name', + }), + ); + if (state.visitedViews.length > state.visitedViewsMax) { + state.visitedViews.splice(0, 1); + } + }, + ADD_CACHED_VIEW: (state, view) => { + const PATH_KEY = checkMulTag(view); + if (state.cachedViews.some(v => v[PATH_KEY] === view[PATH_KEY])) return; + if (view.meta.isCache === true) { + state.cachedViews.push( + Object.assign({}, view, { + title: view.meta.title || 'no-name', + }), + ); + // console.log('添加缓存页', state.cachedViews, PATH_KEY + ':' + view[PATH_KEY]); + } + }, + + DEL_VISITED_VIEW: (state, view) => { + const PATH_KEY = checkMulTag(view); + const OLD_INDEX = state.visitedViews.findIndex(v => v[PATH_KEY] === view[PATH_KEY]); + state.visitedViews.splice(OLD_INDEX, 1); + }, + DEL_CACHED_VIEW: (state, view) => { + const PATH_KEY = checkMulTag(view); + const index = state.cachedViews.findIndex(v => v[PATH_KEY] === view[PATH_KEY]); + if (index > -1) { + state.cachedViews.splice(index, 1); + } else { + console.warn('未缓存', state.cachedViews, PATH_KEY + ':' + view[PATH_KEY]); + } + }, + + DEL_OTHERS_VISITED_VIEWS: (state, view) => { + const PATH_KEY = checkMulTag(view); + state.visitedViews = state.visitedViews.filter(v => { + return v.meta.affix || v[PATH_KEY] === view[PATH_KEY]; + }); + }, + DEL_OTHERS_CACHED_VIEWS: (state, view) => { + const PATH_KEY = checkMulTag(view); + const index = state.cachedViews.findIndex(v => v[PATH_KEY] === view[PATH_KEY]); + if (index > -1) { + state.cachedViews = state.cachedViews.slice(index, index + 1); + } else { + // if index = -1, there is no cached tags + state.cachedViews = []; + } + }, + + DEL_ALL_VISITED_VIEWS: state => { + // keep affix tags + const affixTags = state.visitedViews.filter(tag => tag.meta.affix); + state.visitedViews = affixTags; + }, + DEL_ALL_CACHED_VIEWS: state => { + state.cachedViews = []; + }, + + UPDATE_VISITED_VIEW: (state, view) => { + for (let v of state.visitedViews) { + const PATH_KEY = checkMulTag(v); + if (v[PATH_KEY] === view[PATH_KEY]) { + v = Object.assign(v, view); + break; + } + } + }, + SWAP_VISITED_VIEW: (state, index) => { + const temp = state.visitedViews.splice(-1)[0]; + state.visitedViews.splice(index, 0, temp); + }, +}; + +const actions = { + replaceVisitedView({ commit }, view) { + commit('REPLACE_VISITED_VIEW', view); + }, + // 关闭当前页签:--------start---------- + closeCurrentView({ dispatch }, view) { + const PATH_KEY = checkMulTag(view); + const curView = state.visitedViews.find(v => { + return v[PATH_KEY] === view[PATH_KEY]; + }); + dispatch('delView', curView).then(() => { + if (curView[PATH_KEY] === view[PATH_KEY]) { + dispatch('toLastView', curView); + } + }); + }, + // 关闭页签后,返回上一个页面 + toLastView(view) { + const latestView = state.visitedViews.slice(-1)[0]; + if (latestView) { + router.push(latestView.fullPath); + } else { + // now the default is to redirect to the home page if there is no tags-view, + // you can adjust it according to your needs. + if (view.name === 'Dashboard') { + // to reload home page + router.replace({ path: '/redirect' + view.fullPath }); + } else { + router.push('/'); + } + } + }, + // 关闭当前页签:--------end---------- + + initView({ commit }, view) { + commit('INIT_VISITED_VIEW', view); + }, + addView({ dispatch, state }, view) { + dispatch('addVisitedView', view); + dispatch('addCachedView', view); + }, + addVisitedView({ commit }, view) { + if (view.name === 'login') { + return; + } + commit('ADD_VISITED_VIEW', view); + }, + addCachedView({ commit }, view) { + if (view.name === 'login') { + return; + } + commit('ADD_CACHED_VIEW', view); + }, + + delView({ dispatch, state }, view) { + return new Promise(resolve => { + dispatch('delVisitedView', view); + + const VIEWS = state.visitedViews.filter(tag => { + return tag.name == view.name; + }); + if (VIEWS.length == 0) { + dispatch('delCachedView', view); + } + + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews], + }); + }); + }, + delVisitedView({ commit, state }, view) { + return new Promise(resolve => { + commit('DEL_VISITED_VIEW', view); + resolve([...state.visitedViews]); + }); + }, + delCachedView({ commit, state }, view) { + return new Promise(resolve => { + commit('DEL_CACHED_VIEW', view); + resolve([...state.cachedViews]); + }); + }, + + delOthersViews({ dispatch, state }, view) { + return new Promise(resolve => { + dispatch('delOthersVisitedViews', view); + dispatch('delOthersCachedViews', view); + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews], + }); + }); + }, + delOthersVisitedViews({ commit, state }, view) { + return new Promise(resolve => { + commit('DEL_OTHERS_VISITED_VIEWS', view); + resolve([...state.visitedViews]); + }); + }, + delOthersCachedViews({ commit, state }, view) { + return new Promise(resolve => { + commit('DEL_OTHERS_CACHED_VIEWS', view); + resolve([...state.cachedViews]); + }); + }, + + delAllViews({ dispatch, state }, view) { + return new Promise(resolve => { + dispatch('delAllVisitedViews', view); + dispatch('delAllCachedViews', view); + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews], + }); + }); + }, + delAllVisitedViews({ commit, state }) { + return new Promise(resolve => { + commit('DEL_ALL_VISITED_VIEWS'); + resolve([...state.visitedViews]); + }); + }, + delAllCachedViews({ commit, state }) { + return new Promise(resolve => { + commit('DEL_ALL_CACHED_VIEWS'); + resolve([...state.cachedViews]); + }); + }, + + updateVisitedView({ commit }, view) { + commit('UPDATE_VISITED_VIEW', view); + }, + swapVisitedView({ commit, state }, index) { + return new Promise(resolve => { + commit('SWAP_VISITED_VIEW', index); + resolve([...state.visitedViews]); + }); + }, +}; + +export default { + namespaced: true, + state, + mutations, + actions, +}; diff --git a/front-end/src/store/modules/user.js b/front-end/src/store/modules/user.js new file mode 100644 index 0000000..52112a4 --- /dev/null +++ b/front-end/src/store/modules/user.js @@ -0,0 +1,294 @@ +import { userApi } from '@/api'; +import { getToken, setToken, removeToken } from '@/utils/auth'; +import router, { resetRouter } from '@/router'; +import { VUE_APP_BASE_API } from '@/utils/index'; + +import permissionJson from '@/permissionOS.json'; + +const getDefaultState = () => { + return { + token: getToken(), + name: '', + user: '', + avatar: '', + introduction: '', + roles: [], + permissions: [], + permissionBtns: [], + userInfo: null, + isSuperAdmin: true, + }; +}; +const state = getDefaultState(); +const mutations = { + RESET_STATE: state => { + Object.assign(state, getDefaultState()); + }, + SET_TOKEN: (state, token) => { + state.token = token; + }, + SET_INTRODUCTION: (state, introduction) => { + state.introduction = introduction; + }, + SET_NAME: (state, name) => { + state.name = name; + }, + SET_AVATAR: (state, avatar) => { + state.avatar = avatar; + }, + SET_USER: (state, user) => { + state.user = user; + }, + SET_USER_INFO: (state, userInfo) => { + state.userInfo = userInfo; + }, + SET_SUPER_ADMIN: (state, isSuperAdmin) => { + state.isSuperAdmin = isSuperAdmin; + }, + SET_PERMISSIONS: (state, permissions) => { + state.permissions = permissions; + const permissionBtnList = []; + permissions.forEach(a1 => { + (a1.children || []).forEach(a2 => { + (a2.children || []).forEach(a3 => { + (a3.children || []).forEach(a4 => { + // if (a4.permissionType == 'btn') { + permissionBtnList.push(a4.code.toLocaleLowerCase()); + // } + }); + }); + }); + }); + state.permissionBtns = permissionBtnList; + }, +}; +const actions = { + setSuperAdmin({ commit }, isSuperAdmin) { + commit('SET_SUPER_ADMIN', isSuperAdmin); + }, + setUserInfo({ commit }, userInfo) { + commit('SET_USER_INFO', userInfo); + }, + setToken({ commit }, access_token) { + commit('SET_TOKEN', access_token); + }, + // user login + login({ commit }, userInfo) { + return new Promise((resolve, reject) => { + commit('SET_TOKEN', 'admin-token'); + setToken('admin-token'); + resolve(); + // login({ username: username.trim(), password: password }).then(response => { + // const { data } = response + // commit('SET_TOKEN', data.token) + // setToken(data.token) + // resolve() + // }).catch(error => { + // reject(error) + // }) + }); + }, + resetInfo({ commit }) { + return new Promise((resolve, reject) => { + removeToken(); + commit('SET_TOKEN', ''); + commit('SET_PERMISSIONS', []); + resetRouter(); + commit('RESET_STATE'); + resolve(); + }); + }, + // get user info + getInfo({ commit, state, dispatch }) { + return new Promise((resolve, reject) => { + if (process.env.VUE_APP_ACCESS_TOKEN) { + const response = { + id: '=3pLNuuotTVQSDRtvdZ5QKw===', + loginName: 'admin', + email: 'admin@hzero.com', + organizationId: 0, + realName: '超级管理员', + phone: '18666666666', + imageUrl: + 'minio.baogicloud.com/test/0/1632481375656_16EK7K8I_src=http___img.zcool.cn_community_01dd6c56dc421232f875520ffb98e9.png@1280w_1l_2o_100sh.png&refer=http___img.zcool.jpg', + language: 'zh_CN', + languageName: '简体中文', + timeZone: 'GMT+8', + lastPasswordUpdatedAt: '2021-08-06 12:16:19', + regionId: 0, + phoneCheckFlag: 1, + emailCheckFlag: 1, + passwordResetFlag: 1, + tenantName: 'HZERO平台', + tenantNum: 'SKYER', + dateFormat: 'YYYY-MM-DD', + timeFormat: 'HH:mm:ss', + dateTimeFormat: 'YYYY-MM-DD HH:mm:ss', + changePasswordFlag: 0, + title: 'HZERO技术平台', + logo: '/hsop-image/doc_classify/0/8ff6ad27c153445d90606db2eca4c268/logo.png', + menuLayout: 'side-all', + menuLayoutTheme: 'color', + roleMergeFlag: 0, + tenantId: 0, + currentRoleId: '=3pLNuuotTVQSDRtvdZ5QKw===', + currentRoleCode: 'role/site/default/administrator', + currentRoleName: '管理员1', + currentRoleLevel: 'site', + favicon: + '/hsop-image/doc_classify/0/8ff6ad27c153445d90606db2eca4c268/logo.png', + dataHierarchyFlag: 0, + recentAccessTenantList: [], + }; + if (response.failed === true) { + console.error(response); + reject(response); + } + const data = { + // roles: response.recentAccessTenantList || [], + name: response.realName, + user: response.loginName, + avatar: response.imageUrl, + introduction: response.title, + }; + commit('SET_USER_INFO', Object.assign(response, data)); + const { name, user, avatar, introduction } = data; + commit('SET_USER', user); + commit('SET_NAME', name); + commit('SET_USER', user); + commit('SET_AVATAR', avatar); + commit('SET_INTRODUCTION', introduction); + commit( + 'SET_SUPER_ADMIN', + response.currentRoleLevel === 'site' && response.loginName === 'admin', + ); + commit('SET_PERMISSIONS', permissionJson); + resolve(data); + return; + } + userApi + .getUserInfo() + .then(async response => { + if (response.failed === true) { + console.error(response); + reject(response); + } + const data = { + // roles: response.recentAccessTenantList || [], + name: response.realName, + user: response.loginName, + avatar: response.imageUrl, + introduction: response.title, + }; + commit('SET_USER_INFO', Object.assign(response, data)); + const { name, user, avatar, introduction } = data; + commit('SET_USER', user); + commit('SET_NAME', name); + commit('SET_USER', user); + commit('SET_AVATAR', avatar); + commit('SET_INTRODUCTION', introduction); + commit( + 'SET_SUPER_ADMIN', + response.currentRoleLevel === 'site' && response.loginName === 'admin', + ); + await dispatch('getUserPermission'); + resolve(data); + }) + .catch(error => { + reject(error); + }); + }); + }, + // 获取用户菜单权限 + getUserPermission({ commit, state, dispatch }) { + return new Promise((resolve, reject) => { + userApi + .getUserMenuTree() + .then(response => { + commit('SET_PERMISSIONS', response); + resolve(response); + }) + .catch(error => { + reject(error); + }); + // permissionApi.get({ roleId: ROLE_ID }).then(res => { + // const PERMISSION_ROUTE_NAMES = []; + // const F = list => { + // list.forEach(e => { + // if (e.check === true && !PERMISSION_ROUTE_NAMES.includes(e.path)) { + // PERMISSION_ROUTE_NAMES.push(e.path); + // } + // if (Array.isArray(e.levelPermissionVOS)) { + // F(e.levelPermissionVOS); + // } + // }); + // }; + // F(Array.isArray(res) ? res : []); + // console.log('PERMISSION_ROUTE_NAME_LIST', PERMISSION_ROUTE_NAMES); + // commit('SET_PERMISSION_ROUTE_NAMES', PERMISSION_ROUTE_NAMES); + // resolve(res); + // }); + }); + }, + // user logout + logout({ commit, state, dispatch }) { + return new Promise((resolve, reject) => { + const LOGOUT_URL = `${VUE_APP_BASE_API()}/oauth/logout?access_token=${state.token}`; + window.location.replace(LOGOUT_URL); + // commonApi + // .logout({ access_token: state.token }) + // .then(() => { + removeToken(); + commit('SET_TOKEN', ''); + commit('SET_PERMISSIONS', []); + resetRouter(); + // reset visited views and cached views + // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485 + dispatch('tagsView/delAllViews', null, { + root: true, + }); + resolve(); + // }) + // .catch(error => { + // removeToken(); + // commit('SET_TOKEN', ''); + // commit('SET_PERMISSIONS', []); + // reject(error); + // }); + }); + }, + // remove token + resetToken({ commit }) { + return new Promise(resolve => { + commit('SET_TOKEN', ''); + commit('SET_PERMISSIONS', []); + removeToken(); + resolve(); + }); + }, + // dynamically modify permissions + async changeRoles({ commit, dispatch }, role) { + const token = role + '-token'; + commit('SET_TOKEN', token); + setToken(token); + const { roles } = await dispatch('user/getInfo'); + console.log('changeRoles user/getInfo roles=', roles); + resetRouter(); + // generate accessible routes map based on roles + const accessRoutes = await dispatch('permission/generateRoutes', roles, { + root: true, + }); + // dynamically add accessible routes + router.addRoutes(accessRoutes); + // reset visited views and cached views + dispatch('tagsView/delAllViews', null, { + root: true, + }); + }, +}; +export default { + namespaced: true, + state, + mutations, + actions, +}; diff --git a/front-end/src/store/modules/values.js b/front-end/src/store/modules/values.js new file mode 100644 index 0000000..e3fbfc8 --- /dev/null +++ b/front-end/src/store/modules/values.js @@ -0,0 +1,334 @@ +/** + * @author zhengxinquan + * @description 从api或缓存中获取值集 + * @调用 await this.$store.dispatch('values/getValueList', 'SCHL.CHANNEL_TYPE'); + * + */ +import { commonApi } from '@/api'; +import { LOV_CODE } from '@/utils/constants'; + +const getDefaultState = () => { + const TEMP = {}; + LOV_CODE.forEach(item => { + TEMP[item.value.replace(/\./g, '_')] = []; + }); + return Object.assign(TEMP, { + // 非值集——API列表 + BJ_EXECUTOR_ID: [], // 执行器列表 BJ_EXECUTOR_ID + BJ_EXECUTABLE_ID: [], // 可执行定义列表 BJ_TENANTS + BJ_TENANTS: [], // 租户列表 BJ_EXECUTABLE_ID + BJ_LANGUAGE: [], // 语言 BJ_LANGUAGE + BJ_INSTALL_SERVICES: [], // 安装服务 BJ_INSTALL_SERVICES + BJ_TAGS: [], // 标签 BJ_TAGS + BJ_AFTER_REFUND_ONLY_REASONS: [], // 售后原因 仅退款 BJ_AFTER_REFUND_ONLY_REASONS + BJ_AFTER_REFUND_GOODS_REASONS: [], // 售后原因 退货退款 BJ_AFTER_REFUND_GOODS_REASONS + }); +}; +const state = getDefaultState(); + +const getMutations = () => { + const obj = {}; + Object.keys(state).forEach(key => { + const SET_KEY = 'SET_' + key; + obj[SET_KEY] = (state, v) => { + state[key] = v; + }; + }); + return obj; +}; + +const mutations = getMutations(); + +const actions = { + getValueList({ commit, state }, POST_KEY) { + let isCache = true; + if (typeof POST_KEY == 'object') { + // 当 isCache = false 时,刷新值集的缓存 + POST_KEY = POST_KEY.POST_KEY; + isCache = POST_KEY.isCache; + } + const KEY = POST_KEY.replace(/\./g, '_'); + const SET_KEY = 'SET_' + KEY; + if (state[KEY].length && isCache) { + return state[KEY]; + } + return new Promise((resolve, reject) => { + commonApi + .getLovsValue({ + lovCode: POST_KEY, + }) + .then(res => { + let list = []; + if (Array.isArray(res)) { + list = res; + } else { + list = res.content || []; + } + const data = list.map(e => { + return { + label: Object.prototype.hasOwnProperty.call(e, 'label') ? e.label : e.meaning, + ...e, + }; + }); + commit(SET_KEY, data); + resolve(data); + }) + .catch(err => { + console.error(err); + reject(err); + }); + }); + }, + getLanguagesList({ commit, state }, isCache) { + if (state.BJ_LANGUAGE.length && !isCache) { + return state.BJ_LANGUAGE; + } + return new Promise((resolve, reject) => { + commonApi + .getLanguages({}) + .then(res => { + let list = []; + if (Array.isArray(res)) { + list = res; + } else { + list = res.content || []; + } + const data = list.map(e => { + return { + value: e.code, + label: e.name, + ...e, + }; + }); + commit('SET_BJ_LANGUAGE', data); + resolve(data); + }) + .catch(err => { + console.error(err); + reject(err); + }); + }); + }, + getExecutorList({ commit, state }, isCache) { + if (state.BJ_EXECUTOR_ID.length && !isCache) { + return state.BJ_EXECUTOR_ID; + } + return new Promise((resolve, reject) => { + commonApi + .getExecutorList({ status: 'ONLINE' }) + .then(res => { + let list = []; + if (Array.isArray(res)) { + list = res; + } else { + list = res.content || []; + } + const data = list.map(e => { + return { + value: e.executorId, + label: e.executorName, + ...e, + }; + }); + commit('SET_BJ_EXECUTOR_ID', data); + resolve(data); + }) + .catch(err => { + console.error(err); + reject(err); + }); + }); + }, + getExecutableList({ commit, state }, isCache) { + if (state.BJ_EXECUTABLE_ID.length && !isCache) { + return state.BJ_EXECUTABLE_ID; + } + return new Promise((resolve, reject) => { + commonApi + .getExecutableList({}) + .then(res => { + let list = []; + if (Array.isArray(res)) { + list = res; + } else { + list = res.content || []; + } + const data = list.map(e => { + return { + value: e.executorId, + label: e.executorName, + ...e, + }; + }); + commit('SET_BJ_EXECUTABLE_ID', data); + resolve(data); + }) + .catch(err => { + console.error(err); + reject(err); + }); + }); + }, + getTenants({ commit, state }, isCache) { + if (state.BJ_TENANTS.length && !isCache) { + return state.BJ_TENANTS; + } + return new Promise((resolve, reject) => { + commonApi + .getTenants({}) + .then(res => { + let list = []; + if (Array.isArray(res)) { + list = res; + } else { + list = res.content || []; + } + const data = list.map(e => { + return { + value: e.tenantId, + label: e.tenantName, + ...e, + }; + }); + commit('SET_BJ_TENANTS', data); + resolve(data); + }) + .catch(err => { + console.error(err); + reject(err); + }); + }); + }, + getInstallServices({ commit, state }, isCache) { + if (state.BJ_INSTALL_SERVICES.length && !isCache) { + return state.BJ_INSTALL_SERVICES; + } + return new Promise((resolve, reject) => { + commonApi + .getInstallServices({}) + .then(res => { + let list = []; + if (Array.isArray(res)) { + list = res; + } else { + list = res.content || []; + } + const data = list.map(e => { + return { + value: e.installServiceCode, + label: e.name, + ...e, + }; + }); + commit('SET_BJ_INSTALL_SERVICES', data); + resolve(data); + }) + .catch(err => { + console.error(err); + reject(err); + }); + }); + }, + getTags({ commit, state }, isCache) { + if (state.BJ_TAGS.length && !isCache) { + return state.BJ_TAGS; + } + return new Promise((resolve, reject) => { + commonApi + .getTags() + .then(res => { + let list = []; + if (Array.isArray(res)) { + list = res; + } else { + list = res.content || []; + } + const data = list.map(e => { + return { + value: e.labelCode, + label: e.textContent, + ...e, + }; + }); + commit('SET_BJ_TAGS', data); + resolve(data); + }) + .catch(err => { + console.error(err); + reject(err); + }); + }); + }, + getAfterRefundOnlyReasons({ commit, state }, isCache) { + if (state.BJ_AFTER_REFUND_ONLY_REASONS.length && !isCache) { + return state.BJ_AFTER_REFUND_ONLY_REASONS; + } + return new Promise((resolve, reject) => { + commonApi + .getAfterSalesReasons({ type: 0 }) + .then(res => { + let list = []; + if (Array.isArray(res)) { + list = res; + } else { + list = res.content || []; + } + const data = list.map(e => { + return { + value: e.reasonCode, + label: e.reasonDescribe, + ...e, + }; + }); + commit('SET_BJ_AFTER_REFUND_ONLY_REASONS', data); + resolve(data); + }) + .catch(err => { + console.error(err); + reject(err); + }); + }); + }, + getAfterRefundGoodsReasons({ commit, state }, isCache) { + if (state.BJ_AFTER_REFUND_GOODS_REASONS.length && !isCache) { + return state.BJ_AFTER_REFUND_GOODS_REASONS; + } + return new Promise((resolve, reject) => { + commonApi + .getAfterSalesReasons({ type: 1 }) + .then(res => { + let list = []; + if (Array.isArray(res)) { + list = res; + } else { + list = res.content || []; + } + const data = list.map(e => { + return { + value: e.reasonCode, + label: e.reasonDescribe, + ...e, + }; + }); + commit('SET_BJ_AFTER_REFUND_GOODS_REASONS', data); + resolve(data); + }) + .catch(err => { + console.error(err); + reject(err); + }); + }); + }, +}; + +export default { + namespaced: true, + state, + mutations, + actions, +}; diff --git a/front-end/src/styles/btn.scss b/front-end/src/styles/btn.scss new file mode 100644 index 0000000..7c10f93 --- /dev/null +++ b/front-end/src/styles/btn.scss @@ -0,0 +1,103 @@ +@import './variables.scss'; + +@mixin colorBtn($color) { + background: $color; + + &:hover { + color: $color; + + &:before, + &:after { + background: $color; + } + } +} + +.blue-btn { + @include colorBtn($blue); +} + +.light-blue-btn { + @include colorBtn($light-blue); +} + +.red-btn { + @include colorBtn($red); +} + +.pink-btn { + @include colorBtn($pink); +} + +.green-btn { + @include colorBtn($green); +} + +.tiffany-btn { + @include colorBtn($tiffany); +} + +.yellow-btn { + @include colorBtn($yellow); +} + +.btn-default-width { + width: 160px; +} + +.pan-btn { + font-size: 14px; + color: #fff; + padding: 14px 36px; + border-radius: 8px; + border: none; + outline: none; + transition: 600ms ease all; + position: relative; + display: inline-block; + + &:hover { + background: #fff; + + &:before, + &:after { + width: 100%; + transition: 600ms ease all; + } + } + + &:before, + &:after { + content: ''; + position: absolute; + top: 0; + right: 0; + height: 2px; + width: 0; + transition: 400ms ease all; + } + + &::after { + right: inherit; + top: inherit; + left: 0; + bottom: 0; + } +} + +.custom-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + color: #fff; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: 0; + margin: 0; + padding: 10px 15px; + font-size: 14px; + border-radius: 4px; +} diff --git a/front-end/src/styles/element-ui.scss b/front-end/src/styles/element-ui.scss new file mode 100644 index 0000000..6055614 --- /dev/null +++ b/front-end/src/styles/element-ui.scss @@ -0,0 +1,108 @@ +// cover some element-ui styles + +.el-breadcrumb__inner, +.el-breadcrumb__inner a { + font-weight: 400 !important; +} + +.el-upload { + input[type="file"] { + display: none !important; + } +} + +.el-upload__input { + display: none; +} + +.cell { + .el-tag { + margin-right: 0px; + } +} + +.small-padding { + .cell { + padding-left: 5px; + padding-right: 5px; + } +} + +.fixed-width { + .el-button--mini { + padding: 7px 10px; + min-width: 60px; + } +} + +.status-col { + .cell { + padding: 0 10px; + text-align: center; + + .el-tag { + margin-right: 0px; + } + } +} + +// to fixed https://github.com/ElemeFE/element/issues/2461 +.el-dialog { + transform: none; + left: 0; + position: relative; + margin: 0 auto; +} + +// refine element ui upload +.upload-container { + .el-upload { + width: 100%; + + .el-upload-dragger { + width: 100%; + height: 200px; + } + } +} + +// dropdown +.el-dropdown-menu { + a { + display: block + } +} + +// fix date-picker ui bug in filter-item +.el-range-editor.el-input__inner { + display: inline-flex !important; +} + +// to fix el-date-picker css style +.el-range-separator { + box-sizing: content-box; +} + +.el-link { + font-size: 12px; +} +.el-aside { + background: none; + padding: 0 5px; + margin-left: -20px; +} +.el-main { + margin-left: 10px; + padding: 0; +} +.el-dropdown-link { + cursor: pointer; + color: #409EFF; +} +.el-icon-arrow-down { + font-size: 12px; +} +.el-dropdown { + font-size: 12px; + margin: 0 5px; +} diff --git a/front-end/src/styles/element-variables.scss b/front-end/src/styles/element-variables.scss new file mode 100644 index 0000000..29e6ea9 --- /dev/null +++ b/front-end/src/styles/element-variables.scss @@ -0,0 +1,36 @@ +/** +* I think element-ui's default theme color is too light for long-term use. +* So I modified the default color and you can modify it to your liking. +**/ + +/* theme color */ +$--color-primary: $main-dark; //#1890ff; +$--color-success: $main-normal; // $main-normal; // #13ce66; +$--color-warning: #ffba00; +$--color-danger: #f56c6c; //#ff4949; +// $--color-info: #1E1E1E; + +$--button-font-weight: 400; + +// $--color-text-regular: #1f2d3d; + +$--border-color-light: #dfe4ed; +$--border-color-lighter: #e6ebf5; + +$--table-border: 1px solid #dfe6ec; + +/* icon font path, required */ +$--font-path: '~element-ui/lib/theme-chalk/fonts'; + +@import '~element-ui/packages/theme-chalk/src/index'; + +// .el-tag.el-tag--success { +// background-color: #f0f9eb; +// border-color: #e1f3d8; +// color: #67c23a; +// } +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + theme: $--color-primary; +} diff --git a/front-end/src/styles/index.scss b/front-end/src/styles/index.scss new file mode 100644 index 0000000..e79a08a --- /dev/null +++ b/front-end/src/styles/index.scss @@ -0,0 +1,728 @@ +@import './variables.scss'; +@import './mixin.scss'; +@import './transition.scss'; +@import './element-ui.scss'; +@import './sidebar.scss'; +@import './btn.scss'; +@import './shop.scss'; + +//[vxe-table 主题](https://vxetable.cn/v3/#/table/start/theme) +@import 'vxe-table/styles/variable.scss'; + +// 修改样式变量 +// $vxe-font-size: 30px; +// $vxe-font-color: red; +$vxe-primary-color: $main-dark; +// $vxe-table-font-color: $vxe-font-color; +// $vxe-table-border-color: red; +$vxe-table-border-radius: 20px; +// ... + +@import 'vxe-table/styles/icon.scss'; +@import 'vxe-table/styles/table.scss'; +@import 'vxe-table/styles/column.scss'; +@import 'vxe-table/styles/header.scss'; +@import 'vxe-table/styles/footer.scss'; +@import 'vxe-table/styles/filter.scss'; + +body { + height: 100%; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, + sans-serif; +} + +label { + font-weight: 700; +} + +html { + height: 100%; + box-sizing: border-box; +} + +#app { + min-height: 100%; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +.no-padding, +.padding-no { + padding: 0px !important; +} +.no-margin, +.margin-no { + margin: 0px !important; +} +.height100 { + height: 100% !important; +} + +.padding-content { + padding: 4px 0; +} + +a:focus, +a:active { + outline: none; +} + +a, +a:focus, +a:hover { + cursor: pointer; + color: inherit; + text-decoration: none; +} + +div:focus { + outline: none; +} + +.fr { + float: right; +} + +.fl { + float: left; +} + +.pr-5 { + padding-right: 5px; +} + +.pl-5 { + padding-left: 5px; +} + +.block { + display: block; +} + +.el-icon-document-copy, +.el-icon-edit { + cursor: pointer; + color: $main-dark; + margin-left: 10px; +} +.F68710 { + color: #f68710; +} +.link { + color: $sub-dark; + cursor: pointer; +} +.pointer { + cursor: pointer; +} + +.inlineBlock { + display: block; +} + +.clearfix { + &:after { + visibility: hidden; + display: block; + font-size: 0; + content: ' '; + clear: both; + height: 0; + } +} + +aside { + background: #eef1f6; + padding: 8px 24px; + margin-bottom: 20px; + border-radius: 2px; + display: block; + line-height: 32px; + font-size: 16px; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, + 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + color: #2c3e50; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + a { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32, 160, 255); + } + } +} +.avatar { + width: 120px !important; + height: 120px !important; + display: block; +} +// 文本禁止默认选中 +.no-user-select { + -moz-user-select: none; /*火狐*/ + -webkit-user-select: none; /*webkit浏览器*/ + -ms-user-select: none; /*IE10*/ + -khtml-user-select: none; /*早期浏览器*/ + user-select: none; +} +//main-container全局样式 +.app-container { + padding: 16px 16px; + padding-bottom: 10px; +} + +.components-container { + margin: 30px 50px; + position: relative; +} + +.pagination-container { + margin-top: 30px; +} + +.text-center { + text-align: center; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.sub-navbar { + height: 50px; + line-height: 50px; + position: relative; + width: 100%; + text-align: right; + padding-right: 20px; + transition: 600ms ease position; + background: linear-gradient( + 90deg, + rgba(32, 182, 249, 1) 0%, + rgba(32, 182, 249, 1) 0%, + rgba(33, 120, 241, 1) 100%, + rgba(33, 120, 241, 1) 100% + ); + + .subtitle { + font-size: 20px; + color: #fff; + } + + &.draft { + background: #d0d0d0; + } + + &.deleted { + background: #d0d0d0; + } +} + +.link-type, +.link-type:focus { + color: $sub-dark; + cursor: pointer; + + &:hover { + color: $sub-dark; + } +} + +.filter-container { + padding-bottom: 10px; + + .filter-item { + display: inline-block; + vertical-align: middle; + margin-bottom: 10px; + } +} + +//refine vue-multiselect plugin +.multiselect { + line-height: 16px; +} + +.multiselect--active { + z-index: 1000 !important; +} + +// +.ellipsis { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +// +.multi-ellipsis--l2 { + display: -webkit-box; + overflow: hidden; + text-overflow: ellipsis; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.footer { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + margin: 16px 0; +} + +.full-width, +.width-full { + width: 100% !important; +} +.el-input-group__append-width-100 .el-input-group__append .el-input { + width: 100px; +} +.tips { + font-size: 10px; + color: #c0c4cc; +} +.gray { + color: #a2a7b1// #c0c4cc; +} + +.el-radio { + margin-right: 10px; +} +.flag-one { + color: #fb0101; +} +.flag-two { + color: #fcf703; +} +.flag-three { + color: #0dfc34; +} +.flag-four { + color: #0150f9; +} +.flag-five { + color: #d706f1; +} + +.flex { + width: 100%; + display: flex; + flex-wrap: wrap; + flex-direction: row; +} +.flex-column { + width: 100%; + display: flex; + flex-wrap: wrap; + flex-direction: column; +} +.flex-center { + width: 100%; + display: flex; + justify-content: center; + align-items: center; +} +.justify-between { + justify-content: space-between; +} +.justify-center { + justify-content: center; +} +.justify-around { + justify-content: space-around; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-start { + justify-content: flex-start !important; +} + +.align-items { + align-items: center; +} +.red { + color: red; +} + +.small-img { + width: 200px !important; +} + +/** 详情页的公共样式 bj-row ****/ +//通用 +.el-icon-circle-check { + color: green; +} +.el-icon-warning-outline { + color: red; +} +.border-no, +.child-border-no > *, +.all-border-no, +.all-border-no > * { + border: none !important; +} +.border-top { + border-left: none !important; + border-right: none !important; + border-bottom: none !important; + border-top: 1px solid rgba(215, 215, 215, 1); +} +.border-bottom { + border-left: none !important; + border-right: none !important; + border-top: none !important; + border-bottom: 1px solid rgba(215, 215, 215, 1); +} +.auto-width { + width: auto !important; +} +// label 后面加 冒号 +.bj-label-colon div:not(.bj-page) .el-form-item__label::after { + content: '\ff1a'; +} +// // content 前面加冒号 +// .el-form-item-content-colon .el-form-item__content::before { +// content: '\ff1a'; +// display: inline; +// } +// // content 前面加冒号时,label分散对齐 +// .el-form-item-content-colon .el-form-item__label { +// padding-right: 0; +// text-align: justify; +// text-align-last: justify; //https://caniuse.com/?search=text-align-last +// } +// 重设 el-input 的 disabled 样式 +.bj-el-input-disabled .el-input.is-disabled .el-input__inner { + background-color: #f7f8f9; + color: #97a8be; +} +// 块状布局,统一 bj-form-item-label 的宽度 +div:not(.bj-page) { + @for $i from 2 through 15 { + .bj-col.label-width-#{$i} .bj-form-item-label, + .label-width-#{$i} .bj-form-item-label { + width: ($i + 1) * 1em; // 在bj-form-item-label::after加冒号,需要占位1em + } + } + .bj-row { + border: 1px solid rgba(215, 215, 215, 1); + padding: 8px 16px; + display: flex; + flex-wrap: wrap; + + .bj-col { + border-left: 1px solid rgba(215, 215, 215, 0.75); + padding: 16px; + width: 33.33%; + } + .bj-col:first-of-type { + border-left: none; + } + @for $i from 1 through 24 { + // 按 bj-col-* 布局宽度 + .bj-col-#{$i} { + width: percentage($i/24) !important; + } + // bj-col 设为100%,按 bj-item-col-* 下的 el/bj-form-item 布局宽度 + .bj-col.bj-item-col-#{$i} { + width: 100%; + padding: 0; + margin-top: 16px; + } + .bj-item-col-#{$i} { + .bj-form-item, + .el-form-item { + width: percentage($i/24); + float: left; + padding: 0 16px; + margin-right: 0; + } + } + // title 和 item的样式 + .bj-col, + .bj-col-#{$i} { + .bj-form-title { + font-size: 14px; + font-weight: bold; + + margin-bottom: 16px; + } + .bj-form-title.empty::after { + content: ''; + display: inline-block; + } + .right { + float: right; + font-weight: normal; + } + .bj-form-item:last-child { + margin-bottom: 0; + } + .bj-form-item { + display: flex; + font-size: 12px; + margin-bottom: 16px; + button { + margin-bottom: 10px; + } + .bj-form-item-label { + flex: 0 0 auto; + color: #000; + text-align: right; + // text-align: justify; + // text-align-last: justify; //https://caniuse.com/?search=text-align-last + // height: 1em; + // overflow: hidden; + } + // .bj-form-item-label::after { + // content: ''; + // display: inline-block; + // width: 100%; + // } + // .bj-form-item-value::before { + // content: '\ff1a'; + // } + .bj-form-item-label::after { + content: '\ff1a'; + } + .bj-form-item-value { + flex: 0 1 auto; + color: #6c6c6c; //#7f7f7f; + } + .bj-form-item-right { + flex: 0 0 auto; + } + } + .bj-form-tips { + font-size: 14px; + font-weight: normal; + margin: 6px 0; + color: #7f7f7f; + } + } + } + } +} +/** 高度28px ,解决列表页查询条件高度不一致问题 */ +.el-form-item-28 { + height: 28px; +} + +/** 人工标签 的 颜色 START */ +// BjTag的style里 +/** 人工标签 的 颜色 END */ +.hand-tag { + padding: 4px 8px; + color: #fff !important; +} + +// 长文本,不按单词断行。 +.el-message-box__message { + word-break: break-all; +} + +.el-form-item.el-form-item--mini { + min-height: 29px; +} + +.require::before { + content: '*'; + color: red; + padding: auto 2px; +} +/******** TreeSelect Start ****************/ +// class="bj-tree-select" + +// .vue-treeselect.bj-tree-select, +// .bj-tree-select .vue-treeselect__control { +// height: 36px; +// width: 100%; +// } + +.el-form-item--mini { + div.vue-treeselect.bj-tree-select { + width: 100%; + .vue-treeselect__input { + padding: 0; + } + .vue-treeselect__control { + height: 26px; + line-height: 26px; + } + + .vue-treeselect__input, + .vue-treeselect__input-container, + .vue-treeselect__placeholder, + .vue-treeselect__single-value, + .vue-treeselect__control-arrow-container { + height: 26px; + line-height: 26px; + } + .vue-treeselect__multi-value, + .vue-treeselect__multi-value-item-container, + .vue-treeselect__multi-value-item, + .vue-treeselect__limit-tip-text, + .vue-treeselect__limit-tip, + .vue-treeselect-helper-zoom-effect-off { + padding: 0; + border: none; + margin: 0; + font-size: 12px; + padding-left: 10px; + } + } +} + +.vue-treeselect.bj-tree-select.mini { + width: 100%; + .vue-treeselect__input { + padding: 0; + } + .vue-treeselect__control, + .vue-treeselect__input, + .vue-treeselect__input-container, + .vue-treeselect__placeholder, + .vue-treeselect__single-value, + .vue-treeselect__control-arrow-container { + height: 28px; + line-height: 28px; + } + .vue-treeselect__multi-value, + .vue-treeselect__multi-value-item-container, + .vue-treeselect__multi-value-item, + .vue-treeselect__limit-tip-text, + .vue-treeselect__limit-tip, + .vue-treeselect-helper-zoom-effect-off { + padding: 0; + // border: none; + margin: 0; + } +} +/******** TreeSelect End ****************/ +.xs.el-button { + font-size: 12px; + padding: 3px 10px; + margin-left: 16px; +} + +.input-default-width { + width: 200px; +} + +/******** el-tabs ****************/ +.el-tabs--card > .el-tabs__header .el-tabs__nav { + border: none; + margin-bottom: -1px; +} +.el-tabs--card > .el-tabs__header .el-tabs__item:first-child { + border-left: 1px solid #dfe4ed; +} +.el-tabs--card > .el-tabs__header .el-tabs__item { + border-right: 1px solid #dfe4ed; + border-bottom: 1px solid #dfe4ed; + border-top: 1px solid #dfe4ed; + border-left: none; +} +.el-tabs--card > .el-tabs__header .el-tabs__item.is-active { + border-top: 2px $main-dark solid; + border-bottom: 1px solid #fff; +} +/*** 表格 text 按钮 ****/ +.el-button--text.edit-btn { + color: $sub-dark; +} + +.el-button--text.delete-btn { + color: $main-dark; +} + +.el-button--text { + color: $sub-dark; +} + +.el-button--text.is-disabled { + color: $minor-lighter; +} + +/*** 操作栏 btn 按钮 ****/ +.top-left-btn .el-button { + color: $main-normal; + background: $background-light; + border-color: #ffc79f; +} +.top-left-btn .el-button.is-disabled { + color: $main-light; + background-color: #fff1e7; + border-color: #ffe3cf; +} +.top-left-btn .el-button.main-btn { + color: $background-light; + background-color: $main-dark; + border-color: $main-dark; +} + +/* 浏览器会把letter-spacing加到文字的后面,导致多出来一个宽度,可以用负margin消除这个宽度 */ +.letter-spacing-8 span { + letter-spacing: 8px; +} +.letter-spacing-8 span:after { + content: ''; + margin-left: -8px; +} +.letter-spacing-16 span { + letter-spacing: 16px; +} +.letter-spacing-16 span:after { + content: ''; + margin-left: -16px; +} + +// 用于table的cellClassName回调,按条件隐藏展开图标。 例:src\views\center-business\after\internal\refund\add.vue +.bj-cell-expand-hide > div { + display: none; +} +// vue.draggable chosenClass 属性设置选中元素的样式 +.chosen { + background: $ghost !important; +} +// vue.draggable ghostClass 目标位置占位符的样式及需要停靠位置的样式。 +.ghost { + background: $ghost !important; +} +.status-icon-err { + font-size: 52px; + color: red; + background-color: white; + border-radius: 50%; +} +.status-icon-success { + font-size: 52px; + color: green; + background-color: white; + border-radius: 50%; +} + +// .vxe-cell { +// font-size: 12px; +// } +.table-other-td-item { + // padding: 2px 2px; +} +.table-other-td-item::after { + content: ';'; + display: inline-block; +} diff --git a/front-end/src/styles/mixin.scss b/front-end/src/styles/mixin.scss new file mode 100644 index 0000000..06fa061 --- /dev/null +++ b/front-end/src/styles/mixin.scss @@ -0,0 +1,66 @@ +@mixin clearfix { + &:after { + content: ""; + display: table; + clear: both; + } +} + +@mixin scrollBar { + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } +} + +@mixin relative { + position: relative; + width: 100%; + height: 100%; +} + +@mixin pct($pct) { + width: #{$pct}; + position: relative; + margin: 0 auto; +} + +@mixin triangle($width, $height, $color, $direction) { + $width: $width/2; + $color-border-style: $height solid $color; + $transparent-border-style: $width solid transparent; + height: 0; + width: 0; + + @if $direction==up { + border-bottom: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } + + @else if $direction==right { + border-left: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } + + @else if $direction==down { + border-top: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } + + @else if $direction==left { + border-right: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } +} diff --git a/front-end/src/styles/ruoyi.scss b/front-end/src/styles/ruoyi.scss new file mode 100644 index 0000000..c7f1de4 --- /dev/null +++ b/front-end/src/styles/ruoyi.scss @@ -0,0 +1,274 @@ +/** + * 通用css样式布局处理 + * 2021 飞骥 + */ + +/** 基础通用 **/ +.pt5 { + padding-top: 5px; +} +.pr5 { + padding-right: 5px; +} +.pb5 { + padding-bottom: 5px; +} +.mt5 { + margin-top: 5px; +} +.mr5 { + margin-right: 5px; +} +.mb5 { + margin-bottom: 5px; +} +.mb8 { + margin-bottom: 8px; +} +.ml5 { + margin-left: 5px; +} +.ml10 { + margin-left: 10px; +} +.ml15 { + margin-left: 15px; +} +.ml20 { + margin-left: 20px !important; +} +.ml25 { + margin-left: 25px !important; +} +.mt10 { + margin-top: 10px; +} +.mr10 { + margin-right: 10px; +} +.mb10 { + margin-bottom: 10px; +} +.ml0 { + margin-left: 10px; +} +.mt16 { + margin-top: 16px; +} +.mr16 { + margin-right: 16px; +} +.mb16 { + margin-bottom: 16px; +} +.ml6 { + margin-left: 16px; +} +.mt20 { + margin-top: 20px; +} +.mr20 { + margin-right: 20px; +} +.mb20 { + margin-bottom: 20px; +} +.m20 { + margin-left: 20px; +} +.font12 { + font-size: 12px; +} +.font14 { + font-size: 14px; +} +.font16 { + font-size: 16px; +} + +.el-dialog:not(.is-fullscreen) { + margin-top: 6vh !important; +} + +.el-table { + .el-table__header-wrapper, + .el-table__fixed-header-wrapper { + th { + word-break: break-word; + background-color: #f8f8f9; + color: #515a6e; + height: 40px; + font-size: 13px; + } + } + .el-table__body-wrapper { + .el-button [class*='el-icon-'] + span { + margin-left: 1px; + } + } +} + +/** 表单布局 **/ +.form-header { + font-size: 15px; + color: #6379bb; + border-bottom: 1px solid #ddd; + margin: 8px 10px 25px 10px; + padding-bottom: 5px; +} + +/** 表格布局 **/ +.pagination-container { + position: relative; + height: 25px; + margin-bottom: 10px; + margin-top: 15px; + padding: 10px 20px !important; +} + +/* tree border */ +.tree-border { + margin-top: 5px; + border: 1px solid #e5e6e7; + background: #ffffff none; + border-radius: 4px; +} + +.pagination-container .el-pagination { + right: 0; + position: absolute; +} + +.el-table .fixed-width .el-button--mini { + color: #409eff; + padding-left: 0; + padding-right: 0; + width: inherit; +} + +.el-tree-node__content > .el-checkbox { + margin-right: 8px; +} + +.list-group-striped > .list-group-item { + border-left: 0; + border-right: 0; + border-radius: 0; + padding-left: 0; + padding-right: 0; +} + +.list-group { + padding-left: 0px; + list-style: none; +} + +.list-group-item { + border-bottom: 1px solid #e7eaec; + border-top: 1px solid #e7eaec; + margin-bottom: -1px; + padding: 11px 0px; + font-size: 13px; +} + +.pull-right { + float: right !important; +} + +.el-card__header { + padding: 14px 15px 7px; + min-height: 40px; +} + +.el-card__body { + padding: 15px 20px 20px 20px; +} + +.card-box { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 10px; +} + +/* button color */ +.el-button--cyan.is-active, +.el-button--cyan:active { + background: $main-normal !important; + border-color: $main-normal !important; + color: #ffffff !important; +} + +.el-button--cyan:focus, +.el-button--cyan:hover { + background: $main-normal !important; + border-color: $main-normal !important; + color: #ffffff !important; +} + +.el-button--cyan { + // background-color: $main-normal; + border-color: $main-normal; + color: $main-normal; +} + +/* text color */ +.text-navy { + color: #1ab394; +} + +.text-primary { + color: inherit; +} + +.text-success { + color: #1c84c6; +} + +.text-info { + color: #23c6c8; +} + +.text-warning { + color: #f8ac59; +} + +.text-danger { + color: #ed5565; +} + +.text-muted { + color: #888888; +} + +/* image */ +.img-circle { + border-radius: 50%; +} + +.img-lg { + width: 120px; + height: 120px; +} + +.avatar-upload-preview { + position: absolute; + top: 50%; + transform: translate(50%, -50%); + width: 180px; + height: 180px; + border-radius: 50%; + box-shadow: 0 0 4px #ccc; + overflow: hidden; +} + +/* 拖拽列样式 */ +.sortable-ghost { + opacity: 0.8; + color: #fff !important; + background: $ghost !important; +} + +.top-right-btn { + position: relative; + float: right; +} diff --git a/front-end/src/styles/shop.scss b/front-end/src/styles/shop.scss new file mode 100644 index 0000000..116e394 --- /dev/null +++ b/front-end/src/styles/shop.scss @@ -0,0 +1,44 @@ +.avatar-uploader .el-upload { + border: 1px dashed #d9d9d9; + border-radius: 6px; + cursor: pointer; + position: relative; + overflow: hidden; +} +.avatar-uploader .el-upload:hover { + border-color: #409EFF; +} +.avatar-uploader-icon { + font-size: 28px; + color: #8c939d; + width: 120px; + height: 120px; + line-height: 120px; + text-align: center; +} +.avatar { + width: 120px; + height: 120px; + display: block; +} +.avatarTable { + width: 100%; + height: 100%; + display: block; +} +.el-carousel__item h3 { + color: #475669; + font-size: 14px; + opacity: 0.75; + line-height: 200px; + margin: 0; +} + +.el-carousel__item:nth-child(2n) { + background-color: #99a9bf; +} + +.el-carousel__item:nth-child(2n+1) { + background-color: #d3dce6; +} + diff --git a/front-end/src/styles/sidebar.scss b/front-end/src/styles/sidebar.scss new file mode 100644 index 0000000..e4c6b5e --- /dev/null +++ b/front-end/src/styles/sidebar.scss @@ -0,0 +1,253 @@ +#app { + .main-container { + min-height: 100%; + transition: margin-left 0.28s; + margin-left: $sideBarWidth; + position: relative; + } + + .sidebar-container { + transition: width 0.28s; + width: $sideBarWidth !important; + background-color: $menuBg; + height: 100%; + position: fixed; + font-size: 0px; + top: 0; + bottom: 0; + left: 0; + z-index: 2001; + overflow: hidden; + + box-shadow: 0 2px 6px 0 rgba(149, 149, 149, 0.3); + + // reset element-ui css + .horizontal-collapse-transition { + transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; + } + + .scrollbar-wrapper { + overflow-x: hidden !important; + } + + .el-scrollbar__bar.is-vertical { + right: 0px; + } + + .el-scrollbar { + height: 100%; + } + + &.has-logo { + .el-scrollbar { + height: calc(100% - 50px); + } + } + + .is-horizontal { + display: none; + } + + a { + display: inline-block; + width: 100%; + overflow: hidden; + } + + .svg-icon { + margin-right: 16px; + } + + .sub-el-icon { + margin-right: 12px; + margin-left: -2px; + } + + .el-menu { + border: none; + height: 100%; + width: 100% !important; + } + + // menu hover + .submenu-title-noDropdown, + .el-submenu__title { + font-size: 16px !important; + &:hover { + background-color: $menuHover !important; + } + } + + .is-active > .el-submenu__title { + color: $subMenuActiveText !important; + } + + .el-menu-item.is-active { + background-color: $background-light !important; + } + + & .nest-menu .el-submenu > .el-submenu__title, + & .el-submenu .el-menu-item { + min-width: $sideBarWidth !important; + background-color: $subMenuBg !important; + + &:hover { + background-color: $subMenuHover !important; + } + } + } + .toggle-sidebar-tool { + background: #f3f3f3; + position: fixed; + left: calc(2px + #{$sideBarWidth}); + top: calc(50% - 25px); + width: 18px; + height: 50px; + z-index: 1; + transition: left 0.28s; + text-align: center; + line-height: 68px; + cursor: pointer; + // 矩形透视为梯形 , left需要补2px + transform: perspective(2em) rotateY(1deg); + i { + font-size: 20px; + color: #d5d5d5; + } + } + .hideSidebar { + .toggle-sidebar-tool { + left: $sideBarWidthHide; + } + + .sidebar-container { + width: $sideBarWidthHide !important; + } + + .main-container { + margin-left: $sideBarWidthHide; + } + + .submenu-title-noDropdown { + padding: 0 !important; + position: relative; + + .el-tooltip { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + + .sub-el-icon { + margin-left: 19px; + } + } + } + + .el-submenu { + overflow: hidden; + + & > .el-submenu__title { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + + .sub-el-icon { + margin-left: 19px; + } + + .el-submenu__icon-arrow { + display: none; + } + } + } + + .el-menu--collapse { + .el-submenu { + & > .el-submenu__title { + & > span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + } + } + } + } + + .el-menu--collapse .el-menu .el-submenu { + min-width: $sideBarWidth !important; + } + + // mobile responsive + .mobile { + .main-container { + margin-left: 0px; + } + + .sidebar-container { + transition: transform 0.28s; + width: $sideBarWidth !important; + } + + &.hideSidebar { + .sidebar-container { + pointer-events: none; + transition-duration: 0.3s; + transform: translate3d(-$sideBarWidth, 0, 0); + } + } + } + + .withoutAnimation { + .main-container, + .sidebar-container { + transition: none; + } + } +} + +// when menu collapsed +.el-menu--vertical { + & > .el-menu { + .svg-icon { + margin-right: 16px; + } + .sub-el-icon { + margin-right: 12px; + margin-left: -2px; + } + } + + .nest-menu .el-submenu > .el-submenu__title, + .el-menu-item { + &:hover { + // you can use $subMenuHover + background-color: $menuHover !important; + } + } + + // the scroll bar appears when the subMenu is too long + > .el-menu--popup { + max-height: 100vh; + overflow-y: auto; + + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } + } +} diff --git a/front-end/src/styles/transition.scss b/front-end/src/styles/transition.scss new file mode 100644 index 0000000..4cb27cc --- /dev/null +++ b/front-end/src/styles/transition.scss @@ -0,0 +1,48 @@ +// global transition css + +/* fade */ +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.28s; +} + +.fade-enter, +.fade-leave-active { + opacity: 0; +} + +/* fade-transform */ +.fade-transform-leave-active, +.fade-transform-enter-active { + transition: all .5s; +} + +.fade-transform-enter { + opacity: 0; + transform: translateX(-30px); +} + +.fade-transform-leave-to { + opacity: 0; + transform: translateX(30px); +} + +/* breadcrumb transition */ +.breadcrumb-enter-active, +.breadcrumb-leave-active { + transition: all .5s; +} + +.breadcrumb-enter, +.breadcrumb-leave-active { + opacity: 0; + transform: translateX(20px); +} + +.breadcrumb-move { + transition: all .5s; +} + +.breadcrumb-leave-active { + position: absolute; +} diff --git a/front-end/src/styles/variables.scss b/front-end/src/styles/variables.scss new file mode 100644 index 0000000..dcac0a8 --- /dev/null +++ b/front-end/src/styles/variables.scss @@ -0,0 +1,58 @@ +// 品牌 主色 +$main-dark: #ff7310; +$main-normal: #ff8d13; +$main-light: #febb14; +// 中性色 次色 +$minor-dark: #333333; +$minor-normal: #666666; +$minor-light: #999999; +$minor-lighter: #d9d9d9; +// 辅助色 +$sub-dark: #3173d0; +$sub-normal: #ffeebf; +$sub-light: #eeeaeb; +// 背景色 +$background-dark: #f5f5f5; +$background-normal: #fbfbfb; +$background-light: #ffffff; + +// base color +$blue: #324157; +$light-blue: #3a71a8; +$red: #c03639; +$pink: #e65d6e; +$green: #30b08f; +$tiffany: #4ab7bd; +$yellow: #fec171; +$panGreen: #30b08f; +$danger: #f56c6c; + +// sidebar +$menuText: $minor-normal; // #bfcbd9; +$menuActiveText: $main-dark; // #409eff; +$subMenuActiveText: #f4f4f5; // https://github.com/ElemeFE/element/issues/12951 + +$menuBg: $background-normal; //#304156; +$menuHover: $background-dark; //#263445; + +$subMenuBg: #1f2d3d; +$subMenuHover: #001528; + +$sideBarWidth: 180px; +$sideBarWidthHide: 0px; +// 拖拽样式 +$ghost: #eee; + +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + menuText: $menuText; + menuActiveText: $menuActiveText; + subMenuActiveText: $subMenuActiveText; + menuBg: $menuBg; + menuHover: $menuHover; + subMenuBg: $subMenuBg; + subMenuHover: $subMenuHover; + sideBarWidth: $sideBarWidth; + ghost: $ghost; +} diff --git a/front-end/src/utils/BjDialogListConfig.js b/front-end/src/utils/BjDialogListConfig.js new file mode 100644 index 0000000..87abf50 --- /dev/null +++ b/front-end/src/utils/BjDialogListConfig.js @@ -0,0 +1,688 @@ +import { goodsApi, channelApi, stockApi, orderApi, afterApi } from '@/api'; +import { GOODS_TYPES } from '@/utils/constants'; +import { GOODS_COMBO_TYPES } from '@/utils/constants'; +// spu +export function spuVirtual(title = '选择虚拟商品', option) { + return spuDefault(title, { + defaultQuery: { type: GOODS_TYPES.VIRTUAL, status: 1 }, + }); +} +export function spuReal(title = '选择实物商品', option) { + return spuDefault(title, { + defaultQuery: { type: GOODS_TYPES.REAL, status: 1 }, + }); +} +export function spuPackage(title = '选择套餐商品', option) { + return spuDefault(title, { + defaultQuery: { setFlag: GOODS_COMBO_TYPES.PACKAGE, status: 1 }, + }); +} +export function spuOrdinary(title = '选择普通商品', option) { + return spuDefault(title, { + defaultQuery: { setFlag: GOODS_COMBO_TYPES.ORDINARY, status: 1 }, + }); +} +export function spuDefault(title = '选择商品', option = {}) { + return { + title: title, + columns: option.columns || [ + { + prop: 'spuCode', + label: '商品编码', + width: 160, + }, + { + prop: 'name', + label: '商品名称', + width: 160, + }, + { + prop: 'categoryName', + label: '商品分类', + }, + ], + search: option.search || [ + { + placeholder: '请输入编码', + key: 'spuCode', + }, + { + placeholder: '请输入名称', + key: 'name', + }, + { + placeholder: '请选择分类', + key: 'categoryIdList', + component: 'BjGoodsTypeTreeSelect', + multiple: true, + }, + ], + actionApi: option.actionApi || goodsApi.getPage, + defaultQuery: option.defaultQuery || { status: 1 }, + query: option.query || '', + }; +} +// sku +export function skuReal(title = '选择实物商品', option) { + return skuDefault(title, { + defaultQuery: { spuType: GOODS_TYPES.REAL, status: [3, 4, 5] }, + }); +} +export function skuDefault(title = '选择SKU', option = {}) { + return { + title: title, + columns: option.columns || [ + { + prop: 'categoryName', + label: '商品分类', + }, + { + prop: 'spuCode', + label: '商品编码', + width: 160, + }, + { + prop: 'spuName', + label: '商品名称', + width: 160, + }, + { + prop: 'skuCode', + label: 'SKU编码', + width: 160, + }, + { + prop: 'skuName', + label: 'SKU名称', + width: 160, + }, + { + prop: 'spuType', + label: '商品类型', + constantKey: 'GOODS_TYPE_LIST', + }, + ], + search: option.search || [ + { + placeholder: '请输入商品名称', + key: 'spuName', + }, + { + placeholder: '请输入商品编码', + key: 'spuCode', + }, + { + placeholder: '请输入SKU编码', + key: 'skuCode', + }, + ], + actionApi: option.actionApi || goodsApi.getSku, + defaultQuery: option.defaultQuery || { status: [3, 4, 5] }, + query: option.query || '', + }; +} +// shop +export function shopDefault(title = '选择店铺', option = {}) { + return { + title: title, + columns: option.columns || [ + { + prop: 'code', + label: '店铺编码', + }, + { + prop: 'name', + label: '店铺名称', + }, + { + prop: 'categoryType', + label: '店铺类型', + constantKey: 'SHOP_TYPE_LIST', + }, + ], + search: option.search || [ + { + placeholder: '请输入编码', + key: 'code', + }, + { + placeholder: '请输入名称', + key: 'name', + }, + ], + actionApi: option.actionApi || channelApi.getAllShopPage, + defaultQuery: option.defaultQuery || {}, + query: option.query || '', + }; +} +// shopOnline +export function shopOnline(title = '选择网店', option = {}) { + return { + title: title, + columns: option.columns || [ + { + prop: 'code', + label: '编码', + }, + { + prop: 'name', + label: '名称', + }, + { + prop: 'channelTypeMeaning', + label: '销售渠道', + }, + { + prop: 'onlineStoreTypeMeaning', + label: '类型', + }, + ], + search: option.search || [ + { + placeholder: '请输入网店编码', + key: 'code', + }, + { + placeholder: '请输入网店名称', + key: 'name', + }, + + { + placeholder: '请选择渠道', + key: 'channelTypeCode', + component: 'BjSelectLov', + lovCode: 'SCHL.CHANNEL_TYPE', + }, + ], + actionApi: option.actionApi || channelApi.getOnlineShopPage, + defaultQuery: option.defaultQuery || { status: true }, + query: option.query || '', + }; +} +// channelApi.getWarehousePage +export function warehouseDefault(title = '选择仓库', option = {}) { + return { + title: title, + columns: option.columns || [ + { + prop: 'code', + label: '仓库编码', + }, + { + prop: 'name', + label: '仓库名称', + }, + { + prop: 'detailAddress', + label: '仓库地址', + }, + ], + search: option.search || [ + { + placeholder: '仓库编码', + key: 'code', + }, + { + placeholder: '仓库名称', + key: 'name', + }, + ], + actionApi: option.actionApi || channelApi.getWarehousePage, + // // defaultQuery: { typeCode: ['real'] }, + defaultQuery: option.defaultQuery || { enableFlag: true }, + query: option.query || '', + }; +} +// stockApi.getWarehousesPage +export function stockWarehouseLogic(time, option) { + return stockWarehouseDefault('选择逻辑仓', { + defaultQuery: { typeCode: ['logic'] }, + }); +} +export function stockWarehouseReal(time, option) { + return stockWarehouseDefault('选择实仓', { + defaultQuery: { typeCode: ['real'] }, + }); +} +export function stockWarehouseDefault(title = '选择仓库', option = {}) { + return { + title: title, + columns: option.columns || [ + { + prop: 'code', + label: '仓库编码', + }, + { + prop: 'name', + label: '仓库名称', + }, + ], + search: option.search || [ + { + placeholder: '仓库编码', + key: 'code', + }, + { + placeholder: '仓库名称', + key: 'name', + }, + ], + actionApi: option.actionApi || stockApi.getWarehousesPage, + defaultQuery: option.defaultQuery || {}, + query: option.query || '', + }; +} +// stockGoods +export function stockGoodsDefault(title = '选择商品', option = {}) { + return { + title: title, + columns: option.columns || [ + { + prop: 'spuCode', + label: '商品编码', + width: 160, + }, + { + prop: 'spuName', + label: '商品名称', + width: 160, + }, + { + prop: 'skuCode', + label: 'SKU编码', + width: 160, + }, + { + prop: 'categoryName', + label: '商品分类', + }, + { + prop: 'spuType', + label: '商品类型', + constantKey: 'GOODS_TYPE_LIST', + }, + { + prop: 'usableNum', + label: '可用库存 ', + }, + ], + search: option.search || [ + { + placeholder: '请输入商品名称', + key: 'spuName', + }, + { + placeholder: '请输入商品编码', + key: 'spuCode', + }, + { + placeholder: '请输入SKU编码', + key: 'skuCode', + }, + ], + actionApi: option.actionApi || stockApi.getGoodsStockPage, + // usableExcludeZeroFlag (boolean, optional): 可用库存是否大于零 + // warehouseId (Array[integer], optional): 仓库名称 + defaultQuery: option.defaultQuery || { warehouseId: [], usableExcludeZeroFlag: true }, + query: option.query || '', + }; +} + +/** 内部销售单 */ +export function innerOrderDefault(title = '选择关联销售单', option = {}) { + return { + title: title, + columns: option.columns || [ + { + prop: 'innerOrderNo', + label: '内部订单号', + width: 160, + }, + { + prop: 'outerOrderNo', + label: '三方订单号', + width: 160, + }, + { + prop: 'businessType', + label: '订单类型', + constantKey: 'ORDER_BUSINESS_TYPE_LIST', + }, + { + prop: 'orderStatus', + label: '订单状态', + constantKey: 'ORDER_INTERNAL_ORDER_STATUS_LIST', + }, + { + prop: 'storeName', + label: '销售店铺', + }, + { + prop: 'channelTypeMeaning', + label: '销售渠道', + }, + { + prop: 'payStatus', + label: '支付状态', + constantKey: 'ORDER_INTERNAL_PAYMENT_STATUS_LIST', + }, + { + prop: 'goodsQuatity', + label: '商品行数量', + }, + { + prop: 'totalAmount', + label: '商品总金额', + }, + { + prop: 'buyerPay', + label: '买家应付', + }, + { + prop: 'costPrice', + label: '商品总成本', + }, + { + prop: 'buyerRealPrice', + label: '买家实付', + }, + { + prop: 'deliveryStatus', + label: '发货状态', + constantKey: 'ORDER_INTERNAL_DELIVER_STATUS_LIST', + width: 100, + }, + { + prop: 'receivingStatus', + label: '收货状态', + constantKey: 'ORDER_INTERNAL_RECEIVING_STATUS_LIST', + width: 100, + }, + { + prop: 'buyerNick', + label: '买家昵称', + }, + { + prop: 'receiverName', + label: '收货人姓名', + }, + { + prop: 'mobile', + label: '手机号', + width: 100, + }, + { + prop: 'address', + label: '收货地址', + }, + { + prop: 'orderTime', + label: '三方下单时间', + width: 135, + }, + { + prop: 'payTime', + label: '支付时间', + width: 135, + }, + { + prop: 'creationDate', + label: '创建时间', + width: 135, + }, + ], + search: option.search || [ + { + placeholder: '三方订单号/内部订单号', + key: 'orderNo', + }, + ], + showChannelStore: ['channel', 'storeIdList'], + actionApi: option.actionApi || orderApi.getInternalPage, + defaultQuery: option.defaultQuery || {}, + query: option.query || '', + }; +} +/** 退款商品 */ +export function refundGoodsDefault(title = '选择退款商品', option = {}) { + const list = title.includes('退货') + ? [ + // { + // prop: 'quantityShipped', + // label: '已发货数量', + // }, + // { + // prop: 'quantityReturned', + // label: '已退货数量', + // }, + // { + // prop: 'returnableQuantity', + // label: '可退货数量', + // }, + ] + : [ + // { + // prop: 'undeliveredQuantity', + // label: '未发货数量', + // }, + // { + // prop: 'quantityRefunded', + // label: '已退款数量', + // }, + // { + // prop: 'refundableQuantity', + // label: '可退款数量', + // }, + ]; + + return { + title: title, + columns: option.columns || [ + { + prop: 'spuCode', + label: '商品编码', + width: 160, + }, + { + prop: 'spuName', + label: '商品名称', + width: 160, + }, + { + prop: 'skuCode', + label: 'SKU编码', + width: 160, + }, + { + prop: 'skuName', + label: 'SKU名称', + width: 160, + }, + { + prop: 'giftFlag', + label: '是否赠品', + constantKey: 'STATUS_YES_NUM', + width: 80, + }, + { + prop: 'totalQuantity', + label: '商品行数量', + width: 80, + }, + ...list, + ], + search: option.search || [], + actionApi: option.actionApi || afterApi.getRefundPageByInnerNo, + defaultQuery: option.defaultQuery || { innerOrderNo: null }, + query: option.query || '', + }; +} + +/** 三方销售单 */ +export function thirdOrderDefault(title = '选择关联三方订单', option = {}) { + return { + title: title, + columns: option.columns || [ + { + prop: 'outerOrderNo', + label: '三方订单号', + width: 160, + }, + { + prop: 'innerOrderNo', + label: '内部订单号', + width: 160, + }, + { + prop: 'businessType', + label: '订单类型', + constantKey: 'ORDER_BUSINESS_TYPE_LIST', + }, + { + prop: 'storeName', + label: '销售店铺', + width: 160, + }, + { + prop: 'channelTypeMeaning', + label: '销售渠道', + }, + { + prop: 'circulationStatus', + label: '流转状态', + constantKey: 'AFTER_THIRD_REFUND_TRANSFER_STATUS', + }, + { + prop: 'syncStatus', + label: '回写状态', + constantKey: 'ORDER_BACK_RES_LIST', + }, + { + prop: 'receivingStatus', + label: '平台收货状态', + constantKey: 'ORDER_THIRD_RECEIVING_STATUS_LIST', + }, + // { + // prop: 'buyerRemarks', + // label: '买家留言', + // }, + // { + // prop: 'serviceRemarks', + // label: '客服备注', + // }, + { + prop: 'goodsQuantity', + label: '商品数', + }, + { + prop: 'goodsTotalAmount', + label: '商品总金额', + }, + { + prop: 'totalDiscount', + label: '优惠合计', + }, + { + prop: 'amountReceivable', + label: '应收总金额', + }, + { + prop: 'buyerPayAmount', + label: '买家实付', + }, + { + prop: 'businessDiscountAmount', + label: '商家承担优惠金额', + }, + { + prop: 'thirdDiscountAmount', + label: '三方承担优惠金额', + }, + { + prop: 'buyerNick', + label: '买家昵称', + }, + { + prop: 'receiverName', + label: '收货人姓名', + }, + + { + prop: 'mobile', + label: '手机号', + width: 100, + }, + // { + // prop: 'address', + // label: '收货地址', + // }, + { + prop: 'orderTime', + label: '三方下单时间', + width: 135, + }, + { + prop: 'payTime', + label: '支付时间', + width: 135, + }, + { + prop: 'creationDate', + label: '拉单时间', + width: 135, + }, + ], + search: option.search || [ + { + placeholder: '三方订单号/内部订单号', + key: 'orderNo', + }, + ], + showChannelStore: ['channel', 'storeIdList'], + actionApi: option.actionApi || orderApi.getThirdOrderPage, + defaultQuery: option.defaultQuery || {}, + query: option.query || '', + }; +} +/** 三方退款商品: 三方销售单详情的thirdItemVO字段 */ +export function thirdRefundGoodsDefault(title = '选择退款商品', option = {}) { + const list = title.includes('退货') ? [] : []; + + // outerSaleAmount: 199 + // outerSingleSaleAmount: 199 + // quantity: 1 + + return { + title: title, + columns: option.columns || [ + { + prop: 'spuCode', + label: '商品编码', + width: 160, + }, + { + prop: 'spuName', + label: '商品名称', + width: 160, + }, + { + prop: 'skuCode', + label: 'SKU编码', + width: 160, + }, + { + prop: 'skuName', + label: 'SKU名称', + }, + { + prop: 'quantity', + label: '商品行数量', + }, + ...list, + ], + search: option.search || [], + actionApi: option.actionApi || afterApi.getRefundPageByInnerNo, + defaultQuery: option.defaultQuery || { innerOrderNo: null }, + query: option.query || '', + }; +} diff --git a/front-end/src/utils/auth.js b/front-end/src/utils/auth.js new file mode 100644 index 0000000..42b6379 --- /dev/null +++ b/front-end/src/utils/auth.js @@ -0,0 +1,15 @@ +import Cookies from 'js-cookie'; + +const TokenKey = 'BJ-Token'; + +export function getToken() { + return Cookies.get(TokenKey); +} + +export function setToken(token) { + return Cookies.set(TokenKey, token); +} + +export function removeToken() { + return Cookies.remove(TokenKey); +} diff --git a/front-end/src/utils/axios.js b/front-end/src/utils/axios.js new file mode 100644 index 0000000..f00239f --- /dev/null +++ b/front-end/src/utils/axios.js @@ -0,0 +1,54 @@ +// import Vue from 'vue'; +import axios from 'axios'; +// import vueAxios from 'vue-axios'; +import store from '@/store'; +import { getToken } from '@/utils/auth'; +import { VUE_APP_BASE_API } from '@/utils/index'; + +/** axios通用配置 */ +axios.defaults.timeout = 30000; +axios.defaults.baseURL = VUE_APP_BASE_API(); + +/** http request 拦截器 */ +axios.interceptors.request.use( + config => { + // do something + if (store.getters.token) { + // let each request carry token + // ['X-Token'] is a custom headers key + // please modify it according to the actual situation + config.headers['X-Token'] = getToken(); + } + return config; + }, + err => { + return Promise.reject(err); + }, +); + +// http response 拦截器 +axios.interceptors.response.use( + response => { + return response; + }, + error => { + if (error.response) { + switch (error.response.status) { + case 401: + // 401 清除token信息并跳转到登录页面 + window.location.href = error.response.headers.location; + } + } + return Promise.reject(error.response.data); + }, +); + +// Vue.use(vueAxios, axios); // Vue.axios/this.axios/this.$http使用axios,一次封装方便协作规范 + +/** 2021-9-8 13:57:49 线上npm build失败,先禁用vue-axios + * This dependency was not found: + * * vue-axios in ./src/utils/axios.js + * To install it, you can run: npm install --save vue-axios + * */ + +export default axios; diff --git a/front-end/src/utils/bpmn/customTranslate.js b/front-end/src/utils/bpmn/customTranslate.js new file mode 100644 index 0000000..be552f9 --- /dev/null +++ b/front-end/src/utils/bpmn/customTranslate.js @@ -0,0 +1,25 @@ +/* + * @Author: your name + * @Date: 2021-10-12 17:42:31 + * @LastEditTime: 2021-10-12 17:42:46 + * @LastEditors: your name + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\utils\bpmn\customTranslate.js + */ +import translations from './translationsGerman'; + +export default function customTranslate(template, replacements) { + replacements = replacements || {}; + + // Translate + template = translations[template] || template; + + // Replace + return template.replace(/{([^}]+)}/g, function(_, key) { + var str = replacements[key]; + if (translations[replacements[key]] != null && translations[replacements[key]] != 'undefined') { + str = translations[replacements[key]]; + } + return str || '{' + key + '}'; + }); +} diff --git a/front-end/src/utils/bpmn/defalutXml.js b/front-end/src/utils/bpmn/defalutXml.js new file mode 100644 index 0000000..9446914 --- /dev/null +++ b/front-end/src/utils/bpmn/defalutXml.js @@ -0,0 +1,17 @@ +export default ` + + + + + + + +`; diff --git a/front-end/src/utils/bpmn/translationsGerman.js b/front-end/src/utils/bpmn/translationsGerman.js new file mode 100644 index 0000000..6eec7cc --- /dev/null +++ b/front-end/src/utils/bpmn/translationsGerman.js @@ -0,0 +1,239 @@ +export default { + // Labels + 'Activate the global connect tool': '激活全局连接工具', + 'Append {type}': '追加 {type}', + 'Append EndEvent': '追加 结束事件 ', + 'Append Task': '追加 任务', + 'Append Gateway': '追加 网关', + 'Append Intermediate/Boundary Event': '追加 中间/边界 事件', + 'Add Lane above': '在上面添加道', + 'Divide into two Lanes': '分割成两个道', + 'Divide into three Lanes': '分割成三个道', + 'Add Lane below': '在下面添加道', + 'Append compensation activity': '追加补偿活动', + 'Change type': '修改类型', + 'Connect using Association': '使用关联连接', + 'Connect using Sequence/MessageFlow or Association': '使用顺序/消息流或者关联连接', + 'Connect using DataInputAssociation': '使用数据输入关联连接', + 'Remove': '移除', + 'Activate the hand tool': '激活抓手工具', + 'Activate the lasso tool': '激活套索工具', + 'Activate the create/remove space tool': '激活创建/删除空间工具', + 'Create expanded SubProcess': '创建扩展子过程', + 'Create IntermediateThrowEvent/BoundaryEvent': '创建中间抛出事件/边界事件', + 'Create Pool/Participant': '创建池/参与者', + 'Parallel Multi Instance': '并行多重事件', + 'Sequential Multi Instance': '时序多重事件', + 'DataObjectReference': '数据对象参考', + 'DataStoreReference': '数据存储参考', + 'Loop': '循环', + 'Ad-hoc': '即席', + 'Create {type}': '创建 {type}', + 'Create Task': '创建任务', + 'Create StartEvent': '创建开始事件', + 'Create EndEvent': '创建结束事件', + 'Create Group': '创建组', + 'Task': '任务', + 'Send Task': '发送任务', + 'Receive Task': '接收任务', + 'User Task': '用户任务', + 'Manual Task': '手工任务', + 'Business Rule Task': '业务规则任务', + 'Service Task': '服务任务', + 'Script Task': '脚本任务', + 'Call Activity': '调用活动', + 'Sub Process (collapsed)': '子流程(折叠的)', + 'Sub Process (expanded)': '子流程(展开的)', + 'Start Event': '开始事件', + 'StartEvent': '开始事件', + 'Intermediate Throw Event': '中间事件', + 'End Event': '结束事件', + 'EndEvent': '结束事件', + 'Create Gateway': '创建网关', + 'GateWay': '网关', + 'Create Intermediate/Boundary Event': '创建中间/边界事件', + 'Message Start Event': '消息开始事件', + 'Timer Start Event': '定时开始事件', + 'Conditional Start Event': '条件开始事件', + 'Signal Start Event': '信号开始事件', + 'Error Start Event': '错误开始事件', + 'Escalation Start Event': '升级开始事件', + 'Compensation Start Event': '补偿开始事件', + 'Message Start Event (non-interrupting)': '消息开始事件(非中断)', + 'Timer Start Event (non-interrupting)': '定时开始事件(非中断)', + 'Conditional Start Event (non-interrupting)': '条件开始事件(非中断)', + 'Signal Start Event (non-interrupting)': '信号开始事件(非中断)', + 'Escalation Start Event (non-interrupting)': '升级开始事件(非中断)', + 'Message Intermediate Catch Event': '消息中间捕获事件', + 'Message Intermediate Throw Event': '消息中间抛出事件', + 'Timer Intermediate Catch Event': '定时中间捕获事件', + 'Escalation Intermediate Throw Event': '升级中间抛出事件', + 'Conditional Intermediate Catch Event': '条件中间捕获事件', + 'Link Intermediate Catch Event': '链接中间捕获事件', + 'Link Intermediate Throw Event': '链接中间抛出事件', + 'Compensation Intermediate Throw Event': '补偿中间抛出事件', + 'Signal Intermediate Catch Event': '信号中间捕获事件', + 'Signal Intermediate Throw Event': '信号中间抛出事件', + 'Message End Event': '消息结束事件', + 'Escalation End Event': '定时结束事件', + 'Error End Event': '错误结束事件', + 'Cancel End Event': '取消结束事件', + 'Compensation End Event': '补偿结束事件', + 'Signal End Event': '信号结束事件', + 'Terminate End Event': '终止结束事件', + 'Message Boundary Event': '消息边界事件', + 'Message Boundary Event (non-interrupting)': '消息边界事件(非中断)', + 'Timer Boundary Event': '定时边界事件', + 'Timer Boundary Event (non-interrupting)': '定时边界事件(非中断)', + 'Escalation Boundary Event': '升级边界事件', + 'Escalation Boundary Event (non-interrupting)': '升级边界事件(非中断)', + 'Conditional Boundary Event': '条件边界事件', + 'Conditional Boundary Event (non-interrupting)': '条件边界事件(非中断)', + 'Error Boundary Event': '错误边界事件', + 'Cancel Boundary Event': '取消边界事件', + 'Signal Boundary Event': '信号边界事件', + 'Signal Boundary Event (non-interrupting)': '信号边界事件(非中断)', + 'Compensation Boundary Event': '补偿边界事件', + 'Exclusive Gateway': '互斥网关', + 'Parallel Gateway': '并行网关', + 'Inclusive Gateway': '相容网关', + 'Complex Gateway': '复杂网关', + 'Event based Gateway': '事件网关', + 'Transaction': '转运', + 'Sub Process': '子流程', + 'Event Sub Process': '事件子流程', + 'Collapsed Pool': '折叠池', + 'Expanded Pool': '展开池', + // Errors + 'no parent for {element} in {parent}': '在{parent}里,{element}没有父类', + 'no shape type specified': '没有指定的形状类型', + 'flow elements must be children of pools/participants': '流元素必须是池/参与者的子类', + 'out of bounds release': 'out of bounds release', + 'more than {count} child lanes': '子道大于{count} ', + 'element required': '元素不能为空', + 'diagram not part of bpmn:Definitions': '流程图不符合bpmn规范', + 'no diagram to display': '没有可展示的流程图', + 'no process or collaboration to display': '没有可展示的流程/协作', + 'element {element} referenced by {referenced}#{property} not yet drawn': '由{referenced}#{property}引用的{element}元素仍未绘制', + 'already rendered {element}': '{element} 已被渲染', + 'failed to import {element}': '导入{element}失败', + // 属性面板的参数 + 'Id': '编号', + 'Name': '名称', + 'General': '常规', + 'Details': '详情', + 'Message Name': '消息名称', + 'Message': '消息', + 'Initiator': '创建者', + 'Asynchronous Continuations': '持续异步', + 'Asynchronous Before': '异步前', + 'Asynchronous After': '异步后', + 'Job Configuration': '工作配置', + 'Exclusive': '排除', + 'Job Priority': '工作优先级', + 'Retry Time Cycle': '重试时间周期', + 'Documentation': '文档', + 'Element Documentation': '元素文档', + 'History Configuration': '历史配置', + 'History Time To Live': '历史的生存时间', + 'Forms': '表单', + 'Form Key': '表单key', + 'Form Fields': '表单字段', + 'Business Key': '业务key', + 'Form Field': '表单字段', + 'ID': '编号', + 'Type': '类型', + 'Label': '名称', + 'Default Value': '默认值', + 'Validation': '校验', + 'Add Constraint': '添加约束', + 'Config': '配置', + 'Properties': '属性', + 'Add Property': '添加属性', + 'Value': '值', + 'Add': '添加', + 'Values': '值', + 'Add Value': '添加值', + 'Listeners': '监听器', + 'Execution Listener': '执行监听', + 'Event Type': '事件类型', + 'Listener Type': '监听器类型', + 'Java Class': 'Java类', + 'Expression': '表达式', + 'Must provide a value': '必须提供一个值', + 'Delegate Expression': '代理表达式', + 'Script': '脚本', + 'Script Format': '脚本格式', + 'Script Type': '脚本类型', + 'Inline Script': '内联脚本', + 'External Script': '外部脚本', + 'Resource': '资源', + 'Field Injection': '字段注入', + 'Extensions': '扩展', + 'Input/Output': '输入/输出', + 'Input Parameters': '输入参数', + 'Output Parameters': '输出参数', + 'Parameters': '参数', + 'Output Parameter': '输出参数', + 'Timer Definition Type': '定时器定义类型', + 'Timer Definition': '定时器定义', + 'Date': '日期', + 'Duration': '持续', + 'Cycle': '循环', + 'Signal': '信号', + 'Signal Name': '信号名称', + 'Escalation': '升级', + 'Error': '错误', + 'Link Name': '链接名称', + 'Condition': '条件名称', + 'Variable Name': '变量名称', + 'Variable Event': '变量事件', + 'Specify more than one variable change event as a comma separated list.': '多个变量事件以逗号隔开', + 'Wait for Completion': '等待完成', + 'Activity Ref': '活动参考', + 'Version Tag': '版本标签', + 'Executable': '可执行文件', + 'External Task Configuration': '扩展任务配置', + 'Task Priority': '任务优先级', + 'External': '外部', + 'Connector': '连接器', + 'Must configure Connector': '必须配置连接器', + 'Connector Id': '连接器编号', + 'Implementation': '实现方式', + 'Field Injections': '字段注入', + 'Fields': '字段', + 'Result Variable': '结果变量', + 'Topic': '主题', + 'Configure Connector': '配置连接器', + 'Input Parameter': '输入参数', + 'Assignee': '代理人', + 'Candidate Users': '候选用户', + 'Candidate Groups': '候选组', + 'Due Date': '到期时间', + 'Follow Up Date': '跟踪日期', + 'Priority': '优先级', + 'The follow up date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00', + 'The due date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00', + 'Variables': '变量', + 'Candidate Starter Configuration': '候选开始配置', + 'Task Listener': '任务监听器', + 'Candidate Starter Groups': '候选开始组', + 'Candidate Starter Users': '候选开始用户', + 'Tasklist Configuration': '任务列表配置', + 'Startable': '启动', + 'Specify more than one group as a comma separated list.': '指定多个组,用逗号分隔', + 'Specify more than one user as a comma separated list.': '指定多个用户,用逗号分隔', + 'This maps to the process definition key.': '这会映射为流程定义的键', + 'CallActivity Type': '调用活动类型', + 'Condition Type': '条件类型', + 'Create UserTask': '创建用户任务', + 'Create CallActivity': '创建调用活动', + 'Called Element': '调用元素', + 'Create DataObjectReference': '创建数据对象引用', + 'Create DataStoreReference': '创建数据存储引用', + 'Multi Instance': '多实例', + 'Loop Cardinality': '实例数量', + 'Collection': '任务参与人列表', + 'Element Variable': '元素变量', + 'Completion Condition': '完成条件' +}; diff --git a/front-end/src/utils/clipboard.js b/front-end/src/utils/clipboard.js new file mode 100644 index 0000000..981c1a8 --- /dev/null +++ b/front-end/src/utils/clipboard.js @@ -0,0 +1,32 @@ +import Vue from 'vue'; +import Clipboard from 'clipboard'; + +function clipboardSuccess() { + Vue.prototype.$message({ + message: 'Copy successfully', + type: 'success', + duration: 1500 + }); +} + +function clipboardError() { + Vue.prototype.$message({ + message: 'Copy failed', + type: 'error' + }); +} + +export default function handleClipboard(text, event) { + const clipboard = new Clipboard(event.target, { + text: () => text + }); + clipboard.on('success', () => { + clipboardSuccess(); + clipboard.destroy(); + }); + clipboard.on('error', () => { + clipboardError(); + clipboard.destroy(); + }); + clipboard.onClick(event); +} diff --git a/front-end/src/utils/constants.js b/front-end/src/utils/constants.js new file mode 100644 index 0000000..3aa9440 --- /dev/null +++ b/front-end/src/utils/constants.js @@ -0,0 +1,1265 @@ +/* + * @Author: your name + * @Date: 2021-06-23 10:00:11 + * @LastEditTime: 2022-06-10 15:04:18 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\utils\constants.js + */ +// bjTable里的表格最大高度 的最小值 +export const BJ_TABLE_MINI_HEIGHT = 240; +// 售后的类型: 1-仅退款单 2- 退货退款 +export const PAGE_SIZES = [20, 30, 50, 100, 200, 500, 1000]; +// 售后的类型: 1-仅退款单 2- 退货退款 +export const AFTER_ORDER_TYPES = { + REFUND_ONLY: 1, + REFUND_GOODS: 2, +}; +// 商品中心-属性来源 +export const GOODS_ATTRIBUTE_SOURCES_JSON = { + SPU: 0, // 新增(分类属性 或 商品属性) + SYS: 1, // 系统默认 + CLASSIFY: 2, // 复制上级 分类属性 + ATTACHED: 3, // 附加属性 +}; +// 输入框 max 长度 +export const MAX_LENGTH = { + DEFAULT: 50, + CODE: 6, // 验证码 + NAME: 20, // 姓名、昵称 + REMARK: 200, // 备注、描述、说明等 + SHORT_NAME: 10, // 短短的名称 + PRIORITY: 999, // 优先级 + PRICE: 9, // 价格 +}; +// 商品类型 实物、虚拟 +export const GOODS_TYPES = { + REAL: 1, + VIRTUAL: 2, +}; +// 属性关联类型 +export const ATTRIBUTE_RELATION_TYPES = { + CLASSIFY: 1, + GOODS: 2, +}; +// :执行器注册到服务的方式,包括自动注册和手动录入 +export const EXECUTOR_TYPE_JSON = { + AUTO: 0, + MANUAL: 1, +}; +// 表单类型 +export const INPUT_BOX_TYPE_JSON = { + RADIO: 1, + CHECKBOX: 2, + INPUT: 3, + SELECT: 4, +}; +/** ***************** ARRAY 与 JSON 分界线 ****************** */ +const F = ar => { + const a = []; + new Map(ar).forEach((value, key) => { + a.push({ + label: value, + value: key, + }); + }); + return a; +}; +// 值集编码 +export const LOV_CODE = F([ + ['SCHL.CHANNEL_TYPE', ' 渠道类型'], + // ['SSRH.SOURCE_FROM_TYPE', '来源类型'],//索引列表 + ['STOCK.INPUT_STATUS', '入库状态'], + ['STOCK.DISTRIBUTE_PLAN_STATUS', '分仓计划状态'], + ['STOCK.ALLOT_STATUS', '调拨/移仓状态'], + ['STOCK.OUT_TYPE', '出库类型'], + ['STOCK.PROCESS_TYPE', '流程类型'], + ['LOGISTICS.SETTLEMENT_METHOD', '结算方式'], + ['STOCK.RECORD_STATUS', '单据状态类型'], + ['STOCK.RECORD_TYPE', '单据类型'], + ['STOCK.WAREHOUSE_TYPE', '仓库类型'], + ['PRICE.ITEM.TYPE', '租户价格项'], + ['SCHL.INVOICE_TYPE', ' 发票种类'], + ['SCHL.SHOP_TYPE', ' 店铺类型'], + ['HRPT.TEMPLATE_TYPE', '报表模板类型'], + ['HRPT.REQUEST_STATUS', '请求状态'], + ['HRPT.REPORT_TYPE', '报表类型'], + ['HSDR.REQUEST.INTERVAL_TYPE', '时间间隔类型'], + ['HSDR.PARAM_FORMAT', '参数格式'], + ['HSDR.PARAM_EDIT_TYPE', '编辑类型'], + ['HSDR.LOG.JOB_RESULT', '任务调度结果'], + ['HSDR.LOG.CLIENT_RESULT', '客户端执行结果'], + ['HSDR.JOB_STATUS', '任务状态'], + ['HSDR.GLUE_TYPE', '调度任务类型'], + ['HSDR.FAIL_STRATEGY', '失败策略'], + ['HSDR.EXECUTOR_STRATEGY', '执行器策略'], + ['HMSG.SMS_SERVER_TYPE', '短信服务类型'], + ['HMSG.NOTICE.STATUS', '公告状态'], + ['HMSG.NOTICE.RECERVER_TYPE', '公告发布对象类别'], + ['HMSG.NOTICE.NOTICE_TYPE.CH', '公告类型-子集'], + ['HMSG.NOTICE.NOTICE_CATEGORY', '公告类别'], + ['HMSG.MESSAGE_TYPE', '消息模板类型'], + ['HMSG.MESSAGE_SUBCATEGORY', '消息子分类'], + ['HMSG.MESSAGE_CATEGORY', '消息分类'], + ['HMSG.EMAIL_PROTOCOL', '邮件协议'], + ['HMSG.EMAIL.FILTER_STRATEGY', '邮箱账户筛选策略'], + ['HFLE.STORAGE_UNIT', '存储大小限制单位'], + ['HFLE.PREFIX_STRATEGY', '文件名前缀策略'], + ['HFLE.FILE_FORMAT', '文件格式'], + ['HFLE.CONTENT_TYPE', '文件分类'], + ['HFLE.CAPACITY.ACCESS_CONTROL', '存储配置目录权限'], + ['HPFM.LANGUAGE', '语言'], + ['HPFM.CODE_RULE.VARIABLE', '编码规则变量常量'], + ['HPFM.CODE_RULE.DATE_MASK', '编码规则日期掩码'], +]); +export const STATUS_ENABLED_NUM = F([ + [0, '禁用'], + [1, '启用'], +]); +export const STATUS_ENABLED_TRUE = F([ + [false, '禁用'], + [true, '启用'], +]); +export const STATUS_YES_NUM = F([ + [0, '否'], + [1, '是'], +]); +export const USE_FLAG_NUM = F([ + [0, '未使用'], + [1, '已使用'], +]); +export const STATUS_YES_TRUE = F([ + [false, '否'], + [true, '是'], +]); +export const STATUS_HAVE_TRUE = F([ + [false, '无'], + [true, '有'], +]); +export const STATUS_HAVE_NUMBER = F([ + [0, '无'], + [1, '有'], +]); +export const STATUS_INIT_LIST = F([ + [0, '未初始'], + [1, '已初始'], +]); +export const USER_TYPE_LIST = F([ + ['P', '平台用户'], + ['C', 'C端用户'], +]); +export const GENDER_LIST = F([ + [0, '男'], + [1, '女'], +]); +export const GOODS_TYPE_LIST = F([ + [1, '实物商品'], + [2, '虚拟商品'], +]); +// -商品中心-商品管理- 组合类型 (普通商品、套餐商品、子母件) +export const GOODS_COMBO_TYPES = { + ORDINARY: 0, + PACKAGE: 1, + SON: 3, +}; +export const GOODS_COMBO_TYPE_LIST = F([ + [0, '普通商品'], + [1, '套餐商品'], +]); +// -商品中心-商品管理- 审核状态 +export const GOODS_MANAGE_AUDIT_STATUS = F([ + [1, '待提交'], + [2, '待审核'], + [3, '审核通过'], + [4, '被驳回'], +]); +// 商品中心-SKU-完整状态 +export const GOODS_SKU_STATUS = F([ + [0, '草稿'], + [1, '被驳回'], + [2, '审核中'], + [3, '已生效'], + [4, '已生效-编辑中'], + [5, '已生效-被驳回'], +]); +// 商品中心-SKU-状态 对应为 审核状态 +export const GOODS_SKU_VIEW_AUDIT_STATUS = F([ + [0, '未提交审核'], + [1, '被驳回'], + [2, '审核中'], + [3, '已完成'], + [4, '审核中'], + [5, '被驳回'], +]); +/** * 审核列表 对应 GOODS_SKU_STATUS */ +// 默认: 1 2 3 4 5 +// 待审核: 2 4 +// 已生效 3 +// 被驳回 1 5 +export const GOODS_AUDIT_STATUS_LIST = F([ + [[2, 4], '待审核'], + [[3], '已完成'], + [[1, 5], '被驳回'], +]); +// 商品中心-SKU-状态(无草稿) +export const GOODS_SKU_STATUS_NORMAL = GOODS_SKU_STATUS.slice(1); +// 价格项,固定值; 'JG004', '内部分摊价' +export const GOODS_PRICE_ITEMS = F([ + ['costPrice', '成本价'], + ['salesPrice', '销售价'], + ['activityPrice', '活动价'], + ['marketPrice', '市场价'], + ['distributionPrice', '分销价'], + ['wholesalePrice', '批发价'], + ['clearingPrice', '结算价'], +]); +export const ATTRIBUTE_RELATION_TYPE_LIST = F([ + [1, '分类'], + [2, '商品'], +]); +// 状态: +// 事务实例的运行状态。 共有进行中、完成、失败、没有消费者四种状态。 +// 事务实例时任务的运行状态。共有进行中、完成、失败、队列中、等待被拉取五种种状态。 +export const INSTANCE_RESULT_TYPE_LIST = F([ + ['RUNNING', '进行中'], + ['FAILED', '失 败'], + ['COMPLETED', '完 成'], + ['NON_CONSUMER', '无消费者'], + ['WAIT_TO_BE_PULLED', '等待被拉取'], +]); +// 存储类型 +export const FILE_STORAGE_TYPE_LIST = F([ + [1, '阿里'], + [2, '华为'], + [3, 'Minio'], + [4, '腾讯'], + [5, '七牛'], + [6, '本地'], + [7, '京东云'], + [8, 'AWS'], + [9, '百度云'], +]); +// :执行器注册到服务的方式,包括自动注册和手动录入 +export const EXECUTOR_TYPE_LIST = F([ + [0, '自动注册'], + [1, '手动录入'], +]); +export const INPUT_BOX_TYPE_LIST = F([ + [1, '单选框'], + [2, '复选框'], + [3, '文本框'], + [4, '下拉框'], +]); +export const INDEXES_TYPE_LIST = F([ + [0, '失效'], + [1, '有效'], +]); +export const FIELD_TYPE_LIST = F([ + [0, '正序'], + [1, '倒序'], +]); +export const ORDER_CAM_ON_HIERARCHY = F([ + ['channel', '渠道仓'], + ['virtual', '虚仓'], +]); +export const RADIX_POINT_COMPUTED_MODE_LIST = F([ + ['trunc', '向下舍取整'], + ['plusOne', '向上舍取整'], +]); +export const SHOP_TYPE_LIST = F([ + ['OnlineShop', '网店'], + ['PhysicalShop', '门店'], +]); +export const CODE_RULE_FIELD_TYPE_LIST = F([ + ['SEQUENCE', '序列'], + ['CONSTANT', '常量'], + ['DATE', '日期'], + ['VARIABLE', '变量'], + ['UUID', 'UUID'], +]); +export const UUID_LEN_LIST = F([ + [8, '8位'], + [16, '16位'], + [22, '22位'], + [32, '32位'], +]); +/** 取自 STOCK.WAREHOUSE_TYPE 的子集*/ +export const STOCK_WAREHOUSE_TYPE_SON_1_LIST = F([ + ['interline-virtual', '中转虚仓'], + ['ratio-virtual', '比例虚仓'], + ['qty-virtual', '数量虚仓'], +]); +/** 取自 STOCK.WAREHOUSE_TYPE 的子集*/ +export const STOCK_WAREHOUSE_TYPE_SON_2_LIST = F([ + ['interline-virtual', '中转虚仓'], + ['ratio-virtual', '比例虚仓'], + ['qty-virtual', '数量虚仓'], + ['default-virtual', '默认虚仓'], + ['real', '实仓'], + ['logic', '逻辑仓'], +]); +/** 取自 STOCK.WAREHOUSE_TYPE 的子集*/ +export const STOCK_WAREHOUSE_TYPE_SON_3_LIST = F([ + ['qty-virtual', '数量虚仓'], + ['interline-virtual', '中转虚仓'], +]); +/** 取自 STOCK.WAREHOUSE_TYPE 的子集*/ +export const STOCK_WAREHOUSE_TYPE_SON_4_LIST = F([ + ['real', '实仓'], + ['ratio-virtual', '比例虚仓'], +]); +export const REPLENISHMENT_ORDER_PRIORITY = F([ + ['order', '订单商品缺货优先'], + ['shop', '店铺商品缺货优先'], +]); +export const RELEASE_STATUS_TRUE = F([ + [false, '未发布'], + [true, '已发布'], +]); +export const CONFIGURE_STATUS_TRUE = F([ + [false, '未设置'], + [true, '已设置'], +]); +export const TEMPLATE_DATA_TYPE_LIST = F([ + ['VARCHAR', 'VARCHAR'], + ['BIGINT', 'BIGINT'], + ['DECIMAL', 'DECIMAL'], +]); +export const STOCK_ADJUST_STATUS = F([ + [0, '未调整'], + [1, '已调整'], +]); +export const STOCK_ADJUST_TYPE_LIST = F([ + [1, '增加'], + [2, '减少'], +]); +/** 取自 STOCK.RECORD_STATUS 的子集*/ +export const STOCK_LOCK_STATUS_LIST = F([ + ['wait', '待审核'], + ['success', '审核成功'], + ['fail', '审核失败'], + ['abandon', '已作废'], + ['close', '停用'], +]); +/** 取自 STOCK.RECORD_STATUS 的子集*/ +export const STOCK_TRANSFER_VERIFY_TYPE_LIST = F([ + ['wait', '待审核'], + ['success', '审核成功'], + ['fail', '审核失败'], +]); +/** 取自 STOCK.RECORD_STATUS 的子集*/ +export const STOCK_DISTRIBUTION_PLAN_STATUS_LIST = F([ + ['start', '开启'], + ['stop', '暂停'], + ['complete', '完成'], + ['endTime', '到时截止'], +]); +export const VIRTUAL_GOODS_ROUTE_LIST = F([ + ['BusinessGoodsVirtualSkuGroupList', '组合商品'], + ['BusinessGoodsVirtualSpuSonList', '子母件商品'], + ['BusinessGoodsVirtualInstallServiceList', '安装服务'], +]); +export const STOCK_DELIVERY_ROUTE_LIST = F([ + ['BusinessStockDeliveryInformIndex', '出库通知单'], + ['BusinessStockDeliveryResultIndex', '出库结果单'], +]); +export const STOCK_TRANSFER_ROUTE_LIST = F([ + ['BusinessStockTransferLogicIndex', '逻辑仓调拨'], + ['BusinessStockTransferVirtualIndex', '虚仓移仓'], +]); +export const STOCK_VERIFY_ROUTE_LIST = F([ + ['BusinessStockVerifyLogicIndex', '逻辑仓调拨'], + ['BusinessStockVerifyVirtualIndex', '虚仓移仓'], + ['BusinessStockVerifyLockIndex', '库存预留'], +]); +export const STOCK_DISTRIBUTION_ROUTE_LIST = F([ + ['BusinessStockDistributionQtyIndex', '仓位数量分配'], + ['BusinessStockDistributionRatioIndex', '仓位比例分配'], + ['BusinessStockDistributionPlanIndex', '分仓计划'], +]); +export const LOGISTICS_COMPANY_ROUTE_LIST = F([ + ['BusinessLogisticsCompanyListIndex', '物流商列表'], + ['BusinessLogisticsCompanyBusinessIndex', '物流业务管理'], + ['BusinessLogisticsCompanyRelationIndex', '运费关联设置'], + ['BusinessLogisticsCompanyFreightIndex', '运费模板'], + ['BusinessLogisticsCompanyMapping', '物流映射'], +]); +export const LOGISTICS_ORDER_ROUTE_LIST = F([ + ['BusinessLogisticsOrderSale', '销售单物流'], + ['BusinessLogisticsOrderAfter', '售后单物流'], +]); +export const SETTING_ORGANIZATION_ROUTE_LIST = F([ + ['SettingUserOrganizationGroup', '集团设置'], + ['SettingUserOrganizationCompany', '下属公司'], +]); +export const LOGISTICS_ABNORMAL_ROUTE_LIST = F([ + ['BusinessLogisticsAbnormalDelivery', '派送异常'], + ['BusinessLogisticsAbnormalDataAbort', '物流数据异常'], +]); +export const SALES_AFTER_INTERNAL_ROUTE_LIST = F([ + ['BusinessAfterInternalRefundIndex', '仅退款'], + ['BusinessAfterInternalReturnIndex', '退货退款'], + // ['BusinessAfterInternalExchangeIndex', '换货'], +]); +export const SALES_AFTER_THIRD_ROUTE_LIST = F([ + ['BusinessAfterThirdRefundIndex', '仅退款'], + ['BusinessAfterThirdReturnIndex', '退货退款'], + ['BusinessAfterThirdExchange', '换货'], +]); +export const FINANCE_PLATFORM_ROUTE_LIST = F([ + ['BusinessFinancePlatformTM', '天猫账单'], + ['BusinessFinancePlatformJD', '京东账单'], + ['BusinessFinancePlatformPDD', '拼多多账单'], + ['BusinessFinancePlatformDY', '抖音账单'], + ['BusinessFinancePlatformWPH', '唯品会账单'], + ['BusinessFinancePlatformSNYG', '苏宁账单'], + ['BusinessFinancePlatformXMYP', '小米账单'], + ['BusinessFinancePlatformWYYX', '网易账单'], +]); +/** 物流商状态值集 */ +export const LOGISTICS_CLAIM_STATUS_LIST = F([ + [0, '待审核'], + [1, '待核销'], + [2, '审核通过'], // 已审核 + [3, '审核拒绝'], // 已驳回 + [4, '已取消'], +]); +/** 物流商状态值集 */ +export const LOGISTICS_CLAIM_CLAIMTYPE_LIST = F([ + [1, '破损'], + [2, '丢件'], +]); +/** 物流商状态值集 */ +export const LOGISTICS_CLAIM_STANDARD_LIST = F([ + [0, '普通标准售价'], + [1, '内部分摊价'], + [2, '出厂价'], +]); +export const EXPRESS_STATUS_LIST = F([ + ['0', '在途'], + ['1', '揽收'], + ['2', '疑难'], + ['3', '签收'], + ['4', '退签'], + ['5', '派件'], + ['6', '退回'], + ['7', '转单'], + ['10', '待清关'], + ['11', '清关中'], + ['12', '已清关'], + ['13', '清关异常'], + ['14', '拒签'], +]); +export const ABNORMAL_REASON_LIST = F([ + [1, '运费模板不匹配'], + [2, '物流不匹配'], + [3, '业务不匹配'], +]); +export const ABNORMAL_STATUS_LIST = F([ + [0, '未处理'], + [1, '已处理'], +]); +/** 运费模板 */ +export const LOGISTICS_COMPANY_FREGHHT_ADD_JFFS = F([ + [1, '按重量计费'], + [2, '固定价格'], +]); +/** 运费模板 -> 理赔标准 */ +export const LOGISTICS_COMPANY_COMPENSATE_LIST = F([['JG004', '内部分摊价']]); +export const SETTING_STOCK_PROCESS_TYPES = F([ + ['订单出库', '订单出库'], + ['下架出库', '下架出库'], + ['采购入库', '采购入库'], + ['退货入库', '退货入库'], +]); +export const SETTING_STOCK_PROCESS_TYPE_JSON = { + 订单出库: 'out-stock-process', + 下架出库: 'out-stock-process', + 采购入库: 'put-stock-process', + 退货入库: 'put-stock-process', +}; +export const ORDER_BACK_RES_LIST = F([ + ['0', '未回写'], + ['1', '回写成功'], + ['2', '回写失败'], +]); +export const THIRD_ORDER_RECEIVE_STATUS = F([ + ['0', '未收货'], + ['1', '部分收货'], + ['2', '已收货'], +]); +/** 商品行的寻源状态 */ +export const ORDER_SKU_SOURCE_STATUS_LIST = F([ +]); +/** 补货类型 */ +export const ORDER_STOCKOUT_TYPE_LIST = F([ + [0, '订单补货'], + [1, '店铺补货'], +]); +/** 退款单来源 */ +export const AFTER_REFUND_SOURCE_STATUS = F([ + ['0', '手工单'], + ['1', '普通转单'], + ['2', '复制单'], +]); +/** + 13-仅退款 1-一审 1-待审核 31310 + 2-审核通过 31311 + 3-审核拒绝 31312 + 2-二审 1-待审核 31320 + 2-审核通过 31321 + 3-审核拒绝 31322 +14-退货退款 1-一审 1-待审核 31410 + 2-审核通过 31411 + 3-审核拒绝 31412 + 2-二审 1-待审核 31420 + 2-审核通过 31421 + 3-审核拒绝 31422 + */ +export const AFTER_REFUND_AUDIT_TABS_STATUS = F([ + ['31310,31320,31312,31322', '全部'], + ['31310', '待一审'], + ['31320', '待二审'], + ['31312,31322', '审核拒绝'], +]); +export const AFTER_RETURN_AUDIT_TABS_STATUS = F([ + ['31410,31420,31412,31422', '全部'], + ['31410', '待一审'], + ['31420', '待二审'], + ['31412,31422', '审核拒绝'], +]); +// 仅退款的审核状态 endorseStatus +export const AFTER_REFUND_ENDORSE_STATUS = F([ + ['31310', '待一审'], + ['31311', '一审通过'], + ['31312', '一审拒绝'], + ['31320', '待二审'], + ['31321', '二审通过'], + ['31322', '二审拒绝'], +]); +// 退货退款的审核状态 endorseStatus +export const AFTER_RETURN_ENDORSE_STATUS = F([ + ['31410', '待一审'], + ['31411', '一审通过'], + ['31412', '一审拒绝'], + ['31420', '待二审'], + ['31421', '二审通过'], + ['31422', '二审拒绝'], +]); +export const AFTER_REFUND_AUDIT_PERMISSION_RULES = [ + // 全部 + ['BusinessAfterAuditRefund_FirstAudit', 'BusinessAfterAuditRefund_SecondAudit'], + // 待一审 + ['BusinessAfterAuditRefund_FirstAudit'], + // 待二审 + ['BusinessAfterAuditRefund_SecondAudit'], + // 审核拒绝 + ['BusinessOrderAuditIndex_ItIsAwayNot'], +]; +export const AFTER_RETURN_AUDIT_PERMISSION_RULES = [ + // 全部 + ['BusinessAfterAuditReturn_FirstAudit', 'BusinessAfterAuditReturn_SecondAudit'], + // 待一审 + ['BusinessAfterAuditReturn_FirstAudit'], + // 待二审 + ['BusinessAfterAuditReturn_SecondAudit'], + // 审核拒绝 + ['BusinessOrderAuditIndex_ItIsAwayNot'], +]; +/** 内部仅退款状态 */ +export const AFTER_REFUND_TRADE_STATUS = F([ + ['0', '待审核'], + ['3', '待退款'], + ['4', '已完成'], + ['5', '已拒绝'], + ['6', '已取消'], + ['7', '转单异常'], +]); +export const AFTER_REFUND_TRADE_STATUS_FOR_VIEW = AFTER_REFUND_TRADE_STATUS.slice(0, 3); +/** 内部退货退款状态 */ +export const AFTER_RETURN_TRADE_STATUS = F([ + ['0', '待审核'], + ['1', '待买家退货'], + ['2', '待仓库验收'], + ['3', '待退款'], + ['4', '已完成'], + ['5', '已拒绝'], + ['6', '已取消'], + ['7', '转单异常'], +]); +export const AFTER_RETURN_TRADE_STATUS_FOR_VIEW = AFTER_RETURN_TRADE_STATUS.slice(0, 5); +export const AFTER_EXCHANGE_TRADE_STATUS = F([ + ['10', '待审核'], + ['11', '待买家退货'], + ['12', '待仓库验收'], + ['13', '待仓库发货'], + ['14', '待买家收货'], + ['15', '已完成'], +]); +/** 业务中心/销售管理/业务预警-异常订单管理 */ +export const ORDER_ABNORMAL_ROUTE_LIST = F([ + ['BusinessOrderAbnormalWarning', '业务预警'], + ['BusinessOrderAbnormalSyncAbnormal', '数据异常'], +]); +/** 预警类型 异常类型 */ +export const ORDER_ABNORMAL_TYPE_LIST = F([ + [0, '审核超时'], + [1, '缺货超时'], + [2, '发货超时'], + [3, '订单更新超时'], +]); +/** 退货退款状态 */ +export const AFTER_THIRD_RETURN_STATUS_LIST = F([ + [0, '待审核'], + [1, '待买家退货'], + [2, '待仓库验收'], + [3, '待退款'], + [4, '退款完成'], + [5, '买家取消'], + [6, '关闭退货退款'], + [7, '拒绝退货'], +]); +/** 换货状态 */ +export const AFTER_THIRD_EXCHANGE_STATUS_LIST = F([ + [0, '待审核'], + [1, '待买家退货'], + [2, '待发货'], + [3, '待买家收货'], + [4, '完成'], + [5, '买家取消'], + [6, '关闭换货'], + [7, '拒绝换货'], +]); +/** 三方售后单/ 结算方式 */ +export const AFTER_INTERNAL_RETURN_PAY_LIST = F([[1, '网店平台退款']]); +/** 三方售后单/ 转单状态 */ +export const AFTER_THIRD_REFUND_TRANSFER_STATUS = F([ + [0, '正常'], + [1, '异常'], +]); +/** 三方售后单/ 仓库收货状态 */ +// export const AFTER_INTERNAL_RETURN_WAREHOUSE_RECEIVING_STATUS = F([[1, '未收货']]); +/** 待审核售后单 */ +export const AFTER_AUDIT_ROUTE_LIST = F([ + ['BusinessAfterAuditRefundIndex', '仅退款'], + ['BusinessAfterAuditReturnIndex', '退货退款'], +]); +/** 待审核售后单-退货退款/ 售后类型 */ +export const AFTER_AUDIT_RETURN_TYPE_LIST = F([ + [0, '退货'], + [1, '换货'], +]); +/** 物流策略-设置订单金额 */ +/** 待审核售后单 */ +export const STRATEGY_AUTO_REPLENISH_ROUTE_LIST = F([ + ['BusinessStrategyAutoReplenishOrder', '订单商品缺货'], + ['BusinessStrategyAutoReplenishOnlineStore', '网店商品缺货'], +]); +/** 异常库存管理 router */ +export const STOCK_ABNORMAL_ROUTE_LIST = F([ + ['BusinessStockAbnormalOrder', '订单缺货'], + ['BusinessStockAbnormalWarehouse', '仓库缺货'], +]); +/** 支付状态 */ +export const STOCK_ABNORMAL_ORDER_STATUS_LIST = F([ + [0, '待处理'], + [1, '已采购'], + [2, '已调拨'], + [3, '已移仓'], +]); +/* ************************************** 寻源策略部分 start ****************************************** */ +/** 异常库存管理 router */ +export const STRATEGY_SOURCE_ROUTE_LIST = F([ +]); +/* ************************************** 寻源策略部分 end ****************************************** */ +/* ************************************** 内部销售单 start ****************************************** */ +/** 订单 —— 商品 是否赠品 */ +export const SKU_GIFT_TYPE_LIST = F([ + ['0', '否'], + ['1', '赠品'], + ['2', '随品'], +]); +export const SKU_GIFT_TYPE_LIST_FOR_CREATE = F([ + ['0', '否'], + ['1', '是'], +]); +/** 订单 —— 交易类型 tradeType */ +export const ORDER_TRADE_TYPE_LIST = F([['101', '销售单']]); +/** 订单 —— 业务类型 businessType */ +export const ORDER_BUSINESS_TYPE_LIST = F([ + ['common', '普通订单'], + ['o2o', 'O2O订单'], +]); +export const ORDER_BUSINESS_TYPES = { + O2O: 'o2o', + COMMON: 'common', +}; +/** 订单 —— 提货方式 takingDeliveryWay */ +export const ORDER_TAKING_DELIVERY_TYPE_LIST = F([ + ['1', '门店自提'], + ['2', '物流配送'], +]); +/** 订单 —— 创建类型 / 订单来源 actionType */ +export const ORDER_ACTION_TYPE_LIST = F([ + ['101', '普通转单'], + ['201', '手工单'], + ['202', '复制单'], +]); +/** 内部销售单 --> 订单聚合状态 */ +export const ORDER_INTERNAL_ORDER_STATUS_LIST = F([ + ['0', '未完成'], + ['1', '已完成'], + ['2', '已关闭'], + ['3', '异常'], +]); +/** 内部销售O2O订单 --> O2O 订单聚合状态 */ +export const ORDER_INTERNAL_O2O_STATUS_LIST = F([ + ['11', '待审核'], + ['22', '待确认收货'], + ['33', '已完成'], +]); +/** 三方销售单 --> 订单聚合状态 取自内部单,文字修改 */ +export const ORDER_THIRD_ORDER_STATUS_LIST = F([ + ['0', '待发货'], + ['1', '已完成'], + ['2', '已关闭'], + ['3', '异常'], +]); +// 内部销售单 --> 寻源前待审核状态 +export const ORDER_INTERNAL_ORDER_AUDIT_TABS_BEFORE_SOURCE = F([ +]); +// 内部销售单 --> 发货前待审核状态 +export const ORDER_INTERNAL_ORDER_AUDIT_TABS_BEFORE_PREEMPT = F([ + ['30411,30421,30413,30423', '全部'], + ['30411', '待一审'], + ['30421', '待二审'], + ['30413,30423', '审核拒绝'], +]); +// 内部普通销售单 --> 审核权限; 与 路由表 对应 +export const ORDER_INTERNAL_ORDER_AUDIT_PERMISSION_RULES = [ + // 发货前 + [ + // 全部 + ['BusinessOrderAuditIndex_PreemptFirst', 'BusinessOrderAuditIndex_PreemptSecond'], + // 待一审 + ['BusinessOrderAuditIndex_PreemptFirst'], + // 待二审 + ['BusinessOrderAuditIndex_PreemptSecond'], + // 审核拒绝 + ['BusinessOrderAuditIndex_ItIsAwayNot'], + ], +]; +// 内部o2o销售单 --> 审核权限; 与 路由表 对应 +export const ORDER_INTERNAL_O2O_AUDIT_PERMISSION_RULES = [ + [ + // 全部 + ['BusinessO2oAuditIndex_First', 'BusinessO2oAuditIndex_Second'], + // 待一审 + ['BusinessO2oAuditIndex_First'], + // 待二审 + ['BusinessO2oAuditIndex_Second'], + // 审核拒绝 + ['BusinessOrderAuditIndex_ItIsAwayNot'], + ], +]; +/** 订单 —— 预占状态 */ +export const ORDER_INTERNAL_PREEMPT_STATUS_LIST = F([ + ['30101', '全部待预占'], + ['30102', '全部预占成功'], + ['30103', '全部预占失败'], + ['30104', '部分预占'], + ['31010', '取消预占'], // 订单取消时,预占也同时取消,状态码与订单取消状态相同 +]); +export const ORDER_INTERNAL_SKU_PREEMPT_STATUS_LIST = F([ + ['20101', '全部待预占'], + ['20102', '全部预占成功'], + ['20103', '全部预占失败'], + ['20104', '部分预占'], + ['21010', '取消预占'], // 订单取消时,预占也同时取消,状态码与订单取消状态相同 +]); +export const ORDER_INTERNAL_LINE_PREEMPT_STATUS_LIST = F([ + ['10101', '待预占'], + ['10102', '预占成功'], + ['10103', '预占失败'], + ['10122', '解占成功'], + ['11010', '取消预占'], // 订单取消时,预占也同时取消,状态码与订单取消状态相同 +]); +// 预占管理-预占状态 +export const ORDER_ADVANCE_PREEMPT_STATUS_LIST = F([ + [0, '全部待预占'], + [1, '全部预占成功'], + [3, '全部预占失败'], + [2, '部分预占'], + [4, '取消预占'], +]); +/** 订单 —— 预占回写状态 */ +export const ORDER_INTERNAL_PREEMPT_BACK_STATUS_LIST = F([ + ['30111', '全部待回写'], + ['30112', '全部回写成功'], + ['30113', '全部回写失败'], + ['30114', '部分回写'], +]); +export const ORDER_INTERNAL_SKU_PREEMPT_BACK_STATUS_LIST = F([ + ['20111', '全部待回写'], + ['20112', '全部回写成功'], + ['20113', '全部回写失败'], + ['20114', '部分回写'], +]); +export const ORDER_INTERNAL_LINE_PREEMPT_BACK_STATUS_LIST = F([ + ['10111', '待回写'], + ['10112', '回写成功'], + ['10113', '回写失败'], +]); +/** 订单 —— 寻源状态 */ +export const ORDER_INTERNAL_SOURCE_STATUS_LIST = F([ +]); +export const ORDER_INTERNAL_SKU_SOURCE_STATUS_LIST = F([ +]); +export const ORDER_INTERNAL_LINE_SOURCE_STATUS_LIST = F([ +]); +/** 订单 —— 发货状态 */ +export const ORDER_INTERNAL_DELIVER_STATUS_LIST = F([ + ['30510', '初始'], + ['30511', '全部待发货'], + ['30512', '全部发货成功'], + ['30513', '全部发货失败'], + ['30514', '部分发货'], +]); +export const ORDER_INTERNAL_SKU_DELIVER_STATUS_LIST = F([ + ['20510', '初始'], + ['20511', '全部待发货'], + ['20512', '全部发货成功'], + ['20513', '全部发货失败'], + ['20514', '部分发货'], +]); +export const ORDER_INTERNAL_LINE_DELIVER_STATUS_LIST = F([ + ['10510', '初始'], + ['10511', '待发货'], + ['10512', '发货成功'], + ['10513', '发货失败'], +]); +/** 订单 —— 收货状态 */ +export const ORDER_INTERNAL_RECEIVING_STATUS_LIST = F([ + ['30520', '初始'], + ['30521', '待收货'], + ['30522', '全部已收货'], + ['30523', '部分收货'], +]); +export const ORDER_INTERNAL_SKU_RECEIVING_STATUS_LIST = F([ + ['20520', '初始'], + ['20521', '待收货'], + ['20522', '全部已收货'], + ['20523', '部分收货'], +]); +export const ORDER_INTERNAL_LINE_RECEIVING_STATUS_LIST = F([ + ['10520', '初始'], + ['10521', '待收货'], + ['10522', '已收货'], +]); +/** 订单 —— 库存回写状态 */ +export const ORDER_INTERNAL_STOCK_BACK_STATUS_LIST = F([ + ['30531', '全部待回写'], + ['30532', '全部回写成功'], + ['30533', '全部回写失败'], + ['30534', '部分回写'], +]); +export const ORDER_INTERNAL_SKU_STOCK_BACK_STATUS_LIST = F([ + ['20531', '全部待回写'], + ['20532', '全部回写成功'], + ['20533', '全部回写失败'], + ['20534', '部分回写'], +]); +export const ORDER_INTERNAL_LINE_STOCK_BACK_STATUS_LIST = F([ + ['10531', '待回写'], + ['10532', '回写成功'], + ['10533', '回写失败'], +]); +/** 订单 —— 不再履约 */ +export const ORDER_INTERNAL_OVER_STATUS_LIST = F([ + ['31000', '正常履约完成'], + ['31010', '订单取消'], +]); +/** 订单 —— 挂起状态 */ +export const ORDER_INTERNAL_HAND_UP_STATUS_LIST = F([ + ['31200', '未挂起'], + ['31201', '全部挂起成功'], + ['31202', '全部挂起失败'], + ['31203', '部分挂起'], +]); +export const ORDER_INTERNAL_SKU_HAND_UP_STATUS_LIST = F([ + ['21200', '未挂起'], + ['21201', '全部挂起成功'], + ['21202', '全部挂起失败'], + ['21203', '部分挂起'], +]); +export const ORDER_INTERNAL_LINE_HAND_UP_STATUS_LIST = F([ + ['11210', ''], + ['11200', '未挂起'], + ['11211', '系统挂起成功'], + ['11212', '系统挂起失败'], + ['11213', '系统解挂成功'], + ['11214', '系统解挂失败'], + ['11221', '人工挂起成功'], + ['11222', '人工挂起失败'], + ['11223', '人工解挂成功'], + ['11224', '人工解挂失败'], +]); +/** 退款状态 */ +export const ORDER_INTERNAL_REFUND_STATUS_LIST = F([ + [0, '未退款'], + [1, '部分退款'], + [2, '全部退款'], +]); +/** 审核状态 */ +export const ORDER_INTERNAL_AUDIT_STATUS_LIST = F([ + [30211, '待一审'], + [30221, '待二审'], + [30212, '一审通过'], + [30222, '二审通过'], + [30213, '一审不通过'], + [30223, '二审不通过'], + [30411, '待一审'], + [30421, '待二审'], + [30412, '一审通过'], + [30422, '二审通过'], + [30413, '一审不通过'], + [30423, '二审不通过'], +]); +/** 支付方式 */ +export const ORDER_INTERNAL_PAYMENT_LIST = F([ + ['alipay', '支付宝'], + ['tenpay', '财付通'], + ['chinabank', '网银在线'], + ['cod', '货到付款'], + ['bank', '银行汇款/转账'], + ['other', '其他'], +]); +/** 支付状态 */ +export const ORDER_INTERNAL_PAYMENT_STATUS_LIST = F([ + [0, '未支付'], + [1, '已支付'], +]); +/* ************************************** 内部销售单 end ****************************************** */ +/* ************************************** 内部售后单 start ****************************************** */ +/** 退款单类型 */ +export const INTERNAL_AFTER_REFUND_ORDER_TYPE_LIST = F([[0, '普通退单']]); +/** 退款类型 */ +export const INTERNAL_AFTER_REFUND_TYPE_LIST = F([[1, '未发货仅退款']]); +export const INTERNAL_AFTER_RETURN_TYPE_LIST = F([[1, '退货退款']]); +/** 退款阶段 */ +export const INTERNAL_AFTER_STAGE_STATUS = F([ + [0, '售中'], + [1, '售后'], +]); +/** 退货原因 */ +export const INTERNAL_AFTER_REASON_STATUS = F([[0, '7天无理由退货']]); +/* ************************************** 内部售后单 end ****************************************** */ +/* ************************************** 三方销售单 start ****************************************** */ +/** 支付状态 */ +export const ORDER_THIRD_PAYMENT_STATUS_LIST = F([[1, '已支付']]); +/** 平台收货状态 */ +export const ORDER_THIRD_RECEIVING_STATUS_LIST = F([ + [0, '未收货'], + [1, '已收货'], +]); +/* ************************************** 三方销售单 end ****************************************** */ +/* ************************************** 出库通知单 start ****************************************** */ +export const ORDER_STOCK_OUT_TYPE_LIST = F([ + [0, '待通知WMS'], + [1, '待出库'], + [2, '通知WMS失败'], + [3, '全部出库'], + [4, '部分出库'], + [5, '取消出库'], +]); +/* ************************************** 出库通知单 end ****************************************** */ +/* ************************************** 出库结果单 start ****************************************** */ +export const ORDER_STOCK_RESULT_STATUS_LIST = F([[0, '全部出库']]); +/* ************************************** 出库结果单 end ****************************************** */ +/* ************************************** 销售审核策略 start ****************************************** */ +/** 销售审核策略 router */ +export const STRATEGY_MARKETINGAUDIT_ROUTE_LIST = F([ + ['SettingOrderAuditStrategy', '订单审核策略'], + ['SettingOrderAuditGoods', '订单商品行审核策略'], +]); +/* ************************************** 销售审核策略 end ****************************************** */ +/* ************************************** 财务管理 对账 start ****************************************** */ +export const FINANCE_ORIGINAL_ROUTE_LIST = F([ + ['BusinessFinancePlatformOriginalTmallIndex', '天猫账单'], + ['BusinessFinancePlatformOriginalJdcomIndex', '京东账单'], +]); +// 解析状态 +export const FINANCE_PLATFORM_PARSING_STATUS = F([ + [0, '解析成功'], + [1, '无需解析'], +]); +export const FINANCE_PLATFORM_PARSING_STATUS1 = F([ + [0, '解析失败'], + [1, '解析成功'], + [2, '无需解析'], +]); +// 对账状态 +export const FINANCE_PLATFORM_CHECKING_STATUS = F([ + [0, '已对账'], + [1, '未对账'], + [2, '无需对账'], +]); +export const FINANCE_PLATFORM_CHECKING_STATUS1 = F([ + [1, '已对账'], + [0, '未对账'], +]); +// 业务类型 +export const FINANCE_PLATFORM_BUSINESS_TYPES = F([ + [0, '货款'], + [1, '佣金'], +]); +// 流水类型 +export const FINANCE_PLATFORM_FLOW_TYPES = F([ + ['0', '正流水'], + ['1', '负流水'], +]); +// 业务中心-财务管理-对账管理-已对账列表 状态 +export const FINANCE_CHECKING_CHECKED_STATUS = F([ + [true, '已对账'], + [false, '金额异常'], +]); +// 财务管理-对账管理-物流对账 物流状态 +export const FINANCE_CHECKING_LOGISTIC_SIGN_STATUS = F([ + [0, '已签收'], + [1, '已退回'], + [2, '拒签'], +]); +// 财务管理-对账管理-物流对账 结算状态 +export const FINANCE_CHECKING_LOGISTIC_SETTLE_STATUS = F([ + [0, '已结算'], + [1, '未结算'], +]); +// 财务管理-对账管理-物流对账 tab +export const FINANCE_CHECKING_LOGISTIC_COST_DETAIL_TYPES = F([ + [null, '所有费用明细'], + ['1', '匹配费用明细'], + ['2', '未匹配费用明细'], +]); +// 财务管理-对账管理-物流对账 匹配状态 +export const FINANCE_CHECKING_LOGISTIC_MATCHING_TYPES = F([ + [0, '匹配'], + [1, '匹配(金额差异)'], + [2, '不匹配'], +]); +// 财务管理-对账管理-物流对账-内部物流单列表 费用确认状态 +export const FINANCE_CHECKING_LOGISTIC_COST_CONFIRM_STATUS = F([ + [0, '已确认'], + [1, '未确认'], + [2, '金额差异'], +]); +/* ************************************** 财务管理 对账 end ****************************************** */ +/* ************************************** 财务管理 平台账单解析策略设置 Start ****************************************** */ +// 账单类型 +export const FINANCE_PARSESTRATEGY_BULL_TYPES = F([ + [0, '销售收入'], + [1, '退款支出'], +]); +// 金额取值 +export const FINANCE_PARSESTRATEGY_PRICE_VALUE_TYPES = F([ + [0, '取固定字段'], + [1, '按公式计算'], +]); +/* ************************************** 财务管理 平台账单解析策略设置 end ****************************************** */ +/* ************************************** 财务管理 结算 Start ****************************************** */ +// 财务管理-结算管理-结算列表 订单类型 +export const FINANCE_SETTLEMENT_ORDER_TYPES = F([ + [0, '销售单'], + [1, '仅退款单'], + [2, '退货退款单'], + [3, '换货单'], +]); +// 财务管理-结算管理-结算列表 售后单类型 +export const FINANCE_SETTLEMENT_AFTER_TYPES = F([ + [1, '仅退款单'], + [2, '退货退款单'], + [3, '换货单'], +]); +// 财务管理-结算管理-结算列表 状态 +export const FINANCE_SETTLEMENT_UNSETTLED_STATUS = F([ + [0, '已确认'], + [1, '待确认'], +]); +// 财务管理-结算管理-结算列表 生成方式 +export const FINANCE_SETTLEMENT_UNSETTLED_CREATE_TYPES = F([ + [0, '手动'], + [1, '自动'], +]); +// 财务管理-结算管理-未结算列表 对账状态 +export const FINANCE_SETTLEMENT_UNSETTLED_CHECKED_STATUS = F([ + [true, '正常'], + [false, '异常'], +]); +// 结算管理-策略配置-结算策略配置-订单结算策略-新增 - 满足条件 +export const FINANCE_SETTLEMENT_STRATEGY_ORDER_CONDITIONS = F([ + ['all', '满足以下所有条件'], + ['one', '满足以下任一条件'], +]); +// 结算管理-策略配置-结算策略配置-订单结算策略-新增 - 满足条件 +export const FINANCE_SETTLEMENT_STRATEGY_ORDER_CONDITION_TYPES = F([ + [0, '销售渠道'], + [1, '订单来源'], + [2, '订单类型'], + [3, '订单标记'], +]); +// 结算管理-策略配置-结算策略配置-订单结算策略-新增 - 订单来源 +export const FINANCE_SETTLEMENT_STRATEGY_ORDER_SOURCE = F([ + [0, '三方平台下载'], + [1, '手工创建'], + [2, '文件导入'], +]); +// 结算管理-策略配置-结算策略配置-订单结算策略-新增 - 订单来源 +export const FINANCE_SETTLEMENT_STRATEGY_ORDER_TAGS = F([ + [0, '缺货'], + [1, '异常'], +]); +// 结算管理-策略配置-结算策略配置-订单结算策略-新增 - 触发节点 +export const FINANCE_SETTLEMENT_STRATEGY_ORDER_NODES = F([ + [0, '订单完成'], + [1, '发货完成'], +]); +// 结算管理-策略配置-结算策略配置-售后单结算策略-新增 +export const FINANCE_SETTLEMENT_STRATEGY_AFTER_CONDITION_TYPES = F([ + [0, '售后渠道'], + [1, '售后单来源'], + [2, '售后单类型'], +]); +// 结算管理-策略配置-结算策略配置-售后单结算策略-新增 - 触发节点 +export const FINANCE_SETTLEMENT_STRATEGY_AFTER_NODES = F([ + [0, '售后完成'], + [1, '审核完成'], +]); +/* ************************************** 财务管理 结算 end ****************************************** */ +/* ************************************** 业务中心-营销管理-营销商品管理 Start ****************************************** */ +export const MARKETING_COMMODITY_MANAGEMENT_ROUTER = F([ + ['BusinessMarketingGoodsGiftRule', '赠品规则管理'], + ['BusinessMarketingGoodsWithPackageRule', '随包规则管理'], +]); +export const MARKETING_COMMODITY_MANAGEMENT_STATUS = F([ + [0, '未开始'], + [1, '进行中'], + [2, '已结束'], + [3, '已中止'], +]); +export const MARKETING_COMMODITY_MANAGEMENT_TIME_TYPES = F([ + [0, '三方下单时间'], + [1, '支付时间'], +]); +export const MARKETING_COMMODITY_MANAGEMENT_GIFT_STORE_TYPES = F([ + [1, '所有店铺'], + [0, '指定店铺'], +]); +export const MARKETING_COMMODITY_MANAGEMENT_GIFT_GOODS_TYPES = F([ + [1, '店铺内所有商品'], + [0, '指定商品'], +]); +/** 赠送条件 */ +export const MARKETING_COMMODITY_MANAGEMENT_GIFT_TYPES = F([ + // [0, '满元赠'], + [1, '满件赠'], +]); +export const MARKETING_COMMODITY_MANAGEMENT_PACKAGE_STATUS = F([ + [0, '未开始'], + [1, '进行中'], +]); +/* ************************************** 业务中心-营销管理-营销商品管理 end ****************************************** */ +/* ************************************** 业务中心-标签管理-系统标签 Start ****************************************** */ +// 标签类型 +export const LABEL_SYS_TYPES = F([ + [0, '手工单'], + [1, '复制单'], + [2, '补发单'], + [3, '退货单'], + [4, '退款单'], + [5, '换货单'], + [6, '订单缺货'], + [7, '订单异常'], +]); +// BjTag 组件的样式 +export const LABEL_HAND_COLORS = F([ + // [ value , name ], + ['orange', 'orange橙色'], + ['yellow-dark', 'yellow-dark暗黄'], + ['purple-light', 'purple-light淡紫'], + ['brown-light', 'brown-light淡棕'], + ['blue-purple', 'blue-purple蓝紫'], + ['blue-light', 'blue-light淡蓝'], + ['green-light', 'green-light淡绿'], + ['orange-red', 'orange-red橘黄'], +]); +/* ************************************** 业务中心-标签管理-系统标签 end ****************************************** */ +// 业务中心/销售管理/订单缺货管理 +export const ORDER_SHORT_ROUTER = F([ + ['BusinessOrderShortIndexSetting', '订单缺货设置'], + ['BusinessOrderShortIndexWaiting', '订单待发货'], +]); +// 商品中心-分类管理-类型 +export const GOODS_CLASSIFY_TYPES = F([ + [false, '普通类目'], + [true, '叶子类目'], +]); +// 商品中心-属性来源 有 GOODS_ATTRIBUTE_SOURCES_JSON +export const GOODS_ATTRIBUTE_SOURCES = F([ + [0, '新增'], // 商品属性 + [1, '系统默认'], + [2, '父级分类'], // 分类属性 + [3, '附加属性'], +]); +// SKU 的 属性 分类 +export const GOODS_ATTRIBUTE_TYPES = F([ + [0, '商品属性'], + [1, '系统默认'], + [2, '分类属性'], + [3, '附加属性'], +]); +export const BPMN_STATUS_LIST = F([ + [0, '未布署'], + [1, '已布署'], +]); +/** 标签管理 */ +export const BUSINESS_LABEL_ROUTE_LIST = F([ + ['BusinessLabelSysIndex', '系统标签'], + ['BusinessLabelHandIndex', '人工标签'], +]); +export const SETTING_PERMISSION_TYPE_LIST = F([ + ['api', '菜单'], + ['btn', '按钮'], + ['page', '页面'], + ['tab', '标签'], +]); +export const SETTING_PERMISSION_TYPE_COLOR_LIST = F([ + ['api', 'info'], + ['btn', 'warning'], + ['tab', 'danger'], + ['page', 'success'], +]); +export const ENDORSE_STATUS_LIST = F([ + ['0', '待审核'], + ['1', '已审核'], +]); +/** 报表管理 */ +export const BUSINESS_REPORT_SALE_ROUTE_LIST = F([ + ['BusinessReportSaleCensusIndex', '销售统计表'], + ['BusinessReportSaleAnalysisIndex', '销售分析表'], + ['BusinessReportSaleGoodsIndex', '销售商品统计表'], + ['BusinessReportSaleShopIndex', '店铺销售表'], +]); +export const BUSINESS_REPORT_STOCK_ROUTE_LIST = F([ + ['BusinessReportStockDeliverIndex', '发货汇总表'], + ['BusinessReportStockOutIndex', '缺货统计表'], +]); +export const REPORT_SALE_STATISTICS_TIME_LIST = F([ + [1, '按三方下单时间'], + [2, '按内部创建时间'], +]); +export const REPORT_SALE_STATISTICS_SUMMARY_LIST = F([ + [1, '按渠道'], + [2, '按月份'], + [3, '按地区'], +]); +/** 报表管理end */ +export const CHINESE_NUM = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']; diff --git a/front-end/src/utils/error-log.js b/front-end/src/utils/error-log.js new file mode 100644 index 0000000..78dafdf --- /dev/null +++ b/front-end/src/utils/error-log.js @@ -0,0 +1,35 @@ +import Vue from 'vue'; +import store from '@/store'; +import { isString, isArray } from '@/utils/validate'; +import settings from '@/settings'; + +// you can set in settings.js +// errorLog:'production' | ['production', 'development'] +const { errorLog: needErrorLog } = settings; + +function checkNeed() { + const env = process.env.NODE_ENV; + if (isString(needErrorLog)) { + return env === needErrorLog; + } + if (isArray(needErrorLog)) { + return needErrorLog.includes(env); + } + return false; +} + +if (checkNeed()) { + Vue.config.errorHandler = function(err, vm, info, a) { + // Don't ask me why I use Vue.nextTick, it just a hack. + // detail see https://forum.vuejs.org/t/dispatch-in-vue-config-errorhandler-has-some-problem/23500 + Vue.nextTick(() => { + store.dispatch('errorLog/addErrorLog', { + err, + vm, + info, + url: window.location.href + }); + console.error(err, info); + }); + }; +} diff --git a/front-end/src/utils/get-page-title.js b/front-end/src/utils/get-page-title.js new file mode 100644 index 0000000..3158902 --- /dev/null +++ b/front-end/src/utils/get-page-title.js @@ -0,0 +1,10 @@ +import defaultSettings from '@/settings'; + +const title = defaultSettings.title || 'Vue Element Admin'; + +export default function getPageTitle(pageTitle) { + if (pageTitle) { + return `${pageTitle} - ${title}`; + } + return `${title}`; +} diff --git a/front-end/src/utils/index.js b/front-end/src/utils/index.js new file mode 100644 index 0000000..b2802f5 --- /dev/null +++ b/front-end/src/utils/index.js @@ -0,0 +1,911 @@ +/** + * Created by PanJiaChen on 16/11/18. + */ +import html2pdf from 'html2pdf.js'; +/** + * Parse the time to string + * @param {(Object|string|number)} time + * @param {string} cFormat + * @returns {string | null} + */ +export function parseTime(time, cFormat) { + if (arguments.length === 0 || !time) { + return null; + } + const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'; + let date; + if (typeof time === 'object') { + date = time; + } else { + if (typeof time === 'string') { + if (/^[0-9]+$/.test(time)) { + // support "1548221490638" + time = parseInt(time); + } else { + // support safari + // https://stackoverflow.com/questions/4310953/invalid-date-in-safari + time = time.replace(new RegExp(/-/gm), '/'); + } + } + + if (typeof time === 'number' && time.toString().length === 10) { + time = time * 1000; + } + date = new Date(time); + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay(), + }; + const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => { + const value = formatObj[key]; + // Note: getDay() returns 0 on Sunday + if (key === 'a') { + return ['日', '一', '二', '三', '四', '五', '六'][value]; + } + return value.toString().padStart(2, '0'); + }); + return time_str; +} + +/** + * @param {number} time + * @param {string} option + * @returns {string} + */ +export function formatTime(time, option) { + if (('' + time).length === 10) { + time = parseInt(time) * 1000; + } else { + time = +time; + } + const d = new Date(time); + const now = Date.now(); + + const diff = (now - d) / 1000; + + if (diff < 30) { + return '刚刚'; + } else if (diff < 3600) { + // less 1 hour + return Math.ceil(diff / 60) + '分钟前'; + } else if (diff < 3600 * 24) { + return Math.ceil(diff / 3600) + '小时前'; + } else if (diff < 3600 * 24 * 2) { + return '1天前'; + } + if (option) { + return parseTime(time, option); + } else { + return ( + d.getMonth() + 1 + '月' + d.getDate() + '日' + d.getHours() + '时' + d.getMinutes() + '分' + ); + } +} + +/** + * @param {string} url + * @returns {Object} + */ +export function getQueryObject(url) { + url = url == null ? window.location.href : url; + const search = url.substring(url.lastIndexOf('?') + 1); + const obj = {}; + const reg = /([^?&=]+)=([^?&=]*)/g; + search.replace(reg, (rs, $1, $2) => { + const name = decodeURIComponent($1); + let val = decodeURIComponent($2); + val = String(val); + obj[name] = val; + return rs; + }); + return obj; +} + +/** + * @param {string} input value + * @returns {number} output value + */ +export function byteLength(str) { + // returns the byte length of an utf8 string + let s = str.length; + for (var i = str.length - 1; i >= 0; i--) { + const code = str.charCodeAt(i); + if (code > 0x7f && code <= 0x7ff) s++; + else if (code > 0x7ff && code <= 0xffff) s += 2; + if (code >= 0xdc00 && code <= 0xdfff) i--; + } + return s; +} + +/** + * @param {Array} actual + * @returns {Array} + */ +export function cleanArray(actual) { + const newArray = []; + for (let i = 0; i < actual.length; i++) { + if (actual[i]) { + newArray.push(actual[i]); + } + } + return newArray; +} + +/** + * @param {Object} json + * @returns {Array} + */ +export function param(json) { + if (!json) return ''; + return cleanArray( + Object.keys(json).map(key => { + if (json[key] === undefined) return ''; + return encodeURIComponent(key) + '=' + encodeURIComponent(json[key]); + }), + ).join('&'); +} + +/** + * @param {string} url + * @returns {Object} + */ +export function param2Obj(url) { + const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' '); + if (!search) { + return {}; + } + const obj = {}; + const searchArr = search.split('&'); + searchArr.forEach(v => { + const index = v.indexOf('='); + if (index !== -1) { + const name = v.substring(0, index); + const val = v.substring(index + 1, v.length); + obj[name] = val; + } + }); + return obj; +} + +/** + * @param {string} val + * @returns {string} + */ +export function html2Text(val) { + const div = document.createElement('div'); + div.innerHTML = val; + return div.textContent || div.innerText; +} + +/** + * Merges two objects, giving the last one precedence + * @param {Object} target + * @param {(Object|Array)} source + * @returns {Object} + */ +export function objectMerge(target, source) { + if (typeof target !== 'object') { + target = {}; + } + if (Array.isArray(source)) { + return source.slice(); + } + Object.keys(source).forEach(property => { + const sourceProperty = source[property]; + if (typeof sourceProperty === 'object') { + target[property] = objectMerge(target[property], sourceProperty); + } else { + target[property] = sourceProperty; + } + }); + return target; +} + +/** + * @param {HTMLElement} element + * @param {string} className + */ +export function toggleClass(element, className) { + if (!element || !className) { + return; + } + let classString = element.className; + const nameIndex = classString.indexOf(className); + if (nameIndex === -1) { + classString += '' + className; + } else { + classString = + classString.substr(0, nameIndex) + classString.substr(nameIndex + className.length); + } + element.className = classString; +} + +/** + * @param {string} type + * @returns {Date} + */ +export function getTime(type) { + if (type === 'start') { + return new Date().getTime() - 3600 * 1000 * 24 * 90; + } else { + return new Date(new Date().toDateString()); + } +} + +/** + * @param {Function} func + * @param {number} wait + * @param {boolean} immediate + * @return {*} + */ +export function debounce(func, wait, immediate) { + let timeout, args, context, timestamp, result; + + const later = function () { + // 据上一次触发时间间隔 + const last = +new Date() - timestamp; + + // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait + if (last < wait && last > 0) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用 + if (!immediate) { + result = func.apply(context, args); + if (!timeout) context = args = null; + } + } + }; + + return function (...args) { + context = this; + timestamp = +new Date(); + const callNow = immediate && !timeout; + // 如果延时不存在,重新设定延时 + if (!timeout) timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; +} +/** + * This is just a simple version of deep copy + * Has a lot of edge cases bug + * If you want to use a perfect deep copy, use lodash's _.cloneDeep + * @param {Object} source + * @returns {Object} + */ +export function deepClone(source) { + if (!source && typeof source !== 'object') { + throw new Error('error arguments', 'deepClone'); + } + const targetObj = source.constructor === Array ? [] : {}; + Object.keys(source).forEach(keys => { + if (source[keys] && typeof source[keys] === 'object') { + targetObj[keys] = deepClone(source[keys]); + } else { + targetObj[keys] = source[keys]; + } + }); + return targetObj; +} + +/** + * @param {Array} arr + * @returns {Array} + */ +export function uniqueArr(arr) { + return Array.from(new Set(arr)); +} + +/** + * @returns {string} + */ +export function createUniqueString() { + const timestamp = +new Date() + ''; + const randomNum = parseInt((1 + Math.random()) * 65536) + ''; + return (+(randomNum + timestamp)).toString(32); +} + +/** + * Check if an element has a class + * @param {HTMLElement} elm + * @param {string} cls + * @returns {boolean} + */ +export function hasClass(ele, cls) { + return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')); +} + +/** + * Add class to element + * @param {HTMLElement} elm + * @param {string} cls + */ +export function addClass(ele, cls) { + if (!hasClass(ele, cls)) ele.className += ' ' + cls; +} + +/** + * Remove class from element + * @param {HTMLElement} elm + * @param {string} cls + */ +export function removeClass(ele, cls) { + if (hasClass(ele, cls)) { + const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)'); + ele.className = ele.className.replace(reg, ' '); + } +} +export const sessionStorageTagViews = { + add: function (view) { + const newView = { + fullPath: view.fullPath, + hash: view.hash, + meta: view.meta, + name: view.name, + params: view.params, + path: view.path, + query: view.query, + }; + const OLD_VISITED_VIEWS = this.get(); + OLD_VISITED_VIEWS.push(newView); + sessionStorage.setItem('visitedViews', JSON.stringify(OLD_VISITED_VIEWS)); + }, + delete: function () {}, + set: function (visitedViews) { + const VIEWS = visitedViews.map(view => { + return { + fullPath: view.fullPath, + hash: view.hash, + meta: view.meta, + name: view.name, + params: view.params, + path: view.path, + query: view.query, + }; + }); + sessionStorage.setItem('visitedViews', JSON.stringify(VIEWS)); + }, + clear: function (params) { + sessionStorage.setItem('visitedViews', '[]'); + }, + get: function () { + return JSON.parse(sessionStorage.getItem('visitedViews') || '[]'); + }, +}; +/** + * 数字转为带两位小数的金额显示 + * @param {string/Number} d //数字 + * @param {string/Number} n //几位小数 + * @returns {string} + */ +export function number2money(d = 0, n = 2) { + let zero = ''; + let ten = 1; + for (let i = 0; i < n; i++) { + zero += '0'; + ten = ten * 10; + } + if (d === undefined || d === null) { + d = 0; + } + if (!d) { + d = 0; + } + d = Math.round(d * ten) / ten; + const price = (d + '').split('.'); + price[1] = price[1] ? `${(price[1] + zero).substring(0, n)}` : zero; + return price.join('.'); +} + +export function downloadBlob(blob, fileName) { + if (!fileName) { + alert('文件名不正确'); + return; + } + // FileReader主要用于将文件内容读入内存 + var reader = new FileReader(); + reader.readAsDataURL(blob); + // onload当读取操作成功完成时调用 + reader.onload = function (e) { + var a = document.createElement('a'); + a.download = fileName; + a.href = e.target.result; + console.log(e.target.result); + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + }; +} +export function getBlobURL(blob) { + // var binaryData = []; + // binaryData.push(file); + // new Blob(binaryData, { type: 'application/zip' }) + let url = null; + if (window.createObjectURL !== undefined) { + // basic + url = window.createObjectURL(blob); + } else if (window.webkitURL !== undefined) { + // webkit or chrome + try { + url = window.webkitURL.createObjectURL(blob); + } catch (error) { + console.log(error); + } + } else if (window.URL !== undefined) { + // mozilla(firefox) + try { + url = window.URL.createObjectURL(blob); + } catch (error) { + console.log(error); + } + } + return url; +} +export function openWin(url, iWidth = 1200, iHeight = 800, name = '') { + // 转向网页的地址; + // 网页名称,可为空; + // 弹出窗口的宽度; + // 弹出窗口的高度; + // 获得窗口的垂直位置 + const iTop = (window.screen.availHeight - 30 - iHeight) / 2; + // 获得窗口的水平位置 + const iLeft = (window.screen.availWidth - 10 - iWidth) / 2; + return window.open( + url, + name, + 'height=' + + iHeight + + ',,innerHeight=' + + iHeight + + ',width=' + + iWidth + + ',innerWidth=' + + iWidth + + ',top=' + + iTop + + ',left=' + + iLeft + + ',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no', + ); +} +/** + * 返回一个十位的随机字符串 BJ 开头 + * @returns {string} + */ +export function randomID() { + return ( + 'BJ' + + Number(Math.random().toString().substr(3, 12) + Date.now()) + .toString(36) + .substr(0, 8) + .toUpperCase() + ); +} +/** + * offsetTop 是一个只读属性,返回当前元素相对于 offsetParent 节点顶部边界的偏移像素值。 + * 通过循环 offsetParent 读取 offsetTop ,累加,最终获得元素至文档顶部的真实距离 + * @param { Dom, String} element + * @returns Number + */ +export function getOffsetTop(element) { + element = typeof element == 'string' ? document.querySelector(element) : element; + let realTop = element.offsetTop; + let next = element.offsetParent; + while (next !== null) { + realTop += next.offsetTop; + next = next.offsetParent; + } + return realTop; +} +/** + * this.$scrollToFormError() 调用,this请指向vue + * 页面滚动到表单检验报错的地方 + */ +export function scrollToFormError() { + this.$nextTick(() => { + const DOM = document.querySelector('.el-form-item__error'); + const TOP = getOffsetTop(DOM); + const fixedHeaderHeight = document.querySelector('.fixed-header').clientHeight || 0; // .fixed-header 高度 + const PARENT_HEIGHT = DOM.parentElement ? DOM.parentElement.clientHeight || 0 : 0; // .el-form-item__content 高度 + if (DOM && TOP) { + document.documentElement.scrollTop = TOP - PARENT_HEIGHT - fixedHeaderHeight; + } + }); +} +export function getFileTypeByUrl(url) { + const TYPE_STRING = url.split('?')[0].split('.').slice(-1)[0].toLowerCase(); + const TYPE_JSON = { + image: ['bmp', 'jpg', 'jpeg', 'gif', 'png', 'tif', 'tiff', 'tga', 'psd', 'jfif', 'webp'], + video: ['avi', 'dv', 'mp4', 'mpeg', 'mpg', 'mov', 'wm', 'flv', 'mkv', 'ogg', 'ogv', 'webm'], + text: [ + 'txt', + 'php', + 'html', + 'htm', + 'js', + 'css', + 'rtf', + 'rtfd', + 'py', + 'java', + 'rb', + 'sh', + 'pl', + 'sql', + 'xml', + 'log', + 'docx', + ], + audio: ['mp3', 'mid', 'ogg', 'mpga', 'mp4a', 'wav', 'wma'], + application: [ + 'ai', + 'eps', + 'exe', + 'doc', + 'xls', + 'ppt', + 'pps', + 'pdf', + 'xml', + 'odt', + 'swf', + 'gz', + 'tgz', + 'bz', + 'bz2', + 'tbz', + 'zip', + 'rar', + 'tar', + '7z', + ], + }; + return Object.keys(TYPE_JSON).find(key => TYPE_JSON[key].includes(TYPE_STRING)); +} +/** + * 排列组合 + * @returns + */ +export function cartesianProductOf() { + return Array.prototype.reduce.call( + arguments, + function (a, b) { + var ret = []; + a.forEach(function (a) { + b.forEach(function (b) { + ret.push(a.concat([b])); + }); + }); + return ret; + }, + [[]], + ); +} +/** + * 导出表格为 HTML、WORD、PDF、EXCEL + * @param {String} FILE_NAME 文件名 带后缀格式 + * @param {*} HTML_OR_DATA 表格数据 / HTML字符串 / html元素 + * @param {Array} LABEL_LIST 表格的表头; ['日期', '姓名', '地址'] + * @param {String} WORK_SHEET excel 的 sheet名称;默认 Sheet1 + */ +export function exportFile(FILE_NAME, HTML_OR_DATA, LABEL_LIST, WORK_SHEET) { + if (!FILE_NAME) { + console.error('exportFile need FILE_NAME'); + return; + } + if (FILE_NAME.indexOf('.') == -1) { + console.error('FILE_NAME need File Type'); + return; + } + const TYPE = FILE_NAME.split('.').slice(-1)[0].toLowerCase(); + if (TYPE === 'html') { + // downloadHtml(htmlTemplate(this.$refs.table.innerHTML), 'a.html'); + downloadHtml(htmlTemplate(HTML_OR_DATA), FILE_NAME); + } + if (TYPE === 'docx') { + // downloadHtml(tableTemplate(this.tableData, ['日期', '姓名', '地址']), 'a.docx'); + downloadHtml(tableTemplate(HTML_OR_DATA, LABEL_LIST), FILE_NAME); + } + if (TYPE === 'pdf') { + // downloadHtml(this.$refs.table.innerHTML, 'aaaa.PDF'); + downloadHtml(HTML_OR_DATA, FILE_NAME); + } + if (TYPE === 'xlsx') { + // downloadHtml(excelTemplate(this.tableData, ['日期', '姓名', '地址'], 'worksheet'), 'a.xlsx'); + downloadHtml(excelTemplate(HTML_OR_DATA, LABEL_LIST, WORK_SHEET), FILE_NAME); + } +} +/** + * 下载 html 片段,转存为文件 + * @param {String,Element} fileHtml + * @param {String} fileName + * @returns + */ +export function downloadHtml(fileHtml, fileName) { + if (!fileName) { + console.error('exportFile need fileName'); + return; + } + if (fileName.indexOf('.') == -1) { + console.error('fileName need File Type'); + return; + } + fileName = fileName.replace(/\./g, '_' + new Date().getTime() + '.'); + // 转PDF下载 + if (fileName.split('.').slice(-1)[0].toLowerCase() === 'pdf') { + console.log('转PDF下载'); + html2pdf(fileHtml, { + margin: 1, + filename: fileName, + image: { type: 'jpeg', quality: 0.98 }, + html2canvas: { scale: 2 }, + jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' }, + }); + return; + } + // 其它HTML直接下载 + const a = document.createElement('a'); + const url = window.URL.createObjectURL(new Blob([fileHtml], { type: '' })); + a.href = url; + a.download = fileName; + a.click(); + window.URL.revokeObjectURL(url); +} +/** + * html模板 + * @param {String,Array} d 必填,table data / html 字符串 + * @param {Array} label 非必填,表头 + * @returns + */ +export function htmlTemplate(d, label) { + let innerHTML = d; + if (Array.isArray(d)) { + innerHTML = tableTemplate(d, label); + } + const html = ` + + + + + + FeiJi + + + +
+ ${innerHTML} +
+ + `; + return html; +} +/** + * excel模板 + * @param {Array} data 表数据 + * @param {Array} label 表头 + * @param {String} worksheet excel sheet 名称 + * @returns + */ +export function excelTemplate(data, label, worksheet) { + const TABLE_HTML = tableTemplate(data, label); + // Worksheet名 + worksheet = worksheet || 'Sheet1'; + // 下载的表格模板数据 + return ` + + ${TABLE_HTML}`; +} +/** + * table模板 + * @param {Array} TABLE_DATA 表数据 + * @param {Array} LABEL_LIST 表头 + * @returns + */ +export function tableTemplate(TABLE_DATA, LABEL_LIST) { + if (!TABLE_DATA) { + console.error('tableTemplate: need table data'); + return; + } + if (!Array.isArray(TABLE_DATA)) { + console.error('tableTemplate: table data must be Array'); + return; + } + if (!LABEL_LIST) { + console.error('tableTemplate: need table header'); + return; + } + if (!Array.isArray(LABEL_LIST)) { + console.error('tableTemplate: table header must be Array'); + return; + } + // 表头 + let str = + '' + + LABEL_LIST.map( + e => + `${e}`, + ).join('') + + ''; + // 循环遍历,每行加入tr标签,每个单元格加td标签 + for (let i = 0; i < TABLE_DATA.length; i++) { + str += ''; + for (const item in TABLE_DATA[i]) { + // 增加\t为了不让表格显示科学计数法或者其他格式 + str += `${ + TABLE_DATA[i][item] + '\t' + }`; + } + str += ''; + } + return `${str}
`; +} + +/** + * element时间组件参数:picker-options + * @param {Date} startDate 只当选中 startDate 以后的时间,之前的禁选 + * @returns + */ +export function disabledPickerDate(startDate) { + const TEMP_DATE = startDate ? new Date(startDate) : new Date(); + return { + disabledDate: time => { + return time.getTime() < TEMP_DATE.getTime() - 8.64e7 + 1; + }, + }; +} + +/** + * element时间范围datetime range 组件参数:picker-options + * @param {option} pickerOptions 参数,会覆盖默认的shortcuts,可传入 disabledPickerDate() ,用于禁用过去的时间 + * @returns 默认的最近时间快捷范围 + */ +export function pickerOptions(option = {}) { + return { + firstDayOfWeek: option.firstDayOfWeek || 7, + cellClassName: option.cellClassName || null, + disabledDate: option.disabledDate || null, + shortcuts: option.shortcuts || [ + { + text: '最近一周', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit('pick', [start, end]); + }, + }, + { + text: '最近一个月', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); + picker.$emit('pick', [start, end]); + }, + }, + { + text: '最近三个月', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); + picker.$emit('pick', [start, end]); + }, + }, + ], + }; +} + +export function pickerOption(option = {}) { + return { + firstDayOfWeek: option.firstDayOfWeek || 7, + cellClassName: option.cellClassName || null, + disabledDate: option.disabledDate || null, + shortcuts: option.shortcuts || [ + { + text: '今天', + onClick(picker) { + picker.$emit('pick', new Date()); + }, + }, + { + text: '昨天', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24); + picker.$emit('pick', date); + }, + }, + { + text: '一周前', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit('pick', date); + }, + }, + ], + }; +} + +export function VUE_APP_BASE_API() { + let api = process.env.VUE_APP_BASE_API; + if (process.env.NODE_ENV === 'production') { + // 生产环境的API动态取值(在二级域名后,加 api),如果最终api有www的话直接去掉 + // 例1: https://nice.domain.com => https://niceapi.domain.com + // 例2: http://www.domain.com => http://api.domain.com + // 例2: http://www666.domain.com => http://666api.domain.com + const URL_ARRAY = location.origin.split('.'); + URL_ARRAY[0] = URL_ARRAY[0] + 'api'; + api = URL_ARRAY.join('.'); + api = api.replace('www', ''); + } + return api; +} + +export function infinityNumber(n) { + if (!n) { + if (n === 0 || n === '0') { + return 0; + } + return 999999999999999; + } + if (n === '不限' || n === '-') { + return 999999999999999; + } + if (n === 999999999999999) { + return '不限'; + } + return Number(n); +} +export function isSameArray(a, b) { + const la = a.length; + const lb = b.length; + if (la == lb) { + return a.every(aa => b.some(bb => bb === aa)) && b.every(bb => a.some(aa => bb === aa)); + } else { + return false; + } +} + +export function btnLetterAutoSpacing() { + document.getElementsByTagName('button').forEach(btn => { + if (btn.textContent.length == 3) { + btn.classList.add('letter-spacing-8'); + } else if (btn.textContent.length <= 2) { + btn.classList.add('letter-spacing-16'); + } + }); +} +// 子商品行背景着色 +export function treeRowStyleFun({ row, rowIndex }, key = 'BJ_HAS_CHILD', flag = false) { + const styleJson = {}; + if (row[key] == flag) { + styleJson.background = '#f5f5f5'; + } + return styleJson; +} +export function repeatArrayFun(d, times = 10000) { + const d2 = []; + for (let i = 0; i < times; i++) { + d2.push(...d); + } + return d2; +} diff --git a/front-end/src/utils/jumper2router.js b/front-end/src/utils/jumper2router.js new file mode 100644 index 0000000..ece30da --- /dev/null +++ b/front-end/src/utils/jumper2router.js @@ -0,0 +1,150 @@ +import Vue from 'vue'; +import router from '@/router'; +import { ORDER_BUSINESS_TYPES } from '@/utils/constants.js'; + +Vue.prototype.$toPage = (name, query) => { + router.push({ + name: name, + query: query, + }); +}; +Vue.prototype.$toView = (name, id) => { + router.push({ + name: name, + query: { id: id }, + }); +}; +// 三方销售单 +Vue.prototype.$toBusinessOrderThirdView = (code, useIdFlag = false, businessType = 'common') => { + let id = null; + let name = 'BusinessOrderThirdView'; + if (useIdFlag) { + id = code; + code = null; + } + + if (ORDER_BUSINESS_TYPES.O2O == businessType) { + name = 'BusinessO2oThirdView'; + } + router.push({ + name, + query: { id, code }, + }); +}; +// 内部销售单 +Vue.prototype.$toBusinessOrderInternalView = (code, useIdFlag = false, businessType = 'common') => { + let id = null; + let name = 'BusinessOrderInternalView'; + if (useIdFlag) { + id = code; + code = null; + } + if (ORDER_BUSINESS_TYPES.O2O == businessType) { + name = 'BusinessO2oInternalView'; + } + router.push({ + name, + query: { id, code }, + }); +}; +// 三方仅退款 +Vue.prototype.$toBusinessAfterThirdRefundView = (code, useIdFlag = false) => { + let id = null; + if (useIdFlag) { + id = code; + code = null; + } + router.push({ + name: 'BusinessAfterThirdRefundView', + query: { id, code }, + }); +}; +// 三方退货退款 +Vue.prototype.$toBusinessAfterThirdReturnView = (code, useIdFlag = false) => { + let id = null; + if (useIdFlag) { + id = code; + code = null; + } + router.push({ + name: 'BusinessAfterThirdReturnView', + query: { id, code }, + }); +}; +// 内部仅退款 +Vue.prototype.$toBusinessAfterInternalRefundView = (code, useIdFlag = false) => { + let id = null; + if (useIdFlag) { + id = code; + code = null; + } + router.push({ + name: 'BusinessAfterInternalRefundView', + query: { id, code }, + }); +}; +// 内部退货退款 +Vue.prototype.$toBusinessAfterInternalReturnView = (code, useIdFlag = false) => { + let id = null; + if (useIdFlag) { + id = code; + code = null; + } + router.push({ + name: 'BusinessAfterInternalReturnView', + query: { id, code }, + }); +}; +// 三方换货单 +Vue.prototype.$toBusinessAfterThirdExchangeView = id => { + router.push({ + name: 'BusinessAfterThirdExchangeView', + query: { id: id }, + }); +}; +// 内部换货单 +Vue.prototype.$toBusinessAfterInternalExchangeView = id => { + router.push({ + name: 'BusinessAfterInternalExchangeIndex', + query: { id: id }, + }); +}; +/** 出库通知单详情 */ +Vue.prototype.$toBusinessStockDeliveryInformView = id => { + router.push({ + name: 'BusinessStockDeliveryInformView', + query: { id: id }, + }); +}; +/** 出库结果单详情 */ +Vue.prototype.$toBusinessStockDeliveryResultView = id => { + router.push({ + name: 'BusinessStockDeliveryResultView', + query: { id: id }, + }); +}; + +/** 入库通知单详情 */ +Vue.prototype.$toBusinessStockEntryInformView = (code, useIdFlag = false) => { + let id = null; + if (useIdFlag) { + id = code; + code = null; + } + router.push({ + name: 'BusinessStockEntryInformView', + query: { id, code }, + }); +}; +/** 入库结果单详情 */ +Vue.prototype.$toBusinessStockEntryResultView = (code, useIdFlag = false) => { + let id = null; + if (useIdFlag) { + id = code; + code = null; + } + router.push({ + name: 'BusinessStockEntryResultView', + query: { id, code }, + }); +}; diff --git a/front-end/src/utils/open-window.js b/front-end/src/utils/open-window.js new file mode 100644 index 0000000..90a6ddd --- /dev/null +++ b/front-end/src/utils/open-window.js @@ -0,0 +1,25 @@ +/** + *Created by PanJiaChen on 16/11/29. + * @param {Sting} url + * @param {Sting} title + * @param {Number} w + * @param {Number} h + */ +export default function openWindow(url, title, w, h) { + // Fixes dual-screen position Most browsers Firefox + const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left; + const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top; + + const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width; + const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height; + + const left = ((width / 2) - (w / 2)) + dualScreenLeft; + const top = ((height / 2) - (h / 2)) + dualScreenTop; + const newWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left); + + // Puts focus on the newWindow + if (window.focus) { + newWindow.focus(); + } +} + diff --git a/front-end/src/utils/page-mixin.js b/front-end/src/utils/page-mixin.js new file mode 100644 index 0000000..6b0cb2e --- /dev/null +++ b/front-end/src/utils/page-mixin.js @@ -0,0 +1,161 @@ +/* + * @Author: your name + * @Date: 2021-06-24 18:36:56 + * @LastEditTime: 2022-04-24 18:21:34 + * @LastEditors: LAPTOP-JM4BAR46 + * @Description: In User Settings Edit + * @FilePath: \newBj-admin\src\utils\page-mixin.js + */ +import { commonApi } from '@/api'; + +import ElTableColumn from '@/components/ElTableColumn/index.vue'; + +export default { + components: { + ElTableColumn, + }, + data() { + return { + /** * 拖拽自定义表头 */ + colSpan: 6, + labelsVersion: 11, // 不能为 0 或 false + SortableTable: { + show: () => {}, + handleHeaderDragend: () => {}, + handleHeaderContextmenu: () => {}, + }, + dropCols: [], + // + selectedDataObj: {}, + tags: [], // 选中项 转为 tags ,在表格下方 + pagesSelectedRows: [], // 各页的选中项集合 + selectedRows: [], // 当前页的选中项 + treeTableChildrenSelection: [], // + expandTableSelectedObj: [], + selection: true, + serial: true, + /** 禁止拖动 */ + sortableTableCode: '', // 同一个路由页面下,多tab页列表的保存Code + sortTableByOptionName: false, + tableSortableDisabled: false, + + routerName: '', + }; + }, + filters: { + phoneFilter(val) { + if (val) { + const reg = /^(.{3}).*(.{4})$/; + return val.replace(reg, '$1****$2'); + } + }, + }, + computed: {}, + watch: { + '$route.name'(v) { + this.routerName = v; + }, + }, + created() {}, + mounted() { + this.routerName = this.$route.name; + // 注册刷新事件 + this.$eventHub.$on('refresh' + this.routerName, this.reFresh); + /** 拖拽自定义表头 */ + let startIndex = 0; + if (this.selection) startIndex++; + if (this.serial) startIndex++; + // 保存的唯一code + if (!this.sortableTableCode) { + // 默认取路由name。 + this.sortableTableCode = this.$route.name; + if (this.sortTableByOptionName) { + // 取组件名称 + this.sortableTableCode = this.$options.name; + } + } + // console.log('tableSortableDisabled = ', this.tableSortableDisabled); + // console.log('sortableTableCode = ', this.sortableTableCode); + this.SortableTable = this.$initElementTableSortable({ + el: '.body--wrapper>.vxe-table--header .vxe-header--row', // '.el-table__header-wrapper tr:last-child', + tableSortableDisabled: this.tableSortableDisabled, + dragElement: '.vxe-header--column', // 默认是 className : draggable .item + defaultLabels: this.labelList, + startIndex: startIndex, + sortableTableCode: this.sortableTableCode, // 唯一key + labelsVersion: this.labelsVersion, // 当前版本号 + setRemoteApi: commonApi.saveTabulation, // 非必填 + getRemoteApi: commonApi.getTabulation, // 非必填 + handleColumn: this.handleColumn, + }); + // this.setSortTableCodeAndHeight(); + + // 对整个页面滚轮进行监听,每发生一次滚轮事件,执行一次方法 + // window.addEventListener('scroll', this.scrollCallBack, true); + }, + beforeDestroy() { + this.$eventHub.$off('refresh' + this.routerName); + }, + methods: { + scrollCallBack() { + // 兼容性,获取页面滚动距离 + const scrollTop = + window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; + + const IS_BOTTOM = document.body.scrollHeight - scrollTop - document.body.clientHeight < 3; + + this.$refs.BjPage.showSearch = !IS_BOTTOM; + }, + // setSortTableCodeAndHeight() { + // this.$nextTick(() => { + // // 根据列表code,获取列表的自定义高度(用于max-height) + // const LAST_HEIGHT = Number(localStorage.getItem(this.sortableTableCode) || 0); + // // 把 code 和 height 传入 bjPage + // if (LAST_HEIGHT) { + // this.$refs.BjPage?.setSortTableCodeAndHeight(this.sortableTableCode, LAST_HEIGHT); + // } + // }); + // }, + /** 重置按钮操作 */ + beforeResetSearch() { + this.handleSelectionChange({}); + return new Promise(resolve => { + resolve(); + }); + }, + /** 拖拽自定义表头 */ + handleColumn(data) { + this.dropCols = data; + if (this.tableSortableDisabled) return; + this.$nextTick(() => { + this.$refs.BjPage.$refs.BjTable && this.$refs.BjPage.$refs.BjTable.refreshColumn(); + }); + }, + reFresh() { + this.$refs.BjPage && this.$refs.BjPage.fetchData(); + }, + handleSelectionChange(data) { + this.selectedDataObj = { ...data }; + this.selectedRows = data.selection || []; + this.tags = data.tags || []; + // console.log('this.tags', this.tags); + this.treeTableChildrenSelection = data.children || []; + this.pagesSelectedRows = data.pagesSelectedRows || []; + }, + handleQuery() { + this.reFresh(); + }, + // 子多选框选中数据 + handleExpandTableSelectionChange(arg) { + // const { + // childrenSelection, + // parentRow, + // parentIndex, + // expandTableIndexSelection, + // treeTableChildrenSelection, + // } = arg; + this.expandTableSelectedObj = arg; + console.log(this.expandTableSelectedObj); + }, + }, +}; diff --git a/front-end/src/utils/permission.js b/front-end/src/utils/permission.js new file mode 100644 index 0000000..221d970 --- /dev/null +++ b/front-end/src/utils/permission.js @@ -0,0 +1,21 @@ +import store from '@/store'; + +/** + * @param {Array} value + * @returns {Boolean} + * @example see @/views/permission/directive.vue + */ +export default function checkPermission(value) { + if (value && value instanceof Array && value.length > 0) { + const roles = store.getters && store.getters.roles; + const permissionRoles = value; + + const hasPermission = roles.some(role => { + return permissionRoles.includes(role); + }); + return hasPermission; + } else { + console.error(`need roles! Like v-permission="['admin','editor']"`); + return false; + } +} diff --git a/front-end/src/utils/prototype-native.js b/front-end/src/utils/prototype-native.js new file mode 100644 index 0000000..f72877e --- /dev/null +++ b/front-end/src/utils/prototype-native.js @@ -0,0 +1,39 @@ +/*eslint no-extend-native: ["error", { "exceptions": ["Array"] }]*/ +function getLabelByValue(list, value, valueString = 'value', labelString = 'label') { + if (Array.isArray(list)) { + const FIND_ITEM = list.find(item => { + const VALUE = item[valueString]; + // 兼容 item.value为数组的情况 + return VALUE == value || (Array.isArray(VALUE) && VALUE.some(n => n == value)); + }); + if (FIND_ITEM) return FIND_ITEM[labelString]; + } + return value; +} +Array.prototype.bjGet = function(value, valueString = 'value', labelString = 'label') { + return getLabelByValue(this, value, valueString, labelString); +}; +Array.prototype.bjIncludes = function(value, valueKey) { + return this.some(e => { + if (valueKey) { + return e[valueKey] == value; + } + return e == value; + }); +}; +/** + * + * @param {*} val //要查找的值 + * @param {*} key // 如果数组元素是一个object,需要提供对应的key + */ +Array.prototype.remove = function(val, key) { + let index; + if (typeof key == 'string') { + index = this.findIndex(e => e[key] == val); + } else { + index = this.indexOf(val); + } + if (index > -1) { + this.splice(index, 1); + } +}; diff --git a/front-end/src/utils/prototype-vue.js b/front-end/src/utils/prototype-vue.js new file mode 100644 index 0000000..72264b0 --- /dev/null +++ b/front-end/src/utils/prototype-vue.js @@ -0,0 +1,85 @@ +import Vue from 'vue'; +import '@/utils/jumper2router.js'; +// 全局组件之间通信 +Vue.prototype.$eventHub = Vue.prototype.$eventHub || new Vue(); // 巴士 + +Vue.prototype.$rowStyle = { + DEFAULT: { fontSize: '13px' }, // background: '#eef1f6', color: '#606266', + LIGHT_GREY: { background: '#f7f7f7', color: '#606266' }, + LIGHT_BLUE: { background: '#c4d9f5', color: '#606266' }, + WHITE: { background: '#FFFFFF', color: '#6c6c6c' }, +}; + +// 数字转2位小数金额 +import { + number2money, + getFileTypeByUrl, + disabledPickerDate, + pickerOptions, + pickerOption, + infinityNumber, + scrollToFormError, + treeRowStyleFun, + repeatArrayFun, +} from '@/utils/index.js'; +Vue.prototype.$number2money = number2money; +Vue.prototype.$getFileTypeByUrl = getFileTypeByUrl; +Vue.prototype.$disabledPickerDate = disabledPickerDate; +Vue.prototype.$pickerOptions = pickerOptions; +Vue.prototype.$pickerOption = pickerOption; +Vue.prototype.$infinityNumber = infinityNumber; +Vue.prototype.$scrollToFormError = scrollToFormError; +Vue.prototype.$treeRowStyleFun = treeRowStyleFun; +Vue.prototype.$repeatArrayFun = repeatArrayFun; + +import * as BjDialogListConfig from '@/utils/BjDialogListConfig.js'; +Vue.prototype.$BjDialogListConfig = BjDialogListConfig; + +Vue.prototype.msgSuccess = function (msg) { + this.$message({ showClose: true, message: msg, type: 'success' }); +}; +Vue.prototype.msgError = function (msg) { + this.$message({ showClose: true, message: msg, type: 'error' }); +}; +Vue.prototype.msgInfo = function (msg) { + this.message.info(msg); +}; +Vue.prototype.$onCopy = () => { + Vue.prototype.$message.success('复制成功'); +}; +Vue.prototype.$onError = () => { + Vue.prototype.$message.error('复制失败'); +}; + +import { MAX_LENGTH } from '@/utils/constants'; +Vue.prototype.MAX_LENGTH = MAX_LENGTH; + +import lodash from 'lodash'; +Vue.prototype.$lodash = lodash; + +// https://github.com/wangduanduan/jsplumb-chinese-tutorial/tree/master/docs +// https://www.cnblogs.com/leomYili/p/6346526.html + +// import jsPlumb from 'jsplumb'; +// Vue.prototype.$jsPlumb = jsPlumb.jsPlumb; + +/** + * If you don't want to use mock-server + * you want to use MockJs for mock api + * you can execute: mockXHR() + * + * Currently MockJs will be used in the production environment, + * please remove it before going online ! ! ! + */ +// if (process.env.NODE_ENV === 'production') { +// const { mockXHR } = require('../mock'); +// mockXHR(); +// } +const Mock = require('mockjs'); +Vue.prototype.$getMockData = list => { + const res = Mock.mock({ + 'list|6-10': list, + }).list; + console.log(JSON.stringify(res)); + return res; +}; diff --git a/front-end/src/utils/request.js b/front-end/src/utils/request.js new file mode 100644 index 0000000..8b02bfe --- /dev/null +++ b/front-end/src/utils/request.js @@ -0,0 +1,387 @@ +import axios from './axios.js'; +// import Vue from 'vue'; +import router from '@/router'; +import { Message } from 'element-ui'; +import store from '@/store'; +import { getToken } from '@/utils/auth'; +import _ from 'lodash'; + +function sleep(time) { + return new Promise(resolve => setTimeout(resolve, time)); +} + +const CONTENT_TYPES = { + 1: 'application/json', + 2: 'multipart/form-data', + 3: 'application/x-www-form-urlencoded', +}; +const RESPONSE_TYPES = { + 0: 'text', + 1: 'json', + 2: 'blob', + 3: 'buffer', +}; +// console.log('http1', Vue.prototype.$http.options); +// console.log('axios', axios); +// console.log('aa', Vue.prototype.$http.prototype); +// // create an axios instance + +const service = axios.create({ + // withCredentials: true, // send cookies when cross-domain requests +}); + +// // request interceptor +service.interceptors.request.use( + config => { + if (!config.loadingHide) store.dispatch('app/addLoadingCount'); + if (getToken()) { + config.headers['Authorization'] = 'Bearer ' + getToken(); + } + // console.log(config); + return config; + }, + error => { + // do something with request error + // console.error(error); // for debug + return Promise.reject(error); + }, +); + +// // response interceptor +service.interceptors.response.use( + /** + * If you want to get http information such as headers or status + * Please return response => response + */ + + /** + * Determine the request status by custom code + * Here is just an example + * You can also judge the status by HTTP Status Code + */ + async response => { + const config = response && response.config; + + await sleep(config.loadingMore); + + if (config.loadingMore) console.log('主动延迟' + config.loadingMore + 'ms', config.url); + + if (!config.loadingHide) store.dispatch('app/addLoadingCount', false); + + const OLD_RESPONSE_DATA = response.data; + let NEW_RESPONSE_DATA = null; + + if ( + (response.status === 204 || response.status === 200) && + (typeof OLD_RESPONSE_DATA === 'string' || typeof OLD_RESPONSE_DATA === 'number') + ) { + NEW_RESPONSE_DATA = { + failed: false, + message: OLD_RESPONSE_DATA || '操作成功', + }; + } + + if ( + (response.status === 204 || response.status === 200) && + typeof OLD_RESPONSE_DATA === 'boolean' + ) { + NEW_RESPONSE_DATA = { + failed: !OLD_RESPONSE_DATA, + message: OLD_RESPONSE_DATA ? '操作成功' : 'Waring', + }; + } + + const res = NEW_RESPONSE_DATA || OLD_RESPONSE_DATA || response; + /** + * 统一处理 : 接口连接正常,但 res.failed==true 的情况 + */ + if (res && res.failed && !config.errorHide) { + Message({ + message: (res && res.message) || 'api error', // error.message + type: 'error', + duration: 2 * 1000, + }); + } + + return res; + // if the custom code is not 0, it is judged as an error. + // if (res.code === null || (res.code && res.code !== 0)) { + // if (res.code === 100008005 && res.data && Array.isArray(res.data) && res.data.length > 0) { + // Message({ + // message: res.data[0].msg || 'Error', + // type: 'error', + // duration: 5 * 1000, + // }); + // } else { + // Message({ + // message: res.message || 'Error', + // type: 'error', + // duration: 5 * 1000, + // }); + // } + // // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; + // if (res.code === 50008 || res.code === 50012 || res.code === 50014) { + // // to re-login + // MessageBox.confirm( + // 'You have been logged out, you can cancel to stay on this page, or log in again', + // 'Confirm logout', + // { + // confirmButtonText: 'Re-Login', + // cancelButtonText: 'Cancel', + // type: 'warning', + // }, + // ).then(() => { + // store.dispatch('app/user/resetToken').then(() => { + // location.reload(); + // }); + // }); + // } + // if (store.getters.globalPartialLoading) { + // setTimeout(() => { + // store.dispatch('app/toggleGlobalLoading', false); + // }, 700); + // } + // return Promise.reject(new Error(res.message || 'Error')); + // } else { + // if (store.getters.globalPartialLoading) { + // setTimeout(() => { + // store.dispatch('app/toggleGlobalLoading', false); + // }, 700); + // } + + // return res; + // } + }, + error => { + const config = error && error.config; + if (config && !config.loadingHide) store.dispatch('app/addLoadingCount', false); + console.log(error); // for debug + // if (store.getters.globalPartialLoading) { + // setTimeout(() => { + // store.dispatch('app/toggleGlobalLoading', false); + // }, 700); + // } + + if (error.message.includes('timeout')) { + // 判断请求异常信息中是否含有超时timeout字符串 + + Message({ + message: '请求服务器超时,请刷新重试', // error.message + type: 'error', + duration: 2 * 1000, + }); + return Promise.reject({ + failed: true, + message: '', + }); + } + + if (error && error.response && error.response.status) { + console.log(error.response.status); + switch (error.response.status) { + case 500: + case 503: + // do something... + Message({ + message: `请求失败,请稍候重试(${error.response.status})`, + type: 'error', + duration: 5 * 1000, + }); + break; + case 404: + // do something... + Message({ + message: `请求资源不存在(${error.response.status})`, + type: 'error', + duration: 5 * 1000, + }); + break; + case 403: + // do something... + Message({ + message: `服务器拒绝或者禁止了您的访问(${error.response.status})`, + type: 'error', + duration: 5 * 1000, + }); + break; + case 401: + // do something... + if (!process.env.VUE_APP_ACCESS_TOKEN) { + Message({ + message: '请重新登录', // error.message + type: 'error', + duration: 2 * 1000, + }); + setTimeout(() => { + store.dispatch('user/resetInfo').then(() => { + router.replace({ + path: '/login', + }); + }); + }, 1000); + } + + break; + default: + // do something... + // Message({ + // message: '服务器开小差了~', // error.message + // type: 'error', + // duration: 5 * 1000, + // }); + break; + } + } else { + // Message({ + // message: '服务器开小差了~', // error.message + // type: 'error', + // duration: 5 * 1000, + // }); + } + return Promise.reject({ + failed: true, + message: 'Api Http Status Code : ' + (error.response && error.response.status), + }); + }, +); + +export function ajax(method = 'post', url, options) { + // console.log(`%c ajax url: ${url}`, 'color:blue;'); + // console.log(options.data); + + method = method.toLowerCase(); + options.data = options.data || {}; + let requestType = (options.type || '').toLowerCase(); + // data参数指定隐藏loading动画 + const BjAjaxLoadingHide = options.data.BjAjaxLoadingHide; + delete options.data.BjAjaxLoadingHide; + const opts = { + url, + method, + errorHide: !!options.errorHide, + loadingHide: !!options.loadingHide || BjAjaxLoadingHide, // 此请求隐藏loading动画 + loadingMore: options.loadingMore || 0, // 此请求延迟loading,主动延迟返回(后端异步的情况) + headers: { + 'Content-type': CONTENT_TYPES[options.cType || '1'], + }, + responseType: RESPONSE_TYPES[options.rType || '0'], + }; + /** + * 兼容rest风格(请求参数拼接在路径上) + */ + let restfulUrl = ''; + if (url[url.length - 1] === '/') { + // rest 风格的get 请求 需要api文件的url 最后拼接上/ + let restAPI = Object.values(options.data); // 取参数value数组 + if (typeof options.data === 'string') { + restAPI = [options.data]; + } + restfulUrl = opts.url + restAPI.join('/'); // 把参数拼接在url后面 + requestType = 'restful'; + } + /** + * 没有指定请求的类型,自动判断请求方式 + */ + if (!requestType) { + if (method === 'get') { + requestType = 'query'; + } else { + requestType = 'body'; + } + } + if (requestType === 'query') { + opts.params = options.data; + } + if (requestType === 'body') { + opts.data = options.data; + } + if (requestType === 'form' && options.data) { + const formData = new FormData(); + Object.keys(options.data).forEach(key => { + formData.append(key, options.data[key]); + }); + opts.data = formData; + } + if (requestType === 'restful') { + opts.url = restfulUrl; + } + + /** 特定奇葩的传参方式 */ + if (options.data && options.data.BjBody) { + opts.data = options.data.BjBody; + } + if (options.data && options.data.BjQuery) { + opts.params = options.data.BjQuery; + } + + // console.log('options.opts', opts); + return service(opts); +} + +export function generate(config) { + const map = {}; + const items = config.items; + for (let i = 0, len = items.length; i < len; i++) { + map[items[i].key] = function(data) { + /** + * 把data里的值 替换到url上{}里,并删除data对应key + */ + let tempUrl = (items[i].prefix || config.prefix || '') + items[i].url; + const REG = /\{(.+?)\}/g; + const __matchKey = tempUrl.match(REG); // 带{}花括号 + + // 链接{}花括号参数处理 + if (Array.isArray(__matchKey)) { + const matchKey = __matchKey.map(e => e.replace('{', '').replace('}', '')); // 去{}花括号 + matchKey.forEach((key, index) => { + const __key = __matchKey[index]; + let __value; + // {}花括号 从data中取值(如果有data.key的话) + if (data && Object.prototype.hasOwnProperty.call(data, key)) { + __value = data[key]; + tempUrl = tempUrl.replace(__key, __value); + delete data[key]; + } else { + // data 没有 给 organizationId、tenantId 赋值,从store中获取,默认为0租户 + if (key === 'organizationId' || key === 'tenantId') { + __value = store.getters.tenantId || 0; + tempUrl = tempUrl.replace(__key, __value); + } else { + console.error(`Can't find ${key} from the ${items[i].method} data`, data); + } + } + }); + } + // 默认值 + if ( + data && + Object.prototype.hasOwnProperty.call(data, 'tenantId') && + data.tenantId == 'default' + ) { + data.tenantId = store.getters.tenantId || 0; + } + if ( + data && + Object.prototype.hasOwnProperty.call(data, 'organizationId') && + data.organizationId == 'default' + ) { + data.organizationId = store.getters.tenantId || 0; + } + /** END */ + + /** + * TODO: 从0开始的分页page */ + if (data && Object.prototype.hasOwnProperty.call(data, 'page') && data.page > 0) { + data.page = data.page - 1; + } + /** END */ + return ajax(items[i].method, tempUrl, { + data, + ...(_.omit(items[i], ['key', 'url', 'method', 'prefix']) || {}), + }); + }; + } + return map; +} + +export default {}; diff --git a/front-end/src/utils/scroll-to.js b/front-end/src/utils/scroll-to.js new file mode 100644 index 0000000..d11b672 --- /dev/null +++ b/front-end/src/utils/scroll-to.js @@ -0,0 +1,58 @@ +Math.easeInOutQuad = function(t, b, c, d) { + t /= d / 2; + if (t < 1) { + return c / 2 * t * t + b; + } + t--; + return -c / 2 * (t * (t - 2) - 1) + b; +}; + +// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts +var requestAnimFrame = (function() { + return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60); }; +})(); + +/** + * Because it's so fucking difficult to detect the scrolling element, just move them all + * @param {number} amount + */ +function move(amount) { + document.documentElement.scrollTop = amount; + document.body.parentNode.scrollTop = amount; + document.body.scrollTop = amount; +} + +function position() { + return document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop; +} + +/** + * @param {number} to + * @param {number} duration + * @param {Function} callback + */ +export function scrollTo(to, duration, callback) { + const start = position(); + const change = to - start; + const increment = 20; + let currentTime = 0; + duration = (typeof (duration) === 'undefined') ? 500 : duration; + var animateScroll = function() { + // increment the time + currentTime += increment; + // find the value with the quadratic in-out easing function + var val = Math.easeInOutQuad(currentTime, start, change, duration); + // move the document.body + move(val); + // do the animation unless its over + if (currentTime < duration) { + requestAnimFrame(animateScroll); + } else { + if (callback && typeof (callback) === 'function') { + // the animation is done so lets callback + callback(); + } + } + }; + animateScroll(); +} diff --git a/front-end/src/utils/validate.js b/front-end/src/utils/validate.js new file mode 100644 index 0000000..266410a --- /dev/null +++ b/front-end/src/utils/validate.js @@ -0,0 +1,299 @@ +/** + * Created by PanJiaChen on 16/11/18. + */ + +/** + * @param {string} path + * @returns {Boolean} + */ +export function isExternal(path) { + return /^(https?:|mailto:|tel:)/.test(path); +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validUsername(str) { + const valid_map = ['admin', 'editor']; + return valid_map.indexOf(str.trim()) >= 0; +} + +/** + * @param {string} url + * @returns {Boolean} + */ +export function validURL(url) { + const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/; + return reg.test(url); +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validLowerCase(str) { + const reg = /^[a-z]+$/; + return reg.test(str); +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validUpperCase(str) { + const reg = /^[A-Z]+$/; + return reg.test(str); +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validAlphabets(str) { + const reg = /^[A-Za-z]+$/; + return reg.test(str); +} + +/** + * @param {string} email + * @returns {Boolean} + */ +export const patternEmail = /^[a-zA-Z0-9_.-]{1,30}@[a-zA-Z0-9-]{1,30}(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/; +export function validEmail(email) { + // const reg =/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + return patternEmail.test(email); +} +export const validatorEmail = function(rule, value, callback) { + if (typeof value == 'number') value = String(value); + if (!value) { + if (rule.required) { + callback(new Error('请输入邮箱')); + } else { + callback(); + } + } else { + if (!patternEmail.test(String(value))) { + callback(new Error('邮箱格式错误')); + } else { + callback(); + } + } +}; + +/** + * @param {string} phone + * @returns {Boolean} + */ +export const patternMobile = /^134[0-8]\d{7}$|^13[^4]\d{8}$|^14[5-9]\d{8}$|^15[^4]\d{8}$|^16[6]\d{8}$|^17[0-8]\d{8}$|^18[\d]{9}$|^19[89]\d{8}$/; +export function validPhone(phone) { + return patternMobile.test(phone); +} + +/** + * 排除非数字和字母还有_.-其他禁止输入 + */ +export const checkCode = /[^\a-\z\A-\Z0-9-_.]/g; +export const checkCodeWithComma = /[^\a-\z\A-\Z0-9-_.,]/g; +/** + * 编码的规则 + */ +export const patternCode = /^[A-Z0-9][A-Z0-9-_./]*$/; +export const patternCodeSimple = /^[A-Za-z0-9-_./]{0,50}$/; +export const validatorCodeSimple = function(rule, value, callback) { + if (typeof value == 'number') value = String(value); + if (!value) { + if (rule.required) { + callback(new Error('请输入编码')); + } else { + callback(); + } + } else { + if (!patternCodeSimple.test(String(value))) { + callback(new Error('编码格式错误')); + } else { + callback(); + } + } +}; +export const validatorCodeSimpleLabel = function(rule, value, callback, label = '编码') { + if (typeof value == 'number') value = String(value); + if (!value) { + if (rule.required) { + callback(new Error('请输入' + label)); + } else { + callback(); + } + } else { + if (!patternCodeSimple.test(String(value))) { + callback(new Error(label + '格式错误')); + } else { + callback(); + } + } +}; +/** + * @param {string} str + * @returns {Boolean} + */ +export function isString(str) { + if (typeof str === 'string' || str instanceof String) { + return true; + } + return false; +} + +/** + * @param {Array} arg + * @returns {Boolean} + */ +export function isArray(arg) { + if (typeof Array.isArray === 'undefined') { + return Object.prototype.toString.call(arg) === '[object Array]'; + } + return Array.isArray(arg); +} +// 100以内的数字,最多两位小数 +export const patternPercent = /(^[0-9]{1,2}$)|(^[0-9]{1,2}[\.]{1}[0-9]{0,2}$)/; +export function validPercent(v) { + return patternPercent.test(v); +} + +// 不能小于1 +export const validatorMinOne = (rule, value, callback) => { + if (value < 1) { + callback(new Error(rule.message)); + } else { + callback(); + } +}; + +/** + * 账户验证规则 + */ +export const validateLoginName = (rule, value, callback) => { + if (rule.required && (!value || value === 0)) { + callback(new Error('请输入账户')); + } else { + if (!/^[\u4E00-\u9FA5\uF900-\uFA2D|a-zA-Z0-9]{2,20}$/.test(value)) { + callback(new Error('请输入正确的账户')); + } else { + callback(); + } + } +}; +/** + * 手机号验证规则 + */ +export const patternMobileSimple = /^1\d{10}$/; +export const validatorMobile = function(rule, value, callback) { + if (typeof value == 'number') value = String(value); + if (!value) { + if (rule.required) { + callback(new Error('请输入手机号')); + } else { + callback(); + } + } else { + if (!patternMobileSimple.test(String(value))) { + callback(new Error('手机号格式错误')); + } else { + callback(); + } + } +}; +/** + * 邮编验证规则 + */ +export const patternPostCode = /\d{6}/; +export const validatorPostCode = function(rule, value, callback) { + if (typeof value == 'number') value = String(value); + if (!value) { + if (rule.required) { + callback(new Error('请输入邮编')); + } else { + callback(); + } + } else { + if (!patternPostCode.test(String(value))) { + callback(new Error('邮编格式错误')); + } else { + callback(); + } + } +}; + +/** + * 区号-电话号码 验证规则 + */ +export const patternPhone = /^\d{3,4}-\d{7,8}$/; +export const validatorPhone = function(rule, value, callback) { + if (typeof value == 'number') value = String(value); + if (!value) { + if (rule.required) { + callback(new Error('请输入固定电话号码')); + } else { + callback(); + } + } else { + if (!patternPhone.test(String(value))) { + callback(new Error('固定电话号码格式错误')); + } else { + callback(); + } + } +}; + +/** + * 年龄 验证规则 + */ +export const patternAge = /^[1-9][0-9]{0,2}$/; +export const validatorAge = function(rule, value, callback) { + if (typeof value == 'number') value = String(value); + if (!value) { + if (rule.required) { + callback(new Error('请输入年龄')); + } else { + callback(); + } + } else { + if (!patternAge.test(String(value))) { + callback(new Error('年龄格式错误')); + } else { + callback(); + } + } +}; + +// 密码 +export const patternPassword = /^(\w){6,20}$/; +// 中文,英文字母,数字 +export const validatorGoodsClassifyName = /^[a-zA-Z0-9\u4e00-\u9fa5]+$/; +export const patternGoodsClassifyName = function(rule, value, callback) { + if (!value) { + return callback(new Error('请输入分类名称')); + } + if (!validatorGoodsClassifyName.test(value)) { + callback(new Error('中文,英文字母,数字')); + } else { + callback(); + } +}; +// 商品分类编码 +export const patternGoodsClassifyCode = /^[a-zA-Z0-9]{0,20}$/; +export const validatorGoodsClassifyCode = function(rule, value, callback) { + if (typeof value == 'number') value = String(value); + if (!value) { + if (rule.required) { + callback(new Error('请输入')); + } else { + callback(); + } + } else { + if (!patternGoodsClassifyCode.test(String(value))) { + callback(new Error('请输入不大于20位的数字及字母组合')); + } else { + callback(); + } + } +}; diff --git a/front-end/src/utils/view-mixin.js b/front-end/src/utils/view-mixin.js new file mode 100644 index 0000000..f09f2a5 --- /dev/null +++ b/front-end/src/utils/view-mixin.js @@ -0,0 +1,107 @@ +/* + * 通用混入viewForm 详情页面 + */ +// import { commonApi } from '@/api'; +export default { + props: { + isEdit: { + type: Boolean, + default: false, + }, + isView: { + type: Boolean, + default: false, + }, + isAdd: { + type: Boolean, + default: false, + }, + }, + data() { + return { + pageName: 'page_list_router_name', + }; + }, + filters: {}, + computed: {}, + watch: {}, + created() {}, + mounted() { + // if (document.querySelector('.resize-col')) { + // let oldWidth = document.getElementById('app').clientWidth; + // window.addEventListener('resize', () => { + // const WIDTH = document.getElementById('app').clientWidth; + // const isAdd = WIDTH > oldWidth; + // console.log(WIDTH); + // for (let i = 1; i <= 24; i++) { + // const THIS_CLASS = 'bj-item-col-' + i; + // const NEXT_I = isAdd ? i + 2 : i - 2; + // const NEXT_CLASS = 'bj-item-col-' + NEXT_I; + // const DOM = document.querySelector('.' + THIS_CLASS); + // if (DOM && NEXT_I > 1 && NEXT_I <= 24) { + // // TODO: 动态重置布局 + // // if (WIDTH < 1400 && i > 7 && NEXT_I > 1 && NEXT_I <= 24) { + // // DOM.classList.add(NEXT_CLASS); + // // DOM.classList.remove(THIS_CLASS); + // // } + // } + // } + // }); + // } + }, + beforeDestroy() {}, + methods: { + jumper(ARG_ROUTER, GO_BY_NAME = false) { + console.log(...arguments); + const view = this.$route; + let page = this.pageName; + // 跳转到 route.name + GO_BY_NAME = GO_BY_NAME === true; + + if (typeof ARG_ROUTER == 'string') { + page = ARG_ROUTER; + } + if (ARG_ROUTER && typeof ARG_ROUTER.name == 'string') { + page = ARG_ROUTER.name; + } + if (!GO_BY_NAME) this.$router.go(-1); + this.$store.dispatch('tagsView/closeCurrentView', view).then(() => { + // 目标路由 pageName + // 1. 如果有被缓存,就调用 eventHub 的 刷新数据 + // 2. 如果没有被缓存,无需手动刷新。(防止多次API请求) + const hasCached = this.$store.state.tagsView.cachedViews.map(e => e.name).includes(page); + if (GO_BY_NAME) this.$router.push({ name: page }); // 【返回功能】 暂时使用router.go(-1),不指定返回到router.name + if (hasCached) { + setTimeout(() => { + this.$eventHub.$emit('refresh' + page, 1); + }, 500); + } + }); + }, + // 完成后,按routerName跳转 + complete(ARG_ROUTER) { + this.jumper(ARG_ROUTER, true); + }, + // 取消/返回 上一页 + cancel(ARG_ROUTER) { + this.jumper(ARG_ROUTER, false); + }, + // 弹窗确定后,再取消/返回 上一页 + tryCancel(ARG_ROUTER, title = '当前页面数据未保存,是否放弃?') { + this.$confirm(title, '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }) + .then(() => { + this.cancel(ARG_ROUTER); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '已取消', + }); + }); + }, + }, +}; diff --git a/front-end/src/vendor/Export2Excel.js b/front-end/src/vendor/Export2Excel.js new file mode 100644 index 0000000..d8a2af3 --- /dev/null +++ b/front-end/src/vendor/Export2Excel.js @@ -0,0 +1,220 @@ +/* eslint-disable */ +import { saveAs } from 'file-saver' +import XLSX from 'xlsx' + +function generateArray(table) { + var out = []; + var rows = table.querySelectorAll('tr'); + var ranges = []; + for (var R = 0; R < rows.length; ++R) { + var outRow = []; + var row = rows[R]; + var columns = row.querySelectorAll('td'); + for (var C = 0; C < columns.length; ++C) { + var cell = columns[C]; + var colspan = cell.getAttribute('colspan'); + var rowspan = cell.getAttribute('rowspan'); + var cellValue = cell.innerText; + if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue; + + //Skip ranges + ranges.forEach(function (range) { + if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) { + for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null); + } + }); + + //Handle Row Span + if (rowspan || colspan) { + rowspan = rowspan || 1; + colspan = colspan || 1; + ranges.push({ + s: { + r: R, + c: outRow.length + }, + e: { + r: R + rowspan - 1, + c: outRow.length + colspan - 1 + } + }); + }; + + //Handle Value + outRow.push(cellValue !== "" ? cellValue : null); + + //Handle Colspan + if (colspan) + for (var k = 0; k < colspan - 1; ++k) outRow.push(null); + } + out.push(outRow); + } + return [out, ranges]; +}; + +function datenum(v, date1904) { + if (date1904) v += 1462; + var epoch = Date.parse(v); + return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); +} + +function sheet_from_array_of_arrays(data, opts) { + var ws = {}; + var range = { + s: { + c: 10000000, + r: 10000000 + }, + e: { + c: 0, + r: 0 + } + }; + for (var R = 0; R != data.length; ++R) { + for (var C = 0; C != data[R].length; ++C) { + if (range.s.r > R) range.s.r = R; + if (range.s.c > C) range.s.c = C; + if (range.e.r < R) range.e.r = R; + if (range.e.c < C) range.e.c = C; + var cell = { + v: data[R][C] + }; + if (cell.v == null) continue; + var cell_ref = XLSX.utils.encode_cell({ + c: C, + r: R + }); + + if (typeof cell.v === 'number') cell.t = 'n'; + else if (typeof cell.v === 'boolean') cell.t = 'b'; + else if (cell.v instanceof Date) { + cell.t = 'n'; + cell.z = XLSX.SSF._table[14]; + cell.v = datenum(cell.v); + } else cell.t = 's'; + + ws[cell_ref] = cell; + } + } + if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range); + return ws; +} + +function Workbook() { + if (!(this instanceof Workbook)) return new Workbook(); + this.SheetNames = []; + this.Sheets = {}; +} + +function s2ab(s) { + var buf = new ArrayBuffer(s.length); + var view = new Uint8Array(buf); + for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; + return buf; +} + +export function export_table_to_excel(id) { + var theTable = document.getElementById(id); + var oo = generateArray(theTable); + var ranges = oo[1]; + + /* original data */ + var data = oo[0]; + var ws_name = "SheetJS"; + + var wb = new Workbook(), + ws = sheet_from_array_of_arrays(data); + + /* add ranges to worksheet */ + // ws['!cols'] = ['apple', 'banan']; + ws['!merges'] = ranges; + + /* add worksheet to workbook */ + wb.SheetNames.push(ws_name); + wb.Sheets[ws_name] = ws; + + var wbout = XLSX.write(wb, { + bookType: 'xlsx', + bookSST: false, + type: 'binary' + }); + + saveAs(new Blob([s2ab(wbout)], { + type: "application/octet-stream" + }), "test.xlsx") +} + +export function export_json_to_excel({ + multiHeader = [], + header, + data, + filename, + merges = [], + autoWidth = true, + bookType = 'xlsx' +} = {}) { + /* original data */ + filename = filename || 'excel-list' + data = [...data] + data.unshift(header); + + for (let i = multiHeader.length - 1; i > -1; i--) { + data.unshift(multiHeader[i]) + } + + var ws_name = "SheetJS"; + var wb = new Workbook(), + ws = sheet_from_array_of_arrays(data); + + if (merges.length > 0) { + if (!ws['!merges']) ws['!merges'] = []; + merges.forEach(item => { + ws['!merges'].push(XLSX.utils.decode_range(item)) + }) + } + + if (autoWidth) { + /*设置worksheet每列的最大宽度*/ + const colWidth = data.map(row => row.map(val => { + /*先判断是否为null/undefined*/ + if (val == null) { + return { + 'wch': 10 + }; + } + /*再判断是否为中文*/ + else if (val.toString().charCodeAt(0) > 255) { + return { + 'wch': val.toString().length * 2 + }; + } else { + return { + 'wch': val.toString().length + }; + } + })) + /*以第一行为初始值*/ + let result = colWidth[0]; + for (let i = 1; i < colWidth.length; i++) { + for (let j = 0; j < colWidth[i].length; j++) { + if (result[j]['wch'] < colWidth[i][j]['wch']) { + result[j]['wch'] = colWidth[i][j]['wch']; + } + } + } + ws['!cols'] = result; + } + + /* add worksheet to workbook */ + wb.SheetNames.push(ws_name); + wb.Sheets[ws_name] = ws; + + var wbout = XLSX.write(wb, { + bookType: bookType, + bookSST: false, + type: 'binary' + }); + saveAs(new Blob([s2ab(wbout)], { + type: "application/octet-stream" + }), `${filename}.${bookType}`); +} diff --git a/front-end/src/vendor/Export2Zip.js b/front-end/src/vendor/Export2Zip.js new file mode 100644 index 0000000..db70707 --- /dev/null +++ b/front-end/src/vendor/Export2Zip.js @@ -0,0 +1,24 @@ +/* eslint-disable */ +import { saveAs } from 'file-saver' +import JSZip from 'jszip' + +export function export_txt_to_zip(th, jsonData, txtName, zipName) { + const zip = new JSZip() + const txt_name = txtName || 'file' + const zip_name = zipName || 'file' + const data = jsonData + let txtData = `${th}\r\n` + data.forEach((row) => { + let tempStr = '' + tempStr = row.toString() + txtData += `${tempStr}\r\n` + }) + zip.file(`${txt_name}.txt`, txtData) + zip.generateAsync({ + type: "blob" + }).then((blob) => { + saveAs(blob, `${zip_name}.zip`) + }, (err) => { + alert('导出失败') + }) +} diff --git a/front-end/src/views/center-business/after/components/BaseInfoDialog.vue b/front-end/src/views/center-business/after/components/BaseInfoDialog.vue new file mode 100644 index 0000000..c14c55f --- /dev/null +++ b/front-end/src/views/center-business/after/components/BaseInfoDialog.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/front-end/src/views/center-business/after/components/InternalOrderList.vue b/front-end/src/views/center-business/after/components/InternalOrderList.vue new file mode 100644 index 0000000..f4f0ef9 --- /dev/null +++ b/front-end/src/views/center-business/after/components/InternalOrderList.vue @@ -0,0 +1,181 @@ + +