From bb6e2230bb8ded3c5546bc4e4c282ee343754475 Mon Sep 17 00:00:00 2001 From: ke_junjie <508432735@qq.com> Date: 周三, 04 6月 2025 13:36:49 +0800 Subject: [PATCH] 修改 --- qqjf-Web/src/api/forklift.js | 34 qqjf-Web/src/icons/svg/logo.svg | 1 qqjf-Web/src/styles/sidebar.scss | 84 qqjf-Web/src/views/reportforms/rateequipment/index.vue | 135 qqjf-Web/src/icons/svg/pdf.svg | 1 qqjf-Web/src/icons/svg/search.svg | 1 qqjf-Web/src/components/chooseRelevanceFinishedPart/index.vue | 358 qqjf-Web/src/icons/svg/outbound.svg | 1 qqjf-Web/src/vendor/Blob.js | 162 qqjf-Web/src/views/storage/components/inventoryEdit.vue | 166 qqjf-Web/src/views/reportforms/turnover/index.vue | 144 qqjf-Web/src/views/dataview/output.vue | 129 qqjf-Web/src/api/outbound.js | 60 qqjf-Web/src/icons/svg/record-chart.svg | 1 qqjf-Web/src/views/storage/components/viewdatainfo.vue | 77 qqjf-Web/src/utils/index.js | 357 qqjf-Web/src/views/Didproject/index.vue | 263 qqjf-Web/src/icons/svg/excel.svg | 1 qqjf-Web/src/icons/svg/skill.svg | 1 qqjf-Web/src/views/basicInfo/components/stackerEdit.vue | 113 qqjf-Web/src/views/dataview/rateequipment.vue | 141 qqjf-Web/src/components/tableContainer/index.vue | 654 qqjf-Web/src/icons/svg/bug.svg | 1 qqjf-Web/src/views/storage/setting/palte/index.vue | 196 qqjf-Web/src/assets/login/bg.jpg | 0 qqjf-Web/src/views/dataview/turnover.vue | 138 qqjf-Web/src/api/warning.js | 55 qqjf-Web/src/icons/svg/email.svg | 1 qqjf-Web/package.json | 72 qqjf-Web/src/router/_import_development.js | 3 qqjf-Web/src/views/Didproject/components/didnav.vue | 111 qqjf-Web/src/views/Home/index.vue | 296 qqjf-Web/src/store/index.js | 26 qqjf-Web/.gitignore | 23 qqjf-Web/src/icons/svg/eye.svg | 1 qqjf-Web/src/components/modal/index.vue | 115 qqjf-Web/src/router/index.js | 140 qqjf-Web/src/views/storage/setting/choose/index.vue | 365 qqjf-Web/src/views/outbound/regulator/plant/index.vue | 321 qqjf-Web/src/api/dept.js | 38 qqjf-Web/.prettierrc.js | 8 qqjf-Web/src/utils/request.js | 96 qqjf-Web/src/views/task/taskdocuments/index.vue | 205 qqjf-Web/src/views/storage/base/materials/index.vue | 170 qqjf-Web/src/icons/svg/align-right.svg | 1 qqjf-Web/src/icons/svg/drag.svg | 1 qqjf-Web/src/views/storage/components/storage-inquer.vue | 424 qqjf-Web/babel.config.js | 5 qqjf-Web/src/api/quotation.js | 98 qqjf-Web/src/api/ProductionLine.js | 38 qqjf-Web/src/views/Home/components/tasktimeecharts.vue | 210 qqjf-Web/src/views/Didproject/components/didinquer.vue | 33 qqjf-Web/src/api/equipmenttask.js | 26 qqjf-Web/src/views/basicInfo/equipmenttask/avroRecord/index.vue | 202 qqjf-Web/src/views/dataview/tasktime.vue | 104 qqjf-Web/src/icons/svg/education.svg | 1 qqjf-Web/src/views/reportforms/workpiece/index.vue | 130 qqjf-Web/src/views/reportforms/statistics/components/eltablecolumn.vue | 30 qqjf-Web/src/api/manage.js | 38 qqjf-Web/src/views/dataview/taskbeat.vue | 69 qqjf-Web/src/icons/svg/edit.svg | 1 qqjf-Web/src/icons/svg/money.svg | 1 qqjf-Web/src/store/modules/setting.js | 22 qqjf-Web/src/views/storage/components/palteEdit.vue | 263 qqjf-Web/src/views/basicInfo/components/baseinquer.vue | 172 qqjf-Web/src/assets/heard/logbg.jpg | 0 qqjf-Web/src/utils/excel.js | 16 qqjf-Web/src/utils/validate.js | 87 qqjf-Web/src/icons/svg/documentation.svg | 1 qqjf-Web/src/views/system/user/roleAuth/index.vue | 360 qqjf-Web/src/icons/svg/dashboard.svg | 1 qqjf-Web/vue.config.js | 160 qqjf-Web/src/views/dataview/product.vue | 66 qqjf-Web/src/icons/svg/him.svg | 1 qqjf-Web/src/views/storage/index.vue | 11 qqjf-Web/src/views/Home/components/turnoverEchart.vue | 207 qqjf-Web/src/icons/svg/password.svg | 1 qqjf-Web/.env.production | 10 qqjf-Web/src/api/viewdata.js | 38 qqjf-Web/src/api/Didproject.js | 79 qqjf-Web/src/api/enterchoose.js | 106 qqjf-Web/src/views/task/forklifttasks/index.vue | 246 qqjf-Web/src/Layout/components/Sidebar/item.vue | 42 qqjf-Web/src/styles/transition.scss | 31 qqjf-Web/src/views/outbound/index.vue | 11 qqjf-Web/src/Layout/components/Sidebar/SidebarItem.vue | 49 qqjf-Web/src/views/inbound/purchase/intype/index.vue | 186 qqjf-Web/src/views/basicInfo/equipmenttask/rgvtask/index.vue | 217 qqjf-Web/src/settings.js | 43 qqjf-Web/src/api/enter.js | 80 qqjf-Web/src/views/outbound/components/outinquer.vue | 111 qqjf-Web/src/views/inbound/index.vue | 11 qqjf-Web/src/icons/svg/link.svg | 1 qqjf-Web/src/components/tableContainer/tableHead.js | 2084 ++ qqjf-Web/src/icons/svg/star.svg | 1 qqjf-Web/src/views/Didproject/components/lineEcharts.vue | 215 qqjf-Web/src/icons/svg/nested.svg | 1 qqjf-Web/src/views/Didproject/components/pieEcharts.vue | 130 qqjf-Web/src/views/inbound/purchase/index.vue | 9 qqjf-Web/src/api/statistics.js | 14 qqjf-Web/src/icons/svg/lock.svg | 1 qqjf-Web/src/icons/svg/trade.svg | 1 qqjf-Web/src/views/storage/setting/storage-area/index.vue | 9 qqjf-Web/src/views/reportforms/statistics/components/statisticsinquer.vue | 273 qqjf-Web/src/icons/svg/icon.svg | 1 qqjf-Web/src/views/dataview/statelibrary.vue | 117 qqjf-Web/src/icons/svg/in-storage.svg | 1 qqjf-Web/src/api/palte.js | 63 qqjf-Web/src/views/Home/components/product.vue | 202 qqjf-Web/src/icons/svg/wechat.svg | 1 qqjf-Web/src/api/role-auth.js | 53 qqjf-Web/src/utils/getPageTitle.js | 7 qqjf-Web/src/views/system/user/index.vue | 9 qqjf-Web/src/icons/svg/language.svg | 1 qqjf-Web/src/utils/auth.js | 15 qqjf-Web/src/store/modules/tagsView.js | 195 qqjf-Web/src/views/reportforms/tasktime/index.vue | 111 qqjf-Web/src/views/task/index.vue | 11 qqjf-Web/src/components/SvgIcon/index.vue | 49 qqjf-Web/src/views/inbound/purchase/confirm_welding/index.vue | 734 qqjf-Web/src/store/modules/user.js | 46 qqjf-Web/src/styles/innner-circles.scss | 51 qqjf-Web/src/views/task/components/maintaskEdit.vue | 283 qqjf-Web/src/views/inbound/components/partschoose.vue | 104 qqjf-Web/src/api/output.js | 14 qqjf-Web/src/router/modules/base.js | 379 qqjf-Web/src/components/index.js | 7 qqjf-Web/public/favicon.ico | 0 qqjf-Web/src/api/reportforms.js | 91 qqjf-Web/src/views/basicInfo/components/warningEdit.vue | 144 qqjf-Web/src/views/storage/components/forkliftEdit.vue | 175 qqjf-Web/src/mixins/layout.js | 33 qqjf-Web/src/icons/svg/size.svg | 1 qqjf-Web/src/icons/svg/message.svg | 1 qqjf-Web/src/api/cass-line.js | 36 qqjf-Web/src/views/storage/components/storageEdit.vue | 173 qqjf-Web/src/views/reportforms/product/index.vue | 75 qqjf-Web/src/api/avroRecord.js | 25 qqjf-Web/src/views/system/index.vue | 11 qqjf-Web/src/views/storage/setting/cass-line/index.vue | 169 qqjf-Web/src/views/storage/components/casslineEdit.vue | 133 qqjf-Web/src/icons/svg/table.svg | 1 qqjf-Web/src/views/basicInfo/index.vue | 11 qqjf-Web/src/icons/svg/exit-fullscreen.svg | 1 qqjf-Web/src/icons/svg/zip.svg | 1 qqjf-Web/.env.development | 5 qqjf-Web/src/styles/index.scss | 705 qqjf-Web/src/Layout/components/Sidebar/index.vue | 111 qqjf-Web/src/vendor/Export2Excel.js | 139 qqjf-Web/src/views/inbound/purchase/enter/index.vue | 290 qqjf-Web/src/router/_import_production.js | 2 qqjf-Web/src/mixins/resize.js | 65 qqjf-Web/src/icons/svg/clipboard.svg | 1 qqjf-Web/src/api/inventory.js | 57 qqjf-Web/src/views/basicInfo/equipmenttask/piler/index.vue | 236 qqjf-Web/src/icons/svg/list.svg | 1 qqjf-Web/src/views/Didproject/components/classify.vue | 107 qqjf-Web/src/views/inbound/components/inboundinuqer.vue | 240 qqjf-Web/src/icons/svg/tree-table.svg | 1 qqjf-Web/src/assets/heard/heard.jpg | 0 qqjf-Web/src/views/dataview/components/lineEcharts.vue | 179 qqjf-Web/src/Layout/components/Appmain.vue | 52 qqjf-Web/src/views/Home/components/warehouseechart.vue | 235 qqjf-Web/src/views/system/user/dept/index.vue | 165 qqjf-Web/src/Layout/index.vue | 104 qqjf-Web/src/views/dataview/classified.vue | 48 qqjf-Web/src/utils/vab.js | 23 qqjf-Web/src/views/reportforms/index.vue | 11 qqjf-Web/src/components/autoscroll/index.vue | 197 qqjf-Web/src/Layout/components/navbar.vue | 135 qqjf-Web/src/views/storage/components/positionEdit.vue | 178 qqjf-Web/src/views/statistics/index.vue | 9 qqjf-Web/jsconfig.json | 9 qqjf-Web/src/api/role.js | 38 qqjf-Web/src/icons/svg/theme.svg | 1 qqjf-Web/public/index.html | 19 qqjf-Web/src/views/basicInfo/base/warning/index.vue | 204 qqjf-Web/src/views/system/user/role/index.vue | 156 qqjf-Web/src/assets/heard/heard1.jpg | 0 qqjf-Web/src/views/task/components/maintask-inquer.vue | 212 qqjf-Web/src/icons/svg/component.svg | 1 qqjf-Web/src/icons/svg/storage.svg | 1 qqjf-Web/src/icons/index.js | 9 qqjf-Web/src/icons/svg/example.svg | 1 qqjf-Web/src/views/login/index.vue | 360 qqjf-Web/.eslintrc.js | 26 qqjf-Web/src/views/storage/components/chooseEdit.vue | 262 qqjf-Web/src/icons/svg/sys.svg | 1 qqjf-Web/src/Layout/components/TagsView/ScrollPane.vue | 94 qqjf-Web/src/api/intype.js | 14 qqjf-Web/src/views/basicInfo/equipmenttask/index.vue | 9 qqjf-Web/src/views/reportforms/Taskbeat/index.vue | 74 qqjf-Web/src/views/system/user/components/roleEdIt.vue | 139 qqjf-Web/src/icons/svg/inbound.svg | 1 qqjf-Web/src/views/Home/components/rateequipment.vue | 204 qqjf-Web/src/views/task/taskrecord/index.vue | 345 qqjf-Web/src/styles/variables.scss | 35 qqjf-Web/src/api/stacker.js | 38 qqjf-Web/src/icons/svg/peoples.svg | 1 qqjf-Web/src/views/basicInfo/base/index.vue | 9 qqjf-Web/src/views/reportforms/warehouse/index.vue | 72 qqjf-Web/src/views/reportforms/movablerate/index.vue | 132 qqjf-Web/src/api/maintask.js | 77 qqjf-Web/src/views/storage/components/viewdataInquer.vue | 141 qqjf-Web/src/main.js | 35 qqjf-Web/src/views/reportforms/statistics/components/statisticstable.vue | 121 qqjf-Web/src/views/Home/components/lefttop.vue | 65 qqjf-Web/src/icons/svg/out-storage.svg | 1 qqjf-Web/src/icons/svg/tab.svg | 1 qqjf-Web/src/icons/svg/user.svg | 1 qqjf-Web/src/utils/axios.js | 61 qqjf-Web/src/App.vue | 28 qqjf-Web/src/views/inbound/components/quotaionEdit.vue | 345 qqjf-Web/src/icons/svg/tree.svg | 1 qqjf-Web/src/views/inbound/purchase/quotation/index.vue | 342 qqjf-Web/src/permission.js | 134 qqjf-Web/src/utils/sessionStorage.js | 39 qqjf-Web/src/utils/date.js | 156 qqjf-Web/src/views/storage/setting/choose/components/limitModal.vue | 139 qqjf-Web/src/views/system/user/components/deptEdit.vue | 135 qqjf-Web/src/views/system/user/manage/index.vue | 172 qqjf-Web/package-lock.json | 15387 +++++++++++++++++++ qqjf-Web/src/api/taskrecord.js | 25 qqjf-Web/src/plugins/mapServer.js | 5 qqjf-Web/src/views/dataview/workpiece.vue | 142 qqjf-Web/src/api/position.js | 45 qqjf-Web/src/utils/debounce.js | 23 qqjf-Web/src/views/reportforms/statistics/index.vue | 167 qqjf-Web/src/icons/svg/chart.svg | 1 qqjf-Web/src/Layout/components/TagsView/index.vue | 294 qqjf-Web/src/views/storage/base/index.vue | 9 qqjf-Web/src/components/choose/addchoose.vue | 183 qqjf-Web/src/views/basicInfo/base/stacker/index.vue | 159 qqjf-Web/src/views/outbound/components/plantEdit.vue | 435 qqjf-Web/src/views/reportforms/classified/index.vue | 59 qqjf-Web/src/icons/svg/people.svg | 1 qqjf-Web/src/views/inbound/purchase/input_finished_product/index.vue | 736 qqjf-Web/src/views/task/maintask/index.vue | 430 qqjf-Web/src/store/modules/permission.js | 53 qqjf-Web/src/views/storage/base/viewdata/index.vue | 233 qqjf-Web/src/views/test/index.vue | 35 qqjf-Web/src/views/Home/components/movablerateechart.vue | 206 qqjf-Web/src/assets/css/TimesNewRomanPSMT24163565.ttf | 0 qqjf-Web/src/Layout/components/index.js | 2 qqjf-Web/src/icons/svg/fullscreen.svg | 1 qqjf-Web/src/views/Home/components/sourceEchart.vue | 121 qqjf-Web/src/views/inbound/components/quotaion_relevanceEdit.vue | 381 qqjf-Web/src/icons/svg/homePage.svg | 1 qqjf-Web/src/utils/throttle.js | 18 qqjf-Web/src/views/inbound/components/enterchoose.vue | 149 qqjf-Web/src/views/storage/base/inventory/index.vue | 232 qqjf-Web/src/components/autoscroll/eleResize.js | 110 qqjf-Web/src/api/materials.js | 15 qqjf-Web/src/styles/elemen-ui.scss | 4 qqjf-Web/src/utils/input.js | 42 qqjf-Web/src/views/storage/setting/position/index.vue | 170 qqjf-Web/src/icons/svg/international.svg | 1 qqjf-Web/src/icons/svg/shopping.svg | 1 qqjf-Web/src/store/getters.js | 7 qqjf-Web/src/views/dataview/warehouse.vue | 70 qqjf-Web/src/views/reportforms/output/index.vue | 160 qqjf-Web/src/icons/svg/form.svg | 1 qqjf-Web/src/views/outbound/regulator/index.vue | 9 qqjf-Web/src/components/TreeTable/index.vue | 159 qqjf-Web/src/views/storage/setting/storage/index.vue | 136 qqjf-Web/src/api/register.js | 15 qqjf-Web/src/components/choose/choose.vue | 211 qqjf-Web/src/api/forklifttasks.js | 55 qqjf-Web/src/views/system/user/components/manageEdit.vue | 199 qqjf-Web/src/views/dataview/movablerate.vue | 135 qqjf-Web/src/views/task/components/forklifttasksEdit.vue | 254 qqjf-Web/src/plugins/cdn.js | 11 qqjf-Web/src/views/system/user/components/topinquer.vue | 120 qqjf-Web/src/views/storage/setting/forklift/index.vue | 176 qqjf-Web/src/components/TreeTable/readme.md | 89 qqjf-Web/src/views/reportforms/statelibrary/index.vue | 106 qqjf-Web/src/icons/svg/eye-open.svg | 1 qqjf-Web/src/views/storage/setting/index.vue | 9 qqjf-Web/src/views/inbound/components/enterEdit.vue | 544 qqjf-Web/src/views/Didproject/components/notice.vue | 83 qqjf-Web/src/components/TreeTable/eval.js | 30 qqjf-Web/src/icons/svg/guide.svg | 1 qqjf-Web/src/assets/heard/logo.png | 0 qqjf-Web/src/components/chooseUser/index.vue | 212 qqjf-Web/src/icons/svg/404.svg | 1 qqjf-Web/src/views/Home/components/meterEchart.vue | 273 qqjf-Web/src/icons/svg/qq.svg | 1 qqjf-Web/src/components/title/index.vue | 26 288 files changed, 46,306 insertions(+), 0 deletions(-) diff --git a/qqjf-Web/.env.development b/qqjf-Web/.env.development new file mode 100644 index 0000000..3e70522 --- /dev/null +++ b/qqjf-Web/.env.development @@ -0,0 +1,5 @@ +# just a flag +ENV = 'development' + +# base api +VUE_APP_BASE_API = '/' \ No newline at end of file diff --git a/qqjf-Web/.env.production b/qqjf-Web/.env.production new file mode 100644 index 0000000..0417b86 --- /dev/null +++ b/qqjf-Web/.env.production @@ -0,0 +1,10 @@ +# just a flag +ENV = 'production' + +# base api +#VUE_APP_BASE_API = 'http://10.103.11.236:8085' #姝e紡鍙戝竷鐢ㄨ繖涓� 11缃戞 +# VUE_APP_BASE_API = 'http://10.103.9.200:8085' #姝e紡鍙戝竷鐢ㄨ繖涓� 9缃戞 +#VUE_APP_BASE_API = 'http://192.168.137.200:8085' #娴嬭瘯鐜鐢ㄨ繖涓� + +VUE_APP_BASE_API = 'http://localhost:6099' +# VUE_APP_BASE_API = '/' \ No newline at end of file diff --git a/qqjf-Web/.eslintrc.js b/qqjf-Web/.eslintrc.js new file mode 100644 index 0000000..3e7b17a --- /dev/null +++ b/qqjf-Web/.eslintrc.js @@ -0,0 +1,26 @@ +module.exports = { + root: true, + env: { + node: true + }, + extends: ['plugin:vue/essential', 'eslint:recommended', '@vue/prettier'], + parserOptions: { + parser: 'babel-eslint' + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + semi: 'off', + 'no-unused-vars': [2, { vars: 'all', args: 'none' }], + quotes: 'off', + 'no-dupe-keys': 'off' + }, + overrides: [ + { + files: ['**/__tests__/*.{j,t}s?(x)', '**/tests/unit/**/*.spec.{j,t}s?(x)'], + env: { + jest: true + } + } + ] +}; diff --git a/qqjf-Web/.gitignore b/qqjf-Web/.gitignore new file mode 100644 index 0000000..f2bacfe --- /dev/null +++ b/qqjf-Web/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/dist +.history + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/qqjf-Web/.prettierrc.js b/qqjf-Web/.prettierrc.js new file mode 100644 index 0000000..16f5b05 --- /dev/null +++ b/qqjf-Web/.prettierrc.js @@ -0,0 +1,8 @@ +module.exports = { + trailingComma: 'none', + tabWidth: 2, + semi: true, + singleQuote: true, + printWidth: 120, + arrowParens: 'avoid' +}; diff --git a/qqjf-Web/babel.config.js b/qqjf-Web/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/qqjf-Web/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/qqjf-Web/jsconfig.json b/qqjf-Web/jsconfig.json new file mode 100644 index 0000000..958df04 --- /dev/null +++ b/qqjf-Web/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@/*": ["src/*"] + } + }, + "exclude": ["node_modules", "dist"] +} \ No newline at end of file diff --git a/qqjf-Web/package-lock.json b/qqjf-Web/package-lock.json new file mode 100644 index 0000000..23b5d57 --- /dev/null +++ b/qqjf-Web/package-lock.json @@ -0,0 +1,15387 @@ +{ + "name": "wbtoubiao", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@achrinza/node-ipc": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz", + "integrity": "sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==", + "dev": true, + "requires": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + } + }, + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", + "dev": true + }, + "@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + } + }, + "@babel/helpers": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.13", + "@babel/types": "^7.20.7" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz", + "integrity": "sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.20.12", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/plugin-syntax-decorators": "^7.19.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", + "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", + "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.11" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/traverse": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.13", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@microsoft/signalr": { + "version": "5.0.17", + "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-5.0.17.tgz", + "integrity": "sha512-zTjFxjh67WWCe35ZipsqkktM5mM+MsckyyI2ZvFmYWR7ibpUoAyZI1DFdYfwXfsyBdlykDaW84o9lrB+9tDpaA==", + "requires": { + "abort-controller": "^3.0.0", + "eventsource": "^1.0.7", + "fetch-cookie": "^0.7.3", + "node-fetch": "^2.6.7", + "ws": "^6.0.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dev": true, + "requires": { + "easy-stack": "1.0.1" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/tapable": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", + "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", + "dev": true + }, + "@types/uglify-js": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz", + "integrity": "sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "@types/webpack": { + "version": "4.41.33", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz", + "integrity": "sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + } + }, + "@types/webpack-dev-server": { + "version": "3.11.6", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz", + "integrity": "sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==", + "dev": true, + "requires": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-static": "*", + "@types/webpack": "^4", + "http-proxy-middleware": "^1.0.0" + } + }, + "@types/webpack-sources": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", + "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } + } + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", + "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", + "dev": true + }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", + "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", + "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true + } + } + }, + "@vue/babel-preset-app": { + "version": "4.5.19", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz", + "integrity": "sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.2.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/babel-preset-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", + "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", + "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", + "@vue/babel-sugar-functional-vue": "^1.4.0", + "@vue/babel-sugar-inject-h": "^1.4.0", + "@vue/babel-sugar-v-model": "^1.4.0", + "@vue/babel-sugar-v-on": "^1.4.0" + } + }, + "@vue/babel-sugar-composition-api-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", + "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-composition-api-render-instance": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", + "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", + "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", + "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", + "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true + } + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", + "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "@vue/cli-overlay": { + "version": "4.5.19", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.19.tgz", + "integrity": "sha512-GdxvNSmOw7NHIazCO8gTK+xZbaOmScTtxj6eHVeMbYpDYVPJ+th3VMLWNpw/b6uOjwzzcyKlA5dRQ1DAb+gF/g==", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "4.5.19", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.19.tgz", + "integrity": "sha512-8ebXzaMW9KNTMAN6+DzkhFsjty1ieqT7hIW5Lbk4v30Qhfjkms7lBWyXPGkoq+wAikXFa1Gnam2xmWOBqDDvWg==", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.19", + "@vue/cli-shared-utils": "^4.5.19", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + } + }, + "@vue/cli-plugin-eslint": { + "version": "4.5.19", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.19.tgz", + "integrity": "sha512-53sa4Pu9j5KajesFlj494CcO8vVo3e3nnZ1CCKjGGnrF90id1rUeepcFfz5XjwfEtbJZp2x/NoX/EZE6zCzSFQ==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.19", + "eslint-loader": "^2.2.1", + "globby": "^9.2.0", + "inquirer": "^7.1.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + } + }, + "@vue/cli-plugin-router": { + "version": "4.5.19", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.19.tgz", + "integrity": "sha512-3icGzH1IbVYmMMsOwYa0lal/gtvZLebFXdE5hcQJo2mnTwngXGMTyYAzL56EgHBPjbMmRpyj6Iw9k4aVInVX6A==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.19" + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.5.19", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.19.tgz", + "integrity": "sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==", + "dev": true + }, + "@vue/cli-service": { + "version": "4.5.19", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.19.tgz", + "integrity": "sha512-+Wpvj8fMTCt9ZPOLu5YaLkFCQmB4MrZ26aRmhhKiCQ/4PMoL6mLezfqdt6c+m2htM+1WV5RunRo+0WHl2DfwZA==", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@soda/get-current-script": "^1.0.0", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.19", + "@vue/cli-plugin-router": "^4.5.19", + "@vue/cli-plugin-vuex": "^4.5.19", + "@vue/cli-shared-utils": "^4.5.19", + "@vue/component-compiler-utils": "^3.1.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", + "postcss-loader": "^3.0.0", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^1.4.4", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-loader-v16": "npm:vue-loader@^16.1.0", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.5.19", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.19.tgz", + "integrity": "sha512-JYpdsrC/d9elerKxbEUtmSSU6QRM60rirVubOewECHkBHj+tLNznWq/EhCjswywtePyLaMUK25eTqnTSZlEE+g==", + "dev": true, + "requires": { + "@achrinza/node-ipc": "9.2.2", + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@vue/compiler-sfc": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", + "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", + "requires": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2 || ^2.0.0", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "@vue/eslint-config-prettier": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz", + "integrity": "sha512-wFQmv45c3ige5EA+ngijq40YpVcIkAy0Lihupnsnd1Dao5CBbPyfCzqtejFLZX1EwH/kCJdpz3t6s+5wd3+KxQ==", + "dev": true, + "requires": { + "eslint-config-prettier": "^6.0.0" + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz", + "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==", + "dev": true + }, + "@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true + }, + "adler-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", + "integrity": "sha512-/vUqU/UY4MVeFsg+SsK6c+/05RZXIHZMGJA+PX5JyWI0ZRcBpupnRuPLU/NXXoFwMYCPCoxIfElM2eS+DUXCqQ==", + "requires": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "array.prototype.reduce": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", + "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.5.tgz", + "integrity": "sha512-5QzqtU3BlagehwmdoqwaS2FBQF2P5eL6vFqXwNsb5jwoEsmtfAXg1ocFvW7I6/gGLFhBMKwcMwZuy7uv/Bo9jA==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "async-validator": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz", + "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", + "requires": { + "babel-runtime": "6.x" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" + }, + "babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + } + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "optional": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", + "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", + "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", + "dev": true, + "requires": { + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", + "dev": true + } + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001450", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz", + "integrity": "sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew==", + "dev": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "requires": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "dependencies": { + "adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" + } + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "compression-webpack-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-5.0.2.tgz", + "integrity": "sha512-F2G4cQfsMZ6CiPlG22Q5EDUCqnfyZqTjyJP5cMgNYUbBg/dUzV3hto8yTFFIogDCTWooVbePHQE0qL6FrJUSsA==", + "requires": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "schema-utils": "^2.7.0", + "serialize-javascript": "^4.0.0", + "webpack-sources": "^1.4.3" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", + "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "core-js": { + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz", + "integrity": "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==" + }, + "core-js-compat": { + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz", + "integrity": "sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==", + "dev": true, + "requires": { + "browserslist": "^4.21.4" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "css-loader": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + } + } + }, + "csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + }, + "default-gateway": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-5.0.5.tgz", + "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==", + "dev": true, + "requires": { + "execa": "^3.3.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + } + } + }, + "domready": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz", + "integrity": "sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "echarts": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.1.tgz", + "integrity": "sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.4.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "el-table-infinite-scroll": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/el-table-infinite-scroll/-/el-table-infinite-scroll-1.0.11.tgz", + "integrity": "sha512-yHIs/jbsCEOSHpBkFEhvxHadPyFkATwldDrPBfQONcgh0ZmvZnL0XR1q/jEPcyJcGi6AwoxW4hiKMaHqIXPYCQ==", + "requires": { + "core-js": "^2.6.5", + "element-ui": "^2.12.0", + "vue": "^2.6.10" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + } + } + }, + "electron-to-chromium": { + "version": "1.4.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.286.tgz", + "integrity": "sha512-Vp3CVhmYpgf4iXNKAucoQUDcCrBQX3XLBtwgFqP9BUXuucgvAV9zWp1kYU7LL9j4++s9O+12cb3wMtN4SJy6UQ==", + "dev": true + }, + "element-ui": { + "version": "2.15.12", + "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.12.tgz", + "integrity": "sha512-Y5FMT2BPOindU2GkDEQ5ZKUVxDawKONRNMh2eL3uBx1FOtvUJ+L6IxXLVsNxq4WnaX/UnVNgWXebl7DobygZMg==", + "requires": { + "async-validator": "~1.8.1", + "babel-helper-vue-jsx-merge-props": "^2.0.0", + "deepmerge": "^1.2.0", + "normalize-wheel": "^1.0.1", + "resize-observer-polyfill": "^1.5.0", + "throttle-debounce": "^1.0.1" + } + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "requires": { + "stackframe": "^1.3.4" + } + }, + "es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-denodeify": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", + "integrity": "sha512-731Rf4NqlPvhkT1pIF7r8vZxESJlWocNpXLuyPlVnfEGXlwuJaMvU5WpyyDjpudDC2cgXVX849xljzvQqBg1QQ==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", + "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-vue": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz", + "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==", + "dev": true, + "requires": { + "natural-compare": "^1.4.0", + "semver": "^5.6.0", + "vue-eslint-parser": "^7.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "eventsource": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", + "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fetch-cookie": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.7.3.tgz", + "integrity": "sha512-rZPkLnI8x5V+zYAiz8QonAHsTb4BY+iFowFBI1RFn0zrO343AVp9X7/yUj/9wL6Ef/8fLls8b/vGtzUvmyAUGA==", + "requires": { + "es6-denodeify": "^0.1.1", + "tough-cookie": "^2.3.3" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", + "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "globule": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "^4.17.21", + "minimatch": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + } + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", + "dev": true + }, + "html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + } + } + }, + "html-tags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + }, + "dependencies": { + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz", + "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true + }, + "jquery": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz", + "integrity": "sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg==" + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-cookie": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + }, + "js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "launch-editor-middleware": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.6.0.tgz", + "integrity": "sha512-K2yxgljj5TdCeRN1lBtO3/J26+AIDDDw+04y6VAiZbWcTdBwsYN6RrZBnW5DN/QiSIdKNjKdATLUUluWWFYTIA==", + "dev": true, + "requires": { + "launch-editor": "^2.6.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz", + "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.1" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + } + } + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mitt": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.2.tgz", + "integrity": "sha512-3btxP0O9iGADGWAkteQ8mzDtEspZqu4I32y4GZYCV5BrwtzdcRpF4dQgNdJadCrbBx7Lu6Sq9AVrerMHR0Hkmw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + } + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + } + } + }, + "node-releases": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz", + "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA==", + "dev": true + }, + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", + "dev": true, + "requires": { + "array.prototype.reduce": "^1.0.5", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", + "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-prefix-selector": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz", + "integrity": "sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==", + "dev": true + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "posthtml": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz", + "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==", + "dev": true, + "requires": { + "posthtml-parser": "^0.2.0", + "posthtml-render": "^1.0.5" + } + }, + "posthtml-parser": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz", + "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==", + "dev": true, + "requires": { + "htmlparser2": "^3.8.3", + "isobject": "^2.1.0" + }, + "dependencies": { + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "posthtml-rename-id": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz", + "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "posthtml-render": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz", + "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", + "dev": true + }, + "posthtml-svg-mode": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz", + "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==", + "dev": true, + "requires": { + "merge-options": "1.0.1", + "posthtml": "^0.9.2", + "posthtml-parser": "^0.2.1", + "posthtml-render": "^1.0.6" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true + }, + "prettier": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha512-sf7oGoLuaYAScB4VGr0tzetsYlS8EJH6qnTCfQ/WVEa89hALQ4RQfCKt5xCyPQKPDUbVUAIP1QsxAwfAjlDp7Q==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + } + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "screenfull": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz", + "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==" + }, + "script-loader": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.2.tgz", + "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==", + "dev": true, + "requires": { + "raw-loader": "~0.5.1" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shell-quote": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "sockjs-client": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", + "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "eventsource": "^2.0.2", + "faye-websocket": "^0.11.4", + "inherits": "^2.0.4", + "url-parse": "^1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", + "dev": true + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + } + } + }, + "sortablejs": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "requires": { + "frac": "~1.1.2" + } + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "requires": { + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + } + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svg-baker": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/svg-baker/-/svg-baker-1.7.0.tgz", + "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "clone": "^2.1.1", + "he": "^1.1.1", + "image-size": "^0.5.1", + "loader-utils": "^1.1.0", + "merge-options": "1.0.1", + "micromatch": "3.1.0", + "postcss": "^5.2.17", + "postcss-prefix-selector": "^1.6.0", + "posthtml-rename-id": "^1.0", + "posthtml-svg-mode": "^1.0.3", + "query-string": "^4.3.2", + "traverse": "^0.6.6" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "micromatch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz", + "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.2.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "extglob": "^2.0.2", + "fragment-cache": "^0.2.1", + "kind-of": "^5.0.2", + "nanomatch": "^1.2.1", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "svg-baker-runtime": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz", + "integrity": "sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==", + "dev": true, + "requires": { + "deepmerge": "1.3.2", + "mitt": "1.1.2", + "svg-baker": "^1.7.0" + }, + "dependencies": { + "deepmerge": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz", + "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==", + "dev": true + } + } + }, + "svg-sprite-loader": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-6.0.11.tgz", + "integrity": "sha512-TedsTf8wsHH6HgdwKjUveDZRC6q5gPloYV8A8/zZaRWP929J7x6TzQ6MvZFl+YYDJuJ0Akyuu/vNVJ+fbPuYXg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "deepmerge": "1.3.2", + "domready": "1.0.8", + "escape-string-regexp": "1.0.5", + "loader-utils": "^1.1.0", + "svg-baker": "^1.5.0", + "svg-baker-runtime": "^1.4.7", + "url-slug": "2.0.0" + }, + "dependencies": { + "deepmerge": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz", + "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.1.tgz", + "integrity": "sha512-V9esFpNbK0arbN3fm2sxDKqMYgIp7XtVdE4Esj+PE4Qaaxdg1wIw48ITQIOn1sc8xXSmUviVL3cyjMqPlrVkiA==" + } + } + }, + "terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "throttle-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz", + "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "traverse": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + } + } + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "unidecode": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/unidecode/-/unidecode-0.1.8.tgz", + "integrity": "sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/url-slug/-/url-slug-2.0.0.tgz", + "integrity": "sha512-aiNmSsVgrjCiJ2+KWPferjT46YFKoE8i0YX04BlMVDue022Xwhg/zYlnZ6V9/mP3p8Wj7LEp0myiTkC/p6sxew==", + "dev": true, + "requires": { + "unidecode": "0.1.8" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vue": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", + "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "requires": { + "@vue/compiler-sfc": "2.7.14", + "csstype": "^3.1.0" + } + }, + "vue-count-to": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/vue-count-to/-/vue-count-to-1.0.13.tgz", + "integrity": "sha512-6R4OVBVNtQTlcbXu6SJ8ENR35M2/CdWt3Jmv57jOUM+1ojiFmjVGvZPH8DfHpMDSA+ITs+EW5V6qthADxeyYOQ==" + }, + "vue-eslint-parser": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", + "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^6.3.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-loader": { + "version": "15.10.1", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz", + "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "vue-router": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz", + "integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==" + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "vue-template-compiler": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", + "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "vuedraggable": { + "version": "2.24.3", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz", + "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==", + "requires": { + "sortablejs": "1.10.2" + } + }, + "vuex": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==" + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", + "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.19", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + } + }, + "webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "webpack-dev-server": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", + "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", + "dev": true, + "requires": { + "ansi-html-community": "0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xlsx": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.17.5.tgz", + "integrity": "sha512-lXNU0TuYsvElzvtI6O7WIVb9Zar1XYw7Xb3VAx2wn8N/n0whBYrCnHMxtFyIiUU1Wjf09WzmLALDfBO5PqTb1g==", + "requires": { + "adler-32": "~1.2.0", + "cfb": "^1.1.4", + "codepage": "~1.15.0", + "crc-32": "~1.2.0", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "zrender": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.1.tgz", + "integrity": "sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==", + "requires": { + "tslib": "2.3.0" + } + } + } +} diff --git a/qqjf-Web/package.json b/qqjf-Web/package.json new file mode 100644 index 0000000..0a0411e --- /dev/null +++ b/qqjf-Web/package.json @@ -0,0 +1,72 @@ +{ + "name": "wbtoubiao", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint", + "start": "npm run serve" + }, + "dependencies": { + "@microsoft/signalr": "^5.0.5", + "axios": "^0.21.1", + "compression-webpack-plugin": "^5.0.1", + "core-js": "^3.6.5", + "dayjs": "^1.11.1", + "echarts": "^5.1.2", + "el-table-infinite-scroll": "^1.0.10", + "element-ui": "^2.15.8", + "file-saver": "^2.0.5", + "jquery": "^3.6.0", + "js-cookie": "^2.2.1", + "nprogress": "^0.2.0", + "qs": "^6.5.2", + "screenfull": "^5.1.0", + "vue": "^2.6.11", + "vue-count-to": "^1.0.13", + "vue-router": "^3.2.0", + "vuedraggable": "^2.24.3", + "vuex": "^3.4.0", + "xlsx": "^0.17.0" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "~4.5.0", + "@vue/cli-plugin-eslint": "~4.5.0", + "@vue/cli-plugin-router": "~4.5.0", + "@vue/cli-plugin-vuex": "~4.5.0", + "@vue/cli-service": "~4.5.0", + "@vue/eslint-config-prettier": "^6.0.0", + "babel-eslint": "^10.1.0", + "eslint": "^6.7.2", + "eslint-plugin-prettier": "^3.3.1", + "eslint-plugin-vue": "^6.2.2", + "node-sass": "^4.12.0", + "prettier": "^2.2.1", + "sass-loader": "^8.0.2", + "script-loader": "^0.7.2", + "svg-sprite-loader": "^6.0.5", + "vue-template-compiler": "^2.6.11", + "webpack": "^4.46.0" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "eslint:recommended", + "@vue/prettier" + ], + "parserOptions": { + "parser": "babel-eslint" + }, + "rules": {} + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ] +} diff --git a/qqjf-Web/public/favicon.ico b/qqjf-Web/public/favicon.ico new file mode 100644 index 0000000..df36fcf --- /dev/null +++ b/qqjf-Web/public/favicon.ico Binary files differ diff --git a/qqjf-Web/public/index.html b/qqjf-Web/public/index.html new file mode 100644 index 0000000..a945b71 --- /dev/null +++ b/qqjf-Web/public/index.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html lang=""> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width,initial-scale=1.0"> + <link rel="icon" href="<%= BASE_URL %>favicon.ico"> + <!-- <title><%= webpackConfig.name %></title> --> + <title><%= htmlWebpackPlugin.options.title %></title> + </head> + <body> + + <div id="app"></div> + <!-- <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %> + <script type="text/javascript" src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script> + <% } %> --> + <!-- built files will be auto injected --> + </body> +</html> diff --git a/qqjf-Web/src/App.vue b/qqjf-Web/src/App.vue new file mode 100644 index 0000000..e72a45d --- /dev/null +++ b/qqjf-Web/src/App.vue @@ -0,0 +1,28 @@ +<template> + <div id="app" @click="clicked"> + <router-view /> + </div> +</template> +<script> +import { getStorage, setStorage, clearStorage } from '@/utils/sessionStorage'; +export default { + name: 'App', + data() { + return { + lTime: new Date().getTime(), // 鏈�鍚庝竴娆$偣鍑荤殑鏃堕棿 + ctTime: new Date().getTime(), //褰撳墠鏃堕棿 + tOut: 10 * 60 * 1000 //瓒呮椂鏃堕棿10min + }; + }, + mounted() { + // window.setInterval(this.tTime, 1000); + }, + + methods: { + clicked() { + // this.lTime = new Date().getTime(); //褰撶晫闈㈣鐐瑰嚮鏇存柊鐐瑰嚮鏃堕棿 + } + } +}; +</script> +<style lang="scss"></style> diff --git a/qqjf-Web/src/Layout/components/Appmain.vue b/qqjf-Web/src/Layout/components/Appmain.vue new file mode 100644 index 0000000..6fee26b --- /dev/null +++ b/qqjf-Web/src/Layout/components/Appmain.vue @@ -0,0 +1,52 @@ +<!-- --> +<template> +<div id='appmain'> + +</div> +</template> + +<script> +//杩欓噷鍙互瀵煎叆鍏朵粬鏂囦欢锛堟瘮濡傦細缁勪欢锛屽伐鍏穓s锛岀涓夋柟鎻掍欢js锛宩son鏂囦欢锛屽浘鐗囨枃浠剁瓑绛夛級 +//渚嬪锛歩mport 銆婄粍浠跺悕绉般�� from '銆婄粍浠惰矾寰勩��'; + +export default { +//name鏀惧叆妯℃澘鍚�,鏂逛究鍦ㄥ叾浠栧湴鏂瑰紩鐢� +name: '', +//import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� +components: {}, +data() { +//杩欓噷瀛樻斁鏁版嵁 +return { + +}; +}, +//鐩戝惉灞炴�� 绫讳技浜巇ata姒傚康 +computed: { + +}, +//鐢熷懡鍛ㄦ湡 - 鍒涘缓瀹屾垚锛堝彲浠ヨ闂綋鍓峵his瀹炰緥锛� +created() { + +}, +//鐢熷懡鍛ㄦ湡 - 鎸傝浇瀹屾垚锛堝彲浠ヨ闂瓺OM鍏冪礌锛� +mounted() { + +}, +//鏂规硶闆嗗悎 +methods: { + +}, +//鐩戞帶data涓殑鏁版嵁鍙樺寲 +watch: { + +}, +//濡傛灉椤甸潰鏈塳eep-alive缂撳瓨鍔熻兘锛岃繖涓嚱鏁颁細瑙﹀彂 +activated() { + +}, +} +</script> +<style lang='scss' scoped> +/* @import url(); 寮曞叆鍏叡css绫� */ + +</style> \ No newline at end of file diff --git a/qqjf-Web/src/Layout/components/Sidebar/SidebarItem.vue b/qqjf-Web/src/Layout/components/Sidebar/SidebarItem.vue new file mode 100644 index 0000000..affa514 --- /dev/null +++ b/qqjf-Web/src/Layout/components/Sidebar/SidebarItem.vue @@ -0,0 +1,49 @@ +<!-- --> +<template> + <div class="sidebarItem"> + <template v-if="!itemRoute.children"> + <el-menu-item :index="itemRoute.path"> + <item :icon="itemRoute.meta.icon" :title="itemRoute.meta.title" /> + </el-menu-item> + </template> + + <el-submenu v-else ref="subMenu" :index="itemRoute.path" popper-append-to-body> + <template slot="title"> + <item :icon="itemRoute.meta.icon" :title="itemRoute.meta.title" /> + </template> + <sidebar-item v-for="item in itemRoute.children" :key="item.path" :itemRoute="item" /> + </el-submenu> + </div> +</template> + +<script> +//杩欓噷鍙互瀵煎叆鍏朵粬鏂囦欢锛堟瘮濡傦細缁勪欢锛屽伐鍏穓s锛岀涓夋柟鎻掍欢js锛宩son鏂囦欢锛屽浘鐗囨枃浠剁瓑绛夛級 +//渚嬪锛歩mport 銆婄粍浠跺悕绉般�� from '銆婄粍浠惰矾寰勩��'; +import item from './item'; +export default { + //name鏀惧叆妯℃澘鍚�,鏂逛究鍦ㄥ叾浠栧湴鏂瑰紩鐢� + name: 'SidebarItem', + props: ['itemRoute'], + //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: { item }, + data() { + //杩欓噷瀛樻斁鏁版嵁 + return {}; + }, + //鐩戝惉灞炴�� 绫讳技浜巇ata姒傚康 + computed: {}, + //鐢熷懡鍛ㄦ湡 - 鍒涘缓瀹屾垚锛堝彲浠ヨ闂綋鍓峵his瀹炰緥锛� + created() {}, + //鐢熷懡鍛ㄦ湡 - 鎸傝浇瀹屾垚锛堝彲浠ヨ闂瓺OM鍏冪礌锛� + mounted() {}, + //鏂规硶闆嗗悎 + methods: {}, + //鐩戞帶data涓殑鏁版嵁鍙樺寲 + watch: {}, + //濡傛灉椤甸潰鏈塳eep-alive缂撳瓨鍔熻兘锛岃繖涓嚱鏁颁細瑙﹀彂 + activated() {} +}; +</script> +<style lang="scss" scoped> +/* @import url(); 寮曞叆鍏叡css绫� */ +</style> diff --git a/qqjf-Web/src/Layout/components/Sidebar/index.vue b/qqjf-Web/src/Layout/components/Sidebar/index.vue new file mode 100644 index 0000000..c10f201 --- /dev/null +++ b/qqjf-Web/src/Layout/components/Sidebar/index.vue @@ -0,0 +1,111 @@ +<!-- --> +<template> + <div> + <el-scrollbar wrap-class="scrollbar-wrapper"> + <div class="heard pointer" @click="homeclick"> + <img :class="{ isimg: isCollapse }" class="heard-img" src="../../../assets/heard/heard.jpg" alt="" /> + </div> + <el-menu + :default-active="activeMenu" + :background-color="variables.menuBg" + :text-color="variables.menuText" + :unique-opened="true" + :active-text-color="variables.menuActiveText" + :collapse-transition="false" + :collapse="isCollapse" + mode="vertical" + router + > + <sidebar-item v-for="route in routes" :key="route.path" :itemRoute="route" /> + </el-menu> + </el-scrollbar> + </div> +</template> + +<script> +//杩欓噷鍙互瀵煎叆鍏朵粬鏂囦欢锛堟瘮濡傦細缁勪欢锛屽伐鍏穓s锛岀涓夋柟鎻掍欢js锛宩son鏂囦欢锛屽浘鐗囨枃浠剁瓑绛夛級 +//渚嬪锛歩mport 銆婄粍浠跺悕绉般�� from '銆婄粍浠惰矾寰勩��'; +import { mapGetters } from 'vuex'; +import variables from '@/styles/variables.scss'; +import { getStorage, setStorage } from '@/utils/sessionStorage'; +import SidebarItem from './SidebarItem'; + +export default { + //name鏀惧叆妯℃澘鍚�,鏂逛究鍦ㄥ叾浠栧湴鏂瑰紩鐢� + name: '', + //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: { SidebarItem }, + data() { + //杩欓噷瀛樻斁鏁版嵁 + return {}; + }, + //鐩戝惉灞炴�� 绫讳技浜巇ata姒傚康 + computed: { + ...mapGetters(['sidebar']), + variables() { + return variables; + }, + routes() { + let baseRoute = this.$store.state.permission.routes; + if (baseRoute.length > 13) { + return baseRoute[13].children; + } + }, + activeMenu() { + const route = this.$route; + const { meta, path } = route; + console.log(route); + if (meta.activeMenu) { + return meta.activeMenu; + } + + return path; + }, + // activeMenu() { + + // return this.$route.matched[1].path; + // }, + isCollapse() { + return this.sidebar; + } + }, + //鐢熷懡鍛ㄦ湡 - 鍒涘缓瀹屾垚锛堝彲浠ヨ闂綋鍓峵his瀹炰緥锛� + created() {}, + //鐢熷懡鍛ㄦ湡 - 鎸傝浇瀹屾垚锛堝彲浠ヨ闂瓺OM鍏冪礌锛� + mounted() {}, + //鏂规硶闆嗗悎 + methods: { + //璺宠浆棣栭〉 + homeclick() { + // const { href } = this.$router.resolve({ + // path: '/home' + // }); + // window.open(href, '_blank'); + } + }, + //鐩戞帶data涓殑鏁版嵁鍙樺寲 + watch: {}, + //濡傛灉椤甸潰鏈塳eep-alive缂撳瓨鍔熻兘锛岃繖涓嚱鏁颁細瑙﹀彂 + activated() {} +}; +</script> +<style lang="scss" scoped> +/* @import url(); 寮曞叆鍏叡css绫� */ +.heard { + text-align: center; + padding: 20px 0px; + background-color: #3a405a; + border-bottom: 1px solid rgb(72, 94, 122); + .heard-img { + width: 60px; + height: 60px; + border-radius: 30px; + transition: all 1s ease 0s; + } + .isimg { + width: 24px; + height: 24px; + border-radius: 15px; + } +} +</style> diff --git a/qqjf-Web/src/Layout/components/Sidebar/item.vue b/qqjf-Web/src/Layout/components/Sidebar/item.vue new file mode 100644 index 0000000..d706562 --- /dev/null +++ b/qqjf-Web/src/Layout/components/Sidebar/item.vue @@ -0,0 +1,42 @@ +<script> +export default { + name: 'MenuItem', + functional: true, + props: { + icon: { + type: String, + default: '' + }, + title: { + type: String, + default: '' + } + }, + render(h, context) { + const { icon, title } = context.props; + const vnodes = []; + + if (icon) { + if (icon.includes('el-icon')) { + // vnodes.push(<i class={[icon, 'sub-el-icon']} />); + vnodes.push(<i class={icon} />); + } else { + vnodes.push(<svg-icon icon-class={icon} />); + } + } + + if (title) { + vnodes.push(<span slot="title">{title}</span>); + } + return vnodes; + } +}; +</script> + +<style scoped> +.sub-el-icon { + color: currentColor; + width: 1em; + height: 1em; +} +</style> diff --git a/qqjf-Web/src/Layout/components/TagsView/ScrollPane.vue b/qqjf-Web/src/Layout/components/TagsView/ScrollPane.vue new file mode 100644 index 0000000..bb753a1 --- /dev/null +++ b/qqjf-Web/src/Layout/components/TagsView/ScrollPane.vue @@ -0,0 +1,94 @@ +<template> + <el-scrollbar ref="scrollContainer" :vertical="false" class="scroll-container" @wheel.native.prevent="handleScroll"> + <slot /> + </el-scrollbar> +</template> + +<script> +const tagAndTagSpacing = 4 // tagAndTagSpacing + +export default { + name: 'ScrollPane', + data() { + return { + left: 0 + } + }, + computed: { + scrollWrapper() { + return this.$refs.scrollContainer.$refs.wrap + } + }, + mounted() { + this.scrollWrapper.addEventListener('scroll', this.emitScroll, true) + }, + beforeDestroy() { + this.scrollWrapper.removeEventListener('scroll', this.emitScroll) + }, + methods: { + handleScroll(e) { + const eventDelta = e.wheelDelta || -e.deltaY * 40 + const $scrollWrapper = this.scrollWrapper + $scrollWrapper.scrollLeft = $scrollWrapper.scrollLeft + eventDelta / 4 + }, + emitScroll() { + this.$emit('scroll') + }, + moveToTarget(currentTag) { + const $container = this.$refs.scrollContainer.$el + const $containerWidth = $container.offsetWidth + const $scrollWrapper = this.scrollWrapper + const tagList = this.$parent.$refs.tag + + let firstTag = null + let lastTag = null + + // find first tag and last tag + if (tagList.length > 0) { + firstTag = tagList[0] + lastTag = tagList[tagList.length - 1] + } + + if (firstTag === currentTag) { + $scrollWrapper.scrollLeft = 0 + } else if (lastTag === currentTag) { + $scrollWrapper.scrollLeft = $scrollWrapper.scrollWidth - $containerWidth + } else { + // find preTag and nextTag + const currentIndex = tagList.findIndex(item => item === currentTag) + const prevTag = tagList[currentIndex - 1] + const nextTag = tagList[currentIndex + 1] + + // the tag's offsetLeft after of nextTag + const afterNextTagOffsetLeft = nextTag.$el.offsetLeft + nextTag.$el.offsetWidth + tagAndTagSpacing + + // the tag's offsetLeft before of prevTag + const beforePrevTagOffsetLeft = prevTag.$el.offsetLeft - tagAndTagSpacing + + if (afterNextTagOffsetLeft > $scrollWrapper.scrollLeft + $containerWidth) { + $scrollWrapper.scrollLeft = afterNextTagOffsetLeft - $containerWidth + } else if (beforePrevTagOffsetLeft < $scrollWrapper.scrollLeft) { + $scrollWrapper.scrollLeft = beforePrevTagOffsetLeft + } + } + } + } +} +</script> + +<style lang="scss" scoped> +.scroll-container { + white-space: nowrap; + position: relative; + overflow: hidden; + width: 100%; + ::v-deep { + .el-scrollbar__bar { + bottom: 0px; + } + .el-scrollbar__wrap { + height: 49px; + } + } +} +</style> diff --git a/qqjf-Web/src/Layout/components/TagsView/index.vue b/qqjf-Web/src/Layout/components/TagsView/index.vue new file mode 100644 index 0000000..be6194b --- /dev/null +++ b/qqjf-Web/src/Layout/components/TagsView/index.vue @@ -0,0 +1,294 @@ +<template> + <div id="tags-view-container" class="tags-view-container"> + <scroll-pane ref="scrollPane" class="tags-view-wrapper" @scroll="handleScroll"> + <router-link + v-for="tag in visitedViews" + ref="tag" + :key="tag.path" + :class="isActive(tag) ? 'active' : ''" + :to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }" + tag="span" + class="tags-view-item" + @click.middle.native="!isAffix(tag) ? closeSelectedTag(tag) : ''" + @contextmenu.prevent.native="openMenu(tag, $event)" + > + {{ tag.title }} + <span v-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" /> + </router-link> + </scroll-pane> + <ul v-show="visible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu"> + <li @click="refreshSelectedTag(selectedTag)">鍒锋柊</li> + <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)">鍏抽棴</li> + <li @click="closeOthersTags">鍏抽棴鍏跺畠</li> + <li @click="closeAllTags(selectedTag)">鍏ㄩ儴鍏抽棴</li> + </ul> + </div> +</template> + +<script> +import ScrollPane from './ScrollPane'; +import path from 'path'; + +export default { + components: { ScrollPane }, + data() { + return { + visible: false, + top: 0, + left: 0, + selectedTag: {}, + affixTags: [] + }; + }, + computed: { + visitedViews() { + return this.$store.state.tagsView.visitedViews; + }, + routes() { + return this.$store.state.permission.routes; + } + }, + watch: { + $route() { + this.addTags(); + this.moveToCurrentTag(); + }, + visible(value) { + if (value) { + document.body.addEventListener('click', this.closeMenu); + } else { + document.body.removeEventListener('click', this.closeMenu); + } + } + }, + mounted() { + this.initTags(); + this.addTags(); + }, + methods: { + isActive(route) { + return route.path === this.$route.path; + }, + isAffix(tag) { + return tag.meta && tag.meta.affix; + }, + filterAffixTags(routes, basePath = '/') { + let tags = []; + routes.forEach(route => { + if (route.meta && route.meta.affix) { + const tagPath = path.resolve(basePath, route.path); + tags.push({ + fullPath: tagPath, + path: tagPath, + name: route.name, + meta: { ...route.meta } + }); + } + if (route.children) { + const tempTags = this.filterAffixTags(route.children, route.path); + if (tempTags.length >= 1) { + tags = [...tags, ...tempTags]; + } + } + }); + return tags; + }, + initTags() { + const affixTags = (this.affixTags = this.filterAffixTags(this.routes)); + + for (const tag of affixTags) { + // Must have tag name + if (tag.name) { + this.$store.dispatch('tagsView/addVisitedView', tag); + } + } + }, + addTags() { + const { name } = this.$route; + if (name) { + this.$store.dispatch('tagsView/addView', this.$route); + } + return false; + }, + moveToCurrentTag() { + const tags = this.$refs.tag; + this.$nextTick(() => { + for (const tag of tags) { + if (tag.to.path === this.$route.path) { + this.$refs.scrollPane.moveToTarget(tag); + // when query is different then update + if (tag.to.fullPath !== this.$route.fullPath) { + this.$store.dispatch('tagsView/updateVisitedView', this.$route); + } + break; + } + } + }); + }, + refreshSelectedTag(view) { + this.$store.dispatch('tagsView/delCachedView', view).then(() => { + const { fullPath } = view; + this.$nextTick(() => { + this.$router.replace({ + path: fullPath + }); + }); + }); + }, + closeSelectedTag(view) { + this.$store.dispatch('tagsView/delView', view).then(({ visitedViews }) => { + if (this.isActive(view)) { + this.toLastView(visitedViews, view); + } + }); + }, + closeOthersTags() { + this.$router.push(this.selectedTag); + this.$store.dispatch('tagsView/delOthersViews', this.selectedTag).then(() => { + this.moveToCurrentTag(); + }); + }, + closeAllTags(view) { + this.$store.dispatch('tagsView/delAllViews').then(({ visitedViews }) => { + if (this.affixTags.some(tag => tag.path === view.path)) { + return; + } + this.toLastView(visitedViews, view); + }); + }, + toLastView(visitedViews, view) { + const latestView = visitedViews.slice(-1)[0]; + if (latestView) { + this.$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 === 'Didproject') { + // to reload home page + this.$router.replace({ path: '/Layout' }); + // this.$router.replace({ path: '/redirect' + view.fullPath }); + } else { + this.$router.push('/'); + } + } + }, + openMenu(tag, e) { + const menuMinWidth = 105; + const offsetLeft = this.$el.getBoundingClientRect().left; // container margin left + const offsetWidth = this.$el.offsetWidth; // container width + const maxLeft = offsetWidth - menuMinWidth; // left boundary + const left = e.clientX - offsetLeft + 15; // 15: margin right + + if (left > maxLeft) { + this.left = maxLeft; + } else { + this.left = left; + } + + this.top = e.clientY; + this.visible = true; + this.selectedTag = tag; + }, + closeMenu() { + this.visible = false; + }, + handleScroll() { + this.closeMenu(); + } + } +}; +</script> + +<style lang="scss" scoped> +.tags-view-container { + height: 34px; + width: 100%; + background: #fff; + border-bottom: 1px solid #d8dce5; + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 3px 0 rgba(0, 0, 0, 0.04); + .tags-view-wrapper { + .tags-view-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 26px; + line-height: 26px; + border: 1px solid #d8dce5; + color: #495060; + background: #fff; + padding: 0 8px; + font-size: 12px; + margin-left: 5px; + margin-top: 4px; + &:first-of-type { + margin-left: 15px; + } + &:last-of-type { + margin-right: 15px; + } + &.active { + background-color: #42b983; + color: #fff; + border-color: #42b983; + &::before { + content: ''; + background: #fff; + display: inline-block; + width: 8px; + height: 8px; + border-radius: 50%; + position: relative; + margin-right: 2px; + } + } + } + } + .contextmenu { + margin: 0; + background: #fff; + z-index: 3000; + position: absolute; + list-style-type: none; + padding: 5px 0; + border-radius: 4px; + font-size: 12px; + font-weight: 400; + color: #333; + box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.3); + li { + margin: 0; + padding: 7px 16px; + cursor: pointer; + &:hover { + background: #eee; + } + } + } +} +</style> + +<style lang="scss"> +//reset element css of el-icon-close +.tags-view-wrapper { + .tags-view-item { + .el-icon-close { + width: 16px; + height: 16px; + vertical-align: 2px; + border-radius: 50%; + text-align: center; + transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + transform-origin: 100% 50%; + &:before { + transform: scale(0.6); + display: inline-block; + vertical-align: -3px; + } + &:hover { + background-color: #b4bccc; + color: #fff; + } + } + } +} +</style> diff --git a/qqjf-Web/src/Layout/components/index.js b/qqjf-Web/src/Layout/components/index.js new file mode 100644 index 0000000..a81631d --- /dev/null +++ b/qqjf-Web/src/Layout/components/index.js @@ -0,0 +1,2 @@ +export { default as NavTab } from './navbar.vue' +export {default as sidebar} from './Sidebar/index.vue' \ No newline at end of file diff --git a/qqjf-Web/src/Layout/components/navbar.vue b/qqjf-Web/src/Layout/components/navbar.vue new file mode 100644 index 0000000..0207379 --- /dev/null +++ b/qqjf-Web/src/Layout/components/navbar.vue @@ -0,0 +1,135 @@ +<!-- --> +<template> + <div class="navtab"> + <div class="flex heard-title align-center justify-between"> + <div class="flex align-end"> + <svg-icon + style="font-size: 20px" + class="svgicon margin-right pointer" + @click="toggleSideBar" + iconClass="align-right" + classNames="alignSvg" + :class="{ isActive: isCollapse }" + /> + <p class="title">鏅鸿兘鍖栫珛浣撳簱绠$悊绯荤粺</p> + </div> + + <div class="technical"> + <el-dropdown class="right-menu"> + <div class="avatar-wrapper flex align-center"> + <img src="../../assets/heard/heard.jpg" class="user-avatar" /> + <span class="margin-left pointer text-overflow">{{ userinfo.userName }}</span> + </div> + <el-dropdown-menu slot="dropdown"> + <el-dropdown-item> {{ userinfo.deptName }} </el-dropdown-item> + <el-dropdown-item divided @click.native="logout"> + <p>閫�鍑虹櫥褰�</p> + </el-dropdown-item> + </el-dropdown-menu> + </el-dropdown> + </div> + </div> + <div class="Breadcrumb"> + <tags-view /> + </div> + </div> +</template> + +<script> +//杩欓噷鍙互瀵煎叆鍏朵粬鏂囦欢锛堟瘮濡傦細缁勪欢锛屽伐鍏穓s锛岀涓夋柟鎻掍欢js锛宩son鏂囦欢锛屽浘鐗囨枃浠剁瓑绛夛級 +//渚嬪锛歩mport 銆婄粍浠跺悕绉般�� from '銆婄粍浠惰矾寰勩��'; +import { mapGetters } from 'vuex'; +import TagsView from './TagsView/index'; +import { getCache } from '@/utils/sessionStorage'; +import ResizeMixin from '@/mixins/layout'; +export default { + //name鏀惧叆妯℃澘鍚�,鏂逛究鍦ㄥ叾浠栧湴鏂瑰紩鐢� + name: '', + //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: { TagsView }, + mixins: [ResizeMixin], + data() { + //杩欓噷瀛樻斁鏁版嵁 + return { + userinfo: getCache('userInfo') + }; + }, + //鐩戝惉灞炴�� 绫讳技浜巇ata姒傚康 + computed: { + ...mapGetters(['sidebar']), + isCollapse() { + return this.sidebar; + } + }, + //鐢熷懡鍛ㄦ湡 - 鍒涘缓瀹屾垚锛堝彲浠ヨ闂綋鍓峵his瀹炰緥锛� + created() {}, + //鐢熷懡鍛ㄦ湡 - 鎸傝浇瀹屾垚锛堝彲浠ヨ闂瓺OM鍏冪礌锛� + mounted() {}, + //鏂规硶闆嗗悎 + methods: { + toggleSideBar() { + this.$store.dispatch('setting/togglesidebar'); + }, + async logout() { + await this.$store.dispatch('user/logout'); + this.$store.dispatch('permission/generateRoutes', []); + this.$router.push({ path: '/login' }); + } + }, + //鐩戞帶data涓殑鏁版嵁鍙樺寲 + watch: {}, + //濡傛灉椤甸潰鏈塳eep-alive缂撳瓨鍔熻兘锛岃繖涓嚱鏁颁細瑙﹀彂 + activated() {} +}; +</script> +<style lang="scss" scoped> +/* @import url(); 寮曞叆鍏叡css绫� */ +.navtab { + width: 100%; + height: 80px; + border-bottom: 1px solid #d6e2e9; + box-shadow: 0 0 4px #345; + .isActive { + transform: rotate(180deg); + } + .Breadcrumb { + display: flex; + align-items: center; + .svgicon { + padding: 0 15px; + } + } + .technical { + display: flex; + align-items: center; + width: 11%; + justify-content: flex-end; + .right-menu { + margin-right: 15px; + .avatar-wrapper { + margin: auto; + display: flex; + .user-avatar { + cursor: pointer; + width: 24px; + height: 24px; + border-radius: 10px; + } + } + } + .full { + cursor: pointer; + } + } + .heard-title { + height: 50px; + padding-left: 10px; + background-color: rgb(255, 255, 255); + border-radius: 0px !important; + .title { + // padding: 13px 10px 10px; + font-size: 20px; + } + } +} +</style> diff --git a/qqjf-Web/src/Layout/index.vue b/qqjf-Web/src/Layout/index.vue new file mode 100644 index 0000000..76de728 --- /dev/null +++ b/qqjf-Web/src/Layout/index.vue @@ -0,0 +1,104 @@ +<!-- --> +<template> + <div class="app-wrapper" :class="{ hidcontainer: isCollapse }"> + <sidebar class="sidebar-container" /> + <div class="main-container"> + <nav-tab /> + <!-- <right-panel v-if="showSettings"> + <settings /> + </right-panel> --> + <div class="main"> + <transition name="fade-transform" mode="out-in"> + <router-view /> + </transition> + </div> + </div> + </div> +</template> + +<script> +//杩欓噷鍙互瀵煎叆鍏朵粬鏂囦欢锛堟瘮濡傦細缁勪欢锛屽伐鍏穓s锛岀涓夋柟鎻掍欢js锛宩son鏂囦欢锛屽浘鐗囨枃浠剁瓑绛夛級 +//渚嬪锛歩mport 銆婄粍浠跺悕绉般�� from '銆婄粍浠惰矾寰勩��'; +import { NavTab, sidebar } from './components'; +import { mapGetters } from 'vuex'; +import { getStorage, setStorage } from '@/utils/sessionStorage'; +// import sidebar from './components/Sidebar/index' +// import ResizeMixin from './mixin/ResizeHandler'; +export default { + //name鏀惧叆妯℃澘鍚�,鏂逛究鍦ㄥ叾浠栧湴鏂瑰紩鐢� + name: '', + //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: { sidebar, NavTab }, + data() { + //杩欓噷瀛樻斁鏁版嵁 + return {}; + }, + //鐩戝惉灞炴�� 绫讳技浜巇ata姒傚康 + computed: { + ...mapGetters(['sidebar']), + isCollapse() { + return this.sidebar; + }, + visitedViews() { + return this.$store.state.tagsView.visitedViews; + } + }, + //鐢熷懡鍛ㄦ湡 - 鍒涘缓瀹屾垚锛堝彲浠ヨ闂綋鍓峵his瀹炰緥锛� + created() {}, + //鐢熷懡鍛ㄦ湡 - 鎸傝浇瀹屾垚锛堝彲浠ヨ闂瓺OM鍏冪礌锛� + mounted() {}, + //鏂规硶闆嗗悎 + methods: {}, + //鐩戞帶data涓殑鏁版嵁鍙樺寲 + watch: {}, + //濡傛灉椤甸潰鏈塳eep-alive缂撳瓨鍔熻兘锛岃繖涓嚱鏁颁細瑙﹀彂 + activated() {}, + beforeRouteLeave: function (to, from, next) { + console.log(this.$vnode); + if (to.name == 'Login' || to.name == 'login') { + if (this.$vnode && this.$vnode.data.keepAlive) { + if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache) { + if (this.$vnode.componentOptions) { + var key = + this.$vnode.key == null + ? this.$vnode.componentOptions.Ctor.cid + + (this.$vnode.componentOptions.tag ? `::${this.$vnode.componentOptions.tag}` : '') + : this.$vnode.key; + var cache = this.$vnode.parent.componentInstance.cache; + var keys = this.$vnode.parent.componentInstance.keys; + if (cache[key]) { + if (keys.length) { + var index = keys.indexOf(key); + if (index > -1) { + keys.splice(index, 1); + } + } + delete cache[key]; + } + } + } + } + this.$store.dispatch('tagsView/delAllViews').then(({ visitedViews }) => {}); + } + + next(); + } +}; +</script> +<style lang="scss" scoped> +.app-wrapper { + position: relative; + width: 100%; + height: 100%; + overflow: hidden; + .is-open { + width: calc(100% - 45px); + } + .main { + width: 98%; + height: calc(100% - 100px); + padding: 1%; + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/api/Didproject.js b/qqjf-Web/src/api/Didproject.js new file mode 100644 index 0000000..5284d09 --- /dev/null +++ b/qqjf-Web/src/api/Didproject.js @@ -0,0 +1,79 @@ +import axios from '../utils/axios'; +import qs from 'qs'; + +/** + * @description 浠婃棩鍑哄叆搴撴暟鎹� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function GetHomeNumData(param) { + return axios.post('/SummaryStatistics/GetHomeNumData', qs.stringify(param)); +} + +/** + * @description 鍚勭被鍨嬪簱浣嶄娇鐢ㄧ粺璁� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function GetHomePieData(data) { + return axios.post('/SummaryStatistics/GetHomePieData', qs.stringify(data)); +} + +/** + * @description 鑾峰彇闆朵欢鐨勫嚭鍏ュ簱鏁伴噺 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function GetHomeBarItemData(param) { + return axios.post('/SummaryStatistics/GetHomeBarItemData', qs.stringify(param)); +} + +/** + * @description 鑾峰彇鍣ㄥ叿鐨勫嚭鍏ュ簱鏁伴噺 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function GetHomeBarContainerData(param) { + return axios.post('/SummaryStatistics/GetHomeBarContainerData', qs.stringify(param)); +} + +/** + * @description 绔嬪簱鎬昏鍜屽埗浠舵�昏 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function GetStorageOverviewData(param) { + return axios.post('/SummaryStatistics/GetStorageOverviewData', qs.stringify(param)); +} + +/** + * @description 浠婃棩鍜屽簱浣嶅鍑� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function GetHomeNumDataByDate(param) { + return axios.post('/SummaryStatistics/GetHomeNumDataByDate', qs.stringify(param)); +} + +/** + * @description 璀︾ず淇℃伅 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function GetWarnings() { + return axios.post('/ItemStorage/SearchViewIndex'); +} diff --git a/qqjf-Web/src/api/ProductionLine.js b/qqjf-Web/src/api/ProductionLine.js new file mode 100644 index 0000000..f06f015 --- /dev/null +++ b/qqjf-Web/src/api/ProductionLine.js @@ -0,0 +1,38 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储鐝嚎绠$悊 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function UserSearch(data) { +// return axios.post('/User/Search',qs.stringify(data) ); +// } + + export function ProductionLineSearch(data,param) { + return axios.post('/ProductionLine/Search?page='+data,qs.stringify(param)); +} + +/** + * @description 鍒犻櫎鐝嚎 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function ProductionLineDelete(data) { + return axios.post('/ProductionLine/Delete',qs.stringify(data) ); +} +/** + * @description 鏂板缂栬緫鐝嚎 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function ProductionLineAddOrUpdate(data) { + return axios.post('/ProductionLine/AddOrUpdate',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/avroRecord.js b/qqjf-Web/src/api/avroRecord.js new file mode 100644 index 0000000..92927bc --- /dev/null +++ b/qqjf-Web/src/api/avroRecord.js @@ -0,0 +1,25 @@ +import axios from '../utils/axios'; +import qs from 'qs'; + +/** + * @description 鎼滅储鍫嗗灈鏈轰换鍔¤褰� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + +export function SrmTaskSearch(data, param) { + return axios.post('/SrmRecord/Search?page=' + data, qs.stringify(param)); +} +/** + * @description 瀵煎嚭鍫嗗灈鏈轰换鍔¤褰� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + +export function SearchAll(param) { + return axios.post('/SrmRecord/SearchAll', qs.stringify(param)); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/cass-line.js b/qqjf-Web/src/api/cass-line.js new file mode 100644 index 0000000..336a3fc --- /dev/null +++ b/qqjf-Web/src/api/cass-line.js @@ -0,0 +1,36 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储鐝嚎绠$悊 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + + + export function ProductionLineSearch(data,param) { + return axios.post('/ProductionLine/Search?page='+data,qs.stringify(param)); +} + +/** + * @description 鍒犻櫎鐝嚎 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function ProductionLineDelete(data) { + return axios.post('/ProductionLine/Delete',qs.stringify(data) ); +} +/** + * @description 鏂板缂栬緫鐝嚎 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function ProductionLineAddOrUpdate(data) { + return axios.post('/ProductionLine/AddOrUpdate',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/dept.js b/qqjf-Web/src/api/dept.js new file mode 100644 index 0000000..3a7d5f0 --- /dev/null +++ b/qqjf-Web/src/api/dept.js @@ -0,0 +1,38 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储鐢ㄦ埛 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function DeptSearch(data) { +// return axios.post('/Dept/Search',qs.stringify(data) ); +// } + + export function DeptSearch(data,param) { + return axios.post('/Dept/Search?page='+data,qs.stringify(param)); +} + +/** + * @description 鍒犻櫎鐢ㄦ埛 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function DeptDelete(data) { + return axios.post('/Dept/Delete',qs.stringify(data) ); +} +/** + * @description 鏂板缂栬緫鐢ㄦ埛 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function DeptAddOrUpdate(data) { + return axios.post('/Dept/AddOrUpdate',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/enter.js b/qqjf-Web/src/api/enter.js new file mode 100644 index 0000000..dccae39 --- /dev/null +++ b/qqjf-Web/src/api/enter.js @@ -0,0 +1,80 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储缁勭洏 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function UserSearch(data) { +// return axios.post('/User/Search',qs.stringify(data) ); +// } + export function ContainerVsItemSearch(data,param) { + return axios.post('/ContainerVsItem/Search?page='+data,qs.stringify(param)); +} +/** + * @description 鍒犻櫎缁勭洏 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function ContainerVsItemDelete(data) { + return axios.post('/ContainerVsItem/DeleteOne',qs.stringify(data) ); +} +/** + * @description 鏂板缁勭洏 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function ContainerVsItemAdd(data) { + return axios.post('/ContainerVsItem/Add',qs.stringify(data) ); +} +/** + * @description 澶氭潯璁板綍鏂板缁勭洏 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function ContainerVsItemAddAll(data) { + return axios.post('/ContainerVsItem/AddOrUpdateAll',qs.stringify(data) ); +} + + + +/** + * @description 淇敼缁勭洏 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function ContainerVsItemUpdate(data) { + return axios.post('/ContainerVsItem/Update',qs.stringify(data) ); +} +/** + * @description 鑾峰彇缁勭洏缂栧彿 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function GetCode(data) { + return axios.post('/ContainerVsItem/GetCode',qs.stringify(data) ); +} + +/** + * @description 鍐插帇鍏ュ簱璁″垝鍏宠仈 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function BindCviCode(data) { + return axios.post('/ContainerVsItem/BindCviCode',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/enterchoose.js b/qqjf-Web/src/api/enterchoose.js new file mode 100644 index 0000000..0b4a8ed --- /dev/null +++ b/qqjf-Web/src/api/enterchoose.js @@ -0,0 +1,106 @@ +import axios from '../utils/axios'; +import qs from 'qs'; + +/** + * @description 鎼滅储闆朵欢 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function UserSearch(data) { +// return axios.post('/User/Search',qs.stringify(data) ); +// } + +export function itemSearch(data, param) { + return axios.post('/Item/Search?page=' + data, qs.stringify(param)); +} + +/** + * @description 瀵煎嚭鍏ㄩ儴闆朵欢 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function UserSearch(data) { +// return axios.post('/User/Search',qs.stringify(data) ); +// } + +export function GetAllItem(data, param) { + return axios.post('/Item/GetAllItem', qs.stringify(param)); +} +/** + * @description 鍒犻櫎闆朵欢 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function ItemDelete(data) { + return axios.post('/Item/Delete', qs.stringify(data)); +} +/** + * @description 鏂板闆朵欢 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function ItemAddOrUpdate(data) { + return axios.post('/Item/AddOrUpdate', qs.stringify(data)); +} +/** + * @description 瀵煎叆闆朵欢鐨勫熀纭�鍗曚环鍜屾渶澶ф渶灏忓簱瀛橀噺銆佽秴鏈熸椂闂� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function ImportItemInfo(data) { + return axios.post('/Item/ImportItemInfo', qs.stringify(data)); +} + +/** + * @description 鎼滅储涓婁笅闄愭槸鍚﹀紑鍚� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function SearchStorageEnable() { + return axios.post('/Item/SearchStorageEnable'); +} + +/** + * @description 鍚敤/鍏抽棴涓婁笅闄愬垽鏂� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function UpdateStorageEnable(data) { + return axios.post('/Item/UpdateStorageEnable', qs.stringify(data)); +} + +/** + * @description 璁剧疆搴撳涓嬬嚎 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function UpdateMinStorage(data) { + return axios.post('/Item/UpdateMinStorage', qs.stringify(data)); +} + +/** + * @description 璁剧疆搴撳涓婄嚎 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function UpdateMaxStorage(data) { + return axios.post('/Item/UpdateMaxStorage', qs.stringify(data)); +} diff --git a/qqjf-Web/src/api/equipmenttask.js b/qqjf-Web/src/api/equipmenttask.js new file mode 100644 index 0000000..331d4a8 --- /dev/null +++ b/qqjf-Web/src/api/equipmenttask.js @@ -0,0 +1,26 @@ +import axios from '../utils/axios'; +import qs from 'qs'; + +/** + * @description 鎼滅储鍫嗗灈鏈轰换鍔� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + +export function SrmTaskSearch(data, param) { + return axios.post('/SrmTask/Search?page=' + data, qs.stringify(param)); +} + +/** + * @description 鎼滅储RGV浠诲姟 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + +export function RgvTaskSearch(data, param) { + return axios.post('/RgvTask/Search?page=' + data, qs.stringify(param)); +} diff --git a/qqjf-Web/src/api/forklift.js b/qqjf-Web/src/api/forklift.js new file mode 100644 index 0000000..4572151 --- /dev/null +++ b/qqjf-Web/src/api/forklift.js @@ -0,0 +1,34 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储鍙夎溅 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + + export function CarSearch(data,param) { + return axios.post('/Car/Search?page='+data,qs.stringify(param)); +} +/** + * @description 鍒犻櫎鍙夎溅 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function CarDelete(data) { + return axios.post('/Car/Delete',qs.stringify(data) ); +} +/** + * @description 鏂板淇敼鍙夎溅 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function CarAddOrUpdate(data) { + return axios.post('/Car/AddOrUpdate',qs.stringify(data) ); +} diff --git a/qqjf-Web/src/api/forklifttasks.js b/qqjf-Web/src/api/forklifttasks.js new file mode 100644 index 0000000..d0d6266 --- /dev/null +++ b/qqjf-Web/src/api/forklifttasks.js @@ -0,0 +1,55 @@ +import axios from '../utils/axios'; +import qs from 'qs'; + +/** + * @description 鎼滅储鍙夎溅浠诲姟 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + +export function CarTaskSearch(data, param) { + return axios.post('/CarTask/Search?page=' + data, qs.stringify(param)); +} +/** + * @description 鍒犻櫎鍙夎溅浠诲姟 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function CarTaskDelete(data) { + return axios.post('/CarTask/Delete', qs.stringify(data)); +} +/** + * @description 鏂板淇敼鍙夎溅浠诲姟 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function CarTaskAddOrUpdate(data) { + return axios.post('/CarTask/AddOrUpdate', qs.stringify(data)); +} +/** + * @description 鑾峰彇鍙夎溅浠诲姟鍙� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function CarTaskGetCode(data) { + return axios.post('/CarTask/GetCode', qs.stringify(data)); +} + +/** + * @description 鑾峰彇鍙夎溅鍙告満 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function GetCarUser(data) { + return axios.post('/CarTask/GetCarUser', qs.stringify(data)); +} diff --git a/qqjf-Web/src/api/intype.js b/qqjf-Web/src/api/intype.js new file mode 100644 index 0000000..4e4b14a --- /dev/null +++ b/qqjf-Web/src/api/intype.js @@ -0,0 +1,14 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储鍏ュ簱绫诲瀷 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + + export function InTypeSearch(data,param) { + return axios.post('/InType/Search?page='+data,qs.stringify(param)); +} diff --git a/qqjf-Web/src/api/inventory.js b/qqjf-Web/src/api/inventory.js new file mode 100644 index 0000000..8e3fa93 --- /dev/null +++ b/qqjf-Web/src/api/inventory.js @@ -0,0 +1,57 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鑾峰彇缂栧彿 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + + export function PlaceVsContainerGetCode(data,param) { + return axios.post('/PlaceVsContainer/GetCode',qs.stringify(param)); +} + +/** + * @description 鎼滅储搴撳瓨绠$悊 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + + export function PlaceVsContainer(data,param) { + return axios.post('/PlaceVsContainer/Search?page='+data,qs.stringify(param)); +} + +/** + * @description 鍒犻櫎搴撳瓨 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function PlaceVsContainerDelete(data) { + return axios.post('/PlaceVsContainer/Delete',qs.stringify(data) ); +} +/** + * @description 鏂板缂栬緫搴撳瓨 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function PlaceAddOrUpdate(data) { + return axios.post('/PlaceVsContainer/AddOrUpdate',qs.stringify(data) ); +} +/** + * @description 鏌ユ壘搴撲綅绫诲瀷 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function ContainerTypeSearch(data) { + return axios.post('/Container/GetContainerType',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/maintask.js b/qqjf-Web/src/api/maintask.js new file mode 100644 index 0000000..2dffe51 --- /dev/null +++ b/qqjf-Web/src/api/maintask.js @@ -0,0 +1,77 @@ +import axios from '../utils/axios'; +import qs from 'qs'; + +/** + * @description 鎼滅储涓讳换鍔� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + +export function TaskSearch(data, param) { + return axios.post('/Task/Search?page=' + data, qs.stringify(param)); +} +/** + * @description 鍏ㄩ儴瀵煎嚭 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + +export function GetAllMainTask(data) { + return axios.post('/Task/GetAllMainTask', qs.stringify(data)); +} + +/** + * @description 澶勭悊涓讳换鍔� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function TaskDeleteErrorTask(data) { + return axios.post('/Task/DeleteErrorTask', qs.stringify(data)); +} +/** + * @description 鍒犻櫎涓讳换鍔� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function TaskDelete(data) { + return axios.post('/Task/Delete', qs.stringify(data)); +} +/** + * @description 鏂板淇敼涓讳换鍔� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function TaskAddOrUpdate(data) { + return axios.post('/Task/AddOrUpdate', qs.stringify(data)); +} +/** + * @description 鎻愰珮浼樺厛绾� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function UpTaskLevel(data) { + return axios.post('/Task/UpTaskLevel', qs.stringify(data)); +} + +/** + * @description 寮哄埗浼樺厛 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function MustTask(data) { + return axios.post('/Task/MustTask', qs.stringify(data)); +} diff --git a/qqjf-Web/src/api/manage.js b/qqjf-Web/src/api/manage.js new file mode 100644 index 0000000..9035dc4 --- /dev/null +++ b/qqjf-Web/src/api/manage.js @@ -0,0 +1,38 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储鐢ㄦ埛 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function UserSearch(data) { +// return axios.post('/User/Search',qs.stringify(data) ); +// } + + export function UserSearch(data,param) { + return axios.post('/User/Search?page='+data,qs.stringify(param) ); +} + +/** + * @description 鍒犻櫎鐢ㄦ埛 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function UserDelete(data) { + return axios.post('/User/Delete',qs.stringify(data) ); +} +/** + * @description 鏂板缂栬緫鐢ㄦ埛 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function AddOrUpdate(data) { + return axios.post('/User/AddOrUpdate',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/materials.js b/qqjf-Web/src/api/materials.js new file mode 100644 index 0000000..b3f4817 --- /dev/null +++ b/qqjf-Web/src/api/materials.js @@ -0,0 +1,15 @@ +import axios from '../utils/axios' +import qs from 'qs'; + + +/** + * @description 鎼滅储鐗╂枡搴撳瓨 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + + export function ItemStorage(data,param) { + return axios.post('/ItemStorage/Search?page='+data,qs.stringify(param)); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/outbound.js b/qqjf-Web/src/api/outbound.js new file mode 100644 index 0000000..0a9cfcd --- /dev/null +++ b/qqjf-Web/src/api/outbound.js @@ -0,0 +1,60 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储鍑哄簱绠$悊璁″垝 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function UserSearch(data) { +// return axios.post('/User/Search',qs.stringify(data) ); +// } + export function OutOrderSearch(data,param) { + return axios.post('/OutOrder/Search?page='+data,qs.stringify(param)); +} +/** + * @description 鑾峰彇鍏ュ簱缂栧彿 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function OutOrderGetCode(data) { + return axios.post('/OutOrder/GetCode',qs.stringify(data) ); +} +/** + * @description 鍒犻櫎鍏ュ簱璁″垝 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function OutOrderDelete(data) { + return axios.post('/OutOrder/Delete',qs.stringify(data) ); +} +/** + * @description 鏂板淇敼鍏ュ簱 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function OutOrderAddOrUpdate(data) { + return axios.post('/OutOrder/AddOrUpdate',qs.stringify(data) ); +} +/** + * @description 鍑哄簱鍗曚笅鍙� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function CheckOutOrder(data) { + return axios.post('OutOrder/CheckOutOrder',qs.stringify(data) ); +} + + export function GetForkliftWorkers(data) { + return axios.post('User/Search?page=1', data); +} diff --git a/qqjf-Web/src/api/output.js b/qqjf-Web/src/api/output.js new file mode 100644 index 0000000..88c476b --- /dev/null +++ b/qqjf-Web/src/api/output.js @@ -0,0 +1,14 @@ +import axios from '../utils/axios'; +import qs from 'qs'; + +/** + * @description 鎼滅储鐗╂枡搴撳瓨 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + +export function GetInOutCountByHour(param) { + return axios.post('/SummaryStatistics/GetInOutCountByHour', qs.stringify(param)); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/palte.js b/qqjf-Web/src/api/palte.js new file mode 100644 index 0000000..852eba0 --- /dev/null +++ b/qqjf-Web/src/api/palte.js @@ -0,0 +1,63 @@ +import axios from '../utils/axios'; +import qs from 'qs'; + +/** + * @description 鎼滅储鍣ㄥ叿绠$悊 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function UserSearch(data) { +// return axios.post('/User/Search',qs.stringify(data) ); +// } + +export function ContainerSearch(data, param) { + return axios.post('/Container/Search?page=' + data, qs.stringify(param)); +} + +/** + * @description 鎼滅储鍣ㄥ叿绠$悊 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function UserSearch(data) { +// return axios.post('/User/Search',qs.stringify(data) ); +// } + +export function GetAllContainer(data, param) { + return axios.post('/Container/GetAllContainer', qs.stringify(param)); +} + +/** + * @description 鏌ユ壘鍣ㄥ叿瑙勬牸 + * @param {string} + * @param {string} + * @returns {string} + */ +export function PalletSearch(data, param) { + return axios.post('/Pallet/Search?page=' + data, qs.stringify(param)); +} + +/** + * @description 鍒犻櫎鍣ㄥ叿 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function ContainerDelete(data) { + return axios.post('/Container/Delete', qs.stringify(data)); +} +/** + * @description 鏂板缂栬緫鍣ㄥ叿 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function ContainerAddOrUpdate(data) { + return axios.post('/Container/AddOrUpdate', qs.stringify(data)); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/position.js b/qqjf-Web/src/api/position.js new file mode 100644 index 0000000..92d5321 --- /dev/null +++ b/qqjf-Web/src/api/position.js @@ -0,0 +1,45 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储璐т綅绠$悊 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function PlaceSearch(data,param) { + return axios.post('/Place/Search?page='+data,qs.stringify(param)); +} + +/** + * @description 鏍规嵁浠诲姟绫诲瀷鑾峰彇鍙敤鐨勫簱浣� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function PlaceGetPlace(param) { + return axios.post('/Place/GetPlace',qs.stringify(param)); +} + +/** + * @description 鍒犻櫎璐т綅 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function ContainerDelete(data) { + return axios.post('/Container/Delete',qs.stringify(data) ); +} +/** + * @description 鏂板缂栬緫璐т綅 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function PlaceAddOrUpdate(data) { + return axios.post('/Place/AddOrUpdate',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/quotation.js b/qqjf-Web/src/api/quotation.js new file mode 100644 index 0000000..65c959f --- /dev/null +++ b/qqjf-Web/src/api/quotation.js @@ -0,0 +1,98 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储鍏ュ簱绠$悊璁″垝 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function UserSearch(data) { +// return axios.post('/User/Search',qs.stringify(data) ); +// } + export function InOrderSearch(data,param) { + return axios.post('/InOrder/Search?page='+data,qs.stringify(param)); +} +/** + * @description 鑾峰彇鍏ュ簱缂栧彿 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function InOrderGetCode(data) { + return axios.post('/InOrder/GetCode',qs.stringify(data) ); +} +/** + * @description 鍒犻櫎鍏ュ簱璁″垝 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function InOrderDelete(data) { + return axios.post('/InOrder/Delete',qs.stringify(data) ); +} +/** + * @description 鏂板淇敼鍏ュ簱 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function InOrderAddOrUpdate(data) { + return axios.post('/InOrder/AddOrUpdate',qs.stringify(data) ); +} +/** + * @description 鍐插帇鍏ュ簱璁″垝瀵煎叆 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function ImportInOrder(data) { + return axios.post('/InOrder/ImportInOrder',qs.stringify(data) ); +} + +/** + * @description 淇敼绾夸笅浜や粯鏁伴噺 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function UpdateUnlineNum(data) { + return axios.post('/InOrder/UpdateUnlineNum',qs.stringify(data) ); +} + +/** + * @description 鎻愪氦瀹℃牳 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function InOrderSend(data) { + return axios.post('/InOrder/Send',qs.stringify(data) ); +} +/** + * @description 瀹℃牳閫氳繃 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function InOrderCheck(data) { + return axios.post('/InOrder/Check',qs.stringify(data) ); +} +/** + * @description 瀹℃牳椹冲洖 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function InOrderReject(data) { + return axios.post('/InOrder/Reject',qs.stringify(data) ); +} diff --git a/qqjf-Web/src/api/register.js b/qqjf-Web/src/api/register.js new file mode 100644 index 0000000..9d7c5fd --- /dev/null +++ b/qqjf-Web/src/api/register.js @@ -0,0 +1,15 @@ +import axios from '../utils/axios' +import qs from 'qs'; +/** + * @description 鐢ㄦ埛鐧诲綍 + * @param {string} username + * @param {string} password + * @returns {string} token + * qs. + * */ +// export function login(data) { +// return axios.post('user/login?userName='+data.userName+'&password='+data.password ); +// } + export function login(data) { + return axios.post('user/login',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/reportforms.js b/qqjf-Web/src/api/reportforms.js new file mode 100644 index 0000000..6ee3670 --- /dev/null +++ b/qqjf-Web/src/api/reportforms.js @@ -0,0 +1,91 @@ +import axios from '../utils/axios' +import qs from 'qs'; + + +/** + * @description 浠诲姟鑺傛媿鍒嗘瀽 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function GetTaskBeatAnalysis(data) { + return axios.post('/SummaryStatistics/GetTaskBeatAnalysis',qs.stringify(data) ); +} + +/** + * @description 鍑哄叆搴撲换鍔″钩鍧囨椂闀� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function GetInOutAverageTime(data) { + return axios.post('/SummaryStatistics/GetInOutAverageTime',qs.stringify(data) ); +} + +/** + * @description 搴撳瓨鍒嗙被缁熻 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function GetStockClassificationData(data) { + return axios.post('/SummaryStatistics/GetStockClassificationData',qs.stringify(data) ); +} + +/** + * @description 璐ф牸鍒╃敤鐜� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function GetStorageVailability(data) { + return axios.post('/SummaryStatistics/GetStorageVailability',qs.stringify(data) ); +} + +/** + * @description 鍒朵欢鍛ㄨ浆鏃堕棿 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function GetPartTurnover(data) { + return axios.post('/SummaryStatistics/GetPartTurnover',qs.stringify(data) ); +} + +/** + * @description 璁惧鍙姩鐜� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function GetDevMovable(data) { + return axios.post('/SummaryStatistics/GetDevMovable',qs.stringify(data) ); +} + +/** + * @description 璁惧鍒╃敤鐜� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function GetDevAvailability(data) { + return axios.post('/SummaryStatistics/GetDevAvailability',qs.stringify(data) ); +} + +/** + * @description 鍦ㄥ埗鍝佽祫閲戝垎鏋� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function GetStorageCapitalAnalysis(data) { + return axios.post('/SummaryStatistics/GetStorageCapitalAnalysis',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/role-auth.js b/qqjf-Web/src/api/role-auth.js new file mode 100644 index 0000000..fbeb602 --- /dev/null +++ b/qqjf-Web/src/api/role-auth.js @@ -0,0 +1,53 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储鎵�鏈夎彍鍗� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function DeptSearch(data) { +// return axios.post('/Dept/Search',qs.stringify(data) ); +// } + +export function GetUserRoleAllPermission(param) { + return axios.post('/Permission/GetUserRoleAllPermission',qs.stringify(param)); +} + +/** + * @description 鎼滅储鏉冮檺 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function DeptSearch(data) { +// return axios.post('/Dept/Search',qs.stringify(data) ); +// } + + export function SearchPermission(param) { + return axios.post('/Permission/SearchPermission',qs.stringify(param)); +} + +/** + * @description 鎼滅储瑙掕壊鎷ユ湁鏉冮檺 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function SearchRoleVsPermission(data) { + return axios.post('/Permission/SearchRoleVsPermission',qs.stringify(data) ); +} +/** + * @description 淇敼瑙掕壊鏉冮檺 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function AddOrUpdateRoleVsPermission(data) { + return axios.post('/Permission/AddOrUpdateRoleVsPermission',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/role.js b/qqjf-Web/src/api/role.js new file mode 100644 index 0000000..ea131b5 --- /dev/null +++ b/qqjf-Web/src/api/role.js @@ -0,0 +1,38 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储鐢ㄦ埛 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function UserSearch(data) { +// return axios.post('/User/Search',qs.stringify(data) ); +// } + + export function RoleSearch(data,param) { + return axios.post('/Role/Search?page='+data,qs.stringify(param)); +} + +/** + * @description 鍒犻櫎鐢ㄦ埛 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function RoleDelete(data) { + return axios.post('/Role/Delete',qs.stringify(data) ); +} +/** + * @description 鏂板缂栬緫鐢ㄦ埛 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function RoleAddOrUpdate(data) { + return axios.post('/Role/AddOrUpdate',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/stacker.js b/qqjf-Web/src/api/stacker.js new file mode 100644 index 0000000..ecf988d --- /dev/null +++ b/qqjf-Web/src/api/stacker.js @@ -0,0 +1,38 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储璐т綅绠$悊 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function UserSearch(data) { +// return axios.post('/User/Search',qs.stringify(data) ); +// } + + export function DeviceSearch(data,param) { + return axios.post('/Device/Search?page='+data,qs.stringify(param)); +} + +/** + * @description 鍒犻櫎璐т綅 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +// export function ContainerDelete(data) { +// return axios.post('/Container/Delete',qs.stringify(data) ); +// } +/** + * @description 鏂板缂栬緫璐т綅 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function DeviceAddOrUpdate(data) { + return axios.post('/Device/AddOrUpdate',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/statistics.js b/qqjf-Web/src/api/statistics.js new file mode 100644 index 0000000..fd56c8c --- /dev/null +++ b/qqjf-Web/src/api/statistics.js @@ -0,0 +1,14 @@ +import axios from '../utils/axios'; +import qs from 'qs'; + +/** + * @description 鍑哄叆搴撶粺璁� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + +export function GetEnterNum(param) { + return axios.post('/Task/GetEnterNum', qs.stringify(param)); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/taskrecord.js b/qqjf-Web/src/api/taskrecord.js new file mode 100644 index 0000000..73096a7 --- /dev/null +++ b/qqjf-Web/src/api/taskrecord.js @@ -0,0 +1,25 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鎼滅储浠诲姟璁板綍 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + + export function TaskRecodeSearch(data,param) { + return axios.post('/TaskRecode/Search?page='+data,qs.stringify(param)); +} + +/** + * @description 鍒犻櫎浠诲姟 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function TaskRecodeDelete(data) { + return axios.post('/TaskRecode/Delete',qs.stringify(data) ); +} \ No newline at end of file diff --git a/qqjf-Web/src/api/viewdata.js b/qqjf-Web/src/api/viewdata.js new file mode 100644 index 0000000..a5c5bc1 --- /dev/null +++ b/qqjf-Web/src/api/viewdata.js @@ -0,0 +1,38 @@ +import axios from '../utils/axios' +import qs from 'qs'; + +/** + * @description 鑾峰彇鍚勭鐘舵�佺殑搴撲綅鏁伴噺 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + + export function GetAllStatusPlaceCount(param) { + return axios.post('/Place/GetAllStatusPlaceCount',qs.stringify(param)); +} + +/** + * @description 鑾峰彇鎸囧畾宸烽亾搴撶殑鎵�鏈夊簱浣嶄俊鎭� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function GetAllPlaceInfo(data) { + return axios.post('/Place/GetAllPlaceInfo',qs.stringify(data) ); +} +/** + * @description 鑾峰彇搴撲綅閲岀殑鎵樼洏鎴栬�呯墿鏂欎俊鎭� + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + export function GetPVCVIInfo(data) { + return axios.post('/Place/GetPVCVIInfo',qs.stringify(data) ); + } + + + diff --git a/qqjf-Web/src/api/warning.js b/qqjf-Web/src/api/warning.js new file mode 100644 index 0000000..3dac3f9 --- /dev/null +++ b/qqjf-Web/src/api/warning.js @@ -0,0 +1,55 @@ +import axios from '../utils/axios'; +import qs from 'qs'; + +/** + * @description 鎼滅储鎶ヨ淇℃伅 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ + +export function AlertSearch(data, param) { + return axios.post('/Alert/Search?page=' + data, qs.stringify(param)); +} +/** + * @description 鑾峰彇缂栧彿 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function AlertGetCode(data) { + return axios.post('/Alert/GetCode', qs.stringify(data)); +} +/** + * @description 鍒犻櫎鎶ヨ淇℃伅 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function AlertDelete(data) { + return axios.post('/Alert/Delete', qs.stringify(data)); +} +/** + * @description 鏂板淇敼鎶ヨ淇℃伅 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function CarAddOrUpdate(data) { + return axios.post('/Alert/AddOrUpdate', qs.stringify(data)); +} + +/** + * @description 瀵煎嚭鍏ㄩ儴鏁版嵁 + * @param {string} + * @param {string} + * @returns {string} + * qs. + * */ +export function GetAllAlarmInfo(data) { + return axios.post('/Alert/GetAllAlarmInfo', qs.stringify(data)); +} diff --git a/qqjf-Web/src/assets/css/TimesNewRomanPSMT24163565.ttf b/qqjf-Web/src/assets/css/TimesNewRomanPSMT24163565.ttf new file mode 100644 index 0000000..9201636 --- /dev/null +++ b/qqjf-Web/src/assets/css/TimesNewRomanPSMT24163565.ttf Binary files differ diff --git a/qqjf-Web/src/assets/heard/heard.jpg b/qqjf-Web/src/assets/heard/heard.jpg new file mode 100644 index 0000000..9de5ff8 --- /dev/null +++ b/qqjf-Web/src/assets/heard/heard.jpg Binary files differ diff --git a/qqjf-Web/src/assets/heard/heard1.jpg b/qqjf-Web/src/assets/heard/heard1.jpg new file mode 100644 index 0000000..bc76ecf --- /dev/null +++ b/qqjf-Web/src/assets/heard/heard1.jpg Binary files differ diff --git a/qqjf-Web/src/assets/heard/logbg.jpg b/qqjf-Web/src/assets/heard/logbg.jpg new file mode 100644 index 0000000..864edf0 --- /dev/null +++ b/qqjf-Web/src/assets/heard/logbg.jpg Binary files differ diff --git a/qqjf-Web/src/assets/heard/logo.png b/qqjf-Web/src/assets/heard/logo.png new file mode 100644 index 0000000..31001fa --- /dev/null +++ b/qqjf-Web/src/assets/heard/logo.png Binary files differ diff --git a/qqjf-Web/src/assets/login/bg.jpg b/qqjf-Web/src/assets/login/bg.jpg new file mode 100644 index 0000000..28aa853 --- /dev/null +++ b/qqjf-Web/src/assets/login/bg.jpg Binary files differ diff --git a/qqjf-Web/src/components/SvgIcon/index.vue b/qqjf-Web/src/components/SvgIcon/index.vue new file mode 100644 index 0000000..dd583d6 --- /dev/null +++ b/qqjf-Web/src/components/SvgIcon/index.vue @@ -0,0 +1,49 @@ +<template> + <svg :class="svgClass" aria-hidden="true" v-on="$listeners"> + <use :xlink:href="iconName" /> + </svg> +</template> + +<script> +export default { + name: 'SvgIcon', + props: { + iconClass: { + type: String, + required: true + }, + className: { + type: String, + default: '' + } + }, + computed: { + iconName() { + return `#icon-${this.iconClass}` + }, + svgClass() { + if (this.className) { + return 'svg-icon ' + this.className + } else { + return 'svg-icon' + } + } + } +} +</script> + +<style scoped> +.svg-icon { + width: 1em; + height: 1em; + vertical-align: -0.15em; + fill: currentColor; + overflow: hidden; +} + +.svg-external-icon { + background-color: currentColor; + mask-size: cover!important; + display: inline-block; +} +</style> diff --git a/qqjf-Web/src/components/TreeTable/eval.js b/qqjf-Web/src/components/TreeTable/eval.js new file mode 100644 index 0000000..ea8b1dd --- /dev/null +++ b/qqjf-Web/src/components/TreeTable/eval.js @@ -0,0 +1,30 @@ +/* eslint-disable */ +/* * + * @Author: jianglei + * @Date: 2017-10-12 12:06:49 + */ +"use strict"; +import Vue from "vue"; +export default function treeToArray(data, expandAll, parent = null, level = null) { + let tmp = []; + Array.from(data).forEach(function(record) { + if (record._expanded === undefined) { + Vue.set(record, "_expanded", expandAll); + } + let _level = 1; + if (level !== undefined && level !== null) { + _level = level + 1; + } + Vue.set(record, "_level", _level); + // 濡傛灉鏈夌埗鍏冪礌 + if (parent) { + Vue.set(record, "parent", parent); + } + tmp.push(record); + if (record.children && record.children.length > 0 && record._expanded) { + const children = treeToArray(record.children, expandAll, record, _level); + tmp = tmp.concat(children); + } + }); + return tmp; +} diff --git a/qqjf-Web/src/components/TreeTable/index.vue b/qqjf-Web/src/components/TreeTable/index.vue new file mode 100644 index 0000000..edbf10f --- /dev/null +++ b/qqjf-Web/src/components/TreeTable/index.vue @@ -0,0 +1,159 @@ +<template> + <el-table + :data="formatData" + :row-style="showRow" + v-bind="$attrs" + :class="'abc-' + columns.length" + highlight-current-row + size="mini" + > + <el-table-column v-if="columns.length === 0" :label="treeColumnLabel" width="280"> + <template slot-scope="scope"> + <el-checkbox + v-model="scope.row.isSelected" + @change=" + isSelected => { + rowSelected(isSelected, scope.row); + } + " + ></el-checkbox> + <span v-for="space in scope.row._level" :key="space" class="ms-tree-space" /> + <span v-if="iconShow(0, scope.row)" class="tree-ctrl" @click="toggleExpanded(scope.$index)"> + <i v-if="!scope.row._expanded" class="el-icon-plus" /> + <i v-else class="el-icon-minus" /> + </span> + {{ scope.row.menuName }} + </template> + </el-table-column> + <el-table-column + v-for="(column, index) in columns" + v-else + :key="column.value" + :label="column.text" + :width="column.width" + > + <template slot-scope="scope"> + <span v-for="space in scope.row._level" v-if="index === 0" :key="space" class="ms-tree-space" /> + <span v-if="iconShow(index, scope.row)" class="tree-ctrl" @click="toggleExpanded(scope.$index)"> + <i v-if="!scope.row._expanded" class="el-icon-plus" /> + <i v-else class="el-icon-minus" /> + </span> + {{ scope.row[column.value] }} + </template> + </el-table-column> + <slot /> + </el-table> +</template> + +<script> +import treeToArray from './eval'; +export default { + name: 'TreeTable', + props: { + /* eslint-disable */ + data: { + type: [Array, Object], + required: true + }, + // 鏍戝鑸垪澶村悕绉� + treeColumnLabel: { + type: String, + default: '瀵艰埅绫诲埆' + }, + columns: { + type: Array, + default: () => [] + }, + evalFunc: Function, + evalArgs: Array, + expandAll: { + type: Boolean, + default: false + } + }, + computed: { + // 鏍煎紡鍖栨暟鎹簮 + formatData: function () { + let tmp; + if (!Array.isArray(this.data)) { + tmp = [this.data]; + } else { + tmp = this.data; + } + const func = this.evalFunc || treeToArray; + const args = this.evalArgs ? Array.concat([tmp, this.expandAll], this.evalArgs) : [tmp, this.expandAll]; + return func.apply(null, args); + } + }, + methods: { + showRow: function (row) { + const show = row.row.parent ? row.row.parent._expanded && row.row.parent._show : true; + row.row._show = show; + return show ? 'animation:treeTableShow 1s;-webkit-animation:treeTableShow 1s;' : 'display:none;'; + }, + // 鍒囨崲涓嬬骇鏄惁灞曞紑 + toggleExpanded: function (trIndex) { + const record = this.formatData[trIndex]; + record._expanded = !record._expanded; + }, + // 鍥炬爣鏄剧ず + iconShow(index, record) { + return index === 0 && record.children && record.children.length > 0; + }, + // 琛屽墠闈㈠閫夋閫変腑浜嬩欢 + rowSelected(isSelected, row) { + this.$emit('row-selected', isSelected, row); + } + } +}; +</script> +<style rel="stylesheet/css"> +@keyframes treeTableShow { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@-webkit-keyframes treeTableShow { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +</style> + +<style lang="scss" rel="stylesheet/scss" scoped> +$color-blue: #2196f3; +$space-width: 18px; +.ms-tree-space { + position: relative; + top: 1px; + display: inline-block; + font-style: normal; + font-weight: 400; + line-height: 1; + width: $space-width; + height: 14px; + &::before { + content: ''; + } +} +.processContainer { + width: 100%; + height: 100%; +} +table td { + line-height: 26px; +} + +.tree-ctrl { + position: relative; + cursor: pointer; + color: $color-blue; + margin-left: -$space-width; +} +</style> diff --git a/qqjf-Web/src/components/TreeTable/readme.md b/qqjf-Web/src/components/TreeTable/readme.md new file mode 100644 index 0000000..2a3b5af --- /dev/null +++ b/qqjf-Web/src/components/TreeTable/readme.md @@ -0,0 +1,89 @@ +## 鍐欏湪鍓嶉潰 +姝ょ粍浠朵粎鎻愪緵涓�涓垱寤篢reeTable鐨勮В鍐虫�濊矾 + +## prop璇存槑 +#### *data* + **蹇呭~** + + 鍘熷鏁版嵁,瑕佹眰鏄竴涓暟缁勬垨鑰呭璞� + ```javascript + [{ + key1: value1, + key2: value2, + children: [{ + key1: value1 + }, + { + key1: value1 + }] + }, + { + key1: value1 + }] + ``` + 鎴栬�� + ```javascript + { + key1: value1, + key2: value2, + children: [{ + key1: value1 + }, + { + key1: value1 + }] + } + ``` + +#### columns + 鍒楀睘鎬�,瑕佹眰鏄竴涓暟缁� + + 1. text: 鏄剧ず鍦ㄨ〃澶寸殑鏂囧瓧 + 2. value: 瀵瑰簲data鐨刱ey銆倀reeTable灏嗘樉绀虹浉搴旂殑value + 3. width: 姣忓垪鐨勫搴︼紝涓轰竴涓暟瀛�(鍙��) + + 濡傛灉浣犳兂瑕佹瘡涓瓧娈甸兘鏈夎嚜瀹氫箟鐨勬牱寮忔垨鑰呭祵濂楀叾浠栫粍浠讹紝columns鍙笉鎻愪緵锛岀洿鎺ュ儚鍦╡l-table涓�鏍峰啓鍗冲彲锛屽鏋滄病鏈夎嚜瀹氫箟鍐呭锛屾彁渚沜olumns灏嗘洿鍔犵殑渚挎嵎鏂逛究 + + 濡傛灉浣犳湁鍑犱釜瀛楁鏄渶瑕佽嚜瀹氫箟鐨勶紝鍑犱釜涓嶉渶瑕侊紝閭d箞鍙互灏嗕笉闇�瑕佽嚜瀹氫箟鐨勫瓧娈垫斁鍏olumns锛屽皢闇�瑕佽嚜瀹氫箟鐨勫唴瀹规斁鍏ュ埌slot涓紝璇︽儏瑙佸悗鏂� + ```javascript + [{ + value:string, + text:string, + width:number + },{ + value:string, + text:string, + width:number + }] + ``` + +#### expandAll + 鏄惁榛樿鍏ㄩ儴灞曞紑锛宐oolean鍊硷紝榛樿涓篺alse + +#### evalFunc + 瑙f瀽鍑芥暟锛宖unction锛岄潪蹇呴』 + + 濡傛灉涓嶆彁渚涳紝灏嗕娇鐢ㄩ粯璁ょ殑[evalFunc](./eval.js) + + 濡傛灉鎻愪緵浜唀valFunc,閭d箞浼氱敤鎻愪緵鐨別valFunc鍘昏В鏋恉ata锛屽苟杩斿洖treeTable娓叉煋鎵�闇�瑕佺殑鍊笺�傚浣曠紪鍐欎竴涓猠valFunc锛岃鍙傝�僛*eval.js*](https://github.com/PanJiaChen/vue-element-admin/blob/master/src/components/TreeTable/eval.js)鎴朳*customEval.js*](https://github.com/PanJiaChen/vue-element-admin/blob/master/src/views/example/table/treeTable/customEval.js) + +#### evalArgs + 瑙f瀽鍑芥暟鐨勫弬鏁帮紝鏄竴涓暟缁� + + **璇锋敞鎰忥紝鑷畾涔夌殑瑙f瀽鍑芥暟鍙傛暟绗竴涓负this.data锛岀浜屼釜鍙傛暟涓猴紝 this.expandAll,浣犱笉闇�瑕佸湪evalArgs濉啓銆備竴瀹氳浣忥紝杩欎袱涓弬鏁版槸寮哄埗鎬х殑锛屽苟涓斾綅缃笉鍙鍊�** *this.data涓洪渶瑕佽В鏋愮殑鏁版嵁锛宼his.expandAll涓烘槸鍚﹂粯璁ゅ睍寮�* + + 濡備綘鐨勮В鏋愬嚱鏁伴渶瑕佺殑鍙傛暟涓篳(this.data, this.expandAll,1,2,3,4)`锛岄偅涔堜綘鍙渶瑕佸皢`[1,2,3,4]`璧嬪�肩粰`evalArgs`灏卞彲浠ヤ簡 + + 濡傛灉浣犵殑瑙f瀽鍑芥暟鍙傛暟鍙湁`(this.data, this.expandAll)`,閭d箞灏卞彲浠ヤ笉鐢ㄥ~鍐檈valArgs浜� + + 鍏蜂綋鍙弬鑰僛*customEval.js*](https://github.com/PanJiaChen/vue-element-admin/blob/master/src/views/example/table/treeTable/customEval.js)鐨勫嚱鏁板弬鏁板拰[customTreeTable](https://github.com/PanJiaChen/vue-element-admin/blob/master/src/views/example/table/treeTable/customTreeTable.vue)鐨刞evalArgs`灞炴�у�� + + ## slot + 杩欐槸涓�涓嚜瀹氫箟鍒楃殑鎻掓Ы銆� + + 榛樿鎯呭喌涓嬶紝treeTable鍙湁涓�琛岃灞曠ず鏁版嵁鐨勫姛鑳姐�備絾鏄竴鑸儏鍐典笅锛屾垜浠細瑕佺粰琛屽姞涓婁竴涓搷浣滄寜閽垨鑰呮牴鎹綋琛屾暟鎹睍绀轰笉鍚岀殑鏍峰紡锛岃繖鏃舵垜浠氨闇�瑕佽嚜瀹氫箟鍒椾簡銆傝鍙傝�僛customTreeTable](https://github.com/PanJiaChen/vue-element-admin/blob/master/src/views/example/table/treeTable/customTreeTable.vue)锛孾瀹炰緥鏁堟灉](http://panjiachen.github.io/vue-element-admin/#/example/table/custom-tree-table) + + `slot`鍜宍columns灞炴�鍙悓鏃跺瓨鍦�,columns閲岄潰鐨勬暟鎹垪浼氬湪slot鑷畾涔夊垪鐨勫乏杈瑰睍绀� + + ## 鍏朵粬 + 濡傛灉鏈夊叾浠栫殑闇�姹傦紝璇峰弬鑰僛el-table](http://element-cn.eleme.io/#/en-US/component/table)鐨刟pi鑷淇敼index.vue diff --git a/qqjf-Web/src/components/autoscroll/eleResize.js b/qqjf-Web/src/components/autoscroll/eleResize.js new file mode 100644 index 0000000..e04bca2 --- /dev/null +++ b/qqjf-Web/src/components/autoscroll/eleResize.js @@ -0,0 +1,110 @@ +/** + * Created by taozh on 2017/5/6. + * taozh1982@gmail.com + */ +var EleResize = { + _handleResize: function (e) { + var ele = e.target || e.srcElement; + var trigger = ele.__resizeTrigger__; + if (trigger) { + var handlers = trigger.__z_resizeListeners; + if (handlers) { + var size = handlers.length; + for (var i = 0; i < size; i++) { + var h = handlers[i]; + var handler = h.handler; + var context = h.context; + handler.apply(context, [e]); + } + } + } + }, + _removeHandler: function (ele, handler, context) { + var handlers = ele.__z_resizeListeners; + if (handlers) { + var size = handlers.length; + for (var i = 0; i < size; i++) { + var h = handlers[i]; + if (h.handler === handler && h.context === context) { + handlers.splice(i, 1); + return; + } + } + } + }, + _createResizeTrigger: function (ele) { + var obj = document.createElement('object'); + obj.setAttribute('style', + 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden;opacity: 0; pointer-events: none; z-index: -1;'); + obj.onload = EleResize._handleObjectLoad; + obj.type = 'text/html'; + ele.appendChild(obj); + obj.data = 'about:blank'; + return obj; + }, + _handleObjectLoad: function (evt) { + this.contentDocument.defaultView.__resizeTrigger__ = this.__resizeElement__; + this.contentDocument.defaultView.addEventListener('resize', EleResize._handleResize); + } +}; +if (document.attachEvent) {//ie9-10 + EleResize.on = function (ele, handler, context) { + var handlers = ele.__z_resizeListeners; + if (!handlers) { + handlers = []; + ele.__z_resizeListeners = handlers; + ele.__resizeTrigger__ = ele; + ele.attachEvent('onresize', EleResize._handleResize); + } + handlers.push({ + handler: handler, + context: context + }); + }; + EleResize.off = function (ele, handler, context) { + var handlers = ele.__z_resizeListeners; + if (handlers) { + EleResize._removeHandler(ele, handler, context); + if (handlers.length === 0) { + ele.detachEvent('onresize', EleResize._handleResize); + delete ele.__z_resizeListeners; + } + } + } +} else { + EleResize.on = function (ele, handler, context) { + var handlers = ele.__z_resizeListeners; + if (!handlers) { + handlers = []; + ele.__z_resizeListeners = handlers; + + if (getComputedStyle(ele, null).position === 'static') { + ele.style.position = 'relative'; + } + var obj = EleResize._createResizeTrigger(ele); + ele.__resizeTrigger__ = obj; + obj.__resizeElement__ = ele; + } + handlers.push({ + handler: handler, + context: context + }); + }; + EleResize.off = function (ele, handler, context) { + var handlers = ele.__z_resizeListeners; + if (handlers) { + EleResize._removeHandler(ele, handler, context); + if (handlers.length === 0) { + var trigger = ele.__resizeTrigger__; + if (trigger) { + trigger.contentDocument.defaultView.removeEventListener('resize', EleResize._handleResize); + ele.removeChild(trigger); + delete ele.__resizeTrigger__; + } + delete ele.__z_resizeListeners; + } + } + } +} + +export default EleResize \ No newline at end of file diff --git a/qqjf-Web/src/components/autoscroll/index.vue b/qqjf-Web/src/components/autoscroll/index.vue new file mode 100644 index 0000000..a0883d8 --- /dev/null +++ b/qqjf-Web/src/components/autoscroll/index.vue @@ -0,0 +1,197 @@ +<template> + <div class="auto-scroll-compontent" :style="{ width, height }"> + <div class="auto-scroll-outer" ref="frame" :class="[dir === 'vertical' ? 'vertical-outer' : 'horizontal-outer']"> + <div + class="auto-scroll-wrapper" + ref="wrapper" + :key="refreshKey" + :class="[dir === 'vertical' ? 'vertical-wrapper' : 'horizontal-wrapper']" + :style="{ + top: moveTop + 'px', + marginLeft: moveLeft + 'px', + transition: transition + }" + > + <slot></slot> + </div> + </div> + </div> +</template> + +<script> +import eleResize from './eleResize.js'; +export default { + name: 'autoScrollCompontent', + props: { + dir: { + type: String, + default: 'vertical' /* 鏂瑰悜鍊硷細姘村钩-horizontal 绔�-vertical */ + }, + width: { + type: String, + default: '100%' + }, + height: { + type: String, + default: '100%' + }, + stepSpeed: { + type: Number, + default: 500 /* 绉诲姩閫熷害锛屽崟浣� ms/100px */ + }, + wait: { + type: Number, + default: 3000 /* 鍗曟鍔ㄧ敾缁撴潫鍚庣殑绛夊緟鏃堕棿锛屽崟浣� ms */ + } + }, + data() { + return { + $frame: null, + refreshKey: 0, + outerWidth: 0, + outerHeight: 0, + wrapperWidth: 0, + wrapperHeight: 0, + moveDistance: 0, + moveTop: 0, + moveLeft: 0, + transition: 'all 0', + interval: null, + roundTime: 0 /* 涓�涓粴鍔ㄥ懆鏈熼渶瑕佺殑鏃堕棿 */ + }; + }, + mounted() { + this.init(); + }, + beforeDestroy() { + this.clearInterval(); + this.destroyEleResize(); + }, + methods: { + init() { + this.moveTop = 0; + this.moveLeft = 0; + this.callSize(); + this.createAnimation(); + this.createEleResize(); + }, + /* 鍒涘缓div瀹介珮鍙樺寲鐩戝惉鍣� */ + createEleResize() { + this.$frame = this.$refs.frame; + eleResize.on(this.$frame, this.eleListener); + }, + /* div瀹介珮鐩戝惉鍣ㄧ洃鍚簨浠� */ + eleListener() { + this.moveTop = 0; + this.moveLeft = 0; + this.callSize(); + this.clearInterval(); + this.createAnimation(); + }, + /* 瀹介珮璁$畻 */ + callSize() { + if (this.dir === 'vertical') { + this.outerHeight = this.$refs.frame.offsetHeight; + this.wrapperHeight = this.$refs.wrapper.offsetHeight; + if (this.wrapperHeight > this.outerHeight) { + this.moveDistance = this.wrapperHeight - this.outerHeight; + this.roundTime = Math.floor((this.moveDistance / 100) * this.stepSpeed); + this.transition = 'top ' + this.roundTime + 'ms linear'; + } + } else { + this.outerWidth = this.$refs.frame.offsetWidth; + this.wrapperWidth = this.$refs.wrapper.scrollWidth; + if (this.wrapperWidth > this.outerWidth) { + this.moveDistance = this.wrapperWidth - this.outerWidth; + this.roundTime = Math.floor((this.moveDistance / 100) * this.stepSpeed); + this.transition = 'margin-left ' + this.roundTime + 'ms linear'; + } + } + }, + /* 鍒涘缓鍔ㄧ敾璁℃椂鍣� */ + createAnimation() { + if (this.roundTime) { + if (this.dir === 'vertical') { + this.animationVer(); + this.interval = window.setInterval(this.animationVer, this.roundTime + this.wait); + } else { + this.animationHor(); + this.interval = window.setInterval(this.animationHor, this.roundTime + this.wait); + } + } + }, + /* 绾靛悜婊氬姩鍊煎彉鍖� */ + animationVer() { + if (this.moveTop === 0) { + this.moveTop = -this.moveDistance; + } else { + this.moveTop = 0; + } + }, + /* 妯悜婊氬姩鍊煎彉鍖� */ + animationHor() { + if (this.moveLeft === 0) { + this.moveLeft = -this.moveDistance; + } else { + this.moveLeft = 0; + } + }, + /* 璁℃椂鍣ㄦ竻妤� */ + clearInterval() { + try { + window.clearInterval(this.interval); + this.interval = null; + } catch (e) { + //TODO handle the exception + } + }, + /* div瀹介珮鍙樺寲浜嬩欢绉婚櫎 */ + destroyEleResize() { + try { + eleResize.off(this.$frame, this.eleListener); + } catch (e) { + //TODO handle the exception + } + } + } +}; +</script> + +<style scoped lang="scss"> +.auto-scroll-compontent { + .auto-scroll-outer { + overflow: hidden; + width: 100%; + height: 100%; + &.vertical-outer { + position: relative; + } + &.horizontal-outer { + } + } + .auto-scroll-wrapper { + &.vertical-wrapper { + position: absolute; + width: 100%; + height: auto; + left: 0; + } + &.horizontal-wrapper { + display: flex; + width: 100%; + height: 100%; + } + } +} +</style> +<style lang="scss"> +.auto-scroll-compontent { + .auto-scroll-wrapper { + &.horizontal-wrapper { + & > * { + flex-shrink: 0; + } + } + } +} +</style> diff --git a/qqjf-Web/src/components/choose/addchoose.vue b/qqjf-Web/src/components/choose/addchoose.vue new file mode 100644 index 0000000..e088432 --- /dev/null +++ b/qqjf-Web/src/components/choose/addchoose.vue @@ -0,0 +1,183 @@ +<template> + <div class="addchoose height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="100px" + > + <el-form-item label="闆朵欢缂栧彿:" prop="itemName"> + <el-input v-model="registerForm.itemName" clearable></el-input> + </el-form-item> + <el-form-item label="闆朵欢鍚嶇О:" prop="enable"> + <el-input v-model="registerForm.itemDes" clearable></el-input> + </el-form-item> + <el-form-item label="閲�:" prop="creatorid"> + <el-input type="number" v-model="registerForm.weight" clearable></el-input> + </el-form-item> + <el-form-item label="绫诲瀷:" prop="creatorid"> + <el-input v-model="registerForm.palletType" clearable></el-input> + </el-form-item> + <el-form-item label="鍗曚釜鍏樊:" prop="creatorid"> + <el-input v-model="registerForm.weightDifference" clearable></el-input> + </el-form-item> + <el-form-item label="鍚敤:" prop="creatorid"> + <el-select v-model="registerForm.enable" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in enableList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鐢熶骇鐝嚎:" prop="creatorid"> + <!-- <el-input v-model="registerForm.createLine" clearable></el-input> --> + <el-select v-model="registerForm.createLine" clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in createLineList" + :key="'productionLineName' + index" + :label="item.productionLineName" + :value="item.productionLineName" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item label="瑁呯鏁伴噺:" prop="creatorid"> + <el-input v-model="registerForm.maxNum" type="number" clearable></el-input> + </el-form-item> + <el-form-item label="鍗曚环:" prop="creatorid"> + <el-input v-model="registerForm.price" clearable></el-input> + </el-form-item> + <el-form-item label="鍗曚綅:" prop="creatorid"> + <el-input v-model="registerForm.unit" clearable></el-input> + </el-form-item> + </el-form> + </div> + <div class="addchoose-button text-right margin-right15 margin-top2"> + <el-button type="primary" size="mini" class="form-buttom" @click="submitForm('registerForm')">鎻愪氦</el-button> + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { ItemAddOrUpdate } from '@/api/enterchoose'; +import { ProductionLineSearch } from '@/api/ProductionLine'; +export default { + data() { + return { + registerForm: {}, + containerTypeList: [ + { + label: 'P71-2222', + value: 'P71-2222' + }, + { + label: 'P71-3333', + value: 'P71-3333' + } + ], + statusList: [ + { + label: 0, + value: 0 + }, + { + label: 1, + value: 1 + } + ], + enableList: [ + { + label: '鍚敤', + value: 1 + }, + { + label: '绂佺敤', + value: 0 + } + ], + createLineList: [], + + rules: { + itemName: { required: true, message: '璇疯緭闆朵欢缂栧彿', trigger: 'change' } + } + }; + }, + props: { + // rowitem: { + // type: Object, + // default: {} + // } + }, + mounted() { + // if (JSON.stringify(this.rowitem) != '{}') { + // this.registerForm = this.rowitem; + // } + this.ProductionLineSearch(); + }, + methods: { + //鐝嚎 + ProductionLineSearch() { + ProductionLineSearch('1&onePageNum=999').then(res => { + if (res.code == 0) { + let data = res.data || []; + this.createLineList = data; + } + }); + }, + submitForm(registerForm) { + this.$refs[registerForm].validate(valid => { + if (valid) { + ItemAddOrUpdate(this.registerForm).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.$emit('addsubmit'); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触' + }); + } + }); + } else { + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.addchoose { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .addchoose-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/components/choose/choose.vue b/qqjf-Web/src/components/choose/choose.vue new file mode 100644 index 0000000..6b46f25 --- /dev/null +++ b/qqjf-Web/src/components/choose/choose.vue @@ -0,0 +1,211 @@ +<template> + <div class="choose height overflow"> + <div class="width overflow height92"> + <div class="chose-height"> + <div class="flex margintopbot justify-between"> + <div class="width50 flex align-center"> + <label class="width40 textalign">闆朵欢缂栧彿锛�</label> + <el-input size="mini" + clearable + v-model="iqnuer.itemName" + class="width60"> </el-input> + </div> + <div class="width50 flex align-center"> + <label class="width40 textalign">闆朵欢鍚嶇О锛�</label> + <el-input size="mini" + clearable + v-model="iqnuer.itemDes" + class="width60"> </el-input> + </div> + <el-button type="primary" + size="mini" + @click="itemSearch">鏌ヨ</el-button> + </div> + <div class="flex width justify-between"></div> + </div> + <div class="width chose-tebleheight margin-top2 overflow"> + <table-container height="91%" + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :operation="false" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :setshow="false" + :delShow="true" + :selectionShow="true" + @del="del" + @handleSelectionChange="handleSelectionChange" + @CurrentChange="CurrentChange" /> + </div> + </div> + <div class="choose-button text-right margin-right15 margin-top2"> + <el-button type="primary" + size="mini" + class="form-buttom" + @click="submitForm">纭閫夋嫨</el-button> + <el-button type="primary" + size="mini" + class="form-buttom" + @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import { itemSearch, ItemDelete } from '@/api/enterchoose'; +const { edterchoose } = require('@/components/tableContainer/tableHead'); +export default { + data () { + return { + iqnuer: {}, + inOrderCodelist: [ + { + label: '鏃�', + value: '' + } + ], + tableData: [], + handlelist: [], //鍕鹃�夋暟鎹� + totle: 0, + page: 1, + pageSize: 20 + }; + }, + props: { + wipelist: { + type: Array, + default: () => [] + }, + inOrderCodeShow: { + type: Boolean, + default: true + }, + choice: { + type: Boolean, + default: true + } + }, + components: { TableContainer }, + computed: { + tableHead () { + return edterchoose; + } + }, + mounted () { + this.itemSearch(); + }, + methods: { + //鏌ヨ + itemSearch () { + itemSearch(this.page + '&onePageNum=' + this.pageSize, this.iqnuer).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.image = process.env.IMAGE_URL + item.image; + }); + this.tableData = data; + this.totle = res.num; + } + }); + }, + CurrentChange (e) { + this.page = e; + this.itemSearch(); + }, + //鍕鹃�� + handleSelectionChange (e) { + console.log(e); + this.handlelist = e; + }, + submitForm () { + if (this.choice) { + if (this.handlelist.length == 1) { + this.$emit('chooseClick', this.handlelist, this.iqnuer.inOrderCode); + } else if (this.handlelist.length == 0) { + this.$message({ + type: 'warning', + message: '璇峰嬀閫変竴鏉℃暟鎹�' + }); + } else if (this.handlelist.length > 1) { + this.$message({ + type: 'warning', + message: '鍙兘鍕鹃�変竴鏉℃暟鎹�' + }); + } + } else { + this.$emit('chooseClick', this.handlelist, this.iqnuer.inOrderCode); + } + }, + //鍒犻櫎 + del (row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + const { itemName } = { ...row }; + ItemDelete({ itemName }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛' + }); + this.itemSearch(); + } else { + this.$message({ + type: 'warning', + message: '鍒犻櫎澶辫触' + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.choose { + width: 98%; + padding: 1%; + .chose-height { + height: 40px; + } + .chose-tebleheight { + height: calc(100% - 60px); + } + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .choose-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + // width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/components/chooseRelevanceFinishedPart/index.vue b/qqjf-Web/src/components/chooseRelevanceFinishedPart/index.vue new file mode 100644 index 0000000..9bf3866 --- /dev/null +++ b/qqjf-Web/src/components/chooseRelevanceFinishedPart/index.vue @@ -0,0 +1,358 @@ +<!-- 閫夋嫨鍏宠仈瀹屽伐鍏ュ簱闆朵欢浠诲姟 --> +<template> + <div class="chooseRelevanceFinishedPart height overflow"> + <div class="width overflow height92"> + <div class="chose-height"> + <div class="flex margintopbot justify-between"> + <div class="width50 flex align-center"> + <label class="width40 textalign">闆朵欢缂栧彿锛�</label> + <el-input size="mini" + disabled + clearable + v-model="iqnuer.itemName" + class="width60"> </el-input> + </div> + <div class="width50 flex align-center"> + <label class="width40 textalign">闆朵欢鍚嶇О锛�</label> + <el-input size="mini" + clearable + disabled + v-model="iqnuer.itemDes" + class="width60"> </el-input> + </div> + <el-button type="primary" + size="mini" + @click="itemSearch">鏌ヨ</el-button> + </div> + <div class="flex width justify-between"></div> + </div> + <div class="width chose-tebleheight margin-top2 overflow"> + <table-container height="91%" + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :operation="false" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :setshow="false" + :delShow="true" + :selectionShow="true" + @del="del" + @handleSelectionChange="handleSelectionChange" + @CurrentChange="CurrentChange" /> + </div> + </div> + <div class="chooseRelevanceFinishedPart-button text-right margin-right15 margin-top2"> + <el-button type="primary" + size="mini" + class="form-buttom" + @click="submitForm">纭閫夋嫨</el-button> + <el-button type="primary" + size="mini" + class="form-buttom" + @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import { ItemDelete } from '@/api/enterchoose'; +import { ContainerVsItemSearch } from '@/api/enter'; +//const { edterchoose } = require('@/components/tableContainer/tableHead'); +//鏄剧ず琛ㄥご +const chooseRelevanceFinishedPartHeader = [{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '闆朵欢鏁�', + columnName: 'itemNum', + sortable: true, + wipe: true, + width: 90 +}, +{ + columnDescription: '闆朵欢閲嶉噺', + columnName: 'itemWeight', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '闆朵欢绫诲瀷', + columnName: 'itemType', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '闆朵欢鍏樊', + columnName: 'itemWeightDifference', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍣ㄥ叿缂栧彿', + columnName: 'containerName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '鍣ㄥ叿绫诲瀷', + columnName: 'containerType', + sortable: true, + wipe: true, + width: 100 +}, +// { +// columnDescription: '鎵樼洏鐘舵��', +// columnName: 'containerStatus', +// sortable: true, +// wipe:true, +// }, +{ + columnDescription: '鍣ㄥ叿閲嶉噺', + columnName: 'containerWeight', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍣ㄥ叿鍏樊', + columnName: 'containerWeightDifference', + sortable: true, + wipe: true, + width: 100 +}, +// { +// columnDescription: '鍏ュ簱璁″垝', +// columnName: 'inOrderCode', +// sortable: true, +// wipe: true, +// width: 130 +// }, +{ + columnDescription: '鍑哄簱璁″垝', + columnName: 'outOrderCode', + sortable: true, + wipe: true, + width: 130 +}, +{ + columnDescription: '鏇存柊鏃堕棿', + columnName: 'updateTime', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '闇�杩斾慨', + columnName: 'isBad', + sortable: true, + wipe: true, + width: 90 +}, +{ + columnDescription: '杩斾慨杞﹂棿', + columnName: 'badByFactory', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鐢熶骇鐝嚎', + columnName: 'createLine', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍒涘缓浜�', + columnName: 'createUser', + sortable: true, + wipe: true +} + // { + // columnDescription: '鍚敤', + // columnName: 'enable', + // sortable: true, + // wipe:true, + // }, +]; +export default { + data () { + return { + iqnuer: { + isSearchNoRelevanceInOrder: true, //琛ㄧず鏄煡璇㈡湭鍏宠仈鍐插帇鐢熶骇璁″垝鐨勪换鍔� + itemName: this.pItemName, + itemDes: this.pItemDes + }, + inOrderCodelist: [ + { + label: '鏃�', + value: '' + } + ], + tableData: [], + handlelist: [], //鍕鹃�夋暟鎹� + totle: 0, + page: 1, + pageSize: 20 + }; + }, + props: { + wipelist: { + type: Array, + default: () => [] + }, + inOrderCodeShow: { + type: Boolean, + default: true + }, + choice: { + type: Boolean, + default: true + }, + pItemName: { + type: String + }, + pItemDes: { + type: String + } + }, + components: { TableContainer }, + computed: { + tableHead () { + return chooseRelevanceFinishedPartHeader; + } + }, + mounted () { + this.itemSearch(); + }, + methods: { + //鏌ヨ-宸茬粡瀹屽伐鍏ュ簱鐨勪换鍔� + itemSearch () { + ContainerVsItemSearch(this.page + '&onePageNum=' + this.pageSize, this.iqnuer).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.image = process.env.IMAGE_URL + item.image; + }); + this.tableData = data; + this.totle = res.num; + } + }); + }, + CurrentChange (e) { + this.page = e; + this.itemSearch(); + }, + //鍕鹃�� + handleSelectionChange (e) { + console.log(e); + this.handlelist = e; + }, + submitForm () { + if (this.choice) { + if (this.handlelist.length > 0) { + this.$emit('submitForm', this.handlelist, this.iqnuer.inOrderCode); + } else if (this.handlelist.length == 0) { + this.$message({ + type: 'warning', + message: '璇峰嬀閫夎嚦灏戜竴鏉℃暟鎹�' + }); + } + // else if (this.handlelist.length > 1) { + // this.$message({ + // type: 'warning', + // message: '鍙兘鍕鹃�変竴鏉℃暟鎹�' + // }); + // } + } else { + this.$emit('submitForm', this.handlelist, this.iqnuer.inOrderCode); + } + }, + //鍒犻櫎 + del (row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + const { itemName } = { ...row }; + ItemDelete({ itemName }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛' + }); + this.itemSearch(); + } else { + this.$message({ + type: 'warning', + message: '鍒犻櫎澶辫触' + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.chooseRelevanceFinishedPart { + width: 98%; + padding: 1%; + .chose-height { + height: 40px; + } + .chose-tebleheight { + height: calc(100% - 60px); + } + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .chooseRelevanceFinishedPart-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + // width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/components/chooseUser/index.vue b/qqjf-Web/src/components/chooseUser/index.vue new file mode 100644 index 0000000..142051c --- /dev/null +++ b/qqjf-Web/src/components/chooseUser/index.vue @@ -0,0 +1,212 @@ +<!--閫夋嫨鐢ㄦ埛--> +<template> + <div class="choose height overflow"> + <div class="width overflow height92"> + <div class="chose-height"> + <div class="flex margintopbot justify-between"> + <div class="width50 flex align-center"> + <label class="width40 textalign">鐧诲綍鍚嶏細</label> + <el-input size="mini" + clearable + v-model="iqnuer.itemName" + class="width60"> </el-input> + </div> + <div class="width50 flex align-center"> + <label class="width40 textalign">鐪熷疄濮撳悕锛�</label> + <el-input size="mini" + clearable + v-model="iqnuer.itemDes" + class="width60"> </el-input> + </div> + <el-button type="primary" + size="mini" + @click="itemSearch">鏌ヨ</el-button> + </div> + <div class="flex width justify-between"></div> + </div> + <div class="width chose-tebleheight margin-top2 overflow"> + <table-container height="91%" + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :operation="false" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :setshow="false" + :delShow="true" + :selectionShow="true" + @del="del" + @handleSelectionChange="handleSelectionChange" + @CurrentChange="CurrentChange" /> + </div> + </div> + <div class="choose-button text-right margin-right15 margin-top2"> + <el-button type="primary" + size="mini" + class="form-buttom" + @click="submitForm">纭閫夋嫨</el-button> + <el-button type="primary" + size="mini" + class="form-buttom" + @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import { itemSearch, ItemDelete } from '@/api/enterchoose'; +import { UserSearch, UserDelete } from '@/api/manage'; +const { manage } = require('@/components/tableContainer/tableHead'); +export default { + data () { + return { + iqnuer: { + IsWeldingAuditGroup: true + }, + inOrderCodelist: [ + { + label: '鏃�', + value: '' + } + ], + tableData: [], + handlelist: [], //鍕鹃�夋暟鎹� + totle: 0, + page: 1, + pageSize: 20 + }; + }, + props: { + wipelist: { + type: Array, + default: () => [] + }, + inOrderCodeShow: { + type: Boolean, + default: true + }, + choice: { + type: Boolean, + default: true + } + }, + components: { TableContainer }, + computed: { + tableHead () { + return manage; + } + }, + mounted () { + this.itemSearch(); + }, + methods: { + //鏌ヨ + itemSearch () { + UserSearch(this.page + '&onePageNum=' + this.pageSize, this.iqnuer).then(res => { + if (res.code == 0) { + let data = res.data; + this.tableData = data; + this.totle = res.num; + } + }); + }, + CurrentChange (e) { + this.page = e; + this.itemSearch(); + }, + //鍕鹃�� + handleSelectionChange (e) { + console.log(e); + this.handlelist = e; + }, + submitForm () { + if (this.choice) { + if (this.handlelist.length == 1) { + this.$emit('submitForm', this.handlelist, this.iqnuer.inOrderCode); + } else if (this.handlelist.length == 0) { + this.$message({ + type: 'warning', + message: '璇峰嬀閫変竴鏉℃暟鎹�' + }); + } else if (this.handlelist.length > 1) { + this.$message({ + type: 'warning', + message: '鍙兘鍕鹃�変竴鏉℃暟鎹�' + }); + } + } else { + this.$emit('submitForm', this.handlelist, this.iqnuer.inOrderCode); + } + }, + //鍒犻櫎 + del (row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + const { itemName } = { ...row }; + ItemDelete({ itemName }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛' + }); + this.itemSearch(); + } else { + this.$message({ + type: 'warning', + message: '鍒犻櫎澶辫触' + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.choose { + width: 98%; + padding: 1%; + .chose-height { + height: 40px; + } + .chose-tebleheight { + height: calc(100% - 60px); + } + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .choose-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + // width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/components/index.js b/qqjf-Web/src/components/index.js new file mode 100644 index 0000000..fe33c83 --- /dev/null +++ b/qqjf-Web/src/components/index.js @@ -0,0 +1,7 @@ +export { default as TableContainer } from './tableContainer/index.vue' +export { default as Modal } from './modal/index.vue' +export { default as Choose } from './choose/choose.vue' +export { default as AddChoose } from './choose/addchoose.vue' +export { default as chooseRelevanceFinishedPart } from './chooseRelevanceFinishedPart/index.vue' +export { default as chooseUser } from './chooseUser/index.vue' + diff --git a/qqjf-Web/src/components/modal/index.vue b/qqjf-Web/src/components/modal/index.vue new file mode 100644 index 0000000..16dcd30 --- /dev/null +++ b/qqjf-Web/src/components/modal/index.vue @@ -0,0 +1,115 @@ +<!-- :style="modabg ? 'background:unset; position: absolute;' : ''"--> +<template> + <div id="deta-modal"> + <!-- <draggable element="ul" v-model="list"> --> + <div class="box-modal borderR8" + :style="modalStyle"> + <div class="title-modal"> + <p class="p-title"> + <slot name="title"></slot> + </p> + <i class="el-icon-close pointer fontSize1_2" + @click="$emit('cancel')"></i> + </div> + <div class="centent-modal"> + <!-- <el-scrollbar wrap-class="scrollbar-wrapper" style="height:100%"> --> + <slot name="centent"></slot> + <!-- </el-scrollbar> --> + </div> + </div> + <!-- </draggable> --> + </div> +</template> + +<script> +import { number } from 'echarts'; +//杩欓噷鍙互瀵煎叆鍏朵粬鏂囦欢锛堟瘮濡傦細缁勪欢锛屽伐鍏穓s锛岀涓夋柟鎻掍欢js锛宩son鏂囦欢锛屽浘鐗囨枃浠剁瓑绛夛級 +//渚嬪锛歩mport 銆婄粍浠跺悕绉般�� from '銆婄粍浠惰矾寰勩��'; +import draggable from 'vuedraggable'; +export default { + data () { + //杩欓噷瀛樻斁鏁版嵁 + return { + ismodal: false, + list: [{ name: '1' }] + }; + }, + props: { + modabg: { + type: Boolean, + default: false + }, + modalStyle: { + type: Object, + default: { + width: '45%' //璁剧疆榛樿鐨勫搴�,鍘熷厛鏄� 40% 銆怑ditBy shaocx,2022-11-10銆� + } + } + }, + components: { draggable }, + //鏂规硶闆嗗悎 + methods: { + cancel () { + this.$emit('cancel'); + } + }, + //鐩戞帶data涓殑鏁版嵁鍙樺寲 + watch: {}, + //濡傛灉椤甸潰鏈塳eep-alive缂撳瓨鍔熻兘锛岃繖涓嚱鏁颁細瑙﹀彂 + activated () { } +}; +</script> +<style lang="scss" scoped> +#deta-modal { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.3); + // transition: all 0.3s; + z-index: 999; + .box-modal { + position: absolute; + top: 50%; + left: 50%; + width: 40%; + height: 85%; + border-radius: 6px; + transform: translate(-50%, -50%); + background: #fff; + box-shadow: 0 0 4px #345; + // transition: all 0.5s; + overflow: hidden; + .title-modal { + padding: 10px; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #e6eaf1; + background: #f5f7fa; + .p-title { + font-size: 20px; + padding-left: 5px; + } + .fontSize1_2 { + font-size: 20px; + margin-right: 15px; + &:hover { + transition: all 0.3s; + transform: rotate(360deg); + } + } + } + .centent-modal { + width: 98%; + height: calc(100% - 62px); + padding: 1%; + overflow: hidden; + } + } + // .el-scrollbar__view { + // height: 100%; + // } +} +</style> diff --git a/qqjf-Web/src/components/tableContainer/index.vue b/qqjf-Web/src/components/tableContainer/index.vue new file mode 100644 index 0000000..93b3a01 --- /dev/null +++ b/qqjf-Web/src/components/tableContainer/index.vue @@ -0,0 +1,654 @@ +<template> + <div id="tableContainer" + class="scrollCss" + :key="number"> + <!-- @row-click="handleRowClick" v-el-table-infinite-scroll="load" + :infinite-scroll-disabled="infintedisabled" :style="{ height: $slots.default ? '91%' : '95%' }" --> + <el-table class="borderR8" + :data="tablelist" + v-loading="loading" + element-loading-text="鎷煎懡鍔犺浇涓�" + element-loading-spinner="el-icon-loading" + highlight-current-row + :border="bordershow" + :show-summary="showSummary" + stripe + :cell-style="cellStyle" + height="100%" + style="height: calc(100% - 35px) !important" + :key="number" + @selection-change="handleSelectionChange" + @row-dblclick="rowdblclick" + @row-click="rowclick" + ref="tableCommon"> + <el-table-column v-if="selectionShow" + type="selection" + header-align="center" + align="center" + width="55"> + </el-table-column> + <el-table-column header-align="center" + type="index" + label="搴忓彿" + width="60" + v-if="containHead.length > 0"></el-table-column> + <template v-for="item in containHead"> + <el-table-column header-align="left" + align="left" + :label="item.columnDescription" + :prop="item.columnName" + :key="item.columnName" + :sortable="item.sortable" + v-if="item.wipe && wipelist.indexOf(item.columnName) == -1" + :min-width="fixWidth(item.columnDescription)" + :width="item.width ? item.width : ''"> + <template slot-scope="{ row }"> + <!-- v-if="item.columnName != 'maxNum' && item.coucolumnName != 'image'" --> + <p :style=" + item.columnName == 'stStatus' && row[item.columnName] == '棰勮' + ? 'color: #f8b360' + : item.columnName == 'stStatus' && row[item.columnName] == '瓒呮湡' + ? 'color:#E36168' + : '' + " + v-if="plist.indexOf(item.columnName) == -1"> + {{ row[item.columnName] }} + </p> + <el-image v-if="item.columnName == 'image'" + style="width: 35px; height: 35px" + :src="row[item.columnName]" + :preview-src-list="[row[item.columnName]]"> + </el-image> + + <p class="" + v-if="item.columnName == 'inOrderCode' && !row.edit"> + {{ row[item.columnName] }} + </p> + <p class="" + v-if="item.columnName == 'maxNum' && !row.edit"> + {{ row[item.columnName] }} + </p> + <p class="" + v-if="item.columnName == 'doTime' && !row.edit">{{ row[item.columnName] }}</p> + <el-input oninput="value=value.replace(/[^\d.]/g,'')" + size="mini" + v-if="row.edit && item.columnName == 'maxNum'" + v-model="row.maxNum"></el-input> + <el-select v-if="row.edit && item.columnName == 'inOrderCode'" + v-model="row.inOrderCode" + placeholder="璇烽�夋嫨" + size="mini"> + <el-option v-for="(item, index) in inOrderCodeList" + :key="index + 'inOrderCode'" + :label="item.inOrderCode" + :value="item.inOrderCode"> + <span style="float: left">{{ item.inOrderCode }}</span> + <span style="float: right; color: #ff0000;font-weight:bold; font-size: 17px">{{ item.totalNum }}</span> + </el-option> + </el-select> + <el-date-picker style="width: 100%" + v-if="row.edit && item.columnName == 'doTime'" + v-model="row.doTime" + size="mini" + value-format="yyyy-MM-dd HH:mm:ss" + type="datetime" + placeholder="閫夋嫨鏃ユ湡鏃堕棿"> + </el-date-picker> + </template> + </el-table-column> + </template> + + <el-table-column v-if="operation" + :width="operationwidth" + fixed="right" + align="center"> + <template slot="header" + slot-scope="scope"> + <span>鎿嶄綔</span> + <span v-if="setshow" + class="set" + @click="modalShow = true">璁剧疆</span> + </template> + <template v-if="buttonshow" + slot-scope="scope"> + <el-button class="elbuttonsize" + v-if="mustFirstShow" + :disabled="scope.row.taskStatus == '瀹屾垚' || scope.row.taskStatus == '寮傚父/鍙栨秷'" + :style=" + scope.row.taskStatus == '瀹屾垚' || scope.row.taskStatus == '寮傚父/鍙栨秷' + ? 'color: #909399' + : 'color: #f8b360' + " + @click.native.prevent="$emit('mustFirst', scope.row)" + type="text"> + 寮哄埗浼樺厛 + </el-button> + + <el-button class="elbuttonsize" + v-if="issuShow" + :disabled="scope.row.orderStatus != '鏈笅鍙�' && scope.row.orderStatus != '鏂板缓'" + :style=" + scope.row.orderStatus == '鏈笅鍙�' || scope.row.orderStatus == '鏂板缓' ? 'color: #f8b360' : 'color: #909399' + " + @click.native.prevent="$emit('issu', scope.row)" + type="text"> + 涓嬪彂 + </el-button> + <!-- 瀹屽伐鍝佽緭鍏ラ〉闈� --> + <el-button class="elbuttonsize" + v-if="relevanceShow" + :style=" + 'color: #426ab3' + " + @click.native.prevent="$emit('relevance', scope.row)" + type="text"> + 鍏宠仈 + </el-button> + <el-button class="elbuttonsize" + v-if="weldingAuditShow" + :style=" + 'color: #426ab3' + " + @click.native.prevent="$emit('weldingAudit', scope.row)" + type="text"> + 鎻愪氦瀹℃牳 + </el-button> + <el-button class="elbuttonsize" + v-if="unlineCommitShow" + :style=" + 'color: #426ab3' + " + @click.native.prevent="$emit('unlineCommit', scope.row)" + type="text"> + 绾夸笅浜や粯 + </el-button> + <el-button class="elbuttonsize" + v-if="editShow" + style="color: #f8b360" + @click.native.prevent="edit(scope.row)" + type="text"> + {{ scope.row.edit == true ? '淇濆瓨' : scope.row.edit == false ? '缂栬緫' : '缂栬緫' }} + </el-button> + + <el-button class="elbuttonsize" + v-if="maintask" + :disabled="scope.row.taskStatus == '瀹屾垚' || scope.row.taskStatus == '寮傚父/鍙栨秷'" + :style=" + scope.row.taskStatus == '瀹屾垚' || scope.row.taskStatus == '寮傚父/鍙栨秷' + ? 'color: #909399' + : 'color: #f8b360' + " + @click.native.prevent="$emit('abnormal', scope.row)" + type="text"> + 寮傚父澶勭悊 + </el-button> + <el-button class="elbuttonsize" + v-if="delShow" + style="color: #f8b360" + @click.native.prevent="del(scope.row)" + type="text"> + 鍒犻櫎 + </el-button> + <el-button class="elbuttonsize" + v-if="viewShow" + style="color: #7fb80e" + @click.native.prevent="view(scope.row)" + type="text"> + 鏌ョ湅 + </el-button> + <el-button v-if="passShow" + size="mini" + type="text" + :style=" + 'color:#1d953f' + " + @click.native.prevent="$emit('passCommit', scope.row)"> + 閫氳繃 + </el-button> + <el-button v-if="rejectShow" + type="text" + size="mini" + :style=" + 'color: #d71345' + " + @click.native.prevent="$emit('rejectCommit', scope.row)"> + 椹冲洖 + </el-button> + </template> + </el-table-column> + </el-table> + + <el-pagination v-if="paginationshow" + class="elpagin" + background + small + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="currentPage" + :page-sizes="[5, 15, , 20, , 50, 100, 200, 300, 400, 1000]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="totle"> + </el-pagination> + <transition name="modal"> + <modal v-if="modalShow" + :modabg="true" + @cancel="modalShow = false"> + <p slot="title">鍙傛暟璁剧疆</p> + <div class="height" + slot="centent"> + <div class="width height overflow"> + <p class="width modal-title">鐐瑰嚮鍙充晶寮�鍏冲彲浠ヨ缃瓧娈垫槸鍚︽樉绀�</p> + <div class="modal-item margintopbot flex align-center justify-between"> + <p>瀛楁鍚�</p> + <p> + <span>鏄剧ず鎺掑簭</span> + <span class="margin-left">瀛楁鏄剧ず</span> + </p> + </div> + <div class="applyheight overflowy-auto"> + <draggable v-model="containHead" + :move="fielSetMove" + class="draggable-main" + tag="ul" + ghost-class="ghost" + chosen-class="chosen" + filter=".forbid" + animation="300" + @start="startDrag" + @end="endDrag"> + <template v-for="item in containHead"> + <div :key="item.columnName" + class="modal-item margintopbot flex align-center justify-between"> + <p>{{ item.columnDescription }}</p> + <p> + <span> + <el-switch v-model="item.sortable" + :active-value="true" + :inactive-value="false"> </el-switch> + </span> + <span class="margin-left"> + <el-switch v-model="item.wipe" + :active-value="true" + :inactive-value="false"> </el-switch> + </span> + </p> + </div> + </template> + </draggable> + </div> + <div class="text-right margin-top2"> + <el-button type="primary" + size="mini">纭畾</el-button> + <el-button size="mini">鍙栨秷</el-button> + </div> + </div> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import elTableInfiniteScroll from 'el-table-infinite-scroll'; +import draggable from 'vuedraggable'; +import Modal from '../modal/index'; +import { getimestampDate } from '@/utils/date'; + +export default { + directives: { + 'el-table-infinite-scroll': elTableInfiniteScroll + }, + name: 'tableCommon', + props: { + //琛屾牱寮� + cellStyle: { + type: Function + }, + tableHead: Array, + height: String, + tableData: { + type: Array, + default: () => [] + }, + totle: { + type: [String, Number], + default: '0' + }, + loading: { + type: Boolean, + default: false + }, + paginationshow: { + type: Boolean, + default: true + }, + //鏌ョ湅 + viewShow: { + type: Boolean, + default: false + }, + bordershow: { + type: Boolean, + default: false + }, + passShow: { + type: Boolean, + default: false + }, + rejectShow: { + type: Boolean, + default: false + }, + showSummary: { + type: Boolean, + default: false + }, + selectionShow: { + type: Boolean, + default: false + }, + operation: { + type: Boolean, + default: true + }, + buttonshow: { + type: Boolean, + default: true + }, + weldingAuditShow: { + type: Boolean, + default: false + }, + unlineCommitShow: { + type: Boolean, + default: false + }, + mustFirstShow: { + type: Boolean, + default: false + }, + editShow: { + type: Boolean, + default: false + }, + delShow: { + type: Boolean, + default: false + }, + issuShow: { + type: Boolean, + default: false + }, + inputshow: { + type: Boolean, + default: false + }, + relevanceShow: { + type: Boolean, + default: false + }, + wipelist: { + type: Array, + default: () => [] + }, + maintask: { + type: Boolean, + default: false + }, + setshow: { + type: Boolean, + default: true + }, + operationwidth: { + type: [Number, String], + default: 120 + }, + currentPage: { + type: [Number, String], + defaults: 1 + }, + pageSize: { + type: [Number, String], + defaults: 20 + }, + naxnumShow: { + type: Boolean, + default: false + }, + inOrderCodeList: { + type: Array, + default: () => [] + } + }, + components: { Modal, draggable }, + data () { + const that = this; + return { + number: Math.random() * 100, + tablelist: [], + containHead: [], + // currentPage: 1, + modalShow: false, + plist: ['doTime', 'maxNum', 'image', 'inOrderCode'], + rowedit: false + }; + }, + mounted () { + this.containHead = this.tableHead; + this.conversion(JSON.stringify(this.tableData)); + }, + methods: { + //涓嬫媺鍔犺浇 + load () { }, + fixWidth (val) { + let length = 0; + if (val.indexOf('(') != -1) { + length = val.length * 16 + 10; + } else { + length = val.length * 25 + 10; + } + length = val == '鐢熶骇璁″垝鍗曞彿' || val == '鍑哄簱璁″垝鍗曞彿' ? 130 : length; + if (length < 100) { + length = 90; + } + return length; + }, + //鍒嗛〉 + handleCurrentChange (e) { + this.$emit('CurrentChange', e); + }, + handleSizeChange (e) { + this.$emit('SizeChange', e); + }, + //绛涢�� + conversion (nl) { + this.tablelist = JSON.parse(nl); + this.tablelist.filter(item => { + item.enable = item.enable == 1 ? '鏄�' : item.enable == 0 ? '鍚�' : item.enable; + item.isLock = item.isLock == 1 ? '鏄�' : item.isLock == 0 ? '鍚�' : item.isLock; + item.isBad = item.isBad == 1 ? '鏄�' : item.isBad == 0 ? '鍚�' : item.isBad; + item.isWork = item.isWork == 1 ? '鏄�' : item.isWork == 0 ? '鍚�' : item.isWork; + item.isErp = item.isErp == 1 ? '鏄�' : item.isErp == 0 ? '鍚�' : item.isErp; + + item.isFull = item.isFull == 1 ? '鏄�' : item.isFull == 0 ? '鍚�' : item.isFull; + item.isDestination = item.isDestination == 1 ? '鏄�' : item.isDestination == 0 ? '鍚�' : item.isDestination; + item.isError = item.isError == 1 ? '鏄�' : item.isError == 0 ? '鍚�' : item.isError; + item.isMainOut = item.isMainOut == 1 ? '鏄�' : item.isMainOut == 0 ? '鍚�' : item.isMainOut; + + item.taskType == 1 ? '鍏ュ簱' : item.taskType == 2 ? '鍑哄簱' : item.taskType == 3 ? '绉诲簱' : item.taskType; + item.doTime = item.doTime ? getimestampDate(item.doTime) : ''; + item.updateTime = item.updateTime ? getimestampDate(item.updateTime) : ''; + item.createTime = item.createTime ? getimestampDate(item.createTime) : ''; + item.taskCreateTime = item.taskCreateTime ? getimestampDate(item.taskCreateTime) : ''; + item.finishTime = item.finishTime ? getimestampDate(item.finishTime) : ''; + item.CheckTime = item.CheckTime ? getimestampDate(item.CheckTime) : '';//瀹℃牳鏃堕棿 + item.SendTime = item.SendTime ? getimestampDate(item.SendTime) : '';//鎻愪氦瀹℃牳鏃堕棿 + + if (item.IsWeldingAuditGroup != undefined) { + item.IsWeldingAuditGroupText = item.IsWeldingAuditGroup ? '鏄�' : item.IsWeldingAuditGroup == false ? '鍚�' : item.IsWeldingAuditGroup; + } + + // + }); + }, + //鎷栨嫿寮�濮� + startDrag (e) { }, + //鎷栨嫿缁撴潫 + endDrag (e) { + this.number = Math.random() * 100; + }, + //缂栬緫 + edit (row) { + let rowobj = { ...row }; + rowobj.enable = rowobj.enable == '鏄�' ? 1 : rowobj.enable == '鍚�' ? 0 : rowobj.enable; + rowobj.isLock = rowobj.isLock == '鏄�' ? 1 : rowobj.isLock == '鍚�' ? 0 : rowobj.isLock; + rowobj.isBad = rowobj.isBad == '鏄�' ? 1 : rowobj.isBad == '鍚�' ? 0 : rowobj.isBad; + rowobj.isWork = rowobj.isWork == 1 ? '鏄�' : rowobj.isWork == 0 ? '鍚�' : rowobj.isWork; + rowobj.isErp = rowobj.isErp == 1 ? '鏄�' : rowobj.isErp == 0 ? '鍚�' : rowobj.isErp; + rowobj.isFull = rowobj.isFull == '鏄�' ? 1 : rowobj.isFull == '鍚�' ? 0 : rowobj.isFull; + rowobj.isDestination = rowobj.isDestination == 1 ? '鏄�' : rowobj.isDestination == 0 ? '鍚�' : rowobj.isDestination; + rowobj.isError = rowobj.isError == '鏄�' ? 1 : rowobj.isError == '鍚�' ? 0 : rowobj.isError; + rowobj.taskType = + rowobj.taskType == '鍏ュ簱' ? 1 : rowobj.taskType == '鍑哄簱' ? 2 : rowobj.taskType == '绉诲簱' ? 3 : rowobj.taskType; + rowobj.isMainOut = rowobj.isMainOut == 1 ? '鏄�' : rowobj.isMainOut == 0 ? '鍚�' : rowobj.isMainOut; + console.log(this.inputshow); + if (this.inputshow) { + this.rowdblclick(row); + } else { + this.$emit('edit', rowobj); + } + }, + //鏌ョ湅 + view (row) { + let rowobj = { ...row }; + rowobj.enable = rowobj.enable == '鏄�' ? 1 : rowobj.enable == '鍚�' ? 0 : rowobj.enable; + rowobj.isLock = rowobj.isLock == '鏄�' ? 1 : rowobj.isLock == '鍚�' ? 0 : rowobj.isLock; + rowobj.isBad = rowobj.isBad == '鏄�' ? 1 : rowobj.isBad == '鍚�' ? 0 : rowobj.isBad; + rowobj.isWork = rowobj.isWork == 1 ? '鏄�' : rowobj.isWork == 0 ? '鍚�' : rowobj.isWork; + rowobj.isErp = rowobj.isErp == 1 ? '鏄�' : rowobj.isErp == 0 ? '鍚�' : rowobj.isErp; + rowobj.isFull = rowobj.isFull == '鏄�' ? 1 : rowobj.isFull == '鍚�' ? 0 : rowobj.isFull; + rowobj.isDestination = rowobj.isDestination == 1 ? '鏄�' : rowobj.isDestination == 0 ? '鍚�' : rowobj.isDestination; + rowobj.isError = rowobj.isError == '鏄�' ? 1 : rowobj.isError == '鍚�' ? 0 : rowobj.isError; + rowobj.taskType = + rowobj.taskType == '鍏ュ簱' ? 1 : rowobj.taskType == '鍑哄簱' ? 2 : rowobj.taskType == '绉诲簱' ? 3 : rowobj.taskType; + rowobj.isMainOut = rowobj.isMainOut == 1 ? '鏄�' : rowobj.isMainOut == 0 ? '鍚�' : rowobj.isMainOut; + console.log(this.inputshow); + if (this.inputshow) { + this.rowdblclick(row); + } else { + this.$emit('view', rowobj); + } + }, + //鍒犻櫎 + del (row) { + let rowobj = { ...row }; + rowobj.enable = rowobj.enable == '鏄�' ? 1 : rowobj.enable == '鍚�' ? 0 : rowobj.enable; + rowobj.isLock = rowobj.isLock == '鏄�' ? 1 : rowobj.isLock == '鍚�' ? 0 : rowobj.isLock; + rowobj.isBad = rowobj.isBad == '鏄�' ? 1 : rowobj.isBad == '鍚�' ? 0 : rowobj.isBad; + this.$emit('del', rowobj); + }, + //鍕鹃�� + handleSelectionChange (e) { + this.$emit('handleSelectionChange', e); + }, + //鍙屽嚮琛� + rowdblclick (item) { + item.edit = !item.edit; + this.$emit('itemchange', this.tablelist, item); + }, + //鍗曟満琛� + rowclick (row) { + this.$emit('rowchange', row); + }, + tableRowClassName ({ row, rowIndex }) { + this.$emit('tableRowClassName', row, rowIndex); + }, + fielSetMove () { } + }, + watch: { + tableData: { + handler (nl, ol) { + this.number = Math.random() * 1000; + this.conversion(JSON.stringify(nl)); + }, + deep: true + } + } +}; +</script> +<style lang="scss" scoped> +#tableContainer { + position: relative; + z-index: 6; + height: 100%; + .widthscope { + width: 200px; + } + .elbuttonsize { + font-size: 0.8rem; + } + .set { + color: #0465a8; + cursor: pointer; + display: inline-block; + margin-left: 20px; + } + .modal-title { + background-color: #f0f9eb; + color: #67c23a; + font-size: 14px; + padding: 4px 10px; + border-radius: 4px; + } + .modal-item { + border: 1px solid #f8f8f8; + padding: 4px 10px; + background-color: #f3f3f3; + font-size: 14px; + } + .draggable-main { + margin: 0; + padding: 0; + cursor: pointer; + .drag { + border: 1px dotted rgb(44, 104, 163); + background-color: #409eff; + } + + .chosen { + background-color: #409eff; + color: #fff; + } + + .ghost { + background-color: #409eff; + } + } + ::v-deep { + .el-table__fixed-right { + right: 1px !important; + } + .el-table--border td { + // border-right: none !important; + } + } + ::v-deep .el-table { + height: calc(100% - 35px) !important; + } + + ::v-deep .el-button + .el-button { + margin-left: 5px; + } + ::v-deep .el-table__empty-text { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + ::v-deep .el-table td, + .el-table th { + padding: 4px 0; + } +} +</style> diff --git a/qqjf-Web/src/components/tableContainer/tableHead.js b/qqjf-Web/src/components/tableContainer/tableHead.js new file mode 100644 index 0000000..a10c18e --- /dev/null +++ b/qqjf-Web/src/components/tableContainer/tableHead.js @@ -0,0 +1,2084 @@ +const manage = [{ + columnDescription: '鐧诲綍鍚�', + columnName: 'userName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鐪熷疄濮撳悕', + columnName: 'userTrueName', + sortable: true, + wipe: true +}, +{ + columnDescription: '閮ㄩ棬', + columnName: 'deptName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鎵�灞炶鑹�', + columnName: 'roleName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍚敤鐘舵��', + columnName: 'enable', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏄惁鐒婅瀹℃牳缁�', + columnName: 'IsWeldingAuditGroupText', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍒涘缓浜�', + columnName: 'creatorId', + sortable: true, + wipe: true +}, +{ + columnDescription: '淇敼鏃堕棿', + columnName: 'updateTime', + sortable: true, + wipe: true +} +]; +const dept = [{ + columnDescription: '閮ㄩ棬鍚嶇О', + columnName: 'deptName', + sortable: true, + wipe: true +}, + +{ + columnDescription: '閮ㄩ棬鎻忚堪', + columnName: 'deptDes', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏄惁鍚敤', + columnName: 'enable', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏇存柊鏃堕棿', + columnName: 'updateTime', + sortable: true, + wipe: true +} +]; +const role = [{ + columnDescription: '瑙掕壊鍚嶇О', + columnName: 'roleName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏄惁鍚敤', + columnName: 'enable', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍒涘缓浜�', + columnName: 'userName', + sortable: true, + wipe: true +}, +{ + columnDescription: '淇敼鏃堕棿', + columnName: 'updateTime', + sortable: true, + wipe: true +} +]; +const storage = [{ + columnDescription: '浠撳簱缂栫爜', + columnName: 'storageCode', + sortable: true, + wipe: true +}, +{ + columnDescription: '浠撳簱鍚嶇О', + columnName: 'storageName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏄惁鍙敤', + columnName: 'enable', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍏徃鍚嶇О', + columnName: 'shipperCompanyName', + sortable: true, + wipe: true +}, +{ + columnDescription: '浠撳簱鍦板潃', + columnName: 'shipperAddress', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍒涘缓鏃堕棿', + columnName: 'createDate', + sortable: true, + wipe: true +} +]; +const position = [{ + columnDescription: '搴撲綅鍚嶇О', + columnName: 'place', + sortable: true, + wipe: true +}, +{ + columnDescription: '搴撲綅绫诲瀷', + columnName: 'placeType', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '搴撲綅瑙勬牸', + columnName: 'specification', + sortable: true, + wipe: true, + width: 200 +}, +// { +// columnDescription: '鏈夎揣', +// columnName: 'isFull', +// sortable: true, +// wipe:true, +// }, +{ + columnDescription: '閿佸畾', + columnName: 'isLock', + sortable: true, + wipe: true +}, +{ + columnDescription: '鎺掓暟', + columnName: 'row', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍒楁暟', + columnName: 'col', + sortable: true, + wipe: true +}, +{ + columnDescription: '灞傛暟', + columnName: 'layer', + sortable: true, + wipe: true +}, +{ + columnDescription: '宸烽亾(鍫嗗灈鏈�)鍙�', + columnName: 'srmId', + sortable: true, + wipe: true +}, +{ + columnDescription: '闀�', + columnName: 'length', + sortable: true, + wipe: true +}, +{ + columnDescription: '瀹�', + columnName: 'width', + sortable: true, + wipe: true +}, +{ + columnDescription: '楂�', + columnName: 'height', + sortable: true, + wipe: true +} +]; +const palte = [{ + columnDescription: '鍣ㄥ叿缂栧彿', + columnName: 'containerName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍣ㄥ叿瑙勬牸', + columnName: 'containerType', + sortable: true, + wipe: true +}, +// { +// columnDescription: '鐘舵��', +// columnName: 'status', +// sortable: true, +// wipe:true, +// }, +{ + columnDescription: '閲�', + columnName: 'weight', + sortable: true, + wipe: true +}, +{ + columnDescription: '闀�', + columnName: 'length', + sortable: true, + wipe: true +}, +{ + columnDescription: '瀹�', + columnName: 'width', + sortable: true, + wipe: true +}, +{ + columnDescription: '楂�', + columnName: 'height', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍏樊', + columnName: 'weightDifference', + sortable: true, + wipe: true +}, +{ + columnDescription: '瑙勬牸缂栧彿', + columnName: 'palletCode', + sortable: true, + wipe: true +}, +{ + columnDescription: '瑙勬牸鎻忚堪', + columnName: 'palletType', + sortable: true, + wipe: true, + width: 180 +}, +{ + columnDescription: '鏄惁閿佸畾', + columnName: 'isLock', + sortable: true, + wipe: true +} + // { + // columnDescription: '鏄惁鍚敤', + // columnName: 'enable', + // sortable: true, + // wipe: true + // } +]; +const stacker = [{ + columnDescription: '璁惧鍚�', + columnName: 'deviceName', + sortable: true, + wipe: true +}, +{ + columnDescription: '璁惧绫诲瀷', + columnName: 'deviceType', + sortable: true, + wipe: true +}, +{ + columnDescription: '璁惧缂栧彿', + columnName: 'deviceId', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏄惁閿佸畾', + columnName: 'isLock', + sortable: true, + wipe: true +} +]; +//鍐插帇鐢熶骇璁″垝琛ㄥご +const quotation = [{ + columnDescription: '鐢熶骇璁″垝鍗曞彿', + columnName: 'inOrderCode', + sortable: true, + wipe: true, + width: 200 +}, +{ + columnDescription: '鐢熶骇绫诲瀷', + columnName: 'orderType', + sortable: true, + wipe: true, + width: 150 +}, + +{ + columnDescription: '璁㈠崟鐘舵��', + columnName: 'orderStatus', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 200 +}, +{ + columnDescription: '璁″垝鏁伴噺', + columnName: 'totalNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '宸插畬鎴愭暟閲�', + columnName: 'doneNum', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '鎻愪氦浜�', + columnName: 'senderName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鎻愪氦鏃堕棿', + columnName: 'SendTime', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '瀹℃牳浜�', + columnName: 'checkerName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '瀹℃牳缁撴灉', + columnName: 'CheckResult', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '瀹℃牳鏃堕棿', + columnName: 'CheckTime', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '瀹℃牳璇存槑', + columnName: 'CheckRemark', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '澶囨敞', + columnName: 'deviceName5', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍒涘缓浜�', + columnName: 'createName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍒涘缓鏃堕棿', + columnName: 'createTime', + sortable: true, + wipe: true, + width: 150 +}, { + columnDescription: '淇敼浜�', + columnName: 'updateName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '淇敼鏃堕棿', + columnName: 'updateTime', + sortable: true, + wipe: true, + width: 150 +} +]; +const quotationedit = [{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '璁″垝鏁伴噺', + columnName: 'maxNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鐢熶骇鐝嚎', + columnName: 'createLine', + sortable: true, + wipe: true +}, +{ + columnDescription: '璁″垝鏃ユ湡', + columnName: 'doTime', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍥剧墖', + columnName: 'image', + sortable: true, + wipe: true +} +]; +//閫佺鍗曞叧鑱斿畬宸ユ暟琛ㄥ崟 +const quotaion_relevanceEdit = [{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '鍏ュ簱鏁伴噺', + columnName: 'itemNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鐢熶骇鐝嚎', + columnName: 'createLine', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍏ュ簱鏃ユ湡', + columnName: 'updateTime', + sortable: true, + wipe: true +} +]; +const enter = [{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '闆朵欢閲嶉噺', + columnName: 'itemWeight', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '闆朵欢绫诲瀷', + columnName: 'itemType', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '闆朵欢鍏樊', + columnName: 'itemWeightDifference', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍣ㄥ叿缂栧彿', + columnName: 'containerName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '鍣ㄥ叿绫诲瀷', + columnName: 'containerType', + sortable: true, + wipe: true, + width: 100 +}, +// { +// columnDescription: '鎵樼洏鐘舵��', +// columnName: 'containerStatus', +// sortable: true, +// wipe:true, +// }, +{ + columnDescription: '鍣ㄥ叿閲嶉噺', + columnName: 'containerWeight', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍣ㄥ叿鍏樊', + columnName: 'containerWeightDifference', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍏ュ簱璁″垝', + columnName: 'inOrderCode', + sortable: true, + wipe: true, + width: 130 +}, +{ + columnDescription: '鍑哄簱璁″垝', + columnName: 'outOrderCode', + sortable: true, + wipe: true, + width: 130 +}, +{ + columnDescription: '鏇存柊鏃堕棿', + columnName: 'updateTime', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '闆朵欢鏁�', + columnName: 'itemNum', + sortable: true, + wipe: true, + width: 90 +}, +{ + columnDescription: '闇�杩斾慨', + columnName: 'isBad', + sortable: true, + wipe: true, + width: 90 +}, +{ + columnDescription: '杩斾慨杞﹂棿', + columnName: 'badByFactory', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鐢熶骇鐝嚎', + columnName: 'createLine', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍒涘缓浜�', + columnName: 'createUser', + sortable: true, + wipe: true +} + // { + // columnDescription: '鍚敤', + // columnName: 'enable', + // sortable: true, + // wipe:true, + // }, +]; +const enterEdit = [{ + columnDescription: '鐢熶骇璁″垝鍗曞彿', + columnName: 'inOrderCode', + width: 180, + sortable: true, + wipe: true +}, +{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true +}, +{ + columnDescription: '涓嬬嚎鏁伴噺', + columnName: 'maxNum', + sortable: true, + wipe: true, + edit: false +}, +{ + columnDescription: '鍗曚綅閲嶉噺', + columnName: 'weight', + sortable: true, + wipe: true +} + // { + // columnDescription: '鍥剧墖', + // columnName: 'image', + // sortable: true, + // wipe:true, + // }, + // { + // columnDescription: '鐢熶骇鏃ユ湡', + // columnName: 'deviceName6', + // sortable: true, + // wipe:true, + // }, +]; +const edterchoose = [ + // { + // columnDescription: '鐢熶骇璁″垝鍗曞彿', + // columnName: 'inOrderCode', + // sortable: true, + // wipe:true, + // }, + { + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 120 + }, + { + columnDescription: '闆朵欢鎻忚堪', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 180 + }, + { + columnDescription: '鍗曚綅', + columnName: 'unit', + sortable: true, + wipe: true, + width: 80 + }, + { + columnDescription: '鍗曚环', + columnName: 'price', + sortable: true, + wipe: true, + width: 80 + }, + { + columnDescription: '閲嶉噺', + columnName: 'weight', + sortable: true, + wipe: true, + width: 80 + }, + { + columnDescription: '鍗曚釜鍏樊', + columnName: 'weightDifference', + sortable: true, + wipe: true, + width: 100 + }, + { + columnDescription: '鐓х墖', + columnName: 'image', + sortable: true, + wipe: true + }, + { + columnDescription: '鐢熶骇鐝嚎', + columnName: 'createLine', + sortable: true, + wipe: true + }, + { + columnDescription: '瑁呯鏁伴噺', + columnName: 'maxNum', + sortable: true, + wipe: true + }, + { + columnDescription: '搴撳鏈�澶ч噺', + columnName: 'maxStorage', + sortable: true, + wipe: true, + width: 120 + }, + { + columnDescription: '搴撳鏈�灏忛噺', + columnName: 'minStorage', + sortable: true, + wipe: true, + width: 120 + }, + { + columnDescription: '瓒呮湡鏃堕棿', + columnName: 'overDueTime', + sortable: true, + wipe: true, + width: 100 + }, + { + columnDescription: '鏄惁閿佸畾', + columnName: 'isLock', + sortable: true, + wipe: true, + width: 100 + }, + { + columnDescription: '鎵�闇�鍣ㄥ叿瑙勬牸', + columnName: 'useContainerType', + sortable: true, + wipe: true, + width: 130 + } +]; +const plant = [{ + columnDescription: '鍑哄簱璁″垝鍗曞彿', + columnName: 'outOrderCode', + sortable: true, + wipe: true, + width: 200 +}, +{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 200 +}, +{ + columnDescription: '鍑哄簱绫诲瀷', + columnName: 'orderType', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '璁㈠崟鐘舵��', + columnName: 'orderStatus', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍚堣鏁伴噺', + columnName: 'totalOutNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍑哄簱鍙�', + columnName: 'tranLine', + sortable: true, + wipe: true, + width: 90 +}, +{ + columnDescription: '鐩爣鐝嚎', + columnName: 'productionLineName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '宸插嚭搴撴暟閲�', + columnName: 'checkOutNum', + sortable: true, + wipe: true, + width: 115 +}, +{ + columnDescription: '鏄惁鏉ヨ嚜ERP', + columnName: 'isErp', + sortable: true, + wipe: true, + width: 130 +}, +{ + columnDescription: '鍒涘缓鏃堕棿', + columnName: 'doTime', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '鍒涘缓浜�', + columnName: 'userName', + sortable: true, + wipe: true +} +]; +const plantEdit = [ + // { + // columnDescription: '鍑哄簱璁″垝鍗曞彿', + // columnName: 'outOrderCode', + // sortable: true, + // wipe:true, + // }, + { + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true + }, + { + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true + }, + { + columnDescription: '璁″垝鏁伴噺', + columnName: 'maxNum', + sortable: true, + wipe: true + }, + { + columnDescription: '璁″垝鏃ユ湡', + columnName: 'doTime', + sortable: true, + wipe: true + } +]; +const cassline = [{ + columnDescription: '鐝嚎缂栧彿', + columnName: 'productionCode', + sortable: true, + wipe: true +}, +{ + columnDescription: '鐝嚎鍚嶇О', + columnName: 'productionName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鑳藉惁浣滀负鐩殑鍦� ', + columnName: 'isDestination', + sortable: true, + wipe: true +} +]; +const inventory = [{ + columnDescription: '搴撲綅鍙�', + columnName: 'place', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍣ㄥ叿缂栧彿', + columnName: 'containerName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '鍣ㄥ叿瑙勬牸', + columnName: 'palletType', + sortable: true, + wipe: true, + width: 220 +}, +{ + columnDescription: '闆朵欢鍙�', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '闆朵欢鏁�', + columnName: 'itemNum', + sortable: true, + wipe: true, + width: 90 +}, +{ + columnDescription: '鍏ュ簱绫诲瀷', + columnName: 'taskType', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '浠锋牸', + columnName: 'price', + sortable: true, + wipe: true, + width: 80 +}, +{ + columnDescription: '鍗曚綅', + columnName: 'unit', + sortable: true, + wipe: true, + width: 80 +}, +{ + columnDescription: '鏇存柊鏃堕棿', + columnName: 'updateTime', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '鐘舵��', + columnName: 'status', + sortable: true, + wipe: true, + width: 80 +}, +{ + columnDescription: '瓒呮湡鏃ユ湡', + columnName: 'dueTime', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '鏄惁杩斾慨', + columnName: 'isBad', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '杩斾慨绫诲瀷', + columnName: 'badByFactory', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鏄惁绌虹洏', + columnName: 'isEmptyContainer', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '搴撻緞', + columnName: 'stAge', + sortable: true, + wipe: true, + width: 80 +}, +{ + columnDescription: '搴撻緞鐘舵��', + columnName: 'stStatus', + sortable: true, + wipe: true, + width: 100 +} + // { + // columnDescription: '鍚敤', + // columnName: 'enable', + // sortable: true, + // wipe:true, + // }, +]; +const intype = [{ + columnDescription: '鍏ュ簱绫诲瀷鍚�', + columnName: 'inType', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍏ュ簱鐩爣浠撳簱', + columnName: 'storeName', + sortable: true, + wipe: true +} +]; +const forklift = [{ + columnDescription: '鍙夎溅鍚�', + columnName: 'carName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍙夎溅鍙�', + columnName: 'carCode', + sortable: true, + wipe: true +}, +{ + columnDescription: '椹鹃┒鍛�/缁存姢鍛�', + columnName: 'userName', + sortable: true, + wipe: true +}, +// { +// columnDescription: '鎵ц浠诲姟鍚�', +// columnName: 'carTaskName', +// sortable: true, +// wipe:true, +// }, +// { +// columnDescription: '鐘舵��', +// columnName: 'status', +// sortable: true, +// wipe:true, +// }, +{ + columnDescription: '鏄惁宸ヤ綔', + columnName: 'isWork', + sortable: true, + wipe: true +} +]; +const forklifttasks = [{ + columnDescription: '浠诲姟缂栧彿', + columnName: 'carTaskName', + sortable: true, + wipe: true, + width: 180 +}, +{ + columnDescription: '鐩殑鍦�', + columnName: 'toDestination', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍙栬揣鍦�', + columnName: 'fromDestination', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍣ㄥ叿缂栧彿', + columnName: 'containerName', + sortable: true, + wipe: true +}, +{ + columnDescription: '璁㈠崟鐘舵��', + columnName: 'taskStatus', + sortable: true, + wipe: true +}, +{ + columnDescription: '棰嗙敤浜�', + columnName: 'userName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍒涘缓鏃堕棿', + columnName: 'createTime', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏇存柊鏃堕棿', + columnName: 'updateTime', + sortable: true, + wipe: true +} +]; +const taskrecord = [{ + columnDescription: '浠诲姟ID', + columnName: 'taskId', + sortable: true, + wipe: true, + width: 90 +}, +{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 115 +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 135 +}, +{ + columnDescription: '璧峰浣�', + columnName: 'sourcePlace', + sortable: true, + wipe: true, + width: 90 +}, +{ + columnDescription: '鐩爣浣�', + columnName: 'toPlace', + sortable: true, + wipe: true, + width: 90 +}, +{ + columnDescription: '浠诲姟绫诲瀷', + columnName: 'taskType', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '浠诲姟鐘舵��', + columnName: 'taskStatus', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '浠诲姟鍒涘缓鏃堕棿', + columnName: 'taskCreateTime', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '鍣ㄥ叿缂栧彿', + columnName: 'containerName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '鏄惁涓昏闆朵欢', + columnName: 'isMainOut', + sortable: true, + wipe: true, + width: 130 +}, +{ + columnDescription: '闆朵欢鏁伴噺', + columnName: 'itemCount', + sortable: true, + wipe: true, + width: 100 +}, +// { +// columnDescription: '鍚敤', +// columnName: 'enable', +// sortable: true, +// wipe:true, +// }, +{ + columnDescription: '璁″垝鍗曞彿', + columnName: 'outOrderCode', + sortable: true, + wipe: true, + width: 140 +}, +{ + columnDescription: '鍒涘缓浜�', + columnName: 'createUser', + sortable: true, + wipe: true, + width: 90 +}, +{ + columnDescription: '寮�濮嬫椂闂�', + columnName: 'doTime', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '缁撴潫鏃堕棿', + columnName: 'finishTime', + sortable: true, + wipe: true, + width: 150 +} +]; +const warning = [{ + columnDescription: '鏁呴殰鍚嶇О', + columnName: 'alertName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏁呴殰鎻忚堪', + columnName: 'alertDes', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏁呴殰璁惧', + columnName: 'deviceName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏁呴殰缂栧彿', + columnName: 'alertCode', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍒涘缓鏃堕棿', + columnName: 'createTime', + sortable: true, + wipe: true +}, +{ + columnDescription: '缁撴潫鏃堕棿', + columnName: 'finishTime', + sortable: true, + wipe: true +} +]; +const maintask = [{ + columnDescription: '浠诲姟鍙�', + columnName: 'id', + sortable: true, + wipe: true, + width: 90 +}, +{ + columnDescription: '鍣ㄥ叿缂栧彿', + columnName: 'containerName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '鍣ㄥ叿瑙勬牸', + columnName: 'palletType', + sortable: true, + wipe: true, + width: 180 +}, + +{ + columnDescription: '璧峰浣�', + columnName: 'sourcePlace', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鐩爣浣�', + columnName: 'toPlace', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '浠诲姟绫诲瀷', + columnName: 'taskType', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '浠诲姟鐘舵��', + columnName: 'taskStatus', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍑哄簱鍗曞彿', + columnName: 'outOrderCode', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '鍒涘缓浜哄悕绉�', + columnName: 'userName', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '浠诲姟浼樺厛绾�', + columnName: 'taskLevel', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '鏄惁鏁呴殰', + columnName: 'isError', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鏄惁涓浆', + columnName: 'isExchange', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鎵�鍦ㄤ綅缃�', + columnName: 'localDevice', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '绉伴噸鏁版嵁', + columnName: 'lastWeight', + sortable: true, + wipe: true, + width: 100 +}, +{ + // columnDescription: '鏁呴殰璁惧id', + // columnName: 'errorDeviceId', + // sortable: true, + // wipe:true, +}, + +{ + columnDescription: '鏃犳硶涓嬪彂鍘熷洜', + columnName: 'canNotDo', + sortable: true, + wipe: true, + width: 200 +}, + +{ + columnDescription: '鍒涘缓鏃堕棿', + columnName: 'createTime', + sortable: true, + wipe: true, + width: 160 +}, +{ + columnDescription: '寮�濮嬫椂闂�', + columnName: 'doTime', + sortable: true, + wipe: true, + width: 160 +}, +{ + columnDescription: '缁撴潫鏃堕棿', + columnName: 'finishTime', + sortable: true, + wipe: true, + width: 160 +}, +{ + columnDescription: '鍓╀綑鏃堕棿', + columnName: 'needTime', + sortable: true, + wipe: true, + width: 100 +} +]; +const viewdata = [{ + columnDescription: '搴撲綅鍙�', + columnName: 'place', + sortable: true, + wipe: true +}, +{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍣ㄥ叿缂栧彿', + columnName: 'containerName', + sortable: true, + wipe: true +}, +{ + columnDescription: '闆朵欢鏁�', + columnName: 'itemNum', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏄惁杩斾慨', + columnName: 'isBad', + sortable: true, + wipe: true +}, +{ + columnDescription: '杩斾慨绫诲瀷', + columnName: 'badByFactory', + sortable: true, + wipe: true +}, +{ + columnDescription: '浠锋牸', + columnName: 'price', + sortable: true, + wipe: true +}, + +{ + columnDescription: '鍗曚綅', + columnName: 'unit', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏇存柊鏃堕棿', + columnName: 'updateTime', + sortable: true, + wipe: true +}, +{ + columnDescription: '鐘舵��', + columnName: 'status', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏄惁鏈夊櫒鍏�', + columnName: 'isFull', + sortable: true, + wipe: true +}, +{ + columnDescription: '缂栧彿', + columnName: 'pvcCode', + sortable: true, + wipe: true +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true +}, +{ + columnDescription: '浜х嚎', + columnName: 'createLine', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍏ュ簱绫诲瀷', + columnName: 'inType', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍣ㄥ叿瑙勬牸', + columnName: 'palletType', + sortable: true, + wipe: true +} +]; +const materials = [{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 140 +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '搴撳瓨鏁伴噺', + columnName: 'itemNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鏈�灏忓簱瀹�', + columnName: 'minStorage', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鏈�澶у簱瀹�', + columnName: 'maxStorage', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍗犵敤搴撲綅鏁�', + columnName: 'placeCount', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '浜х嚎', + columnName: 'createLine', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍗曚环', + columnName: 'price', + sortable: true, + wipe: true, + width: 80 +}, +{ + columnDescription: '鍗曚綅', + columnName: 'unit', + sortable: true, + wipe: true, + width: 80 +}, +{ + columnDescription: '閲嶉噺', + columnName: 'weight', + sortable: true, + wipe: true, + width: 80 +}, +{ + columnDescription: '瑁呯鏁伴噺', + columnName: 'maxNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鎵�鐢ㄥ櫒鍏疯鏍�', + columnName: 'useContainerType', + sortable: true, + wipe: true, + width: 130 +}, +{ + columnDescription: '鍏樊', + columnName: 'weightDifference', + sortable: true, + wipe: true, + width: 80 +}, +{ + columnDescription: '搴撳悕', + columnName: 'storageName', + sortable: true, + wipe: true, + width: 80 +}, +{ + columnDescription: '鎬讳环', + columnName: 'totalCost', + sortable: true, + wipe: true, + width: 80 +}, +{ + columnDescription: '鏄惁瓒呭簱瀛�', + columnName: 'isOverDay', + sortable: true, + wipe: true, + width: 120 +} +]; +const rgvtask = [{ + columnDescription: '涓讳换鍔�', + columnName: 'mainTask', + sortable: true, + wipe: true +}, +{ + columnDescription: '鐩爣浣嶇疆', + columnName: 'toPlace', + sortable: true, + wipe: true +}, +{ + columnDescription: '璧峰浣嶇疆', + columnName: 'sourcePlace', + sortable: true, + wipe: true +}, +{ + columnDescription: '浠诲姟绫诲瀷', + columnName: 'taskType', + sortable: true, + wipe: true +}, +{ + columnDescription: 'RGV缂栧彿', + columnName: 'useRgvId', + sortable: true, + wipe: true +}, + +{ + columnDescription: '鏄惁瀹屾垚', + columnName: 'hasFinished', + sortable: true, + wipe: true +}, +{ + columnDescription: '璁惧鍚嶇О', + columnName: 'devName', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍒嗕换鍔″彿', + columnName: 'preTask', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏄惁宸插紑濮嬫墽琛�', + columnName: 'isReleased', + sortable: true, + wipe: true +}, +{ + columnDescription: '璧峰鏃堕棿', + columnName: 'doTime', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '瀹屾垚鏃堕棿', + columnName: 'finishTime', + sortable: true, + wipe: true, + width: 150 +} +]; +const piler = [{ + columnDescription: '涓讳换鍔�', + columnName: 'mainTask', + sortable: true, + wipe: true +}, +{ + columnDescription: '鐩爣浣嶇疆', + columnName: 'toPlace', + sortable: true, + wipe: true +}, +{ + columnDescription: '璧峰浣嶇疆', + columnName: 'sourcePlace', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏄惁瀹屾垚', + columnName: 'hasFinished', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '璁惧鍚嶇О', + columnName: 'devName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鏄惁寮�濮嬫墽琛�', + columnName: 'isReleased', + sortable: true, + wipe: true, + width: 130 +}, +{ + columnDescription: '浠诲姟绫诲瀷', + columnName: 'taskType', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍣ㄥ叿瑙勬牸绫诲瀷', + columnName: 'palletType', + sortable: true, + wipe: true, + width: 130 +}, +{ + columnDescription: '鍫嗗灈鏈哄彿', + columnName: 'useSrmId', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '璧峰鏃堕棿', + columnName: 'doTime', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '鎴鏃堕棿', + columnName: 'finishTime', + sortable: true, + wipe: true, + width: 150 +} +]; +const avroRecord = [{ + columnDescription: '璧峰搴撲綅', + columnName: 'sourcePlace', + sortable: true, + wipe: true +}, +{ + columnDescription: '鐩爣搴撲綅', + columnName: 'toPlace', + sortable: true, + wipe: true +}, +{ + columnDescription: '宸烽亾鍙�', + columnName: 'useSrmId', + sortable: true, + wipe: true +}, +{ + columnDescription: '涓讳换鍔″彿', + columnName: 'fastherTaskId', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍣ㄥ叿鍙�', + columnName: 'containerName', + sortable: true, + wipe: true +}, +{ + columnDescription: '闆朵欢鍙�', + columnName: 'itemName', + sortable: true, + wipe: true +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true +}, +{ + columnDescription: '闆朵欢鏁伴噺', + columnName: 'itemCount', + sortable: true, + wipe: true +}, + +{ + columnDescription: '宸插畬鎴�', + columnName: 'hasFinished', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍒涘缓鏃堕棿', + columnName: 'createTime', + sortable: true, + wipe: true +} +]; +const statistics = [{ + columnDescription: '鍚堣', + columnName: 'allNum', + sortable: true, + wipe: true +}, +{ + columnDescription: '鏃堕棿', + columnName: 'time', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '鍑哄簱浠诲姟缁熻', + sortable: true, + wipe: true, + children: [{ + columnDescription: '鍑哄簱鎬绘暟', + columnName: 'outNum', + sortable: true, + wipe: true + }, + { + columnDescription: '1鍙峰彛', + columnName: 'out_one_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '2鍙峰彛', + columnName: 'out_two_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '3鍙峰彛', + columnName: 'out_three_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '4鍙峰彛', + columnName: 'out_four_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '5鍙峰彛', + columnName: 'out_five_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '6鍙峰彛', + columnName: 'out_six_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '7鍙峰彛', + columnName: 'out_seven_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '8鍙峰彛', + columnName: 'out_eight_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '鍑哄簱缁忚繃涓浆鍙�', + columnName: 'outExchange', + sortable: true, + wipe: true, + width: 150 + } + ] +}, + +{ + columnDescription: '鍏ュ簱浠诲姟缁熻', + sortable: true, + wipe: true, + children: [{ + columnDescription: '鍏ュ簱鎬绘暟', + columnName: 'inNum', + sortable: true, + wipe: true + }, + { + columnDescription: '1鍙峰彛', + columnName: 'in_one_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '2鍙峰彛', + columnName: 'in_two_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '3鍙峰彛', + columnName: 'in_three_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '4鍙峰彛', + columnName: 'in_four_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '5鍙峰彛', + columnName: 'in_five_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '7鍙峰彛', + columnName: 'in_seven_mark', + sortable: true, + wipe: true + }, + { + columnDescription: '鍏ュ簱缁忚繃涓浆鍙�', + columnName: 'inExchange', + sortable: true, + wipe: true, + width: 150 + } + ] +} +]; +const Didproject = [{ + columnDescription: '鏃堕棿', + columnName: 'time' +}, + +{ + columnDescription: '鍏ュ簱闆朵欢鏁�', + columnName: 'in_part' +}, +{ + columnDescription: '鍑哄簱闆朵欢鏁�', + columnName: 'out_part' +}, +{ + columnDescription: '鍏ュ簱鍣ㄥ叿鏁�', + columnName: 'in_appliance' +}, +{ + columnDescription: '鍑哄簱鍣ㄥ叿鏁�', + columnName: 'out_appliance' +}, +{ + columnDescription: '瓒呮湡闆朵欢鏁伴噺', + columnName: 'exceed_part' +}, +{ + columnDescription: '搴撲綅鎬绘暟', + columnName: 'stortage_num' +}, +{ + columnDescription: '鏈夎揣搴撲綅', + columnName: 'available_stortage' +}, +{ + columnDescription: '甯︿欢鍣ㄥ叿', + columnName: 'take_appliance' +}, +{ + columnDescription: '绌哄櫒鍏锋暟', + columnName: 'empty_appliance' +}, +{ + columnDescription: '鍒朵欢鎬绘暟', + columnName: 'workpiece_num' +} +]; +module.exports = { + quotaion_relevanceEdit, + manage, + dept, + role, + storage, + position, + palte, + stacker, + quotation, + quotationedit, + enter, + enterEdit, + edterchoose, + plant, + plantEdit, + cassline, + inventory, + intype, + forklift, + forklifttasks, + taskrecord, + warning, + maintask, + viewdata, + materials, + rgvtask, + piler, + avroRecord, + statistics, + Didproject +}; \ No newline at end of file diff --git a/qqjf-Web/src/components/title/index.vue b/qqjf-Web/src/components/title/index.vue new file mode 100644 index 0000000..8cf2a94 --- /dev/null +++ b/qqjf-Web/src/components/title/index.vue @@ -0,0 +1,26 @@ +<template> + <div id="gloal-title">{{ title }}</div> +</template> + +<script> +export default { + props: { + title: { + type: String, + default: "", + }, + }, +}; +</script> + +<style lang="scss" scoped> +#gloal-title { + // position: absolute; + // left: 10px; + // top: 0; + margin-left: 10px; + padding-left: 10px; + font-size: 20px; + border-left: 4px solid #409eff; +} +</style> diff --git a/qqjf-Web/src/icons/index.js b/qqjf-Web/src/icons/index.js new file mode 100644 index 0000000..2bdb20d --- /dev/null +++ b/qqjf-Web/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) \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/404.svg b/qqjf-Web/src/icons/svg/404.svg new file mode 100644 index 0000000..6df5019 --- /dev/null +++ b/qqjf-Web/src/icons/svg/404.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M121.718 73.272v9.953c3.957-7.584 6.199-16.05 6.199-24.995C127.917 26.079 99.273 0 63.958 0 28.644 0 0 26.079 0 58.23c0 .403.028.806.028 1.21l22.97-25.953h13.34l-19.76 27.187h6.42V53.77l13.728-19.477v49.361H22.998V73.272H2.158c5.951 20.284 23.608 36.208 45.998 41.399-1.44 3.3-5.618 11.263-12.565 12.674-8.607 1.764 23.358.428 46.163-13.178 17.519-4.611 31.938-15.849 39.77-30.513h-13.506V73.272H85.02V59.464l22.998-25.977h13.008l-19.429 27.187h6.421v-7.433l13.727-19.402v39.433h-.027zm-78.24 2.822a10.516 10.516 0 0 1-.996-4.535V44.548c0-1.613.332-3.124.996-4.535a11.66 11.66 0 0 1 2.713-3.68c1.134-1.032 2.49-1.864 4.04-2.468 1.55-.605 3.21-.908 4.982-.908h11.292c1.77 0 3.431.303 4.981.908 1.522.604 2.85 1.41 3.986 2.418l-12.26 16.303v-2.898a1.96 1.96 0 0 0-.665-1.512c-.443-.403-.996-.604-1.66-.604-.665 0-1.218.201-1.661.604a1.96 1.96 0 0 0-.664 1.512v9.071L44.364 77.606a10.556 10.556 0 0 1-.886-1.512zm35.73-4.535c0 1.613-.332 3.124-.997 4.535a11.66 11.66 0 0 1-2.712 3.68c-1.134 1.032-2.49 1.864-4.04 2.469-1.55.604-3.21.907-4.982.907H55.185c-1.77 0-3.431-.303-4.981-.907-1.55-.605-2.906-1.437-4.041-2.47a12.49 12.49 0 0 1-1.384-1.512l13.727-18.217v6.375c0 .605.222 1.109.665 1.512.442.403.996.604 1.66.604.664 0 1.218-.201 1.66-.604a1.96 1.96 0 0 0 .665-1.512V53.87L75.97 36.838c.913.932 1.66 1.99 2.214 3.175.664 1.41.996 2.922.996 4.535v27.011h.028z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/align-right.svg b/qqjf-Web/src/icons/svg/align-right.svg new file mode 100644 index 0000000..9e7d9a9 --- /dev/null +++ b/qqjf-Web/src/icons/svg/align-right.svg @@ -0,0 +1 @@ +<svg t="1595485877113" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28328" width="32" height="32"><path d="M278.935873 315.505767L66.741054 503.436974l212.194819 187.931206zM78.371952 122.398678h878.886994v111.315248H78.371952zM356.659049 345.028151h600.599897v111.314225H356.659049zM356.659049 567.657624h600.599897v111.315248H356.659049zM78.371952 790.287097h878.886994v111.314225H78.371952z" fill="#345" p-id="28329"></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/bug.svg b/qqjf-Web/src/icons/svg/bug.svg new file mode 100644 index 0000000..05a150d --- /dev/null +++ b/qqjf-Web/src/icons/svg/bug.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M127.88 73.143c0 1.412-.506 2.635-1.518 3.669-1.011 1.033-2.209 1.55-3.592 1.55h-17.887c0 9.296-1.783 17.178-5.35 23.645l16.609 17.044c1.011 1.034 1.517 2.257 1.517 3.67 0 1.412-.506 2.635-1.517 3.668-.958 1.033-2.155 1.55-3.593 1.55-1.438 0-2.635-.517-3.593-1.55l-15.811-16.063a15.49 15.49 0 0 1-1.196 1.06c-.532.434-1.65 1.208-3.353 2.322a50.104 50.104 0 0 1-5.192 2.974c-1.758.87-3.94 1.658-6.546 2.364-2.607.706-5.189 1.06-7.748 1.06V47.044H58.89v73.062c-2.716 0-5.417-.367-8.106-1.102-2.688-.734-5.003-1.631-6.945-2.692a66.769 66.769 0 0 1-5.268-3.179c-1.571-1.057-2.73-1.94-3.476-2.65L33.9 109.34l-14.611 16.877c-1.066 1.14-2.344 1.711-3.833 1.711-1.277 0-2.422-.434-3.434-1.304-1.012-.978-1.557-2.187-1.635-3.627-.079-1.44.333-2.705 1.236-3.794l16.129-18.51c-3.087-6.197-4.63-13.644-4.63-22.342H5.235c-1.383 0-2.58-.517-3.592-1.55S.125 74.545.125 73.132c0-1.412.506-2.635 1.518-3.668 1.012-1.034 2.21-1.55 3.592-1.55h17.887V43.939L9.308 29.833c-1.012-1.033-1.517-2.256-1.517-3.669 0-1.412.505-2.635 1.517-3.668 1.012-1.034 2.21-1.55 3.593-1.55s2.58.516 3.593 1.55l13.813 14.106h67.396l13.814-14.106c1.012-1.034 2.21-1.55 3.592-1.55 1.384 0 2.581.516 3.593 1.55 1.012 1.033 1.518 2.256 1.518 3.668 0 1.413-.506 2.636-1.518 3.67l-13.814 14.105v23.975h17.887c1.383 0 2.58.516 3.593 1.55 1.011 1.033 1.517 2.256 1.517 3.668l-.005.01zM89.552 26.175H38.448c0-7.23 2.489-13.386 7.466-18.469C50.892 2.623 56.92.082 64 .082c7.08 0 13.108 2.541 18.086 7.624 4.977 5.083 7.466 11.24 7.466 18.469z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/chart.svg b/qqjf-Web/src/icons/svg/chart.svg new file mode 100644 index 0000000..27728fb --- /dev/null +++ b/qqjf-Web/src/icons/svg/chart.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 54.857h36.571V128H0V54.857zM91.429 27.43H128V128H91.429V27.429zM45.714 0h36.572v128H45.714V0z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/clipboard.svg b/qqjf-Web/src/icons/svg/clipboard.svg new file mode 100644 index 0000000..90923ff --- /dev/null +++ b/qqjf-Web/src/icons/svg/clipboard.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M54.857 118.857h64V73.143H89.143c-1.902 0-3.52-.668-4.855-2.002-1.335-1.335-2.002-2.954-2.002-4.855V36.57H54.857v82.286zM73.143 16v-4.571a2.2 2.2 0 0 0-.677-1.61 2.198 2.198 0 0 0-1.609-.676H20.571c-.621 0-1.158.225-1.609.676a2.198 2.198 0 0 0-.676 1.61V16a2.2 2.2 0 0 0 .676 1.61c.451.45.988.676 1.61.676h50.285c.622 0 1.158-.226 1.61-.677.45-.45.676-.987.676-1.609zm18.286 48h21.357L91.43 42.642V64zM128 73.143v48c0 1.902-.667 3.52-2.002 4.855-1.335 1.335-2.953 2.002-4.855 2.002H52.57c-1.901 0-3.52-.667-4.854-2.002-1.335-1.335-2.003-2.953-2.003-4.855v-11.429H6.857c-1.902 0-3.52-.667-4.855-2.002C.667 106.377 0 104.759 0 102.857v-96c0-1.902.667-3.52 2.002-4.855C3.337.667 4.955 0 6.857 0h77.714c1.902 0 3.52.667 4.855 2.002 1.335 1.335 2.003 2.953 2.003 4.855V30.29c1 .622 1.856 1.29 2.569 2.003l29.147 29.147c1.335 1.335 2.478 3.145 3.429 5.43.95 2.287 1.426 4.383 1.426 6.291v-.018z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/component.svg b/qqjf-Web/src/icons/svg/component.svg new file mode 100644 index 0000000..207ada3 --- /dev/null +++ b/qqjf-Web/src/icons/svg/component.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h54.857v54.857H0V0zm0 73.143h54.857V128H0V73.143zm73.143 0H128V128H73.143V73.143zm27.428-18.286C115.72 54.857 128 42.577 128 27.43 128 12.28 115.72 0 100.571 0 85.423 0 73.143 12.28 73.143 27.429c0 15.148 12.28 27.428 27.428 27.428z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/dashboard.svg b/qqjf-Web/src/icons/svg/dashboard.svg new file mode 100644 index 0000000..5317d37 --- /dev/null +++ b/qqjf-Web/src/icons/svg/dashboard.svg @@ -0,0 +1 @@ +<svg width="128" height="100" xmlns="http://www.w3.org/2000/svg"><path d="M27.429 63.638c0-2.508-.893-4.65-2.679-6.424-1.786-1.775-3.94-2.662-6.464-2.662-2.524 0-4.679.887-6.465 2.662-1.785 1.774-2.678 3.916-2.678 6.424 0 2.508.893 4.65 2.678 6.424 1.786 1.775 3.94 2.662 6.465 2.662 2.524 0 4.678-.887 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zm13.714-31.801c0-2.508-.893-4.65-2.679-6.424-1.785-1.775-3.94-2.662-6.464-2.662-2.524 0-4.679.887-6.464 2.662-1.786 1.774-2.679 3.916-2.679 6.424 0 2.508.893 4.65 2.679 6.424 1.785 1.774 3.94 2.662 6.464 2.662 2.524 0 4.679-.888 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zM71.714 65.98l7.215-27.116c.285-1.23.107-2.378-.536-3.443-.643-1.064-1.56-1.762-2.75-2.094-1.19-.33-2.333-.177-3.429.462-1.095.639-1.81 1.573-2.143 2.804l-7.214 27.116c-2.857.237-5.405 1.266-7.643 3.088-2.238 1.822-3.738 4.152-4.5 6.992-.952 3.644-.476 7.098 1.429 10.364 1.905 3.265 4.69 5.37 8.357 6.317 3.667.947 7.143.474 10.429-1.42 3.285-1.892 5.404-4.66 6.357-8.305.762-2.84.619-5.607-.429-8.305-1.047-2.697-2.762-4.85-5.143-6.46zm47.143-2.342c0-2.508-.893-4.65-2.678-6.424-1.786-1.775-3.94-2.662-6.465-2.662-2.524 0-4.678.887-6.464 2.662-1.786 1.774-2.679 3.916-2.679 6.424 0 2.508.893 4.65 2.679 6.424 1.786 1.775 3.94 2.662 6.464 2.662 2.524 0 4.679-.887 6.465-2.662 1.785-1.775 2.678-3.916 2.678-6.424zm-45.714-45.43c0-2.509-.893-4.65-2.679-6.425C68.68 10.01 66.524 9.122 64 9.122c-2.524 0-4.679.887-6.464 2.661-1.786 1.775-2.679 3.916-2.679 6.425 0 2.508.893 4.65 2.679 6.424 1.785 1.774 3.94 2.662 6.464 2.662 2.524 0 4.679-.888 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zm32 13.629c0-2.508-.893-4.65-2.679-6.424-1.785-1.775-3.94-2.662-6.464-2.662-2.524 0-4.679.887-6.464 2.662-1.786 1.774-2.679 3.916-2.679 6.424 0 2.508.893 4.65 2.679 6.424 1.785 1.774 3.94 2.662 6.464 2.662 2.524 0 4.679-.888 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zM128 63.638c0 12.351-3.357 23.78-10.071 34.286-.905 1.372-2.19 2.058-3.858 2.058H13.93c-1.667 0-2.953-.686-3.858-2.058C3.357 87.465 0 76.037 0 63.638c0-8.613 1.69-16.847 5.071-24.703C8.452 31.08 13 24.312 18.714 18.634c5.715-5.68 12.524-10.199 20.429-13.559C47.048 1.715 55.333.035 64 .035c8.667 0 16.952 1.68 24.857 5.04 7.905 3.36 14.714 7.88 20.429 13.559 5.714 5.678 10.262 12.446 13.643 20.301 3.38 7.856 5.071 16.09 5.071 24.703z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/documentation.svg b/qqjf-Web/src/icons/svg/documentation.svg new file mode 100644 index 0000000..7043122 --- /dev/null +++ b/qqjf-Web/src/icons/svg/documentation.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M71.984 44.815H115.9L71.984 9.642v35.173zM16.094.05h63.875l47.906 38.37v76.74c0 3.392-1.682 6.645-4.677 9.044-2.995 2.399-7.056 3.746-11.292 3.746H16.094c-4.236 0-8.297-1.347-11.292-3.746-2.995-2.399-4.677-5.652-4.677-9.044V12.84C.125 5.742 7.23.05 16.094.05zm71.86 102.32V89.58h-71.86v12.79h71.86zm23.952-25.58V64H16.094v12.79h95.812z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/drag.svg b/qqjf-Web/src/icons/svg/drag.svg new file mode 100644 index 0000000..4185d3c --- /dev/null +++ b/qqjf-Web/src/icons/svg/drag.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M73.137 29.08h-9.209 29.7L63.886.093 34.373 29.08h20.49v27.035H27.238v17.948h27.625v27.133h18.274V74.063h27.41V56.115h-27.41V29.08zm-9.245 98.827l27.518-26.711H36.59l27.302 26.71zM.042 64.982l27.196 27.029V38.167L.042 64.982zm100.505-26.815V92.01l27.41-27.029-27.41-26.815z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/edit.svg b/qqjf-Web/src/icons/svg/edit.svg new file mode 100644 index 0000000..d26101f --- /dev/null +++ b/qqjf-Web/src/icons/svg/edit.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M106.133 67.2a4.797 4.797 0 0 0-4.8 4.8c0 .187.014.36.027.533h-.027V118.4H9.6V26.667h50.133c2.654 0 4.8-2.147 4.8-4.8 0-2.654-2.146-4.8-4.8-4.8H9.6a9.594 9.594 0 0 0-9.6 9.6V118.4c0 5.307 4.293 9.6 9.6 9.6h91.733c5.307 0 9.6-4.293 9.6-9.6V72.533h-.026c.013-.173.026-.346.026-.533 0-2.653-2.146-4.8-4.8-4.8z"/><path d="M125.16 13.373L114.587 2.8c-3.747-3.747-9.854-3.72-13.6.027l-52.96 52.96a4.264 4.264 0 0 0-.907 1.36L33.813 88.533c-.746 1.76-.226 3.534.907 4.68 1.133 1.147 2.92 1.667 4.693.92l31.4-13.293c.507-.213.96-.52 1.36-.907l52.96-52.96c3.747-3.746 3.774-9.853.027-13.6zM66.107 72.4l-18.32 7.76 7.76-18.32L92.72 24.667l10.56 10.56L66.107 72.4zm52.226-52.227l-8.266 8.267-10.56-10.56 8.266-8.267.027-.026 10.56 10.56-.027.026z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/education.svg b/qqjf-Web/src/icons/svg/education.svg new file mode 100644 index 0000000..7bfb01d --- /dev/null +++ b/qqjf-Web/src/icons/svg/education.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M88.883 119.565c-7.284 0-19.434 2.495-21.333 8.25v.127c-4.232.13-5.222 0-7.108 0-1.895-5.76-14.045-8.256-21.333-8.256H0V0h42.523c9.179 0 17.109 5.47 21.47 13.551C68.352 5.475 76.295 0 85.478 0H128v119.57l-39.113-.005h-.004zM60.442 24.763c0-9.651-8.978-16.507-17.777-16.507H7.108V111.43H39.11c7.054-.14 18.177.082 21.333 6.12v-4.628c-.134-5.722-.004-13.522 0-13.832V27.413l.004-2.655-.004.005zm60.442-16.517h-35.55c-8.802 0-17.78 6.856-17.78 16.493v74.259c.004.32.138 8.115 0 13.813v4.627c3.155-6.022 14.279-6.26 21.333-6.114h32V8.25l-.003-.005z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/email.svg b/qqjf-Web/src/icons/svg/email.svg new file mode 100644 index 0000000..74d25e2 --- /dev/null +++ b/qqjf-Web/src/icons/svg/email.svg @@ -0,0 +1 @@ +<svg width="128" height="96" xmlns="http://www.w3.org/2000/svg"><path d="M64.125 56.975L120.188.912A12.476 12.476 0 0 0 115.5 0h-103c-1.588 0-3.113.3-4.513.838l56.138 56.137z"/><path d="M64.125 68.287l-62.3-62.3A12.42 12.42 0 0 0 0 12.5v71C0 90.4 5.6 96 12.5 96h103c6.9 0 12.5-5.6 12.5-12.5v-71a12.47 12.47 0 0 0-1.737-6.35L64.125 68.287z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/example.svg b/qqjf-Web/src/icons/svg/example.svg new file mode 100644 index 0000000..46f42b5 --- /dev/null +++ b/qqjf-Web/src/icons/svg/example.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M96.258 57.462h31.421C124.794 27.323 100.426 2.956 70.287.07v31.422a32.856 32.856 0 0 1 25.971 25.97zm-38.796-25.97V.07C27.323 2.956 2.956 27.323.07 57.462h31.422a32.856 32.856 0 0 1 25.97-25.97zm12.825 64.766v31.421c30.46-2.885 54.507-27.253 57.713-57.712H96.579c-2.886 13.466-13.146 23.726-26.292 26.291zM31.492 70.287H.07c2.886 30.46 27.253 54.507 57.713 57.713V96.579c-13.466-2.886-23.726-13.146-26.291-26.292z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/excel.svg b/qqjf-Web/src/icons/svg/excel.svg new file mode 100644 index 0000000..74d97b8 --- /dev/null +++ b/qqjf-Web/src/icons/svg/excel.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M78.208 16.576v8.384h38.72v5.376h-38.72v8.704h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.512h38.72v5.376h-38.72v11.136H128v-94.72H78.208zM0 114.368L72.128 128V0L0 13.632v100.736z"/><path d="M28.672 82.56h-11.2l14.784-23.488-14.08-22.592h11.52l8.192 14.976 8.448-14.976h11.136l-14.08 22.208L58.368 82.56H46.656l-8.768-15.68z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/exit-fullscreen.svg b/qqjf-Web/src/icons/svg/exit-fullscreen.svg new file mode 100644 index 0000000..485c128 --- /dev/null +++ b/qqjf-Web/src/icons/svg/exit-fullscreen.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M49.217 41.329l-.136-35.24c-.06-2.715-2.302-4.345-5.022-4.405h-3.65c-2.712-.06-4.866 2.303-4.806 5.016l.152 19.164-24.151-23.79a6.698 6.698 0 0 0-9.499 0 6.76 6.76 0 0 0 0 9.526l23.93 23.713-18.345.074c-2.712-.069-5.228 1.813-5.64 5.02v3.462c.069 2.721 2.31 4.97 5.022 5.03l35.028-.207c.052.005.087.025.133.025l2.457.054a4.626 4.626 0 0 0 3.436-1.38c.88-.874 1.205-2.096 1.169-3.462l-.262-2.465c0-.048.182-.081.182-.136h.002zm52.523 51.212l18.32-.073c2.713.06 5.224-1.609 5.64-4.815v-3.462c-.068-2.722-2.317-4.97-5.021-5.04l-34.58.21c-.053 0-.086-.021-.138-.021l-2.451-.06a4.64 4.64 0 0 0-3.445 1.381c-.885.868-1.201 2.094-1.174 3.46l.27 2.46c.005.06-.177.095-.177.141l.141 34.697c.069 2.713 2.31 4.338 5.022 4.397l3.45.006c2.705.062 4.867-2.31 4.8-5.026l-.153-18.752 24.151 23.946a6.69 6.69 0 0 0 9.494 0 6.747 6.747 0 0 0 0-9.523L101.74 92.54v.001zM48.125 80.662a4.636 4.636 0 0 0-3.437-1.382l-2.457.06c-.05 0-.082.022-.137.022l-35.025-.21c-2.712.07-4.957 2.318-5.022 5.04v3.462c.409 3.206 2.925 4.874 5.633 4.814l18.554.06-24.132 23.928c-2.62 2.626-2.62 6.89 0 9.524a6.694 6.694 0 0 0 9.496 0l24.155-23.79-.155 18.866c-.06 2.722 2.094 5.093 4.801 5.025h3.65c2.72-.069 4.962-1.685 5.022-4.406l.141-34.956c0-.05-.182-.082-.182-.136l.262-2.46c.03-1.366-.286-2.592-1.166-3.46h-.001zM80.08 47.397a4.62 4.62 0 0 0 3.443 1.374l2.45-.054c.055 0 .088-.02.143-.028l35.08.21c2.712-.062 4.953-2.312 5.021-5.033l.009-3.463c-.417-3.211-2.937-5.084-5.64-5.025l-18.615-.073 23.917-23.715c2.63-2.623 2.63-6.879.008-9.513a6.691 6.691 0 0 0-9.494 0L92.251 26.016l.155-19.312c.065-2.713-2.097-5.085-4.802-5.025h-3.45c-2.713.069-4.954 1.693-5.022 4.406l-.139 35.247c0 .054.18.088.18.136l-.267 2.465c-.028 1.366.288 2.588 1.174 3.463v.001z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/eye-open.svg b/qqjf-Web/src/icons/svg/eye-open.svg new file mode 100644 index 0000000..88dcc98 --- /dev/null +++ b/qqjf-Web/src/icons/svg/eye-open.svg @@ -0,0 +1 @@ +<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="128" height="128"><defs><style/></defs><path d="M512 128q69.675 0 135.51 21.163t115.498 54.997 93.483 74.837 73.685 82.006 51.67 74.837 32.17 54.827L1024 512q-2.347 4.992-6.315 13.483T998.87 560.17t-31.658 51.669-44.331 59.99-56.832 64.34-69.504 60.16-82.347 51.5-94.848 34.687T512 896q-69.675 0-135.51-21.163t-115.498-54.826-93.483-74.326-73.685-81.493-51.67-74.496-32.17-54.997L0 513.707q2.347-4.992 6.315-13.483t18.816-34.816 31.658-51.84 44.331-60.33 56.832-64.683 69.504-60.331 82.347-51.84 94.848-34.816T512 128.085zm0 85.333q-46.677 0-91.648 12.331t-81.152 31.83-70.656 47.146-59.648 54.485-48.853 57.686-37.675 52.821-26.325 43.99q12.33 21.674 26.325 43.52t37.675 52.351 48.853 57.003 59.648 53.845T339.2 767.02t81.152 31.488T512 810.667t91.648-12.331 81.152-31.659 70.656-46.848 59.648-54.186 48.853-57.344 37.675-52.651T927.957 512q-12.33-21.675-26.325-43.648t-37.675-52.65-48.853-57.345-59.648-54.186-70.656-46.848-81.152-31.659T512 213.334zm0 128q70.656 0 120.661 50.006T682.667 512 632.66 632.661 512 682.667 391.339 632.66 341.333 512t50.006-120.661T512 341.333zm0 85.334q-35.328 0-60.33 25.002T426.666 512t25.002 60.33T512 597.334t60.33-25.002T597.334 512t-25.002-60.33T512 426.666z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/eye.svg b/qqjf-Web/src/icons/svg/eye.svg new file mode 100644 index 0000000..16ed2d8 --- /dev/null +++ b/qqjf-Web/src/icons/svg/eye.svg @@ -0,0 +1 @@ +<svg width="128" height="64" xmlns="http://www.w3.org/2000/svg"><path d="M127.072 7.994c1.37-2.208.914-5.152-.914-6.87-2.056-1.717-4.797-1.226-6.396.982-.229.245-25.586 32.382-55.74 32.382-29.24 0-55.74-32.382-55.968-32.627-1.6-1.963-4.57-2.208-6.397-.49C-.17 3.086-.399 6.275 1.2 8.238c.457.736 5.94 7.36 14.62 14.72L4.17 35.96c-1.828 1.963-1.6 5.152.228 6.87.457.98 1.6 1.471 2.742 1.471s2.284-.49 3.198-1.472l12.564-13.983c5.94 4.416 13.021 8.587 20.788 11.53l-4.797 17.418c-.685 2.699.686 5.397 3.198 6.133h1.37c2.057 0 3.884-1.472 4.341-3.68L52.6 42.83c3.655.736 7.538 1.227 11.422 1.227 3.883 0 7.767-.49 11.422-1.227l4.797 17.173c.457 2.208 2.513 3.68 4.34 3.68.457 0 .914 0 1.143-.246 2.513-.736 3.883-3.434 3.198-6.133l-4.797-17.172c7.767-2.944 14.848-7.114 20.788-11.53l12.336 13.738c.913.981 2.056 1.472 3.198 1.472s2.284-.49 3.198-1.472c1.828-1.963 1.828-4.906.228-6.87l-11.65-13.001c9.366-7.36 14.849-14.474 14.849-14.474z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/form.svg b/qqjf-Web/src/icons/svg/form.svg new file mode 100644 index 0000000..dcbaa18 --- /dev/null +++ b/qqjf-Web/src/icons/svg/form.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M84.068 23.784c-1.02 0-1.877-.32-2.572-.96a8.588 8.588 0 0 1-1.738-2.237 11.524 11.524 0 0 1-1.042-2.621c-.232-.895-.348-1.641-.348-2.238V0h.278c.834 0 1.622.085 2.363.256.742.17 1.645.575 2.711 1.214 1.066.64 2.363 1.535 3.892 2.686 1.53 1.15 3.453 2.664 5.77 4.54 2.502 2.045 4.494 3.771 5.977 5.178 1.483 1.406 2.618 2.6 3.406 3.58.787.98 1.274 1.812 1.46 2.494.185.682.277 1.278.277 1.79v2.046H84.068zM127.3 84.01c.278.682.464 1.535.556 2.558.093 1.023-.37 2.003-1.39 2.94-.463.427-.88.832-1.25 1.215-.372.384-.696.704-.974.96a6.69 6.69 0 0 1-.973.767l-11.816-10.741a44.331 44.331 0 0 0 1.877-1.535 31.028 31.028 0 0 1 1.737-1.406c1.112-.938 2.317-1.343 3.615-1.215 1.297.128 2.363.405 3.197.83.927.427 1.923 1.173 2.989 2.239 1.065 1.065 1.876 2.195 2.432 3.388zM78.23 95.902c2.038 0 3.752-.511 5.143-1.534l-26.969 25.83H18.037c-1.761 0-3.684-.47-5.77-1.407a24.549 24.549 0 0 1-5.838-3.709 21.373 21.373 0 0 1-4.518-5.306c-1.204-2.003-1.807-4.07-1.807-6.202V16.495c0-1.79.44-3.665 1.32-5.626A18.41 18.41 0 0 1 5.04 5.562a21.798 21.798 0 0 1 5.213-3.964C12.198.533 14.237 0 16.37 0h53.24v15.984c0 1.62.278 3.367.834 5.242a16.704 16.704 0 0 0 2.572 5.179c1.159 1.577 2.665 2.898 4.518 3.964 1.853 1.066 4.078 1.598 6.673 1.598h20.295v42.325L85.458 92.45c1.02-1.364 1.529-2.856 1.529-4.476 0-2.216-.857-4.113-2.572-5.69-1.714-1.577-3.776-2.366-6.186-2.366H26.1c-2.409 0-4.448.789-6.116 2.366-1.668 1.577-2.502 3.474-2.502 5.69 0 2.217.834 4.092 2.502 5.626 1.668 1.535 3.707 2.302 6.117 2.302h52.13zM26.1 47.951c-2.41 0-4.449.789-6.117 2.366-1.668 1.577-2.502 3.473-2.502 5.69 0 2.216.834 4.092 2.502 5.626 1.668 1.534 3.707 2.302 6.117 2.302h52.13c2.409 0 4.47-.768 6.185-2.302 1.715-1.534 2.572-3.41 2.572-5.626 0-2.217-.857-4.113-2.572-5.69-1.714-1.577-3.776-2.366-6.186-2.366H26.1zm52.407 64.063l1.807-1.663 3.476-3.196a479.75 479.75 0 0 0 4.587-4.284 500.757 500.757 0 0 1 5.004-4.667c3.985-3.666 8.48-7.758 13.485-12.276l11.677 10.741-13.485 12.404-5.004 4.603-4.587 4.22a179.46 179.46 0 0 0-3.267 3.068c-.88.853-1.367 1.322-1.46 1.407-.463.341-.973.703-1.529 1.087-.556.383-1.112.703-1.668.959-.556.256-1.413.575-2.572.959a83.5 83.5 0 0 1-3.545 1.087 72.2 72.2 0 0 1-3.475.895c-1.112.256-1.946.426-2.502.511-1.112.17-1.854.043-2.224-.383-.371-.426-.464-1.151-.278-2.174.092-.511.278-1.279.556-2.302.278-1.023.602-2.067.973-3.132l1.042-3.005c.325-.938.58-1.577.765-1.918a10.157 10.157 0 0 1 2.224-2.941z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/fullscreen.svg b/qqjf-Web/src/icons/svg/fullscreen.svg new file mode 100644 index 0000000..0e86b6f --- /dev/null +++ b/qqjf-Web/src/icons/svg/fullscreen.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M38.47 52L52 38.462l-23.648-23.67L43.209 0H.035L0 43.137l14.757-14.865L38.47 52zm74.773 47.726L89.526 76 76 89.536l23.648 23.672L84.795 128h43.174L128 84.863l-14.757 14.863zM89.538 52l23.668-23.648L128 43.207V.038L84.866 0 99.73 14.76 76 38.472 89.538 52zM38.46 76L14.792 99.651 0 84.794v43.173l43.137.033-14.865-14.757L52 89.53 38.46 76z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/guide.svg b/qqjf-Web/src/icons/svg/guide.svg new file mode 100644 index 0000000..b271001 --- /dev/null +++ b/qqjf-Web/src/icons/svg/guide.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M1.482 70.131l36.204 16.18 69.932-65.485-61.38 70.594 46.435 18.735c1.119.425 2.397-.17 2.797-1.363v-.085L127.998.047 1.322 65.874c-1.12.597-1.519 1.959-1.04 3.151.32.511.72.937 1.2 1.107zm44.676 57.821L64.22 107.26l-18.062-7.834v28.527z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/him.svg b/qqjf-Web/src/icons/svg/him.svg new file mode 100644 index 0000000..030b5fd --- /dev/null +++ b/qqjf-Web/src/icons/svg/him.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1624246657816" class="icon" viewBox="0 0 1228 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2010" xmlns:xlink="http://www.w3.org/1999/xlink" width="38.375" height="32"><defs><style type="text/css"></style></defs><path d="M1016.88888897 63.99999999a28.444444 28.444444 0 0 0-28.444445 28.444444v187.164445H248.88888897V92.44444399a28.444444 28.444444 0 0 0-56.888889 0v796.444445a28.444444 28.444444 0 0 0 56.888889 0v-63.431111h739.555555V888.88888899a28.444444 28.444444 0 0 0 56.888889 0V92.44444399a28.444444 28.444444 0 0 0-28.444444-28.444444z m-28.444445 704.568889H248.88888897v-187.733333h739.555555z m0-244.622222H248.88888897V336.49777799h739.555555z" p-id="2011"></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/homePage.svg b/qqjf-Web/src/icons/svg/homePage.svg new file mode 100644 index 0000000..a886d69 --- /dev/null +++ b/qqjf-Web/src/icons/svg/homePage.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621487598758" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2368" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M566.55497187 51.95428531a77.02857187 77.02857187 0 0 0-103.47428625 0L44.68068594 449.16571437a38.5828575 38.5828575 0 0 0 51.67999969 57.32571375l6.65142843-6.33142781V914.74285719A77.16571406 77.16571406 0 0 0 180.2235425 992h224.64V759.65714281a54.33142875 54.33142875 0 0 1 54.37714313-54.40000031h105.69142875a54.35428594 54.35428594 0 0 1 54.40000031 54.40000031V992h229.94285719a77.23428563 77.23428563 0 0 0 77.23428562-77.25714281V505.21142844c17.14285687 15.52000031 41.4628575 14.33142844 55.74857063-1.55428594a38.5828575 38.5828575 0 0 0-2.78857125-54.51428531L566.55497187 51.9771425z" fill="#ffffff" p-id="2369"></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/icon.svg b/qqjf-Web/src/icons/svg/icon.svg new file mode 100644 index 0000000..82be8ee --- /dev/null +++ b/qqjf-Web/src/icons/svg/icon.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M115.147.062a13 13 0 0 1 4.94.945c1.55.63 2.907 1.526 4.069 2.688a13.148 13.148 0 0 1 2.761 4.069c.678 1.55 1.017 3.245 1.017 5.086v102.3c0 3.681-1.187 6.733-3.56 9.155-2.373 2.422-5.352 3.633-8.937 3.633H12.992c-3.875 0-7-1.26-9.373-3.779-2.373-2.518-3.56-5.667-3.56-9.445V12.704c0-3.39 1.163-6.345 3.488-8.863C5.872 1.32 8.972.062 12.847.062h102.3zM81.434 109.047c1.744 0 3.003-.412 3.778-1.235.775-.824 1.163-1.914 1.163-3.27 0-1.26-.388-2.325-1.163-3.197-.775-.872-2.034-1.307-3.778-1.307H72.57c.097-.194.145-.485.145-.872V27.09h9.01c1.743 0 2.954-.436 3.633-1.308.678-.872 1.017-1.938 1.017-3.197 0-1.26-.34-2.325-1.017-3.197-.679-.872-1.89-1.308-3.633-1.308H46.268c-1.743 0-2.954.436-3.632 1.308-.678.872-1.018 1.938-1.018 3.197 0 1.26.34 2.325 1.018 3.197.678.872 1.889 1.308 3.632 1.308h8.138v72.075c0 .193.024.339.073.436.048.096.072.242.072.436H46.56c-1.744 0-3.003.435-3.778 1.307-.775.872-1.163 1.938-1.163 3.197 0 1.356.388 2.446 1.163 3.27.775.823 2.034 1.235 3.778 1.235h34.875z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/in-storage.svg b/qqjf-Web/src/icons/svg/in-storage.svg new file mode 100644 index 0000000..ec3c665 --- /dev/null +++ b/qqjf-Web/src/icons/svg/in-storage.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1623139027497" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4941" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M258.701056 193.045226l512.00016 0 0 63.99952L258.701056 257.044746 258.701056 193.045226zM256.993602 321.671065l511.99916 0 0 63.99952L256.993602 385.670585 256.993602 321.671065zM256.993602 449.663108l131.31098 0 0 64.00052L256.993602 513.663628 256.993602 449.663108zM256.993602 577.665147l57.948456 0 0 64.00052-57.948456 0L256.993602 577.665147zM898.701256 0 130.701016 0C95.356326 0 66.702495 28.653831 66.702495 64.00052l0 895.998281c0 35.34469 28.653831 63.99952 63.99952 63.99952l299.403191-0.327895 0-63.99952-299.403191 0.327895L130.702015 64.00052l768.00024 0 0 611.622281 63.99952 0L962.701775 64.00052C962.700776 28.653831 934.041947 0 898.701256 0L898.701256 0z" p-id="4942" ></path><path d="M962.700776 998.077615c-4.265635-63.979527-29.857446-375.345889-362.549984-392.40643l0-98.101607c0-4.265635 0-17.06154-8.53027-29.857446s-25.591811-12.795905-46.917986-4.265635l-4.265635 0-187.672945 204.734485c-4.265635 4.265635-21.326176 25.591811-21.326176 46.917986 0 25.591811 21.326176 46.917986 25.591811 46.917986l187.672945 213.264755c4.265635 4.265635 17.06154 17.06154 29.857446 17.06154 12.795905 0 21.326176-8.53027 25.591811-17.06154 4.265635-8.53027 4.265635-17.06154 4.265635-29.857446L604.417426 831.731846c55.449256 0 208.99912 8.53027 302.836092 174.877039 6.536908 14.430382 17.06154 17.06154 25.591811 17.06154l8.53027 0 6.380958-1.880398C960.551464 1017.524392 962.700776 1002.34325 962.700776 998.077615L962.700776 998.077615zM617.212332 789.078495c-21.326176 0-34.122081 0-34.122081 0l-21.326176 4.265635 0 145.019594L391.151671 742.160509c-4.265635-4.265635-12.795905-12.795905-12.795905-17.06154 0-4.265635 4.265635-12.795905 8.53027-17.06154l166.346769-179.142674 0 123.693418 21.326176 0c238.856566 0 311.366363 162.081134 332.692538 272.978647C809.149912 801.8744 676.926224 789.078495 617.212332 789.078495L617.212332 789.078495z" p-id="4943" ></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/inbound.svg b/qqjf-Web/src/icons/svg/inbound.svg new file mode 100644 index 0000000..15f85fc --- /dev/null +++ b/qqjf-Web/src/icons/svg/inbound.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621487711672" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4691" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M258.701056 193.045226l512.00016 0 0 63.99952L258.701056 257.044746 258.701056 193.045226zM256.993602 321.671065l511.99916 0 0 63.99952L256.993602 385.670585 256.993602 321.671065zM256.993602 449.663108l131.31098 0 0 64.00052L256.993602 513.663628 256.993602 449.663108zM256.993602 577.665147l57.948456 0 0 64.00052-57.948456 0L256.993602 577.665147zM898.701256 0 130.701016 0C95.356326 0 66.702495 28.653831 66.702495 64.00052l0 895.998281c0 35.34469 28.653831 63.99952 63.99952 63.99952l299.403191-0.327895 0-63.99952-299.403191 0.327895L130.702015 64.00052l768.00024 0 0 611.622281 63.99952 0L962.701775 64.00052C962.700776 28.653831 934.041947 0 898.701256 0L898.701256 0z" p-id="4692"></path><path d="M962.700776 998.077615c-4.265635-63.979527-29.857446-375.345889-362.549984-392.40643l0-98.101607c0-4.265635 0-17.06154-8.53027-29.857446s-25.591811-12.795905-46.917986-4.265635l-4.265635 0-187.672945 204.734485c-4.265635 4.265635-21.326176 25.591811-21.326176 46.917986 0 25.591811 21.326176 46.917986 25.591811 46.917986l187.672945 213.264755c4.265635 4.265635 17.06154 17.06154 29.857446 17.06154 12.795905 0 21.326176-8.53027 25.591811-17.06154 4.265635-8.53027 4.265635-17.06154 4.265635-29.857446L604.417426 831.731846c55.449256 0 208.99912 8.53027 302.836092 174.877039 6.536908 14.430382 17.06154 17.06154 25.591811 17.06154l8.53027 0 6.380958-1.880398C960.551464 1017.524392 962.700776 1002.34325 962.700776 998.077615L962.700776 998.077615zM617.212332 789.078495c-21.326176 0-34.122081 0-34.122081 0l-21.326176 4.265635 0 145.019594L391.151671 742.160509c-4.265635-4.265635-12.795905-12.795905-12.795905-17.06154 0-4.265635 4.265635-12.795905 8.53027-17.06154l166.346769-179.142674 0 123.693418 21.326176 0c238.856566 0 311.366363 162.081134 332.692538 272.978647C809.149912 801.8744 676.926224 789.078495 617.212332 789.078495L617.212332 789.078495z" p-id="4693"></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/international.svg b/qqjf-Web/src/icons/svg/international.svg new file mode 100644 index 0000000..e9b56ee --- /dev/null +++ b/qqjf-Web/src/icons/svg/international.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M83.287 103.01c-1.57-3.84-6.778-10.414-15.447-19.548-2.327-2.444-2.182-4.306-1.338-9.862v-.64c.553-3.81 1.513-6.05 14.313-8.087 6.516-1.018 8.203 1.57 10.589 5.178l.785 1.193a12.625 12.625 0 0 0 6.43 5.207c1.134.524 2.53 1.164 4.421 2.24 4.596 2.53 4.596 5.41 4.596 11.753v.727a26.91 26.91 0 0 1-5.178 17.454 59.055 59.055 0 0 1-19.025 11.026c3.49-6.546.814-14.313 0-16.553l-.146-.087zM64 5.12a58.502 58.502 0 0 1 25.484 5.818 54.313 54.313 0 0 0-12.859 10.327c-.93 1.28-1.716 2.473-2.472 3.579-2.444 3.694-3.637 5.352-5.818 5.614a25.105 25.105 0 0 1-4.219 0c-4.276-.29-10.094-.64-11.956 4.422-1.193 3.23-1.396 11.956 2.444 16.495.66 1.077.778 2.4.32 3.578a7.01 7.01 0 0 1-2.066 3.229 18.938 18.938 0 0 1-2.909-2.91 18.91 18.91 0 0 0-8.32-6.603c-1.25-.349-2.647-.64-3.985-.93-3.782-.786-8.03-1.688-9.019-3.812a14.895 14.895 0 0 1-.727-5.818 21.935 21.935 0 0 0-1.396-9.25 8.873 8.873 0 0 0-5.557-4.946A58.705 58.705 0 0 1 64 5.12zM0 64c0 35.346 28.654 64 64 64 35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/language.svg b/qqjf-Web/src/icons/svg/language.svg new file mode 100644 index 0000000..0082b57 --- /dev/null +++ b/qqjf-Web/src/icons/svg/language.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M84.742 36.8c2.398 7.2 5.595 12.8 11.19 18.4 4.795-4.8 7.992-11.2 10.39-18.4h-21.58zm-52.748 40h20.78l-10.39-28-10.39 28z"/><path d="M111.916 0H16.009C7.218 0 .025 7.2.025 16v96c0 8.8 7.193 16 15.984 16h95.907c8.791 0 15.984-7.2 15.984-16V16c0-8.8-6.394-16-15.984-16zM72.754 103.2c-1.598 1.6-3.197 1.6-4.795 1.6-.8 0-2.398 0-3.197-.8-.8-.8-1.599 0-1.599-.8s-.799-1.6-1.598-3.2c-.8-1.6-.8-2.4-1.599-4l-3.196-8.8H28.797L25.6 96c-1.598 3.2-2.398 5.6-3.197 7.2-.8 1.6-2.398 1.6-4.795 1.6-1.599 0-3.197-.8-4.796-1.6-1.598-1.6-2.397-2.4-2.397-4 0-.8 0-1.6.799-3.2.8-1.6.8-2.4 1.598-4l17.583-44.8c.8-1.6.8-3.2 1.599-4.8.799-1.6 1.598-3.2 2.397-4 .8-.8 1.599-2.4 3.197-3.2 1.599-.8 3.197-.8 4.796-.8 1.598 0 3.196 0 4.795.8 1.598.8 2.398 1.6 3.197 3.2.799.8 1.598 2.4 2.397 4 .8 1.6 1.599 3.2 2.398 5.6l17.583 44c1.598 3.2 2.398 5.6 2.398 7.2-.8.8-1.599 2.4-2.398 4zM116.711 72c-8.791-3.2-15.185-7.2-20.78-12-5.594 5.6-12.787 9.6-21.579 12l-2.397-4c8.791-2.4 15.984-5.6 21.579-11.2C87.939 51.2 83.144 44 81.545 36h-7.992v-3.2h21.58c-1.6-2.4-3.198-5.6-4.796-8l2.397-.8c1.599 2.4 3.997 5.6 5.595 8.8h19.98v4h-7.992c-2.397 8-6.393 15.2-11.189 20 5.595 4.8 11.988 8.8 20.78 11.2l-3.197 4z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/link.svg b/qqjf-Web/src/icons/svg/link.svg new file mode 100644 index 0000000..48197ba --- /dev/null +++ b/qqjf-Web/src/icons/svg/link.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M115.625 127.937H.063V12.375h57.781v12.374H12.438v90.813h90.813V70.156h12.374z"/><path d="M116.426 2.821l8.753 8.753-56.734 56.734-8.753-8.745z"/><path d="M127.893 37.982h-12.375V12.375H88.706V0h39.187z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/list.svg b/qqjf-Web/src/icons/svg/list.svg new file mode 100644 index 0000000..20259ed --- /dev/null +++ b/qqjf-Web/src/icons/svg/list.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M1.585 12.087c0 6.616 3.974 11.98 8.877 11.98 4.902 0 8.877-5.364 8.877-11.98 0-6.616-3.975-11.98-8.877-11.98-4.903 0-8.877 5.364-8.877 11.98zM125.86.107H35.613c-1.268 0-2.114 1.426-2.114 2.852v18.255c0 1.712 1.057 2.853 2.114 2.853h90.247c1.268 0 2.114-1.426 2.114-2.853V2.96c0-1.711-1.057-2.852-2.114-2.852zM.106 62.86c0 6.615 3.974 11.979 8.876 11.979 4.903 0 8.877-5.364 8.877-11.98 0-6.616-3.974-11.98-8.877-11.98-4.902 0-8.876 5.364-8.876 11.98zM124.17 50.88H33.921c-1.268 0-2.114 1.425-2.114 2.851v18.256c0 1.711 1.057 2.852 2.114 2.852h90.247c1.268 0 2.114-1.426 2.114-2.852V53.73c0-1.426-.846-2.852-2.114-2.852zM.106 115.913c0 6.616 3.974 11.98 8.876 11.98 4.903 0 8.877-5.364 8.877-11.98 0-6.616-3.974-11.98-8.877-11.98-4.902 0-8.876 5.364-8.876 11.98zm124.064-11.98H33.921c-1.268 0-2.114 1.426-2.114 2.853v18.255c0 1.711 1.057 2.852 2.114 2.852h90.247c1.268 0 2.114-1.426 2.114-2.852v-18.255c0-1.427-.846-2.853-2.114-2.853z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/lock.svg b/qqjf-Web/src/icons/svg/lock.svg new file mode 100644 index 0000000..74fee54 --- /dev/null +++ b/qqjf-Web/src/icons/svg/lock.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M119.88 49.674h-7.987V39.52C111.893 17.738 90.45.08 63.996.08 37.543.08 16.1 17.738 16.1 39.52v10.154H8.113c-4.408 0-7.987 2.94-7.987 6.577v65.13c0 3.637 3.57 6.577 7.987 6.577H119.88c4.407 0 7.987-2.94 7.987-6.577v-65.13c-.008-3.636-3.58-6.577-7.987-6.577zm-23.953 0H32.065V39.52c0-14.524 14.301-26.295 31.931-26.295 17.63 0 31.932 11.777 31.932 26.295v10.153z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/logo.svg b/qqjf-Web/src/icons/svg/logo.svg new file mode 100644 index 0000000..cd7e1d9 --- /dev/null +++ b/qqjf-Web/src/icons/svg/logo.svg @@ -0,0 +1 @@ +<svg t="1595484202945" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12292" width="32" height="32"><path d="M483.2 4.16c180.544-3.072 279.36 58.304 376.512 136.448 28.864 23.168 45.184 58.432 71.744 83.648l-0.96 1.92-102.656 52.864C774.4 184.768 584.96 82.56 422.4 128.64a462.72 462.72 0 0 0-117.568 49.792l-60.8-64.768c-6.528-6.528-20.48-15.488-15.936-23.872l40.832-24.896c30.4-15.936 62.08-29.248 94.72-39.808 26.24-8.96 55.616-12.608 84.608-17.92L483.2 4.16z m-26.944 1015.808c-57.856 0.832-114.304-23.104-155.456-42.88-140.544-67.456-231.296-172.928-280.96-331.584-46.144-147.712 5.184-317.184 65.792-408.32 15.552-23.424 30.848-51.84 52.8-68.736h1.984l77.696 82.688-3.968 3.968-28.864 37.824a477.376 477.376 0 0 0-53.76 117.504c-10.944 35.328-18.56 89.856-11.008 133.504 5.44 31.552 5.12 56.96 13.952 83.648 35.84 108.16 101.376 181.888 192.256 235.008 24.192 14.08 54.144 24.192 82.688 32.832l46.848 9.984v114.56z m112.576 0l1.024-116.544c47.552 0.128 96.32-23.936 128.512-42.88 108.608-63.744 174.528-148.16 204.16-291.712 8.576-41.408 5.12-102.144-4.928-138.432l-14.976-51.84 102.656-52.736c12.16 31.36 20.48 65.728 28.864 101.568 13.888 59.584 7.616 148.416-6.976 200.192-44.16 156.928-122.368 263.424-252.032 333.632-49.472 26.752-114.048 57.92-186.304 58.752z m180.352-673.28c110.976-2.816 79.552 158.208-21.952 115.584l-139.52 100.544c0.576 42.944-42.752 77.696-86.656 57.792-36.48-16.576-26.496-29.44-37.824-53.76l-164.416-57.792c-37.248 48.064-127.232-7.104-98.56-69.76 26.88-58.816 120.32-44.672 118.528 32.896l157.44 55.808a60.16 60.16 0 0 1 97.6-4.032l125.504-92.608c-15.808-57.6 22.784-81.92 49.856-84.608z m-266.048 2.048c32.896-6.016 62.528 11.264 71.744 47.808a54.72 54.72 0 0 1-1.984 33.792c1.472 0.512 58.112 34.752 60.8 41.856l-32.896 23.872-51.84-34.816c-26.112 19.84-48.384 11.392-70.72-1.024l-33.92 28.928-42.752-14.976c17.92-16.256 54.272-47.808 53.76-48.768-11.968-48.832 27.904-71.232 47.808-76.672z m269.056 80.64c22.016 7.296 36.864-28.864 13.952-40.832-30.912-10.24-44.16 30.848-14.016 40.832z m-500.16 13.952c25.6-6.336 37.184 39.168 7.04 41.856-26.24 2.304-34.176-35.2-7.04-41.856z m430.4 73.728l51.84 34.816c12.928-3.584 24.512-13.696 44.8-9.984 40.64 7.488 70.592 58.624 40.832 98.56-26.88 36.16-89.856 28.224-106.624-11.904-5.632-13.504 0-37.12-4.928-46.784l-58.816-39.872v-0.96l32.896-23.872z m-367.616 15.872l41.856 16-7.04 7.936-38.784 33.856c24.512 79.36-63.04 118.976-104.64 64.704-29.504-38.4-5.376-92.032 36.864-100.608 16.896-3.392 29.44 3.584 40.832 6.016l30.912-27.904z m205.248 9.984c-26.432 9.472-16.448 48.32 10.88 41.856 27.456-6.464 15.488-51.328-10.88-41.856z" fill="#1890FF" p-id="12293"></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/message.svg b/qqjf-Web/src/icons/svg/message.svg new file mode 100644 index 0000000..14ca817 --- /dev/null +++ b/qqjf-Web/src/icons/svg/message.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 20.967v59.59c0 11.59 8.537 20.966 19.075 20.966h28.613l1 26.477L76.8 101.523h32.125c10.538 0 19.075-9.377 19.075-20.966v-59.59C128 9.377 119.463 0 108.925 0h-89.85C8.538 0 0 9.377 0 20.967zm82.325 33.1c0-5.524 4.013-9.935 9.037-9.935 5.026 0 9.038 4.41 9.038 9.934 0 5.524-4.025 9.934-9.038 9.934-5.024 0-9.037-4.41-9.037-9.934zm-27.613 0c0-5.524 4.013-9.935 9.038-9.935s9.037 4.41 9.037 9.934c0 5.524-4.025 9.934-9.037 9.934-5.025 0-9.038-4.41-9.038-9.934zm-27.1 0c0-5.524 4.013-9.935 9.038-9.935s9.038 4.41 9.038 9.934c0 5.524-4.026 9.934-9.05 9.934-5.013 0-9.025-4.41-9.025-9.934z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/money.svg b/qqjf-Web/src/icons/svg/money.svg new file mode 100644 index 0000000..c1580de --- /dev/null +++ b/qqjf-Web/src/icons/svg/money.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M54.122 127.892v-28.68H7.513V87.274h46.609v-12.4H7.513v-12.86h38.003L.099 0h22.6l32.556 45.07c3.617 5.144 6.44 9.611 8.487 13.385 1.788-3.05 4.89-7.779 9.301-14.186L103.93 0h24.01L82.385 62.013h38.34v12.862h-46.41v12.4h46.41v11.937h-46.41v28.68H54.123z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/nested.svg b/qqjf-Web/src/icons/svg/nested.svg new file mode 100644 index 0000000..06713a8 --- /dev/null +++ b/qqjf-Web/src/icons/svg/nested.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M.002 9.2c0 5.044 3.58 9.133 7.998 9.133 4.417 0 7.997-4.089 7.997-9.133 0-5.043-3.58-9.132-7.997-9.132S.002 4.157.002 9.2zM31.997.066h95.981V18.33H31.997V.066zm0 45.669c0 5.044 3.58 9.132 7.998 9.132 4.417 0 7.997-4.088 7.997-9.132 0-3.263-1.524-6.278-3.998-7.91-2.475-1.63-5.524-1.63-7.998 0-2.475 1.632-4 4.647-4 7.91zM63.992 36.6h63.986v18.265H63.992V36.6zm-31.995 82.2c0 5.043 3.58 9.132 7.998 9.132 4.417 0 7.997-4.089 7.997-9.132 0-5.044-3.58-9.133-7.997-9.133s-7.998 4.089-7.998 9.133zm31.995-9.131h63.986v18.265H63.992V109.67zm0-27.404c0 5.044 3.58 9.133 7.998 9.133 4.417 0 7.997-4.089 7.997-9.133 0-3.263-1.524-6.277-3.998-7.909-2.475-1.631-5.524-1.631-7.998 0-2.475 1.632-4 4.646-4 7.91zm31.995-9.13h31.991V91.4H95.987V73.135z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/out-storage.svg b/qqjf-Web/src/icons/svg/out-storage.svg new file mode 100644 index 0000000..c655390 --- /dev/null +++ b/qqjf-Web/src/icons/svg/out-storage.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1623138991555" class="icon" viewBox="0 0 1189 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3253" width="37.15625" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M702.776889 539.932444l178.716444-137.955555a17.237333 17.237333 0 0 0 0-27.306667l-178.716444-137.955555a17.237333 17.237333 0 0 0-27.761778 13.653333V329.955556c-168.96 18.005333-293.205333 142.592-278.869333 281.742222 45.795556-89.685333 151.04-156.16 278.528-162.133334l0.341333 0.312889v76.430223a17.237333 17.237333 0 0 0 27.761778 13.653333zM98.816 168.504889H461.937778v56.888889H98.816zM98.816 362.609778h246.613333v56.888889h-246.613333zM98.816 556.743111h165.973333v56.888889H98.816z" p-id="3254"></path><path d="M838.769778 636.017778L835.555556 824.888889H56.888889V56.888889h778.296889v85.646222a26.481778 26.481778 0 0 0 0.768 3.754667h55.381333a26.481778 26.481778 0 0 0 0.739556-3.754667V34.844444A34.816 34.816 0 0 0 857.372444 0H34.702222A34.816 34.816 0 0 0 0 34.844444v812.088889A34.816 34.816 0 0 0 34.702222 881.777778h822.698667a34.702222 34.702222 0 0 0 34.702222-34.360889l3.584-211.399111z" p-id="3255"></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/outbound.svg b/qqjf-Web/src/icons/svg/outbound.svg new file mode 100644 index 0000000..251af61 --- /dev/null +++ b/qqjf-Web/src/icons/svg/outbound.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621487819085" class="icon" viewBox="0 0 1189 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5547" xmlns:xlink="http://www.w3.org/1999/xlink" width="232.2265625" height="200"><defs><style type="text/css"></style></defs><path d="M702.776889 539.932444l178.716444-137.955555a17.237333 17.237333 0 0 0 0-27.306667l-178.716444-137.955555a17.237333 17.237333 0 0 0-27.761778 13.653333V329.955556c-168.96 18.005333-293.205333 142.592-278.869333 281.742222 45.795556-89.685333 151.04-156.16 278.528-162.133334l0.341333 0.312889v76.430223a17.237333 17.237333 0 0 0 27.761778 13.653333zM98.816 168.504889H461.937778v56.888889H98.816zM98.816 362.609778h246.613333v56.888889h-246.613333zM98.816 556.743111h165.973333v56.888889H98.816z" p-id="5548"></path><path d="M838.769778 636.017778L835.555556 824.888889H56.888889V56.888889h778.296889v85.646222a26.481778 26.481778 0 0 0 0.768 3.754667h55.381333a26.481778 26.481778 0 0 0 0.739556-3.754667V34.844444A34.816 34.816 0 0 0 857.372444 0H34.702222A34.816 34.816 0 0 0 0 34.844444v812.088889A34.816 34.816 0 0 0 34.702222 881.777778h822.698667a34.702222 34.702222 0 0 0 34.702222-34.360889l3.584-211.399111z" p-id="5549"></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/password.svg b/qqjf-Web/src/icons/svg/password.svg new file mode 100644 index 0000000..e291d85 --- /dev/null +++ b/qqjf-Web/src/icons/svg/password.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M108.8 44.322H89.6v-5.36c0-9.04-3.308-24.163-25.6-24.163-23.145 0-25.6 16.881-25.6 24.162v5.361H19.2v-5.36C19.2 15.281 36.798 0 64 0c27.202 0 44.8 15.281 44.8 38.961v5.361zm-32 39.356c0-5.44-5.763-9.832-12.8-9.832-7.037 0-12.8 4.392-12.8 9.832 0 3.682 2.567 6.808 6.407 8.477v11.205c0 2.718 2.875 4.962 6.4 4.962 3.524 0 6.4-2.244 6.4-4.962V92.155c3.833-1.669 6.393-4.795 6.393-8.477zM128 64v49.201c0 8.158-8.645 14.799-19.2 14.799H19.2C8.651 128 0 121.359 0 113.201V64c0-8.153 8.645-14.799 19.2-14.799h89.6c10.555 0 19.2 6.646 19.2 14.799z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/pdf.svg b/qqjf-Web/src/icons/svg/pdf.svg new file mode 100644 index 0000000..957aa0c --- /dev/null +++ b/qqjf-Web/src/icons/svg/pdf.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="128" height="128"><path d="M869.073 277.307H657.111V65.344l211.962 211.963zm-238.232 26.27V65.344l-476.498-.054v416.957h714.73v-178.67H630.841zm-335.836 360.57c-5.07-3.064-10.944-5.133-17.61-6.201-6.67-1.064-13.603-1.6-20.81-1.6h-48.821v85.641h48.822c7.206 0 14.14-.532 20.81-1.6 6.665-1.065 12.54-3.133 17.609-6.202 5.064-3.063 9.134-7.406 12.208-13.007 3.065-5.602 4.6-12.937 4.6-22.011 0-9.07-1.535-16.408-4.6-22.01-3.074-5.603-7.144-9.94-12.208-13.01zM35.82 541.805v416.904h952.358V541.805H35.821zm331.421 191.179c-3.6 11.071-9.343 20.879-17.209 29.413-7.874 8.542-18.078 15.408-30.617 20.61-12.544 5.206-27.747 7.807-45.621 7.807h-66.036v102.45h-62.831V607.517h128.867c17.874 0 33.077 2.6 45.62 7.802 12.541 5.207 22.745 12.076 30.618 20.615 7.866 8.538 13.604 18.277 17.21 29.212 3.6 10.943 5.401 22.278 5.401 34.018 0 11.477-1.8 22.752-5.402 33.819zM644.9 806.417c-5.343 17.61-13.408 32.818-24.212 45.627-10.807 12.803-24.283 22.879-40.423 30.213-16.146 7.343-35.155 11.007-57.03 11.007h-123.26V607.518h123.26c18.41 0 35.552 2.941 51.428 8.808 15.873 5.869 29.618 14.671 41.22 26.412 11.608 11.744 20.674 26.411 27.217 44.02 6.535 17.61 9.803 38.288 9.803 62.035 0 20.81-2.67 40.02-8.003 57.624zm245.362-146.07h-138.07v66.03h119.66v48.829h-119.66v118.058h-62.83V607.518h200.9v52.829h-.001zm-318.2 25.611c-6.402-8.266-14.877-14.604-25.412-19.01-10.544-4.402-23.551-6.602-39.019-6.602h-44.825v180.088h56.029c9.07 0 17.872-1.463 26.415-4.401 8.535-2.932 16.14-7.802 22.812-14.609 6.665-6.8 12.007-15.667 16.007-26.61 4.003-10.94 6.003-24.275 6.003-40.021 0-14.408-1.4-27.416-4.202-39.019-2.8-11.607-7.406-21.542-13.808-29.816zm0 0"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/people.svg b/qqjf-Web/src/icons/svg/people.svg new file mode 100644 index 0000000..2bd54ae --- /dev/null +++ b/qqjf-Web/src/icons/svg/people.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M104.185 95.254c8.161 7.574 13.145 17.441 13.145 28.28 0 1.508-.098 2.998-.285 4.466h-10.784c.238-1.465.403-2.948.403-4.465 0-8.983-4.36-17.115-11.419-23.216C86 104.66 75.355 107.162 64 107.162c-11.344 0-21.98-2.495-31.22-6.83-7.064 6.099-11.444 14.218-11.444 23.203 0 1.517.165 3 .403 4.465H10.955a35.444 35.444 0 0 1-.285-4.465c0-10.838 4.974-20.713 13.127-28.291C9.294 85.42.003 70.417.003 53.58.003 23.99 28.656.001 64 .001s63.997 23.988 63.997 53.58c0 16.842-9.299 31.85-23.812 41.673zM64 36.867c-29.454 0-53.33-10.077-53.33 15.342 0 25.418 23.876 46.023 53.33 46.023 29.454 0 53.33-20.605 53.33-46.023 0-25.419-23.876-15.342-53.33-15.342zm24.888 25.644c-3.927 0-7.111-2.665-7.111-5.953 0-3.288 3.184-5.954 7.11-5.954 3.928 0 7.111 2.666 7.111 5.954s-3.183 5.953-7.11 5.953zm-3.556 16.372c0 4.11-9.55 7.442-21.332 7.442-11.781 0-21.332-3.332-21.332-7.442 0-1.06.656-2.064 1.8-2.976 3.295 2.626 10.79 4.465 19.532 4.465 8.743 0 16.237-1.84 19.531-4.465 1.145.912 1.801 1.916 1.801 2.976zm-46.22-16.372c-3.927 0-7.11-2.665-7.11-5.953 0-3.288 3.183-5.954 7.11-5.954 3.927 0 7.111 2.666 7.111 5.954s-3.184 5.953-7.11 5.953z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/peoples.svg b/qqjf-Web/src/icons/svg/peoples.svg new file mode 100644 index 0000000..aab852e --- /dev/null +++ b/qqjf-Web/src/icons/svg/peoples.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M95.648 118.762c0 5.035-3.563 9.121-7.979 9.121H7.98c-4.416 0-7.979-4.086-7.979-9.121C0 100.519 15.408 83.47 31.152 76.75c-9.099-6.43-15.216-17.863-15.216-30.987v-9.128c0-20.16 14.293-36.518 31.893-36.518s31.894 16.358 31.894 36.518v9.122c0 13.137-6.123 24.556-15.216 30.993 15.738 6.726 31.141 23.769 31.141 42.012z"/><path d="M106.032 118.252h15.867c3.376 0 6.101-3.125 6.101-6.972 0-13.957-11.787-26.984-23.819-32.123 6.955-4.919 11.638-13.66 11.638-23.704v-6.985c0-15.416-10.928-27.926-24.39-27.926-1.674 0-3.306.193-4.89.561 1.936 4.713 3.018 9.974 3.018 15.526v9.121c0 13.137-3.056 23.111-11.066 30.993 14.842 4.41 27.312 23.42 27.541 41.509z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/qq.svg b/qqjf-Web/src/icons/svg/qq.svg new file mode 100644 index 0000000..ee13d4e --- /dev/null +++ b/qqjf-Web/src/icons/svg/qq.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M18.448 57.545l-.244-.744-.198-.968-.132-.53v-2.181l.236-.859.24-.908.317-.953.428-1.06.561-1.103.794-1.104v-.773l.077-.724.123-.984.34-1.106.313-1.194.25-.548.289-.511.371-.569.405-.423v-2.73l.234-1.407.236-1.633.42-1.955.577-2.035.43-1.118.426-1.217.468-1.135.559-1.216.57-1.332.655-1.247.737-1.331.929-1.33.43-.762.457-.624.995-1.406 1.025-1.403 1.163-1.444 1.246-1.405 1.352-1.384 1.41-1.423 1.708-1.536 1.083-.934 1.322-1.008 1.34-.89 1.448-.855 1.392-.76 1.57-.63 1.667-.775 1.657-.532 1.653-.552 1.787-.548 1.785-.417 1.876-.347L59.128.68l1.879-.245 1.876-.252 2.002-.106h5.912l1.97.243 1.981.231 2.019.207 1.874.441 1.979.413 1.857.475 2.035.53 1.862.646 1.782.738 1.904.78 1.736.853 1.689.95 1.655 1.044 1.425.971.662.548.693.401 1.323 1.1 1.115 1.064 1.112 1.1 1.083 1.214.894 1.178 1.064 1.217.74 1.306.752 1.162.798 1.352.661 1.175 1.113 2.489.546 1.286.428 1.192.428 1.294.384 1.217.267 1.047.347 1.231.607 2.198.388 1.924.253 1.861.217 1.497.342 2.28.077.362.274.41.737 1.18.473.8.42.832.534.892.472 1.07.307 1.093.334 1.2.252 1.232.115.605.106.746v.648l-.106.643v.8l-.192.774-.35 1.5-.403.76-.299.852v.213l.142.264.4.623 1.746 2.53 1.377 1.9.66 1.267.889 1.389.774 1.52.893 1.627.894 1.828 1.006 2.069.567 1.268.518 1.239.447 1.307.44 1.175.336 1.235.342 1.16.432 2.261.343 2.31.235 2.05v2.891l-.158 1.025-.226 1.768-.308 1.59-.48 1.44-.18.588-.336.707-.28.493-.375.607-.33.383-.42.494-.375.4-.401.34-.48.207-.432.207-.355.114h-.543l-.346-.114-.66-.32-.302-.212-.317-.223-.347-.304-.35-.342-.579-.63-.684-.89-.539-.917-.538-.734-.526-.855-.741-1.517-.833-1.579-.098-.055h-.138l-.338.247-.196.415-.326.516-.567 1.533-.856 2.182-1.096 2.626-.824 1.308-.864 1.366-1.027 1.536-1.09 1.503-.557.68-.676.743-1.555 1.497.136.135.21.214.777.446 3.235 1.524 1.41.779 1.347.756 1.332.953 1.187.982.574.443.432.511.445.593.367.643.198.533.242.64.105.554.115.647-.115.433v.44l-.105.454-.242.415-.092.325-.22.394-.587.784-.543.627-.42.47-.35.348-.893.638-1.01.556-1.077.532-1.155.511-1.287.495-.693.207-.608.167-1.496.342-1.545.325-1.552.323-1.689.27-1.74.072-1.785.21h-5.539l-1.998-.114-1.86-.168-2.005-.27-1.99-.209-2.095-.286-2.03-.495-1.981-.374-1.968-.552-2.019-.707-1.98-.585-1.044-.342-.927-.323-.586-.223-.582-.12h-1.647l-1.904-.131-.962-.096-1.24-.135-.795.705-1.085.665-1.471.701-1.628.875-.99.475-1.033.376-2.281.914-1.24.305-1.3.343-1.803.344-1.13.086-1.193.1-1.246.135-1.45.053h-5.926l-3.346-.053-3.25-.321-1.644-.23-1.589-.23-1.546-.227-1.547-.305-1.442-.456-1.434-.325-1.294-.51-1.223-.474-1.142-.533-.99-.583-.984-.71-.336-.343-.44-.415-.334-.362-.3-.417-.278-.415-.215-.42-.311-.89-.109-.46-.138-.51v-.473l.138-.533v-.53l.109-.53v-1.069l.052-.564.259-.647.215-.646.39-.779.286-.3.236-.348.615-.738.49-.38.464-.266.428-.338.676-.21.543-.324.676-.341.77-.227.775-.231.897-.192.85-.11 1.008-.13 1.093-.081.284-.092h.063l.137-.115v-.13l-.2-.266-.58-.27-1.45-1.231-.975-.761-1.127-.967-1.136-1.082-1.181-1.382-1.36-1.558-.508-.843-.672-.87-.58-1.007-.522-1.1-.704-1.047-.459-1.194-.547-1.192-.546-1.33-.397-1.273-.378-1.575-.112-.057h-.115l-.059-.113h-.14l-.23.113-.114.057-.158.264-.057.321-.119.286-.206.477-.664 1.157-.345.701-.546.612-.58.736-.641.816-.677.724-.795.701-.734.658-.814.524-.89.546-.855.325-1.008.247-.99.095h-.233l-.228-.095-.18-.384-.29-.188-.38-.912-.237-.493-.255-.707-.21-.734-.113-.724-.313-1.648-.12-.972v-3.185l.12-2.379.196-1.214.23-1.252.21-1.347.374-1.254.42-1.443.431-1.407.578-1.448.545-1.38.754-1.4.699-1.52.855-1.425 1.006-1.538 1.023-1.382 1.069-1.538.891-1.071 1.142-1.227 1.202-1.237.56-.59.678-.662.985-.836 1.012-.853 1.647-1.446 1.242-.889z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/record-chart.svg b/qqjf-Web/src/icons/svg/record-chart.svg new file mode 100644 index 0000000..39d98c0 --- /dev/null +++ b/qqjf-Web/src/icons/svg/record-chart.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1623139100922" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6811" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M846.5 990h-669c-40.3 0-73-32.7-73-73V107c0-40.3 32.7-73 73-73h669c40.3 0 73 32.7 73 73v810c0 40.3-32.7 73-73 73z m-669-900c-9.4 0-17 7.6-17 17v810c0 9.4 7.6 17 17 17h669c9.4 0 17-7.6 17-17V107c0-9.4-7.6-17-17-17h-669z" p-id="6812"></path><path d="M316.2 356.7h192v56h-192zM316.6 228.8h256v56h-256zM225 62.9h56v898.2h-56zM726 897.1h-50c-40.3 0-73-32.7-73-73V357.5l98-98 98 98v466.6c0 40.2-32.7 73-73 73z m-67-516.4v443.4c0 9.4 7.6 17 17 17h50c9.4 0 17-7.6 17-17V380.7l-42-42-42 42z" p-id="6813"></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/search.svg b/qqjf-Web/src/icons/svg/search.svg new file mode 100644 index 0000000..84233dd --- /dev/null +++ b/qqjf-Web/src/icons/svg/search.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M124.884 109.812L94.256 79.166c-.357-.357-.757-.629-1.129-.914a50.366 50.366 0 0 0 8.186-27.59C101.327 22.689 78.656 0 50.67 0 22.685 0 0 22.688 0 50.663c0 27.989 22.685 50.663 50.656 50.663 10.186 0 19.643-3.03 27.6-8.201.286.385.557.771.9 1.114l30.628 30.632a10.633 10.633 0 0 0 7.543 3.129c2.728 0 5.457-1.043 7.543-3.115 4.171-4.157 4.171-10.915.014-15.073M50.671 85.338C31.557 85.338 16 69.78 16 50.663c0-19.102 15.557-34.661 34.67-34.661 19.115 0 34.657 15.559 34.657 34.675 0 19.102-15.557 34.661-34.656 34.661"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/shopping.svg b/qqjf-Web/src/icons/svg/shopping.svg new file mode 100644 index 0000000..87513e7 --- /dev/null +++ b/qqjf-Web/src/icons/svg/shopping.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M42.913 101.36c1.642 0 3.198.332 4.667.996a12.28 12.28 0 0 1 3.89 2.772c1.123 1.184 1.987 2.582 2.592 4.193.605 1.612.908 3.318.908 5.118 0 1.8-.303 3.507-.908 5.118-.605 1.611-1.469 3.01-2.593 4.194a13.3 13.3 0 0 1-3.889 2.843 10.582 10.582 0 0 1-4.667 1.066c-1.729 0-3.306-.355-4.732-1.066a13.604 13.604 0 0 1-3.825-2.843c-1.123-1.185-1.988-2.583-2.593-4.194a14.437 14.437 0 0 1-.907-5.118c0-1.8.302-3.506.907-5.118.605-1.61 1.47-3.009 2.593-4.193a12.515 12.515 0 0 1 3.825-2.772c1.426-.664 3.003-.996 4.732-.996zm53.932.285c1.643 0 3.22.331 4.733.995a11.386 11.386 0 0 1 3.889 2.772c1.08 1.185 1.945 2.583 2.593 4.194.648 1.61.972 3.317.972 5.118 0 1.8-.324 3.506-.972 5.117-.648 1.611-1.513 3.01-2.593 4.194a12.253 12.253 0 0 1-3.89 2.843 11 11 0 0 1-4.732 1.066 10.58 10.58 0 0 1-4.667-1.066 12.478 12.478 0 0 1-3.824-2.843c-1.08-1.185-1.945-2.583-2.593-4.194a13.581 13.581 0 0 1-.973-5.117c0-1.801.325-3.507.973-5.118.648-1.611 1.512-3.01 2.593-4.194a11.559 11.559 0 0 1 3.824-2.772 11.212 11.212 0 0 1 4.667-.995zm21.781-80.747c2.42 0 4.3.355 5.64 1.066 1.34.71 2.29 1.587 2.852 2.63a6.427 6.427 0 0 1 .778 3.34c-.044 1.185-.195 2.204-.454 3.057-.26.853-.8 2.606-1.62 5.26a589.268 589.268 0 0 1-2.788 8.743 1236.373 1236.373 0 0 0-3.047 9.453c-.994 3.128-1.75 5.592-2.269 7.393-1.123 3.79-2.55 6.42-4.278 7.89-1.728 1.469-3.846 2.203-6.352 2.203H39.023l1.945 12.795h65.342c4.148 0 6.223 1.943 6.223 5.828 0 1.896-.41 3.53-1.232 4.905-.821 1.374-2.442 2.061-4.862 2.061H38.505c-1.729 0-3.176-.426-4.343-1.28-1.167-.852-2.14-1.966-2.917-3.34a21.277 21.277 0 0 1-1.88-4.478 44.128 44.128 0 0 1-1.102-4.55c-.087-.568-.324-1.942-.713-4.122-.39-2.18-.865-4.904-1.426-8.174l-1.88-10.947c-.692-4.027-1.383-8.079-2.075-12.154-1.642-9.572-3.5-20.234-5.574-31.986H6.87c-1.296 0-2.377-.356-3.24-1.067a9.024 9.024 0 0 1-2.14-2.558 10.416 10.416 0 0 1-1.167-3.2C.108 8.53 0 7.488 0 6.54c0-1.896.583-3.46 1.75-4.69C2.917.615 4.494 0 6.482 0h13.095c1.728 0 3.111.284 4.148.853 1.037.569 1.858 1.28 2.463 2.132a8.548 8.548 0 0 1 1.297 2.701c.26.948.475 1.754.648 2.417.173.758.346 1.825.519 3.199.173 1.374.345 2.772.518 4.193.26 1.706.519 3.507.778 5.403h88.678z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/size.svg b/qqjf-Web/src/icons/svg/size.svg new file mode 100644 index 0000000..ddb25b8 --- /dev/null +++ b/qqjf-Web/src/icons/svg/size.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 54.857h54.796v18.286H36.531V128H18.265V73.143H0V54.857zm127.857-36.571H91.935V128H72.456V18.286H36.534V0h91.326l-.003 18.286z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/skill.svg b/qqjf-Web/src/icons/svg/skill.svg new file mode 100644 index 0000000..a3b7312 --- /dev/null +++ b/qqjf-Web/src/icons/svg/skill.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M31.652 93.206h33.401c1.44 2.418 3.077 4.663 4.93 6.692h-38.33v-6.692zm0-10.586h28.914a44.8 44.8 0 0 1-1.264-6.688h-27.65v6.688zm0-17.27H59.39c.288-2.286.714-4.532 1.34-6.687H31.65v6.687h.003zm53.913 44.84v5.85c0 2.798-2.095 5.075-4.667 5.075h-70.07c-2.576 0-4.663-2.277-4.663-5.075V31.26l23.22-20.96v22.25H17.16v6.688h18.39V6.688h45.348c2.576 0 4.667 2.277 4.667 5.066v20.009c1.987-.675 4.053-1.128 6.17-1.445v-18.56C91.738 5.28 86.874 0 80.902 0H31.15L0 28.118v87.917c0 6.48 4.859 11.759 10.832 11.759h70.07c5.974 0 10.837-5.27 10.837-11.759v-4.41c-2.117-.312-4.183-.765-6.17-1.435h-.004zM23.279 58.667h-7.96v6.688h7.96v-6.688zm-7.956 41.23h7.96v-6.691h-7.96v6.692zm7.956-23.96h-7.96v6.687h7.96v-6.688zm89.718-15.042l-4.896-4.07-12.447 17.613-11.19-9.305-3.762 5.311 16.091 13.38 16.204-22.929zM128 70.978c0-18.632-13.97-33.782-31.147-33.782-17.168 0-31.135 15.155-31.135 33.782 0 18.628 13.97 33.783 31.135 33.783 17.172 0 31.143-15.15 31.143-33.783H128zm-6.17 0c0 14.933-11.203 27.1-24.981 27.1-13.77 0-24.987-12.158-24.987-27.1 0-14.941 11.195-27.099 24.987-27.099 13.778 0 24.982 12.158 24.982 27.1z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/star.svg b/qqjf-Web/src/icons/svg/star.svg new file mode 100644 index 0000000..6cf86e6 --- /dev/null +++ b/qqjf-Web/src/icons/svg/star.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M70.66 4.328l14.01 29.693c1.088 2.29 3.177 3.882 5.603 4.25l31.347 4.76c6.087.926 8.528 8.756 4.117 13.247L103.05 79.395c-1.75 1.78-2.544 4.352-2.132 6.867l5.352 32.641c1.043 6.337-5.33 11.182-10.778 8.19l-28.039-15.409a7.13 7.13 0 0 0-6.91 0l-28.039 15.41c-5.448 2.99-11.821-1.854-10.777-8.19l5.352-32.642c.415-2.515-.387-5.088-2.136-6.867L2.264 56.278C-2.146 51.787.286 43.957 6.38 43.031l31.343-4.76c2.419-.368 4.51-1.96 5.595-4.25L57.334 4.328c2.728-5.77 10.605-5.77 13.325 0z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/storage.svg b/qqjf-Web/src/icons/svg/storage.svg new file mode 100644 index 0000000..eb6b41b --- /dev/null +++ b/qqjf-Web/src/icons/svg/storage.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621487921042" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8725" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M747.08 489.45A212.73 212.73 0 1 0 534.27 276.7c0 45.56-0.34 182.31-0.35 183.68l-0.07 27.62 28.06 0.26c1.29-0.02 129.76 1.19 185.17 1.19zM590.78 276.7c0-86.67 70.12-157.18 156.3-157.18S903.39 190 903.39 276.7s-70.12 157.18-156.31 157.18c-39.22 0-115.39-0.61-156.58-1 0.1-42.66 0.28-123.22 0.28-156.18zM277.06 534.11a212.71 212.71 0 1 0 212.82 212.75c0-45.56 0.34-182.31 0.34-183.68l0.07-27.59-28.06-0.26c-1.28-0.02-129.75-1.22-185.17-1.22z m156.3 212.75c0 86.64-70.12 157.13-156.3 157.13S120.81 833.5 120.81 746.86s70.1-157.18 156.25-157.18c39.22 0 115.4 0.61 156.58 1-0.1 42.66-0.27 123.22-0.27 156.18zM489.88 276.7A212.81 212.81 0 0 0 126.4 126.46a212.74 212.74 0 0 0 150.66 363c55.42 0 183.88-1.2 185.18-1.21l28.06-0.26-0.07-27.59c-0.01-1.4-0.35-138.15-0.35-183.7zM277.06 433.88c-86.16 0-156.25-70.51-156.25-157.18s70.1-157.18 156.25-157.18S433.37 190 433.37 276.7c0 33 0.18 113.52 0.28 156.22-41.19 0.35-117.37 0.96-156.59 0.96zM747.08 534.11c-55.41 0-183.88 1.2-185.18 1.21l-28.06 0.26 0.07 27.59c0 1.38 0.35 138.13 0.35 183.68a212.84 212.84 0 1 0 212.82-212.74z m0 369.88c-86.19 0-156.3-70.49-156.3-157.13 0-33-0.18-113.52-0.28-156.22 41.19-0.35 117.36-1 156.58-1 86.19 0 156.31 70.51 156.31 157.18S833.27 904 747.08 904z" p-id="8726"></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/sys.svg b/qqjf-Web/src/icons/svg/sys.svg new file mode 100644 index 0000000..e854f49 --- /dev/null +++ b/qqjf-Web/src/icons/svg/sys.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621487976998" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10630" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M446.475758 660.107444C442.182118 660.107444 437.789395 659.281744 433.561811 657.465204 371.832486 631.240975 331.934666 570.865798 331.934666 503.620797 331.934666 411.538743 406.610966 336.59822 498.428796 336.59822 590.246626 336.59822 664.922926 411.538743 664.922926 503.620797 664.922926 569.874958 626.907702 630.118023 568.051813 657.101897 551.43873 664.698336 531.853129 657.465204 524.223661 640.852122 516.66025 624.272068 523.926409 604.653438 540.506464 597.056999 575.945504 580.807225 598.866933 544.113121 598.866933 503.620797 598.866933 447.935595 553.816746 402.654212 498.428796 402.654212 443.040846 402.654212 397.990659 447.935595 397.990659 503.620797 397.990659 544.311289 422.101097 580.840253 459.422733 596.660663 476.200955 603.827738 484.02859 623.215172 476.894543 639.993394 471.544007 652.544033 459.323649 660.107444 446.475758 660.107444" p-id="10631"></path><path d="M542.851451 996.708967 454.039169 996.708967C408.724758 996.708967 371.865514 959.849723 371.865514 914.56834L371.865514 821.561502C363.245207 818.985318 353.435892 815.847658 344.088969 812.577887L293.622191 863.011637C262.608902 894.057954 208.476016 894.057954 177.462727 863.011637L114.643478 800.225416C82.606322 768.18826 82.606322 716.070081 114.61045 684.032925L138.985112 659.691291C151.899058 646.777345 172.772752 646.777345 185.686698 659.691291 198.600645 672.605238 198.600645 693.478932 185.686698 706.392878L161.345065 730.734512C155.069746 737.042859 155.069746 747.215482 161.345065 753.523829L224.164314 816.31005C228.259786 820.405522 233.048845 821.033054 235.525945 821.033054 238.036073 821.033054 242.792104 820.405522 246.887576 816.31005L312.778429 750.452226C322.686828 740.510799 337.747594 737.934615 350.463372 744.044794 365.788363 751.410037 401.029235 761.41752 413.282622 764.654264 427.81494 768.452484 437.921507 781.564598 437.921507 796.559308L437.921507 914.56834C437.921507 923.419843 445.154638 930.652974 454.039169 930.652974L542.851451 930.652974C551.735982 930.652974 558.936086 923.419843 558.936086 914.56834L558.936086 796.559308C558.936086 780.70587 570.23166 767.065308 585.820875 764.125816 606.463372 760.228512 626.841646 753.457773 646.427248 744.044794 659.143027 737.934615 674.170765 740.510799 684.079164 750.452226L749.970017 816.31005C754.098516 820.405522 758.854548 821.033054 761.331648 821.033054 763.808747 821.033054 768.597807 820.405522 772.726306 816.31005L835.545555 753.523829C841.787847 747.215482 841.787847 737.042859 835.512527 730.734512L769.654703 664.876687C759.746304 654.968288 757.17012 639.841466 763.247271 627.191743 772.66025 607.672197 779.43099 587.293923 783.328293 566.651426 786.267785 551.029183 799.908347 539.733609 815.761786 539.733609L914.647607 539.733609C923.532138 539.733609 930.765269 532.500477 930.765269 523.648974L930.765269 434.803664C930.765269 425.952161 923.532138 418.71903 914.647607 418.71903L815.761786 418.71903C799.908347 418.71903 786.267785 407.423455 783.328293 391.834241 779.43099 371.257799 772.66025 350.846497 763.247271 331.260895 757.17012 318.611173 759.746304 303.48435 769.654703 293.575951L835.545555 227.718127C841.787847 221.409779 841.787847 211.237156 835.512527 204.928809L772.726306 142.142588C768.597807 138.047117 763.808747 137.419585 761.331648 137.419585 758.854548 137.419585 754.098516 138.047117 749.970017 142.142588L684.079164 208.000413C674.170765 217.94184 659.143027 220.518023 646.427248 214.407844 626.841646 204.994865 606.463372 198.224126 585.820875 194.326822 570.23166 191.387331 558.936086 177.746768 558.936086 161.89333L558.936086 82.130719C558.936086 73.246188 551.735982 66.046084 542.851451 66.046084L454.039169 66.046084C445.154638 66.046084 437.921507 73.246188 437.921507 82.130719L437.921507 161.89333C437.921507 177.317404 427.220436 190.759799 412.126642 194.095626 397.495239 197.398426 369.025106 205.490285 350.463372 214.407844 337.747594 220.518023 322.686828 217.94184 312.778429 208.000413L246.920604 142.142588C242.792104 138.047117 238.036073 137.419585 235.525945 137.419585 233.048845 137.419585 228.259786 138.047117 224.164314 142.142588L161.345065 204.928809C155.069746 211.237156 155.069746 221.409779 161.345065 227.718127L227.20289 293.575951C236.913121 303.286182 239.621417 317.950613 233.973629 330.468223 227.665282 344.505122 217.162379 372.810115 213.562327 391.834241 210.622836 407.423455 196.982273 418.71903 181.095807 418.71903L82.209986 418.71903C73.358483 418.71903 66.125352 425.952161 66.125352 434.803664L66.125352 523.648974C66.125352 532.500477 73.358483 539.733609 82.209986 539.733609L111.935183 539.733609C130.166637 539.733609 144.963179 554.497123 144.963179 572.761605 144.963179 591.026087 130.166637 605.789601 111.935183 605.789601L82.209986 605.789601C36.928603 605.789601 0.069359 568.930357 0.069359 523.648974L0.069359 434.803664C0.069359 389.522281 36.928603 352.663037 82.209986 352.663037L155.433054 352.663037C158.405573 342.820694 161.807457 333.176519 165.011173 324.75438L114.643478 274.419714C82.606322 242.382557 82.606322 190.264379 114.61045 158.227222L177.462727 95.441001C208.476016 64.394685 262.608902 64.394685 293.622191 95.441001L343.857773 145.643556C353.336808 142.10956 363.047039 139.004928 371.865514 136.395717L371.865514 82.130719C371.865514 36.849336 408.724758-0.009908 454.039169-0.009908L542.851451-0.009908C588.165862-0.009908 624.992078 36.849336 624.992078 82.130719L624.992078 135.834241C634.537169 138.542536 643.983176 141.713224 653.297071 145.41236L703.26843 95.441001C734.24869 64.394685 788.414605 64.394685 819.427893 95.441001L882.247142 158.227222C914.251271 190.264379 914.251271 242.382557 882.247142 274.419714L832.275784 324.391072C835.941891 333.704967 839.112579 343.150974 841.853903 352.663037L914.647607 352.663037C959.962018 352.663037 996.821262 389.522281 996.821262 434.803664L996.821262 523.648974C996.821262 568.930357 959.962018 605.789601 914.647607 605.789601L841.853903 605.789601C839.112579 615.301664 835.941891 624.747671 832.275784 634.094594L882.247142 684.032925C914.251271 716.070081 914.251271 768.18826 882.247142 800.225416L819.427893 863.011637C788.414605 894.057954 734.281718 894.057954 703.235402 863.011637L653.297071 813.040279C643.983176 816.739414 634.537169 819.910102 624.992078 822.618398L624.992078 914.56834C624.992078 959.849723 588.165862 996.708967 542.851451 996.708967" p-id="10632"></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/tab.svg b/qqjf-Web/src/icons/svg/tab.svg new file mode 100644 index 0000000..b4b48e4 --- /dev/null +++ b/qqjf-Web/src/icons/svg/tab.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M78.921.052H49.08c-1.865 0-3.198 1.599-3.198 3.464v6.661c0 1.865 1.6 3.464 3.198 3.464h29.84c1.865 0 3.198-1.599 3.198-3.464V3.516C82.385 1.65 80.786.052 78.92.052zm45.563 0H94.642c-1.865 0-3.464 1.599-3.464 3.464v6.661c0 1.865 1.599 3.464 3.464 3.464h29.842c1.865-.266 3.464-1.599 3.464-3.464V3.516c0-1.865-1.599-3.464-3.464-3.464zm0 22.382H40.02c-1.866 0-3.464-1.599-3.464-3.464V3.516c0-1.865-1.599-3.464-3.464-3.464H3.516C1.65.052.052 1.651.052 3.516V124.75c0 1.598 1.599 3.197 3.464 3.197h120.968c1.865 0 3.464-1.599 3.464-3.464V25.898c0-1.865-1.599-3.464-3.464-3.464z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/table.svg b/qqjf-Web/src/icons/svg/table.svg new file mode 100644 index 0000000..0e3dc9d --- /dev/null +++ b/qqjf-Web/src/icons/svg/table.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M.006.064h127.988v31.104H.006V.064zm0 38.016h38.396v41.472H.006V38.08zm0 48.384h38.396v41.472H.006V86.464zM44.802 38.08h38.396v41.472H44.802V38.08zm0 48.384h38.396v41.472H44.802V86.464zM89.598 38.08h38.396v41.472H89.598zm0 48.384h38.396v41.472H89.598z"/><path d="M.006.064h127.988v31.104H.006V.064zm0 38.016h38.396v41.472H.006V38.08zm0 48.384h38.396v41.472H.006V86.464zM44.802 38.08h38.396v41.472H44.802V38.08zm0 48.384h38.396v41.472H44.802V86.464zM89.598 38.08h38.396v41.472H89.598zm0 48.384h38.396v41.472H89.598z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/theme.svg b/qqjf-Web/src/icons/svg/theme.svg new file mode 100644 index 0000000..5982a2f --- /dev/null +++ b/qqjf-Web/src/icons/svg/theme.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M125.5 36.984L95.336 2.83C93.735 1.018 91.565 0 89.3 0c-2.263 0-4.433 1.018-6.033 2.83l-3.786 4.286c-1.6 1.812-3.77 2.83-6.032 2.831H54.553c-2.263 0-4.434-1.018-6.033-2.83L44.734 2.83C43.134 1.018 40.964 0 38.701 0c-2.263 0-4.434 1.018-6.034 2.83L2.5 36.984C.9 38.796 0 41.254 0 43.815c0 2.562.899 5.02 2.5 6.831L14.565 64.31c2.178 2.468 5.367 3.403 8.33 2.444 1.35-.435 2.709.592 2.709 2.18v49.407c0 5.313 3.84 9.66 8.532 9.66h59.726c4.693 0 8.532-4.347 8.532-9.66V68.934c0-1.59 1.36-2.616 2.71-2.181 2.962.96 6.15.024 8.329-2.444L125.5 50.646c1.6-1.811 2.499-4.269 2.499-6.83 0-2.563-.899-5.02-2.5-6.832z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/trade.svg b/qqjf-Web/src/icons/svg/trade.svg new file mode 100644 index 0000000..967197e --- /dev/null +++ b/qqjf-Web/src/icons/svg/trade.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1623139067675" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5837" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M908.629333 743.765333H257.877333c-19.285333 0-37.376-7.509333-50.858666-21.162666-13.482667-13.653333-20.992-31.573333-20.821334-50.858667l2.389334-479.232c0-19.114667-6.656-31.914667-39.765334-37.205333h-0.170666l-95.573334-16.384c-9.216-1.536-15.530667-10.410667-13.994666-19.626667 1.536-9.216 10.410667-15.530667 19.626666-13.994667l95.402667 16.384c45.397333 7.168 68.437333 31.061333 68.437333 70.997334L220.16 672.085333c0 10.069333 3.754667 19.456 10.922667 26.453334 7.168 7.168 16.554667 11.093333 26.624 11.093333h650.752c9.386667 0 17.066667 7.68 17.066666 17.066667s-7.509333 17.066667-16.896 17.066666z" p-id="5838"></path><path d="M859.989333 645.802667l-602.624-1.877334c-18.944-0.170667-36.693333-7.509333-50.005333-20.992-13.312-13.482667-20.48-31.232-20.48-50.176l1.877333-353.962666L870.570667 269.653333c30.890667 1.194667 55.125333 26.282667 55.125333 57.173334V580.266667c0 36.181333-29.525333 65.536-65.706667 65.536zM257.706667 609.792l602.453333 1.877333c17.408 0 31.573333-14.165333 31.573333-31.402666V326.826667c0-12.458667-9.898667-22.698667-22.357333-23.04h-0.682667l-645.632-48.128-1.536 317.44c0 9.728 3.754667 18.944 10.581334 25.941333 6.485333 6.826667 15.701333 10.752 25.6 10.752z" p-id="5839"></path><path d="M324.096 800.085333m-63.658667 0a63.658667 63.658667 0 1 0 127.317334 0 63.658667 63.658667 0 1 0-127.317334 0Z" p-id="5840"></path><path d="M324.096 880.810667c-44.544 0-80.725333-36.181333-80.725333-80.725334s36.181333-80.725333 80.725333-80.725333c44.544 0 80.725333 36.181333 80.725333 80.725333s-36.181333 80.725333-80.725333 80.725334z m0-127.317334c-25.770667 0-46.592 20.821333-46.592 46.592s20.821333 46.592 46.592 46.592 46.592-20.821333 46.592-46.592-20.821333-46.592-46.592-46.592z" p-id="5841"></path><path d="M812.714667 800.085333m-63.658667 0a63.658667 63.658667 0 1 0 127.317333 0 63.658667 63.658667 0 1 0-127.317333 0Z" p-id="5842"></path><path d="M812.714667 880.810667c-44.544 0-80.725333-36.181333-80.725334-80.725334s36.181333-80.725333 80.725334-80.725333 80.725333 36.181333 80.725333 80.725333-36.181333 80.725333-80.725333 80.725334z m0-127.317334c-25.770667 0-46.592 20.821333-46.592 46.592s20.821333 46.592 46.592 46.592 46.592-20.821333 46.592-46.592-20.821333-46.592-46.592-46.592z" p-id="5843"></path><path d="M710.314667 417.962667H362.496c-9.386667 0-17.066667-7.68-17.066667-17.066667s7.68-17.066667 17.066667-17.066667h347.818667c9.386667 0 17.066667 7.68 17.066666 17.066667s-7.68 17.066667-17.066666 17.066667zM710.314667 516.096H362.496c-9.386667 0-17.066667-7.68-17.066667-17.066667s7.68-17.066667 17.066667-17.066666h347.818667c9.386667 0 17.066667 7.68 17.066666 17.066666s-7.68 17.066667-17.066666 17.066667z" p-id="5844"></path></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/tree-table.svg b/qqjf-Web/src/icons/svg/tree-table.svg new file mode 100644 index 0000000..8aafdb8 --- /dev/null +++ b/qqjf-Web/src/icons/svg/tree-table.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M44.8 0h79.543C126.78 0 128 1.422 128 4.267v23.466c0 2.845-1.219 4.267-3.657 4.267H44.8c-2.438 0-3.657-1.422-3.657-4.267V4.267C41.143 1.422 42.362 0 44.8 0zm22.857 48h56.686c2.438 0 3.657 1.422 3.657 4.267v23.466c0 2.845-1.219 4.267-3.657 4.267H67.657C65.22 80 64 78.578 64 75.733V52.267C64 49.422 65.219 48 67.657 48zm0 48h56.686c2.438 0 3.657 1.422 3.657 4.267v23.466c0 2.845-1.219 4.267-3.657 4.267H67.657C65.22 128 64 126.578 64 123.733v-23.466C64 97.422 65.219 96 67.657 96zM50.286 68.267c2.02 0 3.657-1.91 3.657-4.267 0-2.356-1.638-4.267-3.657-4.267H17.37V32h6.4c2.02 0 3.658-1.91 3.658-4.267V4.267C27.429 1.91 25.79 0 23.77 0H3.657C1.637 0 0 1.91 0 4.267v23.466C0 30.09 1.637 32 3.657 32h6.4v80c0 2.356 1.638 4.267 3.657 4.267h36.572c2.02 0 3.657-1.91 3.657-4.267 0-2.356-1.638-4.267-3.657-4.267H17.37V68.267h32.915z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/tree.svg b/qqjf-Web/src/icons/svg/tree.svg new file mode 100644 index 0000000..dd4b7dd --- /dev/null +++ b/qqjf-Web/src/icons/svg/tree.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M126.713 90.023c.858.985 1.287 2.134 1.287 3.447v29.553c0 1.423-.429 2.6-1.287 3.53-.858.93-1.907 1.395-3.146 1.395H97.824c-1.145 0-2.146-.465-3.004-1.395-.858-.93-1.287-2.107-1.287-3.53V93.47c0-.875.19-1.696.572-2.462.382-.766.906-1.368 1.573-1.806a3.84 3.84 0 0 1 2.146-.657h9.725V69.007a3.84 3.84 0 0 0-.43-1.806 3.569 3.569 0 0 0-1.143-1.313 2.714 2.714 0 0 0-1.573-.492h-36.47v23.149h9.725c1.144 0 2.145.492 3.004 1.478.858.985 1.287 2.134 1.287 3.447v29.553c0 .876-.191 1.696-.573 2.463-.38.766-.905 1.368-1.573 1.806a3.84 3.84 0 0 1-2.145.656H51.915a3.84 3.84 0 0 1-2.145-.656c-.668-.438-1.216-1.04-1.645-1.806a4.96 4.96 0 0 1-.644-2.463V93.47c0-1.313.43-2.462 1.288-3.447.858-.986 1.907-1.478 3.146-1.478h9.582v-23.15h-37.9c-.953 0-1.74.356-2.359 1.068-.62.711-.93 1.56-.93 2.544v19.538h9.726c1.239 0 2.264.492 3.074 1.478.81.985 1.216 2.134 1.216 3.447v29.553c0 1.423-.405 2.6-1.216 3.53-.81.93-1.835 1.395-3.074 1.395H4.29c-.476 0-.93-.082-1.358-.246a4.1 4.1 0 0 1-1.144-.657 4.658 4.658 0 0 1-.93-1.067 5.186 5.186 0 0 1-.643-1.395 5.566 5.566 0 0 1-.215-1.56V93.47c0-.437.048-.875.143-1.313a3.95 3.95 0 0 1 .429-1.15c.19-.328.429-.656.715-.984.286-.329.572-.602.858-.821.286-.22.62-.383 1.001-.493.382-.11.763-.164 1.144-.164h9.726V61.619c0-.985.31-1.833.93-2.544.619-.712 1.358-1.068 2.216-1.068h44.335V39.62h-9.582c-1.24 0-2.288-.492-3.146-1.477a5.09 5.09 0 0 1-1.287-3.448V5.14c0-1.423.429-2.627 1.287-3.612.858-.985 1.907-1.477 3.146-1.477h25.743c.763 0 1.478.246 2.145.739a5.17 5.17 0 0 1 1.573 1.888c.382.766.573 1.587.573 2.462v29.553c0 1.313-.43 2.463-1.287 3.448-.859.985-1.86 1.477-3.004 1.477h-9.725v18.389h42.762c.954 0 1.74.355 2.36 1.067.62.711.93 1.56.93 2.545v26.925h9.582c1.239 0 2.288.492 3.146 1.478z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/user.svg b/qqjf-Web/src/icons/svg/user.svg new file mode 100644 index 0000000..0ba0716 --- /dev/null +++ b/qqjf-Web/src/icons/svg/user.svg @@ -0,0 +1 @@ +<svg width="130" height="130" xmlns="http://www.w3.org/2000/svg"><path d="M63.444 64.996c20.633 0 37.359-14.308 37.359-31.953 0-17.649-16.726-31.952-37.359-31.952-20.631 0-37.36 14.303-37.358 31.952 0 17.645 16.727 31.953 37.359 31.953zM80.57 75.65H49.434c-26.652 0-48.26 18.477-48.26 41.27v2.664c0 9.316 21.608 9.325 48.26 9.325H80.57c26.649 0 48.256-.344 48.256-9.325v-2.663c0-22.794-21.605-41.271-48.256-41.271z" stroke="#979797"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/wechat.svg b/qqjf-Web/src/icons/svg/wechat.svg new file mode 100644 index 0000000..c586e55 --- /dev/null +++ b/qqjf-Web/src/icons/svg/wechat.svg @@ -0,0 +1 @@ +<svg width="128" height="110" xmlns="http://www.w3.org/2000/svg"><path d="M86.635 33.334c1.467 0 2.917.113 4.358.283C87.078 14.392 67.58.111 45.321.111 20.44.111.055 17.987.055 40.687c0 13.104 6.781 23.863 18.115 32.209l-4.527 14.352 15.82-8.364c5.666 1.182 10.207 2.395 15.858 2.395 1.42 0 2.829-.073 4.227-.189-.886-3.19-1.398-6.53-1.398-9.996 0-20.845 16.98-37.76 38.485-37.76zm-24.34-12.936c3.407 0 5.665 2.363 5.665 5.954 0 3.576-2.258 5.97-5.666 5.97-3.392 0-6.795-2.395-6.795-5.97 0-3.591 3.403-5.954 6.795-5.954zM30.616 32.323c-3.393 0-6.818-2.395-6.818-5.971 0-3.591 3.425-5.954 6.818-5.954 3.392 0 5.65 2.363 5.65 5.954 0 3.576-2.258 5.97-5.65 5.97z"/><path d="M127.945 70.52c0-19.075-18.108-34.623-38.448-34.623-21.537 0-38.5 15.548-38.5 34.623 0 19.108 16.963 34.622 38.5 34.622 4.508 0 9.058-1.2 13.584-2.395l12.414 7.167-3.404-11.923c9.087-7.184 15.854-16.712 15.854-27.471zm-50.928-5.97c-2.254 0-4.53-2.362-4.53-4.773 0-2.378 2.276-4.771 4.53-4.771 3.422 0 5.665 2.393 5.665 4.771 0 2.41-2.243 4.773-5.665 4.773zm24.897 0c-2.24 0-4.498-2.362-4.498-4.773 0-2.378 2.258-4.771 4.498-4.771 3.392 0 5.665 2.393 5.665 4.771 0 2.41-2.273 4.773-5.665 4.773z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/icons/svg/zip.svg b/qqjf-Web/src/icons/svg/zip.svg new file mode 100644 index 0000000..f806fc4 --- /dev/null +++ b/qqjf-Web/src/icons/svg/zip.svg @@ -0,0 +1 @@ +<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M78.527 116.793c.178.008.348.024.527.024h40.233c4.711-.005 8.53-3.677 8.534-8.21V18.895c-.004-4.532-3.823-8.204-8.534-8.209H79.054c-.179 0-.353.016-.527.024V0L0 10.082v107.406l78.527 10.342v-11.037zm0-101.362c.174-.024.348-.052.527-.052h40.233c2.018 0 3.659 1.578 3.659 3.52v89.713c-.003 1.942-1.64 3.517-3.659 3.519H79.054c-.179 0-.353-.028-.527-.052V15.431zM30.262 75.757l-18.721-.46V72.37l11.3-16.673v-.148l-10.266.164v-4.51l17.504-.44v3.264L18.696 70.76v.144l11.566.176v4.678zm9.419.231l-5.823-.144V50.671l5.823-.144v25.461zm22.255-11.632c-2.168 1.922-5.353 2.76-9.02 2.736-.702.004-1.402-.04-2.097-.131v9.303l-5.997-.148V50.743c1.852-.352 4.473-.647 8.218-.743 3.838-.096 6.608.539 8.48 1.913 1.807 1.306 3.032 3.5 3.032 6.112s-.926 4.833-2.612 6.331h-.004zM53.36 54.45c-.856-.01-1.71.083-2.541.275v7.682c.523.116 1.167.152 2.06.152 3.301-.004 5.36-1.614 5.36-4.314 0-2.425-1.772-3.843-4.875-3.791l-.004-.004zm39.847-37.066h9.564v3.795h-9.564v-3.795zm-9.568 5.68h9.564v3.8h-9.564v-3.8zm9.568 6.216h9.564v3.799h-9.564V29.28zm0 12h9.564v3.794h-9.564V41.28zm-9.568-6.096h9.564v3.795h-9.564v-3.795zm9.472 47.064c2.512 0 4.921-.96 6.697-2.67 1.776-1.708 2.773-4.026 2.772-6.442l-1.748-15.263c0-5.033-2.492-9.112-7.725-9.112-5.232 0-7.72 4.079-7.72 9.112l-1.752 15.263c-.001 2.417.996 4.735 2.773 6.444 1.777 1.71 4.187 2.669 6.7 2.668h.003zm-3.135-16.75h6.27v12.743h-6.27V65.5z"/></svg> \ No newline at end of file diff --git a/qqjf-Web/src/main.js b/qqjf-Web/src/main.js new file mode 100644 index 0000000..dcf3613 --- /dev/null +++ b/qqjf-Web/src/main.js @@ -0,0 +1,35 @@ +import Vue from 'vue'; +import App from './App.vue'; +import router from './router'; +import store from './store'; +import Element from 'element-ui'; +import 'element-ui/lib/theme-chalk/index.css'; +import '@/styles/index.scss'; +import './icons'; +import './permission'; // 璺敱瀵艰埅瀹堝崼 +/** + * 瑙e喅璺敱鍦板潃鎶ラ敊浣嗘甯歌繍琛� + * 姝ゅ鐞嗘柟妗堝彧閽堝浜巚ue-router 3.0浠ヤ笂鐗堟湰 + */ +import Router from 'vue-router'; + +const originalPush = Router.prototype.push; +Router.prototype.push = function push(location) { + return originalPush.call(this, location).catch(err => err); +}; +// import $ from "jquery"; +Vue.config.productionTip = false; +Vue.use(Element); + +//鍔犺浇鍔ㄧ敾 +import Vab from './utils/vab'; +Vue.use(Vab); +// Vue.use(Element, { +// size: Cookies.get('size') || 'medium', // set element-ui default size +// locale: enLang // 濡傛灉浣跨敤涓枃锛屾棤闇�璁剧疆锛岃鍒犻櫎 +// }) +new Vue({ + router, + store, + render: h => h(App) +}).$mount('#app'); \ No newline at end of file diff --git a/qqjf-Web/src/mixins/layout.js b/qqjf-Web/src/mixins/layout.js new file mode 100644 index 0000000..1658239 --- /dev/null +++ b/qqjf-Web/src/mixins/layout.js @@ -0,0 +1,33 @@ +import store from '@/store'; + +const { body } = document; +const WIDTH = 992; + +export default { + beforeMount() { + window.addEventListener('resize', this.$_resizeHandler); + }, + beforeDestroy() { + window.removeEventListener('resize', this.$_resizeHandler); + }, + mounted() { + const isMobile = this.$_isMobile(); + if (isMobile) { + store.dispatch('setting/togglesidebar', false); + } + }, + + methods: { + $_isMobile() { + + const rect = body.getBoundingClientRect(); + return rect.width - 1 < WIDTH; + }, + $_resizeHandler() { + const isMobile = this.$_isMobile(); + if (isMobile) { + store.dispatch('setting/togglesidebar', false); + } + } + } +}; diff --git a/qqjf-Web/src/mixins/resize.js b/qqjf-Web/src/mixins/resize.js new file mode 100644 index 0000000..f479ced --- /dev/null +++ b/qqjf-Web/src/mixins/resize.js @@ -0,0 +1,65 @@ +import { + debounce +} from '@/utils/debounce'; +export default { + data() { + return { + myChart: null, + resizeHandler: null + }; + }, + computed: { + open() { + console.log(this.$store.state.setting.opened); + return this.$store.state.setting.opened; + } + }, + mounted() { + this.resizeHandler = debounce(() => { + if (this.myChart) { + this.myChart.resize(); + } + }, 100); + this.initResizeEvent(); + }, + + methods: { + //鐩戝惉resize + initResizeEvent() { + window.addEventListener('resize', this.resizeHandler); + }, + //绉婚櫎resize + destroyResizeEvent() { + window.removeEventListener('resize', this.resizeHandler); + } + }, + + beforeDestroy() { + this.destroyResizeEvent(); + if (!this.myChart) { + return; + } + this.myChart.dispose(); + this.myChart.off('click'); + this.myChart = null; + }, + + activated() { + this.initResizeEvent(); + if (this.myChart) { + this.myChart.resize(); + } + }, + + deactivated() { + this.destroyResizeEvent(); + }, + watch: { + open() { + if (this.myChart) { + console.log(123); + this.myChart.resize(); + } + } + } +}; \ No newline at end of file diff --git a/qqjf-Web/src/permission.js b/qqjf-Web/src/permission.js new file mode 100644 index 0000000..8a5b079 --- /dev/null +++ b/qqjf-Web/src/permission.js @@ -0,0 +1,134 @@ +import router from './router'; +import store from './store'; +import qs from 'qs'; +import axios from '@/utils/axios'; +import { + asyncRoutes, + baseRoute +} from '@/router'; +import NProgress from 'nprogress'; // progress bar +import 'nprogress/nprogress.css'; // progress bar style +import { + getCache, + setCache +} from '@/utils/sessionStorage'; +import getPageTitle from '@/utils/getPageTitle'; +const _import = require('./router/_import_production'); // 鑾峰彇缁勪欢鐨勬柟娉� +const _mainImport = require('./router/_import_development'); + +import Layout from '@/Layout'; + +let getRouter = ''; // 鐢ㄦ潵鑾峰彇鍚庡彴鎷垮埌鐨勮矾鐢� +NProgress.configure({ + showSpinner: false +}); // NProgress Configuration +let _this = this; +router.beforeEach(async (to, from, next) => { + document.title = to.meta.title + ' - 鏅鸿兘鍖栫珛浣撳簱绠$悊绯荤粺'; + NProgress.start(); + const isLogin = getCache('userInfo'); + if (to.path == '/Login') { + getRouter = ''; + + next(); + } else { + if (!JSON.stringify(isLogin)) { + getRouter = ''; + next('/Login'); + NProgress.done(); + } else { + if (store.state.permission.addRoutes.length > 0) { + NProgress.done(); + next(); + } else { + axios + .post( + '/Permission/GetUserRolePermission', + qs.stringify({ + roleName: isLogin.roleName, + type: 1 + }) + ) + .then(res => { + if (res.code == 0) { + let data = res.data || []; + let Didproject = null; + data.filter((item, index) => { + if (item.name == 'Didproject') { + Didproject = item; + Didproject.meta.affix = true; + return data.splice(index, 1); + } + }); + data.unshift(Didproject); + let baserouter = routerchildren(res.data); + + let layer = [{ + path: '/', + redirect: '/Didproject', + children: baserouter + }]; + + getRouter = layer; + routerGo(to, next); // 鎵ц璺敱璺宠浆鏂规硶 + } + }); + } + } + } +}); + +// router. +//杩囨护璺敱涓殑children +function routerchildren(basrouter) { + basrouter.filter(item => { + if (item.children == null) { + delete item.children; + } else if (item.children.length > 0) { + routerchildren(item.children); + } + return true; + }); + return basrouter; +} + +function routerGo(to, next) { + getRouter = filterAsyncRouter(getRouter); // 杩囨护璺敱 + + console.log(getRouter); + + setCache('baserouter', getRouter); + console.log(getRouter); + global.addRoutes = getRouter; // 灏嗚矾鐢辨暟鎹紶閫掔粰鍏ㄥ眬鍙橀噺锛屽仛渚ц竟鏍忚彍鍗曟覆鏌撳伐浣� + store.dispatch('permission/generateRoutes', getRouter); + router.addRoutes(getRouter); // 鍔ㄦ�佹坊鍔犺矾鐢� + + next({ + ...to, + replace: true + }); +} + +function filterAsyncRouter(asyncRouterMap) { + // 閬嶅巻鍚庡彴浼犳潵鐨勮矾鐢卞瓧绗︿覆锛岃浆鎹负缁勪欢瀵硅薄 + asyncRouterMap.forEach(route => { + if (route.path) { + if (route.path == '/') { + route.component = _mainImport('Layout'); + } else { + route.component = _import(route.path); + } + } else { + route.path = '/test'; + } + if (route.children && route.children.length > 0) { + route.children = filterAsyncRouter(route.children); + } + }); + + return asyncRouterMap; +} +router.afterEach(() => { + // finish progress bar + NProgress.done(); +}); \ No newline at end of file diff --git a/qqjf-Web/src/plugins/cdn.js b/qqjf-Web/src/plugins/cdn.js new file mode 100644 index 0000000..f7f1800 --- /dev/null +++ b/qqjf-Web/src/plugins/cdn.js @@ -0,0 +1,11 @@ +const VueCDN = 'https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js'; +const AxiosCDN = 'https://cdn.bootcdn.net/ajax/libs/axios/0.21.0/axios.min.js'; +const VueRouterCDN = 'https://cdn.bootcdn.net/ajax/libs/vue-router/3.2.0/vue-router.min.js'; +const VuexCDN = 'https://cdn.bootcdn.net/ajax/libs/vuex/3.5.1/vuex.min.js'; + +module.exports = { + VueCDN, + AxiosCDN, + VueRouterCDN, + VuexCDN +}; diff --git a/qqjf-Web/src/plugins/mapServer.js b/qqjf-Web/src/plugins/mapServer.js new file mode 100644 index 0000000..d4eb452 --- /dev/null +++ b/qqjf-Web/src/plugins/mapServer.js @@ -0,0 +1,5 @@ +// const salineLand = 'http://59.110.28.240:6080/arcgis/rest/services/YJD/YBSFQDK_2018_1_1/MapServer'; + +module.exports = { + // salineLand +}; diff --git a/qqjf-Web/src/router/_import_development.js b/qqjf-Web/src/router/_import_development.js new file mode 100644 index 0000000..da6126f --- /dev/null +++ b/qqjf-Web/src/router/_import_development.js @@ -0,0 +1,3 @@ +// module.exports = file => () => import('@' + file ) +module.exports = file => () => import(/* webpackChunkName: "chunkName" */ `@/${file}` ) + diff --git a/qqjf-Web/src/router/_import_production.js b/qqjf-Web/src/router/_import_production.js new file mode 100644 index 0000000..0857818 --- /dev/null +++ b/qqjf-Web/src/router/_import_production.js @@ -0,0 +1,2 @@ +// module.exports = file => () => import('@/views' + file + '/index.vue') +module.exports = file => () => import(/* webpackChunkName: "chunkName" */ `@/views${file}/index.vue`) \ No newline at end of file diff --git a/qqjf-Web/src/router/index.js b/qqjf-Web/src/router/index.js new file mode 100644 index 0000000..a0f30a6 --- /dev/null +++ b/qqjf-Web/src/router/index.js @@ -0,0 +1,140 @@ +import Vue from 'vue'; +import VueRouter from 'vue-router'; +import BasRoute from './modules/base'; +import Layout from '@/Layout'; +Vue.use(VueRouter); + +export const baseRoute = [{ + name: 'login', + path: '/login', + meta: { + title: '鐧诲綍' + }, + component: () => import('@/views/login/index') + }, + { + name: 'home', + path: '/home', + component: () => import('@/views/Home/index') + }, + { + name: 'taskbeat', + path: '/taskbeat', + meta: { + title: '浠诲姟鑺傛媿' + }, + component: () => import('@/views/dataview/taskbeat.vue') + }, + { + name: 'classified', + path: '/classified', + meta: { + title: '鍒嗙被缁熻' + }, + component: () => import('@/views/dataview/classified.vue') + }, + { + name: 'movablerate', + path: '/movablerate', + meta: { + title: '璁惧鍙姩' + }, + component: () => import('@/views/dataview/movablerate.vue') + }, + { + name: 'product', + path: '/product', + meta: { + title: '鍦ㄥ埗鍝佽祫閲�' + }, + component: () => import('@/views/dataview/product.vue') + }, + { + name: 'rateequipment', + path: '/rateequipment', + meta: { + title: '璁惧鍒╃敤鐜�' + }, + component: () => import('@/views/dataview/rateequipment.vue') + }, + { + name: 'tasktime', + path: '/tasktime', + meta: { + title: '骞冲潎鏃堕暱' + }, + component: () => import('@/views/dataview/tasktime.vue') + }, + { + name: 'turnover', + path: '/turnover', + meta: { + title: '鍒朵欢鍛ㄨ浆' + }, + component: () => import('@/views/dataview/turnover.vue') + }, + { + name: 'warehouse', + path: '/warehouse', + meta: { + title: '璐ф牸鍒╃敤鐜�' + }, + component: () => import('@/views/dataview/warehouse.vue') + }, + { + name: 'statelibrary', + path: '/statelibrary', + meta: { + title: '绔嬪簱鎬昏' + }, + component: () => import('@/views/dataview/statelibrary.vue') + }, + { + name: 'workpiece', + path: '/workpiece', + meta: { + title: '鍒朵欢鎬昏' + }, + component: () => import('@/views/dataview/workpiece.vue') + }, + { + name: 'output', + path: '/output', + meta: { + title: '闆朵欢鍑哄叆搴�' + }, + component: () => import('@/views/dataview/output.vue') + } +]; + +export const asyncRoutes = [{ + path: '/', + component: Layout, + redirect: '/Didproject', + children: BasRoute +}]; +// const router = new VueRouter({ +// // base: process.env.BASE_URL, +// routes:baseRoute +// }); +// const router = new VueRouter({ +// // base: process.env.BASE_URL, +// routes:baseRoute +// }); +const createRouter = function () { + return new VueRouter({ + routes: baseRoute + }); +}; +const router = createRouter(); +export function resetRouter() { + router.matcher = createRouter().matcher; +} +//閲嶅畾鍚戞椂鎶ラ敊锛岀敤杩欎釜涓嶈浠栨姤閿� +const originalPush = VueRouter.prototype.push; +VueRouter.prototype.push = function push(location, onResolve, onReject) { + if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject); + return originalPush.call(this, location).catch(err => err); +}; + +export default router; \ No newline at end of file diff --git a/qqjf-Web/src/router/modules/base.js b/qqjf-Web/src/router/modules/base.js new file mode 100644 index 0000000..edbf55c --- /dev/null +++ b/qqjf-Web/src/router/modules/base.js @@ -0,0 +1,379 @@ +import { role } from '@/components/tableContainer/tableHead' + +const baseRoute=[ + { + path:'/Didproject', + name:'Didproject', + meta:{ + title:'棣栭〉', + icon:'homePage', + roles: [], + affix: true + }, + component:()=>import('@/views/Didproject/index') + }, + { + path: '/inbound', + name: 'inbound', + meta: { + title: '鍏ュ簱', + icon: 'inbound', + roles:[] + }, + component: () => import('@/views/inbound/index'), + children: [ + { + path: '/inbound/purchase', + name: 'purchase', + meta: { + title: '鍏ュ簱绠$悊', + icon: '', + roles:[] + }, + component: () => import('@/views/inbound/purchase/index'), + children: [ + { + path: '/inbound/purchase/quotation', + name: 'quotation', + meta: { + title: '鍐插帇鐢熶骇璁″垝', + icon: '', + roles:[] + }, + component: () => import('@/views/inbound/purchase/quotation/index'), + }, + { + path: '/inbound/purchase/enter', + name: 'enter', + meta: { + title: '缁勭洏鍏ュ簱', + icon: '', + roles:[] + }, + component: () => import('@/views/inbound/purchase/enter/index'), + }, + { + path: '/inbound/purchase/intype', + name: 'intype', + meta: { + title: '鍏ュ簱绫诲瀷', + icon: '', + roles:[] + }, + component: () => import('@/views/inbound/purchase/intype/index'), + }, + ] + } + ] + }, + { + path: '/outbound', + name: 'outbound', + meta: { + title: '鍑哄簱', + icon: 'inbound', + roles:[] + }, + component: () => import('@/views/outbound/index'), + children: [ + { + path: '/outbound/regulator', + name: 'regulator', + meta: { + title: '鍑哄簱绠$悊', + icon: '', + roles:[] + }, + component: () => import('@/views/outbound/regulator/index'), + children: [ + { + path: '/outbound/regulator/plant', + name: 'plant', + meta: { + title: '鍑哄簱璁″垝', + icon: '', + roles:[] + }, + component: () => import('@/views/outbound/regulator/plant/index'), + } + ] + } + ] + }, + { + path:'/task', + name:'task', + meta:{ + title:'浠诲姟', + icon:'storage', + roles: [], + }, + component: () => import('@/views/task/index'), + children: [ + + { + path:'/task/maintask', + name:'maintask', + meta:{ + title:'涓讳换鍔�', + icon:'', + roles: [] + }, + component: () => import('@/views/task/maintask/index'), + + }, + { + path: '/task/forklifttasks', + name:'forklifttasks', + meta:{ + title:'鍙夎溅浠诲姟', + icon:'', + roles: [], + }, + component:()=>import('@/views/task/forklifttasks/index') + + }, + { + path: '/task/taskrecord', + name:'taskrecord', + meta:{ + title:'浠诲姟璁板綍', + icon:'', + roles: [], + }, + component:()=>import('@/views/task/taskrecord/index') + + }, + { + path: '/task/taskdocuments', + name:'taskdocuments', + meta:{ + title:'浠诲姟鍗曟嵁', + icon:'', + roles: [], + }, + component:()=>import('@/views/task/taskdocuments/index') + + }, + ] + }, + { + path:'/storage', + name:'storage', + meta:{ + title:'浠撳偍', + icon:'storage', + roles:[] + }, + component: () => import('@/views/storage/index'), + children: [ + { + path:'/storage/setting', + name:'user', + meta:{ + title:'鍩虹璁剧疆', + icon:'', + roles:[] + }, + component: () => import('@/views/storage/setting/index'), + children: [ + + { + path:'/storage/setting/position', + name:'position', + meta:{ + title:'搴撲綅绠$悊', + icon:'', + roles:[] + }, + component: () => import('@/views/storage/setting/position/index'), + }, + { + path:'/storage/setting/palte', + name:'palte', + meta:{ + title:'鍣ㄥ叿绠$悊', + icon:'', + roles:[] + }, + component: () => import('@/views/storage/setting/palte/index'), + }, + // { + // path:'/storage/setting/storage-area', + // name:'storage-area', + // meta:{ + // title:'搴撳尯绠$悊', + // icon:'', + // roles:[] + // }, + // component: () => import('@/views/storage/setting/storage-area/index'), + // }, + { + path:'/storage/setting/choose', + name:'choose', + meta:{ + title:'闆朵欢绠$悊', + icon:'', + roles:[] + }, + component: () => import('@/views/storage/setting/choose/index'), + }, + { + path:'/storage/setting/cass-line', + name:'cass-line', + meta:{ + title:'鐝嚎绠$悊', + icon:'', + roles:[] + }, + component: () => import('@/views/storage/setting/cass-line/index'), + }, + { + path:'/storage/setting/forklift', + name:'forklift', + meta:{ + title:'鍙夎溅绠$悊', + icon:'', + roles:[] + }, + component: () => import('@/views/storage/setting/forklift/index'), + }, + ] + }, + { + path:'/storage/base', + name:'base', + meta:{ + title:'搴撳瓨鐘跺喌', + icon:'', + roles:[] + }, + component: () => import('@/views/storage/base/index'), + children: [ + { + path:'/storage/base/inventory', + name:'inventory', + meta:{ + title:'搴撳瓨绠$悊', + icon:'', + roles:[] + }, + component: () => import('@/views/storage/base/inventory/index'), + } + ] + } + ] + }, + { + path: '/basicInfo', + name: 'basicInfo', + meta: { + title: "璁惧", + icon:'storage', + roles:[] + }, + component: () => import('@/views/basicInfo/index'), + children: [ + { + path: '/basicInfo/base', + name: 'base', + meta: { + title: '璁惧绠$悊', + roles:[] + }, + component: () => import('@/views/basicInfo/base/index'), + children: [ + { + path: '/basicInfo/base/stacker', + name: 'stacker', + meta: { + title: '璁惧', + roles:[] + }, + component: () => import('@/views/basicInfo/base/stacker/index') + + }, + { + path: '/basicInfo/base/warning', + name: 'warning', + meta: { + title: '鎶ヨ淇℃伅', + roles:[] + }, + component: () => import('@/views/basicInfo/base/warning/index') + + } + ] + } + ] + }, + { + path:'/System', + name:'System', + meta:{ + title:'绯荤粺', + icon:'sys', + roles:[] + }, + component: () => import('@/views/system/index'), + children: [ + { + path:'/System/user', + name:'user', + meta:{ + title:'鐢ㄦ埛鍙婃潈闄�', + icon:'', + roles:[] + }, + component: () => import('@/views/system/user/index'), + children: [ + { + path:'/System/user/manage', + name:'manage', + meta:{ + title:'鐢ㄦ埛绠$悊', + icon:'', + roles:[] + }, + component: () => import('@/views/system/user/manage/index'), + }, + { + path:'/System/user/dept', + name:'dept', + meta:{ + title:'閮ㄩ棬绠$悊', + icon:'', + roles:[] + }, + component: () => import('@/views/system/user/dept/index'), + }, + { + path:'/System/user/role', + name:'role', + meta:{ + title:'瑙掕壊绠$悊', + icon:'', + roles:[] + }, + component: () => import('@/views/system/user/role/index'), + }, + { + path:'/System/user/roleAuth', + name:'roleAuth', + meta:{ + title:'瑙掕壊鏉冮檺璁剧疆', + icon:'', + roles:[] + }, + component: () => import('@/views/system/user/roleAuth/index'), + }, + ] + } + ] + + }, + + + +] +export default baseRoute \ No newline at end of file diff --git a/qqjf-Web/src/settings.js b/qqjf-Web/src/settings.js new file mode 100644 index 0000000..c28c298 --- /dev/null +++ b/qqjf-Web/src/settings.js @@ -0,0 +1,43 @@ +/* + * @Author : gy + * @Date : 2020-06-27 20:27:39 + * @LastEditors : gy + * @LastEditTime : 2020-06-27 20:49:59 + * @FilePath : /code/src/settings.js + * @Description : 椤甸潰鎻忚堪 + */ +module.exports = { + title: '鏅鸿兘鍖栫珛浣撳簱绠$悊绯荤粺', + + /** + * @type {boolean} true | false + * @description Whether show the settings right-panel + */ + showSettings: false, + + /** + * @type {boolean} true | false + * @description Whether need tagsView + */ + tagsView: false, + + /** + * @type {boolean} true | false + * @description Whether fix the header + */ + fixedHeader: false, + + /** + * @type {boolean} true | false + * @description Whether show the logo in sidebar + */ + sidebarLogo: false, + + /** + * @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/qqjf-Web/src/store/getters.js b/qqjf-Web/src/store/getters.js new file mode 100644 index 0000000..08784aa --- /dev/null +++ b/qqjf-Web/src/store/getters.js @@ -0,0 +1,7 @@ +const getters = { + token: state => state.user.token, + sidebar: state => state.setting.opened, + visitedViews: state => state.tagsView.visitedViews, + cachedViews: state => state.tagsView.cachedViews, +} +export default getters \ No newline at end of file diff --git a/qqjf-Web/src/store/index.js b/qqjf-Web/src/store/index.js new file mode 100644 index 0000000..a479886 --- /dev/null +++ b/qqjf-Web/src/store/index.js @@ -0,0 +1,26 @@ +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/qqjf-Web/src/store/modules/permission.js b/qqjf-Web/src/store/modules/permission.js new file mode 100644 index 0000000..0e31414 --- /dev/null +++ b/qqjf-Web/src/store/modules/permission.js @@ -0,0 +1,53 @@ +import { asyncRoutes, baseRoute } from '@/router' +import { getCache,setCache } from '@/utils/sessionStorage'; +function hasPermission(roles, route) { + if (route.meta && route.meta.roles) { + return roles.some(role => route.meta.roles.includes(role)) + } else { + return true + } +} + +export function filterAsyncRoutes(routes, roles) { + const res = [] + + routes.forEach(route => { + const tmp = { ...route } + if (hasPermission(roles, tmp)) { + if (tmp.children) { + tmp.children = filterAsyncRoutes(tmp.children, roles) + } + res.push(tmp) + } + }) + + return res +} + +const state = { + routes: [], + addRoutes: [] +} + +const mutations = { + SET_ROUTES: (state, routes) => { + state.addRoutes = routes + state.routes = baseRoute.concat(routes) + } +} + +const actions = { + generateRoutes({ commit }, roles) { + + + commit('SET_ROUTES', roles) + + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} diff --git a/qqjf-Web/src/store/modules/setting.js b/qqjf-Web/src/store/modules/setting.js new file mode 100644 index 0000000..41c5bc2 --- /dev/null +++ b/qqjf-Web/src/store/modules/setting.js @@ -0,0 +1,22 @@ +import {getCache,setCache} from '@/utils/sessionStorage' +const state ={ + opened:getCache('SIDEBAR_OPENED')?JSON.parse(getCache('SIDEBAR_OPENED')):false +} +const mutations={ + TOGGLE_SIDEBAR:state=>{ + state.opened =!state.opened + setCache('SIDEBAR_OPENED',state.opened) + } +} +const actions={ + togglesidebar({ commit }) { + + commit('TOGGLE_SIDEBAR') + } +} +export default{ + namespaced: true, + state, + mutations, + actions +} \ No newline at end of file diff --git a/qqjf-Web/src/store/modules/tagsView.js b/qqjf-Web/src/store/modules/tagsView.js new file mode 100644 index 0000000..2f5a5c7 --- /dev/null +++ b/qqjf-Web/src/store/modules/tagsView.js @@ -0,0 +1,195 @@ +const state = { + visitedViews: [], + cachedViews: [] +}; + +const mutations = { + ADD_VISITED_VIEW: (state, view) => { + if (state.visitedViews.some(v => v.path === view.path)) return; + state.visitedViews.push( + Object.assign({}, view, { + title: view.meta.title || 'no-name' + }) + ); + }, + ADD_CACHED_VIEW: (state, view) => { + if (state.cachedViews.includes(view.name)) return; + if (!view.meta.noCache) { + state.cachedViews.push(view.name); + } + }, + + DEL_VISITED_VIEW: (state, view) => { + for (const [i, v] of state.visitedViews.entries()) { + if (v.path === view.path) { + state.visitedViews.splice(i, 1); + break; + } + } + }, + DEL_CACHED_VIEW: (state, view) => { + const index = state.cachedViews.indexOf(view.name); + index > -1 && state.cachedViews.splice(index, 1); + }, + + DEL_OTHERS_VISITED_VIEWS: (state, view) => { + state.visitedViews = state.visitedViews.filter(v => { + return v.meta.affix || v.path === view.path; + }); + }, + DEL_OTHERS_CACHED_VIEWS: (state, view) => { + const index = state.cachedViews.indexOf(view.name); + 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) { + if (v.path === view.path) { + v = Object.assign(v, view); + break; + } + } + } +}; + +const actions = { + addView({ + dispatch + }, view) { + dispatch('addVisitedView', view); + dispatch('addCachedView', view); + }, + addVisitedView({ + commit + }, view) { + commit('ADD_VISITED_VIEW', view); + }, + addCachedView({ + commit + }, view) { + commit('ADD_CACHED_VIEW', view); + }, + + delView({ + dispatch, + state + }, view) { + return new Promise(resolve => { + dispatch('delVisitedView', view); + 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); + } +}; + +export default { + namespaced: true, + state, + mutations, + actions +}; \ No newline at end of file diff --git a/qqjf-Web/src/store/modules/user.js b/qqjf-Web/src/store/modules/user.js new file mode 100644 index 0000000..5eb0430 --- /dev/null +++ b/qqjf-Web/src/store/modules/user.js @@ -0,0 +1,46 @@ +import { login } from '@/api/register' +import {resetRouter } from '@/router'; +import { getCache, setCache, removeAll } from '@/utils/sessionStorage' +// import { reject, resolve } from 'core-js/fn/promise' +import baserouter from '@/router/modules/base' + +const state = { + token: getCache(), + name: '', + avatar: '', + introduction: '', + roles: [] +} + +const mutations={ + SET_TOKEN: (state, token) => { + state.token = token + }, +} + +const actions={ + login({},userInfo){ + const {username,password}=userInfo + return new Promise((resolve, reject) => { + login({ userName: username, password: password }).then(res=>{ + + // setCache('baserouter',baserouter) + resolve(res) + }) + + }) + }, + logout(){ + return new Promise((resolve,reject)=>{ + removeAll() + resetRouter(); + resolve() + }) + } +} +export default { + namespaced: true, + state, + mutations, + actions +} \ No newline at end of file diff --git a/qqjf-Web/src/styles/elemen-ui.scss b/qqjf-Web/src/styles/elemen-ui.scss new file mode 100644 index 0000000..cd378a3 --- /dev/null +++ b/qqjf-Web/src/styles/elemen-ui.scss @@ -0,0 +1,4 @@ +.el-menu { + // background-color: unset !important; + border-right: unset !important; +} \ No newline at end of file diff --git a/qqjf-Web/src/styles/index.scss b/qqjf-Web/src/styles/index.scss new file mode 100644 index 0000000..93a18af --- /dev/null +++ b/qqjf-Web/src/styles/index.scss @@ -0,0 +1,705 @@ +@import './variables.scss'; +@import './sidebar.scss'; +@import './elemen-ui.scss'; +@import './transition.scss'; +@import './innner-circles.scss'; + +body { + height: 100%; + margin: 0; + -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; + overflow: hidden; +} + +html { + height: 100%; + box-sizing: border-box; +} + +#app { + height: 100%; +} + +@font-face { + font-family: time_new_Roma; + src: url(../assets//css/TimesNewRomanPSMT24163565.ttf); +} + +p { + margin: 0; + padding: 0; +} + +.height { + height: 100%; +} + +.height80px { + height: 90px; +} + +.height97 { + height: 97% +} + +.height99 { + height: 99%; +} + +.height94 { + height: 94%; +} + +.height92 { + height: 92%; +} + +.height82 { + height: 82%; +} + +.height74 { + height: 74%; +} + +.height57 { + height: 57%; +} + +.height65 { + height: 65%; +} + +.height30 { + height: 30%; +} + +.height45 { + height: 45%; +} + +.height48 { + height: 48%; +} + +.height250 { + height: 250px; +} + +.height-calc { + height: calc(100% - 65px); +} + +.height-calc55 { + height: calc(100% - 55px); +} + +.height-calc40 { + height: calc(100% - 40px); +} + +.applyheight { + height: calc(100% - 120px); +} + +.height-calc90 { + height: calc(100% - 100px); +} + +.height-calc190 { + height: calc(100% - 190px); +} + +.height-calc280 { + height: calc(100% - 280px); +} + +.height-calc300 { + height: calc(100% - 300px); + +} + +.heightclacimport { + height: calc(100% - 27px) !important; +} + +.minheight { + min-height: 1rem; +} + +.width { + width: 100%; +} + +.width120 { + width: 120px; +} + +.width60 { + width: 60px; +} + +.width7rem { + width: 7rem; +} + +.width20 { + width: 20%; +} + +.width80 { + width: 80%; +} + +.width85 { + width: 85%; +} + +.widthimportant { + width: 100% !important; +} + +.width98 { + width: 98%; +} + +.width99 { + width: 99%; +} + +.width96 { + width: 96%; +} + +.width94 { + width: 94%; +} + +.width90 { + width: 90%; +} + +.width25 { + width: 25%; +} + +.width24 { + width: 24%; +} + +.width20 { + width: 20%; +} + +.width10 { + width: 10%; +} + +.width12 { + width: 12%; +} + +.width15 { + width: 15%; +} + +.width30 { + width: 30%; +} + +.width35 { + width: 35%; +} + +.width45 { + width: 45%; +} + +.width40 { + width: 40%; +} + +.width50 { + width: 50%; +} + +.width55 { + width: 55%; +} + +.width65 { + width: 65%; +} + +.width60 { + width: 60%; +} + +.width70 { + width: 70%; +} + +.width78 { + width: 78%; +} + +.inportantwidth70 { + width: 70% !important; +} + +.relative { + position: relative; +} + +.absolute { + position: absolute; +} + +.transformtopleft { + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.transformtopleft12 { + top: 12%; + left: 50%; + transform: translate(-50%, -50%); +} + +.fixed { + position: fixed; +} + +.flex { + display: flex; +} + +.flex-sub { + flex: 1; +} + +.flex-auto { + flex: auto; +} + +.flex-direction { + flex-direction: column; +} + +.flex-column-reverse { + flex-direction: column-reverse; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.align-start { + align-items: flex-start; +} + +.align-baseline { + align-items: baseline; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +.margin-auto { + margin: auto; +} + +.margin4auto { + margin: 4px auto; +} + +.margin50 { + margin: 0 25px 0 50px; +} + +.margin-top10px { + margin-top: 10px; +} + +.margin-top2 { + margin-top: 2%; +} + +.margin-top4 { + margin-top: 4%; +} + +.margin-top15 { + margin-top: 15%; +} + +.margin-bottom { + margin-bottom: 2%; +} + +.margin-left { + margin-left: 10px; +} + +.margin-right5px { + margin-right: 5px; +} + +.margin-right { + margin-right: 10px; +} + +.margin-right15 { + margin-right: 15px; +} + +.margin-right40 { + margin-right: 40px; +} + +.margintopbot { + margin: 10px auto; +} + +.margin2 { + margin: 2% auto; +} + +.padding10 { + padding: 10px; +} + +.paddingtopbottom { + padding: 10px 0; +} + +.padding1016 { + padding: 10px 16px; +} + +.padding1020 { + padding: 10px 20px; +} + +.padding2010 { + padding: 20px 10px; +} + +.padding-top2 { + padding-top: 2px; +} + +.padding-top10 { + padding-top: 10px; +} + +.paddingbottom { + padding-bottom: 6px; +} + +.padding-right { + padding-right: 10px; +} + +.padding-left { + padding-left: 10px; +} + +.paddingleft1rem { + padding-left: 1rem; +} + +.overflow { + overflow: hidden; +} + +.overflowauto { + overflow: auto; +} + +.overflowy-auto { + overflow: hidden; + overflow-y: auto; +} + +.relative { + position: relative; +} + +.absolute { + position: absolute; +} + +.fixed { + position: fixed; +} + +// 鍒嗛〉 +.elpagin { + text-align: left; + margin-top: 5px; +} + +.boxshadow { + box-shadow: 0px 5px 10px #eaedef; +} + +.boxshadow4 { + box-shadow: 0px 0px 4px #c2cbd4 +} + +.boxshadow69b0f7 { + box-shadow: 0px 0px 4px #3b5371 +} + +.borderbottom { + border-bottom: 1px solid #ebedef; +} + +.borderbottom345 { + border-bottom: 1px solid #c2cbd4; +} + +.border { + border: 1px solid #ebedef; +} + +.border2 { + border: 1px solid #91a2b3; +} + +.borderdashed { + border: 1px dashed #64a2e0; +} + +.borderradius { + border-radius: 4px; +} + +.background-fff { + background: #fff; +} + +.backgroundF2F2F2 { + background: #F2F2F2; +} + +.backgroundrgb { + background: rgb(7, 37, 73); +} + +.backgroundecf5ff { + background-color: #ecf5ff; +} + +.color-973BA5 { + color: #973BA5; +} + +.colorF56C6C { + color: #F56C6C; +} + +.colorfff { + color: #fff; +} + +.color409EFF { + color: #409EFF; +} + +.color636972 { + color: #636972; +} + +.color909399 { + color: #909399; +} + +.fontweight400 { + font-weight: 400; +} + +.fontweight600 { + font-weight: 600; +} + +.fontsize1_2rem { + font-size: 1.2rem; +} + +.fontsize14 { + font-size: 14px; +} + +.fontsize2rem { + font-size: 2rem; +} + +.fontsize4rem { + font-size: 4rem; +} + +.fontsize6rem { + font-size: 6rem; +} + +.fontsiez1rem { + font-size: 1rem; +} + +.fontsizeinitial { + font-size: initial; +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} + +.textalign { + text-align: right; +} + +.textindex2 { + text-indent: 2rem; +} + +.global-content { + width: 100%; + height: 100%; + overflow: hidden; +} + +.text-overflow { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap +} + +.hover { + &:hover { + background-color: #ecf5ff; + } + +} + +.bottom7 { + bottom: 7px; +} + +.right { + right: 10px +} + +.zindex { + z-index: 10; +} + +.pointer { + cursor: pointer; +} + +.search-bar{ + display: flex; + .form-view{ + flex-grow: 1; + } + .btn-view{ + flex-shrink: 0; + } +} + +.default-form-width{ + width: 220px; +} + +.subpage-style{ + box-sizing: border-box; + padding: 8px; + height: 100%; + display: flex; + flex-direction: column; + background-color: #ffffff; + .top-bar,.bottom-box{ + flex-shrink: 0; + } + .subpage-containter{ + flex-grow: 1; + overflow: hidden; + } +} +.pagination-box { + display: flex; + justify-content: flex-end; + padding-top: 4px; +} +.table-top-action-row,.table-top-action-sides-row{ + padding-bottom: 4px; +} +.table-top-action-sides-row{ + display: flex; + justify-content: space-between; +} +.project-table-list-box{ + display: flex; + flex-direction: column; + &>.table-top-action-row,&>.table-top-action-sides-row,&>.table-bottom-pagination{ + flex-shrink: 0; + } + &>.table-content{ + flex-grow: 1; + overflow: hidden; + } +} + +.project-modal { + .el-dialog__header,.el-dialog__footer{ + padding: 10px; + } + .el-dialog__headerbtn{ + top: 12px; + right: 10px; + } + .el-dialog__header{ + border-bottom: 1px solid #efefef; + } + .el-dialog__footer { + border-top: 1px solid #efefef; + } + .el-dialog__body{ + padding: 0; + } +} \ No newline at end of file diff --git a/qqjf-Web/src/styles/innner-circles.scss b/qqjf-Web/src/styles/innner-circles.scss new file mode 100644 index 0000000..e5e350a --- /dev/null +++ b/qqjf-Web/src/styles/innner-circles.scss @@ -0,0 +1,51 @@ +.inner-circles-loader:not(:required) { + position: relative; + display: inline-block; + width: 50px; + height: 50px; + margin-bottom: 10px; + overflow: hidden; + text-indent: -9999px; + background: rgba(25, 165, 152, 0.5); + border-radius: 50%; + transform: translate3d(0, 0, 0); + } + + .inner-circles-loader:not(:required)::before, + .inner-circles-loader:not(:required)::after { + position: absolute; + top: 0; + display: inline-block; + width: 50px; + height: 50px; + content: ""; + border-radius: 50%; + } + + .inner-circles-loader:not(:required)::before { + left: 0; + background: #c7efcf; + transform-origin: 0 50%; + animation: inner-circles-loader 3s infinite; + } + + .inner-circles-loader:not(:required)::after { + right: 0; + background: #eef5db; + transform-origin: 100% 50%; + animation: inner-circles-loader 3s 0.2s reverse infinite; + } + + @keyframes inner-circles-loader { + 0% { + transform: rotate(0deg); + } + + 50% { + transform: rotate(360deg); + } + + 100% { + transform: rotate(0deg); + } + } \ No newline at end of file diff --git a/qqjf-Web/src/styles/sidebar.scss b/qqjf-Web/src/styles/sidebar.scss new file mode 100644 index 0000000..6dc98cb --- /dev/null +++ b/qqjf-Web/src/styles/sidebar.scss @@ -0,0 +1,84 @@ +@import './variables.scss'; +#app { + .main-container { + height: 100%; + transition: margin-left .28s; + margin-left: $sideBarWidth; + position: relative; + } + + .sidebar-container { + position: fixed; + height: 100%; + width: $sideBarWidth !important; + left: 0; + top: 0; + right: 0; + bottom: 0; + overflow: hidden; + background: $menuBg; + transition: all .28s; + + .scrollbar-wrapper { + overflow-x: hidden !important; + } + + .el-scrollbar { + height: 100%; + } + + .svg-icon { + margin-right: 16px; + } + } + + .hidcontainer { + .sidebar-container { + width: 54px !important; + transition: all .28s; + } + + .main-container { + margin-left: 54px; + } + + .svg-icon { + margin-right: 20px; + } + } + ::-webkit-scrollbar { + width:5px; + height:10px; + + } + + /*澶栧眰杞ㄩ亾銆傚彲浠ョ敤display:none璁╁叾涓嶆樉绀猴紝涔熷彲浠ユ坊鍔犺儗鏅浘鐗囷紝棰滆壊鏀瑰彉鏄剧ず鏁堟灉*/ + ::-webkit-scrollbar-track { + width: 6px; + background-color:#eee; + -webkit-border-radius: 2em; + -moz-border-radius: 2em; + border-radius:2em; + + } + + /*婊氬姩鏉$殑璁剧疆*/ + + ::-webkit-scrollbar-thumb { + background-color:#cccccc; + background-clip:padding-box; + min-height:28px; + -webkit-border-radius: 2em; + -moz-border-radius: 2em; + border-radius:2em; + + } + /*婊氬姩鏉$Щ涓婂幓鐨勮儗鏅�*/ + + ::-webkit-scrollbar-thumb:hover { + background-color:#c5cfe4; + + } + + +} \ No newline at end of file diff --git a/qqjf-Web/src/styles/transition.scss b/qqjf-Web/src/styles/transition.scss new file mode 100644 index 0000000..be3f883 --- /dev/null +++ b/qqjf-Web/src/styles/transition.scss @@ -0,0 +1,31 @@ +/* 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); +} + +/* modal */ +.modal-leave-active, +.modal-enter-active { + transition: all .5s; +} + +.modal-enter { + opacity: 0; + transform: translateY(-100%); +} + +.modal-leave-to { + opacity: 0; + transform: translateY(100%); +} \ No newline at end of file diff --git a/qqjf-Web/src/styles/variables.scss b/qqjf-Web/src/styles/variables.scss new file mode 100644 index 0000000..5ae7a91 --- /dev/null +++ b/qqjf-Web/src/styles/variables.scss @@ -0,0 +1,35 @@ +// base color +$blue:#324157; +$light-blue:#3A71A8; +$red:#C03639; +$pink: #E65D6E; +$green: #30B08F; +$tiffany: #4AB7BD; +$yellow:#FEC171; +$panGreen: #30B08F; + +// sidebar +$menuText:#bfcbd9; +$menuActiveText:#409EFF; +$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951 + +$menuBg:#3a405a; +$menuHover:#263445; + +$subMenuBg:#1f2d3d; +$subMenuHover:#001528; + +$sideBarWidth: 180px; + +// 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; +} \ No newline at end of file diff --git a/qqjf-Web/src/utils/auth.js b/qqjf-Web/src/utils/auth.js new file mode 100644 index 0000000..08a43d6 --- /dev/null +++ b/qqjf-Web/src/utils/auth.js @@ -0,0 +1,15 @@ +import Cookies from 'js-cookie' + +const TokenKey = 'Admin-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/qqjf-Web/src/utils/axios.js b/qqjf-Web/src/utils/axios.js new file mode 100644 index 0000000..e1893d1 --- /dev/null +++ b/qqjf-Web/src/utils/axios.js @@ -0,0 +1,61 @@ +import request from './request' +import qs from 'qs'; +let axios={} +/** + * get鏂规硶锛屽搴攇et璇锋眰 + * @param {String} url [璇锋眰鐨剈rl鍦板潃] + * @param {Object} params [璇锋眰鏃舵惡甯︾殑鍙傛暟] + */ +axios.get = function (url, params = null) { + return new Promise((resolve, reject) => { + request + .get(url, { params }) + .then(res => { + resolve(res.data); + }) + .catch(e => { + reject(e); + }); + }); +} + +/** + * post鏂规硶锛屽搴攑ost璇锋眰 + * @param {String} url [璇锋眰鐨剈rl鍦板潃] + * @param {Object} params [璇锋眰鏃舵惡甯︾殑鍙傛暟] + */ + +axios.post = function (url, params) { + return new Promise((resolve, reject) => { + request + .post(url, params) + .then(res => { + resolve(res.data); + }) + .catch(e => { + reject(e); + }); + }); +}; + +/** + * put鏂规硶 + * @param {*} url + * @param {*} params + * @returns + */ + +axios.put = function (url, params) { + return new Promise((resolve, reject) => { + request + .put(url, params) + .then(res => { + resolve(res.data); + }) + .catch(e => { + reject(e); + }); + }); +}; + +export default axios \ No newline at end of file diff --git a/qqjf-Web/src/utils/date.js b/qqjf-Web/src/utils/date.js new file mode 100644 index 0000000..3f4fc02 --- /dev/null +++ b/qqjf-Web/src/utils/date.js @@ -0,0 +1,156 @@ +import dayjs from 'dayjs' +/** + * @description 鑾峰彇骞存湀鏃� 鏃跺垎绉� + * @returns {string} yyyy-MM-dd hh:mm:ss + */ +export function getDate(option) { + const date = new Date(); + let str = date.getFullYear() + '-' + addZero(date.getMonth() + 1) + '-' + addZero(date.getDate()); + + if (option && option.full) { + str += ' ' + addZero(date.getHours()) + ':' + addZero(date.getMinutes()) + ':' + addZero(date.getSeconds()); + } + return str; +} +/** + * @description 鑾峰彇骞存湀鏃� 鏃跺垎绉� + * @returns {string} yyyy-MM-dd hh:mm:ss + */ +export function getymdhms(option) { + const date = new Date(); + let str = + date.getFullYear() + + '-' + + addZero(date.getMonth() + 1) + + '-' + + addZero(date.getDate()) + + ' ' + + addZero(date.getHours()) + + ':' + + addZero(date.getMinutes()) + + ':' + + addZero(date.getSeconds()); + return str; +} +/** + * @description 鏍规嵁鏃堕棿鎴宠幏鍙栧勾鏈堟棩 + * @param {*} date + * @param {*} num + * @returns + */ +export function getimestampDate(option) { + let res = 'Invalid Date' + try{ + res = dayjs(option).format('YYYY-MM-DD HH:mm:ss') + }catch(e){ + //TODO handle the exception + } + return res; +} + +/** + * @description 鑾峰彇鎸囧畾鏃ユ湡鐩搁殧num澶� + * @param {String} date + * @param {String} num + * @returns {string} yyyy-MM-dd + */ +export function getAroundDay(date, num) { + var time = date ? new Date(date) : new Date(); + time.setDate(time.getDate() + num); + return time.getFullYear() + '-' + addZero(time.getMonth() + 1) + '-' + addZero(time.getDate()); +} + +/** + * @description 鑾峰彇涓婁釜鏈�1鍙� + * @param {String} date + * @param {String} num + * @returns {string} yyyy-MM-dd + */ +export function getLastMonth(date, num) { + const time = new Date(); + time.setTime(new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1)); + return time.getFullYear() + '-' + addZero(time.getMonth() + 1) + '-' + addZero(time.getDate()); +} +/** + * @description 鑾峰彇 浠婂ぉ宸﹀彸鍑犲ぉ鐨勬椂闂� + * @param {*} AddDayCount + * @returns {string} yyyy-MM-dd + */ + +// +export function GetDateStr(AddDayCount) { + var dd = new Date(); + dd.setDate(dd.getDate() + AddDayCount); //鑾峰彇AddDayCount澶╁悗鐨勬棩鏈� + var y = dd.getFullYear(); + var m = dd.getMonth() + 1; //鑾峰彇褰撳墠鏈堜唤鐨勬棩鏈� + if (m < 10) { + m = '0' + m; + } + var d = dd.getDate(); + if (d < 10) { + d = '0' + d; + } + return y + '-' + m + '-' + d; +} +/** + * @description 鑾峰彇 浠婂ぉ宸﹀彸鍑犲ぉ鐨勫皬鏃跺垎閽熺 + * @param {*} AddDayCount + * @returns + */ +export function GetTimeStr(AddDayCount) { + var dd = new Date(); + dd.setDate(dd.getDate() + AddDayCount); //鑾峰彇AddDayCount澶╁悗鐨勬棩鏈� + let hours = dd.getHours(); + if (hours < 10) { + hours = '0' + hours; + } + let min = dd.getMinutes(); + if (min < 10) { + min = '0' + min; + } + let soc = dd.getSeconds(); + if (soc < 10) { + soc = '0' + soc; + } + return hours + ':' + min + ':' + soc; +} + +export function CoutDown(StartTime, EndTime) { + let lefttime = parseInt((EndTime - StartTime) / 1000); + let d = parseInt(lefttime / (24 * 60 * 60)); + let h = parseInt((lefttime / (60 * 60)) % 24); + let m = parseInt((lefttime / 60) % 60); + let s = parseInt(lefttime % 60); + d = addZero(d); + h = addZero(h); + m = addZero(m); + s = addZero(s); + return { + day: d, + hours: h, + minute: m, + second: s + }; +} +export function coumdata(dataTime) { + // let lefttime = parseInt((EndTime - StartTime) / 1000); + + let d = parseInt(dataTime / (24 * 60 * 60)); + let h = parseInt((dataTime / (60 * 60)) % 24); + let m = parseInt((dataTime / 60) % 60); + let s = parseInt(dataTime % 60); + d = addZero(d); + h = addZero(h); + m = addZero(m); + s = addZero(s); + return { + day: d, + hours: h, + minute: m, + second: s + }; +} + +const addZero = function (date) { + return date > 9 ? date : '0' + date; +}; \ No newline at end of file diff --git a/qqjf-Web/src/utils/debounce.js b/qqjf-Web/src/utils/debounce.js new file mode 100644 index 0000000..cd2f5e8 --- /dev/null +++ b/qqjf-Web/src/utils/debounce.js @@ -0,0 +1,23 @@ +/** + * 鍑芥暟闃叉姈 + * @param {Function} func + * @param {number} delay + * @param {boolean} immediate + * @return {*} + */ + + export function debounce(func, delay, immediate = false) { + let timer, + context = this; + return (...args) => { + if (immediate) { + func.apply(context, args); + immediate = false; + return; + } + clearTimeout(timer); + timer = setTimeout(() => { + func.apply(context, args); + }, delay); + }; +} diff --git a/qqjf-Web/src/utils/excel.js b/qqjf-Web/src/utils/excel.js new file mode 100644 index 0000000..b317665 --- /dev/null +++ b/qqjf-Web/src/utils/excel.js @@ -0,0 +1,16 @@ + + +export function exportTableList(tHeader, filterVal, list, name) { + const data = formatJson(filterVal, list); + exportExecel(tHeader, data, name); + } + function exportExecel(header, data, name) { + require.ensure([], () => { + const { export_json_to_excel } = require('@/vendor/Export2Excel'); + + export_json_to_excel(header, data, name + '鍒楄〃excel'); + }); + } + function formatJson(filterVal, jsonData) { + return jsonData.map(v => filterVal.map(j => v[j])); + } \ No newline at end of file diff --git a/qqjf-Web/src/utils/getPageTitle.js b/qqjf-Web/src/utils/getPageTitle.js new file mode 100644 index 0000000..6c59f10 --- /dev/null +++ b/qqjf-Web/src/utils/getPageTitle.js @@ -0,0 +1,7 @@ +export default function getPageTitle(pageTitle) { + debugger; + if (pageTitle) { + return `${pageTitle}-${title}`; + } + return title; +} diff --git a/qqjf-Web/src/utils/index.js b/qqjf-Web/src/utils/index.js new file mode 100644 index 0000000..3225d3c --- /dev/null +++ b/qqjf-Web/src/utils/index.js @@ -0,0 +1,357 @@ +/** + * Created by PanJiaChen on 16/11/18. + */ + +/** + * 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 + // 濡傛灉璁惧畾涓篿mmediate===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, ' ') + } +} diff --git a/qqjf-Web/src/utils/input.js b/qqjf-Web/src/utils/input.js new file mode 100644 index 0000000..1d29696 --- /dev/null +++ b/qqjf-Web/src/utils/input.js @@ -0,0 +1,42 @@ +const MoneyTest = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/; +// 閲戦娣诲姞鍗冨垎浣� +const comdify = function (n) { + if(!n) return n; + let str = n.split('.'); + let re = /\d{1,3}(?=(\d{3})+$)/g; + let n1 = str[0].replace(re, "$&,"); + return str.length > 1 && str[1] ? `${n1}.${str[1]}` : `${n1}.00`; +}; +//鍘婚櫎鍗冨垎浣嶄腑鐨勨�橈紝' +const delcommafy = function (num){ + if(!num) return num; + num = num.toString(); + num = num.replace(/,/gi, ''); + return num; +}; +const valdateFn = function (rule,val,cb) { + setTimeout(() => { + if(val) { + let inputVal = delcommafy(val); + if (rule.test(inputVal)) { + cb() + } else { + cb('鍙兘鏄暟瀛楅噾棰�,鏈�澶氫袱浣嶅皬鏁�') + } + } + cb() + }) +} +// 楠岃瘉閲戦鏁板瓧鍙互涓鸿礋鏁� +const moneyValid = function (rule,val,cb) { + valdateFn(/((^-?[1-9]\d*)|^-?0)(\.\d{0,2}){0,1}$/,val,cb); +}; +// 楠岃瘉閲戦鏁板瓧涓嶅彲浠ヤ负璐熸暟 +const moneyNValid = function (rule,val,cb) { + valdateFn(MoneyTest,val,cb); +}; +// 鑾峰彇杈撳叆妗嗙殑鍊� +export function getInputValue (el) { + let inputVal = el || ''; + return comdify(delcommafy(inputVal)); +}; \ No newline at end of file diff --git a/qqjf-Web/src/utils/request.js b/qqjf-Web/src/utils/request.js new file mode 100644 index 0000000..aacb9b5 --- /dev/null +++ b/qqjf-Web/src/utils/request.js @@ -0,0 +1,96 @@ +import axios from 'axios'; +import Vue from 'vue'; +import { + MessageBox, + Message +} from 'element-ui'; +import Loading from './vab'; +import store from '@/store'; +import qs from 'qs'; +import { + getStorage, + setStorage +} from '@/utils/sessionStorage'; + +const service = axios.create({ + baseURL: process.env.VUE_APP_BASE_API, // api 鐨� base_url process.env.VUE_APP_BASE_API + timeout: 50000 // 璇锋眰瓒呮椂鏃堕棿 +}); +//璇锋眰 +service.interceptors.request.use(config => { + return config; + + error => { + console.log(error); + return Promise.reject(error); + }; +}); + +// //鍝嶅簲 +service.interceptors.response.use( + response => { + const res = response.data; + + if (response.status === 200) { + return Promise.resolve(response); + } else { + Message.error('鎺ュ彛璇锋眰閿欒'); + + return Promise.reject(response); + } + }, + error => { + if (error.response) { + switch (error.response.status) { + case 401: + MessageBox.confirm('鐧诲綍鐘舵�佸凡杩囨湡锛屾偍鍙互缁х画鐣欏湪璇ラ〉闈紝鎴栬�呴噸鏂扮櫥褰�', '绯荤粺鎻愮ず', { + confirmButtonText: '閲嶆柊鐧诲綍', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + store.dispatch('user/logout').then(() => { + window.location.href = '/'; + }); + }) + .catch(() => { + if (!getStorage('accessToken')) { + store.dispatch('user/logout').then(() => { + window.location.href = '/'; + }); + } + }); + break; + case 404: + Message({ + message: '寰堟姳姝夛紝璧勬簮鏈壘鍒�!', + type: 'error' + }); + break; + case 500: + Message({ + message: '缃戠粶閿欒锛岃绋嶅悗鍐嶈瘯!', + type: 'error' + }); + break; + case 503: + Message({ + message: '绯荤粺閿欒锛岃绋嶅悗鍐嶈瘯!', + type: 'error' + }); + break; + case 504: + Message({ + message: '缃戠粶瓒呮椂锛岃绋嶅悗鍐嶈瘯!', + type: 'error' + }); + break; + } + + Vue.prototype.$Loading(); + return Promise.reject(error); + } + } +); + +export default service; \ No newline at end of file diff --git a/qqjf-Web/src/utils/sessionStorage.js b/qqjf-Web/src/utils/sessionStorage.js new file mode 100644 index 0000000..7f737c9 --- /dev/null +++ b/qqjf-Web/src/utils/sessionStorage.js @@ -0,0 +1,39 @@ +/** + * 璁剧疆sessionStorage + * @param {string} key + * @param {any} value + */ + export function setCache(key, value) { + if (value == undefined || value == null) { + window.sessionStorage.setItem(key, value); + } else { + window.sessionStorage.setItem(key, JSON.stringify(value)); + } +} + +/** + * 鑾峰彇sessionStorage + * @param {string} key + * @returns {any} + */ +export function getCache(key) { + if (window.sessionStorage.getItem(key) == 'undefined' || window.sessionStorage.getItem(key) == null) { + return undefined; + } + return JSON.parse(window.sessionStorage.getItem(key)); +} + +/** + * 娓呴櫎鎸囧畾sessionStorage + * @param {string} key + */ +export function removeCache(key) { + return window.sessionStorage.removeItem(key); +} + +/** + * 娓呴櫎鎵�鏈塻essionStorage + */ +export function removeAll(key) { + return window.sessionStorage.clear(); +} diff --git a/qqjf-Web/src/utils/throttle.js b/qqjf-Web/src/utils/throttle.js new file mode 100644 index 0000000..f1e1f34 --- /dev/null +++ b/qqjf-Web/src/utils/throttle.js @@ -0,0 +1,18 @@ +export function throttle(fun, delay) { + let last, deferTimer; + return function (args) { + let that = this; + let _args = arguments; + let now = +new Date(); + if (last && now < last + delay) { + clearTimeout(deferTimer); + deferTimer = setTimeout(() => { + last = now; + fun.apply(that, _args); + }, delay); + } else { + last = now; + fun.apply(that, _args); + } + }; +} \ No newline at end of file diff --git a/qqjf-Web/src/utils/vab.js b/qqjf-Web/src/utils/vab.js new file mode 100644 index 0000000..8ddb379 --- /dev/null +++ b/qqjf-Web/src/utils/vab.js @@ -0,0 +1,23 @@ +import { Loading } from "element-ui"; +const install =(Vue,opts={})=>{ + Vue.prototype.$Loading=(lodi=false)=>{ + let loading= Loading.service({ + lock: true, + text: '姝e湪鍔犺浇', + spinner: "inner-circles-loader", + background: "rgba(0,0,0,0.4)", + }); + if (lodi==true) { + Loading.service({ + lock: true, + text: '姝e湪鍔犺浇', + spinner: "inner-circles-loader", + background: "rgba(0,0,0,0.4)", + }); + }else{ + loading.close() + } + + } +} +export default install \ No newline at end of file diff --git a/qqjf-Web/src/utils/validate.js b/qqjf-Web/src/utils/validate.js new file mode 100644 index 0000000..6b3ac41 --- /dev/null +++ b/qqjf-Web/src/utils/validate.js @@ -0,0 +1,87 @@ +/** + * 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 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 reg.test(email) +} + +/** + * @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) +} diff --git a/qqjf-Web/src/vendor/Blob.js b/qqjf-Web/src/vendor/Blob.js new file mode 100644 index 0000000..a288f1c --- /dev/null +++ b/qqjf-Web/src/vendor/Blob.js @@ -0,0 +1,162 @@ +(function (view) { + "use strict"; + + view.URL = view.URL || view.webkitURL; + + if (view.Blob && view.URL) { + try { + new Blob; + return; + } catch (e) {} + } + + // Internally we use a BlobBuilder implementation to base Blob off of + // in order to support older browsers that only have BlobBuilder + var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function(view) { + var + get_class = function(object) { + return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1]; + } + , FakeBlobBuilder = function BlobBuilder() { + this.data = []; + } + , FakeBlob = function Blob(data, type, encoding) { + this.data = data; + this.size = data.length; + this.type = type; + this.encoding = encoding; + } + , FBB_proto = FakeBlobBuilder.prototype + , FB_proto = FakeBlob.prototype + , FileReaderSync = view.FileReaderSync + , FileException = function(type) { + this.code = this[this.name = type]; + } + , file_ex_codes = ( + "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR " + + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR" + ).split(" ") + , file_ex_code = file_ex_codes.length + , real_URL = view.URL || view.webkitURL || view + , real_create_object_URL = real_URL.createObjectURL + , real_revoke_object_URL = real_URL.revokeObjectURL + , URL = real_URL + , btoa = view.btoa + , atob = view.atob + + , ArrayBuffer = view.ArrayBuffer + , Uint8Array = view.Uint8Array + ; + FakeBlob.fake = FB_proto.fake = true; + while (file_ex_code--) { + FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1; + } + if (!real_URL.createObjectURL) { + URL = view.URL = {}; + } + URL.createObjectURL = function(blob) { + var + type = blob.type + , data_URI_header + ; + if (type === null) { + type = "application/octet-stream"; + } + if (blob instanceof FakeBlob) { + data_URI_header = "data:" + type; + if (blob.encoding === "base64") { + return data_URI_header + ";base64," + blob.data; + } else if (blob.encoding === "URI") { + return data_URI_header + "," + decodeURIComponent(blob.data); + } if (btoa) { + return data_URI_header + ";base64," + btoa(blob.data); + } else { + return data_URI_header + "," + encodeURIComponent(blob.data); + } + } else if (real_create_object_URL) { + return real_create_object_URL.call(real_URL, blob); + } + }; + URL.revokeObjectURL = function(object_URL) { + if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) { + real_revoke_object_URL.call(real_URL, object_URL); + } + }; + FBB_proto.append = function(data/*, endings*/) { + var bb = this.data; + // decode data to a binary string + if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) { + var + str = "" + , buf = new Uint8Array(data) + , i = 0 + , buf_len = buf.length + ; + for (; i < buf_len; i++) { + str += String.fromCharCode(buf[i]); + } + bb.push(str); + } else if (get_class(data) === "Blob" || get_class(data) === "File") { + if (FileReaderSync) { + var fr = new FileReaderSync; + bb.push(fr.readAsBinaryString(data)); + } else { + // async FileReader won't work as BlobBuilder is sync + throw new FileException("NOT_READABLE_ERR"); + } + } else if (data instanceof FakeBlob) { + if (data.encoding === "base64" && atob) { + bb.push(atob(data.data)); + } else if (data.encoding === "URI") { + bb.push(decodeURIComponent(data.data)); + } else if (data.encoding === "raw") { + bb.push(data.data); + } + } else { + if (typeof data !== "string") { + data += ""; // convert unsupported types to strings + } + // decode UTF-16 to binary string + bb.push(unescape(encodeURIComponent(data))); + } + }; + FBB_proto.getBlob = function(type) { + if (!arguments.length) { + type = null; + } + return new FakeBlob(this.data.join(""), type, "raw"); + }; + FBB_proto.toString = function() { + return "[object BlobBuilder]"; + }; + FB_proto.slice = function(start, end, type) { + var args = arguments.length; + if (args < 3) { + type = null; + } + return new FakeBlob( + this.data.slice(start, args > 1 ? end : this.data.length) + , type + , this.encoding + ); + }; + FB_proto.toString = function() { + return "[object Blob]"; + }; + FB_proto.close = function() { + this.size = this.data.length = 0; + }; + return FakeBlobBuilder; + }(view)); + + view.Blob = function Blob(blobParts, options) { + var type = options ? (options.type || "") : ""; + var builder = new BlobBuilder(); + if (blobParts) { + for (var i = 0, len = blobParts.length; i < len; i++) { + builder.append(blobParts[i]); + } + } + return builder.getBlob(type); + }; +}(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this)); diff --git a/qqjf-Web/src/vendor/Export2Excel.js b/qqjf-Web/src/vendor/Export2Excel.js new file mode 100644 index 0000000..b5fbbf0 --- /dev/null +++ b/qqjf-Web/src/vendor/Export2Excel.js @@ -0,0 +1,139 @@ +/* eslint-disable */ +require('script-loader!file-saver'); +require('./Blob.js'); +require('script-loader!xlsx/dist/xlsx.core.min'); +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") +} + +function formatJson(jsonData) { + // console.log(jsonData) +} +export function export_json_to_excel(th, jsonData, defaultTitle) { + + /* original data */ + + var data = jsonData; + data.unshift(th); + var ws_name = "SheetJS"; + + var wb = new Workbook(), ws = sheet_from_array_of_arrays(data); + + + /* 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'}); + var title = defaultTitle || '鍒楄〃' + saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx") +} diff --git a/qqjf-Web/src/views/Didproject/components/classify.vue b/qqjf-Web/src/views/Didproject/components/classify.vue new file mode 100644 index 0000000..20cdeb3 --- /dev/null +++ b/qqjf-Web/src/views/Didproject/components/classify.vue @@ -0,0 +1,107 @@ +<template> + <div class="width99 padding-top2 margintopbot flex justify-between align-center"> + <div + class="didproject-title flex justify-around align-center border borderradius overflow pointer" + v-for="(item, index) in titlelist" + :key="index" + > + <div class="height width35 flex align-center justify-center overflow padding10"> + <svg-icon class="fontsize4rem text-center" :style="'color:' + item.color" :icon-class="item.icon" /> + </div> + <div class="heigth width55 padding10 overflow"> + <p class="fontsiez1rem">{{ item.titel }}</p> + + <p class="text-center fontsize2rem fontweight600 color409EFF margin-top15"> + <countTo :startVal="startVal" :endVal="item.mun" :duration="3000"></countTo> + </p> + </div> + </div> + </div> +</template> + +<script> +import countTo from 'vue-count-to'; +import { GetStorageOverviewData } from '@/api/Didproject'; +export default { + data() { + return { + startVal: 0, + titlelist: [ + { + icon: 'documentation', + titel: '搴撲綅鎬绘暟', + mun: 0, + color: '#40C9C6' + }, + { + icon: 'storage', + titel: '鏈夎揣搴撲綅', + mun: 0, + color: '#F4516C' + }, + { + icon: 'him', + titel: '甯︿欢鍣ㄥ叿', + mun: 0, + color: '#36A3F7' + }, + { + icon: 'clipboard', + titel: '绌哄櫒鍏锋暟', + mun: 0, + color: '#34BFA3' + }, + { + icon: 'table', + titel: '鍒朵欢鎬绘暟', + mun: 1, + color: '#ffc637' + } + ], + cleartime: null + }; + }, + components: { countTo }, + mounted() { + this.GetStorageOverviewData(); + this.cleartime = setInterval(() => { + this.GetStorageOverviewData(); + }, 60000); + }, + methods: { + //绔嬪簱鎬昏鍜屽埗浠舵�昏 + GetStorageOverviewData() { + // no 缂栧彿锛泃itle 鏍囬锛泇alue 鏁伴噺 + GetStorageOverviewData().then(res => { + let data = res.data || []; + this.titlelist.forEach(item => { + data.forEach(element => { + if (item.titel == element.titel) { + item.mun = element.value; + } + }); + }); + }); + } + }, + beforeDestroy() { + if (this.cleartime) { + clearInterval(this.cleartime); + this.cleartime = null; + } + } +}; +</script> + +<style lang="scss" scoped> +.didproject-title { + width: 18%; + padding: 0 0; + box-shadow: 0 0 4px #c1c9d0; + background: #f0f2f5; + transition: all 0.3s; + &:hover { + box-shadow: 0 0 4px #99b7e2; + } +} +</style> diff --git a/qqjf-Web/src/views/Didproject/components/didinquer.vue b/qqjf-Web/src/views/Didproject/components/didinquer.vue new file mode 100644 index 0000000..c2a23a2 --- /dev/null +++ b/qqjf-Web/src/views/Didproject/components/didinquer.vue @@ -0,0 +1,33 @@ +<template> + <div class="flex align-center justify-end"> + <div id="topinquer" class="flex align-center"> + <div class="flex align-center margin-right15"> + <label>鎵�灞炰粨搴擄細</label> + <el-select v-model="iqnuer.enable" size="mini" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in enableList" :key="item.value" :label="item.label" :value="item.value"> </el-option> + </el-select> + </div> + <el-button type="primary" size="mini">鏌ヨ</el-button> + </div> + </div> +</template> + +<script> +export default { + data() { + return { + iqnuer: {}, + enableList: [] + }; + }, + props: {} +}; +</script> + +<style lang="scss" scoped> +#topinquer { + ::v-deep .el-select { + // width: 100px; + } +} +</style> diff --git a/qqjf-Web/src/views/Didproject/components/didnav.vue b/qqjf-Web/src/views/Didproject/components/didnav.vue new file mode 100644 index 0000000..e1bdf56 --- /dev/null +++ b/qqjf-Web/src/views/Didproject/components/didnav.vue @@ -0,0 +1,111 @@ +<template> + <div class="width99 padding-top2 margintopbot flex justify-between align-center"> + <div + class="didproject-title flex justify-around align-center border borderradius overflow pointer" + v-for="(item, index) in titlelist" + :key="index" + > + <div class="height width35 flex align-center justify-center overflow padding10"> + <svg-icon class="fontsize4rem text-center" :style="'color:' + item.color" :icon-class="item.icon" /> + </div> + <div class="heigth width55 padding10 overflow"> + <p class="fontsiez1rem">{{ item.titel }}</p> + + <p class="text-center fontsize2rem fontweight600 color409EFF margin-top15"> + <countTo :startVal="startVal" :endVal="item.mun" :duration="3000"></countTo> + </p> + </div> + </div> + </div> +</template> + +<script> +import countTo from 'vue-count-to'; +import { GetHomeNumData, GetHomeBarItemData } from '@/api/Didproject'; +export default { + data() { + return { + startVal: 0, + titlelist: [ + { + icon: 'in-storage', + titel: '浠婃棩鍏ュ簱闆朵欢鏁�', + mun: 0, + color: '#40C9C6' + }, + { + icon: 'skill', + titel: '浠婃棩鍑哄簱闆朵欢鏁�', + mun: 0, + color: '#F4516C' + }, + { + icon: 'example', + titel: '浠婃棩鍏ュ簱鍣ㄥ叿鏁�', + mun: 0, + color: '#36A3F7' + }, + { + icon: 'trade', + titel: '浠婃棩鍑哄簱鍣ㄥ叿鏁�', + mun: 0, + color: '#34BFA3' + }, + { + icon: 'record-chart', + titel: '瓒呮湡闆朵欢鏁伴噺', + mun: 1, + color: '#ffc637' + } + ], + cleartime: null + }; + }, + components: { countTo }, + mounted() { + this.GetHomeNumData(); + this.cleartime = setInterval(() => { + this.GetHomeNumData(); + }, 60000); + }, + methods: { + //浠婃棩鍑哄叆搴撴暟鎹� + GetHomeNumData() { + if (this.cleartime) { + clearInterval(this.cleartime); + this.cleartime = null; + } + // no 缂栧彿锛泃itle 鏍囬锛泇alue 鏁伴噺 + GetHomeNumData().then(res => { + let data = res.data || []; + this.titlelist.forEach(item => { + data.forEach(element => { + if (item.titel == element.titel) { + item.mun = element.value; + } + }); + }); + }); + } + }, + beforeDestroy() { + if (this.cleartime) { + clearInterval(this.cleartime); + this.cleartime = null; + } + } +}; +</script> + +<style lang="scss" scoped> +.didproject-title { + width: 18%; + padding: 0px 0; + box-shadow: 0 0 4px #c1c9d0; + background: #f0f2f5; + transition: all 0.3s; + &:hover { + box-shadow: 0 0 4px #99b7e2; + } +} +</style> diff --git a/qqjf-Web/src/views/Didproject/components/lineEcharts.vue b/qqjf-Web/src/views/Didproject/components/lineEcharts.vue new file mode 100644 index 0000000..46fd1f5 --- /dev/null +++ b/qqjf-Web/src/views/Didproject/components/lineEcharts.vue @@ -0,0 +1,215 @@ +<template> + <div class="chart-wrapper" ref="didline"></div> +</template> + +<script> +import resize from '@/mixins/resize'; +const echarts = require('echarts'); +export default { + name: 'placePie', + props: { + titleechart: { + type: String, + default: '' + }, + linelist: { + type: Object, + default: () => {} + }, + colorList: { + type: Array, + default: () => [] + } + }, + mixins: [resize], + data() { + return {}; + }, + mounted() { + this.initEchart(); + }, + methods: { + initEchart() { + const colorList = ['#ffc637', '#fc7293', '#8477e9', '#2599f0', '#31c3ea', '#17d8b9', '#e8bdf3']; + let _this = this; + let serieslist = []; + + let data = this.linelist.data; + if (data) { + data.forEach((item, index) => { + serieslist.push({ + name: item.name, + type: 'bar', + data: item.xdata, + barWidth: 15, + barGap: 1, //鏌遍棿璺濈 + label: { + //鍥惧舰涓婄殑鏂囨湰鏍囩 + normal: { + show: true, + position: 'top', + textStyle: { + color: '#a8aab0', + fontStyle: 'normal', + fontFamily: '寰蒋闆呴粦', + fontSize: 14 + } + } + }, + itemStyle: { + normal: { + show: true, + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: this.colorList[index] + }, + { + offset: 1, + color: this.colorList[index] + } + ]), + barBorderRadius: 50, + borderWidth: 0 + } + } + }); + }); + } + + this.myChart = echarts.init(this.$refs.didline); + this.myChart.setOption( + { + title: { + text: this.linelist && this.linelist.data ? this.titleechart : '鏆傛棤鏁版嵁', + textStyle: { + fontSize: 22 + }, + subtextStyle: { + fontSize: 22, + fontWeight: 'bold' + }, + left: '45%', + x: 'center', + y: 0, + itemGap: 10 + }, + tooltip: { + //鎻愮ず妗嗙粍浠� + trigger: 'axis', + // formatter: '{b}<br />{a0}: {c0}<br />{a1}: {c1}', + axisPointer: { + type: 'shadow', + label: { + backgroundColor: '#6a7985' + } + }, + textStyle: { + // color: '#fff', + fontStyle: 'normal', + fontFamily: '寰蒋闆呴粦', + fontSize: 12 + } + }, + grid: { + left: '1%', + right: '1%', + bottom: '1%', + top: '15%', + // padding:'0 0 10 0', + containLabel: true + }, + legend: { + //鍥句緥缁勪欢锛岄鑹插拰鍚嶅瓧 + right: '1%', + top: '0%', + itemGap: 16, + itemWidth: 18, + itemHeight: 10, + data: this.linelist.legend, + textStyle: { + color: '#a8aab0', + fontStyle: 'normal', + fontFamily: '寰蒋闆呴粦', + fontSize: 12 + } + }, + xAxis: [ + { + type: 'category', + // boundaryGap: true,//鍧愭爣杞翠袱杈圭暀鐧� + data: this.linelist.xdata, + // data: Axdata, + axisLabel: { + interval: 0, //璁剧疆涓� 1锛岃〃绀恒�庨殧涓�涓爣绛炬樉绀轰竴涓爣绛俱�� + margin: 10, + textStyle: { + fontSize: 12 + } + }, + axisLine: { show: true, lineStyle: { color: '#636972', width: 2 } }, + splitLine: { + show: false, + lineStyle: { color: '#2b3442', width: 1 } + }, + axisTick: { + show: false + } + } + ], + yAxis: [ + { + type: 'value', + splitNumber: 5, + axisLabel: { + textStyle: { + fontSize: 12 + } + }, + axisLine: { + lineStyle: { + color: '#636972', + width: 1 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: true, + lineStyle: { + color: '#636972' + } + } + } + ], + dataZoom: [ + { + type: 'inside', + startValue: 0, + endValue: 10 + } + ], + series: serieslist + }, + true + ); + + // this.myChart.getZr().on('click', function (res) { + // const { href } = _this.$router.resolve({ + // path: '/output' + // }); + // window.open(href, '_blank'); + // }); + } + }, + watch: { + linelist: { + handler() { + this.initEchart(); + }, + deep: true + } + } +}; +</script> diff --git a/qqjf-Web/src/views/Didproject/components/notice.vue b/qqjf-Web/src/views/Didproject/components/notice.vue new file mode 100644 index 0000000..b5133b7 --- /dev/null +++ b/qqjf-Web/src/views/Didproject/components/notice.vue @@ -0,0 +1,83 @@ +<template> + <div class="main-home-notice el-alert--warning is-light" v-if="visible" @click.stop="onClose"> + <div class="left-icon"><i class="el-icon-warning"></i></div> + <div class="notice-view"> + <auto-scroll :step-speed="4000" dir="horizontal"> + <div class="notice-item" v-for="(item, index) in notices" :key="'notice-item-' + index"> + {{ index + 1 }}銆侀浂浠跺彿锛歿{item.itemName}}锛岄浂浠跺悕绉帮細{{item.itemDes}}锛岃秴闄愩�傜洰鍓嶅簱瀛�<span class="blue-f">{{item.itemNum}}</span>浠讹紝涓嬮檺<span class="red-f">{{item.minStorage}}</span>浠讹紝涓婇檺<span class="red-f">{{item.maxStorage}}</span>浠躲�� + </div> + </auto-scroll> + </div> + </div> +</template> + +<script> +import AutoScroll from '@/components/autoscroll/index.vue'; +export default { + name: 'mainHomeNotice', + components: { AutoScroll }, + props: { + notices: { + type: Array, + default: function () { + return []; + } + }, + visible: { + type: Boolean, + default: false + } + }, + methods: { + onClose() { + this.$emit('update:visible', false); + } + } +}; +</script> + +<style lang="scss" scoped> +.main-home-notice { + $leftWidth: 36px; + position: absolute; + top: 0; + left: 0; + width: 100%; + box-sizing: border-box; + z-index: 20; + font-size: 20px; + height: 40px; + padding-left: $leftWidth; + cursor: default; + .left-icon { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: $leftWidth; + display: flex; + align-items: center; + justify-content: center; + } + .notice-view { + height: 100%; + display: flex; + align-items: center; + } + .notice-item { + height: 100%; + display: flex; + align-items: center; + margin-right: 20px; + &:last-child { + margin-right: 0; + } + .blue-f{ + color:#409eff; + } + .red-f{ + color:#ff0000; + } + } +} +</style> diff --git a/qqjf-Web/src/views/Didproject/components/pieEcharts.vue b/qqjf-Web/src/views/Didproject/components/pieEcharts.vue new file mode 100644 index 0000000..c26d84a --- /dev/null +++ b/qqjf-Web/src/views/Didproject/components/pieEcharts.vue @@ -0,0 +1,130 @@ +<template> + <div class="chart-wrapper" ref="placePie"></div> +</template> + +<script> +import resize from '@/mixins/resize'; +const echarts = require('echarts'); +export default { + name: 'placePie', + props: { + chartData: { + type: Object + } + }, + mixins: [resize], + data() { + return {}; + }, + mounted() { + this.initEchart(); + }, + methods: { + initEchart() { + let _this = this; + const colorList = ['#8477e9', '#ffc637', '#fc7293', '#2599f0', '#31c3ea', '#17d8b9', '#e8bdf3']; + this.myChart = echarts.init(this.$refs.placePie); + this.myChart.setOption( + { + color: colorList, + title: { + text: '搴撲綅绫诲瀷锛�' + this.chartData.titel, + top: '0%', + left: '10%', + textAlign: 'left', + textStyle: { + fontSize: 14, + fontWeight: '400' + } + }, + tooltip: { + trigger: 'item', + formatter: '{a} <br/>{b} : {c}<br/>', + // + '鍗犳瘮锛�' + '{d}' + '%' + + position: function (pos, params, dom, rect, size) { + var obj = { bottom: '10%' }; + obj[['left', 'right'][+(pos[0] < size.viewSize[0] / 2)]] = 5; + return obj; + } + }, + + legend: { + show: this.chartData.list.length > 0, + bottom: '10%', //寤禮杞村眳涓� + right: '0', + type: 'scroll', + align: 'right', + orient: 'vertival', + itemHeight: 11, + itemWidth: 11, + pageTextStyle: { + color: '#556677' + }, + pageIconColor: '#556677', + + color: '#556677', + fontSize: 14, + data: this.chartData.list.map(item => item.name) + }, + series: [ + { + name: this.chartData.titel, + type: 'pie', + radius: ['65%', '80%'], + center: ['50%', '50%'], + data: this.chartData.list, + // roseType: 'radius', //area + label: { + show: true, + position: 'center', + + fontSize: 14, + color: '#556677', + + formatter: function (params) { + let sum = _this.chartData.list[0].value + _this.chartData.list[1].value; + let val_1 = _this.chartData.list[0].value / sum; + val_1 = JSON.stringify(val_1) != 'null' ? JSON.stringify(val_1 * 100).slice(0, 5) : 0; + let val_2 = _this.chartData.list[1].value / sum; + val_2 = JSON.stringify(val_2) != 'null' ? JSON.stringify(val_2 * 100).slice(0, 5) : 0; + return ( + _this.chartData.list[0].name + + ':' + + _this.chartData.list[0].value + + // val_1 + + // '%' + + '\n\n' + + _this.chartData.list[1].name + + ':' + + _this.chartData.list[1].value + + // val_2 + + // '%' + + '\n\n浣跨敤鐜�:' + + _this.chartData.placeRate + ); + } + }, + labelLine: { + show: false, + length: 10, + length2: 5, + smooth: false + } + } + ] + }, + true + ); + } + }, + watch: { + chartData: { + handler() { + this.initEchart(); + }, + deep: true + } + } +}; +</script> diff --git a/qqjf-Web/src/views/Didproject/index.vue b/qqjf-Web/src/views/Didproject/index.vue new file mode 100644 index 0000000..dfed4b9 --- /dev/null +++ b/qqjf-Web/src/views/Didproject/index.vue @@ -0,0 +1,263 @@ +<template> + <div id="Didproject" class="global-content"> + <div class="width height overflowy-auto"> + <div class="height250 overflow"> + <div class="flex justify-end align-centent"> + <el-date-picker + v-model="daterange" + size="mini" + type="daterange" + value-format="yyyy-MM-dd" + range-separator="鑷�" + :clearable="false" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button class="margin-left margin-right" type="primary" size="mini" @click="derive">瀵煎嚭</el-button> + </div> + <did-nav /> + <classify /> + </div> + <!-- height-calc280 --> + <div class="width margin-top10px overflowy-auto"> + <div class="margintopbot paddingtopbottom width overflow"> + <p class="fontsize2rem text-center">璐т綅浣跨敤瀹炴椂鍥�</p> + <div class="flex flex-wrap"> + <div + class="did-echarts margin-top10px margin-right width30" + v-for="(item, index) in chartData" + :key="index + 'pieechart'" + > + <pie-echarts class="width height" :chartData="item" /> + </div> + </div> + </div> + <div class="margintopbot width overflow"> + <p class="fontsize2rem text-center">闆朵欢鍑哄叆搴撶粺璁�</p> + <div class="width margintopbot flex justify-end"> + <el-date-picker + v-model="datatime" + size="mini" + type="datetimerange" + value-format="yyyy-MM-dd HH:mm:ss" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button class="margin-left margin-right" type="primary" size="mini" @click="goodsinquer">鏌ヨ</el-button> + <el-button class="margin-left margin-right" type="primary" size="mini" @click="linkTo">璺宠浆</el-button> + </div> + <div class="width98 margintopbot echart-height"> + <line-echart + titleechart="闆朵欢鏁伴噺缁熻" + :linelist="BarItemlinelist" + :colorList="barcolorList" + class="width height" + /> + </div> + <div class="width98 margintopbot echart-height"> + <line-echart + titleechart="鍣ㄥ叿鍑哄叆搴撶粺璁�" + :linelist="Containerlinelist" + :colorList="concolorList" + class="width height" + /> + </div> + </div> + </div> + </div> + + <top-notice :visible.sync="noticeVisible" :notices="noticeData"></top-notice> + </div> +</template> + +<script> +import DidInquer from './components/didinquer'; +import DidNav from './components/didnav'; +import Classify from './components/classify.vue'; +import PieEcharts from './components/pieEcharts'; +import LineEchart from './components/lineEcharts'; +import { + GetHomePieData, + GetHomeBarItemData, + GetHomeBarContainerData, + GetHomeNumDataByDate, + GetWarnings +} from '@/api/Didproject'; +import { getDate, GetDateStr, GetTimeStr, getimestampDate, getymdhms } from '@/utils/date'; +const { Didproject } = require('@/components/tableContainer/tableHead'); +import { exportTableList } from '@/utils/excel'; +import TopNotice from './components/notice.vue'; +// import { SearchPermission, AddOrUpdateRoleVsPermission, GetUserRoleAllPermission } from '@/api/role-auth'; +export default { + components: { DidInquer, DidNav, PieEcharts, LineEchart, Classify, TopNotice }, + data() { + return { + daterange: [GetDateStr(0), GetDateStr(0)], + datatime: [GetDateStr(-15) + ' 00:00:00', getDate() + ' ' + GetTimeStr(0)], + chartData: [], + BarItemlinelist: {}, //闆朵欢鍑哄叆鏁伴噺 + Containerlinelist: {}, //鍑哄叆搴撴暟閲� + clearIntervaltime: null, + BarItemlineshow: false, + Containerline: false, + barcolorList: ['#ffc637', '#fc7293', '#8477e9', '#2599f0', '#31c3ea', '#17d8b9', '#e8bdf3'], + concolorList: ['#31c3ea', '#17d8b9', '#2599f0', '#e8bdf3', '#ffc637', '#fc7293', '#8477e9'], + noticeVisible: false, + noticeData: [] + }; + }, + mounted() { + this.getWarnings(() => { + this.GetHomePieData(); + this.GetHomeBarItemData(); + this.GetHomeBarContainerData(); + this.clearIntervaltime = setInterval(() => { + this.GetHomePieData(); + }, 60000); + }); + }, + methods: { + //鏃堕棿鏌ヨ + goodsinquer() { + this.GetHomeBarItemData(); + this.GetHomeBarContainerData(); + }, + //鍚勭被鍨嬪簱浣嶄娇鐢ㄧ粺璁� + GetHomePieData() { + //placeType 搴撲綅绫诲瀷锛沺laceTotalNum 鎬诲簱浣嶆暟锛沺laceFullNum 宸茬敤搴撲綅鏁帮紱placeRate 浣跨敤鐜囷紱 + GetHomePieData().then(res => { + if (res.code == 0) { + let data = res.data; + let pielist = []; + data.forEach((element, index) => { + pielist.push({ titel: '', placeRate: '', list: [] }); + + for (let i in element) { + if (i == 'placeVal' || i == 'placeOtherVal') { + pielist[index].list.push({ + name: + i == 'placeOtherVal' + ? '鏈敤搴撲綅鏁�' + : i == 'placeVal' + ? '宸茬敤搴撲綅鏁�' + : i == 'placeRate' + ? '浣跨敤鐜�' + : i, + value: element[i] + }); + } else if (i == 'placeType') { + pielist[index].titel = element[i]; + } else if (i == 'placeRate') { + pielist[index].placeRate = element[i]; + } + } + }); + this.chartData = pielist; + console.log(this.chartData); + } + }); + }, + //鑾峰彇闆朵欢鐨勫嚭鍏ュ簱鏁伴噺 + GetHomeBarItemData() { + let time = { + startTime: this.datatime ? this.datatime[0] : '', + endTime: this.datatime ? this.datatime[1] : '' + }; + this.BarItemlineshow = false; + GetHomeBarItemData(time).then(res => { + this.BarItemlinelist = res.data; + this.BarItemlineshow = true; + }); + }, + //鑾峰彇鍣ㄥ叿鐨勫嚭鍏ュ簱鏁伴噺 + GetHomeBarContainerData() { + let time = { + startTime: this.datatime ? this.datatime[0] : '', + endTime: this.datatime ? this.datatime[1] : '' + }; + this.$Loading(true); + this.Containerline = false; + GetHomeBarContainerData(time).then(res => { + this.Containerlinelist = res.data; + this.Containerline = true; + this.$Loading(); + }); + }, + //璺宠浆澶у睆 + linkTo() { + const { href } = this.$router.resolve({ + path: '/output' + }); + window.open(href, '_blank'); + }, + //瀵煎嚭 + derive() { + let tabledata = []; + let tHeader = []; + let filterVal = []; + Didproject.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + this.$Loading(true); + GetHomeNumDataByDate({ stDate: this.daterange[0], edDate: this.daterange[1] }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach((element, index) => { + tabledata.push({ + time: getimestampDate(element.time) + }); + element.homeNumDataEntityList.forEach(item => { + Didproject.forEach(vl => { + if (item.titel == vl.columnDescription) { + tabledata[index][vl.columnName] = item.value; + } + }); + }); + }); + exportTableList(tHeader, filterVal, tabledata, '搴撳瓨鏁版嵁' + getymdhms()); + this.$Loading(false); + } + }); + }, + getWarnings(callback) { + GetWarnings() + .then(d => { + if (d.code === 0) { + this.noticeData = d.data || []; + this.noticeVisible = true; + callback(true); + } else { + callback(false); + } + console.log('kklkljj', d); + }) + .catch(() => { + callback(false); + }); + } + }, + beforeDestroy() { + if (this.clearIntervaltime) { + clearInterval(this.clearIntervaltime); + this.clearIntervaltime = null; + } + } +}; +</script> +<style lang="scss" scoped> +#Didproject { + position: relative; + .did-echarts { + height: 200px; + } + .echart-height { + height: 300px; + margin: 1% auto 2%; + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/Home/components/lefttop.vue b/qqjf-Web/src/views/Home/components/lefttop.vue new file mode 100644 index 0000000..4039fde --- /dev/null +++ b/qqjf-Web/src/views/Home/components/lefttop.vue @@ -0,0 +1,65 @@ +<template> + <div class="width"> + <p class="colorfff fontsiez1rem padding10">{{ navobj.titel }}</p> + <div class="width flex justify-around"> + <div + class="colorfff borderdashed borderradius padding1016" + v-for="(item, index) in navobj.list" + :key="index + 'navobj'" + > + <p class="margin4auto">{{ item.titel }}</p> + <count-to :startVal="0" :endVal="item.value" :duration="3000"></count-to> + </div> + </div> + </div> +</template> + +<script> +import countTo from 'vue-count-to'; +import { GetStorageOverviewData } from '@/api/Didproject'; +export default { + data() { + return { + startVal: 0, + cleartime: null + }; + }, + props: { + navobj: { + type: Object, + default: () => {} + } + }, + components: { countTo }, + mounted() { + this.GetStorageOverviewData(); + this.cleartime = setInterval(() => { + this.GetStorageOverviewData(); + }, 60000); + }, + methods: { + //绔嬪簱鎬昏鍜屽埗浠舵�昏 + GetStorageOverviewData() { + // no 缂栧彿锛泃itle 鏍囬锛泇alue 鏁伴噺 + GetStorageOverviewData().then(res => { + let data = res.data || []; + this.navobj.list.forEach(item => { + data.forEach(element => { + if (item.titel == element.titel) { + item.value = element.value; + } + }); + }); + }); + } + }, + beforeDestroy() { + if (this.cleartime) { + clearInterval(this.cleartime); + this.cleartime = null; + } + } +}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/Home/components/meterEchart.vue b/qqjf-Web/src/views/Home/components/meterEchart.vue new file mode 100644 index 0000000..c472f1f --- /dev/null +++ b/qqjf-Web/src/views/Home/components/meterEchart.vue @@ -0,0 +1,273 @@ +<template> + <div class="chart-wrapper" ref="sourmeterLine"></div> +</template> + +<script> +import resize from '@/mixins/resize'; +const echarts = require('echarts'); +export default { + name: 'sourmeterLine', + props: { + chartData: { + type: Object, + default: () => {} + }, + colorList: { + type: Array, + default: () => [] + }, + colors: { + type: String, + default: '#636972' + }, + yTotals:{ + type:Number, + default:-1 + } + }, + mixins: [resize], + data() { + return {}; + }, + mounted() { + this.initEchart(); + }, + methods: { + initEchart() { + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + let serieslist = []; + let data = this.chartData.data; + if (data) { + data.forEach((element, index) => { + let nObj = { + name: element.name, + type: index == 0 ? 'line' : 'bar', + smooth: true, + yAxisIndex: index, + // symbol: index == 1 ? 'circle' : '', + symbolSize: 12, + // 淇敼鐨勬槸绾跨殑棰滆壊 + lineStyle: { + color: { + type: 'linear', + x: 0, + y: 1, + x2: 0, + y2: 0, + // 0% 澶勭殑棰滆壊 // 100% 澶勭殑棰滆壊 + colorStops: [ + { offset: 0, color: '#66d4fa' }, + { offset: 0.25, color: '#66d4fa' }, + { offset: 0.75, color: '#66d4fa' }, + { offset: 1, color: '#66d4fa' } + ], + global: false // 缂虹渷涓� false + }, + width: 10 + }, + //淇敼鏌辩姸鍥鹃鑹� + itemStyle: { + normal: { + // barBorderRadius: 5, + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { offset: 0, color: '#00CA69' }, + { offset: 1, color: '#3EACE5' } + ]) + } + }, + areaStyle: { + normal: { + color: new echarts.graphic.LinearGradient( + 0, + 0, + 0, + 1, + [ + { + offset: 0, + color: 'rgba(236, 99, 123, 0)' + }, + { + offset: 1, + color: 'rgba(102, 212, 250,.0)' + } + ], + false + ), + shadowColor: '#636972', + shadowBlur: 1 + } + }, + data: element.xdata + } + console.log('nObj',nObj) + serieslist.push(nObj); + }); + } + this.myChart = echarts.init(this.$refs.sourmeterLine); + let splitNumber = 5; // 鍒嗗壊娈� + + let thisOpt = { + title: { + show: true, + text: '浠诲姟鑺傛媿鍒嗘瀽', + x: 'center', + y: '0%', + textAlign: null, //姘村钩瀵归綈鏂瑰紡锛岄粯璁ゆ牴鎹畑璁剧疆鑷姩璋冩暣锛屽彲閫変负锛� left' | 'right' | 'center + textStyle: { + //涓绘爣棰樻枃鏈牱寮弡"fontSize": 18,"fontWeight": "bolder",} + color: this.colors, + fontWeight: 'normal', + fontSize: 50, + fontFamily: 'time_new_Roma' + } + }, + + color: this.colorList, + legend: { + right: '0%', + top: '0%', + textStyle: { + color: this.colors, + fontSize: 36 + } + }, + tooltip: { + trigger: 'axis', + textStyle: { + fontSize: 36 + }, + axisPointer: { + type: 'shadow' + }, + formatter: '{b}<br />{a0}: {c0}%<br />{a1}: {c1}' + }, + grid: { + left: '1%', + right: '1%', + bottom: '1%', + top: '15%', + // padding:'0 0 10 0', + containLabel: true + }, + xAxis: [ + { + type: 'category', + axisLabel: { + interval: 0, //璁剧疆涓� 1锛岃〃绀恒�庨殧涓�涓爣绛炬樉绀轰竴涓爣绛俱�� + textStyle: { + fontSize: 36 + }, + width:100, + overflow:'truncate' + }, + axisLine: { show: true, lineStyle: { color: this.colors, width: 10 } }, + splitLine: {show: false}, + data: this.chartData.xdata + } + ], + yAxis: [ + { + type: 'value', + splitNumber: splitNumber, + position: 'left', + // min: function (value) { + // return value.min - 10; + // }, + axisLabel: { + textStyle: { + fontSize: 36 + }, + formatter: '{value}%' + }, + axisLine: { + lineStyle: { + color: this.colors, + width: 10 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: false, + lineStyle: { + color: this.colors, + width: 10 + } + } + }, + { + type: 'value', + splitNumber: splitNumber, + position: 'right', + + min: function (value) { + let max = value.max; + let min = value.min; + + let minimum = max - ((max - min) * 3) / 2; + if (minimum > 0) { + return minimum; + } else { + return 0; + } + }, + axisLabel: { + textStyle: { + fontSize: 36 + }, + formatter: '{value}' + }, + axisLine: { + lineStyle: { + color: this.colors, + width: 10 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: true, + lineStyle: { + color: this.colors, + width: 10 + } + } + } + ], + dataZoom: [ + { + type: 'inside', + startValue: 0, + endValue: 7 + } + ], + series: serieslist + } + console.log('serieslist',serieslist) + thisOpt.dataZoom[0].endValue = thisOpt.xAxis[0].data.length - 1; + thisOpt.yAxis[0].max = 100 + if (this.yTotals>0) { + thisOpt.yAxis[1].max = this.yTotals + } + console.log(thisOpt) + + + this.myChart.setOption( + thisOpt, + true + ); + } + }, + watch: { + chartData: { + handler() { + this.initEchart(); + }, + deep: true + } + } +}; +</script> diff --git a/qqjf-Web/src/views/Home/components/movablerateechart.vue b/qqjf-Web/src/views/Home/components/movablerateechart.vue new file mode 100644 index 0000000..56cc5d3 --- /dev/null +++ b/qqjf-Web/src/views/Home/components/movablerateechart.vue @@ -0,0 +1,206 @@ +<template> + <div class="chart-wrapper" ref="movablerateLine"></div> +</template> + +<script> +import resize from '@/mixins/resize'; +const echarts = require('echarts'); +export default { + name: 'movablerateLine', + props: { + echarttitle: { + type: String, + default: '' + }, + chartData: { + type: Object, + default: () => {} + }, + colorList: { + type: Array, + default: () => [] + }, + colors: { + type: String, + default: '#636972' + } + }, + mixins: [resize], + data() { + return {}; + }, + mounted() { + this.initEchart(); + }, + methods: { + initEchart() { + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + let serieslist = []; + let data = this.chartData.data; + if (data) { + data.forEach((element, index) => { + serieslist.push({ + name: element.name, + type: 'line', + smooth: false, //true:鍦嗘粦锛宖alse:鎶樼幇 + barMaxWidth: 30, + // 淇敼鐨勬槸绾跨殑棰滆壊 + lineStyle: { + width: 10, + color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ + { + offset: 0, + color: this.colorList[index] + }, + { + offset: 1, + color: this.colorList[index] + } + ]) + // shadowColor: 'rgba(0,0,0, 0.3)', + // shadowBlur: 10, + // shadowOffsetY: 20 + }, + + data: element.xdata + // label: { + // show: true, + // position: 'top', + // distance: 10, + // fontSize: 18, + // color: this.colors + // } + }); + }); + } + this.myChart = echarts.init(this.$refs.movablerateLine); + this.myChart.setOption( + { + title: { + show: true, + text: this.echarttitle, + x: 'center', + y: '0%', + textAlign: null, //姘村钩瀵归綈鏂瑰紡锛岄粯璁ゆ牴鎹畑璁剧疆鑷姩璋冩暣锛屽彲閫変负锛� left' | 'right' | 'center + textStyle: { + //涓绘爣棰樻枃鏈牱寮弡"fontSize": 18,"fontWeight": "bolder",} + color: this.colors, + fontWeight: 'normal', + fontSize: 50 + } + }, + + color: this.colorList, + legend: { + right: 10, + top: '15%', + textStyle: { + color: this.colors, + fontSize: 24 + } + }, + tooltip: { + trigger: 'axis', + position: function (pos, params, dom, rect, size) { + var obj = { bottom: '5%' }; + obj[['left', 'right'][+(pos[0] < size.viewSize[0] / 2)]] = 5; + return obj; + }, + axisPointer: { + type: 'shadow' + }, + textStyle: { + fontSize: 36 + } + }, + grid: { + left: '1%', + right: '4%', + bottom: '1%', + top: '30%', + // padding:'0 0 10 0', + containLabel: true + }, + xAxis: [ + { + type: 'category', + axisLabel: { + interval: 0, //璁剧疆涓� 1锛岃〃绀恒�庨殧涓�涓爣绛炬樉绀轰竴涓爣绛俱�� + margin: 10, + textStyle: { + fontSize: 36 + } + }, + axisLine: { show: true, lineStyle: { color: this.colors, width: 10 } }, + splitLine: { + show: false, + lineStyle: { color: this.colors, width: 1 } + }, + axisTick: { + show: false + }, + data: this.chartData.xdata + } + ], + yAxis: [ + { + type: 'value', + splitNumber: 5, + min: function (value) { + let max = value.max; + let min = value.min; + let minimum = max - ((max - min) * 3) / 2; + + if (minimum > 0) { + return minimum; + } else { + return 0; + } + }, + axisLabel: { + textStyle: { + fontSize: 36 + }, + formatter: '{value} %' + }, + axisLine: { + lineStyle: { + color: this.colors, + width: 10 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: true, + lineStyle: { + color: this.colors, + width: 10 + } + } + } + ], + dataZoom: [ + { + type: 'inside', + startValue: 10, + endValue: 20 + } + ], + series: serieslist + }, + true + ); + } + }, + watch: { + chartData: { + handler() { + this.initEchart(); + }, + deep: true + } + } +}; +</script> diff --git a/qqjf-Web/src/views/Home/components/product.vue b/qqjf-Web/src/views/Home/components/product.vue new file mode 100644 index 0000000..f913f2f --- /dev/null +++ b/qqjf-Web/src/views/Home/components/product.vue @@ -0,0 +1,202 @@ +<template> + <div class="chart-wrapper" ref="product"></div> +</template> + +<script> +import resize from '@/mixins/resize'; +const echarts = require('echarts'); +export default { + name: 'product', + props: { + echarttitle: { + type: String, + default: '' + }, + chartData: { + type: Object, + default: () => {} + }, + colors: { + type: String, + default: '#636972' + }, + colorList: { + type: Array, + default: () => [] + } + }, + mixins: [resize], + data() { + return {}; + }, + mounted() { + this.initEchart(); + }, + methods: { + initEchart() { + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + let serieslist = []; + let data = this.chartData.data; + if (data) { + data.forEach((element, index) => { + serieslist.push({ + name: element.name, + type: 'line', + smooth: true, + barMaxWidth: 30, + // 淇敼鐨勬槸绾跨殑棰滆壊 + lineStyle: { + width: 10, + color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ + { + offset: 0, + color: this.colorList[index] + }, + { + offset: 1, + color: this.colorList[index] + } + ]) + // shadowColor: 'rgba(0,0,0, 0.3)', + // shadowBlur: 10, + // shadowOffsetY: 20 + }, + + data: element.xdata + // label: { + // show: true, + // position: 'top', + // distance: 10, + // fontSize: 18, + // color: this.colors + // } + }); + }); + } + this.myChart = echarts.init(this.$refs.product); + this.myChart.setOption( + { + title: { + show: true, + text: '鍦ㄥ埗鍝佽祫閲戝垎鏋�', + x: 'center', + y: '0%', + textAlign: null, //姘村钩瀵归綈鏂瑰紡锛岄粯璁ゆ牴鎹畑璁剧疆鑷姩璋冩暣锛屽彲閫変负锛� left' | 'right' | 'center + textStyle: { + //涓绘爣棰樻枃鏈牱寮弡"fontSize": 18,"fontWeight": "bolder",} + color: this.colors, + fontWeight: 'normal', + fontSize: 50 + } + }, + + color: this.colorList, + legend: { + right: '1%', + top: '10%', + textStyle: { + fontSize: 36, + color: this.colors + } + }, + tooltip: { + trigger: 'axis', + + axisPointer: { + type: 'shadow' + }, + textStyle: { + fontSize: 36 + } + }, + grid: { + left: '2%', + right: '1%', + bottom: '2%', + top: '20%', + // padding:'0 0 10 0', + containLabel: true + }, + xAxis: [ + { + type: 'category', + axisLabel: { + interval: 0, //璁剧疆涓� 1锛岃〃绀恒�庨殧涓�涓爣绛炬樉绀轰竴涓爣绛俱�� + margin: 10, + textStyle: { + fontSize: 36 + } + }, + axisLine: { show: true, lineStyle: { color: this.colors, width: 10 } }, + splitLine: { + show: false, + lineStyle: { color: this.colors, width: 1 } + }, + axisTick: { + show: false + }, + data: this.chartData.xdata + } + ], + yAxis: [ + { + name: '閲戦锛堢櫨涓囧厓锛�', + nameTextStyle: { fontSize: 36 }, + type: 'value', + splitNumber: 5, + min: function (value) { + let max = value.max; + let min = value.min; + let minimum = max - ((max - min) * 3) / 2; + if (minimum > 0) { + return minimum; + } else { + return 0; + } + }, + axisLabel: { + textStyle: { + fontSize: 36 + } + }, + axisLine: { + lineStyle: { + color: this.colors, + width: 10 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: true, + lineStyle: { + color: this.colors, + width: 10 + } + } + } + ], + dataZoom: [ + { + type: 'inside', + startValue: 10, + endValue: 20 + } + ], + series: serieslist + }, + true + ); + } + }, + watch: { + chartData: { + handler() { + this.initEchart(); + }, + deep: true + } + } +}; +</script> diff --git a/qqjf-Web/src/views/Home/components/rateequipment.vue b/qqjf-Web/src/views/Home/components/rateequipment.vue new file mode 100644 index 0000000..cb8385f --- /dev/null +++ b/qqjf-Web/src/views/Home/components/rateequipment.vue @@ -0,0 +1,204 @@ +<template> + <div class="chart-wrapper" ref="movablerateLine"></div> +</template> + +<script> +import resize from '@/mixins/resize'; +const echarts = require('echarts'); +export default { + name: 'movablerateLine', + props: { + echarttitle: { + type: String, + default: '' + }, + chartData: { + type: Object, + default: () => {} + }, + colors: { + type: String, + default: '#636972' + }, + colorList: { + type: Array, + default: () => [] + } + }, + mixins: [resize], + data() { + return {}; + }, + mounted() { + this.initEchart(); + }, + methods: { + initEchart() { + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + let serieslist = []; + let data = this.chartData.data; + if (data) { + data.forEach((element, index) => { + serieslist.push({ + name: element.name, + type: 'line', + smooth: false, + barMaxWidth: 30, + // 淇敼鐨勬槸绾跨殑棰滆壊 + lineStyle: { + width: 10, + color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ + { + offset: 0, + color: this.colorList[index] + }, + { + offset: 1, + color: this.colorList[index] + } + ]) + // shadowColor: 'rgba(0,0,0, 0.3)', + // shadowBlur: 10, + // shadowOffsetY: 20 + }, + data: element.xdata + // label: { + // show: true, + // position: 'top', + // distance: 10, + // fontSize: 18, + // color: this.colors + // } + }); + }); + } + this.myChart = echarts.init(this.$refs.movablerateLine); + this.myChart.setOption( + { + title: { + show: true, + text: this.echarttitle, + x: 'center', + y: '0%', + textAlign: null, //姘村钩瀵归綈鏂瑰紡锛岄粯璁ゆ牴鎹畑璁剧疆鑷姩璋冩暣锛屽彲閫変负锛� left' | 'right' | 'center + textStyle: { + //涓绘爣棰樻枃鏈牱寮弡"fontSize": 18,"fontWeight": "bolder",} + color: this.colors, + fontWeight: 'normal', + fontSize: 50 + } + }, + + color: this.colorList, + legend: { + right: 10, + top: '15%', + textStyle: { + color: this.colors, + fontSize: 36 + } + }, + tooltip: { + trigger: 'axis', + position: function (pos, params, dom, rect, size) { + var obj = { bottom: '5%' }; + obj[['left', 'right'][+(pos[0] < size.viewSize[0] / 2)]] = 5; + return obj; + }, + axisPointer: { + type: 'shadow' + }, + textStyle: { + fontSize: 36 + } + }, + grid: { + left: '1%', + right: '4%', + bottom: '1%', + top: '30%', + // padding:'0 0 10 0', + containLabel: true + }, + xAxis: [ + { + type: 'category', + axisLabel: { + interval: 0, //璁剧疆涓� 1锛岃〃绀恒�庨殧涓�涓爣绛炬樉绀轰竴涓爣绛俱�� + margin: 10, + textStyle: { + fontSize: 36 + } + }, + axisLine: { show: true, lineStyle: { color: this.colors, width: 10 } }, + splitLine: { + show: false, + lineStyle: { color: this.colors, width: 10 } + }, + axisTick: { + show: false + }, + data: this.chartData.xdata + } + ], + yAxis: [ + { + type: 'value', + splitNumber: 5, + min: function (value) { + let max = value.max; + let min = value.min; + let minimum = max - ((max - min) * 3) / 2; + if (minimum > 0) { + return minimum; + } else { + return 0; + } + }, + axisLabel: { + textStyle: { + fontSize: 36 + }, + formatter: '{value} %' + }, + axisLine: { + lineStyle: { + color: this.colors, + width: 10 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: true, + lineStyle: { + color: this.colors, + width: 10 + } + } + } + ], + dataZoom: [ + { + type: 'inside', + startValue: 1, + endValue: 20 + } + ], + series: serieslist + }, + true + ); + } + }, + watch: { + chartData: { + handler() { + this.initEchart(); + }, + deep: true + } + } +}; +</script> diff --git a/qqjf-Web/src/views/Home/components/sourceEchart.vue b/qqjf-Web/src/views/Home/components/sourceEchart.vue new file mode 100644 index 0000000..316a142 --- /dev/null +++ b/qqjf-Web/src/views/Home/components/sourceEchart.vue @@ -0,0 +1,121 @@ +<template> + <div class="chart-wrapper" ref="sourcePie"></div> +</template> + +<script> +import resize from '@/mixins/resize'; +const echarts = require('echarts'); +export default { + name: 'sourcePie', + props: { + chartData: { + type: Object + }, + titleechart: { + type: String, + default: '' + }, + colors: { + type: String, + default: '#636972' + } + }, + mixins: [resize], + data() { + return {}; + }, + mounted() { + this.initEchart(); + }, + methods: { + initEchart() { + var colorList = ['#569ada', '#f47b2a', '#a1a1a1', '#ffc61f', '#3a6cc6', '#6cae3f', '#1e5c94']; + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + let seriesData = []; + if (this.chartData.data) { + this.chartData.data.forEach(element => { + seriesData.push({ + name: element.name, + value: element.data + }); + }); + } + this.myChart = echarts.init(this.$refs.sourcePie); + this.myChart.setOption( + { + title: { + show: true, //鏄剧ず绛栫暐锛岄粯璁ゅ�紅rue,鍙�変负锛歵rue锛堟樉绀猴級 | false锛堥殣钘忥級 + text: this.titleechart, //涓绘爣棰樻枃鏈紝'\n'鎸囧畾鎹㈣ + x: 'center', //姘村钩瀹夋斁浣嶇疆锛岄粯璁や负'left'锛屽彲閫変负锛�'center' | 'left' | 'right' | {number}锛坸鍧愭爣锛屽崟浣峱x锛� + y: '2%', //鍨傜洿瀹夋斁浣嶇疆锛岄粯璁や负top锛屽彲閫変负锛�'top' | 'bottom' | 'center' | {number}锛坹鍧愭爣锛屽崟浣峱x锛� + textAlign: null, //姘村钩瀵归綈鏂瑰紡锛岄粯璁ゆ牴鎹畑璁剧疆鑷姩璋冩暣锛屽彲閫変负锛� left' | 'right' | 'center + textStyle: { + //涓绘爣棰樻枃鏈牱寮弡"fontSize": 18,"fontWeight": "bolder",} + color: this.colors, + fontWeight: 'normal', + fontSize: 50 + } + }, + + tooltip: { + trigger: 'item', + borderWidth: 1, + padding: 5, + formatter: function (parms) { + var str = parms.marker + '' + parms.data.name + '</br>' + '鍗犳瘮锛�' + parms.percent + '%'; + return str; + } + }, + legend: [ + { + type: 'plain', + bottom: '12%', + itemGap: 20, + textStyle: { + fontSize: 24, + color: this.colors + }, + data: this.chartData.legend + } + ], + series: [ + { + type: 'pie', + center: ['50%', '40%'], + radius: ['35%', '50%'], + label: { + show: true, + position: 'outside', + textStyle: { + fontSize: 28, + color: this.colors + } + }, + labelLine: { + show: true, + normal: { + length: 20, + length2: 30, + lineStyle: { + width: 1 + } + } + }, + data: seriesData + } + ] + }, + true + ); + } + }, + watch: { + chartData: { + handler() { + this.initEchart(); + }, + deep: true + } + } +}; +</script> diff --git a/qqjf-Web/src/views/Home/components/tasktimeecharts.vue b/qqjf-Web/src/views/Home/components/tasktimeecharts.vue new file mode 100644 index 0000000..8c84304 --- /dev/null +++ b/qqjf-Web/src/views/Home/components/tasktimeecharts.vue @@ -0,0 +1,210 @@ +<template> + <div class="chart-wrapper" ref="tasktimeecharts"></div> +</template> + +<script> +import resize from '@/mixins/resize'; +const echarts = require('echarts'); +export default { + name: 'tasktimeecharts', + props: { + chartData: { + type: Object, + default: () => {} + }, + colorList: { + type: Array, + default: () => [] + }, + colors: { + type: String, + default: '#636972' + } + }, + mixins: [resize], + data() { + return {}; + }, + mounted() { + this.initEchart(); + }, + methods: { + initEchart() { + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + let serieslist = []; + let data = this.chartData.data; + if (data) { + data.forEach((element, index) => { + serieslist.push({ + name: element.name, + type: 'line', + smooth: true, + // 淇敼鐨勬槸绾跨殑棰滆壊 + lineStyle: { + width: 10 + }, + // areaStyle: { + // normal: { + // barBorderRadius: [5, 5, 0, 0], + // color: new echarts.graphic.LinearGradient( + // 0, + // 0, + // 0, + // 1, + // [ + // { + // offset: 0, + // color: this.colorList[index] + // // color: 'rgba(236, 99, 123, .5)' + // }, + + // { + // offset: 1, + // color: 'rgba(102, 212, 250,0)' + // } + // ], + // false + // ), + + // shadowColor: '#636972', + // shadowBlur: 1 + // } + // }, + data: element.xdata + // label: { + // show: true, + // position: 'top', + // distance: 10, + // fontSize: 18, + // color: this.colors + // } + }); + }); + } + this.myChart = echarts.init(this.$refs.tasktimeecharts); + this.myChart.setOption( + { + title: { + show: true, + text: '鍑哄叆搴撲换鍔″钩鍧囨椂闀�(鍒嗛挓)', + x: 'center', + y: '2%', + textAlign: null, //姘村钩瀵归綈鏂瑰紡锛岄粯璁ゆ牴鎹畑璁剧疆鑷姩璋冩暣锛屽彲閫変负锛� left' | 'right' | 'center + textStyle: { + //涓绘爣棰樻枃鏈牱寮弡"fontSize": 18,"fontWeight": "bolder",} + color: this.colors, + fontWeight: 'normal', + fontSize: 50 + } + }, + + // color: this.colorList, + legend: { + right: '1%', + top: '10%', + textStyle: { + color: this.colors, + fontSize: 36 + } + }, + tooltip: { + trigger: 'axis', + // formatter: '{b0}: {c0}<br />{b1}: {c1}<br />{b2}: {c2}', + axisPointer: { + type: 'shadow' + }, + textStyle: { + fontSize: 36 + } + }, + grid: { + left: '2%', + right: '1%', + bottom: '1%', + top: '20%', + // padding:'0 0 10 0', + containLabel: true + }, + xAxis: [ + { + type: 'category', + axisLabel: { + interval: 0, //璁剧疆涓� 1锛岃〃绀恒�庨殧涓�涓爣绛炬樉绀轰竴涓爣绛俱�� + margin: 10, + textStyle: { + fontSize: 36 + } + }, + axisLine: { show: true, lineStyle: { color: this.colors, width: 10 } }, + splitLine: { + show: false, + lineStyle: { color: this.colors, width: 1 } + }, + axisTick: { + show: false + }, + data: this.chartData.xdata + } + ], + yAxis: [ + { + name: '鏃堕棿锛堝垎閽燂級', + nameTextStyle: { fontSize: 24 }, + type: 'value', + splitNumber: 5, + min: function (value) { + let max = value.max; + let min = value.min; + let minimum = max - ((max - min) * 3) / 2; + if (minimum > 0) { + return minimum; + } else { + return 0; + } + }, + axisLabel: { + textStyle: { + fontSize: 36 + } + }, + axisLine: { + lineStyle: { + color: this.colors, + width: 10 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: true, + lineStyle: { + color: this.colors, + width: 10 + } + } + } + ], + dataZoom: [ + { + type: 'inside', + startValue: 10, + endValue: 20 + } + ], + series: serieslist + }, + true + ); + } + }, + watch: { + chartData: { + handler() { + this.initEchart(); + }, + deep: true + } + } +}; +</script> diff --git a/qqjf-Web/src/views/Home/components/turnoverEchart.vue b/qqjf-Web/src/views/Home/components/turnoverEchart.vue new file mode 100644 index 0000000..f2e0a51 --- /dev/null +++ b/qqjf-Web/src/views/Home/components/turnoverEchart.vue @@ -0,0 +1,207 @@ +<template> + <div class="chart-wrapper" ref="turnoverLine"></div> +</template> + +<script> +import resize from '@/mixins/resize'; +const echarts = require('echarts'); +export default { + name: 'turnoverLine', + props: { + chartData: { + type: Object, + default: () => {} + }, + colorList: { + type: Array, + default: () => [] + }, + colors: { + type: String, + default: '#636972' + } + }, + mixins: [resize], + data() { + return {}; + }, + mounted() { + this.initEchart(); + }, + methods: { + initEchart() { + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + let serieslist = []; + let data = this.chartData.data; + if (data) { + data.forEach((element, index) => { + serieslist.push({ + name: element.name, + type: 'bar', + showBackground: false, + barBorderRadius: 30, + yAxisIndex: 0, + barMaxWidth: 30, + itemStyle: { + normal: { + color: new echarts.graphic.LinearGradient( + 0, + 1, + 1, + 0, + [ + { + offset: 0, + color: this.colorList[index] + }, + + { + offset: 1, + color: this.colorList[index] + } + ], + false + ), + barBorderRadius: 10 + }, + barBorderRadius: 4 + }, + + data: element.xdata, + label: { + show: true, + position: 'top', + distance: 10, + fontSize: 36, + color: this.colors + } + }); + }); + } + this.myChart = echarts.init(this.$refs.turnoverLine); + this.myChart.setOption( + { + title: { + show: true, + text: data ? '鍒朵欢鍛ㄨ浆鏃堕棿' : '鏆傛棤鏁版嵁', + x: 'center', + y: data ? '2%' : 'center', + textAlign: null, //姘村钩瀵归綈鏂瑰紡锛岄粯璁ゆ牴鎹畑璁剧疆鑷姩璋冩暣锛屽彲閫変负锛� left' | 'right' | 'center + textStyle: { + //涓绘爣棰樻枃鏈牱寮弡"fontSize": 18,"fontWeight": "bolder",} + color: this.colors, + fontWeight: 'normal', + fontSize: 50 + } + }, + + color: this.colorList, + legend: { + right: '1%', + top: '10%', + textStyle: { + color: this.colors, + fontSize: 36 + } + }, + tooltip: { + trigger: 'axis', + + axisPointer: { + type: 'shadow' + }, + textStyle: { + fontSize: 36 + } + }, + grid: { + left: '5%', + right: '1%', + bottom: '1%', + top: '20%', + // padding:'0 0 10 0', + containLabel: true + }, + xAxis: [ + { + type: 'category', + axisLabel: { + interval: 0, //璁剧疆涓� 1锛岃〃绀恒�庨殧涓�涓爣绛炬樉绀轰竴涓爣绛俱�� + margin: 10, + textStyle: { + fontSize: 16 + } + }, + axisLine: { show: true, lineStyle: { color: this.colors, width: 10 } }, + splitLine: { + show: false, + lineStyle: { color: this.colors, width: 10 } + }, + axisTick: { + show: false + }, + data: this.chartData.xdata + } + ], + yAxis: [ + { + name: '鍛ㄨ浆澶╂暟(澶�)', + nameTextStyle: { fontSize: 28 }, + type: 'value', + splitNumber: 5, + min: function (value) { + let max = value.max; + let min = value.min; + let minimum = max - ((max - min) * 3) / 2; + if (minimum > 0) { + return minimum; + } else { + return 0; + } + }, + axisLabel: { + textStyle: { + fontSize: 36 + } + }, + axisLine: { + lineStyle: { + color: this.colors, + width: 10 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: true, + lineStyle: { + color: this.colors, + width: 10 + } + } + } + ], + dataZoom: [ + { + type: 'inside', + startValue: 10, + endValue: 20 + } + ], + series: serieslist + }, + true + ); + } + }, + watch: { + chartData: { + handler() { + this.initEchart(); + }, + deep: true + } + } +}; +</script> diff --git a/qqjf-Web/src/views/Home/components/warehouseechart.vue b/qqjf-Web/src/views/Home/components/warehouseechart.vue new file mode 100644 index 0000000..d4f492a --- /dev/null +++ b/qqjf-Web/src/views/Home/components/warehouseechart.vue @@ -0,0 +1,235 @@ +<template> + <div class="chart-wrapper" ref="warehouseLine"></div> +</template> + +<script> +import resize from '@/mixins/resize'; +const echarts = require('echarts'); +export default { + name: 'warehouseLine', + props: { + chartData: { + type: Object, + default: () => {} + }, + colorList: { + type: Array, + default: () => [] + }, + colors: { + type: String, + default: '#636972' + } + }, + mixins: [resize], + data() { + return {}; + }, + mounted() { + this.initEchart(); + }, + methods: { + initEchart() { + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + let serieslist = []; + let data = this.chartData.data; + if (data) { + // data.forEach(element => { + serieslist.push( + { + name: data[0].name, + type: 'bar', + showBackground: false, + barBorderRadius: 30, + yAxisIndex: 0, + barMaxWidth: 30, + itemStyle: { + normal: { + color: new echarts.graphic.LinearGradient( + 0, + 1, + 1, + 0, + [ + { + offset: 0, + color: '#A71A2B' + }, + + { + offset: 1, + color: '#A71A2B' + } + ], + false + ), + barBorderRadius: 10 + }, + // color: '#A71A2B', + barBorderRadius: 4 + }, + + data: data[0].xdata, + label: { + show: true, + position: 'top', + distance: 10, + fontSize: 18, + color: this.colors + } + } + // { + // name: data[1].name, + // type: 'line', + // smooth: true, + // barMaxWidth: 30, + // // 淇敼鐨勬槸绾跨殑棰滆壊 + // lineStyle: { + // color: { + // type: 'linear', + // x: 0, + // y: 1, + // x2: 0, + // y2: 0, + // // 0% 澶勭殑棰滆壊 // 100% 澶勭殑棰滆壊 + // colorStops: [ + // { offset: 0, color: '#f8d470' }, + // { offset: 0.25, color: '#f8d470' }, + // { offset: 0.75, color: '#f8d470' }, + // { offset: 1, color: '#f8d470' } + // ], + // global: false // 缂虹渷涓� false + // }, + // width: 10 + // }, + + // data: data[1].xdata + // } + ); + } + this.myChart = echarts.init(this.$refs.warehouseLine); + this.myChart.setOption( + { + title: { + show: true, + text: '璐ф牸鍒╃敤鐜�', + x: 'center', + y: '2%', + textAlign: null, //姘村钩瀵归綈鏂瑰紡锛岄粯璁ゆ牴鎹畑璁剧疆鑷姩璋冩暣锛屽彲閫変负锛� left' | 'right' | 'center + textStyle: { + //涓绘爣棰樻枃鏈牱寮弡"fontSize": 18,"fontWeight": "bolder",} + color: this.colors, + fontWeight: 'normal', + fontSize: 50 + } + }, + + color: this.colorList, + legend: { + right: '1%', + top: '10%', + textStyle: { + color: this.colors, + fontSize: 36 + } + }, + tooltip: { + trigger: 'axis', + + axisPointer: { + type: 'shadow' + }, + textStyle: { + fontSize: 36 + } + }, + grid: { + left: '1%', + right: '1%', + bottom: '1%', + top: '20%', + // padding:'0 0 10 0', + containLabel: true + }, + xAxis: [ + { + type: 'category', + axisLabel: { + interval: 0, //璁剧疆涓� 1锛岃〃绀恒�庨殧涓�涓爣绛炬樉绀轰竴涓爣绛俱�� + margin: 10, + textStyle: { + fontSize: 36 + } + }, + axisLine: { show: true, lineStyle: { color: this.colors, width: 10 } }, + splitLine: { + show: false, + lineStyle: { color: this.colors, width: 10 } + }, + axisTick: { + show: false + }, + data: this.chartData.xdata + } + ], + yAxis: [ + { + type: 'value', + splitNumber: 5, + min: function (value) { + let max = value.max; + let min = value.min; + let minimum = max - ((max - min) * 3) / 2; + if (minimum > 0) { + return minimum; + } else { + return 0; + } + }, + axisLabel: { + textStyle: { + fontSize: 36 + }, + formatter: '{value} %' + }, + axisLine: { + lineStyle: { + color: this.colors, + width: 10 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: true, + lineStyle: { + color: this.colors, + wdith: 10 + } + } + } + ], + dataZoom: [ + { + type: 'inside', + startValue: 10, + endValue: 20 + } + ], + series: serieslist + }, + true + ); + } + }, + watch: { + chartData: { + handler() { + this.initEchart(); + }, + deep: true + } + } +}; +</script> diff --git a/qqjf-Web/src/views/Home/index.vue b/qqjf-Web/src/views/Home/index.vue new file mode 100644 index 0000000..73c46f1 --- /dev/null +++ b/qqjf-Web/src/views/Home/index.vue @@ -0,0 +1,296 @@ +<template> + <div id="Homes" class="global-content"> + <div class="box-top flex justify-between overflow"> + <div class="top-left"> + <left-top :navobj="topleftobj" /> + <div class="width flex align-center applyheight margin2"> + <class-echart titleechart="闆朵欢鏉ユ簮鍒嗗竷" colors="#fff" :chartData="chartData" class="width height" /> + <class-echart titleechart="鍣ㄥ叿鏉ユ簮鍒嗗竷" colors="#fff" :chartData="applianceData" class="width height" /> + </div> + </div> + <div class="top-centent"> + <p class="colorfff padding10 fontsize2rem text-center pointer" @click="clickFullscreen"> + 鏅鸿兘鍖栧啿鍘嬬珛浣撳簱鏁版嵁涓績 + </p> + </div> + <div class="top-right"> + <div class="width height48 overflow margin-top10px"> + <movablerate-echart + colors="#fff" + class="width height" + echarttitle="鍫嗗灈鏈�" + :chartData="movalData" + :colorList="colorList" + /> + </div> + <div class="width height48 overflow margin-top10px"> + <movablerate-echart + colors="#fff" + class="width height" + echarttitle="RGV" + :chartData="rgvdata" + :colorList="colorList" + /> + </div> + </div> + </div> + <div class="box-bottom flex justify-between overflow"> + <div class="height width25"> + <tasktime-echart class="width height" colors="#fff" :chartData="tasktimeData" :colorList="colorList" /> + </div> + <div class="height width25"> + <task-echart class="width height" colors="#fff" :chartData="taskData" :colorList="taskcolorList" /> + </div> + <div class="height width25"> + <warehouse-echart class="width height" colors="#fff" :chartData="wareData" :colorList="taskcolorList" /> + </div> + <div class="height width25"> + <turnover-echart class="width height" colors="#fff" :chartData="turnoverData" :colorList="taskcolorList" /> + </div> + </div> + </div> +</template> + +<script> +import screenfull from 'screenfull'; +import { GetDateStr } from '@/utils/date'; +import LeftTop from './components/lefttop.vue'; +import ClassEchart from './components/sourceEchart.vue'; //鍒朵欢鍒嗙被 +import TaskEchart from './components/meterEchart.vue'; //浠诲姟鑺傛媿鍒嗘瀽 +import MovablerateEchart from './components/movablerateechart.vue'; //璁惧鍙姩 +import TasktimeEchart from './components/tasktimeecharts.vue'; //骞冲潎鏃堕暱 +import WarehouseEchart from './components/warehouseechart.vue'; //璐ф牸鍒╃敤鐜� +import TurnoverEchart from './components/turnoverEchart.vue'; //鍒朵欢鍛ㄨ浆 +import { + GetStockClassificationData, + GetInOutAverageTime, + GetTaskBeatAnalysis, + GetPartTurnover, + GetStorageVailability, + GetDevMovable +} from '@/api/reportforms'; + +export default { + data() { + return { + topleftobj: { + titel: '绔嬪簱鎬昏', + list: [ + { + titel: '搴撲綅鎬绘暟', + value: 0 + }, + { + titel: '鏈夎揣搴撲綅', + value: 0 + }, + { + titel: '甯︿欢鍣ㄥ叿', + value: 0 + }, + { + titel: '绌哄櫒鍏锋暟', + value: 0 + }, + { + titel: '鍒朵欢鎬绘暟', + value: 0 + } + ] + }, + toprightobj: { + titel: '鍒朵欢鎬昏', + list: [ + { + titel: '鍒朵欢鎬绘暟', + value: 100 + }, + { + titel: '鍒朵欢绉嶇被', + value: 100 + }, + { + titel: '浠婃棩鍏ュ簱', + value: 100 + }, + { + titel: '浠婃棩鍑哄簱', + value: 100 + } + ] + }, + pickertime: [GetDateStr(-15), GetDateStr(0)], + chartData: {}, + applianceData: {}, + tasktimeData: {}, + taskData: {}, + turnoverData: {}, + wareData: {}, + movalData: {}, + rgvdata: {}, + taskcolorList: ['#0090FF', '#36CE9E', '#FFC005', '#FF515A', '#8B5CFF', '#00CA69'], + colorList: [ + '#0090FF', + '#36CE9E', + '#FFC005', + '#FF515A', + '#8B5CFF', + '#00CA69', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFFFBB', + '#99FFFF', + '#CC00CC', + '#CC00CC', + '#C63300', + '#9955FF', + '#66FF66', + '#B5C334', + '#FCCE10', + '#27727B', + '#FE8463', + '#FAD860', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFAA33', + '#CC00CC', + '#FF77FF', + '#C63300', + '#F4E001', + '#66FF66' + ] + }; + }, + components: { LeftTop, ClassEchart, MovablerateEchart, TasktimeEchart, TaskEchart, TurnoverEchart, WarehouseEchart }, + mounted() { + this.$nextTick(() => { + this.clickFullscreen(); + }); + this.GetStockClassificationData(); + this.applianceDataficationData(); + this.GetInOutAverageTime(); + this.GetTaskBeatAnalysis(); + this.GetPartTurnover(); + this.GetStorageVailability(); + this.GetDevMovable(); + this.GetRGVDevMovable(); + }, + methods: { + clickFullscreen() { + screenfull.toggle(); + }, + //闆朵欢鏉ユ簮 + GetStockClassificationData() { + GetStockClassificationData({ type: 1 }).then(res => { + this.chartData = res; + }); + }, + //鍣ㄥ叿鏉ユ簮 + applianceDataficationData() { + GetStockClassificationData({ type: 2 }).then(res => { + this.applianceData = res; + }); + }, + //骞冲潎鏃堕暱 + GetInOutAverageTime() { + let startTime = this.pickertime ? this.pickertime[0] : ''; + let endTime = this.pickertime ? this.pickertime[1] : ''; + GetInOutAverageTime({ startTime: startTime, endTime: endTime }).then(res => { + this.tasktimeData = res; + }); + }, + //浠诲姟鑺傛媿 + GetTaskBeatAnalysis() { + GetTaskBeatAnalysis({ startTime: this.pickertime }).then(res => { + this.taskData = res; + }); + }, + //璐ф牸鍒╃敤鐜� + GetStorageVailability() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '' + }; + GetStorageVailability(objtimes).then(res => { + this.wareData = res; + }); + }, + //鍒朵欢鍛ㄨ浆路1 + GetPartTurnover() { + let intimers = { + year: '', + month: '', + stWeek: '', + edWeek: '' + }; + GetPartTurnover(intimers).then(res => { + this.turnoverData = res; + }); + }, + //鍫嗗灈鏈� + GetDevMovable() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '', + type: 1 + }; + GetDevMovable(objtimes).then(res => { + this.movalData = res; + }); + }, + //RGV + GetRGVDevMovable() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '', + type: 2 + }; + GetDevMovable(objtimes).then(res => { + this.rgvdata = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#Homes { + background-color: #1c456b; + // background: url('../../assets/home/homebg1.jpg') no-repeat; + // background-size: 100% 100%; + overflow: hidden; + .box-top { + width: 100%; + height: 64%; + .top-left { + width: 28%; + height: 100%; + } + .top-centent { + width: 42%; + height: 100%; + } + .top-right { + width: 28%; + height: 100%; + } + } + .box-bottom { + width: 100%; + height: 34%; + margin-top: 10px; + } +} +</style> diff --git a/qqjf-Web/src/views/basicInfo/base/index.vue b/qqjf-Web/src/views/basicInfo/base/index.vue new file mode 100644 index 0000000..1cb60c6 --- /dev/null +++ b/qqjf-Web/src/views/basicInfo/base/index.vue @@ -0,0 +1,9 @@ +<template> + <router-view /> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/basicInfo/base/stacker/index.vue b/qqjf-Web/src/views/basicInfo/base/stacker/index.vue new file mode 100644 index 0000000..3c3e93b --- /dev/null +++ b/qqjf-Web/src/views/basicInfo/base/stacker/index.vue @@ -0,0 +1,159 @@ +<template> + <!-- 璁惧绠$悊 --> + <div id="stacker" class="global-content"> + <!-- 绛涢�� --> + <base-inquer :dele="false" byfilter="璁惧鍚�" :filterList="filterList" @addmodal="addmodal" @inquer="inquer" /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="false" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">璁惧绠$悊-{{ title }}</p> + <div class="height" slot="centent"> + <stacker-edit @cancel="addmodalShow = false" :rowitem="rowitem" @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import baseInquer from '../../components/baseinquer'; +import stackerEdit from '../../components/stackerEdit'; +const { stacker } = require('@/components/tableContainer/tableHead'); +import { DeviceSearch, UserDelete } from '@/api/stacker'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + inuqerobg: {}, + filterList: [ + { + value: '璁惧鍚�', + label: '璁惧鍚�' + }, + { + value: '璁惧绫诲瀷', + label: '璁惧绫诲瀷' + } + ], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20 + }; + }, + components: { TableContainer, baseInquer, Modal, stackerEdit }, + computed: { + tableHead() { + return stacker; + } + }, + mounted() { + this.DeviceSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.DeviceSearch(); + }, + //鎼滅储鐢ㄦ埛 + DeviceSearch() { + this.$Loading(true); + const { 璁惧鍚�: deviceName, 璁惧绫诲瀷: deviceType } = this.inuqerobg; + DeviceSearch(this.page + '&onePageNum=' + this.pageSize, { deviceName, deviceType }).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.DeviceSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.DeviceSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { USERNAME } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + // UserDelete({ userName: USERNAME }).then(res => { + // this.$message({ + // type: 'success', + // message: '鍒犻櫎鎴愬姛!' + // }); + // this.DeviceSearch(); + // }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.DeviceSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#stacker { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/basicInfo/base/warning/index.vue b/qqjf-Web/src/views/basicInfo/base/warning/index.vue new file mode 100644 index 0000000..285a973 --- /dev/null +++ b/qqjf-Web/src/views/basicInfo/base/warning/index.vue @@ -0,0 +1,204 @@ +<template> + <!-- 鎶ヨ淇℃伅 --> + <div id="warning" class="global-content"> + <!-- 绛涢�� --> + <base-inquer + :add="false" + :dele="false" + :allderive="true" + byfilter="鏁呴殰鍚嶇О" + :filterList="filterList" + @addmodal="addmodal" + @inquer="inquer" + @allderive="allderive" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">璁惧鎶ヨ淇℃伅-{{ title }}</p> + <div class="height" slot="centent"> + <warning-edit @cancel="addmodalShow = false" :rowitem="rowitem" @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import baseInquer from '../../components/baseinquer'; +import warningEdit from '../../components/warningEdit'; +const { warning } = require('@/components/tableContainer/tableHead'); +import { getimestampDate, getymdhms } from '@/utils/date'; +import { AlertSearch, AlertDelete, GetAllAlarmInfo } from '@/api/warning'; +import { exportTableList } from '@/utils/excel'; +import XLSX from 'xlsx'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + inuqerobg: {}, + filterList: [ + { + value: '鏁呴殰鍚嶇О', + label: '鏁呴殰鍚嶇О' + }, + { + value: '鏁呴殰鎻忚堪', + label: '鏁呴殰鎻忚堪' + }, + { + value: '鏁呴殰璁惧', + label: '鏁呴殰璁惧' + }, + { + value: '鏁呴殰缂栧彿', + label: '鏁呴殰缂栧彿' + } + ], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20 + }; + }, + components: { TableContainer, baseInquer, Modal, warningEdit }, + computed: { + tableHead() { + return warning; + } + }, + mounted() { + this.AlertSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.AlertSearch(); + }, + + //鎼滅储鎶ヨ淇℃伅 + AlertSearch() { + this.$Loading(true); + const { 鏁呴殰鍚嶇О: alertName, 鏁呴殰鎻忚堪: alertDes, 鏁呴殰璁惧: deviceName, 鏁呴殰缂栧彿: alertCode } = this.inuqerobg; + AlertSearch(this.page + '&onePageNum=' + this.pageSize, { alertName, alertDes, deviceName, alertCode }).then( + res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.finishTime = item.finishTime ? getimestampDate(item.finishTime) : ''; + + item.createTime = item.createTime ? getimestampDate(item.createTime) : ''; + }); + console.log(data); + this.tableData = data; + this.totle = res.num; + } + this.$Loading(); + } + ); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.AlertSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.AlertSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { USERNAME } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + // AlertDelete({ userName: USERNAME }).then(res => { + // this.$message({ + // type: 'success', + // message: '鍒犻櫎鎴愬姛!' + // }); + // this.AlertSearch(); + // }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.AlertSearch(); + }, + //鍏ㄩ儴瀵煎嚭 + allderive() { + const { 鏁呴殰鍚嶇О: alertName, 鏁呴殰鎻忚堪: alertDes, 鏁呴殰璁惧: deviceName, 鏁呴殰缂栧彿: alertCode } = this.inuqerobg; + this.$Loading(true); + GetAllAlarmInfo({ alertName, alertDes, deviceName, alertCode }).then(res => { + let tHeader = []; + let filterVal = []; + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + exportTableList(tHeader, filterVal, res, '鎶ヨ淇℃伅' + getymdhms()); + this.$Loading(); + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#warning { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/basicInfo/components/baseinquer.vue b/qqjf-Web/src/views/basicInfo/components/baseinquer.vue new file mode 100644 index 0000000..b1c5835 --- /dev/null +++ b/qqjf-Web/src/views/basicInfo/components/baseinquer.vue @@ -0,0 +1,172 @@ +<template> + <div id="base" class="flex align-center justify-between"> + <div class=""> + <el-button-group> + <el-button v-if="add" type="primary" size="mini" icon="el-icon-plus" @click="$emit('addmodal')">鏂板缓</el-button> + <el-button v-if="dele" type="primary" size="mini" icon="el-icon-delete">鍒犻櫎</el-button> + <el-button + v-if="derive" + style="margin-left: 10px" + type="primary" + size="mini" + icon="el-icon-download" + @click="$emit('derive')" + >瀵煎嚭</el-button + > + <el-button + v-if="allderive" + style="margin-left: 10px" + type="primary" + size="mini" + icon="el-icon-download" + @click="$emit('allderive')" + >鍏ㄩ儴瀵煎嚭</el-button + > + </el-button-group> + </div> + <div class="width80 flex align-center justify-end"> + <div class="flex width align-center justify-end margin-right"> + <div v-if="basetimeshow" id="basetimeer" class="flex align-center margin-right width35"> + <label style="width: 6rem" class="textalign color909399 fontsizeinitial">璧锋鏃堕棿锛�</label> + <el-date-picker + size="mini" + v-model="timepick" + value-format="yyyy-MM-dd HH:mm:ss" + type="datetimerange" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + </div> + <div v-if="taskshow" id="basetimeer" class="flex align-center margin-right width35"> + <label style="width: 6rem" class="textalign color909399 fontsizeinitial">浠诲姟绫诲瀷锛�</label> + <el-select v-model="inquers.taskType" slot="prepend"> + <el-option + v-for="(item, index) in taskList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </div> + <el-input id="baseinquer" size="mini" clearable v-model="inquers[filter]" class="width30"> + <el-select @change="selchange" v-model="filter" slot="prepend"> + <el-option + v-for="(item, index) in filterList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </el-input> + </div> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + </div> +</template> + +<script> +export default { + data() { + return { + inquers: { timepick: null, taskType: '鍏ㄩ儴' }, + timepick: null, + applytime: [], + taskList: [ + { + label: '鍏ㄩ儴', + value: '鍏ㄩ儴' + }, + { + label: '绉诲簱', + value: '绉诲簱' + } + ], + filter: '', + visible: false, + value1: '' + }; + }, + props: { + advanced: { + type: Boolean, + default: false + }, + basetimeshow: { + type: Boolean, + default: false + }, + add: { + type: Boolean, + default: true + }, + dele: { + type: Boolean, + default: false + }, + derive: { + type: Boolean, + default: false + }, + allderive: { + type: Boolean, + default: false + }, + byfilter: { + type: String, + default: '' + }, + filterList: { + type: Array, + default: () => [] + }, + taskshow: { + type: Boolean, + default: false + } + }, + mounted() { + this.filter = this.byfilter; + }, + methods: { + inquer() { + this.inquers.timepick = this.timepick; + this.$emit('inquer', this.inquers); + }, + selchange() { + this.inquers = { timepick: null, taskType: '鍏ㄩ儴' }; + } + }, + watch: { + byfilter: { + handler(nvl, ovl) { + this.filter = nvl; + } + } + } +}; +</script> + +<style lang="scss" scoped> +#base { + ::v-deep .el-input-group__append, + ::v-deep .el-input-group__prepend { + width: 60px; + } + ::v-deep .el-date-editor--datetimerange.el-input, + .el-date-editor--datetimerange.el-input__inner { + width: 74%; + } +} +#baseinquer { + ::v-deep .el-select { + width: 100px; + } +} +#basetimeer { + ::v-deep .el-range-editor.el-input__inner { + padding: 3px; + } +} +</style> diff --git a/qqjf-Web/src/views/basicInfo/components/stackerEdit.vue b/qqjf-Web/src/views/basicInfo/components/stackerEdit.vue new file mode 100644 index 0000000..a4d25e2 --- /dev/null +++ b/qqjf-Web/src/views/basicInfo/components/stackerEdit.vue @@ -0,0 +1,113 @@ +<template> + <div class="storageEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="120px" + > + <el-form-item label="璁惧鍚�:" prop="deviceName"> + <el-input v-model="registerForm.deviceName" clearable></el-input> + </el-form-item> + <el-form-item label="璁惧绫诲瀷:" prop="placeType"> + <el-input v-model="registerForm.deviceType" clearable></el-input> + </el-form-item> + <el-form-item label="璁惧鍙�:" prop="isFull"> + <el-input v-model="registerForm.deviceId" clearable></el-input> + </el-form-item> + <!-- <el-form-item label="閿佸畾:" prop="isLock"> + <el-input v-model="registerForm.isLock" clearable></el-input> + </el-form-item> --> + </el-form> + </div> + <div class="palteEdit-button text-right margin-right15 margin-top2"> + <el-button type="primary" size="mini" class="form-buttom" @click="submitForm('registerForm')">鎻愪氦</el-button> + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { DeviceAddOrUpdate } from '@/api/stacker'; +export default { + data() { + return { + registerForm: {}, + usernameList: [], + rules: { + deviceName: { required: true, message: '璇疯緭璁惧鍚�', trigger: 'change' }, + deptDes: { required: true, message: '璇疯緭鍏ラ儴闂ㄦ弿杩�', trigger: 'change' }, + enable: { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' } + } + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + } + }, + methods: { + submitForm(registerForm) { + this.$refs[registerForm].validate(valid => { + if (valid) { + DeviceAddOrUpdate(this.registerForm).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.$emit('addsubmit'); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触' + }); + } + }); + } else { + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.storageEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .storageEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/basicInfo/components/warningEdit.vue b/qqjf-Web/src/views/basicInfo/components/warningEdit.vue new file mode 100644 index 0000000..26821a5 --- /dev/null +++ b/qqjf-Web/src/views/basicInfo/components/warningEdit.vue @@ -0,0 +1,144 @@ +<template> + <div class="warningEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + label-position="left" + label-width="120px" + > + <el-form-item label="鏁呴殰缂栧彿:" prop="alertCode"> + <el-input disabled v-model="registerForm.alertCode" clearable></el-input> + </el-form-item> + <el-form-item label="鏁呴殰璁惧:" prop="placeType"> + <!-- <el-input v-model="registerForm.deviceName" clearable></el-input> --> + <el-select size="mini" clearable v-model="registerForm.deviceName" placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in deviceNameList" + :key="'deviceName' + index" + :label="item.deviceName" + :value="item.deviceName" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鏁呴殰鍚嶇О:" prop="isFull"> + <el-input v-model="registerForm.alertName" clearable></el-input> + </el-form-item> + <el-form-item label="鏁呴殰鎻忚堪:" prop="isFull"> + <el-input + type="textarea" + :autosize="{ minRows: 2, maxRows: 6 }" + v-model="registerForm.alertDes" + clearable + ></el-input> + </el-form-item> + <!-- <el-form-item label="閿佸畾:" prop="isLock"> + <el-input v-model="registerForm.isLock" clearable></el-input> + </el-form-item> --> + </el-form> + </div> + <div class="palteEdit-button text-right margin-right15 margin-top2"> + <el-button type="primary" size="mini" class="form-buttom" @click="submitForm('registerForm')">鎻愪氦</el-button> + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { CarAddOrUpdate, AlertGetCode } from '@/api/warning'; +import { DeviceSearch } from '@/api/stacker'; +export default { + data() { + return { + registerForm: { + alertCode: '' + }, + deviceNameList: [] + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + } else { + this.AlertGetCode(); + } + this.DeviceSearch(); + }, + methods: { + //鑾峰彇缂栧彿 + AlertGetCode() { + AlertGetCode().then(res => { + this.registerForm.alertCode = res; + }); + }, + //鑾峰彇璁惧 + DeviceSearch() { + DeviceSearch('1&onePageNum=999').then(res => { + if (res.code == 0) { + this.deviceNameList = res.data || []; + } + }); + }, + submitForm(registerForm) { + this.$refs[registerForm].validate(valid => { + if (valid) { + CarAddOrUpdate(this.registerForm).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.$emit('addsubmit'); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触' + }); + } + }); + } else { + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.warningEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .warningEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/basicInfo/equipmenttask/avroRecord/index.vue b/qqjf-Web/src/views/basicInfo/equipmenttask/avroRecord/index.vue new file mode 100644 index 0000000..0ade30c --- /dev/null +++ b/qqjf-Web/src/views/basicInfo/equipmenttask/avroRecord/index.vue @@ -0,0 +1,202 @@ +<template> + <!-- 鍫嗗灈鏈轰换鍔� --> + <div id="piler" class="global-content"> + <!-- 绛涢�� --> + <base-inquer + :add="false" + :dele="false" + :derive="true" + :taskshow="true" + :basetimeshow="true" + byfilter="闆朵欢鍙�" + :filterList="filterList" + @addmodal="addmodal" + @inquer="inquer" + @derive="derive" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :operation="false" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + </div> +</template> + +<script> +import { TableContainer } from '@/components/index'; +import baseInquer from '../../components/baseinquer'; +const { avroRecord } = require('@/components/tableContainer/tableHead'); +import { getimestampDate, getymdhms } from '@/utils/date'; +import { SrmTaskSearch, SearchAll } from '@/api/avroRecord'; +import { exportTableList } from '@/utils/excel'; + +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + inuqerobg: { taskType: '鍏ㄩ儴' }, + filterList: [ + { + value: '闆朵欢鍙�', + label: '闆朵欢鍙�' + } + ], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20 + }; + }, + components: { TableContainer, baseInquer }, + computed: { + tableHead() { + return avroRecord; + } + }, + mounted() { + this.SrmTaskSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.page = 1; + this.SrmTaskSearch(); + }, + //瀵煎嚭 + derive() { + let tHeader = []; + let filterVal = []; + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + this.$Loading(true); + const { 闆朵欢鍙�: itemName, taskType } = this.inuqerobg; + SearchAll({ + itemName, + taskType, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.isReleased = item.isReleased == 1 ? '鏄�' : item.isReleased == 0 ? '鍚�' : item.isReleased; + item.hasFinished = item.hasFinished == 1 ? '鏄�' : item.hasFinished == 0 ? '鍚�' : item.hasFinished; + item.doTime = item.doTime ? getimestampDate(item.doTime) : ''; + item.finishTime = item.finishTime ? getimestampDate(item.finishTime) : ''; + }); + exportTableList(tHeader, filterVal, data, '鍫嗗灈鏈轰换鍔�' + getymdhms()); + } + this.$Loading(); + }); + }, + //鎼滅储鎶ヨ淇℃伅 + SrmTaskSearch() { + this.$Loading(true); + const { 闆朵欢鍙�: itemName, taskType } = this.inuqerobg; + SrmTaskSearch(this.page + '&onePageNum=' + this.pageSize, { + itemName, + taskType, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.isReleased = item.isReleased == 1 ? '鏄�' : item.isReleased == 0 ? '鍚�' : item.isReleased; + item.hasFinished = item.hasFinished == 1 ? '鏄�' : item.hasFinished == 0 ? '鍚�' : item.hasFinished; + item.doTime = item.doTime ? getimestampDate(item.doTime) : ''; + item.finishTime = item.finishTime ? getimestampDate(item.finishTime) : ''; + }); + this.tableData = res.data; + this.totle = res.num; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.SrmTaskSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.SrmTaskSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { USERNAME } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + // AlertDelete({ userName: USERNAME }).then(res => { + // this.$message({ + // type: 'success', + // message: '鍒犻櫎鎴愬姛!' + // }); + // this.SrmTaskSearch(); + // }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.SrmTaskSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#piler { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/basicInfo/equipmenttask/index.vue b/qqjf-Web/src/views/basicInfo/equipmenttask/index.vue new file mode 100644 index 0000000..1cb60c6 --- /dev/null +++ b/qqjf-Web/src/views/basicInfo/equipmenttask/index.vue @@ -0,0 +1,9 @@ +<template> + <router-view /> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/basicInfo/equipmenttask/piler/index.vue b/qqjf-Web/src/views/basicInfo/equipmenttask/piler/index.vue new file mode 100644 index 0000000..38e0e81 --- /dev/null +++ b/qqjf-Web/src/views/basicInfo/equipmenttask/piler/index.vue @@ -0,0 +1,236 @@ +<template> + <!-- 鍫嗗灈鏈轰换鍔� --> + <div id="piler" class="global-content"> + <!-- 绛涢�� --> + <base-inquer + :add="false" + :dele="false" + :derive="true" + :basetimeshow="true" + byfilter="璁惧鍚嶇О" + :filterList="filterList" + @addmodal="addmodal" + @inquer="inquer" + @derive="derive" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :operation="false" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + </div> +</template> + +<script> +import { TableContainer } from '@/components/index'; +import baseInquer from '../../components/baseinquer'; +const { piler } = require('@/components/tableContainer/tableHead'); +import { getimestampDate, getymdhms } from '@/utils/date'; +import { SrmTaskSearch } from '@/api/equipmenttask'; +import { exportTableList } from '@/utils/excel'; + +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + inuqerobg: {}, + filterList: [ + { + value: '璁惧鍚嶇О', + label: '璁惧鍚嶇О' + }, + { + value: '浠诲姟绫诲瀷', + label: '浠诲姟绫诲瀷' + }, + { + value: '鍣ㄥ叿瑙勬牸绫诲瀷', + label: '鍣ㄥ叿瑙勬牸绫诲瀷' + }, + { + value: '鐩爣浣嶇疆', + label: '鐩爣浣嶇疆' + }, + { + value: '璧峰浣嶇疆', + label: '璧峰浣嶇疆' + } + ], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20 + }; + }, + components: { TableContainer, baseInquer }, + computed: { + tableHead() { + return piler; + } + }, + mounted() { + this.SrmTaskSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + console.log(e); + this.inuqerobg = e; + this.page = 1; + this.SrmTaskSearch(); + }, + //瀵煎嚭 + derive() { + let tHeader = []; + let filterVal = []; + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + this.$Loading(true); + const { + 璁惧鍚嶇О: devName, + 浠诲姟绫诲瀷: taskType, + 鍣ㄥ叿瑙勬牸绫诲瀷: palletType, + 鐩爣浣嶇疆: toPlace, + 璧峰浣嶇疆: sourcePlace + } = this.inuqerobg; + SrmTaskSearch('1&onePageNum=99999999', { + devName, + taskType, + palletType, + toPlace, + sourcePlace, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.isReleased = item.isReleased == 1 ? '鏄�' : item.isReleased == 0 ? '鍚�' : item.isReleased; + item.hasFinished = item.hasFinished == 1 ? '鏄�' : item.hasFinished == 0 ? '鍚�' : item.hasFinished; + item.doTime = item.doTime ? getimestampDate(item.doTime) : ''; + item.finishTime = item.finishTime ? getimestampDate(item.finishTime) : ''; + }); + exportTableList(tHeader, filterVal, data, '鍫嗗灈鏈轰换鍔�' + getymdhms()); + } + this.$Loading(); + }); + }, + //鎼滅储鎶ヨ淇℃伅 + SrmTaskSearch() { + this.$Loading(true); + const { + 璁惧鍚嶇О: devName, + 浠诲姟绫诲瀷: taskType, + 鍣ㄥ叿瑙勬牸绫诲瀷: palletType, + 鐩爣浣嶇疆: toPlace, + 璧峰浣嶇疆: sourcePlace + } = this.inuqerobg; + SrmTaskSearch(this.page + '&onePageNum=' + this.pageSize, { + devName, + taskType, + palletType, + toPlace, + sourcePlace, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.isReleased = item.isReleased == 1 ? '鏄�' : item.isReleased == 0 ? '鍚�' : item.isReleased; + item.hasFinished = item.hasFinished == 1 ? '鏄�' : item.hasFinished == 0 ? '鍚�' : item.hasFinished; + item.doTime = item.doTime ? getimestampDate(item.doTime) : ''; + item.finishTime = item.finishTime ? getimestampDate(item.finishTime) : ''; + }); + this.tableData = res.data; + this.totle = res.num; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.SrmTaskSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.SrmTaskSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { USERNAME } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + // AlertDelete({ userName: USERNAME }).then(res => { + // this.$message({ + // type: 'success', + // message: '鍒犻櫎鎴愬姛!' + // }); + // this.SrmTaskSearch(); + // }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.SrmTaskSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#piler { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/basicInfo/equipmenttask/rgvtask/index.vue b/qqjf-Web/src/views/basicInfo/equipmenttask/rgvtask/index.vue new file mode 100644 index 0000000..929e938 --- /dev/null +++ b/qqjf-Web/src/views/basicInfo/equipmenttask/rgvtask/index.vue @@ -0,0 +1,217 @@ +<template> + <!-- RGV浠诲姟 --> + <div id="rgvtask" class="global-content"> + <!-- 绛涢�� --> + <base-inquer + :add="false" + :dele="false" + :derive="true" + :basetimeshow="true" + byfilter="璁惧鍚嶇О" + :filterList="filterList" + @addmodal="addmodal" + @inquer="inquer" + @derive="derive" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :operation="false" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + </div> +</template> + +<script> +import { TableContainer } from '@/components/index'; +import baseInquer from '../../components/baseinquer'; +const { rgvtask } = require('@/components/tableContainer/tableHead'); +import { getimestampDate, getymdhms } from '@/utils/date'; +import { RgvTaskSearch } from '@/api/equipmenttask'; +import { exportTableList } from '@/utils/excel'; + +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + inuqerobg: {}, + filterList: [ + { + value: '璁惧鍚嶇О', + label: '璁惧鍚嶇О' + }, + { + value: '鐩爣浣嶇疆', + label: '鐩爣浣嶇疆' + }, + { + value: '璧峰浣嶇疆', + label: '璧峰浣嶇疆' + }, + { + value: '浠诲姟绫诲瀷', + label: '浠诲姟绫诲瀷' + } + ], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20 + }; + }, + components: { TableContainer, baseInquer }, + computed: { + tableHead() { + return rgvtask; + } + }, + mounted() { + this.RgvTaskSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.page = 1; + this.inuqerobg = e; + this.RgvTaskSearch(); + }, + //瀵煎嚭 + derive() { + let tHeader = []; + let filterVal = []; + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + this.$Loading(true); + const { 璁惧鍚嶇О: devName, 鐩爣浣嶇疆: toPlace, 璧峰浣嶇疆: sourcePlace, 浠诲姟绫诲瀷: taskType } = this.inuqerobg; + RgvTaskSearch('1&onePageNum=99999999', { + devName, + toPlace, + sourcePlace, + taskType, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.isReleased = item.isReleased == 1 ? '鏄�' : item.isReleased == 0 ? '鍚�' : item.isReleased; + item.hasFinished = item.hasFinished == 1 ? '鏄�' : item.hasFinished == 0 ? '鍚�' : item.hasFinished; + item.doTime = item.doTime ? getimestampDate(item.doTime) : ''; + item.finishTime = item.finishTime ? getimestampDate(item.finishTime) : ''; + }); + exportTableList(tHeader, filterVal, data, 'RGV浠诲姟' + getymdhms()); + } + this.$Loading(); + }); + }, + //鎼滅储鎶ヨ淇℃伅 + RgvTaskSearch() { + this.$Loading(true); + const { 璁惧鍚嶇О: devName, 鐩爣浣嶇疆: toPlace, 璧峰浣嶇疆: sourcePlace, 浠诲姟绫诲瀷: taskType } = this.inuqerobg; + RgvTaskSearch(this.page + '&onePageNum=' + this.pageSize, { + devName, + toPlace, + sourcePlace, + taskType, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.isReleased = item.isReleased == 1 ? '鏄�' : item.isReleased == 0 ? '鍚�' : item.isReleased; + item.hasFinished = item.hasFinished == 1 ? '鏄�' : item.hasFinished == 0 ? '鍚�' : item.hasFinished; + item.doTime = item.doTime ? getimestampDate(item.doTime) : ''; + item.finishTime = item.finishTime ? getimestampDate(item.finishTime) : ''; + }); + this.tableData = res.data; + this.totle = res.num; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.RgvTaskSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.RgvTaskSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { USERNAME } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + // AlertDelete({ userName: USERNAME }).then(res => { + // this.$message({ + // type: 'success', + // message: '鍒犻櫎鎴愬姛!' + // }); + // this.RgvTaskSearch(); + // }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.RgvTaskSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#rgvtask { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/basicInfo/index.vue b/qqjf-Web/src/views/basicInfo/index.vue new file mode 100644 index 0000000..1ca3ac4 --- /dev/null +++ b/qqjf-Web/src/views/basicInfo/index.vue @@ -0,0 +1,11 @@ +<template> + <keep-alive> + <router-view /> + </keep-alive> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/dataview/classified.vue b/qqjf-Web/src/views/dataview/classified.vue new file mode 100644 index 0000000..18a7880 --- /dev/null +++ b/qqjf-Web/src/views/dataview/classified.vue @@ -0,0 +1,48 @@ +<template> + <!-- 鍒嗙被缁熻 --> + <div id="classified" class="global-content backgroundrgb"> + <div class="width80 height margin-auto overflow flex"> + <div class="width50 height overflow"> + <classified-echart titleechart="闆朵欢鏉ユ簮鍒嗗竷" colors="#fff" :chartData="chartData" class="width height" /> + </div> + <div class="width50 height overflow"> + <classified-echart titleechart="鍣ㄥ叿鏉ユ簮鍒嗗竷" colors="#fff" :chartData="applianceData" class="width height" /> + </div> + </div> + </div> +</template> + +<script> +import { GetStockClassificationData } from '@/api/reportforms'; +import classifiedEchart from '@/views/Home/components/sourceEchart.vue'; +export default { + data() { + return { + chartData: {}, + applianceData: {} + }; + }, + components: { classifiedEchart }, + computed: {}, + mounted() { + this.GetStockClassificationData(); + this.applianceDataficationData(); + }, + methods: { + //闆朵欢鏉ユ簮 + GetStockClassificationData() { + GetStockClassificationData({ type: 1 }).then(res => { + this.chartData = res; + }); + }, + //鍣ㄥ叿鏉ユ簮 + applianceDataficationData() { + GetStockClassificationData({ type: 2 }).then(res => { + this.applianceData = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped></style> diff --git a/qqjf-Web/src/views/dataview/components/lineEcharts.vue b/qqjf-Web/src/views/dataview/components/lineEcharts.vue new file mode 100644 index 0000000..7ae6f4c --- /dev/null +++ b/qqjf-Web/src/views/dataview/components/lineEcharts.vue @@ -0,0 +1,179 @@ +<template> + <div class="chart-wrapper" ref="outputline"></div> +</template> + +<script> +import resize from '@/mixins/resize'; +const echarts = require('echarts'); +export default { + name: 'placePie', + props: { + titleechart: { + type: String, + default: '' + }, + linelist: { + type: Object, + default: () => {} + }, + colorList: { + type: Array, + default: () => [] + }, + colors: { + type: String, + default: '#636972' + } + }, + mixins: [resize], + data() { + return {}; + }, + mounted() { + this.initEchart(); + }, + methods: { + initEchart() { + let serieslist = []; + + let data = this.linelist.data; + if (data) { + data.forEach((item, index) => { + serieslist.push({ + name: item.name, + type: 'bar', + smooth: true, + data: item.xdata, + // 淇敼鐨勬槸绾跨殑棰滆壊 + lineStyle: { + width: 10 + } + }); + }); + } + + this.myChart = echarts.init(this.$refs.outputline); + this.myChart.setOption( + { + title: { + text: this.linelist && this.linelist.data ? this.titleechart : '鏆傛棤鏁版嵁', + + textStyle: { + color: this.colors, + fontWeight: 'normal', + fontSize: 50 + }, + + left: '45%', + x: 'center', + y: 0, + itemGap: 10 + }, + + tooltip: { + //鎻愮ず妗嗙粍浠� + trigger: 'axis', + // formatter: '{b0}: {c0}<br />{b1}: {c1}', + axisPointer: { + type: 'shadow' + }, + textStyle: { + fontSize: 36 + } + }, + grid: { + left: '1%', + right: '1%', + bottom: '1%', + top: '27%', + // padding:'0 0 10 0', + containLabel: true + }, + legend: { + //鍥句緥缁勪欢锛岄鑹插拰鍚嶅瓧 + right: '1%', + top: '15%', + itemGap: 16, + itemWidth: 18, + itemHeight: 10, + data: this.linelist.legend, + textStyle: { + fontStyle: 'normal', + fontFamily: '寰蒋闆呴粦', + color: this.colors, + fontSize: 28 + } + }, + xAxis: [ + { + type: 'category', + // boundaryGap: true,//鍧愭爣杞翠袱杈圭暀鐧� + data: this.linelist.xdata, + // data: Axdata, + axisLabel: { + interval: 0, //璁剧疆涓� 1锛岃〃绀恒�庨殧涓�涓爣绛炬樉绀轰竴涓爣绛俱�� + margin: 10, + textStyle: { + fontSize: 28 + } + }, + axisLine: { show: true, lineStyle: { color: this.colors, width: 10 } }, + splitLine: { + show: false, + lineStyle: { color: this.colors, width: 10 } + }, + axisTick: { + show: false + } + } + ], + yAxis: [ + { + type: 'value', + splitNumber: 5, + axisLabel: { + textStyle: { + fontSize: 36 + } + }, + axisLine: { + lineStyle: { + color: this.colors, + width: 10 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: true, + lineStyle: { + color: this.colors, + width: 10 + } + } + } + ], + dataZoom: [ + { + type: 'inside', + startValue: 10, + endValue: 15 + } + ], + series: serieslist + }, + true + ); + } + }, + watch: { + linelist: { + handler() { + this.initEchart(); + }, + deep: true + } + } +}; +</script> diff --git a/qqjf-Web/src/views/dataview/movablerate.vue b/qqjf-Web/src/views/dataview/movablerate.vue new file mode 100644 index 0000000..90f64b7 --- /dev/null +++ b/qqjf-Web/src/views/dataview/movablerate.vue @@ -0,0 +1,135 @@ +<template> + <!-- 璁惧鍙姩鐜� --> + <div id="movablerate" class="global-content backgroundrgb"> + <div class="width80 height margin-auto overflow"> + <div class="width margintopbot flex align-center justify-end"> + <label class="color909399 fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + <el-date-picker + class="margin-right" + v-model="pickertime" + size="mini" + type="daterange" + value-format="yyyy-MM-dd" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button class="margin-right" type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + <div class="height-calc overflowy-auto"> + <div class="width height48 overflow margin-top10px"> + <movablerate-echart + class="width height" + colors="#fff" + echarttitle="鍫嗗灈鏈�-璁惧鍙姩鐜�" + :chartData="chartData" + :colorList="colorList" + /> + </div> + <div class="width height48 overflow margin-top10px"> + <movablerate-echart + class="width height" + colors="#fff" + echarttitle="RGV-璁惧鍙姩鐜�" + :chartData="rgvdata" + :colorList="colorList" + /> + </div> + </div> + </div> + </div> +</template> + +<script> +import { GetDevMovable } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import MovablerateEchart from '@/views/Home/components/movablerateechart.vue'; +export default { + data() { + return { + pickertime: [GetDateStr(-15), GetDateStr(0)], + chartData: {}, + rgvdata: {}, + colorList: [ + '#0090FF', + '#36CE9E', + '#FFC005', + '#FF515A', + '#8B5CFF', + '#00CA69', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFFFBB', + '#99FFFF', + '#CC00CC', + '#CC00CC', + '#C63300', + '#9955FF', + '#66FF66', + '#B5C334', + '#FCCE10', + '#27727B', + '#FE8463', + '#FAD860', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFAA33', + '#CC00CC', + '#FF77FF', + '#C63300', + '#F4E001', + '#66FF66' + ] + }; + }, + components: { MovablerateEchart }, + computed: {}, + mounted() { + this.GetDevMovable(); + this.GetRGVDevMovable(); + }, + methods: { + inquer() { + this.GetDevMovable(); + this.GetRGVDevMovable(); + }, + //鍫嗗灈鏈� + GetDevMovable() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '', + type: 1 + }; + GetDevMovable(objtimes).then(res => { + this.chartData = res; + }); + }, + //RGV + GetRGVDevMovable() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '', + type: 2 + }; + GetDevMovable(objtimes).then(res => { + this.rgvdata = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped></style> diff --git a/qqjf-Web/src/views/dataview/output.vue b/qqjf-Web/src/views/dataview/output.vue new file mode 100644 index 0000000..72d5142 --- /dev/null +++ b/qqjf-Web/src/views/dataview/output.vue @@ -0,0 +1,129 @@ +<template> + <!-- 鍒嗙被缁熻 --> + <div id="Ouptput" class="global-content backgroundrgb"> + <div class="width80 height margin-auto overflow"> + <div class="margintopbot height width overflow"> + <!-- <p class="fontsize2rem text-center">闆朵欢鍑哄叆搴撶粺璁�</p> --> + <div class="width margintopbot flex justify-end"> + <el-date-picker + v-model="datatime" + size="mini" + type="datetimerange" + value-format="yyyy-MM-dd HH:mm:ss" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <!-- <el-date-picker + size="mini" + v-model="datatime" + type="date" + :clearable="false" + value-format="yyyy-MM-dd" + placeholder="閫夋嫨鏃ユ湡" + > + </el-date-picker> --> + <el-button class="margin-left margin-right" type="primary" size="mini" @click="goodsinquer">鏌ヨ</el-button> + </div> + <!-- <div class="width98 height82 margintopbot echart-height"> + <line-echart + titleechart="鍑哄叆搴撲换鍔�" + :linelist="BarItemlinelist" + :colorList="barcolorList" + class="width height" + colors="#fff" + /> + </div> --> + <div class="width98 height45 margintopbot echart-height"> + <line-echart + titleechart="闆朵欢鏁伴噺缁熻" + :linelist="BarItemlinelist" + :colorList="barcolorList" + colors="#fff" + class="width height" + /> + </div> + <div class="width98 height45 margintopbot echart-height"> + <line-echart + titleechart="鍣ㄥ叿鍑哄叆搴撶粺璁�" + :linelist="Containerlinelist" + :colorList="concolorList" + colors="#fff" + class="width height" + /> + </div> + </div> + </div> + </div> +</template> + +<script> +import { GetInOutCountByHour } from '@/api/output'; +import { GetHomeBarItemData, GetHomeBarContainerData } from '@/api/Didproject'; +import LineEchart from './components/lineEcharts.vue'; +import { getDate, GetDateStr, GetTimeStr } from '@/utils/date'; +export default { + data() { + return { + datatime: [GetDateStr(-15) + ' 00:00:00', getDate() + ' ' + GetTimeStr(0)], + BarItemlinelist: {}, //闆朵欢鍑哄叆鏁伴噺 + Containerlinelist: {}, //鍑哄叆搴撴暟閲� + barcolorList: ['#ffc637', '#fc7293', '#8477e9', '#2599f0', '#31c3ea', '#17d8b9', '#e8bdf3'], + concolorList: ['#31c3ea', '#17d8b9', '#2599f0', '#e8bdf3', '#ffc637', '#fc7293', '#8477e9'] + }; + }, + components: { LineEchart }, + computed: {}, + mounted() { + this.GetHomeBarItemData(); + this.GetHomeBarContainerData(); + }, + methods: { + //鏃堕棿鏌ヨ + goodsinquer() { + this.GetHomeBarItemData(); + this.GetHomeBarContainerData(); + }, + //鑾峰彇闆朵欢鐨勫嚭鍏ュ簱鏁伴噺 + GetHomeBarItemData() { + let time = { + startTime: this.datatime ? this.datatime[0] : '', + endTime: this.datatime ? this.datatime[1] : '' + }; + this.BarItemlineshow = false; + GetHomeBarItemData(time).then(res => { + this.BarItemlinelist = res.data; + this.BarItemlineshow = true; + }); + }, + //鑾峰彇鍣ㄥ叿鐨勫嚭鍏ュ簱鏁伴噺 + GetHomeBarContainerData() { + let time = { + startTime: this.datatime ? this.datatime[0] : '', + endTime: this.datatime ? this.datatime[1] : '' + }; + this.$Loading(true); + this.Containerline = false; + GetHomeBarContainerData(time).then(res => { + this.Containerlinelist = res.data; + this.Containerline = true; + this.$Loading(); + }); + } + //鑾峰彇闆朵欢鐨勫嚭鍏ュ簱鏁伴噺 + // GetInOutCountByHour() { + // let time = { + // startTime: this.datatime + ' 00:00:00', + // endTime: this.datatime + ' 23:59:59' + // }; + + // GetInOutCountByHour(time).then(res => { + // // this.BarItemlinelist = res.data; + // }); + // } + } +}; +</script> + +<style lang="scss" scoped></style> diff --git a/qqjf-Web/src/views/dataview/product.vue b/qqjf-Web/src/views/dataview/product.vue new file mode 100644 index 0000000..0e79fdd --- /dev/null +++ b/qqjf-Web/src/views/dataview/product.vue @@ -0,0 +1,66 @@ +<template> + <!-- 鍦ㄥ埗鍝佽祫閲戝垎鏋� --> + <div id="product" class="global-content backgroundrgb"> + <div class="width80 height margin-auto overflow"> + <div class="width margintopbot flex align-center justify-end"> + <label class="color909399 fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + <el-date-picker + class="margin-right" + v-model="pickertime" + size="mini" + type="daterange" + value-format="yyyy-MM-dd" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button class="margin-right" type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + <div class="width height-calc90 overflow margin-top2"> + <product-echart class="width height" colors="#fff" :chartData="chartData" :colorList="colorList" /> + </div> + </div> + </div> +</template> + +<script> +import { GetStorageCapitalAnalysis } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import resize from '@/mixins/resize'; +import ProductEchart from '@/views/Home/components/product.vue'; +const echarts = require('echarts'); +export default { + data() { + return { + pickertime: [GetDateStr(-15), GetDateStr(0)], + chartData: {}, + rgvdata: {}, + colorList: ['#9effff', '#9E87FF', '#73DD39', '#73DDFF', '#fe9a', '#fe9a8b', '#F3A43B'] + }; + }, + mixins: [resize], + components: { ProductEchart }, + computed: {}, + mounted() { + this.GetStorageCapitalAnalysis(); + }, + methods: { + inquer() { + this.GetStorageCapitalAnalysis(); + }, + //鍫嗗灈鏈� + GetStorageCapitalAnalysis() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '' + }; + GetStorageCapitalAnalysis(objtimes).then(res => { + this.chartData = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped></style> diff --git a/qqjf-Web/src/views/dataview/rateequipment.vue b/qqjf-Web/src/views/dataview/rateequipment.vue new file mode 100644 index 0000000..3f83c83 --- /dev/null +++ b/qqjf-Web/src/views/dataview/rateequipment.vue @@ -0,0 +1,141 @@ +<template> + <!-- 璁惧鍒╃敤鐜� --> + <div id="rateequipment" class="global-content backgroundrgb"> + <div class="width90 height margin-auto overflow"> + <div class="width margintopbot flex align-center justify-end"> + <label class="color909399 fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + <el-date-picker + class="margin-right" + v-model="pickertime" + size="mini" + type="daterange" + value-format="yyyy-MM-dd" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button class="margin-right" type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + <div class="height-calc overflowy-auto"> + <div class="width height48 overflow margin-top10px"> + <rateequipment-echart + class="width height" + colors="#fff" + echarttitle="鍫嗗灈鏈�-璁惧鍒╃敤鐜�" + :chartData="chartData" + :colorList="colorList" + /> + </div> + <div class="width height48 overflow margin-top10px"> + <rateequipment-echart + class="width height" + colors="#fff" + echarttitle="RGV-璁惧鍒╃敤鐜�" + :chartData="rgvdata" + :colorList="colorList" + /> + </div> + </div> + </div> + </div> +</template> + +<script> +import { GetDevAvailability } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import resize from '@/mixins/resize'; +import RateequipmentEchart from '@/views/Home/components/rateequipment.vue'; + +export default { + data() { + return { + pickertime: [GetDateStr(-15), GetDateStr(0)], + chartData: {}, + rgvdata: {}, + colorList: [ + '#0090FF', + '#36CE9E', + '#FFC005', + '#FF515A', + '#8B5CFF', + '#00CA69', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFFFBB', + '#99FFFF', + '#CC00CC', + '#CC00CC', + '#C63300', + '#9955FF', + '#66FF66', + '#B5C334', + '#FCCE10', + '#27727B', + '#FE8463', + '#FAD860', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFAA33', + '#CC00CC', + '#FF77FF', + '#C63300', + '#F4E001', + '#66FF66' + ] + }; + }, + mixins: [resize], + components: { RateequipmentEchart }, + computed: {}, + mounted() { + this.GetDevAvailability(); + this.GetRGVDevMovable(); + }, + methods: { + inquer() { + this.GetDevAvailability(); + this.GetRGVDevMovable(); + }, + //鍫嗗灈鏈� + GetDevAvailability() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '', + type: 1 + }; + GetDevAvailability(objtimes).then(res => { + this.chartData = res; + }); + }, + //RGV + GetRGVDevMovable() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '', + type: 2 + }; + GetDevAvailability(objtimes).then(res => { + this.rgvdata = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#rateequipment { +} +</style> diff --git a/qqjf-Web/src/views/dataview/statelibrary.vue b/qqjf-Web/src/views/dataview/statelibrary.vue new file mode 100644 index 0000000..cb43036 --- /dev/null +++ b/qqjf-Web/src/views/dataview/statelibrary.vue @@ -0,0 +1,117 @@ +<template> + <!-- 绔嬪簱鎬昏 --> + <div id="statelibrary" class="global-content backgroundrgb"> + <h3 class="text-center colorfff fontsize2rem absolute transformtopleft12" style="font-size: 80px">绔嬪簱鎬昏</h3> + <div + class=" + width80 + padding10 + borderradius + margintopbot + absolute + transformtopleft + flex flex-wrap + justify-around + align-center + " + > + <div + class="didproject-title width45 flex justify-around align-center borderdashed borderradius overflow pointer" + v-for="(item, index) in titlelist" + :style="'margin-top:' + item.margin" + :key="index" + > + <div class="heigth padding10 overflow"> + <p class="text-center fontweight600 colorfff margin-top15" style="font-size: 50px"> + <countTo :startVal="startVal" :endVal="item.mun" :duration="3000"></countTo> + </p> + <p class="color409EFF" style="font-size: 50px">{{ item.titel }}</p> + </div> + </div> + </div> + </div> +</template> + +<script> +import countTo from 'vue-count-to'; +import { GetStorageOverviewData } from '@/api/Didproject'; +export default { + data() { + return { + startVal: 0, + titlelist: [ + { + titel: '搴撲綅鎬绘暟', + mun: 0, + color: '#40C9C6' + }, + { + titel: '鏈夎揣搴撲綅', + mun: 0, + color: '#F4516C' + }, + { + titel: '甯︿欢鍣ㄥ叿', + mun: 0, + color: '#36A3F7', + margin: '1%' + }, + { + titel: '绌哄櫒鍏锋暟', + mun: 0, + color: '#34BFA3', + margin: '1%' + } + // { + // titel: '鍒朵欢鎬绘暟', + // mun: 1, + // color: '#ffc637' + // } + ], + cleartime: null + }; + }, + components: { countTo }, + computed: {}, + mounted() { + this.GetStorageOverviewData(); + this.cleartime = setInterval(() => { + this.GetStorageOverviewData(); + }, 60000); + }, + methods: { + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/statelibrary' + }); + window.open(href, '_blank'); + }, + //绔嬪簱鎬昏鍜屽埗浠舵�昏 + GetStorageOverviewData() { + // no 缂栧彿锛泃itle 鏍囬锛泇alue 鏁伴噺 + GetStorageOverviewData().then(res => { + let data = res.data || []; + this.titlelist.forEach(item => { + data.forEach(element => { + if (item.titel == element.titel) { + item.mun = element.value; + } + }); + }); + }); + } + }, + beforeDestroy() { + if (this.cleartime) { + clearInterval(this.cleartime); + this.cleartime = null; + } + } +}; +</script> + +<style lang="scss" scoped> +#statelibrary { +} +</style> diff --git a/qqjf-Web/src/views/dataview/taskbeat.vue b/qqjf-Web/src/views/dataview/taskbeat.vue new file mode 100644 index 0000000..c7e09ee --- /dev/null +++ b/qqjf-Web/src/views/dataview/taskbeat.vue @@ -0,0 +1,69 @@ +<template> + <!-- 浠诲姟鑺傛媿 --> + <div id="Taskbeat" class="global-content backgroundrgb"> + <div class="width80 height margin-auto overflow"> + <div class="width margintopbot flex align-center justify-end"> + <label class="colorfff fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + <el-date-picker + class="margin-right" + size="mini" + value-format="yyyy-MM-dd" + v-model="pickertime" + type="date" + placeholder="閫夋嫨鏃ユ湡" + > + </el-date-picker> + <el-button class="margin-right" type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + <div class="width height-calc90 overflow margin-top2"> + <task-echart class="width height" colors="#fff" :chartData="chartData" :colorList="colorList" :yTotals="yMax" /> + <!-- <div class="width height" ref="taskbeatEcharts"></div> --> + </div> + </div> + </div> +</template> + +<script> +import { GetTaskBeatAnalysis } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import TaskEchart from '@/views/Home/components/meterEchart.vue'; +export default { + data() { + return { + pickertime: GetDateStr(-1), + chartData: {}, + yMax:-1, + colorList: ['#0090FF', '#36CE9E', '#FFC005', '#FF515A', '#8B5CFF', '#00CA69'] + }; + }, + components: { TaskEchart }, + computed: {}, + mounted() { + this.GetTaskBeatAnalysis(); + }, + methods: { + inquer() { + this.GetTaskBeatAnalysis(); + }, + + GetTaskBeatAnalysis() { + GetTaskBeatAnalysis({ startTime: this.pickertime }).then(res => { + this.yMax = res.maxNum + let stepTotal = 0; + res.data[1].xdata = res.data[1].xdata.map((mapObj,mapIndex)=>{ + stepTotal = stepTotal + Number(mapObj); + let rateVal = (this.yMax>0?Number((stepTotal/this.yMax*100).toFixed(2)):0) + res.data[0].xdata[mapIndex] = rateVal + return mapObj + }) + this.chartData = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#Taskbeat { +} +</style> diff --git a/qqjf-Web/src/views/dataview/tasktime.vue b/qqjf-Web/src/views/dataview/tasktime.vue new file mode 100644 index 0000000..33fb3a6 --- /dev/null +++ b/qqjf-Web/src/views/dataview/tasktime.vue @@ -0,0 +1,104 @@ +<template> + <!-- 浠诲姟骞冲潎鏃堕暱--> + <div id="tasktime" class="global-content backgroundrgb"> + <div class="width80 height margin-auto overflow"> + <div class="width margintopbot flex align-center justify-end"> + <label class="colorfff fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + <el-date-picker + class="margin-right" + v-model="pickertime" + size="mini" + type="daterange" + value-format="yyyy-MM-dd" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button class="margin-right" type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + <div class="width height-calc90 overflow margin-top2"> + <tasktime-echart class="width height" colors="#fff" :chartData="chartData" :colorList="colorList" /> + </div> + </div> + </div> +</template> + +<script> +import { GetInOutAverageTime } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import TasktimeEchart from '@/views/Home/components/tasktimeecharts.vue'; +export default { + data() { + return { + pickertime: [GetDateStr(-15), GetDateStr(0)], + chartData: {}, + colorList: [ + '#0090FF', + '#36CE9E', + '#FFC005', + '#FF515A', + '#8B5CFF', + '#00CA69', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFFFBB', + '#99FFFF', + '#CC00CC', + '#CC00CC', + '#C63300', + '#9955FF', + '#66FF66', + '#B5C334', + '#FCCE10', + '#27727B', + '#FE8463', + '#FAD860', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFAA33', + '#CC00CC', + '#FF77FF', + '#C63300', + '#F4E001', + '#66FF66' + ] + }; + }, + components: { TasktimeEchart }, + computed: {}, + mounted() { + this.GetInOutAverageTime(); + }, + methods: { + inquer() { + this.GetInOutAverageTime(); + }, + GetInOutAverageTime() { + console.log(this.pickertime); + let startTime = this.pickertime ? this.pickertime[0] : ''; + let endTime = this.pickertime ? this.pickertime[1] : ''; + GetInOutAverageTime({ startTime: startTime, endTime: endTime }).then(res => { + this.chartData = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#tasktime { +} +</style> diff --git a/qqjf-Web/src/views/dataview/turnover.vue b/qqjf-Web/src/views/dataview/turnover.vue new file mode 100644 index 0000000..6f5e93a --- /dev/null +++ b/qqjf-Web/src/views/dataview/turnover.vue @@ -0,0 +1,138 @@ +<template> + <!-- 鍒朵欢鍛ㄨ浆 --> + <div id="turnover" class="global-content backgroundrgb"> + <div class="width80 height margin-auto overflow"> + <div class="width margintopbot flex align-center justify-end"> + <div class="flex width12 align-center margin-right15 justify-end"> + <label class="colorfff fontsiez1rem">骞达細</label> + <el-date-picker v-model="intimers.year" size="mini" value-format="yyyy" type="year" placeholder="閫夋嫨骞�"> + </el-date-picker> + </div> + <div class="flex width20 margin-right15 align-center justify-end"> + <label class="colorfff fontsiez1rem">鏈堬細</label> + <el-date-picker + v-model="intimers.month" + type="monthrange" + size="mini" + value-format="MM" + format="MM" + range-separator="鑷�" + start-placeholder="寮�濮嬫湀浠�" + end-placeholder="缁撴潫鏈堜唤" + > + </el-date-picker> + </div> + <div class="flex width15 align-center margin-right15 justify-end"> + <label class="colorfff width40 fontsiez1rem">寮�濮嬪懆锛�</label> + <el-select style="width: 55%" v-model="intimers.stWeek" size="mini" clearable placeholder="璇烽�夋嫨鍛�"> + <el-option + v-for="(item, index) in startweeklist" + :key="index + 'startweek'" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </div> + <div class="flex width15 align-center margin-right15 justify-end"> + <label class="colorfff width40 fontsiez1rem">缁撴潫鍛細</label> + <el-select style="width: 55%" v-model="intimers.edWeek" size="mini" clearable placeholder="璇烽�夋嫨鍛�"> + <el-option + v-for="(item, index) in endweeklist" + :key="index + 'endtweek'" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </div> + <el-button class="margin-right" type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + <div class="width height-calc90 overflow margin-top2"> + <turnover-echart class="width height" colors="#fff" :chartData="chartData" :colorList="colorList" /> + <!-- <div class="width height" ref="taskbeatEcharts"></div> --> + </div> + </div> + </div> +</template> + +<script> +import { GetPartTurnover } from '@/api/reportforms'; +import TurnoverEchart from '@/views/Home/components/turnoverEchart.vue'; +export default { + data() { + return { + intimers: { + year: '', + month: null, + stWeek: '', + edWeek: '' + }, + startweeklist: [ + { + label: '绗竴鍛�', + value: 1 + }, + { + label: '绗簩鍛�', + value: 2 + }, + { + label: '绗笁鍛�', + value: 3 + }, + { + label: '绗洓鍛�', + value: 4 + } + ], + endweeklist: [ + { + label: '绗竴鍛�', + value: 1 + }, + { + label: '绗簩鍛�', + value: 2 + }, + { + label: '绗笁鍛�', + value: 3 + }, + { + label: '绗洓鍛�', + value: 4 + } + ], + chartData: {}, + colorList: ['#0090FF', '#36CE9E', '#FFC005', '#FF515A', '#8B5CFF', '#00CA69'] + }; + }, + components: { TurnoverEchart }, + computed: {}, + mounted() { + this.GetPartTurnover(); + }, + methods: { + inquer() { + this.GetPartTurnover(); + }, + GetPartTurnover() { + const { year, stWeek, edWeek } = this.intimers; + let stMonth = this.intimers.month ? this.intimers.month[0] : ''; + let edMonth = this.intimers.month ? this.intimers.month[1] : ''; + GetPartTurnover({ year, stWeek, edWeek, stMonth: stMonth, edMonth: edMonth }).then(res => { + this.chartData = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#turnover { + ::v-deep .el-input__inner { + // width: 80%; + } +} +</style> diff --git a/qqjf-Web/src/views/dataview/warehouse.vue b/qqjf-Web/src/views/dataview/warehouse.vue new file mode 100644 index 0000000..0f5b0d4 --- /dev/null +++ b/qqjf-Web/src/views/dataview/warehouse.vue @@ -0,0 +1,70 @@ +<template> + <!-- 璐ф牸鍒╃敤鐜� --> + <div id="warehouse" class="global-content backgroundrgb"> + <div class="width80 height margin-auto overflow"> + <div class="width margintopbot flex align-center justify-end"> + <label class="colorfff fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + <el-date-picker + class="margin-right" + v-model="pickertime" + size="mini" + type="daterange" + value-format="yyyy-MM-dd" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button class="margin-right" type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + <div class="width height-calc90 overflow margin-top2"> + <warehouse-echart class="width height" colors="#fff" :chartData="chartData" :colorList="colorList" /> + <!-- <div class="width height" ref="taskbeatEcharts"></div> --> + </div> + </div> + </div> +</template> + +<script> +import { GetStorageVailability } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import WarehouseEchart from '@/views/Home/components/warehouseechart.vue'; + +export default { + data() { + return { + pickertime: [GetDateStr(-15), GetDateStr(0)], + chartData: {}, + colorList: ['#0090FF', '#36CE9E', '#FFC005', '#FF515A', '#8B5CFF', '#00CA69'] + }; + }, + components: { WarehouseEchart }, + computed: {}, + mounted() { + this.GetStorageVailability(); + }, + methods: { + inquer() { + this.GetStorageVailability(); + }, + GetStorageVailability() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '' + }; + GetStorageVailability(objtimes).then(res => { + this.chartData = res; + }); + }, + //echarts + init(res) { + // this.myChart = echarts.init(this.$refs.taskbeatEcharts); + } + } +}; +</script> + +<style lang="scss" scoped> +#warehouse { +} +</style> diff --git a/qqjf-Web/src/views/dataview/workpiece.vue b/qqjf-Web/src/views/dataview/workpiece.vue new file mode 100644 index 0000000..f69bd68 --- /dev/null +++ b/qqjf-Web/src/views/dataview/workpiece.vue @@ -0,0 +1,142 @@ +<template> + <!-- 鍒朵欢鎬昏 --> + <div id="workpiece" class="global-content backgroundrgb"> + <h3 class="text-center fontsize2rem colorfff absolute transformtopleft12" style="font-size: 80px">鍒朵欢鎬昏</h3> + <div + class=" + width80 + padding10 + borderradius + margintopbot + absolute + transformtopleft + flex + justify-around + flex-wrap + align-center + " + > + <div + class="didproject-title width45 flex justify-around align-center borderdashed borderradius overflow pointer" + v-for="(item, index) in titlelist" + :key="index" + :style="'margin-top:' + item.margin" + > + <div class="heigth padding10 overflow"> + <p class="text-center fontsize2rem colorfff fontweight600 margin-top15" style="font-size: 50px"> + <countTo :startVal="startVal" :endVal="item.mun" :duration="3000"></countTo> + </p> + <p class="fontsize1_2rem color409EFF" style="font-size: 50px">{{ item.titel }}</p> + </div> + </div> + </div> + </div> +</template> + +<script> +import countTo from 'vue-count-to'; +import { GetHomeNumData } from '@/api/Didproject'; +import { GetStorageOverviewData } from '@/api/Didproject'; +import { ItemStorage } from '@/api/materials'; +export default { + data() { + return { + startVal: 0, + titlelist: [ + { + titel: '鍒朵欢鎬绘暟', + name: '鍒朵欢鎬绘暟', + mun: 0, + color: '#ffc637' + }, + { + titel: '鍒朵欢绉嶇被', + name: '鍒朵欢绉嶇被', + mun: 0, + color: '#40C9C6' + }, + { + titel: '浠婃棩鍏ュ簱', + name: '浠婃棩鍏ュ簱闆朵欢鏁�', + mun: 0, + color: '#F4516C', + margin: '1%' + }, + { + titel: '浠婃棩鍑哄簱', + name: '浠婃棩鍑哄簱闆朵欢鏁�', + mun: 0, + color: '#36A3F7', + margin: '1%' + } + ], + cleartime: null, + list: [] + }; + }, + components: { countTo }, + computed: {}, + mounted() { + this.GetHomeNumData(); + this.cleartime = setInterval(() => { + this.GetHomeNumData(); + }, 60000); + }, + methods: { + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/workpiece' + }); + window.open(href, '_blank'); + }, + //浠婃棩鍑哄叆搴撴暟鎹� + GetHomeNumData() { + // no 缂栧彿锛泃itle 鏍囬锛泇alue 鏁伴噺 + GetHomeNumData().then(res => { + let data = res.data || []; + this.list = data; + this.GetStorageOverviewData(data); + }); + }, + GetStorageOverviewData() { + GetStorageOverviewData().then(res => { + let data = res.data || []; + this.list = this.list.concat(data); + console.log(this.list); + this.ItemStorage(); + }); + }, + ItemStorage() { + ItemStorage('1&onePageNum=1').then(res => { + if (res.code == 0) { + this.list.push({ + titel: '鍒朵欢绉嶇被', + name: '鍒朵欢绉嶇被', + value: res.num + }); + this.titlelist.forEach(item => { + this.list.forEach(element => { + if (item.name == element.titel) { + item.mun = element.value; + } + }); + }); + } + console.log(this.list); + }); + } + }, + beforeDestroy() { + if (this.cleartime) { + clearInterval(this.cleartime); + this.cleartime = null; + } + } +}; +</script> + +<style lang="scss" scoped> +#workpiece { +} +</style> diff --git a/qqjf-Web/src/views/inbound/components/enterEdit.vue b/qqjf-Web/src/views/inbound/components/enterEdit.vue new file mode 100644 index 0000000..8c99537 --- /dev/null +++ b/qqjf-Web/src/views/inbound/components/enterEdit.vue @@ -0,0 +1,544 @@ +<template> + <div class="enterEdit height overflow"> + <div class="width overflow height92"> + <div class="width edter-height"> + <div class="flex margintopbot justify-between"> + <div class="width45 flex align-center"> + <label class="width40 textalign">缁勭洏鍗曞彿锛�</label> + <el-input size="mini" disabled clearable v-model="iqnuer.cviCode" class="width60"> </el-input> + </div> + <div class="width45 flex align-center"> + <label class="width40 textalign">鍏ュ簱绫诲瀷锛�</label> + + <el-select class="width60" size="mini" filterable clearable v-model="iqnuer.inType" placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in inTypeList" + :key="'inType' + index" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </div> + </div> + <div class="flex margintopbot justify-between"> + <div class="width45 flex align-center"> + <label class="width40 textalign">鍒朵欢鐘舵�侊細</label> + + <el-select + class="width60" + size="mini" + clearable + v-model="iqnuer.isBad" + placeholder="璇烽�夋嫨" + @change="isbadchange" + > + <el-option + v-for="(item, index) in isBadList" + :key="'isbad' + index" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </div> + <div class="width45 flex align-center"> + <label class="width40 textalign">鍣ㄥ叿缂栧彿锛�</label> + <!-- <el-input size="mini" clearable v-model="iqnuer.containerName" class="width60"> </el-input> --> + + <el-select + class="width60" + size="mini" + filterable + remote + reserve-keyword + :remote-method="remoteMethod" + :loading="remoloading" + clearable + @change="containerNamechange" + v-model="iqnuer.containerName" + placeholder="璇疯緭鍏ュ叧閿瘝" + > + <el-option + v-for="(item, index) in containerNamelist" + :key="'badByFactory' + index" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </div> + </div> + <div class="flex margintopbot justify-between"> + <div class="width45 flex align-center"> + <label class="width40 textalign">杩斾慨绫诲瀷锛�</label> + + <el-select class="width60" size="mini" clearable v-model="iqnuer.badByFactory" placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in badByFactorylist" + :key="'badByFactory' + index" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </div> + <div class="width45 flex align-center"> + <label class="width40 textalign">鍣ㄥ叿绫诲瀷锛�</label> + <el-input size="mini" disabled clearable v-model="iqnuer.containerType" class="width60"> </el-input> + </div> + </div> + <div class="flex margintopbot justify-between"> + <div class="width45 flex align-center"> + <label class="width40 textalign">鍚堣鏁伴噺锛�</label> + <el-input size="mini" disabled v-model="iqnuer.itemNum" class="width60"> </el-input> + </div> + <div class="width45 flex align-center"> + <label class="width40 textalign">鍚堣閲嶉噺锛�</label> + <el-input size="mini" disabled v-model="iqnuer.totalWeight" class="width60"> </el-input> + </div> + </div> + <div class="flex margintopbot justify-between"> + <div class="width45 flex align-center"> + <label class="width40 textalign">鍔ㄦ�佺О閲嶏細</label> + <el-input size="mini" disabled v-model="iqnuer.getWeight" class="width60"> </el-input> + </div> + </div> + + <el-button-group> + <el-button type="primary" size="mini" icon="el-icon-plus" @click="$emit('partclick')">娣诲姞闆朵欢</el-button> + <el-button type="primary" size="mini" icon="el-icon-delete" @click="deltable">鍒犻櫎</el-button> + </el-button-group> + </div> + <div class="width enter-tebleheight overflow"> + <table-container + height="88%" + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :inOrderCodeList="inOrderCodeList" + :setshow="false" + :operation="true" + :editShow="true" + :naxnumShow="true" + :selectionShow="true" + :inputshow="true" + :roweditshow="roweditshow" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :operationwidth="80" + @handleSelectionChange="handleSelectionChange" + @CurrentChange="CurrentChange" + @itemchange="itemchange" + /> + </div> + </div> + <div class="enterEdit-button text-right margin-right15 margin-top2"> + <el-button type="primary" size="mini" class="form-buttom" :loading="savloading" @click="submitForm" + >淇濆瓨</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import { getCache, setCache } from '@/utils/sessionStorage'; +import { GetDateStr, GetTimeStr, getDate } from '@/utils/date'; +const { enterEdit } = require('@/components/tableContainer/tableHead'); +import { ContainerSearch } from '@/api/palte'; +import { itemSearch } from '@/api/enterchoose'; +import { InOrderSearch } from '@/api/quotation'; +import { + ContainerVsItemSearch, + ContainerVsItemAdd, + ContainerVsItemUpdate, + ContainerVsItemAddAll, + GetCode +} from '@/api/enter'; +import { ProductionLineSearch } from '@/api/cass-line'; +export default { + data() { + return { + userinfo: getCache('userInfo'), + iqnuer: { + cviCode: null, + // itemName: null, + isFinish: 0, + containerName: null, + itemNum: null, + isBad: null, + badByFactory: null, + createLine: null, + inType: null, + itemList: null + }, + remoloading: false, + itemList: [], + inTypeList: [ + { + label: '鍗冲ⅷ鍏ュ簱', + value: '鍗冲ⅷ鍏ュ簱' + }, + { + label: '鏉庢钵鍏ュ簱', + value: '鏉庢钵鍏ュ簱' + }, + { + label: '浣欐枡鍥炲簱', + value: '浣欐枡鍥炲簱' + }, + { + label: 'EU绠卞叆绔嬩綋搴�', + value: 'EU绠卞叆绔嬩綋搴�' + } + ], + isBadList: [ + { + label: '杩斾慨', + value: '1' + }, + { + label: '涓嶈繑淇�', + value: '0' + } + ], + inOrderCodeList: [], //璁″垝鍗曞彿 + createLineList: [], + containerNamelist: [], //鍣ㄥ叿缂栧彿 + badByFactorylist: [], + wipelist: [], + tableData: [], + page: 1, + totle: 0, + pageSize: 20, + Selection: [], //鍕鹃�夋暟鎹� + storagelist: [], //瀛樻暟鎹� + roweditshow: false, + savloading: false + }; + }, + props: { + rowitem: { + type: Object, + default: () => {} + }, + chooselist: { + type: Array, + default: () => [] + } + }, + components: { TableContainer }, + computed: { + tableHead() { + return enterEdit; + } + }, + mounted() { + console.log(this.userinfo.userName); + if (JSON.stringify(this.rowitem) != '{}') { + console.log(this.rowitem); + this.iqnuer = this.rowitem; + this.iqnuer.isBad = this.iqnuer.isBad == 1 ? '杩斾慨' : this.iqnuer.isBad == 0 ? '涓嶈繑淇�' : this.iqnuer.isBad; + this.ContainerVsItemSearch(); + } else { + this.GetCode(); + } + this.containerNamelist = []; + this.ContainerSearch({ containerName: '' }); + // this.ProductionLineSearch(); + }, + methods: { + //缁勭洏缂栧彿 + GetCode() { + GetCode().then(res => { + this.iqnuer.cviCode = res; + }); + }, + //鐢熶骇璁″垝鍗曞彿 + InOrderSearch(row) { + const { itemName } = row; + InOrderSearch('1&onePageNum=999', { itemName }).then(res => { + if (res.code == 0) { + this.inOrderCodeList = res.data; + } + }); + }, + remoteMethod(query) { + if (query !== '') { + this.remoloading = true; + setTimeout(() => { + this.remoloading = false; + this.ContainerSearch({ containerName: query }); + }, 200); + } + }, + //鐝嚎 + // ProductionLineSearch() { + // ProductionLineSearch('1&onePageNum=999', { isDestination: 0 }).then(res => { + // if (res.code == 0) { + // this.createLineList = res.data.filter(item => { + // if (item.productionName.indexOf('鍑哄彛') == -1) { + // return item; + // } + // }); + // } + // }); + // }, + //鍣ㄥ叿缂栧彿 + ContainerSearch(query) { + const { containerName } = query; + this.containerNamelist = []; + ContainerSearch('1&onePageNum=999', { containerName }).then(res => { + if (res.code == 0) { + let data = res.data || []; + data.forEach(element => { + this.containerNamelist.push({ + label: element.containerName, + value: element.containerName, + containerType: element.containerType + }); + }); + } + }); + }, + //鍣ㄥ叿绫诲瀷 + containerNamechange(e) { + this.containerNamelist.forEach(element => { + if (e == element.value) { + this.iqnuer.containerType = element.containerType; + } + }); + }, + //缂栬緫鏃惰幏鍙栭浂浠跺垪琛ㄦ暟鎹� + ContainerVsItemSearch() { + ContainerVsItemSearch(this.page, { containerName: this.rowitem.containerName }).then(res => { + if (res.code == 0) { + this.storgage(res.data); + this.totle = res.num; + } + }); + }, + //鍒嗛〉 + CurrentChange(e) { + this.page = e; + this.ContainerVsItemSearch(); + }, + submitForm() { + console.log(this.iqnuer); + if (this.roweditshow) { + this.$message({ + type: 'warning', + message: '璇峰厛淇濆瓨' + }); + } else { + if (this.storagelist.length == 0) { + this.$message({ + type: 'warning', + message: '璇锋坊鍔犻浂浠�' + }); + } else { + this.iqnuer.isBad = this.iqnuer.isBad == '杩斾慨' ? 1 : this.iqnuer.isBad == '涓嶈繑淇�' ? 0 : this.iqnuer.isBad; + this.iqnuer.itemList = JSON.stringify(this.itemList); + const { cviCode, inType, itemList, containerName, isBad, badByFactory } = this.iqnuer; + + if (this.iqnuer.isBad != null && this.iqnuer.inType != null && this.iqnuer.itemList != null) { + this.savloading = true; + // createUser:this.userinfo.userName + ContainerVsItemAddAll({ + cviCode, + inType, + itemList, + containerName, + isBad, + badByFactory, + createUser: this.userinfo.userName + }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '娣诲姞鎴愬姛' + }); + this.$emit('cancel'); + } else { + this.$message({ + type: 'warning', + message: res.msg + }); + } + this.savloading = false; + }); + } + } + } + }, + //杩斾慨绫诲瀷 + isbadchange(e) { + console.log(e); + this.iqnuer.badByFactory = ''; + if (e == 1) { + this.badByFactorylist = [ + { + label: '鐒婅杩斾慨', + value: '鐒婅杩斾慨' + }, + { + label: '鍐插帇杩斾慨', + value: '鍐插帇杩斾慨' + } + ]; + } else { + this.badByFactorylist = []; + } + }, + //杩囨护瀛樺偍 + storgage(lists) { + let list = [...lists]; + list.forEach(element => { + this.storagelist.push(element); + // this.storagelist = lists; + // this.iqnuer.itemName = this.storagelist[0].itemName; + // if (JSON.stringify(this.rowitem) == '{}') { + // this.iqnuer.itemNum = 0; + // } + }); + this.itemList = []; + this.filtration(); + }, + filtration(lists) { + let list = [...this.storagelist]; + let weight = ''; + let getWeight = ''; + list.forEach(element => { + element.edit = false; + if (element.weight) { + weight = element.weight; + } + if (JSON.stringify(this.rowitem) == '{}') { + if (element.maxNum) { + this.iqnuer.itemNum += parseInt(element.maxNum); + } + element.itemNum = element.maxNum; + } else { + element.maxNum = this.iqnuer.itemNum; + } + this.itemList.push({ + itemName: element.itemName, + inOrderCode: element.inOrderCode, + itemNum: element.maxNum + }); + }); + if (weight && this.iqnuer.itemNum) { + getWeight += weight * parseInt(this.iqnuer.itemNum); + } + this.iqnuer.totalWeight = getWeight; + this.tableData = list; + }, + + //鍕鹃�塼able + handleSelectionChange(e) { + console.log(e); + this.Selection = e; + }, + + //鏁伴噺 + itemchange(e, item) { + this.itemList = []; + this.InOrderSearch(item); + this.roweditshow = !this.roweditshow; + this.iqnuer.itemNum = 0; + let weight = ''; + let getWeight = ''; + e.forEach(element => { + // element.edit = false; + this.itemList.push({ + itemName: element.itemName, + inOrderCode: element.inOrderCode, + itemNum: element.maxNum + }); + if (element.weight) { + weight = element.weight; + } + if (element.maxNum) { + this.iqnuer.itemNum += parseInt(element.maxNum); + } + element.itemNum = element.maxNum; + }); + if (weight && this.iqnuer.itemNum) { + getWeight += weight * parseInt(this.iqnuer.itemNum); + } + this.iqnuer.totalWeight = getWeight; + this.storagelist = e; + console.log(this.tableData); + // this.chooselist.forEach(item => { + // if (item.itemName == e.itemName) { + // item.maxNum = e.itemNum; + // } + // }); + }, + //鍒犻櫎琛ㄦ牸鏁版嵁 + deltable() { + this.Selection.forEach(element => { + let index = this.tableData.findIndex(item => item.itemName == element.itemName); + let storgindex = this.storagelist.findIndex(item => item.itemName == element.itemName); + this.tableData.splice(index, 1); + this.storagelist.splice(storgindex, 1); + }); + this.itemList = []; + this.storagelist.forEach(element => { + this.itemList.push({ + itemName: element.itemName, + inOrderCode: element.inOrderCode, + itemNum: element.maxNum + }); + }); + // this.storgage(this.storagelist); + } + }, + watch: { + chooselist: { + handler(nvl, ovl) { + this.storgage(nvl); + }, + deep: true + } + } +}; +</script> + +<style lang="scss" scoped> +.enterEdit { + width: 98%; + padding: 1%; + .edter-height { + height: 220px; + } + .enter-tebleheight { + height: calc(100% - 240px); + } + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .enterEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + // width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/inbound/components/enterchoose.vue b/qqjf-Web/src/views/inbound/components/enterchoose.vue new file mode 100644 index 0000000..c6a2329 --- /dev/null +++ b/qqjf-Web/src/views/inbound/components/enterchoose.vue @@ -0,0 +1,149 @@ +<template> + <div class="quotationEdit height overflow"> + <div class="width overflow height92"> + <div> + <div class="flex margintopbot justify-between"> + <div class="width50 flex align-center"> + <label class="width40 textalign">闆朵欢缂栧彿锛�</label> + <el-input size="mini" clearable v-model="iqnuer.itemName" class="width60"> </el-input> + </div> + <div class="width50 flex align-center"> + <label class="width40 textalign">闆朵欢鍚嶇О锛�</label> + <el-input size="mini" clearable v-model="iqnuer.itemDes" class="width60"> </el-input> + </div> + </div> + <div class="flex width justify-between"> + <div class="width50 flex align-center"> + <label class="width40 textalign">璁″垝鍗曞彿锛�</label> + <el-select class="width60" size="mini" clearable v-model="iqnuer.inOrderCode" placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in inOrderCodelist" + :key="'inOrderCode' + index" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </div> + <div> + <el-button type="primary" size="mini" @click="$emit('partclick')">鏌ヨ</el-button> + <el-button type="primary" size="mini" @click="$emit('addchoose')">鏂板</el-button> + </div> + </div> + </div> + <div class="width height82 overflow"> + <table-container + height="91%" + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :operation="false" + :selectionShow="true" + :totle="totle" + @handleSelectionChange="handleSelectionChange" + /> + </div> + </div> + <div class="quotationEdit-button text-right margin-right15 margin-top2"> + <el-button type="primary" size="mini" class="form-buttom" @click="submitForm">纭閫夋嫨</el-button> + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import { itemSearch } from '@/api/enterchoose'; +const { edterchoose } = require('@/components/tableContainer/tableHead'); +export default { + data() { + return { + iqnuer: {}, + inOrderCodelist: [ + { + label: '鏃�', + value: '' + } + ], + wipelist: [], + tableData: [], + handlelist: [], //鍕鹃�夋暟鎹� + totle: 0, + page: 1 + }; + }, + props: {}, + components: { TableContainer }, + computed: { + tableHead() { + return edterchoose; + } + }, + mounted() { + this.itemSearch(); + }, + methods: { + //鏌ヨ + itemSearch() { + this.$Loading(true); + itemSearch(this.page).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + } + this.$Loading(); + }); + }, + //鍕鹃�� + handleSelectionChange(e) { + console.log(e); + this.handlelist = e; + }, + submitForm() { + if (this.handlelist.length == 1) { + this.$emit('chooseClick', this.handlelist, this.iqnuer.inOrderCode); + } else if (this.handlelist.length == 0) { + this.$message({ + type: 'warning', + message: '璇峰嬀閫変竴鏉℃暟鎹�' + }); + } else if (this.handlelist.length > 1) { + this.$message({ + type: 'warning', + message: '鍙兘鍕鹃�変竴鏉℃暟鎹�' + }); + } + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.quotationEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .quotationEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + // width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/inbound/components/inboundinuqer.vue b/qqjf-Web/src/views/inbound/components/inboundinuqer.vue new file mode 100644 index 0000000..45eef6a --- /dev/null +++ b/qqjf-Web/src/views/inbound/components/inboundinuqer.vue @@ -0,0 +1,240 @@ +<template> + <div class="flex align-center justify-between"> + <div class=""> + <el-button-group> + <el-button type="primary" + size="mini" + v-if="add" + icon="el-icon-plus" + @click="$emit('addmodal')">鏂板缓</el-button> + <el-button v-if="dele" + type="primary" + size="mini" + icon="el-icon-delete" + @click="$emit('deladd')">鍒犻櫎</el-button> + </el-button-group> + <el-button-group class="margin-left"> + <div class="flex"> + <el-upload class="upload-demo" + ref="upload" + action="" + accept=".xls,.xlsx" + :show-file-list="false" + :http-request="httprequest"> + <el-button v-if="imexcel" + style="margin-left: 10px" + icon="el-icon-upload2" + size="mini" + type="success">瀵煎叆</el-button> + </el-upload> + <el-button v-if="derive" + style="margin-left: 10px" + type="primary" + size="mini" + icon="el-icon-download" + @click="$emit('derive')">瀵煎嚭</el-button> + </div> + </el-button-group> + <el-button class="margin-left" + v-if="refresh" + :loading="loading" + size="mini" + icon="el-icon-refresh" + @click="$emit('refresh')">鍒锋柊</el-button> + </div> + <div id="topinquer" + class="flex align-center justify-end"> + <div v-if="queryOrderStatusShow" + class="flex align-center margin-right "> + <label class="color909399 fontsizeinitial width7rem">璁㈠崟鐘舵�侊細</label> + <el-select v-model="iqnuer.OrderStatusId" + size="mini" + clearable> + <el-option v-for="(item, index) in orderStatusList" + :label="item.label" + :value="item.value" + :key="index"></el-option> + </el-select> + </div> + <div class="flex align-center margin-right "> + <label class="color909399 fontsizeinitial width7rem">鐢熶骇绫诲瀷锛�</label> + <el-select v-model="iqnuer.orderType" + size="mini" + clearable> + <el-option v-for="(item, index) in orderTypelist" + :label="item.label" + :value="item.value" + :key="index"></el-option> + </el-select> + </div> + <div id="maindatetimeer" + v-if="datetimeshow" + class="flex align-center margin-right"> + <label class="textalign color909399 width7rem fontsizeinitial">璧锋鏃堕棿锛�</label> + <el-date-picker size="mini" + v-model="iqnuer.timepick" + value-format="yyyy-MM-dd HH:mm:ss" + type="datetimerange" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡"> + </el-date-picker> + </div> + <div class="flex align-center margin-right"> + <el-input size="mini" + clearable + v-model="iqnuer[filter]" + class="input-with-select"> + <el-select @change="selchange" + v-model="filter" + slot="prepend"> + <el-option v-for="(item, index) in filterList" + :label="item.label" + :value="item.value" + :key="index"></el-option> + </el-select> + </el-input> + </div> + <el-button type="primary" + size="mini" + @click="inquer">鏌ヨ</el-button> + </div> + </div> +</template> + +<script> +export default { + data () { + return { + orderTypelist: [ + { + label: '鍗冲ⅷ鍏ュ簱', + value: '鍗冲ⅷ鍏ュ簱' + }, + { + label: '鏉庢钵鍏ュ簱', + value: '鏉庢钵鍏ュ簱' + } + ], + orderStatusList: [ + { + label: '鏂板缓', + value: 0 + }, + { + label: '鐒婅瀹℃牳涓�', + value: 1 + }, + { + label: '椹冲洖', + value: 3 + }, + { + label: '瀹屽伐', + value: 4 + } + ], + iqnuer: { + OrderStatusId: '' + }, + filter: '', + applytime: [], + fileList: [], + visible: false + }; + }, + props: { + queryOrderStatusShow: { + type: Boolean, + default: true + }, + advanced: { + type: Boolean, + default: false + }, + add: { + type: Boolean, + default: true + }, + dele: { + type: Boolean, + default: false + }, + refresh: { + type: Boolean, + default: true + }, + tolead: { + type: Boolean, + default: false + }, + derive: { + type: Boolean, + default: false + }, + imexcel: { + type: Boolean, + default: false + }, + loading: { + type: Boolean, + default: false + }, + byfilter: { + type: String, + default: '' + }, + filterList: { + type: Array, + default: () => [] + }, + datetimeshow: { + type: Boolean, + default: false + } + }, + mounted () { + this.filter = this.byfilter; + }, + methods: { + inquer () { + //console.log(this.iqnuer.orderStatus) + this.$emit('inquer', this.iqnuer); + }, + selchange () { + this.iqnuer = {}; + }, + httprequest (file) { + console.log(file); + this.$emit('importfile', file); + }, + inrefclear () { + this.iqnuer = {}; + } + }, + watch: { + byfilter: { + handler (nvl, ovl) { + this.filter = nvl; + } + } + } +}; +</script> + +<style lang="scss" scoped> +#topinquer { + ::v-deep .el-select { + width: 100px; + } + #maindatetimeer { + ::v-deep .el-range-editor.el-input__inner { + padding: 3px; + } + ::v-deep .el-date-editor--datetimerange.el-input, + .el-date-editor--datetimerange.el-input__inner { + width: 74%; + } + } +} +</style> diff --git a/qqjf-Web/src/views/inbound/components/partschoose.vue b/qqjf-Web/src/views/inbound/components/partschoose.vue new file mode 100644 index 0000000..5b23b83 --- /dev/null +++ b/qqjf-Web/src/views/inbound/components/partschoose.vue @@ -0,0 +1,104 @@ +<template> + <div class="quotationEdit height overflow"> + <div class="width overflow height92"> + <div> + <div class="flex justify-between"> + <div class="width40 flex align-center"> + <label class="width40 textalign">闆朵欢缂栧彿锛�</label> + <el-input size="mini" clearable v-model="iqnuer.center" class="width60"> </el-input> + </div> + <div class="width40 flex align-center"> + <label class="width40 textalign">闆朵欢鍚嶇О锛�</label> + <el-input size="mini" clearable v-model="iqnuer.center" class="width60"> </el-input> + </div> + <el-button type="primary" size="mini" @click="$emit('partclick')">鏌ヨ</el-button> + </div> + </div> + <div class="width height94 overflow"> + <table-container + height="91%" + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :selectionShow="true" + :operation="false" + :totle="totle" + /> + </div> + </div> + <div class="quotationEdit-button text-right margin-right15 margin-top2"> + <el-button type="primary" size="mini" class="form-buttom" @click="submitForm">纭閫夋嫨</el-button> + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +const { partschoose } = require('@/components/tableContainer/tableHead'); +export default { + data() { + return { + iqnuer: {}, + + wipelist: [], + tableData: [ + { + deviceName1: '寮犱笁' + } + ], + totle: 0 + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + components: { TableContainer }, + computed: { + tableHead() { + return partschoose; + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + } + }, + methods: { + submitForm(registerForm) {} + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.quotationEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .quotationEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + // width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/inbound/components/quotaionEdit.vue b/qqjf-Web/src/views/inbound/components/quotaionEdit.vue new file mode 100644 index 0000000..d7b8a1b --- /dev/null +++ b/qqjf-Web/src/views/inbound/components/quotaionEdit.vue @@ -0,0 +1,345 @@ +<template> + <div class="quotationEdit height overflow"> + <div class="width overflow height92"> + <div class="quotationEdit-height"> + <div class="flex justify-between"> + <div class="width55 flex align-center"> + <label class="width40 textalign">鐢熶骇璁″垝鍗曞彿锛�</label> + <el-input size="mini" + disabled + v-model="iqnuer.inOrderCode" + class="width60"> </el-input> + </div> + <div class="width40 flex align-center"> + <label class="width40 textalign">鐢熶骇绫诲瀷锛�</label> + <el-select class="width60" + size="mini" + clearable + :disabled="isReadOnly" + v-model="iqnuer.orderType" + placeholder="璇烽�夋嫨" + required="true"> + <el-option v-for="item in orderTypelist" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </div> + </div> + <div class="flex justify-between margintopbot"> + <div class="width55 flex align-center"> + <label class="width40 textalign">澶囨敞锛�</label> + <el-input class="width60" + type="textarea" + clearable + :disabled="isReadOnly" + size="mini" + resize="none" + :autosize="{ minRows: 1, maxRows: 1 }" + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="iqnuer.textarea1"> + </el-input> + </div> + <div class="width40 flex align-center"> + <label class="width40 textalign">璁″垝鏁伴噺锛�</label> + <el-input clearable + size="mini" + disabled + v-model="iqnuer.totalNum" + class="width60"> </el-input> + </div> + </div> + <el-button-group> + <el-button type="primary" + size="mini" + :disabled="isReadOnly" + icon="el-icon-plus" + @click="$emit('partclick')">鏂板缓</el-button> + <el-button type="primary" + size="mini" + :disabled="isReadOnly" + icon="el-icon-delete" + @click="delclick">鍒犻櫎</el-button> + </el-button-group> + </div> + <div class="width quotationEdit-tebleheight overflow"> + <table-container ref="tablecontainer" + height="91%" + :tableHead="tableHead" + :tableData="tableData" + :operation="true" + :editShow="true" + :setshow="false" + :naxnumShow="true" + :selectionShow="true" + :roweditshow="roweditshow" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :inputshow="true" + @edit="edit" + @handleSelectionChange="handleSelectionChange" + @itemchange="itemchange" + @CurrentChange="CurrentChange" /> + </div> + </div> + <div class="quotationEdit-button text-right margin-right15 margin-top2"> + <el-button type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + :disabled="isReadOnly" + @click="submitForm">淇濆瓨</el-button> + <el-button type="primary" + size="mini" + class="form-buttom" + @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import { getCache, setCache, removeToken } from '@/utils/sessionStorage'; +const { quotationedit } = require('@/components/tableContainer/tableHead'); +import { InOrderGetCode } from '@/api/quotation'; +import { getDate, GetTimeStr } from '@/utils/date'; +import { itemSearch } from '@/api/enterchoose'; +import { InOrderAddOrUpdate } from '@/api/quotation'; +export default { + data () { + return { + iqnuer: { + inOrderCode: '', //璁″垝鍗曞彿 + orderType: '', //璁″垝绫诲瀷 + totalNum: '', //闆朵欢鎬绘暟 + doneNum: '', //宸蹭笅绾挎暟 鏂板浼�0锛岀紪杈戯紝鍘熸暟鎹繑鍥� + userName: getCache('userInfo').userName, //鍒涘缓浜虹紪鍙� 褰撳墠鐧婚檰浜虹姸鎬� + productionLineCode: '', //锛堥鐣欙級浼犵┖ + doTime: '', //鎵ц鏃堕棿 + itemName: '', //闆朵欢缂栧彿浼狅紝鍏跺畠闆朵欢淇℃伅鍙笉浼� + productionLineName: '' //鏆傛椂浼犵┖ + }, + orderTypelist: [ + { + label: '鍗冲ⅷ鍏ュ簱', + value: '鍗冲ⅷ鍏ュ簱' + }, + { + label: '鏉庢钵鍏ュ簱', + value: '鏉庢钵鍏ュ簱' + } + ], + tableData: [], + savloading: false, + totle: 0, + page: 1, + pageSize: 20, + roweditshow: false + }; + }, + props: { + //鏄惁鍙 + isReadOnly: { + type: Boolean, + default: false + }, + rowitem: { + type: Object, + default: () => { } + }, + chooselist: { + type: Array, + default: () => [] + } + }, + components: { TableContainer }, + computed: { + tableHead () { + return quotationedit; + } + }, + mounted () { + if (JSON.stringify(this.rowitem) != '{}') { + this.iqnuer = this.rowitem; + this.itemSearch(); + } else { + this.iqnuer.doneNum = 0; + this.InOrderGetCode(); + } + }, + methods: { + //鑷姩鐢熸垚鍗曞彿 + InOrderGetCode () { + InOrderGetCode().then(res => { + this.iqnuer.inOrderCode = res; + }); + }, + //缂栬緫鏃惰幏鍙栭浂浠跺垪琛ㄦ暟鎹� + itemSearch () { + itemSearch(this.page, { itemName: this.rowitem.itemName }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.image = process.env.IMAGE_URL + item.image; + }); + this.storgage(data); + this.totle = res.num; + } + }); + }, + //缂栬緫 + edit (row) { }, + CurrentChange (e) { + this.page = e; + this.itemSearch(); + }, + submitForm () { + if (this.roweditshow) { + this.$message({ + type: 'warning', + message: '璇峰厛淇濆瓨' + }); + } else { + if (this.iqnuer.orderType == '') { + this.$message({ + type: 'warning', + message: '璇烽�夋嫨鐢熶骇绫诲瀷' + }); + } else { + this.savloading = true; + this.iqnuer.creatorId = getCache('userInfo').id; + InOrderAddOrUpdate(this.iqnuer).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '娣诲姞鎴愬姛' + }); + this.$emit('cancel'); + } else { + this.$message({ + type: 'warning', + message: res.msg + }); + } + this.savloading = false; + }); + } + } + }, + //杩囨护瀛樺偍 + storgage (lists) { + let list = [...lists]; + // list.forEach(element => { + // this.storagelist.push(element); + this.storagelist = lists; + // }); + this.filtration(); + }, + filtration (lists) { + let list = [...this.storagelist]; + let getWeight = ''; + list.forEach(element => { + element.edit = false; + if (JSON.stringify(this.rowitem) != '{}') { + element.doTime = this.rowitem.doTime; + element.maxNum = this.rowitem.totalNum; + } else { + element.doTime = getDate() + ' ' + GetTimeStr(0); + if (element.maxNum) { + // this.iqnuer.totalNum += parseInt(element.maxNum); + this.iqnuer.totalNum = element.maxNum; + } else { + this.iqnuer.totalNum = 0; + } + } + + // element.itemNum = element.maxNum; + }); + const { doTime, itemName } = list[0]; + this.iqnuer.doTime = doTime; + this.iqnuer.itemName = itemName; + this.tableData = list; + }, + //鏁伴噺 + itemchange (e) { + console.log(e); + this.roweditshow = !this.roweditshow; + const { maxNum, doTime } = e[0]; + this.iqnuer.totalNum = maxNum; + this.iqnuer.doTime = doTime; + // this.storgage(e); + // this.iqnuer.itemNum = 0; + // e.forEach(element => { + // element.edit = false; + // if (element.weight) { + // weight = element.weight; + // } + // if (element.maxNum) { + // this.iqnuer.itemNum += parseInt(element.maxNum); + // } + // element.itemNum = element.maxNum; + // }); + }, + //鍕鹃�塼able + handleSelectionChange (e) { + console.log(e); + this.Selection = e; + }, + //鍒犻櫎 + delclick () { + this.Selection.forEach(element => { + let index = this.tableData.findIndex(item => item.itemName == element.itemName); + let storgindex = this.storagelist.findIndex(item => item.itemName == element.itemName); + this.tableData.splice(index, 1); + this.storagelist.splice(storgindex, 1); + }); + this.iqnuer.totalNum = 0; + } + }, + watch: { + chooselist: { + handler (nvl, ovl) { + this.storgage(nvl); + }, + deep: true + } + } +}; +</script> + +<style lang="scss" scoped> +.quotationEdit { + width: 98%; + padding: 1%; + .quotationEdit-height { + height: 120px; + } + .quotationEdit-tebleheight { + height: calc(100% - 125px); + } + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .quotationEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + // width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/inbound/components/quotaion_relevanceEdit.vue b/qqjf-Web/src/views/inbound/components/quotaion_relevanceEdit.vue new file mode 100644 index 0000000..552116f --- /dev/null +++ b/qqjf-Web/src/views/inbound/components/quotaion_relevanceEdit.vue @@ -0,0 +1,381 @@ +<template> + <div class="quotaion_relevanceEdit height overflow"> + <div class="width overflow height92"> + <div class="quotaion_relevanceEdit-height"> + <div class="flex justify-between"> + <div class="width55 flex align-center"> + <label class="width40 textalign">鐢熶骇璁″垝鍗曞彿锛�</label> + <el-input size="mini" + disabled + v-model="iqnuer.inOrderCode" + class="width60"> </el-input> + </div> + <div class="width40 flex align-center"> + <label class="width40 textalign">鐢熶骇绫诲瀷锛�</label> + <el-select class="width60" + size="mini" + clearable + disabled + v-model="iqnuer.orderType" + placeholder="璇烽�夋嫨" + required="true"> + <el-option v-for="item in orderTypelist" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </div> + </div> + <div class="flex justify-between margintopbot"> + <div class="width55 flex align-center"> + <label class="width40 textalign">闆朵欢缂栧彿锛�</label> + <el-input class="width60" + clearable + size="mini" + disabled + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="iqnuer.itemName"> + </el-input> + </div> + <div class="width40 flex align-center"> + <label class="width40 textalign">闆朵欢鍚嶇О锛�</label> + <el-input clearable + size="mini" + disabled + v-model="iqnuer.itemDes" + class="width60"> </el-input> + </div> + </div> + <div class="flex justify-between margintopbot"> + <div class="width55 flex align-center"> + <label class="width40 textalign">澶囨敞锛�</label> + <el-input class="width60" + type="textarea" + clearable + size="mini" + disabled + resize="none" + :autosize="{ minRows: 1, maxRows: 1 }" + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="iqnuer.textarea1"> + </el-input> + </div> + <div class="width40 flex align-center"> + <label class="width40 textalign">鍚堣鏁伴噺锛�</label> + <el-input clearable + size="mini" + disabled + v-model="iqnuer.totalNum" + class="width60"> </el-input> + </div> + </div> + <el-button-group> + <el-button type="primary" + size="mini" + icon="el-icon-plus" + :disabled="isReadOnly" + @click="$emit('partclick')">鏂板缓</el-button> + <el-button type="primary" + size="mini" + icon="el-icon-delete" + :disabled="isReadOnly" + @click="delclick">鍒犻櫎</el-button> + </el-button-group> + </div> + <div class="width quotaion_relevanceEdit-tebleheight overflow"> + <table-container ref="tablecontainer" + height="91%" + :tableHead="tableHead" + :tableData="tableData" + :operation="true" + :editShow="true" + :setshow="false" + :naxnumShow="true" + :selectionShow="true" + :roweditshow="roweditshow" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :inputshow="true" + :showSummary="true" + @edit="edit" + @handleSelectionChange="handleSelectionChange" + @itemchange="itemchange" + @CurrentChange="CurrentChange" /> + </div> + </div> + <div class="quotaion_relevanceEdit-button text-right margin-right15 margin-top2"> + <el-button type="primary" + size="mini" + class="form-buttom" + :disabled="isReadOnly" + :loading="savloading" + @click="submitForm">淇濆瓨</el-button> + <el-button type="primary" + size="mini" + class="form-buttom" + @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import { getCache, setCache, removeToken } from '@/utils/sessionStorage'; +const { quotaion_relevanceEdit } = require('@/components/tableContainer/tableHead'); +import { InOrderGetCode } from '@/api/quotation'; +import { getDate, GetTimeStr } from '@/utils/date'; +import { itemSearch } from '@/api/enterchoose'; +import { ContainerVsItemSearch, BindCviCode } from '@/api/enter'; +import { InOrderAddOrUpdate } from '@/api/quotation'; +export default { + data () { + return { + iqnuer: { + inOrderCode: '', //璁″垝鍗曞彿 + orderType: '', //璁″垝绫诲瀷 + totalNum: '', //闆朵欢鎬绘暟 + doneNum: '', //宸蹭笅绾挎暟 鏂板浼�0锛岀紪杈戯紝鍘熸暟鎹繑鍥� + userName: getCache('userInfo').userName, //鍒涘缓浜虹紪鍙� 褰撳墠鐧婚檰浜虹姸鎬� + productionLineCode: '', //锛堥鐣欙級浼犵┖ + doTime: '', //鎵ц鏃堕棿 + itemName: '', //闆朵欢缂栧彿浼狅紝鍏跺畠闆朵欢淇℃伅鍙笉浼� + productionLineName: '' //鏆傛椂浼犵┖ + }, + orderTypelist: [ + { + label: '鍗冲ⅷ鍏ュ簱', + value: '鍗冲ⅷ鍏ュ簱' + }, + { + label: '鏉庢钵鍏ュ簱', + value: '鏉庢钵鍏ュ簱' + } + ], + tableData: [],//鍒楄〃鏁版嵁 + savloading: false, + totle: 0, + page: 1, + pageSize: 20, + roweditshow: false + }; + }, + props: { + //鏄惁鍙 + isReadOnly: { + type: Boolean, + default: false + }, + rowitem: { + type: Object, + default: () => { } + }, + tableList: { + type: Array, + default: () => [] + } + }, + components: { TableContainer }, + computed: { + tableHead () { + return quotaion_relevanceEdit; + } + }, + mounted () { + if (JSON.stringify(this.rowitem) != '{}') { + this.iqnuer = this.rowitem; + this.itemSearch(); + } else { + this.iqnuer.doneNum = 0; + this.InOrderGetCode(); + } + }, + methods: { + //鑷姩鐢熸垚鍗曞彿 + InOrderGetCode () { + InOrderGetCode().then(res => { + this.iqnuer.inOrderCode = res; + }); + }, + //缂栬緫鏃惰幏鍙栭浂浠跺垪琛ㄦ暟鎹� + itemSearch () { + ContainerVsItemSearch(this.page, { + itemName: this.rowitem.itemName, + cviCode: this.rowitem.inOrderCode //浼犻�� 鍐插帇璁″垝鍗曞彿 銆怑ditby shaocx,2022-11-1銆� + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.image = process.env.IMAGE_URL + item.image; + }); + this.storgage(data); + this.totle = res.num; + } + }); + }, + //缂栬緫 + edit (row) { }, + CurrentChange (e) { + this.page = e; + this.itemSearch(); + }, + submitForm () { + if (this.roweditshow) { + this.$message({ + type: 'warning', + message: '璇峰厛淇濆瓨' + }); + } else { + if (this.iqnuer.orderType == '') { + this.$message({ + type: 'warning', + message: '璇烽�夋嫨鐢熶骇绫诲瀷' + }); + } else { + this.savloading = true; + let _cviIds = this.tableData.map(item => { + return item.id + }); + var postData = { + cviCode: this.iqnuer.inOrderCode, + creatorId: getCache('userInfo').id, + creatorName: getCache('userInfo').userName, + cviIds: [..._cviIds] + } + //this.iqnuer.creatorId = getCache('userInfo').id; + //this.iqnuer.creatorName = getCache('userInfo').userName; + BindCviCode(postData).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '淇濆瓨鎴愬姛' + }); + this.$emit('cancel'); + } else { + this.$message({ + type: 'warning', + message: res.msg + }); + } + this.savloading = false; + }); + } + } + }, + //杩囨护瀛樺偍 + storgage (lists) { + let list = [...lists]; + // list.forEach(element => { + // this.storagelist.push(element); + this.storagelist = lists; + // }); + this.filtration(); + }, + filtration (lists) { + let list = [...this.storagelist]; + let getWeight = ''; + list.forEach(element => { + element.edit = false; + /* + if (JSON.stringify(this.rowitem) != '{}') { + element.doTime = this.rowitem.doTime; + element.maxNum = this.rowitem.totalNum; + } else { + element.doTime = getDate() + ' ' + GetTimeStr(0); + if (element.maxNum) { + // this.iqnuer.totalNum += parseInt(element.maxNum); + this.iqnuer.totalNum = element.maxNum; + } else { + this.iqnuer.totalNum = 0; + } + } + //*/ + // element.itemNum = element.maxNum; + }); + //const { doTime, itemName } = list[0]; + //this.iqnuer.doTime = doTime; + //this.iqnuer.itemName = itemName; + this.tableData = list; + }, + //鏁伴噺 + itemchange (e) { + console.log(e); + this.roweditshow = !this.roweditshow; + const { maxNum, doTime } = e[0]; + this.iqnuer.totalNum = maxNum; + this.iqnuer.doTime = doTime; + // this.storgage(e); + // this.iqnuer.itemNum = 0; + // e.forEach(element => { + // element.edit = false; + // if (element.weight) { + // weight = element.weight; + // } + // if (element.maxNum) { + // this.iqnuer.itemNum += parseInt(element.maxNum); + // } + // element.itemNum = element.maxNum; + // }); + }, + //鍕鹃�塼able + handleSelectionChange (e) { + console.log(e); + this.Selection = e; + }, + //鍒犻櫎 + delclick () { + this.Selection.forEach(element => { + let index = this.tableData.findIndex(item => item.itemName == element.itemName); + let storgindex = this.storagelist.findIndex(item => item.itemName == element.itemName); + this.tableData.splice(index, 1); + this.storagelist.splice(storgindex, 1); + }); + this.iqnuer.totalNum = 0; + } + }, + watch: { + tableList: { + handler (nvl, ovl) { + this.storgage(nvl); + }, + deep: true + } + } +}; +</script> + +<style lang="scss" scoped> +.quotaion_relevanceEdit { + width: 98%; + padding: 1%; + .quotaion_relevanceEdit-height { + height: 180px; + } + .quotaion_relevanceEdit-tebleheight { + height: calc(100% - 180px); + } + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .quotaion_relevanceEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + // width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/inbound/index.vue b/qqjf-Web/src/views/inbound/index.vue new file mode 100644 index 0000000..1ca3ac4 --- /dev/null +++ b/qqjf-Web/src/views/inbound/index.vue @@ -0,0 +1,11 @@ +<template> + <keep-alive> + <router-view /> + </keep-alive> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/inbound/purchase/confirm_welding/index.vue b/qqjf-Web/src/views/inbound/purchase/confirm_welding/index.vue new file mode 100644 index 0000000..068a01e --- /dev/null +++ b/qqjf-Web/src/views/inbound/purchase/confirm_welding/index.vue @@ -0,0 +1,734 @@ +<!-- 椤甸潰锛氱剨瑁呯‘璁� --> +<template> + <!-- 浠撳簱淇℃伅 --> + <div id="confirm_welding" + class="global-content"> + <!-- 绛涢�� --> + <inbound-inuqer ref="inref" + byfilter="璁″垝鍗曞彿" + :filterList="filterList" + :add="false" + :tolead="true" + :derive="true" + :imexcel="false" + :datetimeshow="true" + :queryOrderStatusShow="false" + @refresh="refresh" + @addmodal="addmodal" + @inquer="inquer" + @derive="derive" + @importfile="importfile" /> + <!-- <input type="file" accept=".xls,.xlsx" @change="readExcel($event)" /> --> + + <!-- table --> + <div class="table"> + <table-container :tableHead="tableHead" + :tableData="tableData" + :editShow="false" + :viewShow="false" + :weldingAuditShow="false" + :unlineCommitShow="false" + :passShow="true" + :rejectShow="true" + :relevanceShow="true" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @view="view" + @relevance="relevance" + @weldingAudit="weldingAudit" + @passCommit="passCommit" + @rejectCommit="rejectCommit" + @SizeChange="SizeChange" + @CurrentChange="CurrentChange" /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" + :modabg="true" + @cancel="addmodalShow = false"> + <p slot="title">鍐插帇鐢熶骇璁″垝鍗�-{{ title }}</p> + <div class="height" + slot="centent"> + <quotaion-edit @partclick="partShow = true" + :isReadOnly="partShow_readOnly" + @cancel=" + addmodalShow = false; + refresh(); + " + :chooselist="chooselist" + :rowitem="rowitem" + @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + <transition name="modal"> + <modal v-if="relevanceModalShow" + :modabg="true" + @cancel="relevanceModalShow = false"> + <p slot="title">鍏宠仈瀹屽伐鍏ュ簱闆朵欢-{{ relevanceModalShow_title }}</p> + <div class="height" + slot="centent"> + <quotaion_relevanceEdit ref="quotaion_relevanceEditMethod" + @partclick="clickAddForRelevanceFinishedPart" + @cancel=" + relevanceModalShow = false; + refresh(); + " + :tableList="relevanceFinishedPartList" + :chooseClick="chooseClick" + :rowitem="rowitem" + :isReadOnly="true" + @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + <transition name="modal"> + <modal v-if="partShow" + :modabg="true" + @cancel="partShow = false"> + <p slot="title">闆朵欢閫夋嫨</p> + <div class="height" + slot="centent"> + <choose ref="partChoose" + :wipelist="wipelist" + @chooseClick="chooseClick" + @cancel="partShow = false" + @addchoose="addchooseShow = true" /> + </div> + </modal> + </transition> + <transition name="modal"> + <modal v-if="relevanceFinishedPartShow" + :modabg="true" + @cancel="relevanceFinishedPartShow = false"> + <p slot="title">閫夋嫨鍏宠仈瀹屽伐鍏ュ簱闆朵欢</p> + <div class="height" + slot="centent"> + <chooseRelevanceFinishedPart ref="relevanceFinishedPartMethod" + :wipelist="wipelist" + :pItemName="pItemName" + :pItemDes="pItemDes" + @submitForm="submitRelevanceFinishedPart" + @cancel="relevanceFinishedPartShow = false" + @addchoose="addchooseShow = true" /> + </div> + </modal> + </transition> + <el-dialog title="瀹℃壒椹冲洖" + width="30%" + :visible.sync="rejectModalShow"> + <el-form :model="rejectForm" + label-width="100px"> + <el-form-item label="鐢熶骇璁″垝鍗曞彿"> + <el-input disabled + v-model="rejectForm.inOrderCode"></el-input> + </el-form-item> + <el-form-item label="璇存槑"> + <el-input v-model="rejectForm.Remark"></el-input> + </el-form-item> + </el-form> + <div slot="footer" + class="dialog-footer"> + <el-button @click="rejectModalShow = false">鍙� 娑�</el-button> + <el-button type="primary" + @click="do_rejectCommit">纭� 瀹�</el-button> + </div> + </el-dialog> + + </div> +</template> + +<script> +import { TableContainer, Modal, Choose, AddChoose, chooseRelevanceFinishedPart } from '@/components/index';//杩欓噷寮曠敤鐨勬槸 vue鏂囦欢鐨勫悕瀛� +import inboundInuqer from '../../components/inboundinuqer'; +import quotaionEdit from '../../components/quotaionEdit'; +import quotaion_relevanceEdit from '../../components/quotaion_relevanceEdit'; +import { getimestampDate, getymdhms } from '@/utils/date'; +import { exportTableList } from '@/utils/excel'; +//const { quotation } = require('@/components/tableContainer/tableHead'); +import { getCache, setCache, removeToken } from '@/utils/sessionStorage'; +import { InOrderSearch, InOrderDelete, ImportInOrder, InOrderSend, UpdateUnlineNum, InOrderCheck, InOrderReject } from '@/api/quotation'; +import XLSX from 'xlsx'; +import { Collapse } from 'element-ui'; +//鍒楄〃鏄剧ず鍒楀唴瀹� +const my_tableHead = [{ + columnDescription: '鐢熶骇璁″垝鍗曞彿', + columnName: 'inOrderCode', + sortable: true, + wipe: true, + width: 200 +}, +{ + columnDescription: '鐢熶骇绫诲瀷', + columnName: 'orderType', + sortable: true, + wipe: true, + width: 150 +}, + +{ + columnDescription: '璁㈠崟鐘舵��', + columnName: 'orderStatus', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 200 +}, +{ + columnDescription: '璁″垝鐢熶骇鏁伴噺', + columnName: 'totalNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鎬诲畬宸ユ暟', + columnName: 'allFinishedNum', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '鍏ュ簱鏁伴噺', + columnName: 'DoneNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '绾夸笅浜や粯鏁伴噺', + columnName: 'unLineNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鎻愪氦浜�', + columnName: 'senderName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鎻愪氦鏃堕棿', + columnName: 'SendTime', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '瀹℃牳浜�', + columnName: 'checkerName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '瀹℃牳缁撴灉', + columnName: 'CheckResult', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '瀹℃牳鏃堕棿', + columnName: 'CheckTime', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '瀹℃牳璇存槑', + columnName: 'CheckRemark', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '澶囨敞', + columnName: 'deviceName5', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍒涘缓浜�', + columnName: 'createName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍒涘缓鏃堕棿', + columnName: 'createTime', + sortable: true, + wipe: true, + width: 150 +}, { + columnDescription: '淇敼浜�', + columnName: 'updateName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '淇敼鏃堕棿', + columnName: 'updateTime', + sortable: true, + wipe: true, + width: 150 +} +]; +export default { + name: 'confirm_welding', + data () { + return { + partShow_readOnly: false, + rejectForm: { + inOrderCode: '', + Remark: '' + }, + rejectModalShow: false, + pItemName: '', + pItemDes: '', + relevanceModalShow_title: '', + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + relevanceModalShow: false, + relevanceFinishedPartShow: false, + partShow: false, + addchooseShow: false, + + chooselist: [], + relevanceFinishedPartList: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + wipelist: ['inOrderCode'], + inuqerobg: {}, + filterList: [ + { + value: '璁″垝鍗曞彿', + label: '璁″垝鍗曞彿' + } + ] + }; + }, + components: { TableContainer, inboundInuqer, Modal, quotaionEdit, Choose, AddChoose, quotaion_relevanceEdit, chooseRelevanceFinishedPart }, + computed: { + tableHead () { + return my_tableHead; + } + }, + created () { }, + mounted () { + this.InOrderSearch(); + console.log(getymdhms()); + }, + methods: { + clickAddForRelevanceFinishedPart () { + //鑾峰彇涓婁竴涓獥浣撶殑鍐呭 + let itemName = this.$refs.quotaion_relevanceEditMethod.iqnuer.itemName; + let itemDes = this.$refs.quotaion_relevanceEditMethod.iqnuer.itemDes; + this.pItemName = itemName; + this.pItemDes = itemDes; + this.relevanceFinishedPartShow = true + // setTimeout(() => { + // //console.log('relevanceFinishedPartMethod:' + this.$refs.relevanceFinishedPartMethod) + + // this.$refs.relevanceFinishedPartMethod.iqnuer.itemName = itemName; + // this.$refs.relevanceFinishedPartMethod.iqnuer.itemDes = itemDes; + // }, 0) + }, + //鍒锋柊 + refresh () { + this.inuqerobg = {}; + this.$refs.inref.inrefclear(); + this.InOrderSearch(); + }, + //鏌ヨ + inquer (e) { + this.page = 1; + this.inuqerobg = e; + this.InOrderSearch(); + }, + //瀵煎嚭 + derive () { + let tHeader = []; + let filterVal = []; + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + this.$Loading(true); + const { 璁″垝鍗曞彿: inOrderCode } = this.inuqerobg; + //OrderStatusId: '1' 琛ㄧず鐘舵�佹槸 鐒婅瀹℃牳涓� + const orderType = this.inuqerobg.orderType; + InOrderSearch('1&onePageNum=99999999', { + inOrderCode, orderType, OrderStatusId: '1', CHECKERID: getCache('userInfo').id, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.doTime = item.doTime ? getimestampDate(item.doTime) : ''; + item.updateTime = item.updateTime ? getimestampDate(item.updateTime) : ''; + }); + exportTableList(tHeader, filterVal, data, '鍐插帇璁″垝' + getymdhms()); + } + this.$Loading(false); + }); + }, + //瀵煎叆 + importfile (e) { + this.readExcel(e); + }, + + //鑾峰彇鐢熶骇璁″垝鍒楄〃 + InOrderSearch () { + this.$Loading(true); + const { 璁″垝鍗曞彿: inOrderCode } = this.inuqerobg; + //OrderStatusId: '1' 琛ㄧず鐘舵�佹槸 鐒婅瀹℃牳涓� + const orderType = this.inuqerobg.orderType; + InOrderSearch(this.page + '&onePageNum=' + this.pageSize, { + inOrderCode, orderType, OrderStatusId: '1', CHECKERID: getCache('userInfo').id, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + this.tableData = res.data.filter(item => (item.doTime = getimestampDate(item.doTime))); + this.totle = res.num; + } + this.$Loading(); + }); + }, + //鍒嗛〉 + CurrentChange (e) { + console.log(e); + this.page = e; + this.InOrderSearch(); + }, + //椤垫暟 + SizeChange (e) { + this.pageSize = e; + this.InOrderSearch(); + }, + //缂栬緫 + edit (row) { + this.title = '缂栬緫'; + this.partShow_readOnly = false; + this.addmodalShow = true; + this.rowitem = { ...row }; + }, + //鏌ョ湅 + view (row) { + this.title = '鏌ョ湅'; + this.partShow_readOnly = true; + this.addmodalShow = true; + this.rowitem = { ...row }; + }, + //鍏宠仈 + relevance (row) { + this.relevanceModalShow_title = '鍏宠仈'; + this.relevanceModalShow = true; + this.rowitem = { ...row }; + }, + //鍙戦�佺剨瑁呭鏍� + weldingAudit (row) { + const { inOrderCode } = { ...row }; + //console.log(inOrderCode) + this.$confirm('纭畾灏嗚鍒掑崟鍙�"' + inOrderCode + '"鎻愪氦鐒婅瀹℃牳鍚�?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + InOrderSend({ + InOrderCode: inOrderCode, + Remark: '' + }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.InOrderSearch(); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触:' + res.msg + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑�' + }); + }); + }, + //閫氳繃 + passCommit (row) { + const { inOrderCode } = { ...row }; + //console.log(inOrderCode) + this.$confirm('纭畾灏嗚鍒掑崟鍙�"' + inOrderCode + '"瀹℃牳閫氳繃鍚�?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + InOrderCheck({ + InOrderCode: inOrderCode, + Remark: '' + }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.InOrderSearch(); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触:' + res.msg + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑�' + }); + }); + }, + //寮瑰嚭 鎷掔粷 + rejectCommit (row) { + this.rejectForm.inOrderCode = row.inOrderCode; + this.rejectForm.Remark = ''; + this.rejectModalShow = true + }, + //鎷掔粷鎻愪氦 + do_rejectCommit () { + this.$confirm('纭畾灏嗚鍒掑崟鍙�"' + this.rejectForm.inOrderCode + '"椹冲洖鍚�?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + InOrderReject({ + InOrderCode: this.rejectForm.inOrderCode, + Remark: this.rejectForm.Remark + }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.rejectModalShow = false; + this.InOrderSearch(); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触:' + res.msg + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑�' + }); + }); + }, + //鍒犻櫎 + del (row) { + console.log(row); + const { inOrderCode } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ョ敓浜ц鍒掍俊鎭�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + InOrderDelete({ inOrderCode }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛' + }); + this.InOrderSearch(); + } else { + this.$message({ + type: 'warning', + message: '鍒犻櫎澶辫触' + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal () { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit () { + this.addmodalShow = false; + this.modalShow = false; + this.UserSearch(); + }, + //闆朵欢鍕鹃�夋暟鎹� + chooseClick (e) { + //alert(e) + if (e.length > 0) { + this.chooselist = [...e]; + this.partShow = false; + } else { + this.$message({ + type: 'info', + message: '璇峰嬀閫�' + }); + } + }, + //瀹屽伐闆朵欢鍕鹃�夋暟鎹� + submitRelevanceFinishedPart (e) { + //alert(e) + //debugger + //alert(this.$refs.quotaion_relevanceEditMethod.tableData.length); + var oldDataList = this.$refs.quotaion_relevanceEditMethod.tableData; + if (e.length > 0) { + //澶勭悊锛岀浉鍚岀殑灏变笉鍐嶇户缁坊鍔狅紝娌℃湁鐨勫氨娣诲姞 + var checkList = [...e]; + for (let i in checkList) { + debugger + //alert(checkList[i].id); + var result = oldDataList.find(x => x.id == checkList[i].id); + //alert(result) + if (result == undefined) { + //alert('濉叆') + //alert(this.relevanceFinishedPartList.length); + oldDataList.push(checkList[i]); + //console.log(checkList[i]) + //alert('濉叆11') + } + } + this.relevanceFinishedPartList = [...oldDataList]; + //alert(this.relevanceFinishedPartList.length); + this.relevanceFinishedPartShow = false; + } else { + this.$message({ + type: 'info', + message: '璇峰嬀閫�' + }); + } + }, + //鏂板闆朵欢鍚� + addchooseclick () { + this.addchooseShow = false; + this.$refs.partChoose.itemSearch(); + }, + readExcel (e) { + // 璇诲彇琛ㄦ牸鏂囦欢 + let _this = this; + const files = e.file; + // debugger; + if (files.length <= 0) { + return false; + } else if (!/\.(xls|xlsx)$/.test(files.name.toLowerCase())) { + this.$message({ + message: '涓婁紶鏍煎紡涓嶆纭紝璇蜂笂浼爔ls鎴栬�厁lsx鏍煎紡', + type: 'warning' + }); + return false; + } else { + // 鏇存柊鑾峰彇鏂囦欢鍚� + console.log(files); + } + + const fileReader = new FileReader(); + fileReader.onload = ev => { + try { + const data = ev.target.result; + const workbook = XLSX.read(data, { + type: 'binary' + }); + const wsname = workbook.SheetNames[0]; //鍙栫涓�寮犺〃 + const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //鐢熸垚json琛ㄦ牸鍐呭 + console.log(ws); + let list = []; + + ws.forEach(item => { + list.push({ + itemCode: item['闆朵欢缂栧彿'], + inType: item['鐢熶骇绫诲瀷'], + Desc: item['鐢熶骇鐝嚎'], + createTime: item['鐢熶骇鏃ユ湡'], + itemNum: item['鐢熶骇鏁伴噺'] + }); + }); + _this.ImportInOrder(JSON.stringify(list)); + } catch (e) { + return false; + } + }; + fileReader.readAsBinaryString(files); + }, + //瀵煎叆鎺ュ彛 + ImportInOrder (list) { + ImportInOrder({ userName: getCache('userInfo').userName, items: list }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '瀵煎叆鎴愬姛' + }); + } else { + this.$message({ + type: 'warning', + message: '瀵煎叆澶辫触锛佽鎸夌収妯℃澘濉叆鍐呭' + }); + } + }); + this.InOrderSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +//璧嬪�糹d涓篿nput_finished_product鐨勬牱寮� +#confirm_welding { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/inbound/purchase/enter/index.vue b/qqjf-Web/src/views/inbound/purchase/enter/index.vue new file mode 100644 index 0000000..88f292c --- /dev/null +++ b/qqjf-Web/src/views/inbound/purchase/enter/index.vue @@ -0,0 +1,290 @@ +<template> + <!-- 浠撳簱淇℃伅 --> + <div id="enter" + class="global-content"> + <!-- 绛涢�� --> + <inbound-inuqer ref="inref" + byfilter="闆朵欢缂栧彿" + :filterList="filterList" + :loading="loading" + :tolead="false" + :derive="false" + :imexcel="false" + :datetimeshow="true" + @refresh="refresh" + @addmodal="addmodal" + @inquer="inquer" /> + <!-- table --> + <div class="table"> + <table-container :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + @handleSelectionChange="handleSelectionChange" /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" + :modabg="true" + @cancel="addmodalShow = false"> + <p slot="title">缁勭洏-{{ title }}</p> + <div class="height" + slot="centent"> + <enter-edit @partclick="partShow = true" + @cancel=" + addmodalShow = false; + refresh(); + " + :rowitem="rowitem" + :chooselist="chooselist" + @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + <transition name="modal"> + <modal v-if="partShow" + :modabg="true" + @cancel="partShow = false"> + <p slot="title">闆朵欢鍒楄〃</p> + <div class="height" + slot="centent"> + <choose ref="enterChoose" + :choice="false" + @chooseClick="chooseClick" + @cancel="partShow = false" + @addchoose="addchooseShow = true" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal, Choose, AddChoose } from '@/components/index'; +import inboundInuqer from '../../components/inboundinuqer'; +import enterEdit from '../../components/enterEdit'; +// import enterChoose from '../../components/choose'; +// import AddChoose from '../../components/addchoose'; +const { enter } = require('@/components/tableContainer/tableHead'); +import { ContainerVsItemSearch, ContainerVsItemDelete } from '@/api/enter'; +export default { + data () { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + partShow: false, + addchooseShow: false, + loading: false, + chooselist: [], //闆朵欢鏁版嵁 + wipelist: [], + handleSeleclist: [], //鍕鹃�夋暟鎹� + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + inuqerobg: {}, + filterList: [ + { + value: '缁勭洏缂栧彿', + label: '缁勭洏缂栧彿' + }, + { + value: '闆朵欢缂栧彿', + label: '闆朵欢缂栧彿' + }, + { + value: '闆朵欢鍚嶇О', + label: '闆朵欢鍚嶇О' + }, + { + value: '鍣ㄥ叿缂栧彿', + label: '鍣ㄥ叿缂栧彿' + }, + { + value: '鍣ㄥ叿绫诲瀷', + label: '鍣ㄥ叿绫诲瀷' + }, + { + value: '鍏ュ簱璁″垝', + label: '鍏ュ簱璁″垝' + }, + { + value: '鍑哄簱璁″垝', + label: '鍑哄簱璁″垝' + }, + { + value: '杩斾慨杞﹂棿', + label: '杩斾慨杞﹂棿' + }, + { + value: '鐢熶骇鐝嚎', + label: '鐢熶骇鐝嚎' + } + ] + }; + }, + components: { TableContainer, inboundInuqer, Modal, enterEdit, Choose, AddChoose }, + computed: { + tableHead () { + return enter; + } + }, + mounted () { + this.ContainerVsItemSearch(); + }, + methods: { + //鍒锋柊 + refresh () { + this.loading = true; + this.inuqerobg = {}; + this.$refs.inref.inrefclear(); + this.ContainerVsItemSearch(); + }, + //鏌ヨ + inquer (e) { + this.inuqerobg = e; + this.page = 1; + this.ContainerVsItemSearch(); + }, + //鎼滅储鐢ㄦ埛 + ContainerVsItemSearch () { + const { + 缁勭洏缂栧彿: cviCode, + 闆朵欢缂栧彿: itemName, + 闆朵欢鍚嶇О: itemDes, + 鍣ㄥ叿缂栧彿: containerName, + 鍣ㄥ叿绫诲瀷: containerType, + 鍏ュ簱璁″垝: inOrderCode, + 鍑哄簱璁″垝: outOrderCode, + 杩斾慨杞﹂棿: badByFactory, + 鐢熶骇鐝嚎: createLine + } = this.inuqerobg; + this.$Loading(true); + ContainerVsItemSearch(this.page + '&onePageNum=' + this.pageSize, { + itemName, + itemDes, + containerName, + containerType, + inOrderCode, + outOrderCode, + badByFactory, + createLine, + cviCode, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + this.loading = false; + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + } + this.$Loading(); + }); + }, + CurrentChange (e) { + console.log(e); + this.page = e; + this.ContainerVsItemSearch(); + }, + //椤垫暟 + SizeChange (e) { + this.pageSize = e; + this.ContainerVsItemSearch(); + }, + //缂栬緫 + edit (row) { + this.rowitem = { ...row }; + this.chooselist = []; //闆朵欢鏁版嵁 + this.addmodalShow = true; + this.title = '缂栬緫'; + }, + //鍕鹃�� + handleSelectionChange (e) { + this.handleSeleclist = e; + }, + //鍒犻櫎 + del (row) { + console.log(row); + const { id } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ョ粍鐩樹俊鎭�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + ContainerVsItemDelete({ id }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛' + }); + this.ContainerVsItemSearch(); + } else { + this.$message({ + type: 'warning', + message: '鍒犻櫎澶辫触' + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal () { + this.rowitem = {}; + this.chooselist = []; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit () { + this.addmodalShow = false; + this.modalShow = false; + this.ContainerVsItemSearch(); + }, + //闆朵欢鍕鹃�夋暟鎹� + chooseClick (e) { + if (e.length > 0) { + this.chooselist = [...e]; + this.partShow = false; + } else { + this.$message({ + type: 'info', + message: '璇峰嬀閫�' + }); + } + }, + //鏂板闆朵欢鍚� + addchooseclick () { + this.addchooseShow = false; + this.$refs.enterChoose.itemSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#enter { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/inbound/purchase/index.vue b/qqjf-Web/src/views/inbound/purchase/index.vue new file mode 100644 index 0000000..1cb60c6 --- /dev/null +++ b/qqjf-Web/src/views/inbound/purchase/index.vue @@ -0,0 +1,9 @@ +<template> + <router-view /> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/inbound/purchase/input_finished_product/index.vue b/qqjf-Web/src/views/inbound/purchase/input_finished_product/index.vue new file mode 100644 index 0000000..62d742d --- /dev/null +++ b/qqjf-Web/src/views/inbound/purchase/input_finished_product/index.vue @@ -0,0 +1,736 @@ +<template> + <!-- 浠撳簱淇℃伅 --> + <div id="input_finished_product" + class="global-content"> + <!-- 绛涢�� --> + <inbound-inuqer ref="inref" + byfilter="璁″垝鍗曞彿" + :filterList="filterList" + :add="false" + :tolead="true" + :derive="true" + :imexcel="false" + :datetimeshow="true" + @refresh="refresh" + @addmodal="addmodal" + @inquer="inquer" + @derive="derive" + @importfile="importfile" /> + <!-- <input type="file" accept=".xls,.xlsx" @change="readExcel($event)" /> --> + + <!-- table --> + <div class="table"> + <table-container :tableHead="tableHead" + :tableData="tableData" + :editShow="false" + :viewShow="true" + :weldingAuditShow="true" + :unlineCommitShow="true" + :relevanceShow="true" + :pageSize="pageSize" + :totle="totle" + :cellStyle="cellStyle" + @edit="edit" + @del="del" + @view="view" + @relevance="relevance" + @weldingAudit="weldingAudit" + @unlineCommit="unlineCommit" + @SizeChange="SizeChange" + @CurrentChange="CurrentChange" /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" + :modabg="true" + @cancel="addmodalShow = false"> + <p slot="title">鍐插帇鐢熶骇璁″垝鍗�-{{ title }}</p> + <div class="height" + slot="centent"> + <quotaion-edit @partclick="partShow = true" + :isReadOnly="partShow_readOnly" + @cancel=" + addmodalShow = false; + refresh(); + " + :chooselist="chooselist" + :rowitem="rowitem" + @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + <transition name="modal"> + <modal v-if="relevanceModalShow" + :modabg="true" + @cancel="relevanceModalShow = false"> + <p slot="title">鍏宠仈瀹屽伐鍏ュ簱闆朵欢-{{ relevanceModalShow_title }}</p> + <div class="height" + slot="centent"> + <quotaion_relevanceEdit ref="quotaion_relevanceEditMethod" + @partclick="clickAddForRelevanceFinishedPart" + @cancel=" + relevanceModalShow = false; + refresh(); + " + :tableList="relevanceFinishedPartList" + :chooseClick="chooseClick" + :rowitem="rowitem" + @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + <transition name="modal"> + <modal v-if="partShow" + :modabg="true" + @cancel="partShow = false"> + <p slot="title">闆朵欢閫夋嫨</p> + <div class="height" + slot="centent"> + <choose ref="partChoose" + :wipelist="wipelist" + @chooseClick="chooseClick" + @cancel="partShow = false" + @addchoose="addchooseShow = true" /> + </div> + </modal> + </transition> + <transition name="modal"> + <modal v-if="aduitUserShow" + :modabg="true" + @cancel="aduitUserShow = false"> + <p slot="title">閫夋嫨瀹℃牳浜�</p> + <div class="height" + slot="centent"> + <chooseUser ref="userChoose" + :wipelist="wipelist" + @submitForm="do_weldingAudit" + @cancel="aduitUserShow = false" + @addchoose="addchooseShow = true" /> + </div> + </modal> + </transition> + <transition name="modal"> + <modal v-if="relevanceFinishedPartShow" + :modabg="true" + @cancel="relevanceFinishedPartShow = false"> + <p slot="title">閫夋嫨鍏宠仈瀹屽伐鍏ュ簱闆朵欢</p> + <div class="height" + slot="centent"> + <chooseRelevanceFinishedPart ref="relevanceFinishedPartMethod" + :wipelist="wipelist" + :pItemName="pItemName" + :pItemDes="pItemDes" + @submitForm="submitRelevanceFinishedPart" + @cancel="relevanceFinishedPartShow = false" + @addchoose="addchooseShow = true" /> + </div> + </modal> + </transition> + <el-dialog title="绾夸笅浜や粯" + width="30%" + :visible.sync="unlineCommitModalShow"> + <el-form :model="unlineCommitForm" + label-width="100px"> + <el-form-item label="鐢熶骇璁″垝鍗曞彿"> + <el-input disabled + v-model="unlineCommitForm.inOrderCode"></el-input> + </el-form-item> + <el-form-item label="绾夸笅浜や粯鏁伴噺"> + <el-input-number v-model="unlineCommitForm.qty" + :min="0"></el-input-number> + </el-form-item> + </el-form> + <div slot="footer" + class="dialog-footer"> + <el-button @click="unlineCommitModalShow = false">鍙� 娑�</el-button> + <el-button type="primary" + @click="onSubmitUnlineCommitForm">纭� 瀹�</el-button> + </div> + </el-dialog> + + </div> +</template> + +<script> +import { TableContainer, Modal, Choose, AddChoose, chooseRelevanceFinishedPart, chooseUser } from '@/components/index';//杩欓噷寮曠敤鐨勬槸 vue鏂囦欢鐨勫悕瀛� +import inboundInuqer from '../../components/inboundinuqer'; +import quotaionEdit from '../../components/quotaionEdit'; +import quotaion_relevanceEdit from '../../components/quotaion_relevanceEdit'; +import { getimestampDate, getymdhms } from '@/utils/date'; +import { exportTableList } from '@/utils/excel'; +//const { quotation } = require('@/components/tableContainer/tableHead'); +import { getCache, setCache, removeToken } from '@/utils/sessionStorage'; +import { InOrderSearch, InOrderDelete, ImportInOrder, InOrderSend, UpdateUnlineNum } from '@/api/quotation'; +import XLSX from 'xlsx'; +import { Collapse } from 'element-ui'; +//鍒楄〃鏄剧ず鍒楀唴瀹� +const my_tableHead = [{ + columnDescription: '鐢熶骇璁″垝鍗曞彿', + columnName: 'inOrderCode', + sortable: true, + wipe: true, + width: 200 +}, +{ + columnDescription: '鐢熶骇绫诲瀷', + columnName: 'orderType', + sortable: true, + wipe: true, + width: 150 +}, + +{ + columnDescription: '璁㈠崟鐘舵��', + columnName: 'orderStatus', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '闆朵欢缂栧彿', + columnName: 'itemName', + sortable: true, + wipe: true, + width: 150 +}, +{ + columnDescription: '闆朵欢鍚嶇О', + columnName: 'itemDes', + sortable: true, + wipe: true, + width: 200 +}, +{ + columnDescription: '璁″垝鐢熶骇鏁伴噺', + columnName: 'totalNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鎬诲畬宸ユ暟', + columnName: 'allFinishedNum', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '鍏ュ簱鏁伴噺', + columnName: 'DoneNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '绾夸笅浜や粯鏁伴噺', + columnName: 'unLineNum', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鎻愪氦浜�', + columnName: 'senderName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鎻愪氦鏃堕棿', + columnName: 'SendTime', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '瀹℃牳浜�', + columnName: 'checkerName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '瀹℃牳缁撴灉', + columnName: 'CheckResult', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '瀹℃牳鏃堕棿', + columnName: 'CheckTime', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '瀹℃牳璇存槑', + columnName: 'CheckRemark', + sortable: true, + wipe: true, + width: 120 +}, +{ + columnDescription: '澶囨敞', + columnName: 'deviceName5', + sortable: true, + wipe: true +}, +{ + columnDescription: '鍒涘缓浜�', + columnName: 'createName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '鍒涘缓鏃堕棿', + columnName: 'createTime', + sortable: true, + wipe: true, + width: 150 +}, { + columnDescription: '淇敼浜�', + columnName: 'updateName', + sortable: true, + wipe: true, + width: 100 +}, +{ + columnDescription: '淇敼鏃堕棿', + columnName: 'updateTime', + sortable: true, + wipe: true, + width: 150 +} +]; +export default { + name: 'input_finished_product', + data () { + return { + curSelectInOrderCode: '',//褰撳墠閫夋嫨鐨勮鍒掑崟鍙� + aduitUserShow: false, + partShow_readOnly: false, + unlineCommitForm: { + inOrderCode: '', + qty: 0 + }, + unlineCommitModalShow: false, + pItemName: '', + pItemDes: '', + relevanceModalShow_title: '', + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + relevanceModalShow: false, + relevanceFinishedPartShow: false, + partShow: false, + addchooseShow: false, + + chooselist: [], + relevanceFinishedPartList: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + wipelist: ['inOrderCode'], + inuqerobg: {}, + filterList: [ + { + value: '璁″垝鍗曞彿', + label: '璁″垝鍗曞彿' + } + ] + }; + }, + components: { TableContainer, inboundInuqer, Modal, quotaionEdit, Choose, AddChoose, quotaion_relevanceEdit, chooseRelevanceFinishedPart, chooseUser }, + computed: { + tableHead () { + return my_tableHead; + } + }, + created () { }, + mounted () { + this.InOrderSearch(); + console.log(getymdhms()); + }, + methods: { + cellStyle ({ row, rowIndex }) { + if (row.OrderStatusId === 3) {//3鏄� 椹冲洖 + return 'background: #aa7798;color:white' + } + return '' + }, + clickAddForRelevanceFinishedPart () { + //鑾峰彇涓婁竴涓獥浣撶殑鍐呭 + let itemName = this.$refs.quotaion_relevanceEditMethod.iqnuer.itemName; + let itemDes = this.$refs.quotaion_relevanceEditMethod.iqnuer.itemDes; + this.pItemName = itemName; + this.pItemDes = itemDes; + this.relevanceFinishedPartShow = true + // setTimeout(() => { + // //console.log('relevanceFinishedPartMethod:' + this.$refs.relevanceFinishedPartMethod) + + // this.$refs.relevanceFinishedPartMethod.iqnuer.itemName = itemName; + // this.$refs.relevanceFinishedPartMethod.iqnuer.itemDes = itemDes; + // }, 0) + }, + //鍒锋柊 + refresh () { + this.inuqerobg = {}; + this.$refs.inref.inrefclear(); + this.InOrderSearch(); + }, + //鏌ヨ + inquer (e) { + this.page = 1; + this.inuqerobg = e; + this.InOrderSearch(); + }, + //瀵煎嚭 + derive () { + let tHeader = []; + let filterVal = []; + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + this.$Loading(true); + const { 璁″垝鍗曞彿: inOrderCode } = this.inuqerobg; + const OrderStatusId = this.inuqerobg.OrderStatusId; + const orderType = this.inuqerobg.orderType; + InOrderSearch('1&onePageNum=99999999', { + inOrderCode, orderType, OrderStatusId, InOrderPageType: '瀹屽伐鍝佽緭鍏ラ〉闈�', createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.doTime = item.doTime ? getimestampDate(item.doTime) : ''; + item.updateTime = item.updateTime ? getimestampDate(item.updateTime) : ''; + }); + exportTableList(tHeader, filterVal, data, '鍐插帇璁″垝' + getymdhms()); + } + this.$Loading(false); + }); + }, + //瀵煎叆 + importfile (e) { + this.readExcel(e); + }, + + //鑾峰彇鐢熶骇璁″垝鍒楄〃 + InOrderSearch () { + this.$Loading(true); + const { 璁″垝鍗曞彿: inOrderCode } = this.inuqerobg; + const OrderStatusId = this.inuqerobg.OrderStatusId; + const orderType = this.inuqerobg.orderType; + InOrderSearch(this.page + '&onePageNum=' + this.pageSize, { + inOrderCode, orderType, OrderStatusId, InOrderPageType: '瀹屽伐鍝佽緭鍏ラ〉闈�', + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + this.tableData = res.data.filter(item => (item.doTime = getimestampDate(item.doTime))); + this.totle = res.num; + } + this.$Loading(); + }); + }, + //鍒嗛〉 + CurrentChange (e) { + console.log(e); + this.page = e; + this.InOrderSearch(); + }, + //椤垫暟 + SizeChange (e) { + this.pageSize = e; + this.InOrderSearch(); + }, + //缂栬緫 + edit (row) { + this.title = '缂栬緫'; + this.partShow_readOnly = false; + this.addmodalShow = true; + this.rowitem = { ...row }; + }, + //鏌ョ湅 + view (row) { + this.title = '鏌ョ湅'; + this.partShow_readOnly = true; + this.addmodalShow = true; + this.rowitem = { ...row }; + }, + //鍏宠仈 + relevance (row) { + this.relevanceModalShow_title = '鍏宠仈'; + this.relevanceModalShow = true; + this.rowitem = { ...row }; + }, + //鎻愬嚭 鐒婅瀹℃牳浜� + weldingAudit (row) { + const { inOrderCode } = { ...row }; + this.curSelectInOrderCode = inOrderCode; + this.aduitUserShow = true; + }, + //鍙戦�佺剨瑁呭鏍� + do_weldingAudit (e) { + let userId = 0; + if (e.length > 0) { + var checkList = [...e]; + userId = checkList[0].id; + } else { + this.$message({ + type: 'info', + message: '璇峰嬀閫�' + }); + } + //console.log(userId + ' ' + this.curSelectInOrderCode) + this.$confirm('纭畾灏嗚鍒掑崟鍙�"' + this.curSelectInOrderCode + '"鎻愪氦鐒婅瀹℃牳鍚�?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + InOrderSend({ + InOrderCode: this.curSelectInOrderCode, + SendUserId: getCache('userInfo').id,//鎻愪氦瀹℃牳浜� + AuditUserId: userId,//瀹℃牳浜� + Remark: '' + }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.aduitUserShow = false; + this.InOrderSearch(); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触:' + res.msg + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑�' + }); + }); + }, + //寮瑰嚭 绾夸笅浜や粯 + unlineCommit (row) { + this.unlineCommitForm.inOrderCode = row.inOrderCode; + this.unlineCommitForm.qty = row.unLineNum; + this.unlineCommitModalShow = true + }, + //绾夸笅浜や粯 + onSubmitUnlineCommitForm () { + this.$confirm('纭畾灏嗚鍒掑崟鍙�"' + this.unlineCommitForm.inOrderCode + '"鎻愪氦绾夸笅浜や粯鏁伴噺鍚�?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + UpdateUnlineNum({ + InOrderCode: this.unlineCommitForm.inOrderCode, + Qty: this.unlineCommitForm.qty + }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.unlineCommitModalShow = false; + this.InOrderSearch(); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触:' + res.msg + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑�' + }); + }); + }, + //鍒犻櫎 + del (row) { + console.log(row); + const { inOrderCode } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ョ敓浜ц鍒掍俊鎭�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + InOrderDelete({ inOrderCode }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛' + }); + this.InOrderSearch(); + } else { + this.$message({ + type: 'warning', + message: '鍒犻櫎澶辫触' + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal () { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit () { + this.addmodalShow = false; + this.modalShow = false; + this.UserSearch(); + }, + //闆朵欢鍕鹃�夋暟鎹� + chooseClick (e) { + //alert(e) + if (e.length > 0) { + this.chooselist = [...e]; + this.partShow = false; + } else { + this.$message({ + type: 'info', + message: '璇峰嬀閫�' + }); + } + }, + //瀹屽伐闆朵欢鍕鹃�夋暟鎹� + submitRelevanceFinishedPart (e) { + //alert(e) + //debugger + //alert(this.$refs.quotaion_relevanceEditMethod.tableData.length); + var oldDataList = this.$refs.quotaion_relevanceEditMethod.tableData; + if (e.length > 0) { + //澶勭悊锛岀浉鍚岀殑灏变笉鍐嶇户缁坊鍔狅紝娌℃湁鐨勫氨娣诲姞 + var checkList = [...e]; + for (let i in checkList) { + debugger + //alert(checkList[i].id); + var result = oldDataList.find(x => x.id == checkList[i].id); + //alert(result) + if (result == undefined) { + //alert('濉叆') + //alert(this.relevanceFinishedPartList.length); + oldDataList.push(checkList[i]); + //console.log(checkList[i]) + //alert('濉叆11') + } + } + this.relevanceFinishedPartList = [...oldDataList]; + //alert(this.relevanceFinishedPartList.length); + this.relevanceFinishedPartShow = false; + } else { + this.$message({ + type: 'info', + message: '璇峰嬀閫�' + }); + } + }, + //鏂板闆朵欢鍚� + addchooseclick () { + this.addchooseShow = false; + this.$refs.partChoose.itemSearch(); + }, + readExcel (e) { + // 璇诲彇琛ㄦ牸鏂囦欢 + let _this = this; + const files = e.file; + // debugger; + if (files.length <= 0) { + return false; + } else if (!/\.(xls|xlsx)$/.test(files.name.toLowerCase())) { + this.$message({ + message: '涓婁紶鏍煎紡涓嶆纭紝璇蜂笂浼爔ls鎴栬�厁lsx鏍煎紡', + type: 'warning' + }); + return false; + } else { + // 鏇存柊鑾峰彇鏂囦欢鍚� + console.log(files); + } + + const fileReader = new FileReader(); + fileReader.onload = ev => { + try { + const data = ev.target.result; + const workbook = XLSX.read(data, { + type: 'binary' + }); + const wsname = workbook.SheetNames[0]; //鍙栫涓�寮犺〃 + const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //鐢熸垚json琛ㄦ牸鍐呭 + console.log(ws); + let list = []; + + ws.forEach(item => { + list.push({ + itemCode: item['闆朵欢缂栧彿'], + inType: item['鐢熶骇绫诲瀷'], + Desc: item['鐢熶骇鐝嚎'], + createTime: item['鐢熶骇鏃ユ湡'], + itemNum: item['鐢熶骇鏁伴噺'] + }); + }); + _this.ImportInOrder(JSON.stringify(list)); + } catch (e) { + return false; + } + }; + fileReader.readAsBinaryString(files); + }, + //瀵煎叆鎺ュ彛 + ImportInOrder (list) { + ImportInOrder({ userName: getCache('userInfo').userName, items: list }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '瀵煎叆鎴愬姛' + }); + } else { + this.$message({ + type: 'warning', + message: '瀵煎叆澶辫触锛佽鎸夌収妯℃澘濉叆鍐呭' + }); + } + }); + this.InOrderSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +//璧嬪�糹d涓篿nput_finished_product鐨勬牱寮� +#input_finished_product { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/inbound/purchase/intype/index.vue b/qqjf-Web/src/views/inbound/purchase/intype/index.vue new file mode 100644 index 0000000..00e4a3a --- /dev/null +++ b/qqjf-Web/src/views/inbound/purchase/intype/index.vue @@ -0,0 +1,186 @@ +<template> + <!-- 浠撳簱淇℃伅 --> + <div id="intype" class="global-content"> + <!-- 绛涢�� --> + <inbound-inuqer + ref="inref" + byfilter="鍏ュ簱绫诲瀷" + :filterList="filterList" + :tolead="false" + :derive="false" + @refresh="refresh" + @addmodal="addmodal" + @inquer="inquer" + /> + <!-- table --> + <div class="table"> + <table-container + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :operation="false" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + /> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import inboundInuqer from '../../components/inboundinuqer'; +const { intype } = require('@/components/tableContainer/tableHead'); +import { InTypeSearch } from '@/api/intype'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + partShow: false, + addchooseShow: false, + chooselist: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + wipelist: ['inOrderCode'], + inuqerobg: {}, + filterList: [ + { + value: '鍏ュ簱绫诲瀷', + label: '鍏ュ簱绫诲瀷' + }, + { + value: '鐩爣浠撳簱', + label: '鐩爣浠撳簱鍚�' + } + ] + }; + }, + components: { TableContainer, inboundInuqer, Modal }, + computed: { + tableHead() { + return intype; + } + }, + mounted() { + this.InTypeSearch(); + }, + methods: { + //鍒锋柊 + refresh() { + this.inuqerobg = {}; + this.$refs.inref.inrefclear(); + this.InTypeSearch(); + }, + //鏌ヨ + inquer(e) { + console.log(e); + this.page = 1; + this.inuqerobg = e; + this.InTypeSearch(); + }, + //鑾峰彇鐢熶骇璁″垝鍒楄〃 + InTypeSearch() { + this.$Loading(true); + const { 璁″垝鍗曞彿: inOrderCode, 鐢熶骇绫诲瀷: orderType, 璁㈠崟鐘舵��: orderStatus } = this.inuqerobg; + InTypeSearch(this.page + '&onePageNum=' + this.pageSize, { inOrderCode, orderType, orderStatus }).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.InTypeSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { inOrderCode } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ョ敓浜ц鍒掍俊鎭�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + InOrderDelete({ inOrderCode }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛' + }); + this.InTypeSearch(); + } else { + this.$message({ + type: 'warning', + message: '鍒犻櫎澶辫触' + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.UserSearch(); + }, + //闆朵欢鍕鹃�夋暟鎹� + chooseClick(e) { + if (e.length > 0) { + this.chooselist = [...e]; + this.partShow = false; + } else { + this.$message({ + type: 'info', + message: '璇峰嬀閫�' + }); + } + }, + //鏂板闆朵欢鍚� + addchooseclick() { + this.addchooseShow = false; + this.$refs.partChoose.itemSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#intype { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/inbound/purchase/quotation/index.vue b/qqjf-Web/src/views/inbound/purchase/quotation/index.vue new file mode 100644 index 0000000..5a60d8f --- /dev/null +++ b/qqjf-Web/src/views/inbound/purchase/quotation/index.vue @@ -0,0 +1,342 @@ +<template> + <!-- 浠撳簱淇℃伅 --> + <div id="quotation" + class="global-content"> + <!-- 绛涢�� --> + <inbound-inuqer ref="inref" + byfilter="璁″垝鍗曞彿" + :filterList="filterList" + :add="true" + :tolead="true" + :derive="true" + :imexcel="true" + :datetimeshow="true" + @refresh="refresh" + @addmodal="addmodal" + @inquer="inquer" + @derive="derive" + @importfile="importfile" /> + <!-- <input type="file" accept=".xls,.xlsx" @change="readExcel($event)" /> --> + + <!-- table --> + <div class="table"> + <table-container :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @SizeChange="SizeChange" + @CurrentChange="CurrentChange" /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" + :modabg="true" + :modalStyle="modalStyle" + @cancel="addmodalShow = false"> + <p slot="title">鍐插帇鐢熶骇璁″垝鍗�-{{ title }}</p> + <div class="height" + slot="centent"> + <quotaion-edit @partclick="partShow = true" + @cancel=" + addmodalShow = false; + refresh(); + " + :chooselist="chooselist" + :rowitem="rowitem" + @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + <transition name="modal"> + <modal v-if="partShow" + :modabg="true" + @cancel="partShow = false"> + <p slot="title">闆朵欢閫夋嫨</p> + <div class="height" + slot="centent"> + <choose ref="partChoose" + :wipelist="wipelist" + @chooseClick="chooseClick" + @cancel="partShow = false" + @addchoose="addchooseShow = true" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal, Choose, AddChoose } from '@/components/index'; +import inboundInuqer from '../../components/inboundinuqer'; +import quotaionEdit from '../../components/quotaionEdit'; +import { getimestampDate, getymdhms } from '@/utils/date'; +import { exportTableList } from '@/utils/excel'; +const { quotation } = require('@/components/tableContainer/tableHead'); +import { getCache, setCache, removeToken } from '@/utils/sessionStorage'; +import { InOrderSearch, InOrderDelete, ImportInOrder } from '@/api/quotation'; +import XLSX from 'xlsx'; +export default { + name: 'quotation', + data () { + return { + modalStyle: { + width: '50%' + }, + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + partShow: false, + addchooseShow: false, + + chooselist: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + wipelist: ['inOrderCode'], + inuqerobg: {}, + filterList: [ + { + value: '璁″垝鍗曞彿', + label: '璁″垝鍗曞彿' + } + ] + }; + }, + components: { TableContainer, inboundInuqer, Modal, quotaionEdit, Choose, AddChoose }, + computed: { + tableHead () { + return quotation; + } + }, + created () { }, + mounted () { + this.InOrderSearch(); + console.log(getymdhms()); + }, + methods: { + //鍒锋柊 + refresh () { + this.inuqerobg = {}; + this.$refs.inref.inrefclear(); + this.InOrderSearch(); + }, + //鏌ヨ + inquer (e) { + this.page = 1; + this.inuqerobg = e; + this.InOrderSearch(); + }, + //瀵煎嚭 + derive () { + let tHeader = []; + let filterVal = []; + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + this.$Loading(true); + const { 璁″垝鍗曞彿: inOrderCode } = this.inuqerobg; + //console('inOrderCode' + inOrderCode) + const OrderStatusId = this.inuqerobg.OrderStatusId; + const orderType = this.inuqerobg.orderType; + InOrderSearch('1&onePageNum=99999999', { + inOrderCode, orderType, OrderStatusId, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.doTime = item.doTime ? getimestampDate(item.doTime) : ''; + item.updateTime = item.updateTime ? getimestampDate(item.updateTime) : ''; + }); + exportTableList(tHeader, filterVal, data, '鍐插帇璁″垝' + getymdhms()); + } + this.$Loading(false); + }); + }, + //瀵煎叆 + importfile (e) { + this.readExcel(e); + }, + + //鑾峰彇鐢熶骇璁″垝鍒楄〃 + InOrderSearch () { + this.$Loading(true); + const { 璁″垝鍗曞彿: inOrderCode } = this.inuqerobg; + //console('inOrderCode' + inOrderCode) + const OrderStatusId = this.inuqerobg.OrderStatusId; + const orderType = this.inuqerobg.orderType; + InOrderSearch(this.page + '&onePageNum=' + this.pageSize, { + inOrderCode, orderType, OrderStatusId, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + this.tableData = res.data.filter(item => (item.doTime = getimestampDate(item.doTime))); + this.totle = res.num; + } + this.$Loading(); + }); + }, + //鍒嗛〉 + CurrentChange (e) { + console.log(e); + this.page = e; + this.InOrderSearch(); + }, + //椤垫暟 + SizeChange (e) { + this.pageSize = e; + this.InOrderSearch(); + }, + //缂栬緫 + edit (row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del (row) { + console.log(row); + const { inOrderCode } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ョ敓浜ц鍒掍俊鎭�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + InOrderDelete({ inOrderCode }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛' + }); + this.InOrderSearch(); + } else { + this.$message({ + type: 'warning', + message: '鍒犻櫎澶辫触' + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal () { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit () { + this.addmodalShow = false; + this.modalShow = false; + this.UserSearch(); + }, + //闆朵欢鍕鹃�夋暟鎹� + chooseClick (e) { + if (e.length > 0) { + this.chooselist = [...e]; + this.partShow = false; + } else { + this.$message({ + type: 'info', + message: '璇峰嬀閫�' + }); + } + }, + //鏂板闆朵欢鍚� + addchooseclick () { + this.addchooseShow = false; + this.$refs.partChoose.itemSearch(); + }, + readExcel (e) { + // 璇诲彇琛ㄦ牸鏂囦欢 + let _this = this; + const files = e.file; + // debugger; + if (files.length <= 0) { + return false; + } else if (!/\.(xls|xlsx)$/.test(files.name.toLowerCase())) { + this.$message({ + message: '涓婁紶鏍煎紡涓嶆纭紝璇蜂笂浼爔ls鎴栬�厁lsx鏍煎紡', + type: 'warning' + }); + return false; + } else { + // 鏇存柊鑾峰彇鏂囦欢鍚� + console.log(files); + } + + const fileReader = new FileReader(); + fileReader.onload = ev => { + try { + const data = ev.target.result; + const workbook = XLSX.read(data, { + type: 'binary' + }); + const wsname = workbook.SheetNames[0]; //鍙栫涓�寮犺〃 + const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //鐢熸垚json琛ㄦ牸鍐呭 + console.log(ws); + let list = []; + + ws.forEach(item => { + list.push({ + itemCode: item['闆朵欢缂栧彿'], + inType: item['鐢熶骇绫诲瀷'], + Desc: item['鐢熶骇鐝嚎'], + createTime: item['鐢熶骇鏃ユ湡'], + itemNum: item['鐢熶骇鏁伴噺'] + }); + }); + _this.ImportInOrder(JSON.stringify(list)); + } catch (e) { + return false; + } + }; + fileReader.readAsBinaryString(files); + }, + //瀵煎叆鎺ュ彛 + ImportInOrder (list) { + ImportInOrder({ userName: getCache('userInfo').userName, items: list }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '瀵煎叆鎴愬姛' + }); + } else { + this.$message({ + type: 'warning', + message: '瀵煎叆澶辫触锛佽鎸夌収妯℃澘濉叆鍐呭' + }); + } + }); + this.InOrderSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#quotation { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/login/index.vue b/qqjf-Web/src/views/login/index.vue new file mode 100644 index 0000000..7e866fe --- /dev/null +++ b/qqjf-Web/src/views/login/index.vue @@ -0,0 +1,360 @@ +<template> + <div class="login-container"> + <div class="header"> + <img class="logo" src="../../assets/heard/logbg.jpg" alt="" /> + </div> + <el-form + ref="loginForm" + :model="loginForm" + :rules="loginRules" + class="login-form" + autocomplete="on" + label-position="left" + > + <div class="title-container"> + <h3 class="title">娆㈣繋鐧诲綍鏅鸿兘鍖栫珛浣撳簱绠$悊绯荤粺</h3> + </div> + + <el-form-item prop="username"> + <span class="svg-container"> + <svg-icon icon-class="user" /> + </span> + <el-input + ref="username" + v-model="loginForm.username" + placeholder="璐︽埛" + name="username" + type="text" + tabindex="1" + autocomplete="on" + /> + </el-form-item> + + <el-tooltip v-model="capsTooltip" content="Caps lock is On" placement="right" manual> + <el-form-item prop="password"> + <span class="svg-container"> + <svg-icon icon-class="password" /> + </span> + <el-input + :key="passwordType" + ref="password" + v-model="loginForm.password" + :type="passwordType" + placeholder="瀵嗙爜" + name="password" + tabindex="2" + autocomplete="on" + @keyup.native="checkCapslock" + @blur="capsTooltip = false" + @keyup.enter.native="handleLogin" + /> + <span class="show-pwd" @click="showPwd"> + <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" /> + </span> + </el-form-item> + </el-tooltip> + + <el-button + :loading="loading" + type="primary" + style="width: 100%; margin-bottom: 30px" + @click.native.prevent="handleLogin" + >鐧诲綍</el-button + > + </el-form> + </div> +</template> + +<script> +import { validUsername } from '@/utils/validate'; +import { getCache, setCache } from '@/utils/sessionStorage'; +export default { + name: 'Login', + components: {}, + data() { + return { + loginForm: { + username: '', + password: '' + }, + loginRules: { + username: [{ required: true, message: '璇疯緭鍏ヨ处鍙�', trigger: 'blur' }], + password: [{ required: true, trigger: 'blur', message: '璇疯緭鍏ュ瘑鐮�' }] + }, + passwordType: 'password', + capsTooltip: false, + loading: false, + showDialog: false, + redirect: undefined, + otherQuery: {} + }; + }, + watch: { + $route: { + handler: function (route) { + const query = route.query; + if (query) { + this.redirect = query.redirect; + this.otherQuery = this.getOtherQuery(query); + } + }, + immediate: true + } + }, + created() { + // window.addEventListener('storage', this.afterQRScan) + }, + mounted() { + if (this.loginForm.username === '') { + this.$refs.username.focus(); + } else if (this.loginForm.password === '') { + this.$refs.password.focus(); + } + }, + destroyed() { + // window.removeEventListener('storage', this.afterQRScan) + }, + methods: { + checkCapslock(e) { + const { key } = e; + this.capsTooltip = key && key.length === 1 && key >= 'A' && key <= 'Z'; + }, + showPwd() { + if (this.passwordType === 'password') { + this.passwordType = 'text'; + } else { + this.passwordType = 'password'; + } + this.$nextTick(() => { + this.$refs.password.focus(); + }); + }, + handleLogin() { + this.$refs['loginForm'].validate(valid => { + if (valid) { + this.loading = true; + this.$store + .dispatch('user/login', this.loginForm) + .then(res => { + // this.loading = false; + if (res.code == 0) { + let data = res.data[0]; + setCache('userInfo', data); + this.$router.push({ + path: '/Didproject' + }); + } else { + this.$message({ + type: 'warning', + message: res.msg + }); + } + this.loading = false; + }) + .catch(() => { + this.loading = false; + }); + } else { + console.log('error submit!!'); + return false; + } + }); + }, + getOtherQuery(query) { + return Object.keys(query).reduce((acc, cur) => { + if (cur !== 'redirect') { + acc[cur] = query[cur]; + } + return acc; + }, {}); + } + } +}; +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> +$bg: #fbfbfb; +$dark_gray: #889aa4; +$light_gray: #666; +$cursor: #666; + +.header { + background-color: white; + position: relative; + display: table-cell; + display: -webkit-box; + -webkit-box-pack: center; + -webkit-box-orient: vertical; + height: 60px; + width: 100%; + padding: 10px 30px; + border-bottom: 1px solid #f3f3f3; + + .logo { + height: 60px; + } +} + +/* reset element-ui css */ +.login-container { + /deep/ .el-input { + display: inline-block; + height: 47px; + width: 85%; + input { + background: transparent; + border: 0px; + -webkit-appearance: none; + border-radius: 0px; + padding: 12px 5px 12px 15px; + color: $light_gray; + height: 47px; + caret-color: $cursor; + &:-webkit-autofill { + box-shadow: 0 0 0px 1000px $bg inset !important; + -webkit-text-fill-color: $cursor !important; + } + } + } + /deep/ .el-form-item { + background: rgba(216, 216, 216, 0.05); + border: 1px solid #ddd; + border-radius: 4px; + + color: #454545; + .el-form-item__content { + background-color: $bg; + border-radius: 4px; + } + } +} + +.login-container { + height: 100%; + width: 100%; + overflow: hidden; + .login-form { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + // right: 0; + width: 480px; + max-width: 100%; + padding: 30px 30px 10px 30px; + // margin: 110px auto; + + border: 1px solid #eee; + border-radius: 4px; + overflow: hidden; + .btn-login { + width: 100%; + margin-bottom: 30px; + height: 46px; + } + .forget-pwd { + padding: 0 10px; + text-align: right; + a { + font-family: PingFangSC-Light; + font-size: 14px; + color: #0099ff; + letter-spacing: 0; + &:hover { + color: #71c6ff; + } + } + } + } + .tips { + font-size: 14px; + color: #fff; + margin-bottom: 10px; + span { + &:first-of-type { + margin-right: 16px; + } + } + } + .svg-container { + padding: 6px 5px 6px 15px; + color: $dark_gray; + vertical-align: middle; + width: 30px; + display: inline-block; + } + .title-container { + position: relative; + .title { + font-size: 26px; + color: #666; + margin: 0px auto 40px auto; + text-align: center; + font-weight: bold; + } + .set-language { + color: #666; + position: absolute; + top: 5px; + right: 0px; + } + } + .show-pwd { + position: absolute; + right: 10px; + top: 7px; + font-size: 16px; + color: $dark_gray; + cursor: pointer; + user-select: none; + } + .thirdparty-button { + position: absolute; + right: 35px; + bottom: 28px; + } +} +</style> + +<style rel="stylesheet/scss" lang="scss"> +html, +body { + background-color: #fff; +} +.vux-divider { + white-space: nowrap; + width: 100%; + text-align: center; + padding: 10px 0; + color: #666; + overflow: hidden; + position: relative; + .text { + display: inline-block; + padding: 0 10px; + position: relative; + z-index: 100; + background-color: #fff; + } + &::before { + content: ' '; + width: 50%; + border-top: 1px solid #e4e7ed; + height: 1px; + display: inline-block; + position: absolute; + top: 19px; + right: 0; + } + &::after { + content: ' '; + width: 50%; + border-top: 1px solid #e4e7ed; + height: 1px; + display: inline-block; + position: absolute; + top: 19px; + left: 0; + } +} +</style> diff --git a/qqjf-Web/src/views/outbound/components/outinquer.vue b/qqjf-Web/src/views/outbound/components/outinquer.vue new file mode 100644 index 0000000..79332b8 --- /dev/null +++ b/qqjf-Web/src/views/outbound/components/outinquer.vue @@ -0,0 +1,111 @@ +<template> + <div class="flex align-center justify-between"> + <div class=""> + <el-button-group> + <el-button type="primary" size="mini" icon="el-icon-plus" @click="$emit('addmodal')">鏂板缓</el-button> + <el-button v-if="dele" type="primary" size="mini" icon="el-icon-delete">鍒犻櫎</el-button> + </el-button-group> + <el-button-group class="margin-left"> + <el-button class="" v-if="tolead" type="primary" size="mini" icon="el-icon-upload2">瀵煎叆</el-button> + <el-button v-if="derive" type="primary" size="mini" icon="el-icon-download">瀵煎嚭</el-button> + </el-button-group> + <el-button + class="margin-left" + v-if="refresh" + :loading="loading" + size="mini" + icon="el-icon-refresh" + @click="$emit('refresh')" + >鍒锋柊</el-button + > + </div> + <div id="topinquer" class="flex align-center"> + <div class="flex align-center margin-right"> + <el-input size="mini" clearable v-model="iqnuer[filter]" class="input-with-select"> + <el-select @change="selchange" v-model="filter" slot="prepend"> + <el-option + v-for="(item, index) in filterList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </el-input> + </div> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + </div> +</template> + +<script> +export default { + data() { + return { + iqnuer: {}, + applytime: [], + visible: false, + filter: '' + }; + }, + props: { + advanced: { + type: Boolean, + default: false + }, + dele: { + type: Boolean, + default: false + }, + refresh: { + type: Boolean, + default: true + }, + tolead: { + type: Boolean, + default: false + }, + derive: { + type: Boolean, + default: false + }, + loading: { + type: Boolean, + default: false + }, + byfilter: { + type: String, + default: '' + }, + filterList: { + type: Array, + default: () => [] + } + }, + mounted() { + this.filter = this.byfilter; + }, + methods: { + inquer() { + this.$emit('inquer', this.iqnuer); + }, + selchange() { + this.iqnuer = {}; + } + }, + watch: { + byfilter: { + handler(nvl, ovl) { + this.filter = nvl; + } + } + } +}; +</script> + +<style lang="scss" scoped> +#topinquer { + ::v-deep .el-select { + width: 100px; + } +} +</style> diff --git a/qqjf-Web/src/views/outbound/components/plantEdit.vue b/qqjf-Web/src/views/outbound/components/plantEdit.vue new file mode 100644 index 0000000..fe01062 --- /dev/null +++ b/qqjf-Web/src/views/outbound/components/plantEdit.vue @@ -0,0 +1,435 @@ +<template> + <div class="plantEdit height overflow"> + <div class="width overflow height92"> + <div class="plantEdit-height"> + <div class="flex justify-between"> + <div class="width55 flex align-center"> + <label class="width40 textalign">鍑哄簱璁″垝鍗曞彿锛�</label> + <el-input size="mini" disabled v-model="iqnuer.outOrderCode" class="width60"> </el-input> + </div> + <div class="width40 flex align-center"> + <label class="width40 textalign">鍑哄簱绫诲瀷锛�</label> + <el-select class="width60" filterable size="mini" clearable v-model="iqnuer.orderType" placeholder="璇烽�夋嫨"> + <el-option v-for="item in orderTypelist" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + </div> + <div class="flex justify-between margintopbot"> + <div class="width55 flex align-center"> + <label class="width40 textalign">鐩爣鐝嚎锛�</label> + <el-select + class="width60" + filterable + remote + reserve-keyword + :remote-method="remoteMethod" + :loading="remoloading" + size="mini" + clearable + v-model="iqnuer.productionLineName" + placeholder="璇疯緭鍏ュ叧閿瘝" + > + <el-option + v-for="(item, index) in productionLinelist" + :key="index + 'produc'" + :label="item.productionName" + :value="item.productionName" + > + </el-option> + </el-select> + </div> + <div class="width40 flex align-center"> + <label class="width40 textalign">鍚堣鏁伴噺锛�</label> + <el-input clearable size="mini" disabled v-model="iqnuer.totalOutNum" class="width60"> </el-input> + </div> + </div> + <div class="flex justify-between margintopbot"> + <div class="width55 flex align-center"> + <label class="width40 textalign">鍑哄簱鍙o細</label> + <el-select class="width60" filterable size="mini" clearable v-model="iqnuer.tranLine" placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in tranLinelist" + :key="index + 'produc'" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </div> + <div class="width40 flex align-center"> + <label class="width40 textalign">鍙夎溅宸ワ細</label> + <el-select class="width60" filterable size="mini" clearable v-model="iqnuer.CarUserId" placeholder="璇烽�夋嫨"> + <el-option v-for="item in forkliftWorkers" :key="item.id" :label="item.userName" :value="item.id"> + </el-option> + </el-select> + </div> + </div> + + <el-button-group> + <el-button type="primary" size="mini" icon="el-icon-plus" @click="$emit('partclick')">鏂板缓</el-button> + <el-button type="primary" size="mini" icon="el-icon-delete" @click="delclick">鍒犻櫎</el-button> + </el-button-group> + </div> + <div class="width plantEdit-tebleheight overflow"> + <table-container + height="85%" + :tableHead="tableHead" + :tableData="tableData" + :operation="true" + :editShow="true" + :selectionShow="true" + :setshow="false" + :inputshow="true" + :roweditshow="roweditshow" + :totle="totle" + @handleSelectionChange="handleSelectionChange" + @itemchange="itemchange" + /> + </div> + </div> + <div class="plantEdit-button text-right margin-right15 margin-top2"> + <el-button type="primary" size="mini" class="form-buttom" :loading="savloading" @click="submitForm" + >淇濆瓨</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +const { plantEdit } = require('@/components/tableContainer/tableHead'); + +import { getDate, GetTimeStr } from '@/utils/date'; +import { getCache, setCache, removeToken } from '@/utils/sessionStorage'; +import { itemSearch } from '@/api/enterchoose'; +import { OutOrderAddOrUpdate, OutOrderGetCode } from '@/api/outbound'; +import { ProductionLineSearch } from '@/api/cass-line'; +import { GetForkliftWorkers } from '@/api/outbound'; + +export default { + data() { + return { + iqnuer: { + outOrderCode: '', //璁″垝鍗曞彿 + orderType: '', //璁″垝绫诲瀷 + totalOutNum: '', //闆朵欢鎬绘暟 + doneNum: '', //宸蹭笅绾挎暟 鏂板浼�0锛岀紪杈戯紝鍘熸暟鎹繑鍥� + userName: getCache('userInfo').userName, //鍒涘缓浜虹紪鍙� 褰撳墠鐧婚檰浜虹姸鎬� + productionLineCode: '', //锛堥鐣欙級浼犵┖ + doTime: '', //鎵ц鏃堕棿 + itemName: '', //闆朵欢缂栧彿浼狅紝鍏跺畠闆朵欢淇℃伅鍙笉浼� + tranLine: '', + CarUserId:'', + productionLineName: '' //鏆傛椂浼犵┖ + }, + remoloading: false, + productionLinelist: [], + forkliftWorkers:[], + orderTypelist: [ + { + label: '鐒婅鍑哄簱', + value: '鐒婅鍑哄簱' + }, + { + label: '绌哄櫒鍏峰嚭搴�', + value: '绌哄櫒鍏峰嚭搴�' + }, + { + label: '璋冧欢鍑哄簱', + value: '璋冧欢鍑哄簱' + }, + { + label: '杩斾慨鍑哄簱', + value: '杩斾慨鍑哄簱' + }, + { + label: '鍒嗘嫞鍑哄簱', + value: '鍒嗘嫞鍑哄簱' + } + ], + tranLinelist: [ + { + label: '2鍙峰彛', + value: '51' + }, + { + label: '3鍙峰彛', + value: '64' + }, + { + label: '4鍙峰彛', + value: '67' + }, + { + label: '5鍙峰彛', + value: '34' + }, + { + label: '6鍙峰彛', + value: '30' + }, + { + label: '7鍙峰彛', + value: '19' + }, + { + label: '8鍙峰彛', + value: '12' + } + ], + Selection: [], //鍕鹃�夋暟鎹� + tableData: [], + roweditshow: false, + savloading: false, + totle: 0, + page: 1 + }; + }, + props: { + rowitem: { + type: Object, + default: () => {} + }, + chooselist: { + type: Array, + default: () => [] + } + }, + components: { TableContainer }, + computed: { + tableHead() { + return plantEdit; + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.iqnuer = this.rowitem; + console.log(this.rowitem); + this.itemSearch(this.rowitem); + } else { + this.iqnuer.doneNum = 0; + this.OutOrderGetCode(); + } + this.ProductionLineSearch({ productionCode: '' }); + this.getForkliftWorkers() + }, + methods: { + getForkliftWorkers(){ + if (this.forkliftWorkers.length===0) { + let params = {roleName:'鍙夎溅姝绘満'}; + GetForkliftWorkers(params).then((response)=>{ + if (response.code===0) { + this.forkliftWorkers = response.data || [] + } + }).catch(()=>{ + console.log('err') + }) + + } + }, + //鑷姩鐢熸垚鍗曞彿 + OutOrderGetCode() { + OutOrderGetCode().then(res => { + this.iqnuer.outOrderCode = res; + }); + }, + //鐝嚎 + ProductionLineSearch(query) { + const { productionCode } = query; + ProductionLineSearch('1&onePageNum=999', { productionCode }).then(res => { + if (res.code == 0) { + this.productionLinelist = res.data; + } + }); + }, + //缂栬緫鏃惰幏鍙栭浂浠跺垪琛ㄦ暟鎹� + itemSearch(e) { + const { itemName } = e; + console.log(e); + itemSearch(this.page, { itemName }).then(res => { + if (res.code == 0) { + this.storgage(res.data); + } + }); + }, + remoteMethod(query) { + if (query !== '') { + this.remoloading = true; + setTimeout(() => { + this.remoloading = false; + this.ProductionLineSearch({ productionCode: query }); + }, 200); + } else { + } + }, + submitForm() { + if (this.iqnuer.itemName) { + if (this.roweditshow) { + this.$message({ + type: 'warning', + message: '璇峰厛淇濆瓨' + }); + } else { + if (this.iqnuer.orderType == '') { + this.$message({ + type: 'warning', + message: '璇烽�夋嫨鍑哄簱绫诲瀷' + }); + } else { + if (this.iqnuer.tranLine == '') { + if (this.iqnuer.orderType == '鐒婅') { + this.iqnuer.tranLine = 999; + } else { + this.iqnuer.tranLine = 997; + } + } + this.tranLinelist.forEach(element => { + if (this.iqnuer.tranLine == element.label) { + this.iqnuer.tranLine = element.value; + } + }); + this.savloading = true; + OutOrderAddOrUpdate(this.iqnuer).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '娣诲姞鎴愬姛' + }); + this.$emit('cancel'); + } else { + this.$message({ + type: 'warning', + message: res.msg + }); + } + this.savloading = false; + }); + } + } + } else { + this.$message({ + type: 'warning', + message: '璇锋坊鍔犻浂浠�' + }); + } + }, + //杩囨护瀛樺偍 + storgage(lists) { + let list = [...lists]; + // list.forEach(element => { + // this.storagelist.push(element); + this.storagelist = lists; + // }); + this.filtration(); + }, + filtration(lists) { + let list = [...this.storagelist]; + let getWeight = ''; + console.log(list); + if (list.length > 0) { + list.forEach(element => { + element.edit = false; + if (JSON.stringify(this.rowitem) != '{}') { + element.doTime = this.rowitem.doTime; + element.maxNum = this.rowitem.totalOutNum; + } else { + element.doTime = getDate() + ' ' + GetTimeStr(0); + + if (element.maxNum) { + this.iqnuer.totalOutNum = element.maxNum; + } else { + this.iqnuer.totalOutNum = 0; + } + } + + // element.itemNum = element.maxNum; + }); + const { doTime, itemName } = list[0]; + this.iqnuer.doTime = doTime; + this.iqnuer.itemName = itemName; + this.tableData = list; + } + }, + //鏁伴噺 + itemchange(e) { + const { maxNum, doTime } = e[0]; + this.roweditshow = !this.roweditshow; + this.iqnuer.totalOutNum = maxNum; + this.iqnuer.doTime = doTime; + // this.storgage(e); + // this.iqnuer.itemNum = 0; + // e.forEach(element => { + // element.edit = false; + // if (element.weight) { + // weight = element.weight; + // } + // if (element.maxNum) { + // this.iqnuer.itemNum += parseInt(element.maxNum); + // } + // element.itemNum = element.maxNum; + // }); + }, + //鍕鹃�塼able + handleSelectionChange(e) { + console.log(e); + this.Selection = e; + }, + //鍒犻櫎 + delclick() { + this.Selection.forEach(element => { + let index = this.tableData.findIndex(item => item.itemName == element.itemName); + let storgindex = this.storagelist.findIndex(item => item.itemName == element.itemName); + this.tableData.splice(index, 1); + this.storagelist.splice(storgindex, 1); + }); + this.iqnuer.itemName = ''; + this.iqnuer.totalOutNum = ''; + } + }, + watch: { + chooselist: { + handler(nvl, ovl) { + this.storgage(nvl); + }, + deep: true + } + } +}; +</script> + +<style lang="scss" scoped> +.plantEdit { + width: 98%; + padding: 1%; + .plantEdit-height { + height: 140px; + } + .plantEdit-tebleheight { + height: calc(100% - 125px); + } + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .plantEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + // width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/outbound/index.vue b/qqjf-Web/src/views/outbound/index.vue new file mode 100644 index 0000000..1ca3ac4 --- /dev/null +++ b/qqjf-Web/src/views/outbound/index.vue @@ -0,0 +1,11 @@ +<template> + <keep-alive> + <router-view /> + </keep-alive> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/outbound/regulator/index.vue b/qqjf-Web/src/views/outbound/regulator/index.vue new file mode 100644 index 0000000..1cb60c6 --- /dev/null +++ b/qqjf-Web/src/views/outbound/regulator/index.vue @@ -0,0 +1,9 @@ +<template> + <router-view /> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/outbound/regulator/plant/index.vue b/qqjf-Web/src/views/outbound/regulator/plant/index.vue new file mode 100644 index 0000000..46426f8 --- /dev/null +++ b/qqjf-Web/src/views/outbound/regulator/plant/index.vue @@ -0,0 +1,321 @@ +<template> + <!-- 鍑哄簱璁″垝 --> + <div id="plant" class="global-content"> + <!-- 绛涢�� --> + <out-inuqer + byfilter="璁″垝鍗曞彿" + :filterList="filterList" + :dele="false" + :tolead="false" + :derive="false" + @refresh="refresh" + @addmodal="addmodal" + @inquer="inquer" + /> + <!-- table --> + <div class="table"> + <table-container + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :naxnumShow="false" + :issuShow="true" + :totle="totle" + :currentPage="page" + :pageSize="pageSize" + @edit="edit" + @del="del" + @issu="issu" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">鍑哄簱璁″垝-{{ title }}</p> + <div class="height" slot="centent"> + <plant-edit + @partclick="partShow = true" + @cancel=" + addmodalShow = false; + refresh(); + " + :chooselist="chooselist" + :rowitem="rowitem" + @addsubmit="addsubmit" + /> + </div> + </modal> + </transition> + <transition name="modal"> + <modal v-if="partShow" :modabg="true" @cancel="partShow = false"> + <p slot="title">闆朵欢閫夋嫨</p> + <div class="height" slot="centent"> + <choose + ref="partChoose" + :wipelist="wipelist" + :inOrderCodeShow="false" + @chooseClick="chooseClick" + @cancel="partShow = false" + @addchoose="addchooseShow = true" + /> + </div> + </modal> + </transition> + <transition name="modal"> + <modal v-if="addchooseShow" :modabg="true" @cancel="addchooseShow = false"> + <p slot="title">闆朵欢鍒楄〃-鏂板</p> + <div class="height" slot="centent"> + <add-choose @addsubmit="addchooseclick" @cancel="addchooseShow = false" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal, Choose, AddChoose } from '@/components/index'; +import outInuqer from '../../components/outinquer'; +import plantEdit from '../../components/plantEdit'; +const { plant } = require('@/components/tableContainer/tableHead'); +import { OutOrderSearch, OutOrderDelete } from '@/api/outbound'; +import { CheckOutOrder, OutOrderAddOrUpdate } from '@/api/outbound'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + partShow: false, + addchooseShow: false, + chooselist: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + wipelist: ['inOrderCode'], + inuqerobg: {}, + filterList: [ + { + label: '璁″垝鍗曞彿', + value: '璁″垝鍗曞彿' + }, + { + label: '鍑哄簱绫诲瀷', + value: '鍑哄簱绫诲瀷' + }, + { + label: '璁㈠崟鐘舵��', + value: '璁㈠崟鐘舵��' + } + ], + tranLinelist: [ + { + tranLine: 68, + title: '1鍙峰彛' + }, + { + tranLine: 51, + title: '2鍙峰彛' + }, + { + tranLine: 64, + title: '3鍙峰彛' + }, + { + tranLine: 67, + title: '4鍙峰彛' + }, + { + tranLine: 34, + title: '5鍙峰彛' + }, + { + tranLine: 30, + title: '6鍙峰彛' + }, + { + tranLine: 19, + title: '7鍙峰彛' + }, + { + tranLine: 12, + title: '8鍙峰彛' + }, + { + tranLine: 999, + title: '999' + }, + { + tranLine: 997, + title: '997' + } + ] + }; + }, + components: { TableContainer, outInuqer, Modal, Choose, AddChoose, plantEdit }, + computed: { + tableHead() { + return plant; + } + }, + mounted() { + this.OutOrderSearch(); + }, + methods: { + //鍒锋柊 + refresh() { + this.OutOrderSearch(); + }, + //鏌ヨ + inquer(e) { + console.log(e); + this.page = 1; + this.inuqerobg = e; + this.OutOrderSearch(); + }, + //鑾峰彇鐢熶骇璁″垝鍒楄〃 + OutOrderSearch() { + this.$Loading(true); + const { 璁″垝鍗曞彿: outOrderCode, 鍑哄簱绫诲瀷: orderType, 璁㈠崟鐘舵��: orderStatus } = this.inuqerobg; + OutOrderSearch(this.page + '&onePageNum=' + this.pageSize, { outOrderCode, orderType, orderStatus }).then(res => { + if (res.code == 0) { + let data = res.data || []; + data.forEach(element => { + this.tranLinelist.forEach(item => { + if (element.tranLine == item.tranLine) { + element.tranLine = item.title; + } + }); + }); + this.tableData = res.data; + this.totle = res.num; + this.$Loading(); + } + }); + }, + CurrentChange(e) { + this.page = e; + this.OutOrderSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.OutOrderSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { outOrderCode } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + OutOrderDelete({ outOrderCode }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛' + }); + this.OutOrderSearch(); + } else { + this.$message({ + type: 'warning', + message: '鍒犻櫎澶辫触' + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //涓嬪彂 + issu(row) { + console.log(row); + this.$confirm('涓嬪彂浠诲姟, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + const objs = { ...row }; + objs.orderStatus = '鎵ц涓�'; + CheckOutOrder(objs).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '涓嬪彂鎴愬姛' + }); + this.OutOrderSearch(); + } else { + this.$message({ + type: 'warning', + message: res.msg + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.UserSearch(); + }, + //闆朵欢鍕鹃�夋暟鎹� + chooseClick(e) { + if (e.length > 0) { + this.chooselist = [...e]; + this.partShow = false; + } else { + this.$message({ + type: 'info', + message: '璇峰嬀閫�' + }); + } + }, + //鏂板闆朵欢鍚� + addchooseclick() { + this.addchooseShow = false; + this.$refs.partChoose.itemSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#plant { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/reportforms/Taskbeat/index.vue b/qqjf-Web/src/views/reportforms/Taskbeat/index.vue new file mode 100644 index 0000000..2507f5b --- /dev/null +++ b/qqjf-Web/src/views/reportforms/Taskbeat/index.vue @@ -0,0 +1,74 @@ +<template> + <!-- 浠诲姟鑺傛媿 --> + <div id="Taskbeat" class="global-content"> + <div class="width flex align-center justify-end"> + <label class="color909399 fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + <el-date-picker + class="margin-right" + size="mini" + value-format="yyyy-MM-dd" + v-model="pickertime" + type="date" + placeholder="閫夋嫨鏃ユ湡" + > + </el-date-picker> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + <el-button type="primary" size="mini" @click="linkto">璺宠浆</el-button> + </div> + <div class="width applyheight overflow margin-top4"> + <task-echart class="width height" :chartData="chartData" :colorList="colorList" :yTotals="yMax" /> + <!-- <div class="width height" ref="taskbeatEcharts"></div> --> + </div> + </div> +</template> + +<script> +import { GetTaskBeatAnalysis } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import TaskEchart from '@/views/Home/components/meterEchart.vue'; +export default { + data() { + return { + pickertime: GetDateStr(-1), + chartData: {}, + yMax:-1, + colorList: ['#0090FF', '#36CE9E', '#FFC005', '#FF515A', '#8B5CFF', '#00CA69'] + }; + }, + components: { TaskEchart }, + computed: {}, + mounted() { + this.GetTaskBeatAnalysis(); + }, + methods: { + inquer() { + this.GetTaskBeatAnalysis(); + }, + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/taskbeat' + }); + window.open(href, '_blank'); + }, + GetTaskBeatAnalysis() { + GetTaskBeatAnalysis({ startTime: this.pickertime }).then(res => { + this.yMax = res.maxNum + let stepTotal = 0; + res.data[1].xdata = res.data[1].xdata.map((mapObj,mapIndex)=>{ + stepTotal = stepTotal + Number(mapObj); + let rateVal = (this.yMax>0?Number((stepTotal/this.yMax*100).toFixed(2)):0) + res.data[0].xdata[mapIndex] = rateVal + return mapObj + }) + this.chartData = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#Taskbeat { +} +</style> diff --git a/qqjf-Web/src/views/reportforms/classified/index.vue b/qqjf-Web/src/views/reportforms/classified/index.vue new file mode 100644 index 0000000..685617b --- /dev/null +++ b/qqjf-Web/src/views/reportforms/classified/index.vue @@ -0,0 +1,59 @@ +<template> + <!-- 鍒嗙被缁熻 --> + <div id="classified" class="global-content"> + <el-button class="absolute right zindex" type="primary" size="mini" @click="linkto">璺宠浆</el-button> + <div class="width height overflow flex"> + <div class="width50 height overflow"> + <classified-echart titleechart="闆朵欢鏉ユ簮鍒嗗竷" :chartData="chartData" class="width height" /> + </div> + <div class="width50 height overflow"> + <classified-echart titleechart="鍣ㄥ叿鏉ユ簮鍒嗗竷" :chartData="applianceData" class="width height" /> + </div> + </div> + </div> +</template> + +<script> +import { GetStockClassificationData } from '@/api/reportforms'; +import classifiedEchart from '@/views/Home/components/sourceEchart.vue'; +export default { + data() { + return { + chartData: {}, + applianceData: {} + }; + }, + components: { classifiedEchart }, + computed: {}, + mounted() { + this.GetStockClassificationData(); + this.applianceDataficationData(); + }, + methods: { + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/classified' + }); + window.open(href, '_blank'); + }, + //闆朵欢鏉ユ簮 + GetStockClassificationData() { + GetStockClassificationData({ type: 1 }).then(res => { + this.chartData = res; + }); + }, + //鍣ㄥ叿鏉ユ簮 + applianceDataficationData() { + GetStockClassificationData({ type: 2 }).then(res => { + this.applianceData = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#classified { +} +</style> diff --git a/qqjf-Web/src/views/reportforms/index.vue b/qqjf-Web/src/views/reportforms/index.vue new file mode 100644 index 0000000..1ca3ac4 --- /dev/null +++ b/qqjf-Web/src/views/reportforms/index.vue @@ -0,0 +1,11 @@ +<template> + <keep-alive> + <router-view /> + </keep-alive> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/reportforms/movablerate/index.vue b/qqjf-Web/src/views/reportforms/movablerate/index.vue new file mode 100644 index 0000000..b8815f8 --- /dev/null +++ b/qqjf-Web/src/views/reportforms/movablerate/index.vue @@ -0,0 +1,132 @@ +<template> + <!-- 璁惧鍙姩鐜� --> + <div id="movablerate" class="global-content"> + <div class="width flex align-center justify-end"> + <label class="color909399 fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + <el-date-picker + class="margin-right" + v-model="pickertime" + size="mini" + type="daterange" + value-format="yyyy-MM-dd" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + <el-button type="primary" size="mini" @click="linkto">璺宠浆</el-button> + </div> + <div class="heightclacimport overflowy-auto"> + <div class="width height48 overflow margin-top10px"> + <movablerate-echart class="width height" echarttitle="鍫嗗灈鏈�" :chartData="chartData" :colorList="colorList" /> + </div> + <div class="width height48 overflow margin-top10px"> + <movablerate-echart class="width height" echarttitle="RGV" :chartData="rgvdata" :colorList="colorList" /> + </div> + </div> + </div> +</template> + +<script> +import { GetDevMovable } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import MovablerateEchart from '@/views/Home/components/movablerateechart.vue'; +export default { + data() { + return { + pickertime: [GetDateStr(-15), GetDateStr(0)], + chartData: {}, + rgvdata: {}, + colorList: [ + '#0090FF', + '#36CE9E', + '#FFC005', + '#FF515A', + '#8B5CFF', + '#00CA69', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFFFBB', + '#99FFFF', + '#CC00CC', + '#CC00CC', + '#C63300', + '#9955FF', + '#66FF66', + '#B5C334', + '#FCCE10', + '#27727B', + '#FE8463', + '#FAD860', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFAA33', + '#CC00CC', + '#FF77FF', + '#C63300', + '#F4E001', + '#66FF66' + ] + }; + }, + components: { MovablerateEchart }, + computed: {}, + mounted() { + this.GetDevMovable(); + this.GetRGVDevMovable(); + }, + methods: { + inquer() { + this.GetDevMovable(); + this.GetRGVDevMovable(); + }, + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/movablerate' + }); + window.open(href, '_blank'); + }, + //鍫嗗灈鏈� + GetDevMovable() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '', + type: 1 + }; + GetDevMovable(objtimes).then(res => { + this.chartData = res; + }); + }, + //RGV + GetRGVDevMovable() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '', + type: 2 + }; + GetDevMovable(objtimes).then(res => { + this.rgvdata = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#movablerate { +} +</style> diff --git a/qqjf-Web/src/views/reportforms/output/index.vue b/qqjf-Web/src/views/reportforms/output/index.vue new file mode 100644 index 0000000..04bdbeb --- /dev/null +++ b/qqjf-Web/src/views/reportforms/output/index.vue @@ -0,0 +1,160 @@ +<template> + <!-- 浠诲姟骞冲潎鏃堕暱--> + <div id="tasktime" class="global-content"> + <div class="width flex align-center justify-end"> + <label class="color909399 fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + + <el-date-picker + size="mini" + v-model="datatime" + type="date" + :clearable="false" + value-format="yyyy-MM-dd" + placeholder="閫夋嫨鏃ユ湡" + > + </el-date-picker> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + <el-button type="primary" size="mini" @click="linkto">璺宠浆</el-button> + </div> + <div class="width height-calc90 overflow margin-top4"> + <line-echarts + titleechart="鍑哄叆搴撲换鍔�" + :linelist="BarItemlinelist" + :colorList="barcolorList" + class="width height" + colors="#fff" + /> + </div> + </div> +</template> + +<script> +import { GetInOutCountByHour } from '@/api/output'; +import { getDate } from '@/utils/date'; +import lineEcharts from '@/views/dataview/components/lineEcharts.vue'; +export default { + data() { + return { + datatime: getDate(), + BarItemlinelist: {}, //鏁伴噺 + concolorList: ['#31c3ea', '#17d8b9', '#2599f0', '#e8bdf3', '#ffc637', '#fc7293', '#8477e9'] + }; + }, + components: { lineEcharts }, + computed: {}, + mounted() { + this.GetInOutCountByHour(); + }, + methods: { + inquer() { + this.GetInOutCountByHour(); + }, + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/output' + }); + window.open(href, '_blank'); + }, + GetInOutCountByHour() { + let time = { + startTime: this.datatime + ' 00:00:00', + endTime: this.datatime + ' 23:59:59' + }; + this.BarItemlinelist = { + legend: ['鍏ュ簱', '鍑哄簱', '鎬昏'], + xdata: [ + '2021-06-14聽00:00:00', + '2021-06-14聽01:00:00', + '2021-06-14聽02:00:00', + '2021-06-14聽03:00:00', + '2021-06-14聽04:00:00', + '2021-06-14聽05:00:00', + '2021-06-14聽06:00:00', + '2021-06-14聽07:00:00', + '2021-06-14聽08:00:00', + '2021-06-14聽09:00:00', + '2021-06-14聽10:00:00', + '2021-06-14聽11:00:00', + '2021-06-14聽12:00:00', + '2021-06-14聽13:00:00', + '2021-06-14聽14:00:00', + '2021-06-14聽15:00:00', + '2021-06-14聽16:00:00', + '2021-06-14聽17:00:00', + '2021-06-14聽18:00:00', + '2021-06-14聽19:00:00', + '2021-06-14聽20:00:00', + '2021-06-14聽21:00:00', + '2021-06-14聽22:00:00', + '2021-06-14聽23:00:00' + ], + data: [ + { + name: '鍏ュ簱', + xdata: [ + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '29', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00' + ] + }, + { + name: '鍑哄簱', + xdata: [ + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00', + '79', + '0.00', + '0.00', + '0.00', + '0.00', + '0.00' + ] + } + ] + }; + GetInOutCountByHour(time).then(res => { + // this.BarItemlinelist = res.data; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#tasktime { +} +</style> diff --git a/qqjf-Web/src/views/reportforms/product/index.vue b/qqjf-Web/src/views/reportforms/product/index.vue new file mode 100644 index 0000000..794c305 --- /dev/null +++ b/qqjf-Web/src/views/reportforms/product/index.vue @@ -0,0 +1,75 @@ +<template> + <!-- 鍦ㄥ埗鍝佽祫閲戝垎鏋� --> + <div id="product" class="global-content"> + <div class="width flex align-center justify-end"> + <label class="color909399 fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + <el-date-picker + class="margin-right" + v-model="pickertime" + size="mini" + type="daterange" + value-format="yyyy-MM-dd" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + <el-button type="primary" size="mini" @click="linkto">璺宠浆</el-button> + </div> + <div class="width applyheight overflow margin-top4"> + <product-echart class="width height" :chartData="chartData" :colorList="colorList" /> + </div> + </div> +</template> + +<script> +import { GetStorageCapitalAnalysis } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import resize from '@/mixins/resize'; +import ProductEchart from '@/views/Home/components/product.vue'; +const echarts = require('echarts'); +export default { + data() { + return { + pickertime: [GetDateStr(-15), GetDateStr(0)], + chartData: {}, + rgvdata: {}, + colorList: ['#9effff', '#9E87FF', '#73DD39', '#73DDFF', '#fe9a', '#fe9a8b', '#F3A43B'] + }; + }, + mixins: [resize], + components: { ProductEchart }, + computed: {}, + mounted() { + this.GetStorageCapitalAnalysis(); + }, + methods: { + inquer() { + this.GetStorageCapitalAnalysis(); + }, + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/product' + }); + window.open(href, '_blank'); + }, + //鍫嗗灈鏈� + GetStorageCapitalAnalysis() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '' + }; + GetStorageCapitalAnalysis(objtimes).then(res => { + this.chartData = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#product { +} +</style> diff --git a/qqjf-Web/src/views/reportforms/rateequipment/index.vue b/qqjf-Web/src/views/reportforms/rateequipment/index.vue new file mode 100644 index 0000000..0306511 --- /dev/null +++ b/qqjf-Web/src/views/reportforms/rateequipment/index.vue @@ -0,0 +1,135 @@ +<template> + <!-- 璁惧鍒╃敤鐜� --> + <div id="rateequipment" class="global-content"> + <div class="width flex align-center justify-end"> + <label class="color909399 fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + <el-date-picker + class="margin-right" + v-model="pickertime" + size="mini" + type="daterange" + value-format="yyyy-MM-dd" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + <el-button type="primary" size="mini" @click="linkto">璺宠浆</el-button> + </div> + <div class="heightclacimport overflowy-auto"> + <div class="width height48 overflow margin-top10px"> + <rateequipment-echart class="width height" echarttitle="鍫嗗灈鏈�" :chartData="chartData" :colorList="colorList" /> + </div> + <div class="width height48 overflow margin-top10px"> + <rateequipment-echart class="width height" echarttitle="RGV" :chartData="rgvdata" :colorList="colorList" /> + </div> + </div> + </div> +</template> + +<script> +import { GetDevAvailability } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import resize from '@/mixins/resize'; +import RateequipmentEchart from '@/views/Home/components/rateequipment.vue'; +const echarts = require('echarts'); +export default { + data() { + return { + pickertime: [GetDateStr(-15), GetDateStr(0)], + chartData: {}, + rgvdata: {}, + colorList: [ + '#0090FF', + '#36CE9E', + '#FFC005', + '#FF515A', + '#8B5CFF', + '#00CA69', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFFFBB', + '#99FFFF', + '#CC00CC', + '#CC00CC', + '#C63300', + '#9955FF', + '#66FF66', + '#B5C334', + '#FCCE10', + '#27727B', + '#FE8463', + '#FAD860', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFAA33', + '#CC00CC', + '#FF77FF', + '#C63300', + '#F4E001', + '#66FF66' + ] + }; + }, + mixins: [resize], + components: { RateequipmentEchart }, + computed: {}, + mounted() { + this.GetDevAvailability(); + this.GetRGVDevMovable(); + }, + methods: { + inquer() { + this.GetDevAvailability(); + this.GetRGVDevMovable(); + }, + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/rateequipment' + }); + window.open(href, '_blank'); + }, + //鍫嗗灈鏈� + GetDevAvailability() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '', + type: 1 + }; + GetDevAvailability(objtimes).then(res => { + this.chartData = res; + }); + }, + //RGV + GetRGVDevMovable() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '', + type: 2 + }; + GetDevAvailability(objtimes).then(res => { + this.rgvdata = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#rateequipment { +} +</style> diff --git a/qqjf-Web/src/views/reportforms/statelibrary/index.vue b/qqjf-Web/src/views/reportforms/statelibrary/index.vue new file mode 100644 index 0000000..f394ec0 --- /dev/null +++ b/qqjf-Web/src/views/reportforms/statelibrary/index.vue @@ -0,0 +1,106 @@ +<template> + <!-- 绔嬪簱鎬昏 --> + <div id="statelibrary" class="global-content"> + <el-button statelibrary="absolute right zindex" type="primary" size="mini" @click="linkto">璺宠浆</el-button> + <h3 class="text-center color636972" style="font-size: 40px">绔嬪簱鎬昏</h3> + <div class="width96 padding10 borderradius margintopbot flex flex-wrap justify-between align-center"> + <div + class="didproject-title width45 flex justify-around align-center borderdashed borderradius overflow pointer" + v-for="(item, index) in titlelist" + :key="index" + :style="'margin-top:' + item.margin" + > + <div class="heigth padding10 overflow"> + <p class="text-center fontsize2rem fontweight600 color409EFF margin-top15" style="font-size: 40px"> + <countTo :startVal="startVal" :endVal="item.mun" :duration="3000"></countTo> + </p> + <p class="fontsiez1rem" style="font-size: 40px">{{ item.titel }}</p> + </div> + </div> + </div> + </div> +</template> + +<script> +import countTo from 'vue-count-to'; +import { GetStorageOverviewData } from '@/api/Didproject'; +export default { + data() { + return { + startVal: 0, + titlelist: [ + { + titel: '搴撲綅鎬绘暟', + mun: 0, + color: '#40C9C6' + }, + { + titel: '鏈夎揣搴撲綅', + mun: 0, + color: '#F4516C' + }, + { + titel: '甯︿欢鍣ㄥ叿', + mun: 0, + color: '#36A3F7', + margin: '1%' + }, + { + titel: '绌哄櫒鍏锋暟', + mun: 0, + color: '#34BFA3', + margin: '1%' + } + // { + // titel: '鍒朵欢鎬绘暟', + // mun: 1, + // color: '#ffc637' + // } + ], + cleartime: null + }; + }, + components: { countTo }, + computed: {}, + mounted() { + this.GetStorageOverviewData(); + this.cleartime = setInterval(() => { + this.GetStorageOverviewData(); + }, 60000); + }, + methods: { + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/statelibrary' + }); + window.open(href, '_blank'); + }, + //绔嬪簱鎬昏鍜屽埗浠舵�昏 + GetStorageOverviewData() { + // no 缂栧彿锛泃itle 鏍囬锛泇alue 鏁伴噺 + GetStorageOverviewData().then(res => { + let data = res.data || []; + this.titlelist.forEach(item => { + data.forEach(element => { + if (item.titel == element.titel) { + item.mun = element.value; + } + }); + }); + }); + } + }, + beforeDestroy() { + if (this.cleartime) { + clearInterval(this.cleartime); + this.cleartime = null; + } + } +}; +</script> + +<style lang="scss" scoped> +#statelibrary { +} +</style> diff --git a/qqjf-Web/src/views/reportforms/statistics/components/eltablecolumn.vue b/qqjf-Web/src/views/reportforms/statistics/components/eltablecolumn.vue new file mode 100644 index 0000000..90c354a --- /dev/null +++ b/qqjf-Web/src/views/reportforms/statistics/components/eltablecolumn.vue @@ -0,0 +1,30 @@ +<template> + <div class="eltablecolumn"> + <template v-if="!itemcolumn.children"> + <el-table-column + align="center" + :prop="itemcolumn.columnName" + :label="itemcolumn.columnDescription" + :width="itemcolumn.width ? itemcolumn.width : ''" + > + </el-table-column> + </template> + <el-table-column + v-else + align="center" + :label="itemcolumn.columnDescription" + :width="itemcolumn.width ? itemcolumn.width : ''" + > + <eltablecolumn v-for="(item, index) in itemcolumn.children" :itemcolumn="item" :key="index" /> + </el-table-column> + </div> +</template> + +<script> +export default { + name: 'eltablecolumn', + props: ['itemcolumn'] +}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/reportforms/statistics/components/statisticsinquer.vue b/qqjf-Web/src/views/reportforms/statistics/components/statisticsinquer.vue new file mode 100644 index 0000000..14efb7c --- /dev/null +++ b/qqjf-Web/src/views/reportforms/statistics/components/statisticsinquer.vue @@ -0,0 +1,273 @@ +<template> + <div ref="serchinquer" class="flex align-center padding10 justify-between"> + <div v-if="buttonShow" class="width25" :style="buttonWidth ? 'width:' + buttonWidth + '%' : ''"> + <el-button-group> + <template v-for="(item, index) in elbuttonlist"> + <el-button :key="index" type="primary" size="mini" icon="el-icon-plus" @click="$emit(item.value)">{{ + item.label + }}</el-button> + </template> + </el-button-group> + <el-button-group class="margin-left"> + <div class="flex"> + <el-upload + class="upload-demo" + ref="upload" + action="" + accept=".xls,.xlsx" + name="files" + :show-file-list="false" + :http-request="httprequest" + > + <el-button v-if="imexcel" style="margin-left: 10px" icon="el-icon-upload2" size="mini" type="success" + >瀵煎叆</el-button + > + </el-upload> + + <el-button + v-if="derive" + style="margin-left: 10px" + type="primary" + size="mini" + icon="el-icon-download" + @click="$emit('derive')" + >瀵煎嚭</el-button + > + <el-button + v-if="templateShow" + style="margin-left: 10px" + type="primary" + size="mini" + icon="el-icon-download" + @click="$emit('download')" + >涓嬭浇妯℃澘</el-button + > + </div> + </el-button-group> + </div> + <div + id="topinquer" + v-if="inquerShow" + class="width80 flex align-start" + :style="inquerWdith ? 'width:' + inquerWdith + '%' : ''" + > + <div class="width96 flex margin-right" :class="flexwrap ? 'justify-start flex-wrap' : 'justify-end'"> + <template v-for="(item, index) in inuqerlist"> + <div + :key="index + 'input'" + class="width25 flex align-center" + :class="item.class" + :style="item.boxWdith ? 'width:' + item.boxWdith + '%' : ''" + > + <label class="textalign margin-right5px" :style="item.label ? 'width:' + fixWidth(item.label) + 'px' : ''"> + {{ item.label ? item.label + ':' : '' }}</label + > + + <el-date-picker + v-if="item.type == 'pickerOptions'" + :style="'width:calc(100% - ' + fixWidth(item.label) + 'px)'" + v-model="containinquer[item.prop]" + size="mini" + type="datetimerange" + :clearable="item.clearable" + value-format="yyyy-MM-dd HH:mm:ss" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-date-picker + v-if="item.type == 'date'" + :style="'width:calc(100% - ' + fixWidth(item.label) + 'px)'" + v-model="containinquer[item.prop]" + type="date" + size="mini" + :clearable="item.clearable" + value-format="yyyy-MM-dd" + placeholder="閫夋嫨鏃ユ湡" + > + </el-date-picker> + <el-input + v-if="item.type == 'text'" + :style="item.label ? 'width:calc(100% - ' + fixWidth(item.label) + 'px)' : ''" + size="mini" + :placeholder="item.placeholder ? item.placeholder : '璇疯緭鍏�' + item.label" + @keyup.enter.native="focussearch" + v-model="containinquer[item.prop]" + :clearable="item.clearable" + ></el-input> + <el-select + v-if="item.type == 'select'" + :style="'width:calc(100% - ' + fixWidth(item.label) + 'px)'" + v-model="containinquer[item.prop]" + size="mini" + :clearable="item.clearable" + :multiple="item.multiple" + :filterable="item.filterable" + :collapse-tags="item.collapseTags" + :placeholder="'璇烽�夋嫨' + item.label" + @change="$emit('selectchange', containinquer[item.prop])" + > + <el-option + v-for="(selectItem, selectIndex) in item.list" + :key="selectIndex + 'selet'" + :label="selectItem.label" + :value="selectItem.value" + > + </el-option> + </el-select> + </div> + </template> + </div> + + <div class="flex"> + <el-button v-if="inquerbuttonshow" type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + </div> + </div> +</template> + +<script> +import { throttle } from '@/utils/throttle'; +import { GetDateStr } from '@/utils/date'; +export default { + data() { + return { + iqnuer: { + startend: [GetDateStr(-15), GetDateStr(0)] + }, + materia_name: '', + agvtypecodelist: [] + }; + }, + props: { + addshow: { + type: Boolean, + default: false + }, + delshow: { + type: Boolean, + default: false + }, + templateShow: { + type: Boolean, + default: false + }, + flexwrap: { + type: Boolean, + default: false + }, + inquerShow: { + type: Boolean, + default: true + }, + inquerbuttonshow: { + type: Boolean, + default: true + }, + imexcel: { + type: Boolean, + default: false + }, + derive: { + type: Boolean, + default: false + }, + inuqerlist: { + type: Array, + default: () => [] + }, + elbuttonlist: { + type: Array, + default: () => [] + }, + containinquer: { + type: Object, + require: true + }, + inquerWdith: { + type: String, + require: true + }, + buttonWidth: { + type: String, + require: true + }, + + boxWdith: { + type: String, + require: true + }, + buttonShow: { + type: Boolean, + default: false + } + }, + mounted() {}, + methods: { + fixWidth(val) { + let length = 0; + if (val.indexOf('(') != -1) { + length = val.length * 16 + 10; + } else { + length = val.length * 20; + } + if (length < 100) { + length = 80; + } + return length; + }, + focussearch: throttle(function () { + this.emits(); + }, 3000), + + inquer: throttle(function () { + this.emits(); + }, 1500), + + emits() { + this.$emit('inquer'); + }, + + reset() { + // this.containinquer = {}; + // this.inquer(); + }, + //瀵煎叆 + httprequest(file) { + this.$emit('importfile', file); + }, + //鐗╂枡绛涢�� + formquerySearchAsync(queryString, cb) { + let index = queryString.split(''); + if (queryString && index.length > 1) { + let keywords = JSON.stringify({ keywords: queryString }); + } + }, + elautocom(el) { + this.iqnuer.material_code = el.label; + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +#topinquer { + ::v-deep .el-select { + width: 90%; + } + ::v-deep .el-select > .el-input { + width: 100%; + } + ::v-deep .el-input { + width: 100%; + } + ::v-deep .el-date-editor--daterange.el-input, + .el-date-editor--daterange.el-input__inner, + .el-date-editor--timerange.el-input, + .el-date-editor--timerange.el-input__inner { + width: 70%; + } +} +</style> diff --git a/qqjf-Web/src/views/reportforms/statistics/components/statisticstable.vue b/qqjf-Web/src/views/reportforms/statistics/components/statisticstable.vue new file mode 100644 index 0000000..73c66d4 --- /dev/null +++ b/qqjf-Web/src/views/reportforms/statistics/components/statisticstable.vue @@ -0,0 +1,121 @@ +<template> + <div id="statisticstable" class="scrollCss" :key="number"> + <el-table + :data="tableData" + class="borderR8" + element-loading-text="鎷煎懡鍔犺浇涓�" + element-loading-spinner="el-icon-loading" + highlight-current-row + stripe + height="100%" + style="height: 100% !important" + :header-cell-style="headercellstyle" + > + <eltablecolumn v-for="(item, index) in containHead" :itemcolumn="item" :key="index" /> + </el-table> + </div> +</template> + +<script> +import eltablecolumn from './eltablecolumn.vue'; +export default { + data() { + return { + number: Math.random() * 100 + }; + }, + props: { + containHead: { + type: Array, + default: () => [] + }, + tableData: { + type: Array, + default: () => [] + } + }, + components: { eltablecolumn }, + methods: { + headercellstyle({ row, column, rowIndex, columnIndex }) { + // if (rowIndex == 0 && columnIndex == 1) { + // return 'color:red'; + // } + } + } +}; +</script> +<style lang="scss" scoped> +#statisticstable { + position: relative; + z-index: 6; + height: 100%; + .widthscope { + width: 200px; + } + .elbuttonsize { + font-size: 0.8rem; + } + .set { + color: #0465a8; + cursor: pointer; + display: inline-block; + margin-left: 20px; + } + .modal-title { + background-color: #f0f9eb; + color: #67c23a; + font-size: 14px; + padding: 4px 10px; + border-radius: 4px; + } + .modal-item { + border: 1px solid #f8f8f8; + padding: 4px 10px; + background-color: #f3f3f3; + font-size: 14px; + } + .draggable-main { + margin: 0; + padding: 0; + cursor: pointer; + .drag { + border: 1px dotted rgb(44, 104, 163); + background-color: #409eff; + } + + .chosen { + background-color: #409eff; + color: #fff; + } + + .ghost { + background-color: #409eff; + } + } + ::v-deep { + .el-table__fixed-right { + right: 1px !important; + } + .el-table--border td { + // border-right: none !important; + } + } + ::v-deep .el-table { + // height: calc(100% - 35px) !important; + } + + ::v-deep .el-button + .el-button { + margin-left: 5px; + } + ::v-deep .el-table__empty-text { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + ::v-deep .el-table td, + .el-table th { + padding: 4px 0; + } +} +</style> diff --git a/qqjf-Web/src/views/reportforms/statistics/index.vue b/qqjf-Web/src/views/reportforms/statistics/index.vue new file mode 100644 index 0000000..0d4df2a --- /dev/null +++ b/qqjf-Web/src/views/reportforms/statistics/index.vue @@ -0,0 +1,167 @@ +<template> + <!-- 鍑哄叆搴撶粺璁� --> + <div id="statistics" class="global-content"> + <!-- 绛涢�� --> + <statistics-inquer + ref="searchinquer" + :inquerbuttonshow="true" + inquerWdith="100" + :inuqerlist="inuqerlist" + :containinquer.sync="containinquer" + @inquer="inquer" + /> + <!-- table width height-calc padding-right padding-left overflow--> + <div class="width height-calc55 overflow"> + <statistics-table :containHead="containHead" :tableData="tableData" /> + </div> + </div> +</template> + +<script> +import StatisticsInquer from './components/statisticsinquer.vue'; +import StatisticsTable from './components/statisticstable.vue'; +import { GetDateStr } from '@/utils/date'; +import { statistics } from '@/components/tableContainer/tableHead'; +import { GetEnterNum } from '@/api/statistics'; +import itemVue from '@/Layout/components/Sidebar/item.vue'; +export default { + data() { + return { + title: '', + tableData: [], + containinquer: { + hasFinished: 1, + startend: GetDateStr(0) + }, + inuqerlist: [ + { + label: '鏃ユ湡', + type: 'date', + prop: 'startend', + class: 'margin-top5px', + clearable: false, + boxWdith: 20 + } + ], + comparison: [ + { + value: 47, + table: 'in_one_mark' + }, + { + value: 48, + table: 'in_two_mark' + }, + { + value: 61, + table: 'in_three_mark' + }, + { + value: 65, + table: 'in_four_mark' + }, + { + value: 32, + table: 'in_five_mark' + }, + + { + value: 15, + table: 'in_seven_mark' + }, + + { + value: 68, + table: 'out_one_mark' + }, + { + value: 51, + table: 'out_two_mark' + }, + { + value: 64, + table: 'out_three_mark' + }, + { + value: 67, + table: 'out_four_mark' + }, + { + value: 34, + table: 'out_five_mark' + }, + { + value: 30, + table: 'out_six_mark' + }, + { + value: 19, + table: 'out_seven_mark' + }, + { + value: 12, + table: 'out_eight_mark' + } + ] + }; + }, + components: { StatisticsInquer, StatisticsTable }, + computed: { + containHead() { + return statistics; + } + }, + mounted() { + this.GetEnterNum(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.page = 1; + this.GetEnterNum(); + }, + GetEnterNum() { + const { hasFinished, startend } = this.containinquer; + this.tableData = []; + this.$Loading(true); + GetEnterNum({ hasFinished, createTimeStart: startend + ' 00:00:00', createTimeEnd: startend + ' 23:59:59' }).then( + res => { + res.forEach((element, index) => { + let outEnterVsNumList = element.data.outEnterVsNumList; + let inEnterVsNumList = element.data.inEnterVsNumList; + let arr = outEnterVsNumList.concat(inEnterVsNumList); + this.tableData.push({ + time: element.time, + allNum: element.data.allNum, + outExchange: element.data.outExchange, + inExchange: element.data.inExchange, + outNum: element.data.outNum, + inNum: element.data.inNum + }); + arr.forEach(item => { + this.comparison.forEach(vl => { + if (vl.value == item.enter) { + item[vl.table] = item.num; + this.tableData[index][vl.table] = item.num; + } + }); + }); + }); + this.$Loading(); + } + ); + } + } +}; +</script> + +<style lang="scss" scoped> +#statistics { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/reportforms/tasktime/index.vue b/qqjf-Web/src/views/reportforms/tasktime/index.vue new file mode 100644 index 0000000..e739aeb --- /dev/null +++ b/qqjf-Web/src/views/reportforms/tasktime/index.vue @@ -0,0 +1,111 @@ +<template> + <!-- 浠诲姟骞冲潎鏃堕暱--> + <div id="tasktime" class="global-content"> + <div class="width flex align-center justify-end"> + <label class="color909399 fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + + <el-date-picker + class="margin-right" + v-model="pickertime" + size="mini" + type="daterange" + value-format="yyyy-MM-dd" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + <el-button type="primary" size="mini" @click="linkto">璺宠浆</el-button> + </div> + <div class="width height-calc90 overflow margin-top4"> + <tasktime-echart class="width height" :chartData="chartData" :colorList="colorList" /> + </div> + </div> +</template> + +<script> +import { GetInOutAverageTime } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import TasktimeEchart from '@/views/Home/components/tasktimeecharts.vue'; +export default { + data() { + return { + pickertime: [GetDateStr(-15), GetDateStr(0)], + chartData: {}, + colorList: [ + '#0090FF', + '#36CE9E', + '#FFC005', + '#FF515A', + '#8B5CFF', + '#00CA69', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFFFBB', + '#99FFFF', + '#CC00CC', + '#CC00CC', + '#C63300', + '#9955FF', + '#66FF66', + '#B5C334', + '#FCCE10', + '#27727B', + '#FE8463', + '#FAD860', + '#F3A43B', + '#D7504B', + '#C6E579', + '#F0805A', + '#26C0C0', + '#660077', + '#FFCCCC', + '#550088', + '#FFAA33', + '#CC00CC', + '#FF77FF', + '#C63300', + '#F4E001', + '#66FF66' + ] + }; + }, + components: { TasktimeEchart }, + computed: {}, + mounted() { + this.GetInOutAverageTime(); + }, + methods: { + inquer() { + this.GetInOutAverageTime(); + }, + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/tasktime' + }); + window.open(href, '_blank'); + }, + GetInOutAverageTime() { + console.log(this.pickertime); + let startTime = this.pickertime ? this.pickertime[0] : ''; + let endTime = this.pickertime ? this.pickertime[1] : ''; + GetInOutAverageTime({ startTime: startTime, endTime: endTime }).then(res => { + this.chartData = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#tasktime { +} +</style> diff --git a/qqjf-Web/src/views/reportforms/turnover/index.vue b/qqjf-Web/src/views/reportforms/turnover/index.vue new file mode 100644 index 0000000..6c8a935 --- /dev/null +++ b/qqjf-Web/src/views/reportforms/turnover/index.vue @@ -0,0 +1,144 @@ +<template> + <!-- 鍒朵欢鍛ㄨ浆 --> + <div id="turnover" class="global-content"> + <div class="width flex align-center justify-end"> + <div class="flex width12 align-center margin-right15 justify-end"> + <label class="color909399 fontsiez1rem">骞达細</label> + <el-date-picker v-model="intimers.year" size="mini" value-format="yyyy" type="year" placeholder="閫夋嫨骞�"> + </el-date-picker> + </div> + <div class="flex width20 margin-right15 align-center justify-end"> + <label class="color909399 fontsiez1rem">鏈堬細</label> + <el-date-picker + v-model="intimers.month" + type="monthrange" + size="mini" + value-format="MM" + format="MM" + range-separator="鑷�" + start-placeholder="寮�濮嬫湀浠�" + end-placeholder="缁撴潫鏈堜唤" + > + </el-date-picker> + </div> + <div class="flex width15 align-center margin-right15 justify-end"> + <label class="color909399 width40 fontsiez1rem">寮�濮嬪懆锛�</label> + <el-select style="width: 55%" v-model="intimers.stWeek" size="mini" clearable placeholder="璇烽�夋嫨鍛�"> + <el-option + v-for="(item, index) in startweeklist" + :key="index + 'startweek'" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </div> + <div class="flex width15 align-center margin-right15 justify-end"> + <label class="color909399 width40 fontsiez1rem">缁撴潫鍛細</label> + <el-select style="width: 55%" v-model="intimers.edWeek" size="mini" clearable placeholder="璇烽�夋嫨鍛�"> + <el-option + v-for="(item, index) in endweeklist" + :key="index + 'endtweek'" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </div> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + <el-button type="primary" size="mini" @click="linkto">璺宠浆</el-button> + </div> + <div class="width height-calc90 overflow margin-top4"> + <turnover-echart class="width height" :chartData="chartData" :colorList="colorList" /> + <!-- <div class="width height" ref="taskbeatEcharts"></div> --> + </div> + </div> +</template> + +<script> +import { GetPartTurnover } from '@/api/reportforms'; +import TurnoverEchart from '@/views/Home/components/turnoverEchart.vue'; +export default { + data() { + return { + intimers: { + year: '', + month: null, + stWeek: '', + edWeek: '' + }, + startweeklist: [ + { + label: '绗竴鍛�', + value: 1 + }, + { + label: '绗簩鍛�', + value: 2 + }, + { + label: '绗笁鍛�', + value: 3 + }, + { + label: '绗洓鍛�', + value: 4 + } + ], + endweeklist: [ + { + label: '绗竴鍛�', + value: 1 + }, + { + label: '绗簩鍛�', + value: 2 + }, + { + label: '绗笁鍛�', + value: 3 + }, + { + label: '绗洓鍛�', + value: 4 + } + ], + chartData: {}, + colorList: ['#0090FF', '#36CE9E', '#FFC005', '#FF515A', '#8B5CFF', '#00CA69'] + }; + }, + components: { TurnoverEchart }, + computed: {}, + mounted() { + this.GetPartTurnover(); + }, + methods: { + inquer() { + this.GetPartTurnover(); + }, + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/turnover' + }); + window.open(href, '_blank'); + }, + GetPartTurnover() { + const { year, stWeek, edWeek } = this.intimers; + let stMonth = this.intimers.month ? this.intimers.month[0] : ''; + let edMonth = this.intimers.month ? this.intimers.month[1] : ''; + GetPartTurnover({ year, stWeek, edWeek, stMonth: stMonth, edMonth: edMonth }).then(res => { + this.chartData = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#turnover { + ::v-deep .el-input__inner { + // width: 80%; + } +} +</style> diff --git a/qqjf-Web/src/views/reportforms/warehouse/index.vue b/qqjf-Web/src/views/reportforms/warehouse/index.vue new file mode 100644 index 0000000..7ffd92b --- /dev/null +++ b/qqjf-Web/src/views/reportforms/warehouse/index.vue @@ -0,0 +1,72 @@ +<template> + <!-- 璐ф牸鍒╃敤鐜� --> + <div id="warehouse" class="global-content"> + <div class="width flex align-center justify-end"> + <label class="color909399 fontsiez1rem">鏌ヨ鏃ユ湡锛�</label> + <el-date-picker + class="margin-right" + v-model="pickertime" + size="mini" + type="daterange" + value-format="yyyy-MM-dd" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + <el-button type="primary" size="mini" @click="linkto">璺宠浆</el-button> + </div> + <div class="width applyheight overflow margin-top4"> + <warehouse-echart class="width height" :chartData="chartData" :colorList="colorList" /> + <!-- <div class="width height" ref="taskbeatEcharts"></div> --> + </div> + </div> +</template> + +<script> +import { GetStorageVailability } from '@/api/reportforms'; +import { GetDateStr } from '@/utils/date'; +import WarehouseEchart from '@/views/Home/components/warehouseechart.vue'; + +export default { + data() { + return { + pickertime: [GetDateStr(-15), GetDateStr(0)], + chartData: {}, + colorList: ['#0090FF', '#36CE9E', '#FFC005', '#FF515A', '#8B5CFF', '#00CA69'] + }; + }, + components: { WarehouseEchart }, + computed: {}, + mounted() { + this.GetStorageVailability(); + }, + methods: { + inquer() { + this.GetStorageVailability(); + }, + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/warehouse' + }); + window.open(href, '_blank'); + }, + GetStorageVailability() { + let objtimes = { + startTime: this.pickertime ? this.pickertime[0] : '', + endTime: this.pickertime ? this.pickertime[1] : '' + }; + GetStorageVailability(objtimes).then(res => { + this.chartData = res; + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#warehouse { +} +</style> diff --git a/qqjf-Web/src/views/reportforms/workpiece/index.vue b/qqjf-Web/src/views/reportforms/workpiece/index.vue new file mode 100644 index 0000000..0e80e5d --- /dev/null +++ b/qqjf-Web/src/views/reportforms/workpiece/index.vue @@ -0,0 +1,130 @@ +<template> + <!-- 鍒朵欢鎬昏 --> + <div id="workpiece" class="global-content"> + <el-button statelibrary="absolute right zindex" type="primary" size="mini" @click="linkto">璺宠浆</el-button> + <h3 class="text-center color636972" style="font-size: 40px">鍒朵欢鎬昏</h3> + <div class="width96 padding10 borderradius margintopbot flex flex-wrap justify-between align-center"> + <div + class="didproject-title width45 flex justify-around align-center borderdashed borderradius overflow pointer" + v-for="(item, index) in titlelist" + :key="index" + :style="'margin-top:' + item.margin" + > + <div class="heigth padding10 overflow"> + <p class="text-center fontsize2rem fontweight600 color409EFF margin-top15" style="font-size: 40px"> + <countTo :startVal="startVal" :endVal="item.mun" :duration="3000"></countTo> + </p> + <p class="fontsiez1rem" style="font-size: 40px">{{ item.titel }}</p> + </div> + </div> + </div> + </div> +</template> + +<script> +import countTo from 'vue-count-to'; +import { GetHomeNumData } from '@/api/Didproject'; +import { GetStorageOverviewData } from '@/api/Didproject'; +import { ItemStorage } from '@/api/materials'; +export default { + data() { + return { + startVal: 0, + titlelist: [ + { + titel: '鍒朵欢鎬绘暟', + name: '鍒朵欢鎬绘暟', + mun: 0, + color: '#ffc637' + }, + { + titel: '鍒朵欢绉嶇被', + name: '鍒朵欢绉嶇被', + mun: 0, + color: '#40C9C6' + }, + { + titel: '浠婃棩鍏ュ簱', + name: '浠婃棩鍏ュ簱闆朵欢鏁�', + mun: 0, + color: '#F4516C', + margin: '1%' + }, + { + titel: '浠婃棩鍑哄簱', + name: '浠婃棩鍑哄簱闆朵欢鏁�', + mun: 0, + color: '#36A3F7', + margin: '1%' + } + ], + cleartime: null, + list: [] + }; + }, + components: { countTo }, + computed: {}, + mounted() { + this.GetHomeNumData(); + this.cleartime = setInterval(() => { + this.GetHomeNumData(); + }, 60000); + }, + methods: { + //璺宠浆 + linkto() { + const { href } = this.$router.resolve({ + path: '/workpiece' + }); + window.open(href, '_blank'); + }, + //浠婃棩鍑哄叆搴撴暟鎹� + GetHomeNumData() { + // no 缂栧彿锛泃itle 鏍囬锛泇alue 鏁伴噺 + GetHomeNumData().then(res => { + let data = res.data || []; + this.list = data; + this.GetStorageOverviewData(data); + }); + }, + GetStorageOverviewData() { + GetStorageOverviewData().then(res => { + let data = res.data || []; + this.list = this.list.concat(data); + console.log(this.list); + this.ItemStorage(); + }); + }, + ItemStorage() { + ItemStorage('1&onePageNum=1').then(res => { + if (res.code == 0) { + this.list.push({ + titel: '鍒朵欢绉嶇被', + name: '鍒朵欢绉嶇被', + value: res.num + }); + this.titlelist.forEach(item => { + this.list.forEach(element => { + if (item.name == element.titel) { + item.mun = element.value; + } + }); + }); + } + console.log(this.list); + }); + } + }, + beforeDestroy() { + if (this.cleartime) { + clearInterval(this.cleartime); + this.cleartime = null; + } + } +}; +</script> + +<style lang="scss" scoped> +#workpiece { +} +</style> diff --git a/qqjf-Web/src/views/statistics/index.vue b/qqjf-Web/src/views/statistics/index.vue new file mode 100644 index 0000000..1cb60c6 --- /dev/null +++ b/qqjf-Web/src/views/statistics/index.vue @@ -0,0 +1,9 @@ +<template> + <router-view /> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/storage/base/index.vue b/qqjf-Web/src/views/storage/base/index.vue new file mode 100644 index 0000000..1cb60c6 --- /dev/null +++ b/qqjf-Web/src/views/storage/base/index.vue @@ -0,0 +1,9 @@ +<template> + <router-view /> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/storage/base/inventory/index.vue b/qqjf-Web/src/views/storage/base/inventory/index.vue new file mode 100644 index 0000000..3d9ea7c --- /dev/null +++ b/qqjf-Web/src/views/storage/base/inventory/index.vue @@ -0,0 +1,232 @@ +<template> + <!-- 搴撳瓨绠$悊--> + <div id="inventory" class="global-content"> + <!-- 绛涢�� :iscontainer="true" + @iscontainer="iscontainer"--> + <storage-inquer + byfilter="搴撲綅鍙�" + :groupshow="false" + :dele="false" + :filterList="filterList" + :derive="true" + :isBadshow="true" + :stStatusshow="true" + :taskTypeshow="true" + :isEmptyContainershow="true" + @derive="derive" + @addmodal="addmodal" + @inquer="inquer" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="false" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">搴撳瓨绠$悊-{{ title }}</p> + <div class="height" slot="centent"> + <inventory-edit @cancel="addmodalShow = false" :rowitem="rowitem" @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import StorageInquer from '../../components/storage-inquer'; +import inventoryEdit from '../../components/inventoryEdit'; +import { exportTableList } from '@/utils/excel'; +import { getymdhms } from '@/utils/date'; +const { inventory } = require('@/components/tableContainer/tableHead'); +import { PlaceVsContainer, PlaceVsContainerDelete } from '@/api/inventory'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + pageNum: 0, + inuqerobg: {}, + filterList: [ + { + value: '搴撲綅鍙�', + label: '搴撲綅鍙�' + }, + { + value: '鍣ㄥ叿缂栧彿', + label: '鍣ㄥ叿缂栧彿' + }, + { + value: '闆朵欢缂栧彿', + label: '闆朵欢缂栧彿' + } + ] + }; + }, + components: { TableContainer, StorageInquer, Modal, inventoryEdit }, + computed: { + tableHead() { + return inventory; + } + }, + mounted() { + this.PlaceVsContainer(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.page = 1; + this.PlaceVsContainer(); + }, + //鎼滅储鐢ㄦ埛 + PlaceVsContainer() { + this.$Loading(true); + const { + 搴撲綅鍙�: place, + 鍣ㄥ叿缂栧彿: containerName, + 闆朵欢缂栧彿: itemName, + isEmptyContainer, + isBad, + stStatus, + taskType + } = this.inuqerobg; + PlaceVsContainer(this.page + '&onePageNum=' + this.pageSize, { + place, + containerName, + itemName, + isBad, + stStatus, + isEmptyContainer, + taskType + }).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + this.pageNum = res.pageNum; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.PlaceVsContainer(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.PlaceVsContainer(); + }, + //瀵煎嚭 + derive() { + let tHeader = []; + let filterVal = []; + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + this.$Loading(true); + const { + 搴撲綅鍙�: place, + 鍣ㄥ叿缂栧彿: containerName, + 闆朵欢鍚嶇О: itemName, + isEmptyContainer, + isBad, + stStatus, + taskType + } = this.inuqerobg; + PlaceVsContainer('1&onePageNum=99999999', { + place, + containerName, + itemName, + isBad, + stStatus, + isEmptyContainer, + taskType + }).then(res => { + if (res.code == 0) { + exportTableList(tHeader, filterVal, res.data, '搴撳瓨绠$悊' + getymdhms()); + } + + this.$Loading(); + }); + }, + //缂栬緫 + edit(row) { + this.rowitem = { ...row }; + this.addmodalShow = true; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { place } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + PlaceVsContainerDelete({ place }).then(res => { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.PlaceVsContainer(); + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.PlaceVsContainer(); + } + } +}; +</script> + +<style lang="scss" scoped> +#inventory { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/base/materials/index.vue b/qqjf-Web/src/views/storage/base/materials/index.vue new file mode 100644 index 0000000..1e91eda --- /dev/null +++ b/qqjf-Web/src/views/storage/base/materials/index.vue @@ -0,0 +1,170 @@ +<template> + <!-- 鐗╂枡搴撳瓨--> + <div id="materials" class="global-content"> + <!-- 绛涢�� --> + <storage-inquer + byfilter="闆朵欢缂栧彿" + :groupshow="false" + :dele="false" + :derive="true" + :refresh="true" + :isOverDayshow="true" + :loading="loading" + :filterList="filterList" + @inquer="inquer" + @refresh="refresh" + @derive="derive" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :operation="false" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + @del="del" + /> + </div> + </div> +</template> + +<script> +import { TableContainer } from '@/components/index'; +import StorageInquer from '../../components/storage-inquer'; +const { materials } = require('@/components/tableContainer/tableHead'); +import { ItemStorage } from '@/api/materials'; +import { exportTableList } from '@/utils/excel'; +import { getymdhms } from '@/utils/date'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + pageNum: 0, + loading: false, + inuqerobg: {}, + filterList: [ + { + value: '闆朵欢缂栧彿', + label: '闆朵欢缂栧彿' + }, + { + value: '闆朵欢鍚嶇О', + label: '闆朵欢鍚嶇О' + }, + { + value: '浜х嚎', + label: '浜х嚎' + }, + { + value: '搴撳悕', + label: '搴撳悕' + } + ] + }; + }, + components: { TableContainer, StorageInquer }, + computed: { + tableHead() { + return materials; + } + }, + mounted() { + this.ItemStorage(); + }, + methods: { + //鍒锋柊 + refresh() { + this.loading = true; + this.ItemStorage(); + }, + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.page = 1; + this.ItemStorage(); + }, + //鎼滅储鐢ㄦ埛 + ItemStorage() { + this.$Loading(true); + const { 闆朵欢缂栧彿: itemName, 闆朵欢鍚嶇О: itemDes, 浜х嚎: createLine, 搴撳悕: storageName, isOverDay } = this.inuqerobg; + ItemStorage(this.page + '&onePageNum=' + this.pageSize, { + itemDes, + createLine, + storageName, + itemName, + isOverDay + }).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + this.pageNum = res.pageNum; + } + this.$Loading(); + this.loading = false; + }); + }, + //瀵煎嚭 + derive() { + let tHeader = []; + let filterVal = []; + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + this.$Loading(true); + const { 闆朵欢缂栧彿: itemName, 闆朵欢鍚嶇О: itemDes, 浜х嚎: createLine, 搴撳悕: storageName, isOverDay } = this.inuqerobg; + ItemStorage('1&onePageNum=99999999', { + itemDes, + createLine, + storageName, + itemName, + isOverDay + }).then(res => { + if (res.code == 0) { + exportTableList(tHeader, filterVal, res.data, '鐗╂枡搴撳瓨' + getymdhms()); + } + this.$Loading(); + }); + }, + //鍒嗛〉 + CurrentChange(e) { + console.log(e); + this.page = e; + this.ItemStorage(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.ItemStorage(); + }, + //鍒犻櫎 + del(row) { + console.log(row); + } + } +}; +</script> + +<style lang="scss" scoped> +#materials { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/base/viewdata/index.vue b/qqjf-Web/src/views/storage/base/viewdata/index.vue new file mode 100644 index 0000000..48f8bfc --- /dev/null +++ b/qqjf-Web/src/views/storage/base/viewdata/index.vue @@ -0,0 +1,233 @@ +<template> + <!-- 搴撳瓨绠$悊--> + <div id="viewdata" class="global-content"> + <!-- 绛涢�� --> + <div class="width margin4auto paddingtopbottom boxshadow4"> + <view-inquer @inquer="inquer" /> + <div class="flex flex-wrap margin-top10px align-center justify-around"> + <div class="flex align-center margin-right" v-for="(item, index) in statuslist" :key="index + 'status'"> + <p> + <i class="iconi" :style="'background:' + item.bgcl" /> {{ item.title }}锛歿{ StatusPlaceCount[item.name] }} + </p> + </div> + </div> + </div> + <div class="allheigth width margin4auto paddingtopbottom overflowauto"> + <div v-for="(item, index) in GetAllPlace" :key="index + 'getallpace'"> + <!-- <p class="margintopbot">灞傛暟{{ item.layer }}</p> --> + <div class="flex"> + <div v-for="(element, index) in item.llist" :key="index + 'layer'"> + <div + class="view-chunk" + :class=" + element.placeStates == 1 + ? 'emptyappliance chunkkhover pointer' + : element.placeStates == 2 + ? 'instore chunkkhover pointer' + : element.placeStates == 3 + ? 'lock chunkkhover pointer' + : element.placeStates == 99 + ? 'bgnull' + : 'pointer chunkkhover' + " + :key="index + 'place'" + @click="Placeclick(element)" + > + {{ element.placeName }} + </div> + </div> + </div> + </div> + </div> + <transition name="modal"> + <viewdata-info v-if="viewinfoshow" @cancel="viewinfoshow = false"> + <p slot="title">瑙嗗浘璇︽儏</p> + <div class="height" slot="centent"> + <div class="width height overflowy-auto"> + <div class="width96 margin-auto boxshadow4 viewpadding" v-show="tableData.length > 0"> + <template v-for="(i, index) in tableData"> + <div v-if="tableData.length > 0" class="width height" :key="index + 'tabledata'"> + <div class="flex margintopbot" v-for="(item, count) in tableHead" :key="count + 'tablehead'"> + <label class="color909399 fontsiez1rem width15">{{ item.columnDescription }}锛�</label> + <p class="borderbottom345 width70"> + {{ tableData[index][item.columnName] }} + </p> + </div> + </div> + </template> + </div> + <p class="color909399 fontsize2rem absolute transformtopleft" v-show="tableData.length == 0">鏆傛棤鏁版嵁</p> + </div> + <!-- <table-container :tableHead="tableHead" :tableData="tableData" :operation="false" :paginationshow="false" /> --> + </div> + </viewdata-info> + </transition> + </div> +</template> + +<script> +import ViewInquer from '../../components/viewdataInquer.vue'; +import { GetAllStatusPlaceCount, GetAllPlaceInfo, GetPVCVIInfo } from '@/api/viewdata'; +import viewdataInfo from '../../components/viewdatainfo.vue'; +const { viewdata } = require('@/components/tableContainer/tableHead'); +export default { + data() { + return { + tableData: [], + statuslist: [ + { + title: '褰撳墠宸烽亾閿佸畾鐨勫簱浣嶆暟閲�', + name: 'lPlaceCount', + bgcl: '#C82627' + }, + { + title: '褰撳墠宸烽亾绌哄簱浣嶆暟閲�', + name: 'ePlaceCount', + bgcl: '#909399' + }, + { + title: '褰撳墠宸烽亾绌哄櫒鍏峰簱浣嶆暟閲�', + name: 'cPlaceCount', + bgcl: '#59A9AA' + }, + { + title: '褰撳墠宸烽亾鏈夎揣搴撲綅鏁伴噺', + name: 'iPlaceCount', + bgcl: '#67C23A' + } + + ], + inquerobj: { + storageNo: 1, + row: 1 + }, + StatusPlaceCount: {}, + GetAllPlace: [], + viewinfoshow: false + }; + }, + components: { ViewInquer, viewdataInfo }, + computed: { + tableHead() { + return viewdata; + } + }, + mounted() { + this.GetAllStatusPlaceCount(); + this.GetAllPlaceInfo(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inquerobj = e; + this.GetAllStatusPlaceCount(); + this.GetAllPlaceInfo(); + }, + //鑾峰彇鍚勭鐘舵�佺殑搴撲綅鏁伴噺 + GetAllStatusPlaceCount() { + const { storageNo } = this.inquerobj; + GetAllStatusPlaceCount({ storageNo }).then(res => { + this.StatusPlaceCount = res; + }); + }, + //鑾峰彇鎸囧畾宸烽亾搴撶殑鎵�鏈夊簱浣嶄俊鎭� + GetAllPlaceInfo() { + const { storageNo, row } = this.inquerobj; + this.GetAllPlace = []; + this.$Loading(true); + GetAllPlaceInfo({ storageNo, row }).then(res => { + if (res.code == 0) { + console.log(res.data); + let data = res.data; + let list = []; + data.forEach(element => { + list.push(element.layer); + }); + list = Array.from(new Set(list)); + list.forEach((item, index) => { + this.GetAllPlace.push({ layer: item, llist: [] }); + data.forEach(element => { + if (item == element.layer) { + this.GetAllPlace[index].llist.push(element); + } + }); + }); + this.GetAllPlace.forEach(item => { + console.log(item); + item.llist.sort((a, b) => { + return a.col - b.col; + }); + }); + console.log(this.GetAllPlace); + // this.GetAllPlace = res.data; + } + this.$Loading(); + }); + }, + //鐐瑰嚮鑾峰彇搴撲綅閲岀殑鎵樼洏鎴栬�呯墿鏂欎俊鎭� + Placeclick(item) { + if (item.placeStates != 99) { + const { placeName } = item; + this.viewinfoshow = true; + this.tableData = []; + GetPVCVIInfo({ placeName }).then(res => { + if (res) { + res.forEach(item => { + item.isFull = item.isFull == 1 ? '鏄�' : item.isFull == 0 ? '鍚�' : item.isFull; + item.isBad = item.isBad == 1 ? '鏄�' : item.isBad == 0 ? '鍚�' : item.isBad; + }); + this.tableData = res; + } + }); + } + } + } +}; +</script> + +<style lang="scss" scoped> +#viewdata { + .allheigth { + height: calc(100% - 110px); + } + .viewpadding { + padding: 1px 10px; + } + .iconi { + display: inline-block; + width: 16px; + height: 16px; + border-radius: 4px; + box-shadow: 0 0 4px #eaedef; + } + .view-chunk { + width: 100px; + height: 20px; + padding: 8px; + text-align: center; + margin: 0 5px 10px; + border-radius: 4px; + // box-shadow: 0 0 4px #345; + color: #fff; + background: #909399; + transition: all 0.5s; + } + .chunkkhover { + &:hover { + background: #e6a23c; + } + } + .emptyappliance { + background: #59a9aa; + } + .instore { + background: #67c23a; + } + .lock { + background: #c82627; + } + .bgnull { + background: unset; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/components/casslineEdit.vue b/qqjf-Web/src/views/storage/components/casslineEdit.vue new file mode 100644 index 0000000..64f57e0 --- /dev/null +++ b/qqjf-Web/src/views/storage/components/casslineEdit.vue @@ -0,0 +1,133 @@ +<template> + <div class="casslineEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="130px" + > + <el-form-item label="鐝嚎缂栧彿:" prop="productionCode"> + <el-input v-model="registerForm.productionCode" clearable></el-input> + </el-form-item> + <el-form-item label="鐝嚎鍚嶇О:" prop="productionName"> + <el-input v-model="registerForm.productionName" clearable></el-input> + </el-form-item> + <el-form-item label="鑳藉惁浣滀负鐩殑鍦�:" prop="isDestination"> + <el-select v-model="registerForm.isDestination" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in isDestinationlist" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-form> + </div> + <div class="palteEdit-button text-right margin-right15 margin-top2"> + <el-button + type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + @click="submitForm('registerForm')" + >鎻愪氦</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { ProductionLineAddOrUpdate } from '@/api/cass-line'; +export default { + data() { + return { + registerForm: {}, + usernameList: [], + isDestinationlist: [ + { + label: '鏄�', + value: 1 + }, + { + label: '鍚�', + value: 0 + } + ], + rules: { + productionCode: { required: true, message: '璇疯緭鍏ョ彮绾跨紪鍙�', trigger: 'change' }, + productionName: { required: true, message: '璇疯緭鍏ョ彮绾垮悕绉�', trigger: 'change' }, + isDestination: { required: true, message: '璇烽�夋嫨鑳藉惁浣滀负鐩殑鍦�', trigger: 'change' } + }, + savloading: false + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + } + }, + methods: { + submitForm(registerForm) { + this.$refs[registerForm].validate(valid => { + if (valid) { + this.savloading = true; + ProductionLineAddOrUpdate(this.registerForm).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.$emit('addsubmit'); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触' + }); + } + this.savloading = false; + }); + } else { + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.casslineEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .casslineEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/components/chooseEdit.vue b/qqjf-Web/src/views/storage/components/chooseEdit.vue new file mode 100644 index 0000000..a4b2c71 --- /dev/null +++ b/qqjf-Web/src/views/storage/components/chooseEdit.vue @@ -0,0 +1,262 @@ +<template> + <div class="addchoose height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="120px" + > + <el-form-item label="闆朵欢缂栧彿:" prop="itemName"> + <el-input :disabled="disabled" v-model="registerForm.itemName" clearable></el-input> + </el-form-item> + <el-form-item label="闆朵欢鍚嶇О:" prop="enable"> + <el-input v-model="registerForm.itemDes" clearable></el-input> + </el-form-item> + <el-form-item label="閲�:" prop="creatorid"> + <el-input oninput="value=value.replace(/[^\d.]/g,'')" v-model="registerForm.weight" clearable></el-input> + </el-form-item> + <el-form-item label="绫诲瀷:" prop="creatorid" v-if="false"> + <el-input v-model="registerForm.itemType" clearable></el-input> + </el-form-item> + <el-form-item label="鍗曚釜鍏樊:" prop="creatorid"> + <el-input + oninput="value=value.replace(/[^\d.]/g,'')" + v-model="registerForm.weightDifference" + clearable + ></el-input> + </el-form-item> + <!-- <el-form-item label="鍚敤:" prop="creatorid"> + <el-select v-model="registerForm.enable" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in enableList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> --> + <el-form-item label="鐢熶骇鐝嚎:" prop="creatorid"> + <!-- <el-input v-model="registerForm.createLine" clearable></el-input> --> + <el-select v-model="registerForm.createLine" filterable clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in createLineList" + :key="'productionLineName' + index" + :label="item.productionName" + :value="item.productionName" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item label="瑁呯鏁伴噺:" prop="creatorid"> + <el-input v-model="registerForm.maxNum" oninput="value=value.replace(/[^\d.]/g,'')" clearable></el-input> + </el-form-item> + <el-form-item label="鍗曚环:" prop="creatorid"> + <el-input oninput="value=value.replace(/[^\d.]/g,'')" v-model="registerForm.price" clearable></el-input> + </el-form-item> + <el-form-item label="鍗曚綅:" prop="creatorid"> + <el-input v-model="registerForm.unit" clearable></el-input> + </el-form-item> + <el-form-item label="鏈�澶у簱瀹归噺:" prop="creatorid"> + <el-input v-model="registerForm.maxStorage" oninput="value=value.replace(/[^\d.]/g,'')" clearable></el-input> + </el-form-item> + <el-form-item label="鏈�灏忓簱瀹归噺:" prop="creatorid"> + <el-input v-model="registerForm.minStorage" oninput="value=value.replace(/[^\d.]/g,'')" clearable></el-input> + </el-form-item> + <el-form-item label="瓒呮湡鏃堕棿(澶�):" prop="creatorid"> + <el-input v-model="registerForm.overDueTime" oninput="value=value.replace(/[^\d.]/g,'')" clearable></el-input> + </el-form-item> + <el-form-item label="鏄惁閿佸畾:" prop="creatorid"> + <el-select v-model="registerForm.isLock" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in lockList" :key="item.value" :label="item.label" :value="item.value"> </el-option> + </el-select> + </el-form-item> + <el-form-item label="鎵�闇�鍣ㄥ叿瑙勬牸1:" prop="useContainerType"> + <el-select v-model="registerForm.useContainerType" filterable multiple clearable placeholder="璇烽�夋嫨"> + <el-option v-for="(item, index) in containerTypeList" :key="index" :label="item.titel" :value="item.titel"> + </el-option> + </el-select> + </el-form-item> + </el-form> + </div> + <div class="addchoose-button text-right margin-right15 margin-top2"> + <el-button + type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + @click="submitForm('registerForm')" + >鎻愪氦</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { ItemAddOrUpdate } from '@/api/enterchoose'; +import { ProductionLineSearch } from '@/api/ProductionLine'; +import { ContainerTypeSearch } from '@/api/inventory'; +export default { + data() { + return { + registerForm: { + itemName: '', + itemDes: '', + weight: '', + itemType: '', + weightDifference: '', + createLine: '', + maxNum: '', + price: '', + unit: '', + maxStorage: '', + minStorage: '', + overDueTime: '', + isLock: '', + useContainerType: [] + }, + useContainerType: [], + disabled: false, + lockList: [ + { + label: '鏄�', + value: 1 + }, + { + label: '鍚�', + value: 0 + } + ], + // containerTypeList: [], + statusList: [ + { + label: 0, + value: 0 + }, + { + label: 1, + value: 1 + } + ], + enableList: [ + { + label: '鍚敤', + value: 1 + }, + { + label: '绂佺敤', + value: 0 + } + ], + createLineList: [], + rules: { + itemName: { required: true, message: '璇疯緭闆朵欢缂栧彿', trigger: 'change' }, + useContainerType: { required: true, message: '璇烽�夋嫨鎵�闇�鍣ㄥ叿瑙勬牸', trigger: 'change' } + }, + savloading: false + }; + }, + props: { + rowitem: { + type: Object, + default: () => {} + }, + containerTypeList: { + type: Array, + default: () => [] + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + this.registerForm.useContainerType = this.rowitem.useContainerType.split(','); + this.disabled = true; + } else { + this.disabled = false; + this.registerForm.itemType = '鍐插帇浠�'; + } + this.ProductionLineSearch(); + // this.ContainerTypeSearch(); + }, + methods: { + ContainerTypeSearch() { + ContainerTypeSearch().then(res => { + if (res != null && res != []) { + let data = res || []; + // this.containerTypeList = data; + } + }); + }, + //鐝嚎 + ProductionLineSearch() { + ProductionLineSearch('1&onePageNum=999', { isDestination: 0 }).then(res => { + if (res.code == 0) { + let data = res.data || []; + this.createLineList = data.filter(item => { + if (item.productionName.indexOf('鍑哄彛') == -1) { + if (item.productionName != '鍐插帇杞﹂棿') { + return item; + } + } + }); + } + }); + }, + submitForm(registerForm) { + this.$refs[registerForm].validate(valid => { + if (valid) { + this.savloading = true; + let obj = { ...this.registerForm }; + obj.itemType = '鍐插帇浠�'; + obj.useContainerType = obj.useContainerType.join(','); + ItemAddOrUpdate(obj).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.$emit('addsubmit'); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触' + }); + } + this.savloading = false; + }); + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.addchoose { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .addchoose-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/components/forkliftEdit.vue b/qqjf-Web/src/views/storage/components/forkliftEdit.vue new file mode 100644 index 0000000..ae45cc9 --- /dev/null +++ b/qqjf-Web/src/views/storage/components/forkliftEdit.vue @@ -0,0 +1,175 @@ +<template> + <div class="addchoose height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="100px" + > + <el-form-item label="鍙夎溅鍚�:" prop="carName"> + <el-input :disabled="disabled" v-model="registerForm.carName" clearable></el-input> + </el-form-item> + <el-form-item label="鍙夎溅鍙�:" prop="enable"> + <el-input v-model="registerForm.carCode" clearable></el-input> + </el-form-item> + + <el-form-item label="鏄惁宸ヤ綔:" prop="creatorid"> + <el-select v-model="registerForm.isWork" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in enableList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="椹鹃┒鍛�:" prop="creatorid"> + <el-select v-model="registerForm.userName" clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in userNameList" + :key="index + 'userName'" + :label="item.userName" + :value="item.userName" + > + </el-option> + </el-select> + </el-form-item> + + <!-- <el-form-item label="鎵ц浠诲姟鍚�:" prop="creatorid"> + <el-input disabled v-model="registerForm.carTaskName" clearable></el-input> + </el-form-item> --> + </el-form> + </div> + <div class="addchoose-button text-right margin-right15 margin-top2"> + <el-button + type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + @click="submitForm('registerForm')" + >鎻愪氦</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { CarAddOrUpdate } from '@/api/forklift'; +import { UserSearch } from '@/api/manage'; +export default { + data() { + return { + registerForm: {}, + disabled: false, + userNameList: [], + statusList: [ + { + label: 0, + value: 0 + }, + { + label: 1, + value: 1 + } + ], + enableList: [ + { + label: '鏄�', + value: 1 + }, + { + label: '鍚�', + value: 0 + } + ], + createLineList: [], + + rules: { + carName: { required: true, message: '璇疯緭鍙夎溅鍚�', trigger: 'change' } + }, + savloading: false + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + this.disabled = true; + } else { + this.disabled = false; + } + this.UserSearch(); + }, + methods: { + //鐢ㄦ埛 + UserSearch() { + UserSearch('1&onePageNum=999').then(res => { + if (res.code == 0) { + let data = res.data || []; + this.userNameList = data; + } + }); + }, + submitForm(registerForm) { + console.log(this.registerForm); + this.$refs[registerForm].validate(valid => { + if (valid) { + this.savloading = true; + CarAddOrUpdate(this.registerForm).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.$emit('addsubmit'); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触' + }); + } + this.savloading = false; + }); + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.addchoose { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .addchoose-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/components/inventoryEdit.vue b/qqjf-Web/src/views/storage/components/inventoryEdit.vue new file mode 100644 index 0000000..8d65e29 --- /dev/null +++ b/qqjf-Web/src/views/storage/components/inventoryEdit.vue @@ -0,0 +1,166 @@ +<template> + <div class="invetoryEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="120px" + > + <el-form-item label="缂栧彿:" prop="place"> + <el-input disabled v-model="registerForm.pvcCode" clearable></el-input> + </el-form-item> + <el-form-item label="搴撲綅鍙�:" prop="placeType"> + <el-select v-model="registerForm.place" filterable clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in placeList" + :key="'place' + index" + :label="item.place" + :value="item.place" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鍣ㄥ叿鍙�:" prop="placeType"> + <el-select v-model="registerForm.containerName" filterable clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in containerNameList" + :key="'containerName' + index" + :label="item.containerName" + :value="item.containerName" + > + </el-option> + </el-select> + </el-form-item> + </el-form> + </div> + <div class="palteEdit-button text-right margin-right15 margin-top2"> + <el-button + type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + @click="submitForm('registerForm')" + >鎻愪氦</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { PlaceAddOrUpdate, PlaceVsContainerGetCode } from '@/api/inventory'; +import { PlaceSearch } from '@/api/position'; +import { ContainerSearch } from '@/api/palte'; +export default { + data() { + return { + registerForm: { pvcCode: '' }, + placeList: [], + containerNameList: [], + disabled: false, + rules: { + deptName: { required: true, message: '璇疯緭閮ㄩ棬鍚嶇О', trigger: 'change' }, + deptDes: { required: true, message: '璇疯緭鍏ラ儴闂ㄦ弿杩�', trigger: 'change' }, + enable: { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' } + }, + savloading: false + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + } else { + this.PlaceVsContainerGetCode(); + } + + this.PlaceSearch(); + this.ContainerSearch(); + }, + methods: { + //缂栧彿 + PlaceVsContainerGetCode() { + PlaceVsContainerGetCode().then(res => { + this.registerForm.pvcCode = res; + }); + }, + //搴撲綅缂栧彿 + PlaceSearch() { + PlaceSearch('1&onePageNum=999').then(res => { + if (res.code == 0) { + this.placeList = res.data; + } + }); + }, + //鍣ㄥ叿缂栧彿 + ContainerSearch() { + ContainerSearch('1&onePageNum=999').then(res => { + if (res.code == 0) { + this.containerNameList = res.data; + } + }); + }, + submitForm(registerForm) { + this.$refs[registerForm].validate(valid => { + if (valid) { + this.savloading = true; + PlaceAddOrUpdate(this.registerForm).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.$emit('addsubmit'); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触' + }); + } + this.savloading = false; + }); + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.invetoryEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .invetoryEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/components/palteEdit.vue b/qqjf-Web/src/views/storage/components/palteEdit.vue new file mode 100644 index 0000000..f2c1044 --- /dev/null +++ b/qqjf-Web/src/views/storage/components/palteEdit.vue @@ -0,0 +1,263 @@ +<template> + <div class="palteEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="100px" + > + <el-form-item label="鍣ㄥ叿缂栧彿:" prop="containerName"> + <el-input + :disabled="disabled" + v-model="registerForm.containerName" + @blur="onBsp($event)" + clearable + ></el-input> + </el-form-item> + <el-form-item label="鍣ㄥ叿绫诲瀷:" prop="enable"> + <el-input v-model="registerForm.containerType" clearable></el-input> + </el-form-item> + <el-form-item label="瑙勬牸缂栧彿:" prop="creatorid" v-show="false"> + <el-input v-model="registerForm.palletCode" clearable></el-input> + </el-form-item> + <el-form-item label="瑙勬牸绫诲瀷:" prop="creatorid"> + <el-select + v-model="registerForm.palletType" + filterable + clearable + placeholder="璇烽�夋嫨" + @change="onSelectedDrug($event)" + > + <el-option v-for="item in pallList" :key="item.id" :label="item.PalletType" :value="item.PalletCode"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鍏樊:" prop="creatorid"> + <el-input + oninput="value=value.replace(/[^\d.]/g,'')" + v-model="registerForm.weightDifference" + autocomplete="off" + clearable + ></el-input> + </el-form-item> + <el-form-item label="鑷噸:" prop="creatorid"> + <el-input + oninput="value=value.replace(/[^\d.]/g,'')" + v-model="registerForm.weight" + autocomplete="off" + clearable + ></el-input> + </el-form-item> + <el-form-item label="楂�:" prop="creatorid"> + <el-input + oninput="value=value.replace(/[^\d.]/g,'')" + v-model="registerForm.height" + autocomplete="off" + clearable + ></el-input> + </el-form-item> + <el-form-item label="闀�:" prop="creatorid"> + <el-input + oninput="value=value.replace(/[^\d.]/g,'')" + v-model="registerForm.length" + autocomplete="off" + clearable + ></el-input> + </el-form-item> + <el-form-item label="瀹�:" prop="creatorid"> + <el-input + oninput="value=value.replace(/[^\d.]/g,'')" + v-model="registerForm.width" + autocomplete="off" + clearable + ></el-input> + </el-form-item> + <el-form-item label="鏄惁閿佸畾:" prop="creatorid"> + <el-select v-model="registerForm.isLock" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in lockList" :key="item.value" :label="item.label" :value="item.value"> </el-option> + </el-select> + </el-form-item> + </el-form> + </div> + <div class="palteEdit-button text-right margin-right15 margin-top2"> + <el-button + type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + @click="submitForm('registerForm')" + >鎻愪氦</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { ContainerAddOrUpdate } from '@/api/palte'; +import { PalletSearch } from '@/api/palte'; +export default { + data() { + return { + registerForm: { + containerName: '', + containerType: '', + palletCode: '', + palletType: '', + weightDifference: '', + weight: '', + height: '', + length: '', + width: '', + isLock: '' + }, + pallList: [], + lockList: [ + { + label: '鏄�', + value: 1 + }, + { + label: '鍚�', + value: 0 + } + ], + containerTypeList: [ + { + label: 'P71-2222', + value: 'P71-2222' + }, + { + label: 'P71-3333', + value: 'P71-3333' + } + ], + statusList: [ + { + label: 0, + value: 0 + }, + { + label: 1, + value: 1 + } + ], + enableList: [ + { + label: '鍚敤', + value: 1 + }, + { + label: '绂佺敤', + value: 0 + } + ], + disabled: false, + + rules: { + containerName: { required: true, message: '璇疯緭鍣ㄥ叿缂栧彿', trigger: 'change' } + }, + savloading: false + }; + }, + props: { + rowitem: { + type: Object, + default: () => {} + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + this.disabled = true; + } else { + this.disabled = false; + this.PalletsSearch(); + } + }, + methods: { + onBsp(e) { + var name = this.registerForm.containerName; + if (name != '' && name.indexOf('-') != -1) { + var spname = name.split('-'); + this.registerForm.containerType = spname[0] + '-' + spname[1]; + } + this.$forceUpdate(); + }, + onSelectedDrug(e) { + let obj = {}; + obj = this.pallList.find(item => { + //杩欓噷鐨刾allList灏辨槸涓婇潰閬嶅巻鐨勬暟鎹簮 + return item.id === e; //绛涢�夊嚭鍖归厤鏁版嵁 + }); + this.registerForm.palletCode = obj.PalletCode; + this.registerForm.length = obj.LengthMax; + this.registerForm.height = obj.HeightMax; + this.registerForm.width = obj.WidthMax; + }, + PalletsSearch() { + PalletSearch('1&onePageNum=99').then(res => { + if (res.code == 0) { + this.pallList = res.data; + } + }); + }, + submitForm(registerForm) { + this.$refs[registerForm].validate(valid => { + if (valid) { + this.savloading = true; + ContainerAddOrUpdate(this.registerForm).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.$emit('addsubmit'); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触' + }); + } + this.savloading = false; + }); + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.palteEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .palteEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/components/positionEdit.vue b/qqjf-Web/src/views/storage/components/positionEdit.vue new file mode 100644 index 0000000..d4aca8b --- /dev/null +++ b/qqjf-Web/src/views/storage/components/positionEdit.vue @@ -0,0 +1,178 @@ +<template> + <div class="storageEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="120px" + > + <el-form-item label="搴撲綅鍚嶇О:" prop="place"> + <el-input :disabled="disabled" v-model="registerForm.place" clearable></el-input> + </el-form-item> + <el-form-item label="搴撲綅绫诲瀷:" prop="placeType"> + <el-input :disabled="disabled" v-model="registerForm.placeType" clearable></el-input> + </el-form-item> + + <el-form-item label="鎺掓暟:" prop="row"> + <el-input + oninput="value=value.replace(/[^\d.]/g,'')" + :disabled="disabled" + v-model="registerForm.row" + clearable + ></el-input> + </el-form-item> + <el-form-item label="鍒楁暟:" prop="col"> + <el-input + oninput="value=value.replace(/[^\d.]/g,'')" + :disabled="disabled" + v-model="registerForm.col" + clearable + ></el-input> + </el-form-item> + <el-form-item label="灞傛暟:" prop="layer"> + <el-input + oninput="value=value.replace(/[^\d.]/g,'')" + :disabled="disabled" + v-model="registerForm.layer" + clearable + ></el-input> + </el-form-item> + <el-form-item label="宸烽亾(鍫嗗灈鏈�)鍙�:" prop="creatorid"> + <el-input :disabled="disabled" v-model="registerForm.srmId" clearable></el-input> + </el-form-item> + <el-form-item label="闀�:" prop="creatorid"> + <el-input oninput="value=value.replace(/[^\d.]/g,'')" v-model="registerForm.length" clearable></el-input> + </el-form-item> + <el-form-item label="瀹�:" prop="creatorid"> + <el-input oninput="value=value.replace(/[^\d.]/g,'')" v-model="registerForm.width" clearable></el-input> + </el-form-item> + <el-form-item label="楂�:" prop="creatorid"> + <el-input oninput="value=value.replace(/[^\d.]/g,'')" v-model="registerForm.height" clearable></el-input> + </el-form-item> + <el-form-item label="鏄惁閿佸畾:" prop="creatorid"> + <el-select + v-model="registerForm.isLock" + clearable + placeholder="璇烽�夋嫨" + > + <el-option v-for="item in lockList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-form> + </div> + <div class="palteEdit-button text-right margin-right15 margin-top2"> + <el-button + type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + @click="submitForm('registerForm')" + >鎻愪氦</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { PlaceAddOrUpdate } from '@/api/position'; +export default { + data() { + return { + registerForm: {}, + usernameList: [], + lockList:[ + { + label: '鏄�', + value: 1 + }, + { + label: '鍚�', + value: 0 + } + ], + disabled: false, + rules: { + deptName: { required: true, message: '璇疯緭閮ㄩ棬鍚嶇О', trigger: 'change' }, + deptDes: { required: true, message: '璇疯緭鍏ラ儴闂ㄦ弿杩�', trigger: 'change' }, + enable: { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' } + }, + savloading: false + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + this.registerForm.isLock== 1 ? '鏄�' : '鍚�'; + this.disabled = true; + } else { + this.disabled = false; + } + }, + methods: { + submitForm(registerForm) { + this.$refs[registerForm].validate(valid => { + if (valid) { + this.savloading = true; + PlaceAddOrUpdate(this.registerForm).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.$emit('addsubmit'); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触' + }); + } + }); + this.savloading = false; + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.storageEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .storageEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/components/storage-inquer.vue b/qqjf-Web/src/views/storage/components/storage-inquer.vue new file mode 100644 index 0000000..96959cc --- /dev/null +++ b/qqjf-Web/src/views/storage/components/storage-inquer.vue @@ -0,0 +1,424 @@ +<template> + <div class="flex align-center justify-between"> + <div class="flex"> + <el-button-group v-if="groupshow"> + <el-button type="primary" size="mini" icon="el-icon-plus" @click="$emit('addmodal')">鏂板缓</el-button> + <el-button v-if="dele" type="primary" size="mini" icon="el-icon-delete">鍒犻櫎</el-button> + </el-button-group> + <el-button-group class="margin-left"> + <div class="flex"> + <el-upload + class="upload-demo" + ref="upload" + action="" + accept=".xls,.xlsx" + :show-file-list="false" + :http-request="httprequest" + v-if="imexcel" + > + <el-button style="margin-left: 10px" icon="el-icon-upload2" size="mini" type="success">瀵煎叆</el-button> + </el-upload> + <el-button + v-if="temp" + style="margin-left: 10px" + type="primary" + size="mini" + icon="el-icon-download" + @click="tempclick" + >妯℃澘</el-button + > + <el-button + v-if="derive" + style="margin-left: 10px" + type="primary" + size="mini" + icon="el-icon-download" + @click="$emit('derive')" + >瀵煎嚭</el-button + > + <el-button + v-if="setLimit" + style="margin-left: 10px" + type="success" + size="mini" + icon="el-icon-edit" + @click="$emit('setAllLimit')" + >鎵归噺璁剧疆涓婁笅绾�</el-button + > + <el-button + v-if="useLimit" + style="margin-left: 10px" + type="warning" + size="mini" + @click="$emit('changeUseLimitValue')" + > + <span class="btn-radio-outer"> + <span class="btn-radio-flex" v-if="useLimitValue"><span class="btn-radio-inner"></span></span> + </span> + 鍚敤涓婁笅绾垮垽鏂� + </el-button> + </div> + </el-button-group> + + <el-button + class="margin-left" + v-if="refresh" + :loading="loading" + size="mini" + icon="el-icon-refresh" + @click="$emit('refresh')" + >鍒锋柊</el-button + > + </div> + <div class="width85 flex align-center justify-end"> + <div class="flex width align-center justify-end margin-right"> + <div v-if="isEmptyContainershow" class="flex align-center margin-right width25"> + <label class="color909399 fontsizeinitial" :style="'width:' + fixWidth('鏄惁绌烘墭鐩�:') + 'px'" + >鏄惁绌烘墭鐩�:</label + > + <el-select class="width60" v-model="iqnuer.isEmptyContainer" size="mini" clearable> + <el-option + v-for="(item, index) in isEmptyContainerList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </div> + <div v-if="isOverDayshow" class="flex align-center margin-right width25"> + <label class="color909399 fontsizeinitial" :style="'width:' + fixWidth('鏄惁瓒呭簱瀛�:') + 'px'" + >鏄惁瓒呭簱瀛�:</label + > + <el-select class="width60" v-model="iqnuer.isOverDay" size="mini" clearable> + <el-option + v-for="(item, index) in isOverDayList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </div> + <div v-if="isBadshow" class="flex align-center margin-right width25"> + <label class="color909399 fontsizeinitial" :style="'width:' + fixWidth('鏄惁杩斾慨:') + 'px'">鏄惁杩斾慨:</label> + <el-select class="width60" v-model="iqnuer.isBad" size="mini" clearable> + <el-option + v-for="(item, index) in isBadList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </div> + <div v-if="stStatusshow" class="flex align-center margin-right width25"> + <label class="color909399 fontsizeinitial" :style="'width:' + fixWidth('搴撻緞鐘舵��:') + 'px'">搴撻緞鐘舵��:</label> + <el-select class="width60" v-model="iqnuer.stStatus" size="mini" clearable> + <el-option + v-for="(item, index) in stStatusList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </div> + <div v-if="taskTypeshow" class="flex align-center margin-right width25"> + <label class="color909399 fontsizeinitial" :style="'width:' + fixWidth('鍏ュ簱绫诲瀷:') + 'px'">鍏ュ簱绫诲瀷:</label> + <el-select class="width60" v-model="iqnuer.taskType" size="mini" clearable> + <el-option + v-for="(item, index) in taskTypeList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </div> + <div v-if="isLockshow" class="flex align-center margin-right"> + <label class="color909399 fontsizeinitial" :style="'width:' + fixWidth('鏄惁閿佸畾:') + 'px'">鏄惁閿佸畾:</label> + <el-select v-model="iqnuer.isLock" size="mini"> + <el-option + v-for="(item, index) in isLocklist" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </div> + <el-input id="storageinquer" size="mini" clearable v-model="iqnuer[filter]" class="width30"> + <el-select @change="selchange" v-model="filter" slot="prepend"> + <el-option + v-for="(item, index) in filterList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </el-input> + </div> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + </div> +</template> + +<script> +export default { + data() { + return { + filter: '', + iqnuer: { isLock: '', isOverDay: '' }, + applytime: [], + isEmptyContainerList: [ + { + label: '鏄�', + value: '鏄�' + }, + { + label: '鍚�', + value: '鍚�' + } + ], + isOverDayList: [ + { + label: '鍏ㄩ儴', + value: '' + }, + { + label: '鏄�', + value: '鏄�' + }, + { + label: '鍚�', + value: '鍚�' + } + ], + isBadList: [ + { + label: '鏄�', + value: 1 + }, + { + label: '鍚�', + value: 0 + } + ], + taskTypeList: [ + { + label: '鏉庢钵鍏ュ簱', + value: '鏉庢钵鍏ュ簱' + }, + { + label: '鍗冲ⅷ鍏ュ簱', + value: '鍗冲ⅷ鍏ュ簱' + }, + { + label: 'EU绠卞叆绔嬩綋搴�', + value: 'EU绠卞叆绔嬩綋搴�' + }, + { + label: '浣欐枡鍥炲簱', + value: '浣欐枡鍥炲簱' + } + ], + stStatusList: [ + { + label: '姝e父', + value: '姝e父' + }, + { + label: '棰勮', + value: '棰勮' + }, + { + label: '瓒呮湡', + value: '瓒呮湡' + } + ], + isLocklist: [ + { + label: '鍏ㄩ儴', + value: '' + }, + { + label: '鍚�', + value: 0 + }, + { + label: '鏄�', + value: 1 + } + ], + + visible: false, + value1: '' + }; + }, + props: { + groupshow: { + type: Boolean, + default: true + }, + temp: { + type: Boolean, + default: false + }, + imexcel: { + type: Boolean, + default: false + }, + setLimit: { + type: Boolean, + default: false + }, + useLimit: { + type: Boolean, + default: false + }, + useLimitValue: { + type: Boolean, + default: false + }, + advanced: { + type: Boolean, + default: false + }, + isOverDayshow: { + type: Boolean, + default: false + }, + isBadshow: { + type: Boolean, + default: false + }, + taskTypeshow: { + type: Boolean, + default: false + }, + isLockshow: { + type: Boolean, + default: false + }, + isEmptyContainershow: { + type: Boolean, + default: false + }, + stStatusshow: { + type: Boolean, + default: false + }, + dele: { + type: Boolean, + default: false + }, + byfilter: { + type: String, + default: '' + }, + filterList: { + type: Array, + default: () => [] + }, + + derive: { + type: Boolean, + default: false + }, + refresh: { + type: Boolean, + default: false + }, + loading: { + type: Boolean, + default: false + } + }, + mounted() { + this.filter = this.byfilter; + }, + methods: { + fixWidth(val) { + let length = 0; + if (val.indexOf('(') != -1) { + length = val.length * 16 + 10; + } else { + length = val.length * 20 - 30; + } + // if (length < 100) { + // length = 85; + // } + + return length; + }, + inquer() { + this.$emit('inquer', this.iqnuer); + }, + selchange() { + this.iqnuer = {}; + }, + httprequest(file) { + this.$emit('importfile', file); + }, + //妯℃澘 + tempclick() { + // let a = document.createElement('a'); + // // a.download = name + ".xls"; + // a.href = '120.53.244.200:8085\ExcelTemple\闆朵欢瀵煎叆妯℃澘.xlsx'; + // $('body').append(a); // 淇firefox涓棤娉曡Е鍙慶lick + // a.click(); + // $(a).remove(); + console.log(process.env.IMAGE_URL); + // window.location.href = 'http://10.103.9.200:8085/ExcelTemple/闆朵欢瀵煎叆妯℃澘.xlsx'; + window.location.href = process.env.IMAGE_URL + 'ExcelTemple/闆朵欢瀵煎叆妯℃澘.xlsx'; + // window.open('\ExcelTemple\闆朵欢瀵煎叆妯℃澘.xlsx'); + } + }, + watch: { + byfilter: { + handler(nvl, ovl) { + this.filter = nvl; + } + } + } +}; +</script> + +<style lang="scss" scoped> +#topinquer { + ::v-deep .el-select { + width: 100px; + } +} +#storageinquer { + ::v-deep .el-range-editor.el-input__inner { + padding: 3px; + } + .el-input__inner { + padding-left: 4px; + padding-right: 25px; + } +} +::v-deep .el-input-group__append, +::v-deep .el-input-group__prepend { + width: 55px; + padding-left: 10px; + padding-right: 14px; +} +.btn-radio-outer { + display: inline-block; + width: 10px; + height: 10px; + border-radius: 50%; + border: 1px solid #fff; + margin-right: 6px; + .btn-radio-flex { + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + .btn-radio-inner { + width: 6px; + height: 6px; + border-radius: 50%; + background-color: #fff; + } + } +} +</style> diff --git a/qqjf-Web/src/views/storage/components/storageEdit.vue b/qqjf-Web/src/views/storage/components/storageEdit.vue new file mode 100644 index 0000000..0596208 --- /dev/null +++ b/qqjf-Web/src/views/storage/components/storageEdit.vue @@ -0,0 +1,173 @@ +<template> + <div class="storageEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="100px" + > + <!-- <el-form-item label="鍣ㄥ叿绉嶇被:" prop="enable"> + <el-select v-model="registerForm.enable" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in enableList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> --> + <el-form-item label="浠撳簱缂栫爜:" prop="deptName"> + <el-input v-model="registerForm.deptName" clearable></el-input> + </el-form-item> + + <el-form-item label="浠撳簱鍚嶇О:" prop="creatorid"> + <el-input v-model="registerForm.deptDes" autocomplete="off" clearable></el-input> + </el-form-item> + <el-form-item label="鏄惁鍙敤:" prop="creatorid"> + <el-input v-model="registerForm.deptDes" autocomplete="off" clearable></el-input> + </el-form-item> + <el-form-item label="澶囨敞:" prop="creatorid"> + <el-input v-model="registerForm.deptDes" autocomplete="off" clearable></el-input> + </el-form-item> + <el-form-item label="鎺掑簭鍙�:" prop="creatorid"> + <el-input v-model="registerForm.deptDes" autocomplete="off" clearable></el-input> + </el-form-item> + <el-form-item label="鍒嗘嫞璐т綅绫诲瀷:" prop="creatorid"> + <el-input v-model="registerForm.deptDes" autocomplete="off" clearable></el-input> + </el-form-item> + <el-form-item label="浠撳簱鍦板潃:" prop="creatorid"> + <el-input v-model="registerForm.deptDes" autocomplete="off" clearable></el-input> + </el-form-item> + <el-form-item label="鍏徃鍚嶇О:" prop="creatorid"> + <el-input type="number" v-model="registerForm.deptDes" autocomplete="off" clearable></el-input> + </el-form-item> + <el-form-item label="濮撳悕:" prop="creatorid"> + <el-select v-model="registerForm.enable" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in enableList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鐢佃瘽鍙风爜:" prop="creatorid"> + <el-input v-model="registerForm.deptDes" autocomplete="off" clearable></el-input> + </el-form-item> + <el-form-item label="鎵嬫満:" prop="creatorid"> + <el-select v-model="registerForm.enable" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in enableList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鍒涘缓浜�:" prop="creatorid"> + <el-input v-model="registerForm.deptDes" autocomplete="off" clearable></el-input> + </el-form-item> + <el-form-item label="鏄惁鍙敤:" prop="creatorid"> + <el-switch v-model="registerForm.sortable" :active-value="true" :inactive-value="false"> </el-switch> + </el-form-item> + <el-form-item label="澶囨敞:" prop="creatorid"> + <el-input v-model="registerForm.deptDes" autocomplete="off" clearable></el-input> + </el-form-item> + </el-form> + </div> + <div class="palteEdit-button text-right margin-right15 margin-top2"> + <el-button + type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + @click="submitForm('registerForm')" + >鎻愪氦</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { DeptAddOrUpdate } from '@/api/manage'; +export default { + data() { + return { + registerForm: {}, + usernameList: [], + enableList: [ + { + label: '鍚敤', + value: 1 + }, + { + label: '绂佺敤', + value: 0 + } + ], + + rules: { + deptName: { required: true, message: '璇疯緭閮ㄩ棬鍚嶇О', trigger: 'change' }, + deptDes: { required: true, message: '璇疯緭鍏ラ儴闂ㄦ弿杩�', trigger: 'change' }, + enable: { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' } + }, + savloading: false + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + const { DEPTNAME, DEPTDES, ENABLE } = this.rowitem; + this.registerForm = { + deptName: DEPTNAME, + deptDes: DEPTDES, + enable: ENABLE == 1 ? '鍚敤' : '绂佺敤' + }; + } + }, + methods: { + submitForm(registerForm) { + this.registerForm.enable = + this.registerForm.enable == '鍚敤' ? 1 : this.registerForm.enable == '绂佺敤' ? 0 : this.registerForm.enable; + this.$refs[registerForm].validate(valid => { + if (valid) { + this.savloading = true; + DeptAddOrUpdate(this.registerForm).then(res => { + this.savloading = false; + this.$emit('addsubmit'); + }); + } else { + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.storageEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .storageEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/components/viewdataInquer.vue b/qqjf-Web/src/views/storage/components/viewdataInquer.vue new file mode 100644 index 0000000..4af8252 --- /dev/null +++ b/qqjf-Web/src/views/storage/components/viewdataInquer.vue @@ -0,0 +1,141 @@ +<template> + <div class="flex align-center justify-between"> + <div class="flex align-center"> + <p class="">褰撳墠宸烽亾锛歿{ iqnuer.storageNo }}</p> + <p class="margin-left">褰撳墠鎺掓暟锛歿{ iqnuer.row }}</p> + </div> + <div id="topinquer" class="flex align-center"> + <div class="flex align-center margin-right"> + <p>宸烽亾锛�</p> + <el-select size="mini" v-model="iqnuer.storageNo" @change="storageNochange"> + <el-option + v-for="(item, index) in storageNoList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </div> + <div class="flex align-center margin-right"> + <p style="width: 36%">绗嚑鎺掞細</p> + <el-select size="mini" v-model="iqnuer.row"> + <el-option v-for="(item, index) in rowList" :label="item.label" :value="item.value" :key="index"></el-option> + </el-select> + </div> + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + </div> + </div> +</template> + +<script> +export default { + data() { + return { + iqnuer: { + storageNo: '1', + row: '1' + }, + storageNoList: [ + { + label: '1', + value: 1 + }, + { + label: '2', + value: 2 + }, + { + label: '3', + value: 3 + }, + + { + label: '4', + value: 4 + }, + { + label: '5', + value: 5 + }, + + { + label: '6', + value: 6 + }, + { + label: '7', + value: 7 + }, + { + label: '8', + value: 8 + }, + { + label: '9', + value: 9 + } + ], + rowList: [ + { + label: '1', + value: 1 + }, + { + label: '2', + value: 2 + } + ], + + visible: false, + value1: '' + }; + }, + + mounted() {}, + methods: { + inquer() { + this.$emit('inquer', this.iqnuer); + }, + storageNochange() { + this.iqnuer.row = 1; + if (this.iqnuer.storageNo == 1 || this.iqnuer.storageNo == 5) { + this.rowList = [ + { + label: '1', + value: 1 + }, + { + label: '2', + value: 2 + } + ]; + } else { + this.rowList = [ + { + label: '1', + value: 1 + }, + { + label: '2', + value: 2 + }, + { + label: '3', + value: 3 + }, + { + label: '4', + value: 4 + } + ]; + } + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +#topinquer { +} +</style> diff --git a/qqjf-Web/src/views/storage/components/viewdatainfo.vue b/qqjf-Web/src/views/storage/components/viewdatainfo.vue new file mode 100644 index 0000000..fe6d891 --- /dev/null +++ b/qqjf-Web/src/views/storage/components/viewdatainfo.vue @@ -0,0 +1,77 @@ +<template> + <div class="viewdata fixed width height overflow"> + <div class="box-modal borderR8"> + <div class="title-modal"> + <p class="p-title"> + <slot name="title"></slot> + </p> + <i class="el-icon-close pointer fontSize1_2" @click="$emit('cancel')"></i> + </div> + <div class="centent-modal"> + <!-- <el-scrollbar wrap-class="scrollbar-wrapper" style="height:100%"> --> + <slot name="centent"></slot> + <!-- </el-scrollbar> --> + </div> + </div> + </div> +</template> + +<script> +export default { + data() { + return {}; + }, + + mounted() {}, + methods: {}, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.viewdata { + top: 0; + left: 0; + z-index: 999; + background: rgba(0, 0, 0, 0.5); + .box-modal { + position: absolute; + top: 50%; + left: 50%; + width: 45%; + height: 60%; + border-radius: 6px; + transform: translate(-50%, -50%); + background: #fff; + box-shadow: 0 0 4px #345; + // transition: all 0.5s; + overflow: hidden; + .title-modal { + padding: 10px; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #e6eaf1; + background: #f5f7fa; + .p-title { + font-size: 20px; + padding-left: 5px; + } + .fontSize1_2 { + font-size: 20px; + margin-right: 15px; + &:hover { + transition: all 0.3s; + transform: rotate(360deg); + } + } + } + .centent-modal { + width: 98%; + height: calc(100% - 62px); + padding: 1%; + overflow: hidden; + } + } +} +</style> diff --git a/qqjf-Web/src/views/storage/index.vue b/qqjf-Web/src/views/storage/index.vue new file mode 100644 index 0000000..1ca3ac4 --- /dev/null +++ b/qqjf-Web/src/views/storage/index.vue @@ -0,0 +1,11 @@ +<template> + <keep-alive> + <router-view /> + </keep-alive> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/storage/setting/cass-line/index.vue b/qqjf-Web/src/views/storage/setting/cass-line/index.vue new file mode 100644 index 0000000..8fa35a6 --- /dev/null +++ b/qqjf-Web/src/views/storage/setting/cass-line/index.vue @@ -0,0 +1,169 @@ +<template> + <!-- 浠撳簱淇℃伅 --> + <div id="cassline" class="global-content"> + <!-- 绛涢�� --> + <storage-inquer + byfilter="鐝嚎缂栧彿" + :groupshow="true" + :dele="false" + :filterList="filterList" + @addmodal="addmodal" + @inquer="inquer" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @SizeChange="SizeChange" + @CurrentChange="CurrentChange" + /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">璐т綅绠$悊-{{ title }}</p> + <div class="height" slot="centent"> + <cassline-edit @cancel="addmodalShow = false" :rowitem="rowitem" @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import StorageInquer from '../../components/storage-inquer'; +import CasslineEdit from '../../components/casslineEdit'; +const { cassline } = require('@/components/tableContainer/tableHead'); +import { ProductionLineSearch, ProductionLineDelete } from '@/api/cass-line'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + pageNum: 0, + inuqerobg: {}, + filterList: [ + { + value: '鐝嚎缂栧彿', + label: '鐝嚎缂栧彿' + }, + { + value: '鐝嚎鍚嶇О', + label: '鐝嚎鍚嶇О' + } + ] + }; + }, + components: { TableContainer, StorageInquer, Modal, CasslineEdit }, + computed: { + tableHead() { + return cassline; + } + }, + mounted() { + this.ProductionLineSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.page = 1; + this.ProductionLineSearch(); + }, + //鎼滅储鐢ㄦ埛 + ProductionLineSearch() { + this.$Loading(true); + const { 鐝嚎缂栧彿: productionCode, 鐝嚎鍚嶇О: productionName } = this.inuqerobg; + ProductionLineSearch(this.page + '&onePageNum=' + this.pageSize, { productionCode, productionName }).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + this.pageNum = res.pageNum; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.ProductionLineSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.PlaceVsContainer(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { productionCode } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ョ彮绾�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + ProductionLineDelete({ productionCode }).then(res => { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.ProductionLineSearch(); + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.ProductionLineSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#cassline { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/setting/choose/components/limitModal.vue b/qqjf-Web/src/views/storage/setting/choose/components/limitModal.vue new file mode 100644 index 0000000..34cc2ed --- /dev/null +++ b/qqjf-Web/src/views/storage/setting/choose/components/limitModal.vue @@ -0,0 +1,139 @@ +<template> + <el-dialog + class="project-modal" + title="鎵归噺璁剧疆涓婁笅绾�" + :visible.sync="innerVisible" + :close-on-click-modal="false" + width="500px" + @opened="onModalOpened" + @close="onModalClose" + > + <div class="storage-setting-choose-limit-modal" v-loading="loading"> + <el-form label-width="70px" ref="form" :model="form" :rules="rules" size="mini" @submit.native.prevent> + <!-- <el-form-item label="浠诲姟鍙凤細">{{ row.task_no }}</el-form-item> + <el-form-item label="褰撳墠浼樺厛绾э細">{{ row.task_priority }}</el-form-item> --> + <el-form-item label-width="0px"> + <el-radio-group v-model="form.setType"> + <el-radio :label="item.value" v-for="(item, index) in types" :key="'set-type-' + index">{{ + item.label + }}</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="闄愬畾鍊硷細" prop="number"> + <el-input-number v-model="form.number" :min="0" /> + </el-form-item> + </el-form> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="onClose">鍏� 闂�</el-button> + <el-button type="primary" @click="onSubmit">鎻愪氦</el-button> + </span> + </el-dialog> +</template> + +<script> +import { UpdateMinStorage, UpdateMaxStorage } from '@/api/enterchoose'; +const defaultForm = { + setType: 'minStorage', + number: '' +}; +export default { + name: 'storageSettingChooseLimitModal', + props: { + visible: { + type: Boolean, + default: false + } + }, + data() { + return { + innerVisible: false, + loading: false, + form: { ...defaultForm }, + types: [ + { value: 'minStorage', label: '鏈�灏忓簱瀹�' }, + { value: 'maxStorage', label: '鏈�澶у簱瀹�' } + ], + rules: { + number: [{ validator: this.validateInput, trigger: 'change' }] + } + }; + }, + watch: { + visible(newVal, oldVal) { + if (newVal !== this.innerVisible) { + this.innerVisible = newVal; + } + }, + innerVisible(newVal, oldVal) { + if (newVal !== this.visible) { + this.$emit('update:visible', newVal); + } + } + }, + methods: { + onModalOpened() {}, + onModalClose() { + this.form = { ...defaultForm }; + }, + onClose() { + this.innerVisible = false; + }, + onSubmit() { + this.$refs.form.validate(valid => { + if (valid) { + this.dealSubmit(); + } else { + return false; + } + }); + }, + validateInput(rule, value, callback) { + if (value === '' || value === null) { + callback(new Error('璇风‘璁ら檺瀹氬��')); + } else if (value !== parseInt(value)) { + callback(new Error('闄愬畾鍊煎彧鑳芥槸鏁存暟')); + } else if (value < 0) { + callback(new Error('闄愬畾鍊间笉鍙皬浜�0')); + } else { + callback(); + } + }, + dealSubmit() { + if (this.loading) return false; + this.loading = true; + let params = {}; + params[this.form.setType] = this.form.number; + this.submitAjax(params) + .then(response => { + if (response.code == 0) { + this.$message.success('鎿嶄綔鎴愬姛锛�'); + } else { + let msg = response.msg || '鎿嶄綔澶辫触'; + this.$alert(msg, '绯荤粺鎻愮ず', { type: 'error' }); + } + this.loading = false; + if (response.code == 0) { + this.innerVisible = false; + } + }) + .catch(() => { + this.loading = false; + }); + }, + submitAjax(params) { + if (this.form.setType === 'minStorage') { + return UpdateMinStorage(params); + } else { + return UpdateMaxStorage(params); + } + } + } +}; +</script> + +<style lang="scss" scoped> +.storage-setting-choose-limit-modal { + padding: 12px 8px 0px 18px; +} +</style> diff --git a/qqjf-Web/src/views/storage/setting/choose/index.vue b/qqjf-Web/src/views/storage/setting/choose/index.vue new file mode 100644 index 0000000..9259bb6 --- /dev/null +++ b/qqjf-Web/src/views/storage/setting/choose/index.vue @@ -0,0 +1,365 @@ +<template> + <!-- 闆朵欢绠$悊 --> + <div id="choose" class="global-content"> + <!-- 绛涢�� --> + <storage-inquer + byfilter="闆朵欢缂栧彿" + :groupshow="true" + :derive="true" + :dele="false" + :imexcel="true" + :temp="true" + :set-limit="true" + :use-limit="true" + :use-limit-value="useLimitValue" + :filterList="filterList" + @addmodal="addmodal" + @inquer="inquer" + @derive="derive" + @importfile="importfile" + @changeUseLimitValue="changeUseLimitValue" + @setAllLimit="onOpenLimitModal" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :naxnumShow="false" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">闆朵欢绠$悊-{{ title }}</p> + <div class="height" slot="centent"> + <choose-edit + @cancel="addmodalShow = false" + :rowitem="rowitem" + @addsubmit="addsubmit" + :containerTypeList="containerTypeList" + /> + </div> + </modal> + </transition> + + <limit-modal :visible.sync="limitModalVisible"></limit-modal> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import StorageInquer from '../../components/storage-inquer'; +import chooseEdit from '../../components/chooseEdit'; +import { exportTableList } from '@/utils/excel'; +import { getymdhms } from '@/utils/date'; +import { getCache, setCache, removeToken } from '@/utils/sessionStorage'; +const { edterchoose } = require('@/components/tableContainer/tableHead'); +import { + itemSearch, + ItemDelete, + ImportItemInfo, + GetAllItem, + SearchStorageEnable, + UpdateStorageEnable +} from '@/api/enterchoose'; +import { ContainerTypeSearch } from '@/api/inventory'; +import XLSX from 'xlsx'; +import LimitModal from './components/limitModal.vue'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: ['inOrderCode'], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + pageNum: 0, + inuqerobg: {}, + containerTypeList: [], + filterList: [ + { + value: '闆朵欢缂栧彿', + label: '闆朵欢缂栧彿' + }, + { + value: '闆朵欢鎻忚堪', + label: '闆朵欢鎻忚堪' + }, + { + value: '鐢熶骇鐝嚎', + label: '鐢熶骇鐝嚎' + } + ], + useLimitValue: false, + limitModalVisible: false + }; + }, + components: { TableContainer, StorageInquer, Modal, chooseEdit, LimitModal }, + computed: { + tableHead() { + return edterchoose; + } + }, + mounted() { + this.searchStorageEnable(f => { + if (f) { + this.itemSearch(); + this.ContainerTypeSearch(); + } + }); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.page = 1; + this.itemSearch(); + }, + //瀵煎叆 + importfile(e) { + this.readExcel(e); + }, + //瀵煎嚭 + derive() { + let tHeader = []; + let filterVal = []; + GetAllItem().then(res => { + res.forEach(item => (item.isLock = item.isLock == 1 ? '鏄�' : item.isLock == 0 ? '鍚�' : item.isLock)); + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + exportTableList(tHeader, filterVal, res, '闆朵欢绠$悊' + getymdhms()); + }); + }, + searchStorageEnable(callback) { + SearchStorageEnable() + .then(d => { + if (d.code === 0) { + this.useLimitValue = true; + } else { + this.useLimitValue = false; + } + callback && callback(true); + }) + .catch(err => { + callback && callback(false); + }); + }, + changeUseLimitValue() { + let msg = '鏄惁纭瑕�'; + if (this.useLimitValue) { + msg += '鍏抽棴'; + } else { + msg += '鍚敤'; + } + msg += '涓婁笅绾垮垽鏂紵'; + this.$confirm(msg, '绯荤粺鎻愮ず', { + type: 'warning' + }) + .then(() => { + this.dealChangeUseLimitValue(); + }) + .catch(() => {}); + }, + dealChangeUseLimitValue() { + this.$Loading(true); + let params = { storageEnable: 1 }; + if (this.useLimitValue) { + params.storageEnable = 0; + } + UpdateStorageEnable(params) + .then(d => { + this.$Loading(); + if (d.code === 0) { + this.useLimitValue = !this.useLimitValue; + this.$message.success('鎿嶄綔鎴愬姛'); + } else { + let msg = d.msg || '鎿嶄綔澶辫触'; + this.$alert(msg, '绯荤粺鎻愮ず', { type: 'error' }); + } + }) + .catch(() => { + this.$Loading(); + }); + }, + //鎼滅储闆朵欢 + itemSearch() { + console.log(process.env.IMAGE_URL); + var url = process.env.IMAGE_URL; + this.$Loading(true); + const { 闆朵欢缂栧彿: itemName, 闆朵欢鎻忚堪: itemDes, 鐢熶骇鐝嚎: createLine } = this.inuqerobg; + itemSearch(this.page + '&onePageNum=' + this.pageSize, { itemName, itemDes, createLine }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.image = process.env.IMAGE_URL + item.image; + }); + this.tableData = data; + this.totle = res.num; + this.pageNum = res.pageNum; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + this.page = e; + this.itemSearch(); + }, + ContainerTypeSearch() { + ContainerTypeSearch().then(res => { + if (res != null && res != []) { + let data = res || []; + this.containerTypeList = data; + } + }); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.itemSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + const { itemName } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ラ浂浠朵俊鎭�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + ItemDelete({ itemName }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.itemSearch(); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.itemSearch(); + }, + readExcel(e) { + // 璇诲彇琛ㄦ牸鏂囦欢 + let _this = this; + const files = e.file; + // debugger; + if (files.length <= 0) { + return false; + } else if (!/\.(xls|xlsx)$/.test(files.name.toLowerCase())) { + this.$message({ + message: '涓婁紶鏍煎紡涓嶆纭紝璇蜂笂浼爔ls鎴栬�厁lsx鏍煎紡', + type: 'warning' + }); + return false; + } else { + // 鏇存柊鑾峰彇鏂囦欢鍚� + console.log(files); + } + + const fileReader = new FileReader(); + fileReader.onload = ev => { + try { + const data = ev.target.result; + const workbook = XLSX.read(data, { + type: 'binary' + }); + const wsname = workbook.SheetNames[0]; //鍙栫涓�寮犺〃 + const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //鐢熸垚json琛ㄦ牸鍐呭 + let list = []; + + ws.forEach(item => { + list.push({ + itemName: item['闆朵欢缂栧彿'], + itemDes: item['闆朵欢鎻忚堪'], + unit: item['鍗曚綅'], + price: item['鍗曚环'], + weight: item['閲嶉噺'], + weightDifference: item['鍗曚釜鍏樊'], + createLine: item['鐢熶骇鐝嚎'], + maxNum: item['瑁呯鏁伴噺'], + maxStorage: item['搴撳鏈�澶ч噺'], + minStorage: item['搴撳鏈�灏忛噺'], + overDueTime: item['瓒呮湡鏃堕棿(/澶�)'] + }); + }); + _this.ImportItemInfo(JSON.stringify(list)); + } catch (e) { + return false; + } + }; + fileReader.readAsBinaryString(files); + }, + //瀵煎叆鎺ュ彛 + ImportItemInfo(list) { + ImportItemInfo({ userName: getCache('userInfo').userName, items: list }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '瀵煎叆鎴愬姛' + }); + } else { + this.$message({ + type: 'warning', + message: '瀵煎叆澶辫触锛佽鎸夌収妯℃澘濉叆鍐呭' + }); + } + }); + this.itemSearch(); + }, + onOpenLimitModal() { + this.limitModalVisible = true; + } + } +}; +</script> + +<style lang="scss" scoped> +#choose { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/setting/forklift/index.vue b/qqjf-Web/src/views/storage/setting/forklift/index.vue new file mode 100644 index 0000000..634b035 --- /dev/null +++ b/qqjf-Web/src/views/storage/setting/forklift/index.vue @@ -0,0 +1,176 @@ +<template> + <!-- 鍙夎溅绠$悊 --> + <div id="forklift" class="global-content"> + <!-- 绛涢�� --> + <storage-inquer + byfilter="鍙夎溅鍚�" + :groupshow="true" + :dele="false" + :filterList="filterList" + @addmodal="addmodal" + @inquer="inquer" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :naxnumShow="false" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">鍙夎溅绠$悊-{{ title }}</p> + <div class="height" slot="centent"> + <forklift-edit @cancel="addmodalShow = false" :rowitem="rowitem" @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import StorageInquer from '../../components/storage-inquer'; +import forkliftEdit from '../../components/forkliftEdit'; +const { forklift } = require('@/components/tableContainer/tableHead'); +import { CarSearch, CarDelete } from '@/api/forklift'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: ['inOrderCode'], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + pageNum: 0, + inuqerobg: {}, + filterList: [ + { + value: '鍙夎溅鍚�', + label: '鍙夎溅鍚�' + }, + { + value: '鍙夎溅鍙�', + label: '鍙夎溅鍙�' + }, + { + value: '椹鹃┒鍛�', + label: '椹鹃┒鍛�' + } + ] + }; + }, + components: { TableContainer, StorageInquer, Modal, forkliftEdit }, + computed: { + tableHead() { + return forklift; + } + }, + mounted() { + this.CarSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.page = 1; + this.CarSearch(); + }, + //鎼滅储鐢ㄦ埛 + CarSearch() { + this.$Loading(true); + const { 鍙夎溅鍚�: carName, 鍙夎溅鍙�: carCode, 椹鹃┒鍛�: userName} = this.inuqerobg; + CarSearch(this.page + '&onePageNum=' + this.pageSize, { carName, carCode, userName }).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + this.pageNum = res.pageNum; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.CarSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.CarSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { carName } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + CarDelete({ carName }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.CarSearch(); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.CarSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#forklift { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/setting/index.vue b/qqjf-Web/src/views/storage/setting/index.vue new file mode 100644 index 0000000..1cb60c6 --- /dev/null +++ b/qqjf-Web/src/views/storage/setting/index.vue @@ -0,0 +1,9 @@ +<template> + <router-view /> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/storage/setting/palte/index.vue b/qqjf-Web/src/views/storage/setting/palte/index.vue new file mode 100644 index 0000000..81a472b --- /dev/null +++ b/qqjf-Web/src/views/storage/setting/palte/index.vue @@ -0,0 +1,196 @@ +<template> + <!-- 浠撳簱淇℃伅 --> + <div id="palte" class="global-content"> + <!-- 绛涢�� --> + <storage-inquer + byfilter="鍣ㄥ叿缂栧彿" + :filterList="filterList" + :derive="true" + :dele="false" + @addmodal="addmodal" + @inquer="inquer" + @derive="derive" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">鍣ㄥ叿绠$悊-{{ title }}</p> + <div class="height" slot="centent"> + <palte-edit @cancel="addmodalShow = false" :rowitem="rowitem" @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import StorageInquer from '../../components/storage-inquer'; +import PalteEdit from '../../components/palteEdit'; +import { exportTableList } from '@/utils/excel'; +import { getymdhms } from '@/utils/date'; +const { palte } = require('@/components/tableContainer/tableHead'); +import { ContainerSearch, ContainerDelete, GetAllContainer } from '@/api/palte'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + inuqerobg: {}, + filterList: [ + { + value: '鍣ㄥ叿缂栧彿', + label: '鍣ㄥ叿缂栧彿' + }, + { + value: '鍣ㄥ叿瑙勬牸', + label: '鍣ㄥ叿瑙勬牸' + }, + { + value: '瑙勬牸鎻忚堪', + label: '瑙勬牸鎻忚堪' + } + ] + }; + }, + components: { TableContainer, StorageInquer, Modal, PalteEdit }, + computed: { + tableHead() { + return palte; + } + }, + mounted() { + this.ContainerSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + console.log(e); + this.inuqerobg = e; + this.page = 1; + this.ContainerSearch(); + }, + //鎼滅储鐢ㄦ埛 + ContainerSearch() { + this.$Loading(true); + const { 鍣ㄥ叿缂栧彿: containerName, 鍣ㄥ叿瑙勬牸: containerType, 瑙勬牸鎻忚堪: palletType } = this.inuqerobg; + ContainerSearch(this.page + '&onePageNum=' + this.pageSize, { containerName, containerType, palletType }).then( + res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + } + this.$Loading(); + } + ); + }, + //瀵煎嚭 + derive() { + let tHeader = []; + let filterVal = []; + GetAllContainer().then(res => { + res.forEach(item => (item.isLock = item.isLock == 1 ? '鏄�' : item.isLock == 0 ? '鍚�' : item.isLock)); + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + exportTableList(tHeader, filterVal, res, '鍣ㄥ叿绠$悊' + getymdhms()); + }); + }, + CurrentChange(e) { + this.page = e; + this.ContainerSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.ContainerSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { containerName } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎閫変腑鐨勬暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + ContainerDelete({ containerName }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.ContainerSearch(); + } else { + this.$message({ + type: 'success', + message: '鍒犻櫎澶辫触!' + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.ContainerSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#palte { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/setting/position/index.vue b/qqjf-Web/src/views/storage/setting/position/index.vue new file mode 100644 index 0000000..224aa52 --- /dev/null +++ b/qqjf-Web/src/views/storage/setting/position/index.vue @@ -0,0 +1,170 @@ +<template> + <!-- 浠撳簱淇℃伅 --> + <div id="position" class="global-content"> + <!-- 绛涢�� --> + <storage-inquer + byfilter="璐т綅鍚嶇О" + :groupshow="false" + :dele="true" + :isLockshow="true" + :filterList="filterList" + @addmodal="addmodal" + @inquer="inquer" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">璐т綅绠$悊-{{ title }}</p> + <div class="height" slot="centent"> + <position-edit @cancel="addmodalShow = false" :rowitem="rowitem" @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import StorageInquer from '../../components/storage-inquer'; +import PositionEdit from '../../components/positionEdit'; +const { position } = require('@/components/tableContainer/tableHead'); +import { PlaceSearch, UserDelete } from '@/api/position'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + pageNum: 0, + inuqerobg: {}, + filterList: [ + { + value: '璐т綅鍚嶇О', + label: '璐т綅鍚嶇О' + }, + { + value: '搴撲綅瑙勬牸', + label: '搴撲綅瑙勬牸' + } + ] + }; + }, + components: { TableContainer, StorageInquer, Modal, PositionEdit }, + computed: { + tableHead() { + return position; + } + }, + mounted() { + this.PlaceSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.page = 1; + this.PlaceSearch(); + }, + //鎼滅储鐢ㄦ埛 + PlaceSearch() { + this.$Loading(true); + const { 璐т綅鍚嶇О: place, 搴撲綅绫诲瀷: placeType, isLock } = this.inuqerobg; + PlaceSearch(this.page + '&onePageNum=' + this.pageSize, { place, placeType, isLock }).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + this.pageNum = res.pageNum; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.PlaceSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.PlaceSearch(); + }, + //缂栬緫 + edit(row) { + this.rowitem = { ...row }; + this.title = '缂栬緫'; + this.addmodalShow = true; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { USERNAME } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ョ敤鎴�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + // UserDelete({ userName: USERNAME }).then(res => { + // this.$message({ + // type: 'success', + // message: '鍒犻櫎鎴愬姛!' + // }); + // this.PlaceSearch(); + // }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.PlaceSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#position { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/storage/setting/storage-area/index.vue b/qqjf-Web/src/views/storage/setting/storage-area/index.vue new file mode 100644 index 0000000..e904c17 --- /dev/null +++ b/qqjf-Web/src/views/storage/setting/storage-area/index.vue @@ -0,0 +1,9 @@ +<template> + <div></div> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/storage/setting/storage/index.vue b/qqjf-Web/src/views/storage/setting/storage/index.vue new file mode 100644 index 0000000..53de4ae --- /dev/null +++ b/qqjf-Web/src/views/storage/setting/storage/index.vue @@ -0,0 +1,136 @@ +<template> + <!-- 浠撳簱淇℃伅 --> + <div id="storage" class="global-content"> + <!-- 绛涢�� --> + <storage-inquer @addmodal="addmodal" /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :totle="totle" + @edit="edit" + @del="del" + @handleSizeChange="handleSizeChange" + /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">浠撳簱绠$悊-{{ title }}</p> + <div class="height" slot="centent"> + <storage-edit @cancel="addmodalShow = false" :rowitem="rowitem" @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import StorageInquer from '../../components/storage-inquer'; +import StorageEdit from '../../components/storageEdit'; +const { storage } = require('@/components/tableContainer/tableHead'); +// import { UserSearch, UserDelete } from '@/api/storage'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + rowitem: {}, + totle: 0, + page: 1 + }; + }, + components: { TableContainer, StorageInquer, Modal, StorageEdit }, + computed: { + tableHead() { + return storage; + } + }, + mounted() { + this.UserSearch(); + }, + methods: { + //鎼滅储鐢ㄦ埛 + UserSearch() { + this.$Loading(true); + UserSearch(this.page).then(res => { + if (res.code == 0) { + // this.tableData = res.data; + // this.totle = res.num; + } + }); + }, + handleSizeChange(e) { + console.log(e); + this.page = e; + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.PlaceSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { USERNAME } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + UserDelete({ userName: USERNAME }).then(res => { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.UserSearch(); + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.UserSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#storage { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/system/index.vue b/qqjf-Web/src/views/system/index.vue new file mode 100644 index 0000000..1ca3ac4 --- /dev/null +++ b/qqjf-Web/src/views/system/index.vue @@ -0,0 +1,11 @@ +<template> + <keep-alive> + <router-view /> + </keep-alive> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/system/user/components/deptEdit.vue b/qqjf-Web/src/views/system/user/components/deptEdit.vue new file mode 100644 index 0000000..458a81a --- /dev/null +++ b/qqjf-Web/src/views/system/user/components/deptEdit.vue @@ -0,0 +1,135 @@ +<template> + <div class="manageEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="100px" + > + <el-form-item label="閮ㄩ棬鍚嶇О:" prop="deptName"> + <el-input v-model="registerForm.deptName" clearable></el-input> + </el-form-item> + + <el-form-item label="閮ㄩ棬鎻忚堪:" prop="creatorid"> + <el-input v-model="registerForm.deptDes" autocomplete="off" clearable></el-input> + </el-form-item> + + <el-form-item label="鏄惁鍚敤:" prop="enable"> + <el-select v-model="registerForm.enable" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in enableList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-form> + </div> + <div class="manageedit-button text-right"> + <el-button + type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + @click="submitForm('registerForm')" + >鎻愪氦</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { DeptAddOrUpdate } from '@/api/dept'; +export default { + data() { + return { + registerForm: { + deptName: '', + deptDes: '', + enable: '' + }, + passwordType: 'password', + usernameList: [], + enableList: [ + { + label: '鍚敤', + value: 1 + }, + { + label: '绂佺敤', + value: 0 + } + ], + rules: { + deptName: { required: true, message: '璇疯緭閮ㄩ棬鍚嶇О', trigger: 'change' }, + deptDes: { required: true, message: '璇疯緭鍏ラ儴闂ㄦ弿杩�', trigger: 'change' }, + enable: { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' } + }, + savloading: false + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + // const { DEPTNAME, DEPTDES, ENABLE } = this.rowitem; + // this.registerForm = { + // deptName: DEPTNAME, + // deptDes: DEPTDES, + // enable: ENABLE == 1 ? '鍚敤' : '绂佺敤' + // }; + } + }, + methods: { + submitForm(registerForm) { + this.registerForm.enable = + this.registerForm.enable == '鍚敤' ? 1 : this.registerForm.enable == '绂佺敤' ? 0 : this.registerForm.enable; + this.$refs[registerForm].validate(valid => { + if (valid) { + this.savloading = true; + DeptAddOrUpdate(this.registerForm).then(res => { + this.$emit('addsubmit'); + this.savloading = false; + }); + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.manageEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 92%; + margin: auto; + } + .manageedit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/system/user/components/manageEdit.vue b/qqjf-Web/src/views/system/user/components/manageEdit.vue new file mode 100644 index 0000000..7ad3364 --- /dev/null +++ b/qqjf-Web/src/views/system/user/components/manageEdit.vue @@ -0,0 +1,199 @@ +<template> + <div class="manageEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="100px"> + <el-form-item label="鐧诲綍鍚�:" + prop="userName"> + <el-input v-model="registerForm.userName" + clearable></el-input> + </el-form-item> + + <el-form-item prop="password" + label="瀵嗙爜:"> + <el-input :key="passwordType" + ref="password" + v-model="registerForm.password" + :type="passwordType" + placeholder="" + name="password" + tabindex="2" + autocomplete="on" /> + <span class="show-pwd" + @click="showPwd"> + <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" /> + </span> + </el-form-item> + <el-form-item label="鐪熷疄濮撳悕:" + prop="userTrueName"> + <el-input v-model="registerForm.userTrueName" + clearable></el-input> + </el-form-item> + + <el-form-item label="閮ㄩ棬:" + prop="deptName"> + <!-- <el-input v-model="registerForm.deptName" autocomplete="off" clearable></el-input> --> + <el-select v-model="registerForm.deptName" + filterable + clearable + placeholder="璇烽�夋嫨"> + <el-option v-for="(item, index) in deptList" + :key="index + 'deptName'" + :label="item.deptName" + :value="item.deptName"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="瑙掕壊鍚�:" + prop="roleName"> + <!-- <el-input v-model="registerForm.rolename" clearable></el-input> --> + <el-select v-model="registerForm.roleName" + filterable + clearable + placeholder="璇烽�夋嫨"> + <el-option v-for="(item, index) in usernameList" + :key="index + 'rolname'" + :label="item.roleName" + :value="item.roleName"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="" + prop="IsWeldingAuditGroup"> + <el-checkbox v-model="registerForm.IsWeldingAuditGroup">鏄惁鐒婅瀹℃牳缁�</el-checkbox> + </el-form-item> + </el-form> + </div> + <div class="manageedit-button text-right"> + <el-button type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + @click="submitForm('registerForm')">鎻愪氦</el-button> + <el-button type="primary" + size="mini" + class="form-buttom" + @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { AddOrUpdate } from '@/api/manage'; +import { DeptSearch } from '@/api/dept'; +import { RoleSearch } from '@/api/role'; +export default { + data () { + return { + registerForm: { + userName: '', + password: '', + userTrueName: '', + deptName: '', + roleName: '', + IsWeldingAuditGroup: false + }, + passwordType: 'password', + usernameList: [], + deptList: [], + rules: { + userName: { required: true, message: '璇疯緭鐧诲綍鍚�', trigger: 'change' }, + password: { required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'change' }, + userTrueName: { required: true, message: '璇疯緭鍏ョ湡瀹炲鍚�', trigger: 'change' }, + deptName: { required: true, message: '璇疯緭鍏ラ儴闂�', trigger: 'change' }, + roleName: { required: true, message: '璇疯緭鍏ヨ鑹插悕', trigger: 'change' } + }, + savloading: false + }; + }, + props: { + rowitem: { + type: [Object, Array], + default: {} + } + }, + mounted () { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + //console.log('IsWeldingAuditGroup' + this.registerForm.IsWeldingAuditGroup); + } + this.DeptSearch(); + this.RoleSearch(); + }, + methods: { + //缁欓暱瀹介珮璧嬪�� + DeptSearch () { + DeptSearch('1&onePageNum=999').then(res => { + if (res.code == 0) { + this.deptList = res.data; + } + }); + }, + //瑙掕壊 + RoleSearch () { + RoleSearch('1&onePageNum=999').then(res => { + if (res.code == 0) { + this.usernameList = res.data; + } + }); + }, + showPwd () { + if (this.passwordType === 'password') { + this.passwordType = ''; + } else { + this.passwordType = 'password'; + } + this.$nextTick(() => { + this.$refs.password.focus(); + }); + }, + submitForm (registerForm) { + this.$refs[registerForm].validate(valid => { + if (valid) { + let params = { ...this.registerForm } + delete params.passWord; + this.savloading = true; + AddOrUpdate(params).then(res => { + this.$emit('addsubmit'); + this.savloading = false; + }); + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.manageEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 92%; + margin: auto; + } + .manageedit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/system/user/components/roleEdIt.vue b/qqjf-Web/src/views/system/user/components/roleEdIt.vue new file mode 100644 index 0000000..3485690 --- /dev/null +++ b/qqjf-Web/src/views/system/user/components/roleEdIt.vue @@ -0,0 +1,139 @@ +<template> + <div class="manageEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="100px" + > + <el-form-item label="瑙掕壊鍚嶇О:" prop="roleName"> + <el-input v-model="registerForm.roleName" clearable></el-input> + </el-form-item> + + <el-form-item label="鍒涘缓鐢ㄦ埛:" prop="creatorId"> + <el-input v-model="registerForm.creatorId" autocomplete="off" clearable></el-input> + </el-form-item> + + <el-form-item label="鏄惁鍚敤:" prop="enable"> + <el-select v-model="registerForm.enable" clearable placeholder="璇烽�夋嫨"> + <el-option v-for="item in enableList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-form> + </div> + <div class="manageedit-button text-right"> + <el-button + type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + @click="submitForm('registerForm')" + >鎻愪氦</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { RoleAddOrUpdate } from '@/api/role'; +export default { + data() { + return { + registerForm: { + roleName: '', + creatorId: '', + enable: '' + }, + enableList: [ + { + label: '鍚敤', + value: 1 + }, + { + label: '绂佺敤', + value: 0 + } + ], + rules: { + roleName: { required: true, message: '璇疯緭瑙掕壊鍚嶇О', trigger: 'change' }, + creatorId: { required: true, message: '璇疯緭鍏ュ垱寤虹敤鎴�', trigger: 'change' }, + enable: { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' } + }, + savloading: false + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + mounted() { + console.log(this.rowitem); + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + // const { ROLENAME, ENABLE, CREATORID } = this.rowitem; + // this.registerForm = { + // roleName: ROLENAME, + // creatorid: CREATORID, + // enable: ENABLE == 1 ? '鍚敤' : '绂佺敤' + // }; + } + }, + methods: { + submitForm(registerForm) { + console.log(this.registerForm); + this.registerForm.enable = + this.registerForm.enable == '鍚敤' ? 1 : this.registerForm.enable == '绂佺敤' ? 0 : this.registerForm.enable; + this.$refs[registerForm].validate(valid => { + if (valid) { + this.savloading = true; + RoleAddOrUpdate(this.registerForm).then(res => { + this.$emit('addsubmit'); + this.savloading = false; + }); + } + }); + } + }, + watch: { + rowitem: { + handler(nvl, ovl) {} + } + } +}; +</script> + +<style lang="scss" scoped> +.manageEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 92%; + margin: auto; + } + .manageedit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/system/user/components/topinquer.vue b/qqjf-Web/src/views/system/user/components/topinquer.vue new file mode 100644 index 0000000..59f89db --- /dev/null +++ b/qqjf-Web/src/views/system/user/components/topinquer.vue @@ -0,0 +1,120 @@ +<template> + <div class="flex align-center justify-between"> + <div class=""> + <el-button-group> + <el-button type="primary" + size="mini" + icon="el-icon-plus" + @click="$emit('addmodal')">鏂板缓</el-button> + <el-button v-if="delshow" + type="primary" + size="mini" + icon="el-icon-delete">鍒犻櫎</el-button> + </el-button-group> + </div> + <div id="topinquer" + class="flex align-center"> + <div class="flex align-center margin-right"> + <el-checkbox v-model="iqnuer.IsWeldingAuditGroup">鏄惁鐒婅瀹℃牳缁�</el-checkbox> + </div> + <div class="flex align-center margin-right"> + <!-- <el-input size="mini" v-model="iqnuer" clearable class="input-with-select" /> --> + <el-input size="mini" + clearable + v-model="iqnuer[filter]" + class="input-with-select"> + <el-select @change="selchange" + v-model="filter" + slot="prepend"> + <el-option v-for="(item, index) in filterList" + :label="item.label" + :value="item.value" + :key="index"></el-option> + </el-select> + </el-input> + </div> + <el-button type="primary" + size="mini" + @click="inquer">鏌ヨ</el-button> + + <!-- <el-popover v-if="advanced" placement="bottom" title="楂樼骇鏌ヨ" width="400" trigger="manual" v-model="visible"> + <div> + <div class="width flex margin-right align-center justify-between"> + <label class="width30 text-right">淇敼鏃堕棿锛�</label> + <el-date-picker + v-model="applytime" + type="datetimerange" + clearable + size="mini" + value-format="yyyy-MM-dd HH:mm:ss" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + :default-time="['00:00:00', '23:59:59']" + > + </el-date-picker> + </div> + </div> + <span slot="reference" class="margin-left color409EFF pointer" @click="visible = !visible">楂樼骇</span> + </el-popover> --> + </div> + </div> +</template> + +<script> +export default { + data () { + return { + iqnuer: {}, + applytime: [], + filter: '', + visible: false, + value1: '' + }; + }, + props: { + advanced: { + type: Boolean, + default: false + }, + delshow: { + type: Boolean, + default: false + }, + byfilter: { + type: String, + default: '' + }, + filterList: { + type: Array, + default: () => [] + } + }, + mounted () { + this.filter = this.byfilter; + }, + methods: { + inquer () { + this.$emit('inquer', this.iqnuer); + }, + selchange () { + this.iqnuer = {}; + } + }, + watch: { + byfilter: { + handler (nvl, ovl) { + this.filter = nvl; + } + } + } +}; +</script> + +<style lang="scss" scoped> +#topinquer { + ::v-deep .el-select { + width: 100px; + } +} +</style> diff --git a/qqjf-Web/src/views/system/user/dept/index.vue b/qqjf-Web/src/views/system/user/dept/index.vue new file mode 100644 index 0000000..d7bbbde --- /dev/null +++ b/qqjf-Web/src/views/system/user/dept/index.vue @@ -0,0 +1,165 @@ +<template> + <!-- 閮ㄩ棬绠$悊 --> + <div id="dept" class="global-content"> + <!-- 绛涢�� --> + <top-inquer byfilter="閮ㄩ棬鍚嶇О" :filterList="filterList" @addmodal="EditmodalShow = true" @inquer="inquer" /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + + <transition name="modal"> + <modal v-if="EditmodalShow" :modabg="true" @cancel="EditmodalShow = false"> + <p slot="title">缁勭粐鏋舵瀯-{{ title }}</p> + <div class="height" slot="centent"> + <dept-edit :rowitem="rowitem" @addsubmit="addsubmit" @cancel="EditmodalShow = false" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import TopInquer from '../components/topinquer'; +import DeptEdit from '../components/deptEdit'; +const { dept } = require('@/components/tableContainer/tableHead'); +import { DeptSearch, DeptDelete } from '@/api/dept'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + EditmodalShow: false, + wipelist: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + inuqerobg: {}, + filterList: [ + { + value: '閮ㄩ棬鍚嶇О', + label: '閮ㄩ棬鍚嶇О' + }, + { + value: '閮ㄩ棬鎻忚堪', + label: '閮ㄩ棬鎻忚堪' + } + ] + }; + }, + components: { TableContainer, TopInquer, Modal, DeptEdit }, + computed: { + tableHead() { + return dept; + } + }, + mounted() { + this.DeptSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.DeptSearch(e); + }, + //鎼滅储鏁版嵁 + DeptSearch(e) { + this.$Loading(true); + const { 閮ㄩ棬鍚嶇О: deptName, 閮ㄩ棬鎻忚堪: deptDes } = this.inuqerobg; + DeptSearch(this.page + '&onePageNum=' + this.pageSize, { deptName, deptDes }).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + this.page = e; + this.DeptSearch(e); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.DeptSearch(); + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { deptName } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ラ儴闂ㄤ俊鎭�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + DeptDelete({ deptName }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + } else { + this.$message({ + type: 'warning', + message: '鍒犻櫎澶辫触!' + }); + } + + this.DeptSearch(); + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //缂栬緫 + edit(row) { + this.rowitem = { ...row }; + this.EditmodalShow = true; + this.title = '缂栬緫'; + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.EditmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.EditmodalShow = false; + this.DeptSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#dept { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/system/user/index.vue b/qqjf-Web/src/views/system/user/index.vue new file mode 100644 index 0000000..1cb60c6 --- /dev/null +++ b/qqjf-Web/src/views/system/user/index.vue @@ -0,0 +1,9 @@ +<template> + <router-view /> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/system/user/manage/index.vue b/qqjf-Web/src/views/system/user/manage/index.vue new file mode 100644 index 0000000..2373a56 --- /dev/null +++ b/qqjf-Web/src/views/system/user/manage/index.vue @@ -0,0 +1,172 @@ +<template> + <!-- 鐢ㄦ埛绠$悊 --> + <div id="manage" + class="global-content"> + <!-- 绛涢�� --> + <top-inquer byfilter="鐧诲綍鍚�" + :filterList="filterList" + @addmodal="addmodal" + @inquer="inquer" /> + <!-- table --> + <div class="table"> + <table-container :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" + :modabg="true" + @cancel="addmodalShow = false"> + <p slot="title">鍏徃鍛樺伐-{{ title }}</p> + <div class="height" + slot="centent"> + <manage-edit @cancel="addmodalShow = false" + :rowitem="rowitem" + @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import TopInquer from '../components/topinquer'; +const { manage } = require('@/components/tableContainer/tableHead'); +import ManageEdit from '../components/manageEdit'; +import { UserSearch, UserDelete } from '@/api/manage'; +export default { + data () { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + inuqerobg: {}, + filterList: [ + { + value: '鐧诲綍鍚�', + label: '鐧诲綍鍚�' + } + ] + }; + }, + components: { TableContainer, TopInquer, Modal, ManageEdit }, + computed: { + tableHead () { + return manage; + } + }, + mounted () { + this.UserSearch(); + }, + methods: { + //鏌ヨ + inquer (e) { + console.log(e); + this.inuqerobg = e; + this.UserSearch(); + }, + //鎼滅储鐢ㄦ埛 + UserSearch () { + this.$Loading(true); + const { 鐧诲綍鍚�: userName, IsWeldingAuditGroup: IsWeldingAuditGroup } = this.inuqerobg; + UserSearch(this.page + '&onePageNum=' + this.pageSize, { userName, IsWeldingAuditGroup }).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + } + this.$Loading(); + }); + }, + CurrentChange (e) { + console.log(e); + this.page = e; + this.UserSearch(); + }, + //椤垫暟 + SizeChange (e) { + this.pageSize = e; + this.UserSearch(); + }, + //缂栬緫 + edit (row) { + this.rowitem = { ...row }; + this.addmodalShow = true; + + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del (row) { + console.log(row); + const { userName } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ョ敤鎴�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + UserDelete({ userName }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + } else { + this.$message({ + type: 'warning', + message: '鍒犻櫎澶辫触!' + }); + } + + this.UserSearch(); + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal () { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit () { + this.addmodalShow = false; + this.modalShow = false; + this.UserSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#manage { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/system/user/role/index.vue b/qqjf-Web/src/views/system/user/role/index.vue new file mode 100644 index 0000000..3fab029 --- /dev/null +++ b/qqjf-Web/src/views/system/user/role/index.vue @@ -0,0 +1,156 @@ +<template> + <!-- 瑙掕壊绠$悊 --> + <div id="role" class="global-content"> + <!-- 绛涢�� --> + <top-inquer byfilter="瑙掕壊鍚嶇О" :filterList="filterList" :advanced="true" @addmodal="addmodal" @inquer="inquer" /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :totle="totle" + :currentPage="page" + :pageSize="pageSize" + @del="del" + @edit="edit" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + + <transition name="modal"> + <modal v-if="EditmodalShow" :modabg="true" @cancel="EditmodalShow = false"> + <p slot="title">瑙掕壊绠$悊-{{ title }}</p> + <div class="height" slot="centent"> + <role-edit :rowitem="rowitem" @addsubmit="addsubmit" @cancel="EditmodalShow = false" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import TopInquer from '../components/topinquer'; +import RoleEdit from '../components/roleEdIt'; +const { role } = require('@/components/tableContainer/tableHead'); +import { RoleSearch, RoleDelete } from '@/api/role'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + EditmodalShow: false, + wipelist: [], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + inuqerobg: {}, + filterList: [ + { + value: '瑙掕壊鍚嶇О', + label: '瑙掕壊鍚嶇О' + } + ] + }; + }, + components: { TableContainer, TopInquer, Modal, RoleEdit }, + computed: { + tableHead() { + return role; + } + }, + mounted() { + this.RoleSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + console.log(e); + this.inuqerobg = e; + this.RoleSearch(); + }, + //鏌ヨ鐢ㄦ埛 + RoleSearch() { + this.$Loading(true); + const { 瑙掕壊鍚嶇О: roleName } = this.inuqerobg; + RoleSearch(this.page + '&onePageNum=' + this.pageSize, { roleName }).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.RoleSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.RoleSearch(); + }, + //缂栬緫 + edit(row) { + this.EditmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { roleName } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ョ敤鎴�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + RoleDelete({ roleName }).then(res => { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.RoleSearch(); + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.EditmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.EditmodalShow = false; + this.modalShow = false; + this.RoleSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#role { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/system/user/roleAuth/index.vue b/qqjf-Web/src/views/system/user/roleAuth/index.vue new file mode 100644 index 0000000..f5348bf --- /dev/null +++ b/qqjf-Web/src/views/system/user/roleAuth/index.vue @@ -0,0 +1,360 @@ +<template> + <div id="role-auth" class="global-content"> + <div class="width height overflow flex align-start justify-around"> + <div class="width20 height99 left-aside overflow"> + <div class="left-role-title" @click="refresh">璇烽�夋嫨瑙掕壊</div> + <div class="width height-calc40 overflowy-auto"> + <template v-for="(item, index) in roleList"> + <div + @click="activeclick(item, index)" + class="pointer paddingtopbottom textindex2 hover" + :class="activeindex == index ? 'color409EFF backgroundecf5ff' : ''" + :key="index + 'role'" + > + {{ item.roleName }} + </div> + </template> + </div> + </div> + <div class="width78 height overflow"> + <el-tabs v-model="currentTab" type="card" class="width height" @tab-click="handleClick"> + <el-tab-pane class="width height" label="瑙掕壊鏉冮檺璁剧疆" name="user"> + <div ref="el-main" class="height" style="padding: 0"> + <el-card class="box-card height99 overflow"> + <div slot="header" class="clearfix"> + <span>瑙掕壊鏉冮檺璁剧疆 - {{ title }}</span> + </div> + <tree-table + ref="tree-table" + :data="menuList" + :expand-all="expandAll" + height="100%" + border + class="heightclacimport overflow" + tree-column-label="鑿滃崟鍚嶇О" + @row-selected="rowSelected" + > + <el-table-column label="鏉冮檺鐐�"> + <template slot-scope="scope"> + <el-checkbox + v-for="(item, index) in scope.row.auth" + :key="index" + v-model="item.value" + :true-label="1" + :false-label="0" + :checked="!!item.value" + @change="checkAuthNode(scope.row)" + >{{ item.label }}</el-checkbox + > + </template> + </el-table-column> + </tree-table> + <div class="tool absolute bottom7"> + <el-button :loading="loading" type="primary" size="mini" @click="saveAuth">淇濆瓨</el-button> + </div> + </el-card> + </div> + </el-tab-pane> + <el-tab-pane class="width height" label="APP鏉冮檺璁剧疆" name="app"> + <el-main ref="el-main" class="height" style="padding: 0"> + <el-card class="box-card height99 overflow"> + <div slot="header" class="clearfix"> + <span>APP鏉冮檺璁剧疆 - {{ title }}</span> + </div> + <tree-table + ref="tree-table" + :data="menuList" + :expand-all="expandAll" + height="100%" + class="heightclacimport overflow" + border + tree-column-label="鑿滃崟鍚嶇О" + @row-selected="rowSelected" + > + <el-table-column label="鏉冮檺鐐�"> + <template slot-scope="scope"> + <el-checkbox + v-for="(item, index) in scope.row.auth" + :key="index" + v-model="item.value" + :true-label="1" + :false-label="0" + :checked="!!item.value" + @change="checkAuthNode(scope.row)" + >{{ item.label }}</el-checkbox + > + </template> + </el-table-column> + </tree-table> + <div class="tool absolute bottom7"> + <el-button :loading="loading" type="primary" size="mini" @click="saveAuth">淇濆瓨</el-button> + </div> + </el-card> + </el-main> + </el-tab-pane> + </el-tabs> + </div> + </div> + </div> +</template> + +<script> +import treeTable from '@/components/TreeTable'; +import { getCache, setCache } from '@/utils/sessionStorage'; +import { SearchPermission, AddOrUpdateRoleVsPermission, GetUserRoleAllPermission } from '@/api/role-auth'; +import { RoleSearch } from '@/api/role'; +export default { + name: 'sys-permission-role-auth', + components: { treeTable }, + data() { + return { + title: '[璇烽�夋嫨宸︿晶瑙掕壊鍚嶇О]', + // 鍔犺浇鐘舵�� + loading: false, + expandAll: true, + activeindex: -1, + // 閫変腑瑙掕壊 + currentRoleInfo: {}, + // 宸︿晶瀵艰埅闆嗗悎 + roleList: [], + // 鍙充晶琛ㄦ牸鏍戞潈闄愬垪琛ㄩ泦鍚� + menuList: [], + // 闇�瑕佷繚瀛樼殑瑙掕壊鏉冮檺闆嗗悎 + saveMenuList: [], + currentTab: 'user', + // 鍙充晶琛ㄦ牸鏍慉PP鏉冮檺鍒楄〃闆嗗悎 + menuAppList: [], + // app閫変腑瑙掕壊 + currentAppRoleInfo: {}, + role_Id: null, + types: 1, + tablabel: '' + }; + }, + mounted() { + this.RoleSearch(); + // this.GetUserRoleAllPermission(); + }, + methods: { + //鍒锋柊 + refresh() { + this.activeindex = -1; + this.GetUserRoleAllPermission(); + }, + // 宸︿晶鍔犺浇鏁版嵁 + RoleSearch() { + RoleSearch('1&onePageNum=999').then(res => { + if (res.code == 0) { + this.roleList = res.data; + } + }); + }, + // 宸︿晶鑿滃崟鐐瑰嚮浜嬩欢 + activeclick(item, index) { + this.activeindex = index; + // var item = node.$attrs.item; + // this.currentRoleInfo = item; + this.$Loading(true); + this.title = item.roleName; + + this.GetUserRoleAllPermission(item.roleName); + }, + // 鑾峰緱鎵�鏈夋潈闄愬彸渚ц〃鏍兼爲鍒楄〃 + GetUserRoleAllPermission(e) { + this.$Loading(true); + this.menuList = []; + GetUserRoleAllPermission({ roleName: this.title, type: this.types }).then(res => { + if (res.code == 0) { + if (e) { + let data = res.data; + let curcir = element => { + element.forEach(item => { + // item.isSelected = true; + if (item.children) { + curcir(item.children); + } + // if (item.value == 0) { + // item.isSelected = false; + // } + }); + }; + let Selected = element => { + element.forEach(item => { + if (item.auth) { + let auth = item.auth; + auth.forEach(i => { + if (i.value == 1) { + item.isSelected = true; + } + }); + } + if (item.children) { + Selected(item.children); + } + }); + }; + Selected(data); + curcir(data); + data.forEach(element => { + if (element.children) { + let item = element.children; + item.forEach(i => { + if (i.isSelected) { + element.isSelected = true; + } + }); + } + if (element.menuName == '棣栭〉') { + element.isSelected = true; + } + }); + console.log(data); + this.menuList = data; + } else { + this.menuList = res.data; + } + } + this.$Loading(); + }); + }, + // 鏉冮檺鐐规敼鍙� + checkAuthNode(row) { + row.auth.forEach(item => { + if (item.value == 1) { + row.isSelected = true; + if (row.parent) { + row.parent.isSelected = true; + } + } + }); + }, + // 鏍戝墠闈㈠閫夋閫変腑 + rowSelected(isSelected, row) { + let circulation = element => { + element.forEach(item => { + if (row.parentId == item.menu_Id) { + item.isSelected = row.isSelected; + } else { + if (item.children) { + circulation(item.children); + } + } + }); + }; + let setValue = authList => { + if (authList) { + authList.forEach(item => { + item.value = isSelected ? 1 : 0; + }); + } + }; + let eachChildren = children => { + if (children) { + children.forEach(item => { + item.isSelected = isSelected; + setValue(item.auth); + eachChildren(item.children); + // 鏀瑰彉淇濆瓨鏁版嵁闆嗗悎 + this.checkAuthNode(item); + }); + } + }; + setValue(row.auth); + eachChildren(row.children); + }, + // 淇濆瓨鏁版嵁 + saveAuth() { + let list = []; + //鑾峰彇鍕鹃�夌殑 + let savlist = element => { + element.forEach(item => { + if (item.isSelected) { + list.push(item.menu_Id); + } + if (item.children) { + savlist(item.children); + } + if (item.value == 1) { + list.push(item.menu_Id); + } + if (item.auth) { + savlist(item.auth); + } + }); + }; + savlist(this.menuList); + if (list.length == 0) { + this.$message.error('娌℃湁鍙繚瀛樼殑鏁版嵁锛�'); + return; + } + const { roleName } = getCache('userInfo'); + if (this.title == '[璇烽�夋嫨宸︿晶瑙掕壊鍚嶇О]') { + this.$message.error('璇烽�夋嫨瑙掕壊'); + } else { + this.$Loading(true); + AddOrUpdateRoleVsPermission({ roleName: this.title, permissionNameList: JSON.stringify(list) }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '淇敼鎴愬姛' + }); + } else { + this.$message({ + type: 'warning', + message: res.msg + }); + } + this.$Loading(); + }); + } + }, + // 澶撮儴鍒囨崲 + handleClick(tab, event) { + this.activeindex = -1; + this.title = ''; + this.tablabel = tab.label; + if (tab.label === 'APP鏉冮檺璁剧疆') { + this.types = 2; + this.GetUserRoleAllPermission(); + } + if (tab.label === '瑙掕壊鏉冮檺璁剧疆') { + this.types = 1; + this.GetUserRoleAllPermission(); + } + } + } +}; +</script> + +<style lang="scss" scoped> +.left-aside { + box-shadow: 0 0 4px #eaedef; + .left-role-title { + padding: 8px 10px; + background-color: #66b1ff; + color: white; + } +} +.box-card { + ::v-deep .el-card__body { + padding: 10px; + height: calc(100% - 75px); + .el-checkbox:first-child { + margin-left: 0px; + } + .el-checkbox + .el-checkbox { + margin-left: 0px; + } + .el-checkbox__label { + padding-left: 2px; + } + } +} +</style> +<style lang="scss"> +#role-auth { + .el-tabs__content { + height: calc(100% - 60px) !important; + } +} +</style> diff --git a/qqjf-Web/src/views/task/components/forklifttasksEdit.vue b/qqjf-Web/src/views/task/components/forklifttasksEdit.vue new file mode 100644 index 0000000..a4f95bb --- /dev/null +++ b/qqjf-Web/src/views/task/components/forklifttasksEdit.vue @@ -0,0 +1,254 @@ +<template> + <div class="forklifttasksEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="100px" + > + <el-form-item label="浠诲姟缂栧彿:" prop="carTaskName"> + <el-input disabled v-model="registerForm.carTaskName" clearable></el-input> + </el-form-item> + <el-form-item label="鐩殑鍦�:" prop="toDestination"> + <!-- <el-input v-model="registerForm.toDestination" clearable></el-input> --> + <el-select v-model="registerForm.toDestination" filterable clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in toDestinationList" + :key="index + 'toDestination'" + :label="item.productionName" + :value="item.productionName" + > + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="鍙栬揣鍦�:" prop="fromDestination"> + <!-- <el-input v-model="registerForm.fromDestination" clearable></el-input> --> + <el-select v-model="registerForm.fromDestination" filterable clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in fromDestinationist" + :key="index + 'toDestination'" + :label="item.productionName" + :value="item.productionName" + > + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="鍣ㄥ叿缂栧彿:" prop="containerName"> + <!-- <el-input v-model="registerForm.containerName" clearable></el-input> --> + <el-select v-model="registerForm.containerName" filterable clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in containerNameList" + :key="index + 'containerName'" + :label="item.containerName" + :value="item.containerName" + > + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="璁㈠崟鐘舵��:" prop="taskStatus"> + <!-- <el-input v-model="registerForm.containerName" clearable></el-input> --> + <el-select v-model="registerForm.taskStatus" filterable clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item,index) in orderstatusList" + :key="index + 'taskStatus'" + :label="item.label" + :value="item.label" + > + </el-option> + </el-select> + </el-form-item> + </el-form> + </div> + <div class="forklifttasksEdit-button text-right margin-right15 margin-top2"> + <el-button + type="primary" + size="mini" + class="form-buttom" + :loading="savloading" + @click="submitForm('registerForm')" + >鎻愪氦</el-button + > + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { CarTaskAddOrUpdate, CarTaskGetCode } from '@/api/forklifttasks'; +import { ContainerSearch } from '@/api/palte'; +import { ProductionLineSearch } from '@/api/cass-line'; +import { getCache } from '@/utils/sessionStorage'; +export default { + data() { + return { + registerForm: { + carTaskName: '', + toDestination: '', + fromDestination: '', + containerName: '' + }, + toDestinationList: [], + fromDestinationist: [], + containerNameList: [], + disabled: false, + orderstatusList: [ + { + label: '鏂板缓', + value: 0 + }, + { + label: '浠诲姟鎵ц涓�', + value: 1 + }, + { + label: '瀹屾垚', + value: 2 + } + ], + statusList: [ + { + label: 0, + value: 0 + }, + { + label: 1, + value: 1 + } + ], + enableList: [ + { + label: '鍚敤', + value: 1 + }, + { + label: '绂佺敤', + value: 0 + } + ], + createLineList: [], + + rules: { + carTaskName: { required: true, message: '璇疯緭鍏ヤ换鍔$紪鍙�', trigger: 'change' }, + //toDestination: { required: true, message: '璇疯緭鍏ョ洰鐨勫湴', trigger: 'change' }, + fromDestination: { required: true, message: '璇疯緭鍏ュ彇璐у湴', trigger: 'change' }, + containerName: { required: true, message: '璇烽�夋嫨鍣ㄥ叿缂栧彿', trigger: 'change' }, + taskStatus: { required: true, message: '璇烽�夋嫨璁㈠崟鐘舵��', trigger: 'change' }, + }, + savloading: false + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + this.disabled = true; + } else { + this.disabled = false; + this.CarTaskGetCode(); + } + this.ContainerSearch(); + this.ProductionLineSearch(); + this.ProductSearch(); + }, + methods: { + //鍣ㄥ叿 + ContainerSearch() { + ContainerSearch('1&onePageNum=999').then(res => { + if (res.code == 0) { + let data = res.data || []; + this.containerNameList = data; + } + }); + }, + //鐩殑鍦� + ProductionLineSearch() { + ProductionLineSearch('1&onePageNum=999', { isDestination: 1 }).then(res => { + if (res.code == 0) { + this.toDestinationList = res.data || []; + } + }); + }, + //鍙栬揣鍦� + ProductSearch() { + ProductionLineSearch('1&onePageNum=999', { isDestination: 0 }).then(res => { + if (res.code == 0) { + this.fromDestinationist = res.data || []; + } + }); + }, + //鍙夎溅浠诲姟缂栧彿 + CarTaskGetCode() { + CarTaskGetCode().then(res => { + this.registerForm.carTaskName = res; + }); + }, + submitForm(registerForm) { + console.log(this.registerForm); + this.$refs[registerForm].validate(valid => { + if (valid) { + this.registerForm.userName = getCache('userInfo').userName; + this.savloading = true; + CarTaskAddOrUpdate(this.registerForm).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.$emit('addsubmit'); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触' + }); + } + this.savloading = false; + }); + } else { + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.forklifttasksEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .forklifttasksEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/task/components/maintask-inquer.vue b/qqjf-Web/src/views/task/components/maintask-inquer.vue new file mode 100644 index 0000000..5358aa9 --- /dev/null +++ b/qqjf-Web/src/views/task/components/maintask-inquer.vue @@ -0,0 +1,212 @@ +<template> + <div class="flex align-center justify-between"> + <div class=""> + <el-button-group v-if="groupshow"> + <el-button v-if="addmodalshow" type="primary" size="mini" icon="el-icon-plus" @click="$emit('addmodal')" + >鏂板缓</el-button + > + <el-button v-if="dele" type="primary" size="mini" icon="el-icon-delete">鍒犻櫎</el-button> + <el-button v-if="derive" type="primary" size="mini" icon="el-icon-download" @click="$emit('derive')" + >瀵煎嚭</el-button + > + </el-button-group> + </div> + <div class="width85 flex align-center justify-end"> + <!-- <div class="flex align-center width35 margin-right"></div> --> + <div class="flex width align-center justify-end margin-right"> + <div v-if="tasktypeshow" class="flex align-center margin-right width25"> + <label class="color909399 fontsizeinitial width7rem">浠诲姟绫诲瀷锛�</label> + <el-select style="width: 65%" v-model="iqnuer.taskType" size="mini" clearable> + <el-option + v-for="(item, index) in taskTypeList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </div> + <div v-if="taskstatushow" class="flex align-center margin-right width25"> + <label class="color909399 width7rem fontsizeinitial">浠诲姟鐘舵�侊細</label> + <el-select style="width: 67%" v-model="iqnuer.taskStatus" size="mini" clearable> + <el-option + v-for="(item, index) in taskStatusList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </div> + <div v-if="forkliftshow" class="flex align-center margin-right width30"> + <label class="color909399 fontsizeinitial width7rem">鍙夎溅鍙告満锛�</label> + <el-select style="width: 66%" v-model="iqnuer.userName" size="mini" clearable> + <el-option v-for="(item, index) in caruserlist" :label="item" :value="item" :key="index"></el-option> + </el-select> + </div> + <div id="maindatetimeer" class="flex align-center margin-right width35"> + <label class="textalign color909399 width7rem fontsizeinitial">璧锋鏃堕棿锛�</label> + <el-date-picker + size="mini" + v-model="iqnuer.timepick" + value-format="yyyy-MM-dd HH:mm:ss" + type="datetimerange" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + </div> + + <el-input id="topinquer" size="mini" clearable v-model="iqnuer[filter]" class="width30"> + <el-select @change="selchange" v-model="filter" slot="prepend"> + <el-option + v-for="(item, index) in filterList" + :label="item.label" + :value="item.value" + :key="index" + ></el-option> + </el-select> + </el-input> + </div> + + <el-button type="primary" size="mini" @click="inquer">鏌ヨ</el-button> + <el-button v-if="priority" type="primary" size="mini" @click="$emit('precedence')">浼樺厛鍑哄簱</el-button> + </div> + </div> +</template> + +<script> +import { GetCarUser } from '@/api/forklifttasks'; +export default { + data() { + return { + filter: '', + iqnuer: {}, + taskStatusList: [ + { + label: '鏂板缓', + value: '鏂板缓' + }, + { + label: '浠诲姟鎵ц涓�', + value: '浠诲姟鎵ц涓�' + }, + { + label: '寮傚父/鍙栨秷', + value: '寮傚父/鍙栨秷' + }, + { + label: '瀹屾垚', + value: '瀹屾垚' + } + ], + taskTypeList: [ + { + label: '鍏ュ簱', + value: 1 + }, + { + label: '鍑哄簱', + value: 2 + } + ], + caruserlist: [], + applytime: [], + + visible: false, + value1: '' + }; + }, + props: { + groupshow: { + type: Boolean, + default: true + }, + priority: { + type: Boolean, + default: false + }, + addmodalshow: { + type: Boolean, + default: true + }, + derive: { + type: Boolean, + default: false + }, + tasktypeshow: { + type: Boolean, + default: false + }, + taskstatushow: { + type: Boolean, + default: false + }, + forkliftshow: { + type: Boolean, + default: false + }, + advanced: { + type: Boolean, + default: false + }, + dele: { + type: Boolean, + default: false + }, + byfilter: { + type: String, + default: '' + }, + filterList: { + type: Array, + default: () => [] + } + }, + mounted() { + this.filter = this.byfilter; + this.GetCarUser(); + }, + methods: { + //鍙夎溅鍙告満 + GetCarUser() { + GetCarUser().then(res => { + this.caruserlist = res; + }); + }, + inquer() { + this.$emit('inquer', this.iqnuer); + }, + selchange() { + this.iqnuer = {}; + } + }, + watch: { + byfilter: { + handler(nvl, ovl) { + this.filter = nvl; + } + } + } +}; +</script> + +<style lang="scss" scoped> +#topinquer { + ::v-deep .el-select { + width: 100px; + } +} +#maindatetimeer { + ::v-deep .el-range-editor.el-input__inner { + padding: 3px; + } + ::v-deep .el-date-editor--datetimerange.el-input, + .el-date-editor--datetimerange.el-input__inner { + width: 74%; + } +} +::v-deep .el-input-group__append, +::v-deep .el-input-group__prepend { + width: 60px; +} +</style> diff --git a/qqjf-Web/src/views/task/components/maintaskEdit.vue b/qqjf-Web/src/views/task/components/maintaskEdit.vue new file mode 100644 index 0000000..e9d379a --- /dev/null +++ b/qqjf-Web/src/views/task/components/maintaskEdit.vue @@ -0,0 +1,283 @@ +<template> + <div class="maintaskEdit height overflow"> + <div class="centent-form overflowy-auto"> + <el-form + class="margin-auto width90" + ref="registerForm" + :model="registerForm" + size="mini" + :rules="rules" + label-position="left" + label-width="100px" + > + <el-form-item label="浠诲姟绫诲瀷:" prop="taskType"> + <el-select v-model="registerForm.taskType" @change="taskchange" clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in taskTypeList" + :key="index + 'taskType'" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item label="璧峰浣�:" prop="sourcePlace"> + <el-select v-model="registerForm.sourcePlace" filterable clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in sourcePlaceList" + :key="index + 'sourcePlace'" + :label="item.placeName" + :value="item.placeCode" + > + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="鐩爣浣�:" prop="toPlace"> + <el-select v-model="registerForm.toPlace" filterable clearable placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in toPlaceList" + :key="index + 'toPlace'" + :label="item.placeName" + :value="item.placeCode" + > + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="浠诲姟浼樺厛绾�:" prop="taskLevel"> + <el-input oninput="value=value.replace(/[^\d.]/g,'')" v-model="registerForm.taskLevel" clearable></el-input> + </el-form-item> + <el-form-item label="鎵樼洏鍙�:" prop="containerName"> + <el-select + v-model="registerForm.containerName" + filterable + remote + reserve-keyword + :remote-method="remoteMethod" + :loading="remoloading" + clearable + placeholder="璇烽�夋嫨" + > + <el-option + v-for="(item, index) in containerNameList" + :key="index + 'containerName'" + :label="item.containerName" + :value="item.containerName" + > + </el-option> + </el-select> + </el-form-item> + </el-form> + </div> + <div class="maintaskEdit-button text-right margin-right15 margin-top2"> + <el-button type="primary" size="mini" class="form-buttom" @click="submitForm('registerForm')">鎻愪氦</el-button> + <el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">鍙栨秷</el-button> + </div> + </div> +</template> + +<script> +import { TaskAddOrUpdate } from '@/api/maintask'; +import { ContainerSearch } from '@/api/palte'; +import { getCache } from '@/utils/sessionStorage'; +import { PlaceGetPlace } from '@/api/position'; +export default { + data() { + return { + registerForm: { + sourcePlace: '', + toPlace: '', + taskType: '', + taskStatus: '鏂板缓', + userName: getCache('userInfo').userName, + taskLevel: '', + hasReaded: 0, + containerName: '' + }, + remoloading: false, + sourcePlace: '', //璧峰浣� + toPlace: '', //鐩爣浣� + sourcePlaceList: [], + toPlaceList: [], + taskTypeList: [ + { + label: '鍏ュ簱', + value: 1 + }, + { + label: '鍑哄簱', + value: 2 + }, + { + label: '绉诲簱', + value: 3 + } + ], + containerNameList: [], + disabled: false, + createLineList: [], + + rules: { + sourcePlace: { required: true, message: '璇烽�夋嫨璧峰浣�', trigger: 'change' }, + toPlace: { required: true, message: '璇烽�夋嫨鐩爣浣�', trigger: 'change' }, + taskType: { required: true, message: '璇烽�夋嫨浠诲姟绫诲瀷', trigger: 'change' }, + taskLevel: { required: true, message: '璇疯緭鍏ヤ换鍔′紭鍏堢骇', trigger: 'change' }, + containerName: { required: false, message: '璇疯緭鍏ユ墭鐩樺彿', trigger: 'change' } + } + }; + }, + props: { + rowitem: { + type: Object, + default: {} + } + }, + mounted() { + if (JSON.stringify(this.rowitem) != '{}') { + this.registerForm = this.rowitem; + this.sourcePlace = this.rowitem.sourcePlace; //璧峰浣� + this.toPlace = this.rowitem.toPlace; //鐩爣浣� + this.registerForm.taskType = + this.registerForm.taskType == '鍏ュ簱' + ? 1 + : this.registerForm.taskType == '鍑哄簱' + ? 2 + : this.registerForm.taskType == '绉诲簱' + ? 3 + : this.registerForm.taskType; + this.disabled = true; + } else { + this.disabled = false; + } + this.ContainerSearch({ containerName: '' }); + this.sourcePlacePlaceGetPlace(); + this.toPlacePlacePlaceGetPlace(); + }, + methods: { + //鍣ㄥ叿 + ContainerSearch(query) { + const { containerName } = query; + ContainerSearch('1&onePageNum=999', { containerName }).then(res => { + if (res.code == 0) { + let data = res.data || []; + this.containerNameList = data; + } + }); + }, + remoteMethod(query) { + if (query !== '') { + this.remoloading = true; + setTimeout(() => { + this.remoloading = false; + this.ContainerSearch({ containerName: query }); + }, 200); + } + }, + //璧峰浣嶅簱浣� + sourcePlacePlaceGetPlace() { + let taskType = this.registerForm.taskType ? this.registerForm.taskType : 1; + PlaceGetPlace({ isSourcePlace: 1, taskType: taskType }).then(res => { + if (res.code == 0) { + this.sourcePlaceList = res.data; + if (this.registerForm.sourcePlace) { + this.registerForm.sourcePlace = res.data.filter(item => { + if (item.placeCode == this.registerForm.sourcePlace) { + return item.placeName; + } + }); + } + } + }); + }, + //鐩爣浣� + toPlacePlacePlaceGetPlace() { + let taskType = this.registerForm.taskType ? this.registerForm.taskType : 1; + PlaceGetPlace({ isSourcePlace: 0, taskType: taskType }).then(res => { + if (res.code == 0) { + this.toPlaceList = res.data; + if (this.registerForm.sourcePlace) { + this.registerForm.toPlace = res.data.filter(item => { + if (item.placeCode == this.registerForm.toPlace) { + return item.placeName; + } + }); + } + } + }); + }, + //浠诲姟绫诲瀷 + taskchange() { + this.registerForm.sourcePlace = ''; + this.registerForm.toPlace = ''; + this.sourcePlaceList = []; + this.toPlaceList = []; + this.sourcePlacePlaceGetPlace(); + this.toPlacePlacePlaceGetPlace(); + let taskType = this.registerForm.taskType ? this.registerForm.taskType : 1; + this.rules.containerName.message=""; + if(taskType==1) + { + this.rules.containerName.required=true; + + }else + { + this.rules.containerName.required=false; + } + }, + submitForm(registerForm) { + console.log(this.registerForm); + this.$refs[registerForm].validate(valid => { + if (valid) { + this.savloading = true; + TaskAddOrUpdate(this.registerForm).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + this.$emit('addsubmit'); + } else { + this.$message({ + type: 'warning', + message: '鎻愪氦澶辫触' + }); + } + this.savloading = false; + }); + } + }); + } + }, + watch: {} +}; +</script> + +<style lang="scss" scoped> +.maintaskEdit { + width: 98%; + padding: 1%; + .show-pwd { + position: absolute; + right: 10px; + top: 3px; + font-size: 16px; + color: #889aa4; + cursor: pointer; + user-select: none; + } + .centent-form { + height: 92%; + width: 100%; + margin: auto; + } + .maintaskEdit-button { + } + ::v-deep .el-form-item__content { + width: 60%; + } + ::v-deep .el-select { + width: 100%; + } +} +</style> diff --git a/qqjf-Web/src/views/task/forklifttasks/index.vue b/qqjf-Web/src/views/task/forklifttasks/index.vue new file mode 100644 index 0000000..bbebe45 --- /dev/null +++ b/qqjf-Web/src/views/task/forklifttasks/index.vue @@ -0,0 +1,246 @@ +<template> + <!-- 鍙夎溅浠诲姟 --> + <div id="forklifttasks" class="global-content"> + <!-- 绛涢�� --> + <maintask-inquer + byfilter="浠诲姟缂栧彿" + :groupshow="true" + :dele="false" + :derive="true" + :forkliftshow="true" + :filterList="filterList" + @addmodal="addmodal" + @derive="derive" + @inquer="inquer" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :naxnumShow="false" + @edit="edit" + @del="del" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">鍙夎溅浠诲姟-{{ title }}</p> + <div class="height" slot="centent"> + <forklifttasks-edit @cancel="addmodalShow = false" :rowitem="rowitem" @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import maintaskInquer from '../components/maintask-inquer'; +import forklifttasksEdit from '../components/forklifttasksEdit'; +const { forklifttasks } = require('@/components/tableContainer/tableHead'); +import { CarTaskSearch, CarTaskDelete } from '@/api/forklifttasks'; +import { exportTableList } from '@/utils/excel'; +import { getimestampDate, getymdhms } from '@/utils/date'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: ['inOrderCode'], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + pageNum: 0, + inuqerobg: {}, + filterList: [ + { + value: '浠诲姟缂栧彿', + label: '浠诲姟缂栧彿' + }, + { + value: '鐩殑鍦�', + label: '鐩殑鍦�' + }, + { + value: '鍙栬揣鍦�', + label: '鍙栬揣鍦�' + }, + { + value: '鍣ㄥ叿缂栧彿', + label: '鍣ㄥ叿缂栧彿' + }, + { + value: '闆朵欢缂栧彿', + label: '闆朵欢缂栧彿' + } + ] + }; + }, + components: { TableContainer, maintaskInquer, Modal, forklifttasksEdit }, + computed: { + tableHead() { + return forklifttasks; + } + }, + mounted() { + this.CarTaskSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.page = 1; + this.CarTaskSearch(); + }, + //瀵煎嚭 + derive() { + let tHeader = []; + let filterVal = []; + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + const { + 浠诲姟缂栧彿: carTaskName, + 鐩殑鍦�: toDestination, + 鍙栬揣鍦�: fromDestination, + 闆朵欢缂栧彿: itemName, + 鍣ㄥ叿缂栧彿: containerName, + userName + } = this.inuqerobg; + this.$Loading(true); + CarTaskSearch('1&onePageNum=99999999', { + itemName, + carTaskName, + toDestination, + fromDestination, + containerName, + userName, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.updateTime = item.updateTime ? getimestampDate(item.updateTime) : ''; + }); + exportTableList(tHeader, filterVal, data, '鍙夎溅浠诲姟' + getymdhms()); + } + this.$Loading(); + }); + }, + //鎼滅储鍙夎溅浠诲姟 + CarTaskSearch() { + const { + 浠诲姟缂栧彿: carTaskName, + 鐩殑鍦�: toDestination, + 鍙栬揣鍦�: fromDestination, + 闆朵欢缂栧彿: itemName, + 鍣ㄥ叿缂栧彿: containerName, + userName + } = this.inuqerobg; + this.$Loading(true); + CarTaskSearch(this.page + '&onePageNum=' + this.pageSize, { + itemName, + carTaskName, + toDestination, + fromDestination, + containerName, + userName, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.updateTime = item.updateTime ? getimestampDate(item.updateTime) : ''; + }); + this.tableData = data; + this.totle = res.num; + this.pageNum = res.pageNum; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.CarTaskSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.CarTaskSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { carTaskName } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + CarTaskDelete({ carTaskName }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.CarTaskSearch(); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.CarTaskSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#forklifttasks { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/task/index.vue b/qqjf-Web/src/views/task/index.vue new file mode 100644 index 0000000..1ca3ac4 --- /dev/null +++ b/qqjf-Web/src/views/task/index.vue @@ -0,0 +1,11 @@ +<template> + <keep-alive> + <router-view /> + </keep-alive> +</template> + +<script> +export default {}; +</script> + +<style></style> diff --git a/qqjf-Web/src/views/task/maintask/index.vue b/qqjf-Web/src/views/task/maintask/index.vue new file mode 100644 index 0000000..57e2cab --- /dev/null +++ b/qqjf-Web/src/views/task/maintask/index.vue @@ -0,0 +1,430 @@ +<template> + <!-- 涓讳换鍔� --> + <div id="forklifttasks" class="global-content"> + <!-- 绛涢�� --> + <maintask-inquer + byfilter="鍣ㄥ叿缂栧彿" + :groupshow="true" + :dele="false" + :derive="true" + :tasktypeshow="true" + :taskstatushow="true" + :priority="true" + :filterList="filterList" + @addmodal="addmodal" + @derive="derive" + @inquer="inquer" + @precedence="precedence" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="false" + :delShow="true" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :naxnumShow="false" + :operation="true" + :selectionShow="true" + :must-first-show="true" + @edit="edit" + @del="del" + @abnormal="abnormal" + @CurrentChange="CurrentChange" + @SizeChange="SizeChange" + @rowchange="rowchange" + @handleSelectionChange="handleSelectionChange" + @mustFirst="onMustFirst" + /> + </div> + + <transition name="modal"> + <modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false"> + <p slot="title">浠诲姟绠$悊-{{ title }}</p> + <div class="height" slot="centent"> + <maintask-edit @cancel="addmodalShow = false" :rowitem="rowitem" @addsubmit="addsubmit" /> + </div> + </modal> + </transition> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import maintaskInquer from '../components/maintask-inquer'; +import maintaskEdit from '../components/maintaskEdit'; +const { maintask } = require('@/components/tableContainer/tableHead'); +import { TaskSearch, UpTaskLevel, TaskDeleteErrorTask, TaskDelete, GetAllMainTask, MustTask } from '@/api/maintask'; +import { exportTableList } from '@/utils/excel'; +import { getimestampDate, getymdhms } from '@/utils/date'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: ['inOrderCode'], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + pageNum: 0, + inuqerobg: {}, + rowobj: null, + filterList: [ + { + value: '鍣ㄥ叿缂栧彿', + label: '鍣ㄥ叿缂栧彿' + }, + { + value: '璧峰浣�', + label: '璧峰浣�' + }, + { + value: '鐩爣浣�', + label: '鐩爣浣�' + } + ], + tranLinelist: [ + { + tranLine: 68, + title: '1鍙峰嚭鍙�' + }, + { + tranLine: 51, + title: '2鍙峰嚭鍙�' + }, + { + tranLine: 64, + title: '3鍙峰嚭鍙�' + }, + { + tranLine: 67, + title: '4鍙峰嚭鍙�' + }, + { + tranLine: 34, + title: '5鍙峰嚭鍙�' + }, + { + tranLine: 30, + title: '6鍙峰嚭鍙�' + }, + { + tranLine: 19, + title: '7鍙峰嚭鍙�' + }, + { + tranLine: 12, + title: '8鍙峰嚭鍙�' + }, + { + tranLine: 47, + title: '1鍙峰叆鍙�' + }, + { + tranLine: 48, + title: '2鍙峰叆鍙�' + }, + { + tranLine: 61, + title: '3鍙峰叆鍙�' + }, + { + tranLine: 65, + title: '4鍙峰叆鍙�' + }, + { + tranLine: 32, + title: '5鍙峰叆鍙�' + }, + { + tranLine: 15, + title: '7鍙峰叆鍙�' + } + ] + }; + }, + components: { TableContainer, maintaskInquer, Modal, maintaskEdit }, + computed: { + tableHead() { + return maintask; + } + }, + mounted() { + this.TaskSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.page = 1; + this.TaskSearch(); + }, + //浼樺厛 + precedence() { + if (this.rowobj) { + const { id } = this.rowobj; + UpTaskLevel({ id }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '澶勭悊鎴愬姛' + }); + this.page = 1; + this.TaskSearch(); + } else { + this.$message({ + type: 'warning', + message: res.msg + }); + } + }); + } else { + this.$message({ + type: 'warning', + message: '璇风偣鍕鹃�夋垨鐐瑰嚮琛�' + }); + } + }, + //鍗曞嚮琛� + rowchange(row) { + this.rowobj = { ...row }; + }, + //鍕鹃�� + handleSelectionChange(row) { + console.log(row); + if (row.length > 1) { + this.$message({ + type: 'warning', + message: '鍙厑璁稿嬀閫変竴鏉℃暟鎹�' + }); + } else { + this.rowobj = { ...row[0] }; + } + }, + //瀵煎嚭 + derive() { + let tHeader = []; + let filterVal = []; + this.$Loading(true); + const { 鍣ㄥ叿缂栧彿: containerName, 璧峰浣�: sourcePlace, 鐩爣浣�: toPlace, taskStatus, taskType } = this.inuqerobg; + GetAllMainTask({ + containerName, + sourcePlace, + toPlace, + taskStatus, + taskType, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + res.forEach(element => { + element.taskType = + element.taskType == 1 + ? '鍏ュ簱' + : element.taskType == 2 + ? '鍑哄簱' + : element.taskType == 3 + ? '绉诲簱' + : element.taskType; + element.isError = element.isError == 1 ? '鏄�' : element.isError == 0 ? '鍚�' : element.isError; + element.isExchange = element.isExchange == 1 ? '鏄�' : element.isExchange == 0 ? '鍚�' : element.isExchange; + element.createTime = element.createTime ? getimestampDate(element.createTime) : ''; + this.tranLinelist.forEach(item => { + if (element.sourcePlace == item.tranLine) { + element.sourcePlace = item.title; + } + if (element.toPlace == item.tranLine) { + element.toPlace = item.title; + } + }); + }); + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + exportTableList(tHeader, filterVal, res, '涓讳换鍔�' + getymdhms()); + this.$Loading(false); + }); + }, + //鎼滅储 + TaskSearch() { + const { 鍣ㄥ叿缂栧彿: containerName, 璧峰浣�: sourcePlace, 鐩爣浣�: toPlace, taskStatus, taskType } = this.inuqerobg; + this.$Loading(true); + TaskSearch(this.page + '&onePageNum=' + this.pageSize, { + containerName, + sourcePlace, + toPlace, + taskStatus, + taskType, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data || []; + data.forEach(element => { + element.taskType = + element.taskType == 1 + ? '鍏ュ簱' + : element.taskType == 2 + ? '鍑哄簱' + : element.taskType == 3 + ? '绉诲簱' + : element.taskType; + element.isError = element.isError == 1 ? '鏄�' : element.isError == 0 ? '鍚�' : element.isError; + this.tranLinelist.forEach(item => { + if (element.sourcePlace == item.tranLine) { + element.sourcePlace = item.title; + } + if (element.toPlace == item.tranLine) { + element.toPlace = item.title; + } + }); + }); + + this.tableData = data; + //console.log(this.tableData) + this.totle = res.num; + this.pageNum = res.pageNum; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.TaskSearch(); + }, + //椤垫暟 + SizeChange(e) { + this.pageSize = e; + this.TaskSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { id } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + TaskDelete({ id }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.TaskSearch(); + } else { + this.$message({ + type: 'warning', + message: res.msg + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //寮傚父澶勭悊 + abnormal(row) { + const { id } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢澶勭悊璇ヤ换鍔�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + TaskDeleteErrorTask({ id }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '澶勭悊鎴愬姛!' + }); + this.TaskSearch(); + } else { + this.$message({ + type: 'warning', + message: res.msg + }); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝鐞�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.TaskSearch(); + }, + onMustFirst(obj) { + let msg = '鏄惁瑕佸浠诲姟鍙枫��' + obj.id + '銆戝己鍒朵紭鍏堟墽琛岋紵'; + this.$confirm(msg, '绯荤粺鎻愮ず', { + type: 'warning' + }) + .then(() => { + this.dealMustFirst(obj.id); + }) + .catch(() => {}); + }, + dealMustFirst(id) { + this.$Loading(true); + let params = { id }; + MustTask(params) + .then(d => { + this.$Loading(); + if (d.code === 0) { + this.$message.success('鎿嶄綔鎴愬姛'); + this.TaskSearch(); + } else { + let msg = d.msg || '鎿嶄綔澶辫触'; + this.$alert(msg, '绯荤粺鎻愮ず', { type: 'error' }); + } + }) + .catch(() => { + this.$Loading(); + }); + } + } +}; +</script> + +<style lang="scss" scoped> +#forklifttasks { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/task/taskdocuments/index.vue b/qqjf-Web/src/views/task/taskdocuments/index.vue new file mode 100644 index 0000000..883e247 --- /dev/null +++ b/qqjf-Web/src/views/task/taskdocuments/index.vue @@ -0,0 +1,205 @@ +<template> + <!-- 浠诲姟璁板綍 --> + <div id="taskdocuments" class="global-content"> + <!-- 绛涢�� --> + <maintask-inquer + byfilter="闆朵欢缂栧彿" + :groupshow="false" + :dele="false" + :filterList="filterList" + @addmodal="addmodal" + @inquer="inquer" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :operation="false" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :naxnumShow="false" + @edit="edit" + @del="del" + @SizeChange="SizeChange" + @CurrentChange="CurrentChange" + /> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import maintaskInquer from '../components/maintask-inquer'; +const { taskrecord } = require('@/components/tableContainer/tableHead'); +import { TaskRecodeSearch, TaskRecodeDelete } from '@/api/taskrecord'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: ['inOrderCode'], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + pageNum: 0, + inuqerobg: {}, + filterList: [ + { + value: '闆朵欢缂栧彿', + label: '闆朵欢缂栧彿' + }, + { + value: '闆朵欢鍚嶇О', + label: '闆朵欢鍚嶇О' + }, + + { + value: '璧峰浣�', + label: '璧峰浣�' + }, + { + value: '鐩爣浣�', + label: '鐩爣浣�' + }, + { + value: '璧峰浣�', + label: '璧峰浣�' + }, + { + value: '浠诲姟鐘舵��', + label: '浠诲姟鐘舵��' + }, + { + value: '鍣ㄥ叿缂栧彿', + label: '鍣ㄥ叿缂栧彿' + }, + { + value: '鍑哄簱鍗曞彿', + label: '鍑哄簱鍗曞彿' + } + ] + }; + }, + components: { TableContainer, maintaskInquer, Modal }, + computed: { + tableHead() { + return taskrecord; + } + }, + mounted() { + this.TaskRecodeSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.page = 1; + this.TaskRecodeSearch(); + }, + //鎼滅储鐢ㄦ埛 + TaskRecodeSearch() { + const { + 闆朵欢缂栧彿: itemName, + 闆朵欢鍚嶇О: itemDes, + 璧峰浣�: sourcePlace, + 鐩爣浣�: toPlace, + 鍣ㄥ叿缂栧彿: containerName, + 浠诲姟鐘舵��: taskStatus, + 鍑哄簱鍗曞彿: outOrderCode + } = this.inuqerobg; + this.$Loading(true); + TaskRecodeSearch(this.page + '&onePageNum=' + this.pageSize, { + itemName, + itemDes, + sourcePlace, + toPlace, + containerName, + taskStatus, + outOrderCode, + createTimeStart: this.inuqerobg.timepick ? this.inuqerobg.timepick[0] : '', + createTimeEnd: this.inuqerobg.timepick ? this.inuqerobg.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + this.tableData = res.data; + this.totle = res.num; + this.pageNum = res.pageNum; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.TaskRecodeSearch(); + }, + SizeChange(e) { + this.pageSize = e; + this.TaskRecodeSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { id } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + TaskRecodeDelete({ id }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.TaskRecodeSearch(); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.TaskRecodeSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#taskdocuments { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/task/taskrecord/index.vue b/qqjf-Web/src/views/task/taskrecord/index.vue new file mode 100644 index 0000000..46e4ff4 --- /dev/null +++ b/qqjf-Web/src/views/task/taskrecord/index.vue @@ -0,0 +1,345 @@ +<template> + <!-- 浠诲姟璁板綍 --> + <div id="taskrecord" class="global-content"> + <!-- 绛涢�� --> + <maintask-inquer + byfilter="闆朵欢缂栧彿" + :groupshow="true" + :dele="false" + :addmodalshow="false" + :derive="true" + :tasktypeshow="true" + :filterList="filterList" + @addmodal="addmodal" + @derive="derive" + @inquer="inquer" + /> + <!-- table --> + <div class="table"> + <table-container + :wipelist="wipelist" + :tableHead="tableHead" + :tableData="tableData" + :editShow="true" + :delShow="true" + :operation="false" + :currentPage="page" + :pageSize="pageSize" + :totle="totle" + :naxnumShow="false" + @edit="edit" + @del="del" + @SizeChange="SizeChange" + @CurrentChange="CurrentChange" + /> + </div> + </div> +</template> + +<script> +import { TableContainer, Modal } from '@/components/index'; +import maintaskInquer from '../components/maintask-inquer'; +const { taskrecord } = require('@/components/tableContainer/tableHead'); +import { TaskRecodeSearch, TaskRecodeDelete } from '@/api/taskrecord'; +import { exportTableList } from '@/utils/excel'; +import { getymdhms, getimestampDate } from '@/utils/date'; +export default { + data() { + return { + title: '', + tableData: [], + modalShow: false, + addmodalShow: false, + wipelist: ['inOrderCode'], + rowitem: {}, + totle: 0, + page: 1, + pageSize: 20, + pageNum: 0, + inuqerobg: {}, + filterList: [ + { + value: '闆朵欢缂栧彿', + label: '闆朵欢缂栧彿' + }, + { + value: '闆朵欢鍚嶇О', + label: '闆朵欢鍚嶇О' + }, + + { + value: '璧峰浣�', + label: '璧峰浣�' + }, + { + value: '鐩爣浣�', + label: '鐩爣浣�' + }, + { + value: '浠诲姟鐘舵��', + label: '浠诲姟鐘舵��' + }, + { + value: '鍣ㄥ叿缂栧彿', + label: '鍣ㄥ叿缂栧彿' + }, + { + value: '鍑哄簱鍗曞彿', + label: '鍑哄簱鍗曞彿' + } + // { + // value: '浠诲姟绫诲瀷', + // label: '浠诲姟绫诲瀷' + // } + ], + tranLinelist: [ + { + tranLine: 68, + title: '1鍙峰嚭鍙�' + }, + { + tranLine: 51, + title: '2鍙峰嚭鍙�' + }, + { + tranLine: 64, + title: '3鍙峰嚭鍙�' + }, + { + tranLine: 67, + title: '4鍙峰嚭鍙�' + }, + { + tranLine: 34, + title: '5鍙峰嚭鍙�' + }, + { + tranLine: 30, + title: '6鍙峰嚭鍙�' + }, + { + tranLine: 19, + title: '7鍙峰嚭鍙�' + }, + { + tranLine: 12, + title: '8鍙峰嚭鍙�' + }, + { + tranLine: 47, + title: '1鍙峰叆鍙�' + }, + { + tranLine: 48, + title: '2鍙峰叆鍙�' + }, + { + tranLine: 61, + title: '3鍙峰叆鍙�' + }, + { + tranLine: 65, + title: '4鍙峰叆鍙�' + }, + { + tranLine: 32, + title: '5鍙峰叆鍙�' + }, + { + tranLine: 15, + title: '7鍙峰叆鍙�' + } + ] + }; + }, + components: { TableContainer, maintaskInquer, Modal }, + computed: { + tableHead() { + return taskrecord; + } + }, + mounted() { + this.TaskRecodeSearch(); + }, + methods: { + //鏌ヨ + inquer(e) { + this.inuqerobg = e; + this.page = 1; + this.TaskRecodeSearch(); + }, + //瀵煎嚭 + derive() { + let tHeader = []; + let filterVal = []; + this.tableHead.forEach(item => { + tHeader.push(item.columnDescription); + filterVal.push(item.columnName); + }); + let obj = { ...this.inuqerobg }; + console.log(obj); + const { + 闆朵欢缂栧彿: itemName, + 闆朵欢鍚嶇О: itemDes, + 璧峰浣�: sourcePlace, + 鐩爣浣�: toPlace, + 鍣ㄥ叿缂栧彿: containerName, + 浠诲姟鐘舵��: taskStatus, + 鍑哄簱鍗曞彿: outOrderCode, + taskType + } = obj; + this.$Loading(true); + TaskRecodeSearch('1&onePageNum=99999999', { + itemName, + itemDes, + sourcePlace, + toPlace, + containerName, + taskStatus, + outOrderCode, + taskType, + createTimeStart: obj.timepick ? obj.timepick[0] : '', + createTimeEnd: obj.timepick ? obj.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.taskType = + item.taskType == 1 ? '鍏ュ簱' : item.taskType == 2 ? '鍑哄簱' : item.taskType == 3 ? '绉诲簱' : item.taskType; + item.isMainOut = item.isMainOut == 1 ? '鏄�' : item.isMainOut == 0 ? '鍚�' : item.isMainOut; + item.createTime = item.createTime ? getimestampDate(item.createTime) : ''; + item.doTime = item.doTime ? getimestampDate(item.doTime) : ''; + item.finishTime = item.finishTime ? getimestampDate(item.finishTime) : ''; + item.taskCreateTime = item.taskCreateTime ? getimestampDate(item.taskCreateTime) : ''; + this.tranLinelist.forEach(element => { + if (item.sourcePlace == element.tranLine) { + item.sourcePlace = element.title; + } + if (item.toPlace == element.tranLine) { + item.toPlace = element.title; + } + }); + }); + exportTableList(tHeader, filterVal, data, '浠诲姟璁板綍' + getymdhms()); + } + this.$Loading(); + }); + }, + //鎼滅储鐢ㄦ埛 + TaskRecodeSearch() { + let obj = { ...this.inuqerobg }; + console.log(obj); + const { + 闆朵欢缂栧彿: itemName, + 闆朵欢鍚嶇О: itemDes, + 璧峰浣�: sourcePlace, + 鐩爣浣�: toPlace, + 鍣ㄥ叿缂栧彿: containerName, + 浠诲姟鐘舵��: taskStatus, + 鍑哄簱鍗曞彿: outOrderCode, + taskType + } = obj; + this.$Loading(true); + + TaskRecodeSearch(this.page + '&onePageNum=' + this.pageSize, { + itemName, + itemDes, + sourcePlace, + toPlace, + containerName, + taskStatus, + outOrderCode, + taskType, + createTimeStart: obj.timepick ? obj.timepick[0] : '', + createTimeEnd: obj.timepick ? obj.timepick[1] : '' + }).then(res => { + if (res.code == 0) { + let data = res.data; + data.forEach(item => { + item.taskType = + item.taskType == 1 ? '鍏ュ簱' : item.taskType == 2 ? '鍑哄簱' : item.taskType == 3 ? '绉诲簱' : item.taskType; + item.isMainOut = item.isMainOut == 1 ? '鏄�' : item.isMainOut == 0 ? '鍚�' : item.isMainOut; + this.tranLinelist.forEach(element => { + if (item.sourcePlace == element.tranLine) { + item.sourcePlace = element.title; + } + if (item.toPlace == element.tranLine) { + item.toPlace = element.title; + } + }); + }); + this.tableData = data; + this.totle = res.num; + this.pageNum = res.pageNum; + } + this.$Loading(); + }); + }, + CurrentChange(e) { + console.log(e); + this.page = e; + this.TaskRecodeSearch(); + }, + SizeChange(e) { + this.pageSize = e; + this.TaskRecodeSearch(); + }, + //缂栬緫 + edit(row) { + this.addmodalShow = true; + this.rowitem = { ...row }; + this.title = '缂栬緫'; + }, + //鍒犻櫎 + del(row) { + console.log(row); + const { id } = { ...row }; + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + TaskRecodeDelete({ id }).then(res => { + if (res.code == 0) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.TaskRecodeSearch(); + } + }); + }) + .catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鏂板缓 + addmodal() { + this.rowitem = {}; + this.addmodalShow = true; + this.title = '鏂板缓'; + }, + //鏂板淇敼鍚� + addsubmit() { + this.addmodalShow = false; + this.modalShow = false; + this.TaskRecodeSearch(); + } + } +}; +</script> + +<style lang="scss" scoped> +#taskrecord { + .table { + width: 100%; + margin-top: 10px; + height: calc(100% - 40px); + overflow: hidden; + } +} +</style> diff --git a/qqjf-Web/src/views/test/index.vue b/qqjf-Web/src/views/test/index.vue new file mode 100644 index 0000000..d0571d5 --- /dev/null +++ b/qqjf-Web/src/views/test/index.vue @@ -0,0 +1,35 @@ +<!-- --> +<template> + <div id=""></div> +</template> + +<script> +//杩欓噷鍙互瀵煎叆鍏朵粬鏂囦欢锛堟瘮濡傦細缁勪欢锛屽伐鍏穓s锛岀涓夋柟鎻掍欢js锛宩son鏂囦欢锛屽浘鐗囨枃浠剁瓑绛夛級 +//渚嬪锛歩mport 銆婄粍浠跺悕绉般�� from '銆婄粍浠惰矾寰勩��'; + +export default { + //name鏀惧叆妯℃澘鍚�,鏂逛究鍦ㄥ叾浠栧湴鏂瑰紩鐢� + name: '', + //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: {}, + data() { + //杩欓噷瀛樻斁鏁版嵁 + return {}; + }, + //鐩戝惉灞炴�� 绫讳技浜巇ata姒傚康 + computed: {}, + //鐢熷懡鍛ㄦ湡 - 鍒涘缓瀹屾垚锛堝彲浠ヨ闂綋鍓峵his瀹炰緥锛� + created() {}, + //鐢熷懡鍛ㄦ湡 - 鎸傝浇瀹屾垚锛堝彲浠ヨ闂瓺OM鍏冪礌锛� + mounted() {}, + //鏂规硶闆嗗悎 + methods: {}, + //鐩戞帶data涓殑鏁版嵁鍙樺寲 + watch: {}, + //濡傛灉椤甸潰鏈塳eep-alive缂撳瓨鍔熻兘锛岃繖涓嚱鏁颁細瑙﹀彂 + activated() {} +}; +</script> +<style lang="scss" scoped> +/* @import url(); 寮曞叆鍏叡css绫� */ +</style> diff --git a/qqjf-Web/vue.config.js b/qqjf-Web/vue.config.js new file mode 100644 index 0000000..f557b76 --- /dev/null +++ b/qqjf-Web/vue.config.js @@ -0,0 +1,160 @@ +const webpack = require('webpack'); +const path = require('path'); + +const CompressionWebpackPlugin = require('compression-webpack-plugin'); +const defaultSettings = require('./src/settings.js'); +const port = process.env.port || process.env.npm_config_port || 9527; // dev port +function resolve (dir) { + return path.join(__dirname, dir); +} +const isProd = process.env.NODE_ENV === 'production'; +const name = defaultSettings.title || '鏅鸿兘鍖栫珛浣撳簱绠$悊绯荤粺'; // page title +const { + VueCDN, + AxiosCDN, + VueRouterCDN, + VuexCDN +} = require('./src/plugins/cdn'); + +const cdn = { + css: [], + js: [VueCDN, AxiosCDN, VueRouterCDN, VuexCDN], + externals: { + vue: 'Vue', + 'vue-router': 'VueRouter', + vuex: 'Vuex', + axios: 'axios' + } +}; +module.exports = { + /** + *鏌ョ湅閰嶇疆 https://cli.vuejs.org/config/#publicpath + */ + publicPath: '/', //鏍硅矾寰� cli3.0浠ヤ笂浣跨敤publicPath + //鎵撳寘鍚庤緭鍑鸿矾寰� + outputDir: 'dist', + assetsDir: 'static', + lintOnSave: false, + //鍘婚櫎鐢熶骇鐜鐨刾roductionSourceMap + productionSourceMap: false, + devServer: { + port: port, + open: true, + overlay: { + warnings: false, + errors: true + }, + proxy: { + [process.env.VUE_APP_BASE_API]: { + //target: 'http://10.103.11.236:8085', // 鍐呯綉鏈嶅姟鍣ㄩ儴缃� 11缃戞 + //target: 'http://10.103.9.200:8085/', // 鍐呯綉鏈嶅姟鍣ㄩ儴缃� 9缃戞 + //target: 'http://120.53.244.200:8085', // 浜戞湇鍔″櫒娴嬭瘯 + //target: 'http://192.168.43.252:8085', // 鏈満鍙戝竷娴嬭瘯 + //target: 'http://localhost:12319/', // 鏈満璋冭瘯娴嬭瘯 + //target: 'http://10.103.11.130:8085/', //11缃戞 + target: 'http://localhost:6099/', //9缃戞 + changeOrigin: true, + pathRewrite:{ + '[process.env.VUE_APP_BASE_API]': '' + } + } + } + }, + css: { + loaderOptions: { + sass: {} + } + }, + // configureWebpack 鍊间负瀵硅薄锛屼細閫氳繃 webpack-merge 鍚堝苟鍒版渶缁堢殑閰嶇疆 + configureWebpack: { + //鍦╳ebpack鐨刵ame瀛楁涓彁渚涘簲鐢ㄧ▼搴忕殑鏍囬锛屼互渚垮彲浠ュ湪index.html涓闂畠鏉ユ敞鍏ユ纭殑鏍囬 + name: name, + resolve: { + alias: { + '@': resolve('src') + } + }, + + externals: {} + }, + + chainWebpack (config) { + config.plugin('define').tap(args => { + //args[0]['process.env'].IMAGE_URL = "'http://120.53.244.200:8085/'"; //娴嬭瘯鐜 + // args[0]['process.env'].IMAGE_URL = "'http://localhost:8085/'"; //姝e紡鐜 11缃戞 + args[0]['process.env'].IMAGE_URL = "'http://10.103.9.200:8085/'"; //姝e紡鐜 9缃戞 + //args[0]['process.env'].IMAGE_URL = "'http://192.168.137.200:8085/'"; //鏈満鍙戝竷娴嬭瘯 + return args; + }); + config.plugin('provide').use(webpack.ProvidePlugin, [{ + $: 'jquery', + jquery: 'jquery', + jQuery: 'jquery', + 'window.jQuery': 'jquery' + }]); + // 璁剧疆svg + config.module.rule('svg').exclude.add(resolve('src/icons')).end(); + config.module + .rule('icons') + .test(/\.svg$/) + .include.add(resolve('src/icons')) + .end() + .use('svg-sprite-loader') + .loader('svg-sprite-loader') + .options({ + symbolId: 'icon-[name]' + }) + .end(); + //璁剧疆寮�鍙戠幆澧僺ourceMap + config.when(!isProd, config => config.devtool('cheap-source-map')); + //寮�鍙戠幆澧� + + config.when(isProd, config => { + config.optimization.splitChunks({ + chunks: 'all', + cacheGroups: { + libs: { + name: 'chunk-libs', + test: /[\\/]node_modules[\\/]/, + priority: 10, + chunks: 'initial' + }, + elementUI: { + name: 'chunk-elementUI', + priority: 20, + test: /[\\/]node_modules[\\/]_?element-ui(.*)/ + }, + commons: { + name: 'chunk-commons', + test: resolve('src/components'), + minChunks: 3, + priority: 5, + reuseExistingChunk: true + } + } + }); + // config.plugin('html').tap(args => { + // args[0].cdn = cdn; + // return args; + // }); + config.optimization.runtimeChunk('single'); + + //鍘婚櫎鐢熶骇鐜debugger 鍜宑onsole + config.optimization.minimizer('terser').tap(args => { + args[0].terserOptions.compress.warnings = false; + args[0].terserOptions.compress.drop_console = true; + args[0].terserOptions.compress.drop_debugger = true; + args[0].terserOptions.compress.pure_funcs = ['console.*']; + return args; + }); + //g-zip寮�鍚� + config.plugin('CompressionWebpackPlugin').use(CompressionWebpackPlugin, [{ + filename: '[path].gz[query]', + algorithm: 'gzip', + test: /\.js$|\.css/, //鍖归厤鏂囦欢鍚� + threshold: 10240, //瀵硅秴杩�10k鐨勬暟鎹帇缂� + minRatio: 0.8 + }]); + }); + } +}; \ No newline at end of file -- Gitblit v1.9.3