瀏覽代碼

默认变更列表

chenqilong 1 年之前
當前提交
d0406829ba
共有 93 個文件被更改,包括 22479 次插入0 次删除
  1. 23 0
      .gitignore
  2. 26 0
      README.md
  3. 5 0
      babel.config.js
  4. 二進制
      dist.7z
  5. 11268 0
      package-lock.json
  6. 32 0
      package.json
  7. 二進制
      public/favicon.ico
  8. 33 0
      public/index.html
  9. 210 0
      public/webView.js
  10. 728 0
      public/weixin.js
  11. 16 0
      src/App.vue
  12. 二進制
      src/assets/home/head_logo.png
  13. 二進制
      src/assets/home/logo.png
  14. 二進制
      src/assets/icon/down.png
  15. 1 0
      src/assets/icon/hspIcon.svg
  16. 二進制
      src/assets/icon/icon_1001.png
  17. 二進制
      src/assets/icon/icon_1002.png
  18. 二進制
      src/assets/icon/icon_1003.png
  19. 二進制
      src/assets/icon/icon_1004.png
  20. 二進制
      src/assets/icon/icon_1005.png
  21. 二進制
      src/assets/icon/icon_1006.png
  22. 二進制
      src/assets/icon/icon_1007.png
  23. 二進制
      src/assets/icon/icon_1008.png
  24. 二進制
      src/assets/icon/icon_1009.png
  25. 二進制
      src/assets/icon/icon_1010.png
  26. 二進制
      src/assets/icon/icon_1011.png
  27. 二進制
      src/assets/icon/icon_1012.png
  28. 二進制
      src/assets/icon/icon_1013.png
  29. 二進制
      src/assets/icon/shangsheng.png
  30. 二進制
      src/assets/icon/师傅安装.png
  31. 二進制
      src/assets/icon/师傅安装@3x.png
  32. 二進制
      src/assets/icon/师傅维修.png
  33. 二進制
      src/assets/icon/师傅维修@3x.png
  34. 二進制
      src/assets/icon/收费统计.png
  35. 二進制
      src/assets/icon/收费统计@3x.png
  36. 二進制
      src/assets/icon/榜单.png
  37. 二進制
      src/assets/icon/榜单@3x.png
  38. 二進制
      src/assets/icon/满意度.png
  39. 二進制
      src/assets/icon/满意度@3x.png
  40. 二進制
      src/assets/icon/网点安装.png
  41. 二進制
      src/assets/icon/网点安装@3x.png
  42. 二進制
      src/assets/icon/网点维修.png
  43. 二進制
      src/assets/icon/网点维修@3x.png
  44. 二進制
      src/assets/icon/试用.png
  45. 二進制
      src/assets/icon/试用@3x.png
  46. 253 0
      src/components/Analysis/Analysis1001.vue
  47. 404 0
      src/components/Analysis/Analysis1002.vue
  48. 248 0
      src/components/Analysis/Analysis1003.vue
  49. 339 0
      src/components/Analysis/Analysis1004.vue
  50. 284 0
      src/components/Analysis/Analysis1005.vue
  51. 264 0
      src/components/Analysis/Analysis1006.vue
  52. 298 0
      src/components/Analysis/Analysis1007.vue
  53. 374 0
      src/components/Analysis/Analysis1008.vue
  54. 10 0
      src/components/Analysis/Analysis1009.vue
  55. 334 0
      src/components/Analysis/Analysis1010.vue
  56. 269 0
      src/components/Analysis/Analysis1011.vue
  57. 264 0
      src/components/Analysis/Analysis1012.vue
  58. 261 0
      src/components/Analysis/Analysis1013.vue
  59. 15 0
      src/components/Business.vue
  60. 47 0
      src/main.js
  61. 38 0
      src/plugin/echartsUI.js
  62. 229 0
      src/router/index.js
  63. 33 0
      src/styles/index.scss
  64. 90 0
      src/utils/api.js
  65. 91 0
      src/utils/common.js
  66. 81 0
      src/utils/dateUtils.js
  67. 311 0
      src/views/Analysis.vue
  68. 48 0
      src/views/Home.vue
  69. 41 0
      src/views/Login.vue
  70. 44 0
      src/views/MiniConfirm.vue
  71. 240 0
      src/views/addInstallgdl.vue
  72. 248 0
      src/views/addrepairgdl.vue
  73. 237 0
      src/views/allNetWork.vue
  74. 214 0
      src/views/allNetWorkMonth.vue
  75. 628 0
      src/views/intradayAdd.vue
  76. 513 0
      src/views/masterFinished/index.vue
  77. 266 0
      src/views/masterFinished/install-detail-month.vue
  78. 160 0
      src/views/masterFinished/install-detail-websit.vue
  79. 223 0
      src/views/masterFinished/install-detail.vue
  80. 174 0
      src/views/masterFinished/install.vue
  81. 266 0
      src/views/masterFinished/repaire-detail-month.vue
  82. 183 0
      src/views/masterFinished/repaire-detail-websit.vue
  83. 222 0
      src/views/masterFinished/repaire-detail.vue
  84. 173 0
      src/views/masterFinished/repaire.vue
  85. 48 0
      src/views/mine.vue
  86. 203 0
      src/views/order/today.vue
  87. 202 0
      src/views/order/tomorrow.vue
  88. 29 0
      src/views/package.json
  89. 298 0
      src/views/payDay.vue
  90. 296 0
      src/views/reservation/index.vue
  91. 329 0
      src/views/reservation/website.vue
  92. 244 0
      src/views/websiteDetail.vue
  93. 71 0
      vue.config.js

+ 23 - 0
.gitignore

@@ -0,0 +1,23 @@
+.DS_Store
+node_modules
+/dist
+
+
+# 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?

+ 26 - 0
README.md

@@ -0,0 +1,26 @@
+# mobile_office
+
+## Project setup
+
+```
+npm install
+
+http://localhost:8080/?openid=123&token=123
+
+```
+
+### Compiles and hot-reloads for development
+
+```
+npm run serve
+```
+
+### Compiles and minifies for production
+
+```
+npm run build
+```
+
+### Customize configuration
+
+See [Configuration Reference](https://cli.vuejs.org/config/).

+ 5 - 0
babel.config.js

@@ -0,0 +1,5 @@
+module.exports = {
+  presets: [
+    '@vue/cli-plugin-babel/preset'
+  ]
+}

二進制
dist.7z


+ 11268 - 0
package-lock.json

@@ -0,0 +1,11268 @@
+{
+  "name": "mobile_office_mini",
+  "version": "0.1.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@babel/code-frame": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/code-frame/download/@babel/code-frame-7.14.5.tgz?cache=0&sync_timestamp=1623280394200&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.14.5.tgz",
+      "integrity": "sha1-I7CNdA6D9JxeWZRfvxtD6Au/Tts=",
+      "dev": true,
+      "requires": {
+        "@babel/highlight": "^7.14.5"
+      }
+    },
+    "@babel/compat-data": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/compat-data/download/@babel/compat-data-7.14.5.tgz?cache=0&sync_timestamp=1623280503073&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fcompat-data%2Fdownload%2F%40babel%2Fcompat-data-7.14.5.tgz",
+      "integrity": "sha1-jvTBjljoAcXJXTwcDyh0omgPreo=",
+      "dev": true
+    },
+    "@babel/core": {
+      "version": "7.14.6",
+      "resolved": "https://registry.nlark.com/@babel/core/download/@babel/core-7.14.6.tgz",
+      "integrity": "sha1-4IFOwalQAy/xbBOich3jmoQW/Ks=",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.14.5",
+        "@babel/generator": "^7.14.5",
+        "@babel/helper-compilation-targets": "^7.14.5",
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helpers": "^7.14.6",
+        "@babel/parser": "^7.14.6",
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.1.2",
+        "semver": "^6.3.0",
+        "source-map": "^0.5.0"
+      }
+    },
+    "@babel/generator": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/generator/download/@babel/generator-7.14.5.tgz?cache=0&sync_timestamp=1623280360946&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.14.5.tgz",
+      "integrity": "sha1-hI17nwMcrKnQzQrwGwY/Im9S14U=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.14.5",
+        "jsesc": "^2.5.1",
+        "source-map": "^0.5.0"
+      }
+    },
+    "@babel/helper-annotate-as-pure": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.14.5.tgz?cache=0&sync_timestamp=1623280393672&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-annotate-as-pure%2Fdownload%2F%40babel%2Fhelper-annotate-as-pure-7.14.5.tgz",
+      "integrity": "sha1-e/R47Dtxcm1WqMpXdbBG/CmHnmE=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz?cache=0&sync_timestamp=1623280377006&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor%2Fdownload%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor-7.14.5.tgz",
+      "integrity": "sha1-uTm0P4w3dlRDoZrnStixWXjgoZE=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-explode-assignable-expression": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-compilation-targets": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.14.5.tgz?cache=0&sync_timestamp=1623280393577&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-compilation-targets%2Fdownload%2F%40babel%2Fhelper-compilation-targets-7.14.5.tgz",
+      "integrity": "sha1-epnF0JZ5Eely/iw0EffVtJhJjs8=",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "browserslist": "^4.16.6",
+        "semver": "^6.3.0"
+      }
+    },
+    "@babel/helper-create-class-features-plugin": {
+      "version": "7.14.6",
+      "resolved": "https://registry.nlark.com/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.14.6.tgz?cache=0&sync_timestamp=1623708435318&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-create-class-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-class-features-plugin-7.14.6.tgz",
+      "integrity": "sha1-8RRGm2wG+LXFnGxOdGIfUIU2JUI=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-member-expression-to-functions": "^7.14.5",
+        "@babel/helper-optimise-call-expression": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5"
+      }
+    },
+    "@babel/helper-create-regexp-features-plugin": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.14.5.tgz?cache=0&sync_timestamp=1623280375996&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-create-regexp-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-regexp-features-plugin-7.14.5.tgz",
+      "integrity": "sha1-x9WsXpz2IcJgV3Ivt6ikxYiTWMQ=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "regexpu-core": "^4.7.1"
+      }
+    },
+    "@babel/helper-define-polyfill-provider": {
+      "version": "0.2.3",
+      "resolved": "https://registry.nlark.com/@babel/helper-define-polyfill-provider/download/@babel/helper-define-polyfill-provider-0.2.3.tgz?cache=0&sync_timestamp=1622025470416&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-define-polyfill-provider%2Fdownload%2F%40babel%2Fhelper-define-polyfill-provider-0.2.3.tgz",
+      "integrity": "sha1-BSXt7FCUZTooJojTTYRuTHXpwLY=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-compilation-targets": "^7.13.0",
+        "@babel/helper-module-imports": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/traverse": "^7.13.0",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2",
+        "semver": "^6.1.2"
+      }
+    },
+    "@babel/helper-explode-assignable-expression": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.14.5.tgz?cache=0&sync_timestamp=1623280393883&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-explode-assignable-expression%2Fdownload%2F%40babel%2Fhelper-explode-assignable-expression-7.14.5.tgz",
+      "integrity": "sha1-iqcucIIFx7tkPkXHO0OGzfKh9kU=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-function-name": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-function-name/download/@babel/helper-function-name-7.14.5.tgz?cache=0&sync_timestamp=1623280385237&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.14.5.tgz",
+      "integrity": "sha1-ieLEdJcvFdjiM7Uu6MSA4s/NUMQ=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-get-function-arity": "^7.14.5",
+        "@babel/template": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-get-function-arity": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.14.5.tgz?cache=0&sync_timestamp=1623280360950&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.14.5.tgz",
+      "integrity": "sha1-Jfv6V5sJN+7h87gF7OTOOYxDGBU=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-hoist-variables": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.14.5.tgz?cache=0&sync_timestamp=1623280361512&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-hoist-variables%2Fdownload%2F%40babel%2Fhelper-hoist-variables-7.14.5.tgz",
+      "integrity": "sha1-4N0nwzp45XfXyIhJFqPn7x98f40=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-member-expression-to-functions": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.14.5.tgz?cache=0&sync_timestamp=1623280360948&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-member-expression-to-functions%2Fdownload%2F%40babel%2Fhelper-member-expression-to-functions-7.14.5.tgz",
+      "integrity": "sha1-1ccOStE7QCyVFWx6U1aPUE4vt7g=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-module-imports": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-module-imports/download/@babel/helper-module-imports-7.14.5.tgz?cache=0&sync_timestamp=1623280362184&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-module-imports%2Fdownload%2F%40babel%2Fhelper-module-imports-7.14.5.tgz",
+      "integrity": "sha1-bRpE32o4yVeqfDEtoHZCnxG0IvM=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-module-transforms": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.14.5.tgz?cache=0&sync_timestamp=1623280681627&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-module-transforms%2Fdownload%2F%40babel%2Fhelper-module-transforms-7.14.5.tgz",
+      "integrity": "sha1-feQvENeJtCPrkC69JAMcp3yx4Q4=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5",
+        "@babel/helper-simple-access": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5",
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-optimise-call-expression": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.14.5.tgz?cache=0&sync_timestamp=1623280360981&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-optimise-call-expression%2Fdownload%2F%40babel%2Fhelper-optimise-call-expression-7.14.5.tgz",
+      "integrity": "sha1-8nOVqGGeBmWz8DZM3bQcJdcbSZw=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-plugin-utils": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.14.5.tgz",
+      "integrity": "sha1-WsgizpfuxGdBq3ClF5ceRDpwxak=",
+      "dev": true
+    },
+    "@babel/helper-remap-async-to-generator": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.14.5.tgz?cache=0&sync_timestamp=1623280682248&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-remap-async-to-generator%2Fdownload%2F%40babel%2Fhelper-remap-async-to-generator-7.14.5.tgz",
+      "integrity": "sha1-UUOckTYSlY9UqYek/8nuWHogRdY=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-wrap-function": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-replace-supers": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.14.5.tgz?cache=0&sync_timestamp=1623280689842&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.14.5.tgz",
+      "integrity": "sha1-DswLA8Qc1We0Ak6gFhNMKEFKu5Q=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-member-expression-to-functions": "^7.14.5",
+        "@babel/helper-optimise-call-expression": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-simple-access": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-simple-access/download/@babel/helper-simple-access-7.14.5.tgz?cache=0&sync_timestamp=1623280360968&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-simple-access%2Fdownload%2F%40babel%2Fhelper-simple-access-7.14.5.tgz",
+      "integrity": "sha1-ZuqFz1O6C05Yi6d/yBP1OryqQcQ=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-skip-transparent-expression-wrappers/download/@babel/helper-skip-transparent-expression-wrappers-7.14.5.tgz",
+      "integrity": "sha1-lvSGrAUMqfRLAJ++W305TKs6DuQ=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.14.5.tgz?cache=0&sync_timestamp=1623280365934&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.14.5.tgz",
+      "integrity": "sha1-IrI6VO9RwrdgXYUZMMGXbdC8aTo=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-validator-identifier": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.14.5.tgz?cache=0&sync_timestamp=1623280293264&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.14.5.tgz",
+      "integrity": "sha1-0PDid8US4Mk4J3+qhaOWjJpEwOg=",
+      "dev": true
+    },
+    "@babel/helper-validator-option": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-validator-option/download/@babel/helper-validator-option-7.14.5.tgz",
+      "integrity": "sha1-bnKh//GNXfy4eOHmLxoCHEty1aM=",
+      "dev": true
+    },
+    "@babel/helper-wrap-function": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.14.5.tgz",
+      "integrity": "sha1-WRnRFb8P4yi4pdY7y2EPUWAfK/8=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helpers": {
+      "version": "7.14.6",
+      "resolved": "https://registry.nlark.com/@babel/helpers/download/@babel/helpers-7.14.6.tgz?cache=0&sync_timestamp=1623708432558&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelpers%2Fdownload%2F%40babel%2Fhelpers-7.14.6.tgz",
+      "integrity": "sha1-W1gwa5XxtH4qAZlDT6hlj6bCFjU=",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/highlight/download/@babel/highlight-7.14.5.tgz?cache=0&sync_timestamp=1623280393681&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.14.5.tgz",
+      "integrity": "sha1-aGGlLwOWZAUAH2qlNKAaJNmejNk=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "@babel/parser": {
+      "version": "7.14.6",
+      "resolved": "https://registry.nlark.com/@babel/parser/download/@babel/parser-7.14.6.tgz",
+      "integrity": "sha1-2FzGjKPKyE6uOEwG8DKSH1In9LI=",
+      "dev": true
+    },
+    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/download/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz",
+      "integrity": "sha1-S0ZzAuFUjtOxvkO+rizJz0Xgu34=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5",
+        "@babel/plugin-proposal-optional-chaining": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.14.5.tgz?cache=0&sync_timestamp=1623280684173&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-async-generator-functions%2Fdownload%2F%40babel%2Fplugin-proposal-async-generator-functions-7.14.5.tgz",
+      "integrity": "sha1-QCSZDj3XQYH09CbqZXdp/0mi3zk=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-remap-async-to-generator": "^7.14.5",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      }
+    },
+    "@babel/plugin-proposal-class-properties": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.14.5.tgz?cache=0&sync_timestamp=1623280683880&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.14.5.tgz",
+      "integrity": "sha1-QNHuFAxbHjGjUPT17tlFCWVZtC4=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-class-static-block": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-class-static-block/download/@babel/plugin-proposal-class-static-block-7.14.5.tgz",
+      "integrity": "sha1-FY6eENRJw4Se8+zelKA9nxhBtoE=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-decorators": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.14.5.tgz?cache=0&sync_timestamp=1623280686025&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-decorators%2Fdownload%2F%40babel%2Fplugin-proposal-decorators-7.14.5.tgz",
+      "integrity": "sha1-WbxN/B1mW1pnSc95j/Qil+0bLB0=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-decorators": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-dynamic-import": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.14.5.tgz?cache=0&sync_timestamp=1623280457211&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-dynamic-import%2Fdownload%2F%40babel%2Fplugin-proposal-dynamic-import-7.14.5.tgz",
+      "integrity": "sha1-DGYX30YcDB+P/ztHzVl3I2AQHSw=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-export-namespace-from": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-export-namespace-from/download/@babel/plugin-proposal-export-namespace-from-7.14.5.tgz?cache=0&sync_timestamp=1623280459053&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-export-namespace-from%2Fdownload%2F%40babel%2Fplugin-proposal-export-namespace-from-7.14.5.tgz",
+      "integrity": "sha1-260kQxDObM0IMHIWfYzqg6Uvr3Y=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-json-strings": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.14.5.tgz",
+      "integrity": "sha1-ON5g2zYug6PYyUSshY3fnwwiOes=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-logical-assignment-operators": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-logical-assignment-operators/download/@babel/plugin-proposal-logical-assignment-operators-7.14.5.tgz?cache=0&sync_timestamp=1623280460897&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-logical-assignment-operators%2Fdownload%2F%40babel%2Fplugin-proposal-logical-assignment-operators-7.14.5.tgz",
+      "integrity": "sha1-bmIpwqmbAqspFfglceDMZGpAxzg=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-nullish-coalescing-operator": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz?cache=0&sync_timestamp=1623280605042&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator%2Fdownload%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator-7.14.5.tgz",
+      "integrity": "sha1-7jhYnOAOLMWbKZ7D6kBvzToP2vY=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-numeric-separator": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.14.5.tgz?cache=0&sync_timestamp=1623280460632&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-numeric-separator%2Fdownload%2F%40babel%2Fplugin-proposal-numeric-separator-7.14.5.tgz",
+      "integrity": "sha1-g2Mb8z2aUd8YTCECoGmsDFjAXxg=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.14.5.tgz?cache=0&sync_timestamp=1623280397683&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-proposal-object-rest-spread-7.14.5.tgz",
+      "integrity": "sha1-5YHVzN+hh+pu1z9WxqIcFYC5D78=",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.14.5",
+        "@babel/helper-compilation-targets": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-optional-catch-binding": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.14.5.tgz",
+      "integrity": "sha1-k53W7d7/Omf997PwRLU0cmJZjDw=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-optional-chaining": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.14.5.tgz",
+      "integrity": "sha1-+oNlHmCjYOPxN5fu8AuNUZaVtgM=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-private-methods": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-private-methods/download/@babel/plugin-proposal-private-methods-7.14.5.tgz",
+      "integrity": "sha1-N0RklZlrKUXzD1vltg1eKqT1eS0=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-private-property-in-object/download/@babel/plugin-proposal-private-property-in-object-7.14.5.tgz",
+      "integrity": "sha1-n2Wk0Ek6lAtMAfiqnT8YlKWH9jY=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.14.5.tgz?cache=0&sync_timestamp=1623280385924&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-unicode-property-regex%2Fdownload%2F%40babel%2Fplugin-proposal-unicode-property-regex-7.14.5.tgz",
+      "integrity": "sha1-D5XuDnV6XWR/N42qDsp+k/qou+g=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.8.4.tgz",
+      "integrity": "sha1-qYP7Gusuw/btBCohD2QOkOeG/g0=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-class-properties/download/@babel/plugin-syntax-class-properties-7.12.13.tgz",
+      "integrity": "sha1-tcmHJ0xKOoK4lxR5aTGmtTVErhA=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-syntax-class-static-block/download/@babel/plugin-syntax-class-static-block-7.14.5.tgz?cache=0&sync_timestamp=1623280461402&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-syntax-class-static-block%2Fdownload%2F%40babel%2Fplugin-syntax-class-static-block-7.14.5.tgz",
+      "integrity": "sha1-GV34mxRrS3izv4l/16JXyEZZ1AY=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-decorators": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.14.5.tgz",
+      "integrity": "sha1-6vucDL4JyK/rlkujp7vWOUWnLyA=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.8.3.tgz",
+      "integrity": "sha1-Yr+Ysto80h1iYVT8lu5bPLaOrLM=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-export-namespace-from/download/@babel/plugin-syntax-export-namespace-from-7.8.3.tgz",
+      "integrity": "sha1-AolkqbqA28CUyRXEh618TnpmRlo=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      }
+    },
+    "@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.8.3.tgz",
+      "integrity": "sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.14.5.tgz",
+      "integrity": "sha1-AA4uJdhnPM5JMAUXo+2kTCY+QgE=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "resolved": "https://registry.nlark.com/@babel/plugin-syntax-logical-assignment-operators/download/@babel/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+      "integrity": "sha1-ypHvRjA1MESLkGZSusLp/plB9pk=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "resolved": "https://registry.nlark.com/@babel/plugin-syntax-nullish-coalescing-operator/download/@babel/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+      "integrity": "sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-numeric-separator/download/@babel/plugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.8.3.tgz",
+      "integrity": "sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+      "integrity": "sha1-YRGiZbz7Ag6579D9/X0mQCue1sE=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "resolved": "https://registry.nlark.com/@babel/plugin-syntax-optional-chaining/download/@babel/plugin-syntax-optional-chaining-7.8.3.tgz",
+      "integrity": "sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-syntax-private-property-in-object/download/@babel/plugin-syntax-private-property-in-object-7.14.5.tgz?cache=0&sync_timestamp=1623280462994&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-syntax-private-property-in-object%2Fdownload%2F%40babel%2Fplugin-syntax-private-property-in-object-7.14.5.tgz",
+      "integrity": "sha1-DcZnHsDqIrbpShEU+FeXDNOd4a0=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.14.5.tgz?cache=0&sync_timestamp=1623280464882&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-syntax-top-level-await%2Fdownload%2F%40babel%2Fplugin-syntax-top-level-await-7.14.5.tgz",
+      "integrity": "sha1-wc/a3DWmRiQAAfBhOCR7dBw02Uw=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-arrow-functions": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.14.5.tgz",
+      "integrity": "sha1-9xh9lYinaN0IC/TJ/+EX6mL3hio=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-async-to-generator": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.14.5.tgz?cache=0&sync_timestamp=1623280684756&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-async-to-generator%2Fdownload%2F%40babel%2Fplugin-transform-async-to-generator-7.14.5.tgz",
+      "integrity": "sha1-cseJCE2PIJSsuUVjOUPvhEPTnmc=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-remap-async-to-generator": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.14.5.tgz",
+      "integrity": "sha1-5IZB2ZnUvBV6Z+8zautUvET9OtQ=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-block-scoping": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.14.5.tgz",
+      "integrity": "sha1-jMY+YeUPQuB45vCb53WnXyPvmTk=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-classes": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.14.5.tgz?cache=0&sync_timestamp=1623280682485&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-classes%2Fdownload%2F%40babel%2Fplugin-transform-classes-7.14.5.tgz",
+      "integrity": "sha1-DpjoIJezhVCwO0g/m1GnjeCsss8=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-optimise-call-expression": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/plugin-transform-computed-properties": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.14.5.tgz",
+      "integrity": "sha1-G514mHQg0RIj1BGVRhzEO5dLIE8=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-destructuring": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.14.5.tgz",
+      "integrity": "sha1-0yrRn/Gm2h6GHcYnINgNl3bjvzU=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-dotall-regex": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.14.5.tgz?cache=0&sync_timestamp=1623280386290&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-dotall-regex%2Fdownload%2F%40babel%2Fplugin-transform-dotall-regex-7.14.5.tgz",
+      "integrity": "sha1-L2v3bka9+AQ7Tn4WzyRTJim6DHo=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-duplicate-keys": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.14.5.tgz",
+      "integrity": "sha1-NlpIRIgb3xUB46nwJw5/D5EXeVQ=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.14.5.tgz?cache=0&sync_timestamp=1623280390976&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-exponentiation-operator%2Fdownload%2F%40babel%2Fplugin-transform-exponentiation-operator-7.14.5.tgz",
+      "integrity": "sha1-UVS43Wo9/m2Qkj1hckvT3uuQtJM=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-for-of": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.14.5.tgz",
+      "integrity": "sha1-2uOEYT3o93wZaohpy/YCpE9/wOs=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-function-name": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.14.5.tgz",
+      "integrity": "sha1-6Bxl7LkAdG1/MYAva+0fUtkV1vI=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-literals": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.14.5.tgz",
+      "integrity": "sha1-QdBsf/XU0J489Fh70+zzkwxzD3g=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-member-expression-literals": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.14.5.tgz",
+      "integrity": "sha1-s5zVISor8jWmF9Mg7CtIvMCRuKc=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-modules-amd": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.14.5.tgz?cache=0&sync_timestamp=1623280684461&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-modules-amd%2Fdownload%2F%40babel%2Fplugin-transform-modules-amd-7.14.5.tgz",
+      "integrity": "sha1-T9nOfjQRy4uDhISAtwQdgwBIWPc=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-commonjs": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.14.5.tgz?cache=0&sync_timestamp=1623280686964&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-modules-commonjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-commonjs-7.14.5.tgz",
+      "integrity": "sha1-eq7g6pgoPelNqYso+MNXAUKdrZc=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-simple-access": "^7.14.5",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-systemjs": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.14.5.tgz?cache=0&sync_timestamp=1623280686650&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-modules-systemjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-systemjs-7.14.5.tgz",
+      "integrity": "sha1-x1NC74sw3N5CldNAGq4k5lY47Sk=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.14.5",
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-umd": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.14.5.tgz?cache=0&sync_timestamp=1623280687270&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-modules-umd%2Fdownload%2F%40babel%2Fplugin-transform-modules-umd-7.14.5.tgz",
+      "integrity": "sha1-+2Yt/uaXzOJ0p82lJRkKeQlqpuA=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.14.5.tgz?cache=0&sync_timestamp=1623280390978&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-named-capturing-groups-regex%2Fdownload%2F%40babel%2Fplugin-transform-named-capturing-groups-regex-7.14.5.tgz",
+      "integrity": "sha1-1Tfo7gg+5vaqT07vnSCB1VV0bkw=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-new-target": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.14.5.tgz",
+      "integrity": "sha1-Mb2ui5JdyEB26/zSqZQBQ67X2/g=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-object-super": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.14.5.tgz?cache=0&sync_timestamp=1623280681813&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-object-super%2Fdownload%2F%40babel%2Fplugin-transform-object-super-7.14.5.tgz",
+      "integrity": "sha1-0LX66snphZehYanPeMUn7ZNM3EU=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-parameters": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.14.5.tgz",
+      "integrity": "sha1-SWYuhqHz3cysY2On37H/ChWK/rM=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-property-literals": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.14.5.tgz",
+      "integrity": "sha1-DduqH4PbNgbxzfSEb6HftHNFizQ=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-regenerator": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.14.5.tgz?cache=0&sync_timestamp=1623280395479&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-regenerator%2Fdownload%2F%40babel%2Fplugin-transform-regenerator-7.14.5.tgz",
+      "integrity": "sha1-lnb9VwftKPUicnxbPAqoVERAsE8=",
+      "dev": true,
+      "requires": {
+        "regenerator-transform": "^0.14.2"
+      }
+    },
+    "@babel/plugin-transform-reserved-words": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.14.5.tgz?cache=0&sync_timestamp=1623280468592&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-reserved-words%2Fdownload%2F%40babel%2Fplugin-transform-reserved-words-7.14.5.tgz",
+      "integrity": "sha1-xEWJtmHP2++NQwDcx0ad/6kvgwQ=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-runtime": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.14.5.tgz?cache=0&sync_timestamp=1623280381633&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-runtime%2Fdownload%2F%40babel%2Fplugin-transform-runtime-7.14.5.tgz",
+      "integrity": "sha1-MEkdrUnGBZ+Pj6XuiJagCJ6YdSM=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "babel-plugin-polyfill-corejs2": "^0.2.2",
+        "babel-plugin-polyfill-corejs3": "^0.2.2",
+        "babel-plugin-polyfill-regenerator": "^0.2.2",
+        "semver": "^6.3.0"
+      }
+    },
+    "@babel/plugin-transform-shorthand-properties": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.14.5.tgz?cache=0&sync_timestamp=1623280351390&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-shorthand-properties%2Fdownload%2F%40babel%2Fplugin-transform-shorthand-properties-7.14.5.tgz",
+      "integrity": "sha1-l/E4VfFAkzjYyty6ymcK154JGlg=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-spread": {
+      "version": "7.14.6",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.14.6.tgz?cache=0&sync_timestamp=1623708435507&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-spread%2Fdownload%2F%40babel%2Fplugin-transform-spread-7.14.6.tgz",
+      "integrity": "sha1-a9QOV/596UqpBIUZY7VhZlL3MUQ=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-sticky-regex": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.14.5.tgz?cache=0&sync_timestamp=1623280350911&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-sticky-regex%2Fdownload%2F%40babel%2Fplugin-transform-sticky-regex-7.14.5.tgz",
+      "integrity": "sha1-W2F1Qmdei3dhKUOB88KMYz9Arrk=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-template-literals": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.14.5.tgz?cache=0&sync_timestamp=1623280350943&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-template-literals%2Fdownload%2F%40babel%2Fplugin-transform-template-literals-7.14.5.tgz",
+      "integrity": "sha1-pfK8Izk32EU4hdxza92Nn/q/PZM=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-typeof-symbol": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.14.5.tgz?cache=0&sync_timestamp=1623280352113&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-typeof-symbol%2Fdownload%2F%40babel%2Fplugin-transform-typeof-symbol-7.14.5.tgz",
+      "integrity": "sha1-Oa8nOemJor0pG/a1PxaYFCPUV9Q=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-unicode-escapes": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-unicode-escapes/download/@babel/plugin-transform-unicode-escapes-7.14.5.tgz?cache=0&sync_timestamp=1623280468339&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-unicode-escapes%2Fdownload%2F%40babel%2Fplugin-transform-unicode-escapes-7.14.5.tgz",
+      "integrity": "sha1-nUvSpoHjxdes9PV/qeURddkdDGs=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-unicode-regex": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.14.5.tgz",
+      "integrity": "sha1-TNCbbIQl3YElXHzrP7GDbnQUOC4=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/preset-env": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/preset-env/download/@babel/preset-env-7.14.5.tgz?cache=0&sync_timestamp=1623280687952&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fpreset-env%2Fdownload%2F%40babel%2Fpreset-env-7.14.5.tgz",
+      "integrity": "sha1-wMhOdjZh/Q50KSw9URyzOwxmiZc=",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.14.5",
+        "@babel/helper-compilation-targets": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5",
+        "@babel/plugin-proposal-async-generator-functions": "^7.14.5",
+        "@babel/plugin-proposal-class-properties": "^7.14.5",
+        "@babel/plugin-proposal-class-static-block": "^7.14.5",
+        "@babel/plugin-proposal-dynamic-import": "^7.14.5",
+        "@babel/plugin-proposal-export-namespace-from": "^7.14.5",
+        "@babel/plugin-proposal-json-strings": "^7.14.5",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
+        "@babel/plugin-proposal-numeric-separator": "^7.14.5",
+        "@babel/plugin-proposal-object-rest-spread": "^7.14.5",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.14.5",
+        "@babel/plugin-proposal-optional-chaining": "^7.14.5",
+        "@babel/plugin-proposal-private-methods": "^7.14.5",
+        "@babel/plugin-proposal-private-property-in-object": "^7.14.5",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.14.5",
+        "@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-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.14.5",
+        "@babel/plugin-transform-async-to-generator": "^7.14.5",
+        "@babel/plugin-transform-block-scoped-functions": "^7.14.5",
+        "@babel/plugin-transform-block-scoping": "^7.14.5",
+        "@babel/plugin-transform-classes": "^7.14.5",
+        "@babel/plugin-transform-computed-properties": "^7.14.5",
+        "@babel/plugin-transform-destructuring": "^7.14.5",
+        "@babel/plugin-transform-dotall-regex": "^7.14.5",
+        "@babel/plugin-transform-duplicate-keys": "^7.14.5",
+        "@babel/plugin-transform-exponentiation-operator": "^7.14.5",
+        "@babel/plugin-transform-for-of": "^7.14.5",
+        "@babel/plugin-transform-function-name": "^7.14.5",
+        "@babel/plugin-transform-literals": "^7.14.5",
+        "@babel/plugin-transform-member-expression-literals": "^7.14.5",
+        "@babel/plugin-transform-modules-amd": "^7.14.5",
+        "@babel/plugin-transform-modules-commonjs": "^7.14.5",
+        "@babel/plugin-transform-modules-systemjs": "^7.14.5",
+        "@babel/plugin-transform-modules-umd": "^7.14.5",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.5",
+        "@babel/plugin-transform-new-target": "^7.14.5",
+        "@babel/plugin-transform-object-super": "^7.14.5",
+        "@babel/plugin-transform-parameters": "^7.14.5",
+        "@babel/plugin-transform-property-literals": "^7.14.5",
+        "@babel/plugin-transform-regenerator": "^7.14.5",
+        "@babel/plugin-transform-reserved-words": "^7.14.5",
+        "@babel/plugin-transform-shorthand-properties": "^7.14.5",
+        "@babel/plugin-transform-spread": "^7.14.5",
+        "@babel/plugin-transform-sticky-regex": "^7.14.5",
+        "@babel/plugin-transform-template-literals": "^7.14.5",
+        "@babel/plugin-transform-typeof-symbol": "^7.14.5",
+        "@babel/plugin-transform-unicode-escapes": "^7.14.5",
+        "@babel/plugin-transform-unicode-regex": "^7.14.5",
+        "@babel/preset-modules": "^0.1.4",
+        "@babel/types": "^7.14.5",
+        "babel-plugin-polyfill-corejs2": "^0.2.2",
+        "babel-plugin-polyfill-corejs3": "^0.2.2",
+        "babel-plugin-polyfill-regenerator": "^0.2.2",
+        "core-js-compat": "^3.14.0",
+        "semver": "^6.3.0"
+      }
+    },
+    "@babel/preset-modules": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/preset-modules/download/@babel/preset-modules-0.1.4.tgz",
+      "integrity": "sha1-Ni8raMZihClw/bXiVP/I/BwuQV4=",
+      "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.14.6",
+      "resolved": "https://registry.nlark.com/@babel/runtime/download/@babel/runtime-7.14.6.tgz?cache=0&sync_timestamp=1623708247115&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.14.6.tgz",
+      "integrity": "sha1-U1IDvAiS78fexgvcJ7Ls9uQJBi0=",
+      "requires": {
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "@babel/template": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/template/download/@babel/template-7.14.5.tgz?cache=0&sync_timestamp=1623280386138&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.14.5.tgz",
+      "integrity": "sha1-qbydizM1T/blWpxg0RCSAKaJdPQ=",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.14.5",
+        "@babel/parser": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/traverse/download/@babel/traverse-7.14.5.tgz",
+      "integrity": "sha1-wRGw9Yr6tP6j0zhaQG9pJ0jFmHA=",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.14.5",
+        "@babel/generator": "^7.14.5",
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-hoist-variables": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5",
+        "@babel/parser": "^7.14.5",
+        "@babel/types": "^7.14.5",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/types": {
+      "version": "7.14.5",
+      "resolved": "https://registry.nlark.com/@babel/types/download/@babel/types-7.14.5.tgz?cache=0&sync_timestamp=1623280355970&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.14.5.tgz",
+      "integrity": "sha1-O7mXuoKaIQTO2yBonEpbgSHTg/8=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "@hapi/address": {
+      "version": "2.1.4",
+      "resolved": "https://registry.nlark.com/@hapi/address/download/@hapi/address-2.1.4.tgz",
+      "integrity": "sha1-XWftQ/P9QaadS5/3tW58DR0KgeU=",
+      "dev": true
+    },
+    "@hapi/bourne": {
+      "version": "1.3.2",
+      "resolved": "https://registry.nlark.com/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz",
+      "integrity": "sha1-CnCVreoGckPOMoPhtWuKj0U7JCo=",
+      "dev": true
+    },
+    "@hapi/hoek": {
+      "version": "8.5.1",
+      "resolved": "https://registry.nlark.com/@hapi/hoek/download/@hapi/hoek-8.5.1.tgz",
+      "integrity": "sha1-/elgZMpEbeyMVajC8TCVewcMbgY=",
+      "dev": true
+    },
+    "@hapi/joi": {
+      "version": "15.1.1",
+      "resolved": "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz?cache=0&sync_timestamp=1615984328397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fjoi%2Fdownload%2F%40hapi%2Fjoi-15.1.1.tgz",
+      "integrity": "sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc=",
+      "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.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.6.tgz",
+      "integrity": "sha1-aNk1+j6uf91asNf5U/MgXYsr/Ck=",
+      "dev": true,
+      "requires": {
+        "@hapi/hoek": "^8.3.0"
+      }
+    },
+    "@intervolga/optimize-cssnano-plugin": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npm.taobao.org/@intervolga/optimize-cssnano-plugin/download/@intervolga/optimize-cssnano-plugin-1.0.6.tgz",
+      "integrity": "sha1-vnx4RhKLiPapsdEmGgrQbrXA/fg=",
+      "dev": true,
+      "requires": {
+        "cssnano": "^4.0.0",
+        "cssnano-preset-default": "^4.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "@mrmlnc/readdir-enhanced": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz",
+      "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=",
+      "dev": true,
+      "requires": {
+        "call-me-maybe": "^1.0.1",
+        "glob-to-regexp": "^0.3.0"
+      }
+    },
+    "@nodelib/fs.stat": {
+      "version": "1.1.3",
+      "resolved": "https://registry.nlark.com/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz?cache=0&sync_timestamp=1622792655362&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-1.1.3.tgz",
+      "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=",
+      "dev": true
+    },
+    "@popperjs/core": {
+      "version": "2.9.2",
+      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz",
+      "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q=="
+    },
+    "@soda/friendly-errors-webpack-plugin": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.8.0.tgz?cache=0&sync_timestamp=1607927438775&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40soda%2Ffriendly-errors-webpack-plugin%2Fdownload%2F%40soda%2Ffriendly-errors-webpack-plugin-1.8.0.tgz",
+      "integrity": "sha1-hHUdgqkwGdXJLAzw5FrFkIfNIkA=",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.2",
+        "error-stack-parser": "^2.0.2",
+        "string-width": "^2.0.0",
+        "strip-ansi": "^5"
+      },
+      "dependencies": {
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+          "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "@soda/get-current-script": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/@soda/get-current-script/download/@soda/get-current-script-1.0.2.tgz",
+      "integrity": "sha1-pTUV2yXYA4N0OBtzryC7Ty5QjYc=",
+      "dev": true
+    },
+    "@types/body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.nlark.com/@types/body-parser/download/@types/body-parser-1.19.0.tgz",
+      "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=",
+      "dev": true,
+      "requires": {
+        "@types/connect": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/connect": {
+      "version": "3.4.34",
+      "resolved": "https://registry.nlark.com/@types/connect/download/@types/connect-3.4.34.tgz?cache=0&sync_timestamp=1621240728121&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fconnect%2Fdownload%2F%40types%2Fconnect-3.4.34.tgz",
+      "integrity": "sha1-FwpAIjptZmAG2TyhKK8r6x2bGQE=",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/connect-history-api-fallback": {
+      "version": "1.3.4",
+      "resolved": "https://registry.nlark.com/@types/connect-history-api-fallback/download/@types/connect-history-api-fallback-1.3.4.tgz?cache=0&sync_timestamp=1621240807633&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fconnect-history-api-fallback%2Fdownload%2F%40types%2Fconnect-history-api-fallback-1.3.4.tgz",
+      "integrity": "sha1-jA8Obl2CUraZ9aZi9Rvfgv2di7g=",
+      "dev": true,
+      "requires": {
+        "@types/express-serve-static-core": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/express": {
+      "version": "4.17.12",
+      "resolved": "https://registry.nlark.com/@types/express/download/@types/express-4.17.12.tgz?cache=0&sync_timestamp=1621962166997&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fexpress%2Fdownload%2F%40types%2Fexpress-4.17.12.tgz",
+      "integrity": "sha1-S8G/PNDP5tP28oU2SLQNt9VN41A=",
+      "dev": true,
+      "requires": {
+        "@types/body-parser": "*",
+        "@types/express-serve-static-core": "^4.17.18",
+        "@types/qs": "*",
+        "@types/serve-static": "*"
+      }
+    },
+    "@types/express-serve-static-core": {
+      "version": "4.17.21",
+      "resolved": "https://registry.nlark.com/@types/express-serve-static-core/download/@types/express-serve-static-core-4.17.21.tgz?cache=0&sync_timestamp=1622673130736&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fexpress-serve-static-core%2Fdownload%2F%40types%2Fexpress-serve-static-core-4.17.21.tgz",
+      "integrity": "sha1-pCcnjhBryne4OthSIernCaNBTUI=",
+      "dev": true,
+      "requires": {
+        "@types/node": "*",
+        "@types/qs": "*",
+        "@types/range-parser": "*"
+      }
+    },
+    "@types/glob": {
+      "version": "7.1.3",
+      "resolved": "https://registry.nlark.com/@types/glob/download/@types/glob-7.1.3.tgz?cache=0&sync_timestamp=1621241272381&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fglob%2Fdownload%2F%40types%2Fglob-7.1.3.tgz",
+      "integrity": "sha1-5rqA82t9qtLGhazZJmOC5omFwYM=",
+      "dev": true,
+      "requires": {
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/http-proxy": {
+      "version": "1.17.6",
+      "resolved": "https://registry.nlark.com/@types/http-proxy/download/@types/http-proxy-1.17.6.tgz",
+      "integrity": "sha1-Ytw/reIn1qwoYsjxnuDanan9hhY=",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/json-schema": {
+      "version": "7.0.7",
+      "resolved": "https://registry.nlark.com/@types/json-schema/download/@types/json-schema-7.0.7.tgz",
+      "integrity": "sha1-mKmTUWyFnrDVxMjwmDF6nqaNua0="
+    },
+    "@types/mime": {
+      "version": "1.3.2",
+      "resolved": "https://registry.nlark.com/@types/mime/download/@types/mime-1.3.2.tgz",
+      "integrity": "sha1-k+Jb+e51/g/YC1lLxP6w6GIRG1o=",
+      "dev": true
+    },
+    "@types/minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.nlark.com/@types/minimatch/download/@types/minimatch-3.0.4.tgz",
+      "integrity": "sha1-8Owl2/Lw5LGGRzE6wDETTKWySyE=",
+      "dev": true
+    },
+    "@types/minimist": {
+      "version": "1.2.1",
+      "resolved": "https://registry.nlark.com/@types/minimist/download/@types/minimist-1.2.1.tgz?cache=0&sync_timestamp=1621241867849&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fminimist%2Fdownload%2F%40types%2Fminimist-1.2.1.tgz",
+      "integrity": "sha1-KD9mn/dte4Jg34q3pCYsyD2YglY=",
+      "dev": true
+    },
+    "@types/node": {
+      "version": "15.12.2",
+      "resolved": "https://registry.nlark.com/@types/node/download/@types/node-15.12.2.tgz",
+      "integrity": "sha1-HytCxL5xVv9Kb5FLL7A9BfqE440=",
+      "dev": true
+    },
+    "@types/normalize-package-data": {
+      "version": "2.4.0",
+      "resolved": "https://registry.nlark.com/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz?cache=0&sync_timestamp=1621242064742&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnormalize-package-data%2Fdownload%2F%40types%2Fnormalize-package-data-2.4.0.tgz",
+      "integrity": "sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=",
+      "dev": true
+    },
+    "@types/q": {
+      "version": "1.5.4",
+      "resolved": "https://registry.nlark.com/@types/q/download/@types/q-1.5.4.tgz?cache=0&sync_timestamp=1621242400776&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fq%2Fdownload%2F%40types%2Fq-1.5.4.tgz",
+      "integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=",
+      "dev": true
+    },
+    "@types/qs": {
+      "version": "6.9.6",
+      "resolved": "https://registry.nlark.com/@types/qs/download/@types/qs-6.9.6.tgz?cache=0&sync_timestamp=1621242292262&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fqs%2Fdownload%2F%40types%2Fqs-6.9.6.tgz",
+      "integrity": "sha1-35w8izGiR+wxXmmWVmvjFx30s7E=",
+      "dev": true
+    },
+    "@types/range-parser": {
+      "version": "1.2.3",
+      "resolved": "https://registry.nlark.com/@types/range-parser/download/@types/range-parser-1.2.3.tgz?cache=0&sync_timestamp=1621242291785&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Frange-parser%2Fdownload%2F%40types%2Frange-parser-1.2.3.tgz",
+      "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=",
+      "dev": true
+    },
+    "@types/serve-static": {
+      "version": "1.13.9",
+      "resolved": "https://registry.nlark.com/@types/serve-static/download/@types/serve-static-1.13.9.tgz?cache=0&sync_timestamp=1621242658422&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fserve-static%2Fdownload%2F%40types%2Fserve-static-1.13.9.tgz",
+      "integrity": "sha1-qs8oqFoF7imhH7fD6tk1rFbzPk4=",
+      "dev": true,
+      "requires": {
+        "@types/mime": "^1",
+        "@types/node": "*"
+      }
+    },
+    "@types/source-list-map": {
+      "version": "0.1.2",
+      "resolved": "https://registry.nlark.com/@types/source-list-map/download/@types/source-list-map-0.1.2.tgz",
+      "integrity": "sha1-AHiDYGP/rxdBI0m7o2QIfgrALsk=",
+      "dev": true
+    },
+    "@types/tapable": {
+      "version": "1.0.7",
+      "resolved": "https://registry.nlark.com/@types/tapable/download/@types/tapable-1.0.7.tgz?cache=0&sync_timestamp=1621243788434&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Ftapable%2Fdownload%2F%40types%2Ftapable-1.0.7.tgz",
+      "integrity": "sha1-VFFYNC+Uno/Tv9gTIklx7N3D+sQ=",
+      "dev": true
+    },
+    "@types/uglify-js": {
+      "version": "3.13.0",
+      "resolved": "https://registry.nlark.com/@types/uglify-js/download/@types/uglify-js-3.13.0.tgz",
+      "integrity": "sha1-HK2N8fsLFDxaugjeVxLqnR/3ESQ=",
+      "dev": true,
+      "requires": {
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "@types/webpack": {
+      "version": "4.41.29",
+      "resolved": "https://registry.nlark.com/@types/webpack/download/@types/webpack-4.41.29.tgz?cache=0&sync_timestamp=1621533733988&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fwebpack%2Fdownload%2F%40types%2Fwebpack-4.41.29.tgz",
+      "integrity": "sha1-LmbB3oIjxEA2ZGlBXFCkfZdiV3M=",
+      "dev": true,
+      "requires": {
+        "@types/node": "*",
+        "@types/tapable": "^1",
+        "@types/uglify-js": "*",
+        "@types/webpack-sources": "*",
+        "anymatch": "^3.0.0",
+        "source-map": "^0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "@types/webpack-dev-server": {
+      "version": "3.11.4",
+      "resolved": "https://registry.nlark.com/@types/webpack-dev-server/download/@types/webpack-dev-server-3.11.4.tgz",
+      "integrity": "sha1-kNR91mC2ltQJQxq4wen6NhUQOgc=",
+      "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": "2.1.0",
+      "resolved": "https://registry.nlark.com/@types/webpack-sources/download/@types/webpack-sources-2.1.0.tgz?cache=0&sync_timestamp=1621243863278&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fwebpack-sources%2Fdownload%2F%40types%2Fwebpack-sources-2.1.0.tgz",
+      "integrity": "sha1-iIKwvWLR4M5i8YPQ0Bty5ugujBA=",
+      "dev": true,
+      "requires": {
+        "@types/node": "*",
+        "@types/source-list-map": "*",
+        "source-map": "^0.7.3"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.7.3",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.7.3.tgz",
+          "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=",
+          "dev": true
+        }
+      }
+    },
+    "@vant/icons": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/@vant/icons/-/icons-1.6.0.tgz",
+      "integrity": "sha512-4Hvq4tl4grCOJLZ0e8ZaivBV8xOcmTPmTT8BDkTrEIKqnDowRFDdsXxcHECzWmbmMx+CYGdngvd2Cq8YR9DfKA=="
+    },
+    "@vant/popperjs": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@vant/popperjs/-/popperjs-1.1.0.tgz",
+      "integrity": "sha512-8MD1gz146awV/uPxYjz4pet22f7a9YVKqk7T+gFkWFwT9mEcrIUEg/xPrdOnWKLP9puXyYtm7oVfSDSefZ/p/w==",
+      "requires": {
+        "@popperjs/core": "^2.9.2"
+      }
+    },
+    "@vue/babel-helper-vue-jsx-merge-props": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.2.1.tgz?cache=0&sync_timestamp=1602851122331&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-helper-vue-jsx-merge-props%2Fdownload%2F%40vue%2Fbabel-helper-vue-jsx-merge-props-1.2.1.tgz",
+      "integrity": "sha1-MWJKelBfsU2h1YAjclpMXycOaoE="
+    },
+    "@vue/babel-helper-vue-transform-on": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/@vue/babel-helper-vue-transform-on/download/@vue/babel-helper-vue-transform-on-1.0.2.tgz",
+      "integrity": "sha1-m5xpHNBvyFUiGiR1w8yDHXdLx9w=",
+      "dev": true
+    },
+    "@vue/babel-plugin-jsx": {
+      "version": "1.0.6",
+      "resolved": "https://registry.nlark.com/@vue/babel-plugin-jsx/download/@vue/babel-plugin-jsx-1.0.6.tgz?cache=0&sync_timestamp=1619929844730&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fbabel-plugin-jsx%2Fdownload%2F%40vue%2Fbabel-plugin-jsx-1.0.6.tgz",
+      "integrity": "sha1-GEvzVBq279vlB5q4sgwZ4q8QC/s=",
+      "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.2.1",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.2.1.tgz?cache=0&sync_timestamp=1602851121024&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-plugin-transform-vue-jsx%2Fdownload%2F%40vue%2Fbabel-plugin-transform-vue-jsx-1.2.1.tgz",
+      "integrity": "sha1-ZGBGxlLC8CQnJ/NFGdkXsGQEHtc=",
+      "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.2.1",
+        "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.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz",
+          "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=",
+          "dev": true
+        }
+      }
+    },
+    "@vue/babel-preset-app": {
+      "version": "4.5.13",
+      "resolved": "https://registry.nlark.com/@vue/babel-preset-app/download/@vue/babel-preset-app-4.5.13.tgz",
+      "integrity": "sha1-y0dTIeTHP38RDawppIwqnLgK/rY=",
+      "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"
+      }
+    },
+    "@vue/babel-preset-jsx": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.2.4.tgz",
+      "integrity": "sha1-kv6nnbbxOwHoDToAmeKSS9y+Toc=",
+      "dev": true,
+      "requires": {
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+        "@vue/babel-sugar-composition-api-inject-h": "^1.2.1",
+        "@vue/babel-sugar-composition-api-render-instance": "^1.2.4",
+        "@vue/babel-sugar-functional-vue": "^1.2.2",
+        "@vue/babel-sugar-inject-h": "^1.2.2",
+        "@vue/babel-sugar-v-model": "^1.2.3",
+        "@vue/babel-sugar-v-on": "^1.2.3"
+      }
+    },
+    "@vue/babel-sugar-composition-api-inject-h": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-composition-api-inject-h/download/@vue/babel-sugar-composition-api-inject-h-1.2.1.tgz",
+      "integrity": "sha1-BdbgxDJxDjdYKyvppgSbaJtvA+s=",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-composition-api-render-instance": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-composition-api-render-instance/download/@vue/babel-sugar-composition-api-render-instance-1.2.4.tgz",
+      "integrity": "sha1-5MvGmXw0T6wnF4WteikyXFHWjRk=",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-functional-vue": {
+      "version": "1.2.2",
+      "resolved": "https://registry.nlark.com/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.2.2.tgz",
+      "integrity": "sha1-JnqayNeHyW7b8Dzj85LEnam9Jlg=",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-inject-h": {
+      "version": "1.2.2",
+      "resolved": "https://registry.nlark.com/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.2.2.tgz",
+      "integrity": "sha1-1zjTyJM2fshJHcu2abAAkZKT46o=",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-v-model": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.2.3.tgz?cache=0&sync_timestamp=1603182488740&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-v-model%2Fdownload%2F%40vue%2Fbabel-sugar-v-model-1.2.3.tgz",
+      "integrity": "sha1-+h8pulHr8KoabDX6ZtU5vEWaGPI=",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+        "camelcase": "^5.0.0",
+        "html-tags": "^2.0.0",
+        "svg-tags": "^1.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.nlark.com/camelcase/download/camelcase-5.3.1.tgz",
+          "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+          "dev": true
+        },
+        "html-tags": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz",
+          "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=",
+          "dev": true
+        }
+      }
+    },
+    "@vue/babel-sugar-v-on": {
+      "version": "1.2.3",
+      "resolved": "https://registry.nlark.com/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.2.3.tgz",
+      "integrity": "sha1-NCNnF4WGpp85LwS/ujICHQKROto=",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+        "camelcase": "^5.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.nlark.com/camelcase/download/camelcase-5.3.1.tgz",
+          "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+          "dev": true
+        }
+      }
+    },
+    "@vue/cli-overlay": {
+      "version": "4.5.13",
+      "resolved": "https://registry.nlark.com/@vue/cli-overlay/download/@vue/cli-overlay-4.5.13.tgz",
+      "integrity": "sha1-Tx/SFhvo9p1suoB58/DX3E3uR6c=",
+      "dev": true
+    },
+    "@vue/cli-plugin-babel": {
+      "version": "4.5.13",
+      "resolved": "https://registry.nlark.com/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-4.5.13.tgz",
+      "integrity": "sha1-qJxILtzE6h0TVkXOxQKn9f1MMOc=",
+      "dev": true,
+      "requires": {
+        "@babel/core": "^7.11.0",
+        "@vue/babel-preset-app": "^4.5.13",
+        "@vue/cli-shared-utils": "^4.5.13",
+        "babel-loader": "^8.1.0",
+        "cache-loader": "^4.1.0",
+        "thread-loader": "^2.1.3",
+        "webpack": "^4.0.0"
+      }
+    },
+    "@vue/cli-plugin-router": {
+      "version": "4.5.13",
+      "resolved": "https://registry.nlark.com/@vue/cli-plugin-router/download/@vue/cli-plugin-router-4.5.13.tgz",
+      "integrity": "sha1-C2fIiYor8TKUGRmiouXzqsvZ/74=",
+      "dev": true,
+      "requires": {
+        "@vue/cli-shared-utils": "^4.5.13"
+      }
+    },
+    "@vue/cli-plugin-vuex": {
+      "version": "4.5.13",
+      "resolved": "https://registry.nlark.com/@vue/cli-plugin-vuex/download/@vue/cli-plugin-vuex-4.5.13.tgz",
+      "integrity": "sha1-mGRti8HmnPbGpsui/tPqzgNWw2A=",
+      "dev": true
+    },
+    "@vue/cli-service": {
+      "version": "4.5.13",
+      "resolved": "https://registry.nlark.com/@vue/cli-service/download/@vue/cli-service-4.5.13.tgz",
+      "integrity": "sha1-oJ5oSoAWhLbiTlQUrTBlCXDuye0=",
+      "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.13",
+        "@vue/cli-plugin-router": "^4.5.13",
+        "@vue/cli-plugin-vuex": "^4.5.13",
+        "@vue/cli-shared-utils": "^4.5.13",
+        "@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.nlark.com/acorn/download/acorn-7.4.1.tgz",
+          "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true,
+          "optional": true
+        },
+        "loader-utils": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz",
+          "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "ssri": {
+          "version": "8.0.1",
+          "resolved": "https://registry.nlark.com/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1621364626710&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
+          "integrity": "sha1-Y45OQ54v+9LNKJd21cpFfE9Roq8=",
+          "dev": true,
+          "requires": {
+            "minipass": "^3.1.1"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.13",
+      "resolved": "https://registry.nlark.com/@vue/cli-shared-utils/download/@vue/cli-shared-utils-4.5.13.tgz",
+      "integrity": "sha1-rNQPMbR5DxY0KSvapfypXcHg/1A=",
+      "dev": true,
+      "requires": {
+        "@hapi/joi": "^15.0.1",
+        "chalk": "^2.4.2",
+        "execa": "^1.0.0",
+        "launch-editor": "^2.2.1",
+        "lru-cache": "^5.1.1",
+        "node-ipc": "^9.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"
+      }
+    },
+    "@vue/component-compiler-utils": {
+      "version": "3.2.2",
+      "resolved": "https://registry.nlark.com/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.2.2.tgz",
+      "integrity": "sha1-L37V/u2C/38ChKzBHVJe5+/yJGA=",
+      "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",
+        "source-map": "~0.6.1",
+        "vue-template-es2015-compiler": "^1.9.0"
+      },
+      "dependencies": {
+        "hash-sum": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz",
+          "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "https://registry.nlark.com/lru-cache/download/lru-cache-4.1.5.tgz",
+          "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+          "dev": true
+        }
+      }
+    },
+    "@vue/preload-webpack-plugin": {
+      "version": "1.1.2",
+      "resolved": "https://registry.nlark.com/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.2.tgz",
+      "integrity": "sha1-zrkktOyzucQ4ccekKaAvhCPmIas=",
+      "dev": true
+    },
+    "@vue/web-component-wrapper": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fweb-component-wrapper%2Fdownload%2F%40vue%2Fweb-component-wrapper-1.3.0.tgz",
+      "integrity": "sha1-trQKdiVCnSvXwigd26YB7QXcfxo=",
+      "dev": true
+    },
+    "@webassemblyjs/ast": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.9.0.tgz?cache=0&sync_timestamp=1610041484025&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fast%2Fdownload%2F%40webassemblyjs%2Fast-1.9.0.tgz",
+      "integrity": "sha1-vYUGBLQEJFmlpBzX0zjL7Wle2WQ=",
+      "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.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.9.0.tgz?cache=0&sync_timestamp=1610041494828&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Ffloating-point-hex-parser%2Fdownload%2F%40webassemblyjs%2Ffloating-point-hex-parser-1.9.0.tgz",
+      "integrity": "sha1-PD07Jxvd/ITesA9xNEQ4MR1S/7Q=",
+      "dev": true
+    },
+    "@webassemblyjs/helper-api-error": {
+      "version": "1.9.0",
+      "resolved": "https://registry.nlark.com/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.9.0.tgz",
+      "integrity": "sha1-ID9nbjM7lsnaLuqzzO8zxFkotqI=",
+      "dev": true
+    },
+    "@webassemblyjs/helper-buffer": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.9.0.tgz",
+      "integrity": "sha1-oUQtJpxf6yP8vJ73WdrDVH8p3gA=",
+      "dev": true
+    },
+    "@webassemblyjs/helper-code-frame": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.9.0.tgz?cache=0&sync_timestamp=1610041493871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-code-frame%2Fdownload%2F%40webassemblyjs%2Fhelper-code-frame-1.9.0.tgz",
+      "integrity": "sha1-ZH+Iks0gQ6gqwMjF51w28dkVnyc=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "@webassemblyjs/helper-fsm": {
+      "version": "1.9.0",
+      "resolved": "https://registry.nlark.com/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.9.0.tgz",
+      "integrity": "sha1-wFJWtxJEIUZx9LCOwQitY7cO3bg=",
+      "dev": true
+    },
+    "@webassemblyjs/helper-module-context": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.9.0.tgz",
+      "integrity": "sha1-JdiIS3aDmHGgimxvgGw5ee9xLwc=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0"
+      }
+    },
+    "@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.9.0.tgz",
+      "integrity": "sha1-T+2L6sm4wU+MWLcNEk1UndH+V5A=",
+      "dev": true
+    },
+    "@webassemblyjs/helper-wasm-section": {
+      "version": "1.9.0",
+      "resolved": "https://registry.nlark.com/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.9.0.tgz",
+      "integrity": "sha1-WkE41aYpK6GLBMWuSXF+QWeWU0Y=",
+      "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.nlark.com/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.9.0.tgz",
+      "integrity": "sha1-Fceg+6roP7JhQ7us9tbfFwKtOeQ=",
+      "dev": true,
+      "requires": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "@webassemblyjs/leb128": {
+      "version": "1.9.0",
+      "resolved": "https://registry.nlark.com/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.9.0.tgz",
+      "integrity": "sha1-8Zygt2ptxVYjoJz/p2noOPoeHJU=",
+      "dev": true,
+      "requires": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/utf8": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.9.0.tgz",
+      "integrity": "sha1-BNM7Y2945qaBMifoJAL3Y3tiKas=",
+      "dev": true
+    },
+    "@webassemblyjs/wasm-edit": {
+      "version": "1.9.0",
+      "resolved": "https://registry.nlark.com/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.9.0.tgz",
+      "integrity": "sha1-P+bXnT8PkiGDqoYALELdJWz+6c8=",
+      "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.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.9.0.tgz",
+      "integrity": "sha1-ULxw7Gje2OJ2OwGhQYv0NJGnpJw=",
+      "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.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.9.0.tgz?cache=0&sync_timestamp=1610041488856&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-opt%2Fdownload%2F%40webassemblyjs%2Fwasm-opt-1.9.0.tgz",
+      "integrity": "sha1-IhEYHlsxMmRDzIES658LkChyGmE=",
+      "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.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.9.0.tgz?cache=0&sync_timestamp=1610041484395&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-parser%2Fdownload%2F%40webassemblyjs%2Fwasm-parser-1.9.0.tgz",
+      "integrity": "sha1-nUjkSCbfSmWYKUqmyHRp1kL/9l4=",
+      "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.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.9.0.tgz?cache=0&sync_timestamp=1610041489596&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwast-parser%2Fdownload%2F%40webassemblyjs%2Fwast-parser-1.9.0.tgz",
+      "integrity": "sha1-MDERXXmsW9JhVWzsw/qQo+9FGRQ=",
+      "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.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.9.0.tgz?cache=0&sync_timestamp=1610041488066&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwast-printer%2Fdownload%2F%40webassemblyjs%2Fwast-printer-1.9.0.tgz",
+      "integrity": "sha1-STXVTIX+9jewDOn1I3dFHQDUeJk=",
+      "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.nlark.com/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz",
+      "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=",
+      "dev": true
+    },
+    "@xtuc/long": {
+      "version": "4.2.2",
+      "resolved": "https://registry.nlark.com/@xtuc/long/download/@xtuc/long-4.2.2.tgz",
+      "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=",
+      "dev": true
+    },
+    "accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz",
+      "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
+      "dev": true,
+      "requires": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      }
+    },
+    "acorn": {
+      "version": "6.4.2",
+      "resolved": "https://registry.nlark.com/acorn/download/acorn-6.4.2.tgz",
+      "integrity": "sha1-NYZv1xBSjpLeEM8GAWSY5H454eY=",
+      "dev": true
+    },
+    "acorn-walk": {
+      "version": "7.2.0",
+      "resolved": "https://registry.nlark.com/acorn-walk/download/acorn-walk-7.2.0.tgz",
+      "integrity": "sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w=",
+      "dev": true
+    },
+    "address": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz",
+      "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=",
+      "dev": true
+    },
+    "ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.nlark.com/ajv/download/ajv-6.12.6.tgz",
+      "integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=",
+      "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.nlark.com/ajv-errors/download/ajv-errors-1.0.1.tgz",
+      "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=",
+      "dev": true
+    },
+    "ajv-keywords": {
+      "version": "3.5.2",
+      "resolved": "https://registry.nlark.com/ajv-keywords/download/ajv-keywords-3.5.2.tgz",
+      "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0="
+    },
+    "alphanum-sort": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/alphanum-sort/download/alphanum-sort-1.0.2.tgz",
+      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+      "dev": true
+    },
+    "ansi-colors": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz",
+      "integrity": "sha1-46PaS/uubIapwoViXeEkojQCb78=",
+      "dev": true
+    },
+    "ansi-html": {
+      "version": "0.0.7",
+      "resolved": "https://registry.nlark.com/ansi-html/download/ansi-html-0.0.7.tgz",
+      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+      "dev": true
+    },
+    "ansi-regex": {
+      "version": "4.1.0",
+      "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-4.1.0.tgz",
+      "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-3.2.1.tgz",
+      "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "any-promise": {
+      "version": "1.3.0",
+      "resolved": "https://registry.nlark.com/any-promise/download/any-promise-1.3.0.tgz",
+      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
+      "dev": true
+    },
+    "anymatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.nlark.com/anymatch/download/anymatch-3.1.2.tgz",
+      "integrity": "sha1-wFV8CWrzLxBhmPT04qODU343hxY=",
+      "requires": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      }
+    },
+    "aproba": {
+      "version": "1.2.0",
+      "resolved": "https://registry.nlark.com/aproba/download/aproba-1.2.0.tgz",
+      "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=",
+      "dev": true
+    },
+    "arch": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/arch/download/arch-2.2.0.tgz",
+      "integrity": "sha1-G8R4GPMFdk8jqzMGsL/AhsWinRE=",
+      "dev": true
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.nlark.com/argparse/download/argparse-1.0.10.tgz",
+      "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "arr-diff": {
+      "version": "4.0.0",
+      "resolved": "https://registry.nlark.com/arr-diff/download/arr-diff-4.0.0.tgz",
+      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "dev": true
+    },
+    "arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/arr-flatten/download/arr-flatten-1.1.0.tgz?cache=0&sync_timestamp=1618846805394&other_urls=https%3A%2F%2Fregistry.nlark.com%2Farr-flatten%2Fdownload%2Farr-flatten-1.1.0.tgz",
+      "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
+      "dev": true
+    },
+    "arr-union": {
+      "version": "3.1.0",
+      "resolved": "https://registry.nlark.com/arr-union/download/arr-union-3.1.0.tgz",
+      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+      "dev": true
+    },
+    "array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/array-flatten/download/array-flatten-1.1.1.tgz",
+      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+      "dev": true
+    },
+    "array-union": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz",
+      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+      "dev": true,
+      "requires": {
+        "array-uniq": "^1.0.1"
+      }
+    },
+    "array-uniq": {
+      "version": "1.0.3",
+      "resolved": "https://registry.nlark.com/array-uniq/download/array-uniq-1.0.3.tgz?cache=0&sync_timestamp=1620042121153&other_urls=https%3A%2F%2Fregistry.nlark.com%2Farray-uniq%2Fdownload%2Farray-uniq-1.0.3.tgz",
+      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+      "dev": true
+    },
+    "array-unique": {
+      "version": "0.3.2",
+      "resolved": "https://registry.nlark.com/array-unique/download/array-unique-0.3.2.tgz",
+      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+      "dev": true
+    },
+    "asn1": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz",
+      "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
+      "dev": true,
+      "requires": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "asn1.js": {
+      "version": "5.4.1",
+      "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-5.4.1.tgz",
+      "integrity": "sha1-EamAuE67kXgc41sP3C7ilON4Pwc=",
+      "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.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+          "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+          "dev": true
+        }
+      }
+    },
+    "assert": {
+      "version": "1.5.0",
+      "resolved": "https://registry.nlark.com/assert/download/assert-1.5.0.tgz?cache=0&sync_timestamp=1618847153747&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fassert%2Fdownload%2Fassert-1.5.0.tgz",
+      "integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.1",
+          "resolved": "https://registry.nlark.com/inherits/download/inherits-2.0.1.tgz",
+          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+          "dev": true
+        },
+        "util": {
+          "version": "0.10.3",
+          "resolved": "https://registry.nlark.com/util/download/util-0.10.3.tgz?cache=0&sync_timestamp=1622212984161&other_urls=https%3A%2F%2Fregistry.nlark.com%2Futil%2Fdownload%2Futil-0.10.3.tgz",
+          "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+          "dev": true,
+          "requires": {
+            "inherits": "2.0.1"
+          }
+        }
+      }
+    },
+    "assert-plus": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/assert-plus/download/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+      "dev": true
+    },
+    "assign-symbols": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz",
+      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+      "dev": true
+    },
+    "async": {
+      "version": "2.6.3",
+      "resolved": "https://registry.nlark.com/async/download/async-2.6.3.tgz",
+      "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.14"
+      }
+    },
+    "async-each": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz",
+      "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=",
+      "dev": true
+    },
+    "async-limiter": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz",
+      "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=",
+      "dev": true
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.nlark.com/asynckit/download/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "dev": true
+    },
+    "atob": {
+      "version": "2.1.2",
+      "resolved": "https://registry.nlark.com/atob/download/atob-2.1.2.tgz",
+      "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=",
+      "dev": true
+    },
+    "autoprefixer": {
+      "version": "9.8.6",
+      "resolved": "https://registry.nlark.com/autoprefixer/download/autoprefixer-9.8.6.tgz?cache=0&sync_timestamp=1622039586788&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fautoprefixer%2Fdownload%2Fautoprefixer-9.8.6.tgz",
+      "integrity": "sha1-O3NZTKG/kmYyDFrPFYjXTep0IQ8=",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.12.0",
+        "caniuse-lite": "^1.0.30001109",
+        "colorette": "^1.2.1",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "postcss": "^7.0.32",
+        "postcss-value-parser": "^4.1.0"
+      }
+    },
+    "aws-sign2": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz",
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+      "dev": true
+    },
+    "aws4": {
+      "version": "1.11.0",
+      "resolved": "https://registry.nlark.com/aws4/download/aws4-1.11.0.tgz",
+      "integrity": "sha1-1h9G2DslGSUOJ4Ta9bCUeai0HFk=",
+      "dev": true
+    },
+    "axios": {
+      "version": "0.21.1",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
+      "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
+      "requires": {
+        "follow-redirects": "^1.10.0"
+      }
+    },
+    "babel-loader": {
+      "version": "8.2.2",
+      "resolved": "https://registry.nlark.com/babel-loader/download/babel-loader-8.2.2.tgz",
+      "integrity": "sha1-k2POhMEMmkDmx1N0jhRBtgyKC4E=",
+      "dev": true,
+      "requires": {
+        "find-cache-dir": "^3.3.1",
+        "loader-utils": "^1.4.0",
+        "make-dir": "^3.1.0",
+        "schema-utils": "^2.6.5"
+      }
+    },
+    "babel-plugin-dynamic-import-node": {
+      "version": "2.3.3",
+      "resolved": "https://registry.nlark.com/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.3.tgz?cache=0&sync_timestamp=1618846790496&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-plugin-dynamic-import-node%2Fdownload%2Fbabel-plugin-dynamic-import-node-2.3.3.tgz",
+      "integrity": "sha1-hP2hnJduxcbe/vV/lCez3vZuF6M=",
+      "dev": true,
+      "requires": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "babel-plugin-polyfill-corejs2": {
+      "version": "0.2.2",
+      "resolved": "https://registry.nlark.com/babel-plugin-polyfill-corejs2/download/babel-plugin-polyfill-corejs2-0.2.2.tgz?cache=0&sync_timestamp=1622023904181&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-plugin-polyfill-corejs2%2Fdownload%2Fbabel-plugin-polyfill-corejs2-0.2.2.tgz",
+      "integrity": "sha1-6RJHheb9lPlLYYp5VOVpMFO/Uyc=",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.13.11",
+        "@babel/helper-define-polyfill-provider": "^0.2.2",
+        "semver": "^6.1.1"
+      }
+    },
+    "babel-plugin-polyfill-corejs3": {
+      "version": "0.2.3",
+      "resolved": "https://registry.nlark.com/babel-plugin-polyfill-corejs3/download/babel-plugin-polyfill-corejs3-0.2.3.tgz?cache=0&sync_timestamp=1623878015630&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-plugin-polyfill-corejs3%2Fdownload%2Fbabel-plugin-polyfill-corejs3-0.2.3.tgz",
+      "integrity": "sha1-cq3WjPCKi/E5um5t/AsdUECY5Xs=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-define-polyfill-provider": "^0.2.2",
+        "core-js-compat": "^3.14.0"
+      }
+    },
+    "babel-plugin-polyfill-regenerator": {
+      "version": "0.2.2",
+      "resolved": "https://registry.nlark.com/babel-plugin-polyfill-regenerator/download/babel-plugin-polyfill-regenerator-0.2.2.tgz?cache=0&sync_timestamp=1622023907940&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-plugin-polyfill-regenerator%2Fdownload%2Fbabel-plugin-polyfill-regenerator-0.2.2.tgz",
+      "integrity": "sha1-sxDI1kKsraNIwfo7Pmzg6FG+4Hc=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-define-polyfill-provider": "^0.2.2"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.2.tgz",
+      "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=",
+      "dev": true
+    },
+    "base": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz",
+      "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
+      "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.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.nlark.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.nlark.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "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.nlark.com/base64-js/download/base64-js-1.5.1.tgz",
+      "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=",
+      "dev": true
+    },
+    "batch": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz",
+      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+      "dev": true
+    },
+    "bcrypt-pbkdf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+      "dev": true,
+      "requires": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "bfj": {
+      "version": "6.1.2",
+      "resolved": "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz",
+      "integrity": "sha1-MlyGGoIryzWKQceKM7jm4ght3n8=",
+      "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.nlark.com/big.js/download/big.js-5.2.2.tgz",
+      "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg="
+    },
+    "binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.nlark.com/binary-extensions/download/binary-extensions-2.2.0.tgz",
+      "integrity": "sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0="
+    },
+    "bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.nlark.com/bindings/download/bindings-1.5.0.tgz",
+      "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
+    "bluebird": {
+      "version": "3.7.2",
+      "resolved": "https://registry.nlark.com/bluebird/download/bluebird-3.7.2.tgz?cache=0&sync_timestamp=1618847007562&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbluebird%2Fdownload%2Fbluebird-3.7.2.tgz",
+      "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=",
+      "dev": true
+    },
+    "bn.js": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-5.2.0.tgz",
+      "integrity": "sha1-NYhgZ0OWxpl3canQUfzBtX1K4AI=",
+      "dev": true
+    },
+    "body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz?cache=0&sync_timestamp=1615984442879&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbody-parser%2Fdownload%2Fbody-parser-1.19.0.tgz",
+      "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.nlark.com/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "qs": {
+          "version": "6.7.0",
+          "resolved": "https://registry.nlark.com/qs/download/qs-6.7.0.tgz",
+          "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=",
+          "dev": true
+        }
+      }
+    },
+    "bonjour": {
+      "version": "3.5.0",
+      "resolved": "https://registry.nlark.com/bonjour/download/bonjour-3.5.0.tgz",
+      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+      "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.nlark.com/array-flatten/download/array-flatten-2.1.2.tgz",
+          "integrity": "sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=",
+          "dev": true
+        }
+      }
+    },
+    "boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/boolbase/download/boolbase-1.0.0.tgz",
+      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+      "dev": true
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.nlark.com/brace-expansion/download/brace-expansion-1.1.11.tgz",
+      "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz",
+      "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+      "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.nlark.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "brorand": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/brorand/download/brorand-1.1.0.tgz",
+      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+      "dev": true
+    },
+    "browserify-aes": {
+      "version": "1.2.0",
+      "resolved": "https://registry.nlark.com/browserify-aes/download/browserify-aes-1.2.0.tgz",
+      "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=",
+      "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.nlark.com/browserify-cipher/download/browserify-cipher-1.0.1.tgz",
+      "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=",
+      "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.nlark.com/browserify-des/download/browserify-des-1.0.2.tgz",
+      "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=",
+      "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.nlark.com/browserify-rsa/download/browserify-rsa-4.1.0.tgz",
+      "integrity": "sha1-sv0Gtbda4pf3zi3GUfkY9b4VjI0=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^5.0.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "browserify-sign": {
+      "version": "4.2.1",
+      "resolved": "https://registry.nlark.com/browserify-sign/download/browserify-sign-4.2.1.tgz",
+      "integrity": "sha1-6vSt1G3VS+O7OzbAzxWrvrp5VsM=",
+      "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.nlark.com/readable-stream/download/readable-stream-3.6.0.tgz",
+          "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz",
+          "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=",
+          "dev": true
+        }
+      }
+    },
+    "browserify-zlib": {
+      "version": "0.2.0",
+      "resolved": "https://registry.nlark.com/browserify-zlib/download/browserify-zlib-0.2.0.tgz",
+      "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=",
+      "dev": true,
+      "requires": {
+        "pako": "~1.0.5"
+      }
+    },
+    "browserslist": {
+      "version": "4.16.6",
+      "resolved": "https://registry.nlark.com/browserslist/download/browserslist-4.16.6.tgz?cache=0&sync_timestamp=1619789101558&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.16.6.tgz",
+      "integrity": "sha1-15ASd6WojlVO0wWxg+ybDAj2b6I=",
+      "dev": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30001219",
+        "colorette": "^1.2.2",
+        "electron-to-chromium": "^1.3.723",
+        "escalade": "^3.1.1",
+        "node-releases": "^1.1.71"
+      }
+    },
+    "buffer": {
+      "version": "4.9.2",
+      "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz",
+      "integrity": "sha1-Iw6tNEACmIZEhBqwJEr4xEu+Pvg=",
+      "dev": true,
+      "requires": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "buffer-from": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz",
+      "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=",
+      "dev": true
+    },
+    "buffer-indexof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/buffer-indexof/download/buffer-indexof-1.1.1.tgz",
+      "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=",
+      "dev": true
+    },
+    "buffer-json": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/buffer-json/download/buffer-json-2.0.0.tgz",
+      "integrity": "sha1-9z4TseQvGW/i/WfQAcfXEH7dfCM=",
+      "dev": true
+    },
+    "buffer-xor": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz",
+      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+      "dev": true
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+      "dev": true
+    },
+    "bytes": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz",
+      "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=",
+      "dev": true
+    },
+    "cacache": {
+      "version": "12.0.4",
+      "resolved": "https://registry.nlark.com/cacache/download/cacache-12.0.4.tgz?cache=0&sync_timestamp=1621949655085&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcacache%2Fdownload%2Fcacache-12.0.4.tgz",
+      "integrity": "sha1-ZovL0QWutfHZL+JVcOyVJcj6pAw=",
+      "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"
+      }
+    },
+    "cache-base": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz",
+      "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=",
+      "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.nlark.com/cache-loader/download/cache-loader-4.1.0.tgz",
+      "integrity": "sha1-mUjK41OuwKH8ser9ojAIFuyFOH4=",
+      "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"
+      }
+    },
+    "call-bind": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/call-bind/download/call-bind-1.0.2.tgz",
+      "integrity": "sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      }
+    },
+    "call-me-maybe": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz",
+      "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
+      "dev": true
+    },
+    "caller-callsite": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/caller-callsite/download/caller-callsite-2.0.0.tgz",
+      "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+      "dev": true,
+      "requires": {
+        "callsites": "^2.0.0"
+      }
+    },
+    "caller-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz",
+      "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+      "dev": true,
+      "requires": {
+        "caller-callsite": "^2.0.0"
+      }
+    },
+    "callsites": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz",
+      "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+      "dev": true
+    },
+    "camel-case": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz?cache=0&sync_timestamp=1606867297052&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamel-case%2Fdownload%2Fcamel-case-3.0.0.tgz",
+      "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0",
+        "upper-case": "^1.1.1"
+      }
+    },
+    "camelcase": {
+      "version": "6.2.0",
+      "resolved": "https://registry.nlark.com/camelcase/download/camelcase-6.2.0.tgz",
+      "integrity": "sha1-kkr4gcnVJaydh/QNlk5c6pgqGAk=",
+      "dev": true
+    },
+    "caniuse-api": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz",
+      "integrity": "sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA=",
+      "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.30001238",
+      "resolved": "https://registry.nlark.com/caniuse-lite/download/caniuse-lite-1.0.30001238.tgz?cache=0&sync_timestamp=1623999761565&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001238.tgz",
+      "integrity": "sha1-5qi0VFXF3mAXGHNtAkL+7w7N2hU=",
+      "dev": true
+    },
+    "case-sensitive-paths-webpack-plugin": {
+      "version": "2.4.0",
+      "resolved": "https://registry.nlark.com/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.4.0.tgz",
+      "integrity": "sha1-22QGbGQi7tLgjMFLmGykN5bbxtQ=",
+      "dev": true
+    },
+    "caseless": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "dev": true
+    },
+    "chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1618995367379&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz",
+      "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
+    },
+    "check-types": {
+      "version": "8.0.3",
+      "resolved": "https://registry.nlark.com/check-types/download/check-types-8.0.3.tgz",
+      "integrity": "sha1-M1bMoZyIlUTy16le1JzlCKDs9VI=",
+      "dev": true
+    },
+    "chokidar": {
+      "version": "3.5.2",
+      "resolved": "https://registry.nlark.com/chokidar/download/chokidar-3.5.2.tgz?cache=0&sync_timestamp=1623763535523&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-3.5.2.tgz",
+      "integrity": "sha1-26OXb8rbAW9m/TZQIdkWANAcHnU=",
+      "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.npm.taobao.org/braces/download/braces-3.0.2.tgz",
+          "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=",
+          "requires": {
+            "fill-range": "^7.0.1"
+          }
+        },
+        "fill-range": {
+          "version": "7.0.1",
+          "resolved": "https://registry.nlark.com/fill-range/download/fill-range-7.0.1.tgz",
+          "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=",
+          "requires": {
+            "to-regex-range": "^5.0.1"
+          }
+        },
+        "is-number": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz",
+          "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss="
+        },
+        "to-regex-range": {
+          "version": "5.0.1",
+          "resolved": "https://registry.nlark.com/to-regex-range/download/to-regex-range-5.0.1.tgz",
+          "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=",
+          "requires": {
+            "is-number": "^7.0.0"
+          }
+        }
+      }
+    },
+    "chownr": {
+      "version": "1.1.4",
+      "resolved": "https://registry.nlark.com/chownr/download/chownr-1.1.4.tgz",
+      "integrity": "sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs=",
+      "dev": true
+    },
+    "chrome-trace-event": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.3.tgz",
+      "integrity": "sha1-EBXs7UdB4V0GZkqVfbv1DQQeJqw=",
+      "dev": true
+    },
+    "cipher-base": {
+      "version": "1.0.4",
+      "resolved": "https://registry.nlark.com/cipher-base/download/cipher-base-1.0.4.tgz",
+      "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "class-utils": {
+      "version": "0.3.6",
+      "resolved": "https://registry.nlark.com/class-utils/download/class-utils-0.3.6.tgz",
+      "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
+      "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.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "clean-css": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.3.tgz?cache=0&sync_timestamp=1616153455026&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclean-css%2Fdownload%2Fclean-css-4.2.3.tgz",
+      "integrity": "sha1-UHtd59l7SO5T2ErbAWD/YhY4D3g=",
+      "dev": true,
+      "requires": {
+        "source-map": "~0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "cli-cursor": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz",
+      "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+      "dev": true,
+      "requires": {
+        "restore-cursor": "^2.0.0"
+      }
+    },
+    "cli-highlight": {
+      "version": "2.1.11",
+      "resolved": "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.11.tgz?cache=0&sync_timestamp=1616955054342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-highlight%2Fdownload%2Fcli-highlight-2.1.11.tgz",
+      "integrity": "sha1-SXNvpFLwqvT65YDjCssmgo0twb8=",
+      "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.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz",
+          "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.1",
+          "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995367379&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz",
+          "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+          "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.nlark.com/color-name/download/color-name-1.1.4.tgz",
+          "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
+          "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1622293670728&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
+          "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "cli-spinners": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.6.0.tgz?cache=0&sync_timestamp=1616091572272&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-spinners%2Fdownload%2Fcli-spinners-2.6.0.tgz",
+      "integrity": "sha1-NsfcmPtqmna9YjjsP3fiQlYn6Tk=",
+      "dev": true
+    },
+    "clipboardy": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.3.0.tgz",
+      "integrity": "sha1-PCkDZQxo5GqRs4iYW8J3QofbopA=",
+      "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.nlark.com/is-wsl/download/is-wsl-2.2.0.tgz",
+          "integrity": "sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=",
+          "dev": true,
+          "requires": {
+            "is-docker": "^2.0.0"
+          }
+        }
+      }
+    },
+    "cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.nlark.com/cliui/download/cliui-6.0.0.tgz",
+      "integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=",
+      "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.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz",
+          "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+          "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.nlark.com/color-name/download/color-name-1.1.4.tgz",
+          "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "4.2.2",
+          "resolved": "https://registry.nlark.com/string-width/download/string-width-4.2.2.tgz",
+          "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "wrap-ansi": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz",
+          "integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=",
+          "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.nlark.com/clone/download/clone-1.0.4.tgz",
+      "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+      "dev": true
+    },
+    "clone-deep": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz",
+      "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+      "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.npm.taobao.org/coa/download/coa-2.0.2.tgz",
+      "integrity": "sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM=",
+      "dev": true,
+      "requires": {
+        "@types/q": "^1.5.1",
+        "chalk": "^2.4.1",
+        "q": "^1.1.2"
+      }
+    },
+    "collection-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/collection-visit/download/collection-visit-1.0.0.tgz",
+      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "dev": true,
+      "requires": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      }
+    },
+    "color": {
+      "version": "3.1.3",
+      "resolved": "https://registry.nlark.com/color/download/color-3.1.3.tgz?cache=0&sync_timestamp=1618846945133&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcolor%2Fdownload%2Fcolor-3.1.3.tgz",
+      "integrity": "sha1-ymf7TnuX1hHc3jns7tQiBn2RWW4=",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.1",
+        "color-string": "^1.5.4"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz",
+      "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=",
+      "dev": true,
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.nlark.com/color-name/download/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+      "dev": true
+    },
+    "color-string": {
+      "version": "1.5.5",
+      "resolved": "https://registry.nlark.com/color-string/download/color-string-1.5.5.tgz",
+      "integrity": "sha1-ZUdKjw50OWJfPSemoZ2J/EUiMBQ=",
+      "dev": true,
+      "requires": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "colorette": {
+      "version": "1.2.2",
+      "resolved": "https://registry.nlark.com/colorette/download/colorette-1.2.2.tgz",
+      "integrity": "sha1-y8x51emcrqLb8Q6zom/Ys+as+pQ=",
+      "dev": true
+    },
+    "combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.nlark.com/combined-stream/download/combined-stream-1.0.8.tgz",
+      "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=",
+      "dev": true,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "commander": {
+      "version": "2.20.3",
+      "resolved": "https://registry.nlark.com/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1622954231534&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz",
+      "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=",
+      "dev": true
+    },
+    "commondir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz",
+      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+      "dev": true
+    },
+    "component-emitter": {
+      "version": "1.3.0",
+      "resolved": "https://registry.nlark.com/component-emitter/download/component-emitter-1.3.0.tgz",
+      "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=",
+      "dev": true
+    },
+    "compressible": {
+      "version": "2.0.18",
+      "resolved": "https://registry.nlark.com/compressible/download/compressible-2.0.18.tgz",
+      "integrity": "sha1-r1PMprBw1MPAdQ+9dyhqbXzEb7o=",
+      "dev": true,
+      "requires": {
+        "mime-db": ">= 1.43.0 < 2"
+      }
+    },
+    "compression": {
+      "version": "1.7.4",
+      "resolved": "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcompression%2Fdownload%2Fcompression-1.7.4.tgz",
+      "integrity": "sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=",
+      "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.npm.taobao.org/bytes/download/bytes-3.0.0.tgz",
+          "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.nlark.com/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.nlark.com/concat-map/download/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.nlark.com/concat-stream/download/concat-stream-1.6.2.tgz",
+      "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=",
+      "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.nlark.com/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz?cache=0&sync_timestamp=1618847040596&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fconnect-history-api-fallback%2Fdownload%2Fconnect-history-api-fallback-1.6.0.tgz",
+      "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=",
+      "dev": true
+    },
+    "console-browserify": {
+      "version": "1.2.0",
+      "resolved": "https://registry.nlark.com/console-browserify/download/console-browserify-1.2.0.tgz",
+      "integrity": "sha1-ZwY871fOts9Jk6KrOlWECujEkzY=",
+      "dev": true
+    },
+    "consolidate": {
+      "version": "0.15.1",
+      "resolved": "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz",
+      "integrity": "sha1-IasEMjXHGgfUXZqtmFk7DbpWurc=",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.1.1"
+      }
+    },
+    "constants-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/constants-browserify/download/constants-browserify-1.0.0.tgz",
+      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+      "dev": true
+    },
+    "content-disposition": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz",
+      "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.nlark.com/content-type/download/content-type-1.0.4.tgz",
+      "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=",
+      "dev": true
+    },
+    "convert-source-map": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.7.0.tgz",
+      "integrity": "sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "cookie": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz",
+      "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=",
+      "dev": true
+    },
+    "cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+      "dev": true
+    },
+    "copy-concurrently": {
+      "version": "1.0.5",
+      "resolved": "https://registry.nlark.com/copy-concurrently/download/copy-concurrently-1.0.5.tgz",
+      "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=",
+      "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"
+      }
+    },
+    "copy-descriptor": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz",
+      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+      "dev": true
+    },
+    "copy-webpack-plugin": {
+      "version": "5.1.2",
+      "resolved": "https://registry.nlark.com/copy-webpack-plugin/download/copy-webpack-plugin-5.1.2.tgz?cache=0&sync_timestamp=1621607252385&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcopy-webpack-plugin%2Fdownload%2Fcopy-webpack-plugin-5.1.2.tgz",
+      "integrity": "sha1-ioieHcr6bJHGzUvhrRWPHTgjuuI=",
+      "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": {
+        "find-cache-dir": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz",
+          "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=",
+          "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.nlark.com/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1618846778775&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz",
+          "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz?cache=0&sync_timestamp=1620073321855&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob-parent%2Fdownload%2Fglob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.nlark.com/is-glob/download/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "dev": true,
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
+        "globby": {
+          "version": "7.1.1",
+          "resolved": "https://registry.nlark.com/globby/download/globby-7.1.1.tgz",
+          "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+          "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.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+              "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+              "dev": true
+            }
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+          "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "make-dir": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz",
+          "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
+          "dev": true,
+          "requires": {
+            "pify": "^4.0.1",
+            "semver": "^5.6.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.nlark.com/p-locate/download/p-locate-3.0.0.tgz",
+          "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.nlark.com/path-exists/download/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "dev": true
+        },
+        "pkg-dir": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz",
+          "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
+          "dev": true,
+          "requires": {
+            "find-up": "^3.0.0"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "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.nlark.com/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1618847119601&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+          "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+          "dev": true
+        }
+      }
+    },
+    "core-js": {
+      "version": "3.14.0",
+      "resolved": "https://registry.nlark.com/core-js/download/core-js-3.14.0.tgz",
+      "integrity": "sha1-YjIrmMccwgGLAnlxppQZ4kJcKmw="
+    },
+    "core-js-compat": {
+      "version": "3.14.0",
+      "resolved": "https://registry.nlark.com/core-js-compat/download/core-js-compat-3.14.0.tgz",
+      "integrity": "sha1-tXTavykYRoHVsWNXvTPRBN89KaU=",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.16.6",
+        "semver": "7.0.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "7.0.0",
+          "resolved": "https://registry.nlark.com/semver/download/semver-7.0.0.tgz?cache=0&sync_timestamp=1618847119601&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-7.0.0.tgz",
+          "integrity": "sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=",
+          "dev": true
+        }
+      }
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+      "dev": true
+    },
+    "cosmiconfig": {
+      "version": "5.2.1",
+      "resolved": "https://registry.nlark.com/cosmiconfig/download/cosmiconfig-5.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcosmiconfig%2Fdownload%2Fcosmiconfig-5.2.1.tgz",
+      "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=",
+      "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.nlark.com/parse-json/download/parse-json-4.0.0.tgz",
+          "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+          "dev": true,
+          "requires": {
+            "error-ex": "^1.3.1",
+            "json-parse-better-errors": "^1.0.1"
+          }
+        }
+      }
+    },
+    "create-ecdh": {
+      "version": "4.0.4",
+      "resolved": "https://registry.nlark.com/create-ecdh/download/create-ecdh-4.0.4.tgz",
+      "integrity": "sha1-1uf0v/pmc2CFoHYv06YyaE2rzE4=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.5.3"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+          "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+          "dev": true
+        }
+      }
+    },
+    "create-hash": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz",
+      "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=",
+      "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.nlark.com/create-hmac/download/create-hmac-1.1.7.tgz",
+      "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=",
+      "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.nlark.com/cross-spawn/download/cross-spawn-6.0.5.tgz",
+      "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=",
+      "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.nlark.com/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1618847119601&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+          "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+          "dev": true
+        }
+      }
+    },
+    "crypto-browserify": {
+      "version": "3.12.0",
+      "resolved": "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz",
+      "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=",
+      "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.nlark.com/css-color-names/download/css-color-names-0.0.4.tgz",
+      "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+      "dev": true
+    },
+    "css-declaration-sorter": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-declaration-sorter%2Fdownload%2Fcss-declaration-sorter-4.0.1.tgz",
+      "integrity": "sha1-wZiUD2OnbX42wecQGLABchBUyyI=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.1",
+        "timsort": "^0.3.0"
+      }
+    },
+    "css-loader": {
+      "version": "3.6.0",
+      "resolved": "https://registry.nlark.com/css-loader/download/css-loader-3.6.0.tgz?cache=0&sync_timestamp=1621865043272&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-loader%2Fdownload%2Fcss-loader-3.6.0.tgz",
+      "integrity": "sha1-Lkssfm4tJ/jI8o9hv/zS5ske9kU=",
+      "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.nlark.com/camelcase/download/camelcase-5.3.1.tgz",
+          "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+          "dev": true
+        }
+      }
+    },
+    "css-select": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/css-select/download/css-select-2.1.0.tgz?cache=0&sync_timestamp=1622994276976&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-select%2Fdownload%2Fcss-select-2.1.0.tgz",
+      "integrity": "sha1-ajRlM1ZjWTSoG6ymjQJVQyEF2+8=",
+      "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.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz",
+      "integrity": "sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc=",
+      "dev": true
+    },
+    "css-tree": {
+      "version": "1.0.0-alpha.37",
+      "resolved": "https://registry.nlark.com/css-tree/download/css-tree-1.0.0-alpha.37.tgz",
+      "integrity": "sha1-mL69YsTB2flg7DQM+fdSLjBwmiI=",
+      "dev": true,
+      "requires": {
+        "mdn-data": "2.0.4",
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "css-what": {
+      "version": "3.4.2",
+      "resolved": "https://registry.nlark.com/css-what/download/css-what-3.4.2.tgz?cache=0&sync_timestamp=1622227051808&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-what%2Fdownload%2Fcss-what-3.4.2.tgz",
+      "integrity": "sha1-6nAm/LAXd+295SEk4h8yfnrpUOQ=",
+      "dev": true
+    },
+    "cssesc": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz",
+      "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=",
+      "dev": true
+    },
+    "cssnano": {
+      "version": "4.1.11",
+      "resolved": "https://registry.nlark.com/cssnano/download/cssnano-4.1.11.tgz?cache=0&sync_timestamp=1623330463671&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcssnano%2Fdownload%2Fcssnano-4.1.11.tgz",
+      "integrity": "sha1-x7X1uB2iacsf2YLLlgwSAJEMmpk=",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "cssnano-preset-default": "^4.0.8",
+        "is-resolvable": "^1.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "cssnano-preset-default": {
+      "version": "4.0.8",
+      "resolved": "https://registry.nlark.com/cssnano-preset-default/download/cssnano-preset-default-4.0.8.tgz?cache=0&sync_timestamp=1623330501371&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcssnano-preset-default%2Fdownload%2Fcssnano-preset-default-4.0.8.tgz",
+      "integrity": "sha1-kgYisfwelaNOiDggPxOXpQTy0/8=",
+      "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"
+      }
+    },
+    "cssnano-util-get-arguments": {
+      "version": "4.0.0",
+      "resolved": "https://registry.nlark.com/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz",
+      "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=",
+      "dev": true
+    },
+    "cssnano-util-get-match": {
+      "version": "4.0.0",
+      "resolved": "https://registry.nlark.com/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz",
+      "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=",
+      "dev": true
+    },
+    "cssnano-util-raw-cache": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz",
+      "integrity": "sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "cssnano-util-same-parent": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz",
+      "integrity": "sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M=",
+      "dev": true
+    },
+    "csso": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npm.taobao.org/csso/download/csso-4.2.0.tgz?cache=0&sync_timestamp=1606408777341&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcsso%2Fdownload%2Fcsso-4.2.0.tgz",
+      "integrity": "sha1-6jpWE0bo3J9UbW/r7dUBh884lSk=",
+      "dev": true,
+      "requires": {
+        "css-tree": "^1.1.2"
+      },
+      "dependencies": {
+        "css-tree": {
+          "version": "1.1.3",
+          "resolved": "https://registry.nlark.com/css-tree/download/css-tree-1.1.3.tgz",
+          "integrity": "sha1-60hw+2/XcHMn7JXC/yqwm16NuR0=",
+          "dev": true,
+          "requires": {
+            "mdn-data": "2.0.14",
+            "source-map": "^0.6.1"
+          }
+        },
+        "mdn-data": {
+          "version": "2.0.14",
+          "resolved": "https://registry.nlark.com/mdn-data/download/mdn-data-2.0.14.tgz?cache=0&sync_timestamp=1622679294056&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.14.tgz",
+          "integrity": "sha1-cRP8QoGRfWPOKbQ0RvcB5owlulA=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "cyclist": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/cyclist/download/cyclist-1.0.1.tgz",
+      "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
+      "dev": true
+    },
+    "dashdash": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz?cache=0&sync_timestamp=1601073454623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdashdash%2Fdownload%2Fdashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "de-indent": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/de-indent/download/de-indent-1.0.2.tgz",
+      "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
+      "dev": true
+    },
+    "debug": {
+      "version": "4.3.1",
+      "resolved": "https://registry.nlark.com/debug/download/debug-4.3.1.tgz",
+      "integrity": "sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=",
+      "dev": true,
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.nlark.com/decamelize/download/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+      "dev": true
+    },
+    "decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "https://registry.nlark.com/decode-uri-component/download/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "dev": true
+    },
+    "deep-equal": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz?cache=0&sync_timestamp=1606859714626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.1.1.tgz",
+      "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=",
+      "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"
+      }
+    },
+    "deepmerge": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz",
+      "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=",
+      "dev": true
+    },
+    "default-gateway": {
+      "version": "5.0.5",
+      "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-5.0.5.tgz?cache=0&sync_timestamp=1610365756089&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-5.0.5.tgz",
+      "integrity": "sha1-T9a9XShV05s0zFpZUFSG6ar8mxA=",
+      "dev": true,
+      "requires": {
+        "execa": "^3.3.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "7.0.3",
+          "resolved": "https://registry.nlark.com/cross-spawn/download/cross-spawn-7.0.3.tgz",
+          "integrity": "sha1-9zqFudXUHQRVUcF34ogtSshXKKY=",
+          "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.nlark.com/execa/download/execa-3.4.0.tgz?cache=0&sync_timestamp=1622825396605&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fexeca%2Fdownload%2Fexeca-3.4.0.tgz",
+          "integrity": "sha1-wI7UVQ72XYWPrCaf/IVyRG8364k=",
+          "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.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz",
+          "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=",
+          "dev": true,
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "is-stream": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/is-stream/download/is-stream-2.0.0.tgz",
+          "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM=",
+          "dev": true
+        },
+        "mimic-fn": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz",
+          "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=",
+          "dev": true
+        },
+        "npm-run-path": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-4.0.1.tgz",
+          "integrity": "sha1-t+zR5e1T2o43pV4cImnguX7XSOo=",
+          "dev": true,
+          "requires": {
+            "path-key": "^3.0.0"
+          }
+        },
+        "onetime": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz",
+          "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=",
+          "dev": true,
+          "requires": {
+            "mimic-fn": "^2.1.0"
+          }
+        },
+        "p-finally": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz",
+          "integrity": "sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE=",
+          "dev": true
+        },
+        "path-key": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz?cache=0&sync_timestamp=1617971695678&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-3.1.1.tgz",
+          "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=",
+          "dev": true
+        },
+        "shebang-command": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz",
+          "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=",
+          "dev": true,
+          "requires": {
+            "shebang-regex": "^3.0.0"
+          }
+        },
+        "shebang-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz",
+          "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=",
+          "dev": true
+        },
+        "which": {
+          "version": "2.0.2",
+          "resolved": "https://registry.nlark.com/which/download/which-2.0.2.tgz",
+          "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=",
+          "dev": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        }
+      }
+    },
+    "defaults": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz",
+      "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+      "dev": true,
+      "requires": {
+        "clone": "^1.0.2"
+      }
+    },
+    "define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.nlark.com/define-properties/download/define-properties-1.1.3.tgz?cache=0&sync_timestamp=1618847174317&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdefine-properties%2Fdownload%2Fdefine-properties-1.1.3.tgz",
+      "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=",
+      "dev": true,
+      "requires": {
+        "object-keys": "^1.0.12"
+      }
+    },
+    "define-property": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz",
+      "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
+      "dev": true,
+      "requires": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "dependencies": {
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.nlark.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.nlark.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "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.npm.taobao.org/del/download/del-4.1.1.tgz?cache=0&sync_timestamp=1601076882347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdel%2Fdownload%2Fdel-4.1.1.tgz",
+      "integrity": "sha1-no8RciLqRKMf86FWwEm5kFKp8LQ=",
+      "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.nlark.com/globby/download/globby-6.1.0.tgz",
+          "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+          "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.npm.taobao.org/pify/download/pify-2.3.0.tgz",
+              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+              "dev": true
+            }
+          }
+        }
+      }
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "dev": true
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.nlark.com/depd/download/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true
+    },
+    "des.js": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/des.js/download/des.js-1.0.1.tgz",
+      "integrity": "sha1-U4IULhvcU/hdhtU+X0qn3rkeCEM=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.nlark.com/destroy/download/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "dev": true
+    },
+    "detect-node": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/detect-node/download/detect-node-2.1.0.tgz?cache=0&sync_timestamp=1621146954463&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdetect-node%2Fdownload%2Fdetect-node-2.1.0.tgz",
+      "integrity": "sha1-yccHdaScPQO8LAbZpzvlUPl4+LE=",
+      "dev": true
+    },
+    "diffie-hellman": {
+      "version": "5.0.3",
+      "resolved": "https://registry.nlark.com/diffie-hellman/download/diffie-hellman-5.0.3.tgz",
+      "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=",
+      "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.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+          "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+          "dev": true
+        }
+      }
+    },
+    "dir-glob": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz",
+      "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=",
+      "dev": true,
+      "requires": {
+        "path-type": "^3.0.0"
+      }
+    },
+    "dns-equal": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/dns-equal/download/dns-equal-1.0.0.tgz",
+      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+      "dev": true
+    },
+    "dns-packet": {
+      "version": "1.3.4",
+      "resolved": "https://registry.nlark.com/dns-packet/download/dns-packet-1.3.4.tgz",
+      "integrity": "sha1-40VQZYJKJQe6iGxVqJljuxB97G8=",
+      "dev": true,
+      "requires": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "dns-txt": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz",
+      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+      "dev": true,
+      "requires": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "dom-converter": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz",
+      "integrity": "sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g=",
+      "dev": true,
+      "requires": {
+        "utila": "~0.4"
+      }
+    },
+    "dom-serializer": {
+      "version": "0.2.2",
+      "resolved": "https://registry.nlark.com/dom-serializer/download/dom-serializer-0.2.2.tgz?cache=0&sync_timestamp=1621256830355&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdom-serializer%2Fdownload%2Fdom-serializer-0.2.2.tgz",
+      "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^2.0.1",
+        "entities": "^2.0.0"
+      },
+      "dependencies": {
+        "domelementtype": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.2.0.tgz?cache=0&sync_timestamp=1617298554829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.2.0.tgz",
+          "integrity": "sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=",
+          "dev": true
+        }
+      }
+    },
+    "domain-browser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.nlark.com/domain-browser/download/domain-browser-1.2.0.tgz",
+      "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=",
+      "dev": true
+    },
+    "domelementtype": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz?cache=0&sync_timestamp=1617298554829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-1.3.1.tgz",
+      "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=",
+      "dev": true
+    },
+    "domhandler": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npm.taobao.org/domhandler/download/domhandler-4.2.0.tgz?cache=0&sync_timestamp=1618563954924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomhandler%2Fdownload%2Fdomhandler-4.2.0.tgz",
+      "integrity": "sha1-+XaKXwNL5gqJonwuTQ9066DYsFk=",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^2.2.0"
+      },
+      "dependencies": {
+        "domelementtype": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.2.0.tgz?cache=0&sync_timestamp=1617298554829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.2.0.tgz",
+          "integrity": "sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=",
+          "dev": true
+        }
+      }
+    },
+    "domutils": {
+      "version": "1.7.0",
+      "resolved": "https://registry.nlark.com/domutils/download/domutils-1.7.0.tgz",
+      "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=",
+      "dev": true,
+      "requires": {
+        "dom-serializer": "0",
+        "domelementtype": "1"
+      }
+    },
+    "dot-prop": {
+      "version": "5.3.0",
+      "resolved": "https://registry.nlark.com/dot-prop/download/dot-prop-5.3.0.tgz",
+      "integrity": "sha1-kMzOcIzZzYLMTcjD3dmr3VWyDog=",
+      "dev": true,
+      "requires": {
+        "is-obj": "^2.0.0"
+      }
+    },
+    "dotenv": {
+      "version": "8.6.0",
+      "resolved": "https://registry.nlark.com/dotenv/download/dotenv-8.6.0.tgz?cache=0&sync_timestamp=1621627076012&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdotenv%2Fdownload%2Fdotenv-8.6.0.tgz",
+      "integrity": "sha1-Bhr2ZNGff02PxuT/m1hM4jety4s=",
+      "dev": true
+    },
+    "dotenv-expand": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz?cache=0&sync_timestamp=1603163578680&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdotenv-expand%2Fdownload%2Fdotenv-expand-5.1.0.tgz",
+      "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=",
+      "dev": true
+    },
+    "duplexer": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.2.tgz",
+      "integrity": "sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY=",
+      "dev": true
+    },
+    "duplexify": {
+      "version": "3.7.1",
+      "resolved": "https://registry.nlark.com/duplexify/download/duplexify-3.7.1.tgz",
+      "integrity": "sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=",
+      "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.nlark.com/easy-stack/download/easy-stack-1.0.1.tgz",
+      "integrity": "sha1-iv5CZGJpiMq7EfPHBMzQyDVBEGY=",
+      "dev": true
+    },
+    "ecc-jsbn": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz",
+      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+      "dev": true,
+      "requires": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "echarts": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.1.2.tgz",
+      "integrity": "sha512-okUhO4sw22vwZp+rTPNjd/bvTdpug4K4sHNHyrV8NdAncIX9/AarlolFqtJCAYKGFYhUBNjIWu1EznFrSWTFxg==",
+      "requires": {
+        "tslib": "2.0.3",
+        "zrender": "5.1.1"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "ejs": {
+      "version": "2.7.4",
+      "resolved": "https://registry.nlark.com/ejs/download/ejs-2.7.4.tgz",
+      "integrity": "sha1-SGYSh1c9zFPjZsehrlLDoSDuybo=",
+      "dev": true
+    },
+    "electron-to-chromium": {
+      "version": "1.3.752",
+      "resolved": "https://registry.nlark.com/electron-to-chromium/download/electron-to-chromium-1.3.752.tgz?cache=0&sync_timestamp=1623290610685&other_urls=https%3A%2F%2Fregistry.nlark.com%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.752.tgz",
+      "integrity": "sha1-ByhYfxublw7J/62TJJZCmu91DQk=",
+      "dev": true
+    },
+    "elliptic": {
+      "version": "6.5.4",
+      "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.4.tgz",
+      "integrity": "sha1-2jfOvTHnmhNn6UG1ku0fvr1Yq7s=",
+      "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.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+          "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+          "dev": true
+        }
+      }
+    },
+    "emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.nlark.com/emoji-regex/download/emoji-regex-8.0.0.tgz",
+      "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=",
+      "dev": true
+    },
+    "emojis-list": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz",
+      "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang="
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true
+    },
+    "end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.nlark.com/end-of-stream/download/end-of-stream-1.4.4.tgz",
+      "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=",
+      "dev": true,
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "enhanced-resolve": {
+      "version": "4.5.0",
+      "resolved": "https://registry.nlark.com/enhanced-resolve/download/enhanced-resolve-4.5.0.tgz?cache=0&sync_timestamp=1620663202047&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.5.0.tgz",
+      "integrity": "sha1-Lzz9hNvjtIfxjy2y7x4GSlccpew=",
+      "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.nlark.com/memory-fs/download/memory-fs-0.5.0.tgz",
+          "integrity": "sha1-MkwBKIuIZSlm0WHbd4OHIIRajjw=",
+          "dev": true,
+          "requires": {
+            "errno": "^0.1.3",
+            "readable-stream": "^2.0.1"
+          }
+        }
+      }
+    },
+    "entities": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.2.0.tgz",
+      "integrity": "sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=",
+      "dev": true
+    },
+    "errno": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz",
+      "integrity": "sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=",
+      "dev": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.nlark.com/error-ex/download/error-ex-1.3.2.tgz",
+      "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "error-stack-parser": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.6.tgz",
+      "integrity": "sha1-WpmnB716TFinl5AtSNgoA+3mqtg=",
+      "dev": true,
+      "requires": {
+        "stackframe": "^1.1.1"
+      }
+    },
+    "es-abstract": {
+      "version": "1.18.3",
+      "resolved": "https://registry.nlark.com/es-abstract/download/es-abstract-1.18.3.tgz?cache=0&sync_timestamp=1622157901871&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fes-abstract%2Fdownload%2Fes-abstract-1.18.3.tgz",
+      "integrity": "sha1-JcTDOAonqiA8RLK2hbupTaMbY+A=",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "es-to-primitive": "^1.2.1",
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.2",
+        "is-callable": "^1.2.3",
+        "is-negative-zero": "^2.0.1",
+        "is-regex": "^1.1.3",
+        "is-string": "^1.0.6",
+        "object-inspect": "^1.10.3",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.2",
+        "string.prototype.trimend": "^1.0.4",
+        "string.prototype.trimstart": "^1.0.4",
+        "unbox-primitive": "^1.0.1"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz",
+      "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=",
+      "dev": true,
+      "requires": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      }
+    },
+    "escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.nlark.com/escalade/download/escalade-3.1.1.tgz",
+      "integrity": "sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA=",
+      "dev": true
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.nlark.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true
+    },
+    "eslint-scope": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz",
+      "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=",
+      "dev": true,
+      "requires": {
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/esprima/download/esprima-4.0.1.tgz",
+      "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=",
+      "dev": true
+    },
+    "esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.nlark.com/esrecurse/download/esrecurse-4.3.0.tgz",
+      "integrity": "sha1-eteWTWeauyi+5yzsY3WLHF0smSE=",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz",
+          "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=",
+          "dev": true
+        }
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz",
+      "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=",
+      "dev": true
+    },
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.nlark.com/esutils/download/esutils-2.0.3.tgz",
+      "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=",
+      "dev": true
+    },
+    "etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "dev": true
+    },
+    "event-pubsub": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz?cache=0&sync_timestamp=1606361507592&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fevent-pubsub%2Fdownload%2Fevent-pubsub-4.3.0.tgz",
+      "integrity": "sha1-9o2Ba8KfHsAsU53FjI3UDOcss24=",
+      "dev": true
+    },
+    "eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-4.0.7.tgz",
+      "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=",
+      "dev": true
+    },
+    "events": {
+      "version": "3.3.0",
+      "resolved": "https://registry.nlark.com/events/download/events-3.3.0.tgz",
+      "integrity": "sha1-Mala0Kkk4tLEGagTrrLE6HjqdAA=",
+      "dev": true
+    },
+    "eventsource": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/eventsource/download/eventsource-1.1.0.tgz?cache=0&sync_timestamp=1616041716084&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventsource%2Fdownload%2Feventsource-1.1.0.tgz",
+      "integrity": "sha1-AOjKfJIQnpSw3fMtrGd9hBAoz68=",
+      "dev": true,
+      "requires": {
+        "original": "^1.0.0"
+      }
+    },
+    "evp_bytestokey": {
+      "version": "1.0.3",
+      "resolved": "https://registry.nlark.com/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz",
+      "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=",
+      "dev": true,
+      "requires": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "execa": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1622825396605&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz",
+      "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=",
+      "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"
+      }
+    },
+    "expand-brackets": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+      "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.nlark.com/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.nlark.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.nlark.com/express/download/express-4.17.1.tgz?cache=0&sync_timestamp=1618847120573&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz",
+      "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.nlark.com/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "qs": {
+          "version": "6.7.0",
+          "resolved": "https://registry.nlark.com/qs/download/qs-6.7.0.tgz",
+          "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=",
+          "dev": true
+        }
+      }
+    },
+    "extend": {
+      "version": "3.0.2",
+      "resolved": "https://registry.nlark.com/extend/download/extend-3.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fextend%2Fdownload%2Fextend-3.0.2.tgz",
+      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=",
+      "dev": true
+    },
+    "extend-shallow": {
+      "version": "3.0.2",
+      "resolved": "https://registry.nlark.com/extend-shallow/download/extend-shallow-3.0.2.tgz",
+      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "dev": true,
+      "requires": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "extglob": {
+      "version": "2.0.4",
+      "resolved": "https://registry.nlark.com/extglob/download/extglob-2.0.4.tgz",
+      "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+      "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.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.nlark.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.nlark.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.nlark.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "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.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "dev": true
+    },
+    "fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU="
+    },
+    "fast-glob": {
+      "version": "2.2.7",
+      "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz",
+      "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=",
+      "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.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz?cache=0&sync_timestamp=1620073321855&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob-parent%2Fdownload%2Fglob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.nlark.com/is-glob/download/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "dev": true,
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        }
+      }
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM="
+    },
+    "faye-websocket": {
+      "version": "0.11.4",
+      "resolved": "https://registry.nlark.com/faye-websocket/download/faye-websocket-0.11.4.tgz",
+      "integrity": "sha1-fw2Sdc/dhqHJY9yLZfzEUe3Lsdo=",
+      "dev": true,
+      "requires": {
+        "websocket-driver": ">=0.5.1"
+      }
+    },
+    "figgy-pudding": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.2.tgz",
+      "integrity": "sha1-tO7oFIq7Adzx0aw0Nn1Z4S+mHW4=",
+      "dev": true
+    },
+    "file-loader": {
+      "version": "4.3.0",
+      "resolved": "https://registry.nlark.com/file-loader/download/file-loader-4.3.0.tgz",
+      "integrity": "sha1-eA8ED3KbPRgBnyBgX3I+hEuKWK8=",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.2.3",
+        "schema-utils": "^2.5.0"
+      }
+    },
+    "file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=",
+      "dev": true,
+      "optional": true
+    },
+    "filesize": {
+      "version": "3.6.1",
+      "resolved": "https://registry.nlark.com/filesize/download/filesize-3.6.1.tgz",
+      "integrity": "sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc=",
+      "dev": true
+    },
+    "fill-range": {
+      "version": "4.0.0",
+      "resolved": "https://registry.nlark.com/fill-range/download/fill-range-4.0.0.tgz",
+      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+      "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.nlark.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz",
+      "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.nlark.com/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "find-cache-dir": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz",
+      "integrity": "sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=",
+      "dev": true,
+      "requires": {
+        "commondir": "^1.0.1",
+        "make-dir": "^3.0.2",
+        "pkg-dir": "^4.1.0"
+      }
+    },
+    "find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.nlark.com/find-up/download/find-up-4.1.0.tgz?cache=0&sync_timestamp=1618846778775&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffind-up%2Fdownload%2Ffind-up-4.1.0.tgz",
+      "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=",
+      "dev": true,
+      "requires": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      }
+    },
+    "flush-write-stream": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz",
+      "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.3.6"
+      }
+    },
+    "follow-redirects": {
+      "version": "1.14.1",
+      "resolved": "https://registry.nlark.com/follow-redirects/download/follow-redirects-1.14.1.tgz?cache=0&sync_timestamp=1620555300559&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.14.1.tgz",
+      "integrity": "sha1-2RFN7Qoc/dM04WTmZirQK/2R/0M="
+    },
+    "font-awesome": {
+      "version": "4.7.0",
+      "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
+      "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM="
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "dev": true
+    },
+    "forever-agent": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "dev": true
+    },
+    "form-data": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz",
+      "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=",
+      "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.nlark.com/forwarded/download/forwarded-0.2.0.tgz?cache=0&sync_timestamp=1622503408398&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fforwarded%2Fdownload%2Fforwarded-0.2.0.tgz",
+      "integrity": "sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=",
+      "dev": true
+    },
+    "fragment-cache": {
+      "version": "0.2.1",
+      "resolved": "https://registry.nlark.com/fragment-cache/download/fragment-cache-0.2.1.tgz",
+      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "dev": true,
+      "requires": {
+        "map-cache": "^0.2.2"
+      }
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true
+    },
+    "from2": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz",
+      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "fs-extra": {
+      "version": "7.0.1",
+      "resolved": "https://registry.nlark.com/fs-extra/download/fs-extra-7.0.1.tgz",
+      "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
+      }
+    },
+    "fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz",
+      "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+      "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.nlark.com/fs.realpath/download/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.3.2.tgz",
+      "integrity": "sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=",
+      "optional": true
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz",
+      "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0="
+    },
+    "gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA=",
+      "dev": true
+    },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz",
+      "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=",
+      "dev": true
+    },
+    "get-intrinsic": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/get-intrinsic/download/get-intrinsic-1.1.1.tgz",
+      "integrity": "sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y=",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1"
+      }
+    },
+    "get-stream": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz",
+      "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=",
+      "dev": true,
+      "requires": {
+        "pump": "^3.0.0"
+      }
+    },
+    "get-value": {
+      "version": "2.0.6",
+      "resolved": "https://registry.nlark.com/get-value/download/get-value-2.0.6.tgz",
+      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+      "dev": true
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "resolved": "https://registry.nlark.com/getpass/download/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "glob": {
+      "version": "7.1.7",
+      "resolved": "https://registry.nlark.com/glob/download/glob-7.1.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob%2Fdownload%2Fglob-7.1.7.tgz",
+      "integrity": "sha1-Oxk+kjPwHULQs/eClLvutBj5SpA=",
+      "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"
+      }
+    },
+    "glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-5.1.2.tgz?cache=0&sync_timestamp=1620073321855&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob-parent%2Fdownload%2Fglob-parent-5.1.2.tgz",
+      "integrity": "sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=",
+      "requires": {
+        "is-glob": "^4.0.1"
+      }
+    },
+    "glob-to-regexp": {
+      "version": "0.3.0",
+      "resolved": "https://registry.nlark.com/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz",
+      "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
+      "dev": true
+    },
+    "globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.nlark.com/globals/download/globals-11.12.0.tgz",
+      "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=",
+      "dev": true
+    },
+    "globby": {
+      "version": "9.2.0",
+      "resolved": "https://registry.nlark.com/globby/download/globby-9.2.0.tgz",
+      "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=",
+      "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"
+      },
+      "dependencies": {
+        "ignore": {
+          "version": "4.0.6",
+          "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz",
+          "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=",
+          "dev": true
+        },
+        "slash": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/slash/download/slash-2.0.0.tgz",
+          "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=",
+          "dev": true
+        }
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.6",
+      "resolved": "https://registry.nlark.com/graceful-fs/download/graceful-fs-4.2.6.tgz",
+      "integrity": "sha1-/wQLKwhTsjw9MQJ1I3BvGIXXa+4=",
+      "dev": true
+    },
+    "gzip-size": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz",
+      "integrity": "sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=",
+      "dev": true,
+      "requires": {
+        "duplexer": "^0.1.1",
+        "pify": "^4.0.1"
+      }
+    },
+    "handle-thing": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.1.tgz",
+      "integrity": "sha1-hX95zjWVgMNA1DCBzGSJcNC7I04=",
+      "dev": true
+    },
+    "har-schema": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/har-schema/download/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "dev": true
+    },
+    "har-validator": {
+      "version": "5.1.5",
+      "resolved": "https://registry.nlark.com/har-validator/download/har-validator-5.1.5.tgz",
+      "integrity": "sha1-HwgDufjLIMD6E4It8ezds2veHv0=",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.12.3",
+        "har-schema": "^2.0.0"
+      }
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz",
+      "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=",
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-bigints": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/has-bigints/download/has-bigints-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-bigints%2Fdownload%2Fhas-bigints-1.0.1.tgz",
+      "integrity": "sha1-ZP5qywIGc+O3jbA1pa9pqp0HsRM=",
+      "dev": true
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true
+    },
+    "has-symbols": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/has-symbols/download/has-symbols-1.0.2.tgz",
+      "integrity": "sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM="
+    },
+    "has-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/has-value/download/has-value-1.0.0.tgz",
+      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "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.npm.taobao.org/has-values/download/has-values-1.0.0.tgz",
+      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "4.0.0",
+          "resolved": "https://registry.nlark.com/kind-of/download/kind-of-4.0.0.tgz",
+          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "hash-base": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/hash-base/download/hash-base-3.1.0.tgz",
+      "integrity": "sha1-VcOB2eBuHSmXqIO0o/3f5/DTrzM=",
+      "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.nlark.com/readable-stream/download/readable-stream-3.6.0.tgz",
+          "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz",
+          "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=",
+          "dev": true
+        }
+      }
+    },
+    "hash-sum": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-2.0.0.tgz",
+      "integrity": "sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=",
+      "dev": true
+    },
+    "hash.js": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz",
+      "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "he": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz",
+      "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=",
+      "dev": true
+    },
+    "hex-color-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/hex-color-regex/download/hex-color-regex-1.1.0.tgz",
+      "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=",
+      "dev": true
+    },
+    "highlight.js": {
+      "version": "10.7.3",
+      "resolved": "https://registry.nlark.com/highlight.js/download/highlight.js-10.7.3.tgz?cache=0&sync_timestamp=1622801908267&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhighlight.js%2Fdownload%2Fhighlight.js-10.7.3.tgz",
+      "integrity": "sha1-aXJy45kTVuQMPKxWanTu9oF1ZTE=",
+      "dev": true
+    },
+    "hmac-drbg": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/hmac-drbg/download/hmac-drbg-1.0.1.tgz",
+      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+      "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.nlark.com/hoopy/download/hoopy-0.1.4.tgz",
+      "integrity": "sha1-YJIH1mEQADOpqUAq096mdzgcGx0=",
+      "dev": true
+    },
+    "hosted-git-info": {
+      "version": "2.8.9",
+      "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.9.tgz",
+      "integrity": "sha1-3/wL+aIcAiCQkPKqaUKeFBTa8/k=",
+      "dev": true
+    },
+    "hpack.js": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz",
+      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+      "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.nlark.com/hsl-regex/download/hsl-regex-1.0.0.tgz",
+      "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=",
+      "dev": true
+    },
+    "hsla-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz",
+      "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
+      "dev": true
+    },
+    "html-entities": {
+      "version": "1.4.0",
+      "resolved": "https://registry.nlark.com/html-entities/download/html-entities-1.4.0.tgz",
+      "integrity": "sha1-z70bAdKvr5rcobEK59/6uYxx0tw=",
+      "dev": true
+    },
+    "html-minifier": {
+      "version": "3.5.21",
+      "resolved": "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz",
+      "integrity": "sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw=",
+      "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.nlark.com/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1622954231534&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz",
+          "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=",
+          "dev": true
+        }
+      }
+    },
+    "html-tags": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-3.1.0.tgz",
+      "integrity": "sha1-e15vfmZen7QfMAB+2eDUHpf7IUA=",
+      "dev": true
+    },
+    "html-webpack-plugin": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz",
+      "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
+      "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.nlark.com/big.js/download/big.js-3.2.0.tgz",
+          "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=",
+          "dev": true
+        },
+        "emojis-list": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz",
+          "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+          "dev": true
+        },
+        "json5": {
+          "version": "0.5.1",
+          "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz",
+          "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+          "dev": true
+        },
+        "loader-utils": {
+          "version": "0.2.17",
+          "resolved": "https://registry.nlark.com/loader-utils/download/loader-utils-0.2.17.tgz?cache=0&sync_timestamp=1618846812625&other_urls=https%3A%2F%2Fregistry.nlark.com%2Floader-utils%2Fdownload%2Floader-utils-0.2.17.tgz",
+          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+          "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.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz?cache=0&sync_timestamp=1610159895694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil.promisify%2Fdownload%2Futil.promisify-1.0.0.tgz",
+          "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=",
+          "dev": true,
+          "requires": {
+            "define-properties": "^1.1.2",
+            "object.getownpropertydescriptors": "^2.0.3"
+          }
+        }
+      }
+    },
+    "htmlparser2": {
+      "version": "6.1.0",
+      "resolved": "https://registry.nlark.com/htmlparser2/download/htmlparser2-6.1.0.tgz?cache=0&sync_timestamp=1618846794076&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-6.1.0.tgz",
+      "integrity": "sha1-xNditsM3GgXb5l6UrkOp+EX7j7c=",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.0.0",
+        "domutils": "^2.5.2",
+        "entities": "^2.0.0"
+      },
+      "dependencies": {
+        "dom-serializer": {
+          "version": "1.3.2",
+          "resolved": "https://registry.nlark.com/dom-serializer/download/dom-serializer-1.3.2.tgz?cache=0&sync_timestamp=1621256830355&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdom-serializer%2Fdownload%2Fdom-serializer-1.3.2.tgz",
+          "integrity": "sha1-YgZDfTLO767HFhgDIwx6ILwbTZE=",
+          "dev": true,
+          "requires": {
+            "domelementtype": "^2.0.1",
+            "domhandler": "^4.2.0",
+            "entities": "^2.0.0"
+          }
+        },
+        "domelementtype": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.2.0.tgz?cache=0&sync_timestamp=1617298554829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.2.0.tgz",
+          "integrity": "sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=",
+          "dev": true
+        },
+        "domutils": {
+          "version": "2.7.0",
+          "resolved": "https://registry.nlark.com/domutils/download/domutils-2.7.0.tgz",
+          "integrity": "sha1-jrrwxB66/PVbC3LsMcVjI3EsVEI=",
+          "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.nlark.com/http-deceiver/download/http-deceiver-1.2.7.tgz",
+      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+      "dev": true
+    },
+    "http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz",
+      "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
+      "dev": true,
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.nlark.com/inherits/download/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        }
+      }
+    },
+    "http-parser-js": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.5.3.tgz",
+      "integrity": "sha1-AdJwnHnUFpi7AdTezF6dpOSgM9k=",
+      "dev": true
+    },
+    "http-proxy": {
+      "version": "1.18.1",
+      "resolved": "https://registry.nlark.com/http-proxy/download/http-proxy-1.18.1.tgz?cache=0&sync_timestamp=1618847045732&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhttp-proxy%2Fdownload%2Fhttp-proxy-1.18.1.tgz",
+      "integrity": "sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=",
+      "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.nlark.com/http-proxy-middleware/download/http-proxy-middleware-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhttp-proxy-middleware%2Fdownload%2Fhttp-proxy-middleware-1.3.1.tgz",
+      "integrity": "sha1-Q3ANbZ7st0Gb8IahKND3IF2etmU=",
+      "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.npm.taobao.org/braces/download/braces-3.0.2.tgz",
+          "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=",
+          "dev": true,
+          "requires": {
+            "fill-range": "^7.0.1"
+          }
+        },
+        "fill-range": {
+          "version": "7.0.1",
+          "resolved": "https://registry.nlark.com/fill-range/download/fill-range-7.0.1.tgz",
+          "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=",
+          "dev": true,
+          "requires": {
+            "to-regex-range": "^5.0.1"
+          }
+        },
+        "is-number": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz",
+          "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=",
+          "dev": true
+        },
+        "micromatch": {
+          "version": "4.0.4",
+          "resolved": "https://registry.nlark.com/micromatch/download/micromatch-4.0.4.tgz",
+          "integrity": "sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=",
+          "dev": true,
+          "requires": {
+            "braces": "^3.0.1",
+            "picomatch": "^2.2.3"
+          }
+        },
+        "to-regex-range": {
+          "version": "5.0.1",
+          "resolved": "https://registry.nlark.com/to-regex-range/download/to-regex-range-5.0.1.tgz",
+          "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=",
+          "dev": true,
+          "requires": {
+            "is-number": "^7.0.0"
+          }
+        }
+      }
+    },
+    "http-signature": {
+      "version": "1.2.0",
+      "resolved": "https://registry.nlark.com/http-signature/download/http-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "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.nlark.com/https-browserify/download/https-browserify-1.0.0.tgz",
+      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+      "dev": true
+    },
+    "human-signals": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz",
+      "integrity": "sha1-xbHNFPUK6uCatsWf5jujOV/k36M=",
+      "dev": true
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz",
+      "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
+      "dev": true,
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "icss-utils": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npm.taobao.org/icss-utils/download/icss-utils-4.1.1.tgz?cache=0&sync_timestamp=1605801291394&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficss-utils%2Fdownload%2Ficss-utils-4.1.1.tgz",
+      "integrity": "sha1-IRcLU3ie4nRHwvR91oMIFAP5pGc=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.14"
+      }
+    },
+    "ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.nlark.com/ieee754/download/ieee754-1.2.1.tgz",
+      "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=",
+      "dev": true
+    },
+    "iferr": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz",
+      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+      "dev": true
+    },
+    "ignore": {
+      "version": "3.3.10",
+      "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz",
+      "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=",
+      "dev": true
+    },
+    "import-cwd": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/import-cwd/download/import-cwd-2.1.0.tgz?cache=0&sync_timestamp=1618846826220&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fimport-cwd%2Fdownload%2Fimport-cwd-2.1.0.tgz",
+      "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+      "dev": true,
+      "requires": {
+        "import-from": "^2.1.0"
+      }
+    },
+    "import-fresh": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1608469561643&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz",
+      "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+      "dev": true,
+      "requires": {
+        "caller-path": "^2.0.0",
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "import-from": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/import-from/download/import-from-2.1.0.tgz",
+      "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "import-local": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/import-local/download/import-local-2.0.0.tgz",
+      "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=",
+      "dev": true,
+      "requires": {
+        "pkg-dir": "^3.0.0",
+        "resolve-cwd": "^2.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.nlark.com/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1618846778775&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz",
+          "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+          "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.nlark.com/p-locate/download/p-locate-3.0.0.tgz",
+          "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.nlark.com/path-exists/download/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "dev": true
+        },
+        "pkg-dir": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz",
+          "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
+          "dev": true,
+          "requires": {
+            "find-up": "^3.0.0"
+          }
+        }
+      }
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz",
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+      "dev": true
+    },
+    "indexes-of": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz",
+      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+      "dev": true
+    },
+    "infer-owner": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz",
+      "integrity": "sha1-xM78qo5RBRwqQLos6KPScpWvlGc=",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.nlark.com/inherits/download/inherits-2.0.4.tgz",
+      "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=",
+      "dev": true
+    },
+    "internal-ip": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz?cache=0&sync_timestamp=1605885528721&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finternal-ip%2Fdownload%2Finternal-ip-4.3.0.tgz",
+      "integrity": "sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc=",
+      "dev": true,
+      "requires": {
+        "default-gateway": "^4.2.0",
+        "ipaddr.js": "^1.9.0"
+      },
+      "dependencies": {
+        "default-gateway": {
+          "version": "4.2.0",
+          "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz?cache=0&sync_timestamp=1610365756089&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-4.2.0.tgz",
+          "integrity": "sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=",
+          "dev": true,
+          "requires": {
+            "execa": "^1.0.0",
+            "ip-regex": "^2.1.0"
+          }
+        }
+      }
+    },
+    "ip": {
+      "version": "1.1.5",
+      "resolved": "https://registry.nlark.com/ip/download/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+      "dev": true
+    },
+    "ip-regex": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/ip-regex/download/ip-regex-2.1.0.tgz",
+      "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+      "dev": true
+    },
+    "ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.nlark.com/ipaddr.js/download/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=",
+      "dev": true
+    },
+    "is-absolute-url": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/is-absolute-url/download/is-absolute-url-2.1.0.tgz",
+      "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
+      "dev": true
+    },
+    "is-accessor-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.nlark.com/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.nlark.com/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-arguments": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/is-arguments/download/is-arguments-1.1.0.tgz",
+      "integrity": "sha1-YjUwMd++4HzrNGVqa95Z7+yujdk=",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.0"
+      }
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "dev": true
+    },
+    "is-bigint": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/is-bigint/download/is-bigint-1.0.2.tgz",
+      "integrity": "sha1-/7OBRCUDI1rSReqJ5Fs9v/BA7lo=",
+      "dev": true
+    },
+    "is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/is-binary-path/download/is-binary-path-2.1.0.tgz",
+      "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=",
+      "requires": {
+        "binary-extensions": "^2.0.0"
+      }
+    },
+    "is-boolean-object": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/is-boolean-object/download/is-boolean-object-1.1.1.tgz",
+      "integrity": "sha1-PAh48DXLghIo01DS4eNnGXFqPeg=",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2"
+      }
+    },
+    "is-buffer": {
+      "version": "1.1.6",
+      "resolved": "https://registry.nlark.com/is-buffer/download/is-buffer-1.1.6.tgz",
+      "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=",
+      "dev": true
+    },
+    "is-callable": {
+      "version": "1.2.3",
+      "resolved": "https://registry.nlark.com/is-callable/download/is-callable-1.2.3.tgz",
+      "integrity": "sha1-ix4FALc6HXbHBIdjbzaOUZ3o244=",
+      "dev": true
+    },
+    "is-color-stop": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/is-color-stop/download/is-color-stop-1.1.0.tgz",
+      "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
+      "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.4.0",
+      "resolved": "https://registry.nlark.com/is-core-module/download/is-core-module-2.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-core-module%2Fdownload%2Fis-core-module-2.4.0.tgz",
+      "integrity": "sha1-jp/I4VAnsBFBgCbpjw5vTYYwXME=",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
+    "is-data-descriptor": {
+      "version": "0.1.4",
+      "resolved": "https://registry.nlark.com/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.nlark.com/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-date-object": {
+      "version": "1.0.4",
+      "resolved": "https://registry.nlark.com/is-date-object/download/is-date-object-1.0.4.tgz",
+      "integrity": "sha1-VQz8wDr62gXuo90wmBx7CVUfc+U=",
+      "dev": true
+    },
+    "is-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
+      "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+      "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.nlark.com/kind-of/download/kind-of-5.1.0.tgz",
+          "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=",
+          "dev": true
+        }
+      }
+    },
+    "is-directory": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz",
+      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+      "dev": true
+    },
+    "is-docker": {
+      "version": "2.2.1",
+      "resolved": "https://registry.nlark.com/is-docker/download/is-docker-2.2.1.tgz",
+      "integrity": "sha1-M+6r4jz+hvFL3kQIoCwM+4U6zao=",
+      "dev": true
+    },
+    "is-extendable": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "dev": true
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+    },
+    "is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/is-glob/download/is-glob-4.0.1.tgz",
+      "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-negative-zero": {
+      "version": "2.0.1",
+      "resolved": "https://registry.nlark.com/is-negative-zero/download/is-negative-zero-2.0.1.tgz",
+      "integrity": "sha1-PedGwY3aIxkkGlNnWQjY92bxHCQ=",
+      "dev": true
+    },
+    "is-number": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.nlark.com/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-number-object": {
+      "version": "1.0.5",
+      "resolved": "https://registry.nlark.com/is-number-object/download/is-number-object-1.0.5.tgz",
+      "integrity": "sha1-bt+u7XlQz/Ga/tzp+/yp7m3Sies=",
+      "dev": true
+    },
+    "is-obj": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-2.0.0.tgz",
+      "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=",
+      "dev": true
+    },
+    "is-path-cwd": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz",
+      "integrity": "sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=",
+      "dev": true
+    },
+    "is-path-in-cwd": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz?cache=0&sync_timestamp=1620047110449&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-path-in-cwd%2Fdownload%2Fis-path-in-cwd-2.1.0.tgz",
+      "integrity": "sha1-v+Lcomxp85cmWkAJljYCk1oFOss=",
+      "dev": true,
+      "requires": {
+        "is-path-inside": "^2.1.0"
+      }
+    },
+    "is-path-inside": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/is-path-inside/download/is-path-inside-2.1.0.tgz?cache=0&sync_timestamp=1620046845369&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-path-inside%2Fdownload%2Fis-path-inside-2.1.0.tgz",
+      "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=",
+      "dev": true,
+      "requires": {
+        "path-is-inside": "^1.0.2"
+      }
+    },
+    "is-plain-obj": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-3.0.0.tgz?cache=0&sync_timestamp=1618600489644&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-obj%2Fdownload%2Fis-plain-obj-3.0.0.tgz",
+      "integrity": "sha1-r28uoUrFpkYYOlu9tbqrvBVq2dc=",
+      "dev": true
+    },
+    "is-plain-object": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz",
+      "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "is-regex": {
+      "version": "1.1.3",
+      "resolved": "https://registry.nlark.com/is-regex/download/is-regex-1.1.3.tgz",
+      "integrity": "sha1-0Cn5r/ZEi5Prvj8z2scVEf3L758=",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "has-symbols": "^1.0.2"
+      }
+    },
+    "is-resolvable": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz",
+      "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=",
+      "dev": true
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/is-stream/download/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+      "dev": true
+    },
+    "is-string": {
+      "version": "1.0.6",
+      "resolved": "https://registry.nlark.com/is-string/download/is-string-1.0.6.tgz",
+      "integrity": "sha1-P+XVmS+w2TQE8yWE1LAXmnG1Sl8=",
+      "dev": true
+    },
+    "is-symbol": {
+      "version": "1.0.4",
+      "resolved": "https://registry.nlark.com/is-symbol/download/is-symbol-1.0.4.tgz?cache=0&sync_timestamp=1620501174327&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-symbol%2Fdownload%2Fis-symbol-1.0.4.tgz",
+      "integrity": "sha1-ptrJO2NbBjymhyI23oiRClevE5w=",
+      "dev": true,
+      "requires": {
+        "has-symbols": "^1.0.2"
+      }
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+      "dev": true
+    },
+    "is-windows": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/is-windows/download/is-windows-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-windows%2Fdownload%2Fis-windows-1.0.2.tgz",
+      "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=",
+      "dev": true
+    },
+    "is-wsl": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/is-wsl/download/is-wsl-1.1.0.tgz",
+      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+      "dev": true
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/isexe/download/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "isobject": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "https://registry.nlark.com/isstream/download/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "dev": true
+    },
+    "javascript-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-2.1.0.tgz",
+      "integrity": "sha1-J8dlOb4U2L0Sghmi1zGwkzeQTnk=",
+      "dev": true
+    },
+    "js-message": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.7.tgz",
+      "integrity": "sha1-+93QU8ekcCGHG7iyyVOXzBfCDkc=",
+      "dev": true
+    },
+    "js-queue": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.2.tgz",
+      "integrity": "sha1-C+WQM4+QOzbHPTPDGIOoIUEs1II=",
+      "dev": true,
+      "requires": {
+        "easy-stack": "^1.0.1"
+      }
+    },
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.nlark.com/js-tokens/download/js-tokens-4.0.0.tgz?cache=0&sync_timestamp=1619345098261&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fjs-tokens%2Fdownload%2Fjs-tokens-4.0.0.tgz",
+      "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.14.1.tgz?cache=0&sync_timestamp=1618435004368&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-yaml%2Fdownload%2Fjs-yaml-3.14.1.tgz",
+      "integrity": "sha1-2ugS/bOCX6MGYJqHFzg8UMNqBTc=",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "jsbn": {
+      "version": "0.1.1",
+      "resolved": "https://registry.nlark.com/jsbn/download/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "dev": true
+    },
+    "jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.nlark.com/jsesc/download/jsesc-2.5.2.tgz",
+      "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=",
+      "dev": true
+    },
+    "json-parse-better-errors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz",
+      "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=",
+      "dev": true
+    },
+    "json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.nlark.com/json-parse-even-better-errors/download/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=",
+      "dev": true
+    },
+    "json-schema": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz?cache=0&sync_timestamp=1609553637722&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema%2Fdownload%2Fjson-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+      "dev": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.nlark.com/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA="
+    },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+      "dev": true
+    },
+    "json3": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz",
+      "integrity": "sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E=",
+      "dev": true
+    },
+    "json5": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.2.0.tgz",
+      "integrity": "sha1-Lf7+cgxrpSXZ69kJlQ8FFTFsiaM=",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "jsonfile": {
+      "version": "4.0.0",
+      "resolved": "https://registry.nlark.com/jsonfile/download/jsonfile-4.0.0.tgz",
+      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "jsprim": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "killable": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/killable/download/killable-1.0.1.tgz",
+      "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=",
+      "dev": true
+    },
+    "kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.nlark.com/kind-of/download/kind-of-6.0.3.tgz",
+      "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0="
+    },
+    "launch-editor": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz",
+      "integrity": "sha1-hxtaPuOdZoD8wm03kwtu7aidsMo=",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.3.0",
+        "shell-quote": "^1.6.1"
+      }
+    },
+    "launch-editor-middleware": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz",
+      "integrity": "sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc=",
+      "dev": true,
+      "requires": {
+        "launch-editor": "^2.2.1"
+      }
+    },
+    "lines-and-columns": {
+      "version": "1.1.6",
+      "resolved": "https://registry.nlark.com/lines-and-columns/download/lines-and-columns-1.1.6.tgz",
+      "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+      "dev": true
+    },
+    "loader-runner": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz?cache=0&sync_timestamp=1610027918622&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-runner%2Fdownload%2Floader-runner-2.4.0.tgz",
+      "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=",
+      "dev": true
+    },
+    "loader-utils": {
+      "version": "1.4.0",
+      "resolved": "https://registry.nlark.com/loader-utils/download/loader-utils-1.4.0.tgz?cache=0&sync_timestamp=1618846812625&other_urls=https%3A%2F%2Fregistry.nlark.com%2Floader-utils%2Fdownload%2Floader-utils-1.4.0.tgz",
+      "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=",
+      "requires": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^1.0.1"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz",
+          "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        }
+      }
+    },
+    "locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz",
+      "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=",
+      "dev": true,
+      "requires": {
+        "p-locate": "^4.1.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.nlark.com/lodash/download/lodash-4.17.21.tgz",
+      "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=",
+      "dev": true
+    },
+    "lodash.debounce": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npm.taobao.org/lodash.debounce/download/lodash.debounce-4.0.8.tgz",
+      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+      "dev": true
+    },
+    "lodash.defaultsdeep": {
+      "version": "4.6.1",
+      "resolved": "https://registry.nlark.com/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz",
+      "integrity": "sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=",
+      "dev": true
+    },
+    "lodash.kebabcase": {
+      "version": "4.1.1",
+      "resolved": "https://registry.nlark.com/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz",
+      "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=",
+      "dev": true
+    },
+    "lodash.mapvalues": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz",
+      "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=",
+      "dev": true
+    },
+    "lodash.memoize": {
+      "version": "4.1.2",
+      "resolved": "https://registry.nlark.com/lodash.memoize/download/lodash.memoize-4.1.2.tgz",
+      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+      "dev": true
+    },
+    "lodash.transform": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz",
+      "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=",
+      "dev": true
+    },
+    "lodash.uniq": {
+      "version": "4.5.0",
+      "resolved": "https://registry.nlark.com/lodash.uniq/download/lodash.uniq-4.5.0.tgz",
+      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+      "dev": true
+    },
+    "log-symbols": {
+      "version": "2.2.0",
+      "resolved": "https://registry.nlark.com/log-symbols/download/log-symbols-2.2.0.tgz?cache=0&sync_timestamp=1618847128438&other_urls=https%3A%2F%2Fregistry.nlark.com%2Flog-symbols%2Fdownload%2Flog-symbols-2.2.0.tgz",
+      "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.0.1"
+      }
+    },
+    "loglevel": {
+      "version": "1.7.1",
+      "resolved": "https://registry.nlark.com/loglevel/download/loglevel-1.7.1.tgz",
+      "integrity": "sha1-AF/eL15uRwaPk1/yhXPhJe9y8Zc=",
+      "dev": true
+    },
+    "lower-case": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz?cache=0&sync_timestamp=1606867333511&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flower-case%2Fdownload%2Flower-case-1.1.4.tgz",
+      "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+      "dev": true
+    },
+    "lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.nlark.com/lru-cache/download/lru-cache-5.1.1.tgz",
+      "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=",
+      "dev": true,
+      "requires": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "make-dir": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz",
+      "integrity": "sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=",
+      "dev": true,
+      "requires": {
+        "semver": "^6.0.0"
+      }
+    },
+    "map-cache": {
+      "version": "0.2.2",
+      "resolved": "https://registry.nlark.com/map-cache/download/map-cache-0.2.2.tgz",
+      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+      "dev": true
+    },
+    "map-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/map-visit/download/map-visit-1.0.0.tgz",
+      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "dev": true,
+      "requires": {
+        "object-visit": "^1.0.0"
+      }
+    },
+    "md5.js": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz",
+      "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=",
+      "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.nlark.com/mdn-data/download/mdn-data-2.0.4.tgz?cache=0&sync_timestamp=1622679294056&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.4.tgz",
+      "integrity": "sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=",
+      "dev": true
+    },
+    "media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.nlark.com/media-typer/download/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true
+    },
+    "memory-fs": {
+      "version": "0.4.1",
+      "resolved": "https://registry.nlark.com/memory-fs/download/memory-fs-0.4.1.tgz",
+      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+      "dev": true,
+      "requires": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true
+    },
+    "merge-source-map": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/merge-source-map/download/merge-source-map-1.1.0.tgz",
+      "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=",
+      "dev": true,
+      "requires": {
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz",
+      "integrity": "sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=",
+      "dev": true
+    },
+    "merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.4.1.tgz",
+      "integrity": "sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=",
+      "dev": true
+    },
+    "methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "3.1.10",
+      "resolved": "https://registry.nlark.com/micromatch/download/micromatch-3.1.10.tgz",
+      "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+      "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.nlark.com/miller-rabin/download/miller-rabin-4.0.1.tgz",
+      "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+          "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+          "dev": true
+        }
+      }
+    },
+    "mime": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.5.2.tgz?cache=0&sync_timestamp=1615984369368&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-2.5.2.tgz",
+      "integrity": "sha1-bj3GzCuVEGQ4MOXxnVy3U9pe6r4=",
+      "dev": true
+    },
+    "mime-db": {
+      "version": "1.48.0",
+      "resolved": "https://registry.nlark.com/mime-db/download/mime-db-1.48.0.tgz?cache=0&sync_timestamp=1622433567590&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmime-db%2Fdownload%2Fmime-db-1.48.0.tgz",
+      "integrity": "sha1-41sxBF3X6to6qtU37YijOvvvLR0=",
+      "dev": true
+    },
+    "mime-types": {
+      "version": "2.1.31",
+      "resolved": "https://registry.nlark.com/mime-types/download/mime-types-2.1.31.tgz",
+      "integrity": "sha1-oA12t0MXxh+cLbIhi46fjpxcnms=",
+      "dev": true,
+      "requires": {
+        "mime-db": "1.48.0"
+      }
+    },
+    "mimic-fn": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz",
+      "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=",
+      "dev": true
+    },
+    "mini-css-extract-plugin": {
+      "version": "0.9.0",
+      "resolved": "https://registry.nlark.com/mini-css-extract-plugin/download/mini-css-extract-plugin-0.9.0.tgz",
+      "integrity": "sha1-R/LPB6oWWrNXM7H8l9TEbAVkM54=",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "normalize-url": "1.9.1",
+        "schema-utils": "^1.0.0",
+        "webpack-sources": "^1.1.0"
+      },
+      "dependencies": {
+        "normalize-url": {
+          "version": "1.9.1",
+          "resolved": "https://registry.nlark.com/normalize-url/download/normalize-url-1.9.1.tgz?cache=0&sync_timestamp=1621862147909&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnormalize-url%2Fdownload%2Fnormalize-url-1.9.1.tgz",
+          "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+          "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.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "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.nlark.com/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz",
+      "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=",
+      "dev": true
+    },
+    "minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz",
+      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
+      "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.nlark.com/minimist/download/minimist-1.2.5.tgz?cache=0&sync_timestamp=1618847017774&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fminimist%2Fdownload%2Fminimist-1.2.5.tgz",
+      "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI="
+    },
+    "minipass": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-3.1.3.tgz",
+      "integrity": "sha1-fUL/HzljVILhX5zbUxhN7r1YFf0=",
+      "dev": true,
+      "requires": {
+        "yallist": "^4.0.0"
+      },
+      "dependencies": {
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz",
+          "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=",
+          "dev": true
+        }
+      }
+    },
+    "mississippi": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz",
+      "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=",
+      "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"
+      }
+    },
+    "mixin-deep": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz",
+      "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz",
+      "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "move-concurrently": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/move-concurrently/download/move-concurrently-1.0.1.tgz",
+      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+      "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"
+      }
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.nlark.com/ms/download/ms-2.1.2.tgz",
+      "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=",
+      "dev": true
+    },
+    "multicast-dns": {
+      "version": "6.2.3",
+      "resolved": "https://registry.nlark.com/multicast-dns/download/multicast-dns-6.2.3.tgz",
+      "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=",
+      "dev": true,
+      "requires": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      }
+    },
+    "multicast-dns-service-types": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz",
+      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+      "dev": true
+    },
+    "mz": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz",
+      "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=",
+      "dev": true,
+      "requires": {
+        "any-promise": "^1.0.0",
+        "object-assign": "^4.0.1",
+        "thenify-all": "^1.0.0"
+      }
+    },
+    "nan": {
+      "version": "2.14.2",
+      "resolved": "https://registry.nlark.com/nan/download/nan-2.14.2.tgz",
+      "integrity": "sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk=",
+      "dev": true,
+      "optional": true
+    },
+    "nanomatch": {
+      "version": "1.2.13",
+      "resolved": "https://registry.nlark.com/nanomatch/download/nanomatch-1.2.13.tgz",
+      "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=",
+      "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"
+      }
+    },
+    "negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
+      "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=",
+      "dev": true
+    },
+    "neo-async": {
+      "version": "2.6.2",
+      "resolved": "https://registry.nlark.com/neo-async/download/neo-async-2.6.2.tgz",
+      "integrity": "sha1-tKr7k+OustgXTKU88WOrfXMIMF8="
+    },
+    "nice-try": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz?cache=0&sync_timestamp=1614510016909&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnice-try%2Fdownload%2Fnice-try-1.0.5.tgz",
+      "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=",
+      "dev": true
+    },
+    "no-case": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz",
+      "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=",
+      "dev": true,
+      "requires": {
+        "lower-case": "^1.1.1"
+      }
+    },
+    "node-forge": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.10.0.tgz?cache=0&sync_timestamp=1599054189018&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.10.0.tgz",
+      "integrity": "sha1-Mt6ir7Ppkm8C7lzoeUkCaRpna/M=",
+      "dev": true
+    },
+    "node-ipc": {
+      "version": "9.1.4",
+      "resolved": "https://registry.nlark.com/node-ipc/download/node-ipc-9.1.4.tgz",
+      "integrity": "sha1-Ks+WJoGv2sJgKHbZj+ZDTVTZvTw=",
+      "dev": true,
+      "requires": {
+        "event-pubsub": "4.3.0",
+        "js-message": "1.0.7",
+        "js-queue": "2.0.2"
+      }
+    },
+    "node-libs-browser": {
+      "version": "2.2.1",
+      "resolved": "https://registry.nlark.com/node-libs-browser/download/node-libs-browser-2.2.1.tgz",
+      "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=",
+      "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.nlark.com/punycode/download/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true
+        }
+      }
+    },
+    "node-releases": {
+      "version": "1.1.73",
+      "resolved": "https://registry.nlark.com/node-releases/download/node-releases-1.1.73.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.73.tgz",
+      "integrity": "sha1-3U6B3dUnf/hGuAtSu0DEnt96eyA=",
+      "dev": true
+    },
+    "normalize-package-data": {
+      "version": "2.5.0",
+      "resolved": "https://registry.nlark.com/normalize-package-data/download/normalize-package-data-2.5.0.tgz",
+      "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=",
+      "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.nlark.com/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1618847119601&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+          "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+          "dev": true
+        }
+      }
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz",
+      "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU="
+    },
+    "normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz",
+      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+      "dev": true
+    },
+    "normalize-url": {
+      "version": "3.3.0",
+      "resolved": "https://registry.nlark.com/normalize-url/download/normalize-url-3.3.0.tgz?cache=0&sync_timestamp=1621862147909&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnormalize-url%2Fdownload%2Fnormalize-url-3.3.0.tgz",
+      "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=",
+      "dev": true
+    },
+    "npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz",
+      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "dev": true,
+      "requires": {
+        "path-key": "^2.0.0"
+      }
+    },
+    "nth-check": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/nth-check/download/nth-check-1.0.2.tgz",
+      "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=",
+      "dev": true,
+      "requires": {
+        "boolbase": "~1.0.0"
+      }
+    },
+    "num2fraction": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz",
+      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+      "dev": true
+    },
+    "oauth-sign": {
+      "version": "0.9.0",
+      "resolved": "https://registry.nlark.com/oauth-sign/download/oauth-sign-0.9.0.tgz",
+      "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=",
+      "dev": true
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.nlark.com/object-assign/download/object-assign-4.1.1.tgz?cache=0&sync_timestamp=1618847043548&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fobject-assign%2Fdownload%2Fobject-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+      "dev": true
+    },
+    "object-copy": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz",
+      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "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.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.nlark.com/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "object-inspect": {
+      "version": "1.10.3",
+      "resolved": "https://registry.nlark.com/object-inspect/download/object-inspect-1.10.3.tgz",
+      "integrity": "sha1-wqp9LQn1DJk3VwT3oK3yTFeC02k="
+    },
+    "object-is": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.5.tgz?cache=0&sync_timestamp=1613857698573&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-is%2Fdownload%2Fobject-is-1.1.5.tgz",
+      "integrity": "sha1-ud7qpfx/GEag+uzc7sE45XePU6w=",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/object-keys/download/object-keys-1.1.1.tgz",
+      "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=",
+      "dev": true
+    },
+    "object-visit": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/object-visit/download/object-visit-1.0.1.tgz",
+      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.assign": {
+      "version": "4.1.2",
+      "resolved": "https://registry.nlark.com/object.assign/download/object.assign-4.1.2.tgz",
+      "integrity": "sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA=",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "has-symbols": "^1.0.1",
+        "object-keys": "^1.1.1"
+      }
+    },
+    "object.getownpropertydescriptors": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.2.tgz?cache=0&sync_timestamp=1613860004199&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.getownpropertydescriptors%2Fdownload%2Fobject.getownpropertydescriptors-2.1.2.tgz",
+      "integrity": "sha1-G9Y66s8NXS0vMbXjk7A6fGAaI/c=",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.2"
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz",
+      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "object.values": {
+      "version": "1.1.4",
+      "resolved": "https://registry.nlark.com/object.values/download/object.values-1.1.4.tgz?cache=0&sync_timestamp=1622070620040&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fobject.values%2Fdownload%2Fobject.values-1.1.4.tgz",
+      "integrity": "sha1-DSc3YoM+gWtpOmN9MAc+cFFTWzA=",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.2"
+      }
+    },
+    "obuf": {
+      "version": "1.1.2",
+      "resolved": "https://registry.nlark.com/obuf/download/obuf-1.1.2.tgz",
+      "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=",
+      "dev": true
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.nlark.com/on-finished/download/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "on-headers": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/on-headers/download/on-headers-1.0.2.tgz",
+      "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=",
+      "dev": true
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.nlark.com/once/download/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "onetime": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz",
+      "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+      "dev": true,
+      "requires": {
+        "mimic-fn": "^1.0.0"
+      }
+    },
+    "open": {
+      "version": "6.4.0",
+      "resolved": "https://registry.nlark.com/open/download/open-6.4.0.tgz",
+      "integrity": "sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk=",
+      "dev": true,
+      "requires": {
+        "is-wsl": "^1.1.0"
+      }
+    },
+    "opener": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npm.taobao.org/opener/download/opener-1.5.2.tgz",
+      "integrity": "sha1-XTfh81B3udysQwE3InGv3rKhNZg=",
+      "dev": true
+    },
+    "opn": {
+      "version": "5.5.0",
+      "resolved": "https://registry.nlark.com/opn/download/opn-5.5.0.tgz",
+      "integrity": "sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w=",
+      "dev": true,
+      "requires": {
+        "is-wsl": "^1.1.0"
+      }
+    },
+    "ora": {
+      "version": "3.4.0",
+      "resolved": "https://registry.nlark.com/ora/download/ora-3.4.0.tgz?cache=0&sync_timestamp=1623138023549&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fora%2Fdownload%2Fora-3.4.0.tgz",
+      "integrity": "sha1-vwdSSRBZo+8+1MhQl1Md6f280xg=",
+      "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.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+          "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "original": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz",
+      "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=",
+      "dev": true,
+      "requires": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "os-browserify": {
+      "version": "0.3.0",
+      "resolved": "https://registry.nlark.com/os-browserify/download/os-browserify-0.3.0.tgz",
+      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+      "dev": true
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+      "dev": true
+    },
+    "p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.nlark.com/p-limit/download/p-limit-2.3.0.tgz",
+      "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=",
+      "dev": true,
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.nlark.com/p-locate/download/p-locate-4.1.0.tgz",
+      "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=",
+      "dev": true,
+      "requires": {
+        "p-limit": "^2.2.0"
+      }
+    },
+    "p-map": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/p-map/download/p-map-2.1.0.tgz",
+      "integrity": "sha1-MQko/u+cnsxltosXaTAYpmXOoXU=",
+      "dev": true
+    },
+    "p-retry": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz",
+      "integrity": "sha1-MWtMiJPiyNwc+okfQGxLQivr8yg=",
+      "dev": true,
+      "requires": {
+        "retry": "^0.12.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz",
+      "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=",
+      "dev": true
+    },
+    "pako": {
+      "version": "1.0.11",
+      "resolved": "https://registry.nlark.com/pako/download/pako-1.0.11.tgz",
+      "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=",
+      "dev": true
+    },
+    "parallel-transform": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.2.0.tgz",
+      "integrity": "sha1-kEnKN9bLIYLDsdLHIL6U0UpYFPw=",
+      "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.nlark.com/param-case/download/param-case-2.1.1.tgz",
+      "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0"
+      }
+    },
+    "parse-asn1": {
+      "version": "5.1.6",
+      "resolved": "https://registry.nlark.com/parse-asn1/download/parse-asn1-5.1.6.tgz",
+      "integrity": "sha1-OFCAo+wTy2KmLTlAnLPoiETNrtQ=",
+      "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.nlark.com/parse-json/download/parse-json-5.2.0.tgz",
+      "integrity": "sha1-x2/Gbe5UIxyWKyK8yKcs8vmXU80=",
+      "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.nlark.com/parse5/download/parse5-5.1.1.tgz",
+      "integrity": "sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=",
+      "dev": true
+    },
+    "parse5-htmlparser2-tree-adapter": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npm.taobao.org/parse5-htmlparser2-tree-adapter/download/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+      "integrity": "sha1-LN+a2CMyEUA3DU2/XT6Sx8jdxuY=",
+      "dev": true,
+      "requires": {
+        "parse5": "^6.0.1"
+      },
+      "dependencies": {
+        "parse5": {
+          "version": "6.0.1",
+          "resolved": "https://registry.nlark.com/parse5/download/parse5-6.0.1.tgz",
+          "integrity": "sha1-4aHAhcVps9wIMhGE8Zo5zCf3wws=",
+          "dev": true
+        }
+      }
+    },
+    "parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz?cache=0&sync_timestamp=1599054201722&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparseurl%2Fdownload%2Fparseurl-1.3.3.tgz",
+      "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=",
+      "dev": true
+    },
+    "pascalcase": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz",
+      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+      "dev": true
+    },
+    "path-browserify": {
+      "version": "0.0.1",
+      "resolved": "https://registry.nlark.com/path-browserify/download/path-browserify-0.0.1.tgz",
+      "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=",
+      "dev": true
+    },
+    "path-dirname": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz",
+      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+      "dev": true
+    },
+    "path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.nlark.com/path-exists/download/path-exists-4.0.0.tgz",
+      "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=",
+      "dev": true
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true
+    },
+    "path-is-inside": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/path-is-inside/download/path-is-inside-1.0.2.tgz",
+      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+      "dev": true
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz?cache=0&sync_timestamp=1617971695678&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.nlark.com/path-parse/download/path-parse-1.0.7.tgz",
+      "integrity": "sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU=",
+      "dev": true
+    },
+    "path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.nlark.com/path-to-regexp/download/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+      "dev": true
+    },
+    "path-type": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz?cache=0&sync_timestamp=1611752107592&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-type%2Fdownload%2Fpath-type-3.0.0.tgz",
+      "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=",
+      "dev": true,
+      "requires": {
+        "pify": "^3.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
+    "pbkdf2": {
+      "version": "3.1.2",
+      "resolved": "https://registry.nlark.com/pbkdf2/download/pbkdf2-3.1.2.tgz",
+      "integrity": "sha1-3YIqoIh1gOUvGgOdw+2hCO+uMHU=",
+      "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.nlark.com/performance-now/download/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+      "dev": true
+    },
+    "picomatch": {
+      "version": "2.3.0",
+      "resolved": "https://registry.nlark.com/picomatch/download/picomatch-2.3.0.tgz?cache=0&sync_timestamp=1621648246651&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpicomatch%2Fdownload%2Fpicomatch-2.3.0.tgz",
+      "integrity": "sha1-8fBh3o9qS/AiiS4tEoI0+5gwKXI="
+    },
+    "pify": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
+      "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
+      "dev": true
+    },
+    "pinkie": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.nlark.com/pinkie-promise/download/pinkie-promise-2.0.1.tgz?cache=0&sync_timestamp=1618847023792&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpinkie-promise%2Fdownload%2Fpinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
+    },
+    "pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz",
+      "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=",
+      "dev": true,
+      "requires": {
+        "find-up": "^4.0.0"
+      }
+    },
+    "pnp-webpack-plugin": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz",
+      "integrity": "sha1-yXEaxNxIpoXauvyG+Lbdn434QUk=",
+      "dev": true,
+      "requires": {
+        "ts-pnp": "^1.1.6"
+      }
+    },
+    "portfinder": {
+      "version": "1.0.28",
+      "resolved": "https://registry.nlark.com/portfinder/download/portfinder-1.0.28.tgz",
+      "integrity": "sha1-Z8RiKFK9U3TdHdkA93n1NGL6x3g=",
+      "dev": true,
+      "requires": {
+        "async": "^2.6.2",
+        "debug": "^3.1.1",
+        "mkdirp": "^0.5.5"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.nlark.com/debug/download/debug-3.2.7.tgz",
+          "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "https://registry.nlark.com/posix-character-classes/download/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "dev": true
+    },
+    "postcss": {
+      "version": "7.0.36",
+      "resolved": "https://registry.nlark.com/postcss/download/postcss-7.0.36.tgz",
+      "integrity": "sha1-BW+M/6k5ZiqPWQWVDAfVKFZE38s=",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.2",
+        "source-map": "^0.6.1",
+        "supports-color": "^6.1.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.nlark.com/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1622293670728&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz",
+          "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "postcss-calc": {
+      "version": "7.0.5",
+      "resolved": "https://registry.nlark.com/postcss-calc/download/postcss-calc-7.0.5.tgz",
+      "integrity": "sha1-+KbpnxLmGcLrwjz2xIb9wVhgkz4=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.27",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.0.2"
+      }
+    },
+    "postcss-colormin": {
+      "version": "4.0.3",
+      "resolved": "https://registry.nlark.com/postcss-colormin/download/postcss-colormin-4.0.3.tgz",
+      "integrity": "sha1-rgYLzpPteUrHEmTwgTLVUJVr04E=",
+      "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": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-convert-values": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz?cache=0&sync_timestamp=1621449733448&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-convert-values%2Fdownload%2Fpostcss-convert-values-4.0.1.tgz",
+      "integrity": "sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-discard-comments": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz?cache=0&sync_timestamp=1621449558287&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-discard-comments%2Fdownload%2Fpostcss-discard-comments-4.0.2.tgz",
+      "integrity": "sha1-H7q9LCRr/2qq15l7KwkY9NevQDM=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-duplicates": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz?cache=0&sync_timestamp=1621449558296&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-discard-duplicates%2Fdownload%2Fpostcss-discard-duplicates-4.0.2.tgz",
+      "integrity": "sha1-P+EzzTyCKC5VD8myORdqkge3hOs=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-empty": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz?cache=0&sync_timestamp=1621449733074&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-discard-empty%2Fdownload%2Fpostcss-discard-empty-4.0.1.tgz",
+      "integrity": "sha1-yMlR6fc+2UKAGUWERKAq2Qu592U=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-overridden": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz?cache=0&sync_timestamp=1621449732464&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-discard-overridden%2Fdownload%2Fpostcss-discard-overridden-4.0.1.tgz",
+      "integrity": "sha1-ZSrvipZybwKfXj4AFG7npOdV/1c=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-load-config": {
+      "version": "2.1.2",
+      "resolved": "https://registry.nlark.com/postcss-load-config/download/postcss-load-config-2.1.2.tgz",
+      "integrity": "sha1-xepQTyxK7zPHNZo03jVzdyrXUCo=",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "import-cwd": "^2.0.0"
+      }
+    },
+    "postcss-loader": {
+      "version": "3.0.0",
+      "resolved": "https://registry.nlark.com/postcss-loader/download/postcss-loader-3.0.0.tgz?cache=0&sync_timestamp=1623349232324&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-loader%2Fdownload%2Fpostcss-loader-3.0.0.tgz",
+      "integrity": "sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "postcss": "^7.0.0",
+        "postcss-load-config": "^2.0.0",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "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.nlark.com/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz?cache=0&sync_timestamp=1621449731452&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-merge-longhand%2Fdownload%2Fpostcss-merge-longhand-4.0.11.tgz",
+      "integrity": "sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ=",
+      "dev": true,
+      "requires": {
+        "css-color-names": "0.0.4",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "stylehacks": "^4.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-merge-rules": {
+      "version": "4.0.3",
+      "resolved": "https://registry.nlark.com/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz?cache=0&sync_timestamp=1622234641993&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-merge-rules%2Fdownload%2Fpostcss-merge-rules-4.0.3.tgz",
+      "integrity": "sha1-NivqT/Wh+Y5AdacTxsslrv75plA=",
+      "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": {
+        "postcss-selector-parser": {
+          "version": "3.1.2",
+          "resolved": "https://registry.nlark.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1620752939806&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz",
+          "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=",
+          "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.nlark.com/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz?cache=0&sync_timestamp=1621449734134&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-minify-font-values%2Fdownload%2Fpostcss-minify-font-values-4.0.2.tgz",
+      "integrity": "sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-gradients": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz",
+      "integrity": "sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE=",
+      "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": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-params": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz?cache=0&sync_timestamp=1621449735393&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-minify-params%2Fdownload%2Fpostcss-minify-params-4.0.2.tgz",
+      "integrity": "sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ=",
+      "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": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-selectors": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz?cache=0&sync_timestamp=1621449558355&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-minify-selectors%2Fdownload%2Fpostcss-minify-selectors-4.0.2.tgz",
+      "integrity": "sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g=",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.2",
+          "resolved": "https://registry.nlark.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1620752939806&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz",
+          "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=",
+          "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.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-2.0.0.tgz?cache=0&sync_timestamp=1602588245463&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-extract-imports%2Fdownload%2Fpostcss-modules-extract-imports-2.0.0.tgz",
+      "integrity": "sha1-gYcZoa4doyX5gyRGsBE27rSTzX4=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.5"
+      }
+    },
+    "postcss-modules-local-by-default": {
+      "version": "3.0.3",
+      "resolved": "https://registry.nlark.com/postcss-modules-local-by-default/download/postcss-modules-local-by-default-3.0.3.tgz",
+      "integrity": "sha1-uxTgzHgnnVBNvcv9fgyiiZP/u7A=",
+      "dev": true,
+      "requires": {
+        "icss-utils": "^4.1.1",
+        "postcss": "^7.0.32",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.1.0"
+      }
+    },
+    "postcss-modules-scope": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-2.2.0.tgz",
+      "integrity": "sha1-OFyuATzHdD9afXYC0Qc6iequYu4=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0"
+      }
+    },
+    "postcss-modules-values": {
+      "version": "3.0.0",
+      "resolved": "https://registry.nlark.com/postcss-modules-values/download/postcss-modules-values-3.0.0.tgz",
+      "integrity": "sha1-W1AA1uuuKbQlUwG0o6VFdEI+fxA=",
+      "dev": true,
+      "requires": {
+        "icss-utils": "^4.0.0",
+        "postcss": "^7.0.6"
+      }
+    },
+    "postcss-normalize-charset": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz?cache=0&sync_timestamp=1621449558308&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-charset%2Fdownload%2Fpostcss-normalize-charset-4.0.1.tgz",
+      "integrity": "sha1-izWt067oOhNrBHHg1ZvlilAoXdQ=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-normalize-display-values": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz?cache=0&sync_timestamp=1621449652268&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-display-values%2Fdownload%2Fpostcss-normalize-display-values-4.0.2.tgz",
+      "integrity": "sha1-Db4EpM6QY9RmftK+R2u4MMglk1o=",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-positions": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz?cache=0&sync_timestamp=1621449826472&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-positions%2Fdownload%2Fpostcss-normalize-positions-4.0.2.tgz",
+      "integrity": "sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8=",
+      "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": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-repeat-style": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz?cache=0&sync_timestamp=1621449651580&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-repeat-style%2Fdownload%2Fpostcss-normalize-repeat-style-4.0.2.tgz",
+      "integrity": "sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw=",
+      "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": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-string": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz?cache=0&sync_timestamp=1621449646930&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-string%2Fdownload%2Fpostcss-normalize-string-4.0.2.tgz",
+      "integrity": "sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw=",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-timing-functions": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz?cache=0&sync_timestamp=1621449827577&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-timing-functions%2Fdownload%2Fpostcss-normalize-timing-functions-4.0.2.tgz",
+      "integrity": "sha1-jgCcoqOUnNr4rSPmtquZy159KNk=",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-unicode": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz?cache=0&sync_timestamp=1621449825612&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-unicode%2Fdownload%2Fpostcss-normalize-unicode-4.0.1.tgz",
+      "integrity": "sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs=",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-url": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz?cache=0&sync_timestamp=1623330505231&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-url%2Fdownload%2Fpostcss-normalize-url-4.0.1.tgz",
+      "integrity": "sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE=",
+      "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": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-whitespace": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz?cache=0&sync_timestamp=1621449646853&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-whitespace%2Fdownload%2Fpostcss-normalize-whitespace-4.0.2.tgz",
+      "integrity": "sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-ordered-values": {
+      "version": "4.1.2",
+      "resolved": "https://registry.nlark.com/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz?cache=0&sync_timestamp=1623330460500&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-ordered-values%2Fdownload%2Fpostcss-ordered-values-4.1.2.tgz",
+      "integrity": "sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4=",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-reduce-initial": {
+      "version": "4.0.3",
+      "resolved": "https://registry.nlark.com/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz?cache=0&sync_timestamp=1621449728984&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-reduce-initial%2Fdownload%2Fpostcss-reduce-initial-4.0.3.tgz",
+      "integrity": "sha1-f9QuvqXpyBRgljniwuhK4nC6SN8=",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-reduce-transforms": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz?cache=0&sync_timestamp=1621449730895&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-reduce-transforms%2Fdownload%2Fpostcss-reduce-transforms-4.0.2.tgz",
+      "integrity": "sha1-F++kBerMbge+NBSlyi0QdGgdTik=",
+      "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": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-selector-parser": {
+      "version": "6.0.6",
+      "resolved": "https://registry.nlark.com/postcss-selector-parser/download/postcss-selector-parser-6.0.6.tgz?cache=0&sync_timestamp=1620752939806&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-6.0.6.tgz",
+      "integrity": "sha1-LFu6gXSsL2mBq2MaQqsO5UrzMuo=",
+      "dev": true,
+      "requires": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      }
+    },
+    "postcss-svgo": {
+      "version": "4.0.3",
+      "resolved": "https://registry.nlark.com/postcss-svgo/download/postcss-svgo-4.0.3.tgz?cache=0&sync_timestamp=1622234649078&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-svgo%2Fdownload%2Fpostcss-svgo-4.0.3.tgz",
+      "integrity": "sha1-NDos26yVBdQWJD1Jb3JPOIlMlB4=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "svgo": "^1.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz",
+          "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-unique-selectors": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz?cache=0&sync_timestamp=1621449730035&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-unique-selectors%2Fdownload%2Fpostcss-unique-selectors-4.0.1.tgz",
+      "integrity": "sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w=",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "postcss": "^7.0.0",
+        "uniqs": "^2.0.0"
+      }
+    },
+    "postcss-value-parser": {
+      "version": "4.1.0",
+      "resolved": "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-4.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-4.1.0.tgz",
+      "integrity": "sha1-RD9qIM7WSBor2k+oUypuVdeJoss=",
+      "dev": true
+    },
+    "prepend-http": {
+      "version": "1.0.4",
+      "resolved": "https://registry.nlark.com/prepend-http/download/prepend-http-1.0.4.tgz",
+      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+      "dev": true
+    },
+    "prettier": {
+      "version": "1.19.1",
+      "resolved": "https://registry.nlark.com/prettier/download/prettier-1.19.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fprettier%2Fdownload%2Fprettier-1.19.1.tgz",
+      "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=",
+      "dev": true,
+      "optional": true
+    },
+    "pretty-error": {
+      "version": "2.1.2",
+      "resolved": "https://registry.nlark.com/pretty-error/download/pretty-error-2.1.2.tgz?cache=0&sync_timestamp=1623342856801&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpretty-error%2Fdownload%2Fpretty-error-2.1.2.tgz",
+      "integrity": "sha1-von4LYGxyG7I/fvDhQRYgnJ/k7Y=",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.20",
+        "renderkid": "^2.0.4"
+      }
+    },
+    "process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "dev": true
+    },
+    "process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=",
+      "dev": true
+    },
+    "promise-inflight": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/promise-inflight/download/promise-inflight-1.0.1.tgz",
+      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+      "dev": true
+    },
+    "proxy-addr": {
+      "version": "2.0.7",
+      "resolved": "https://registry.nlark.com/proxy-addr/download/proxy-addr-2.0.7.tgz",
+      "integrity": "sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU=",
+      "dev": true,
+      "requires": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      }
+    },
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/prr/download/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
+    },
+    "psl": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz",
+      "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=",
+      "dev": true
+    },
+    "public-encrypt": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz",
+      "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=",
+      "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.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+          "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+          "dev": true
+        }
+      }
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz",
+      "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "pumpify": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz",
+      "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=",
+      "dev": true,
+      "requires": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      },
+      "dependencies": {
+        "pump": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz",
+          "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=",
+          "dev": true,
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        }
+      }
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.nlark.com/punycode/download/punycode-2.1.1.tgz",
+      "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew="
+    },
+    "q": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz?cache=0&sync_timestamp=1599054212574&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fq%2Fdownload%2Fq-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true
+    },
+    "qs": {
+      "version": "6.11.1",
+      "resolved": "http://121.41.110.30:4873/qs/-/qs-6.11.1.tgz",
+      "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==",
+      "requires": {
+        "side-channel": "^1.0.4"
+      }
+    },
+    "query-string": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz",
+      "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      }
+    },
+    "querystring": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz?cache=0&sync_timestamp=1613399913000&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquerystring%2Fdownload%2Fquerystring-0.2.0.tgz",
+      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+      "dev": true
+    },
+    "querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "https://registry.nlark.com/querystring-es3/download/querystring-es3-0.2.1.tgz",
+      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+      "dev": true
+    },
+    "querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.2.0.tgz",
+      "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=",
+      "dev": true
+    },
+    "randombytes": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",
+      "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "randomfill": {
+      "version": "1.0.4",
+      "resolved": "https://registry.nlark.com/randomfill/download/randomfill-1.0.4.tgz",
+      "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz",
+      "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.nlark.com/raw-body/download/raw-body-2.4.0.tgz",
+      "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      }
+    },
+    "read-pkg": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-5.2.0.tgz",
+      "integrity": "sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=",
+      "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"
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.7",
+      "resolved": "https://registry.nlark.com/readable-stream/download/readable-stream-2.3.7.tgz",
+      "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
+      "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"
+      }
+    },
+    "readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.nlark.com/readdirp/download/readdirp-3.6.0.tgz",
+      "integrity": "sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc=",
+      "requires": {
+        "picomatch": "^2.2.1"
+      }
+    },
+    "regenerate": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.2.tgz?cache=0&sync_timestamp=1604218353677&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerate%2Fdownload%2Fregenerate-1.4.2.tgz",
+      "integrity": "sha1-uTRtiCfo9aMve6KWN9OYtpAUhIo=",
+      "dev": true
+    },
+    "regenerate-unicode-properties": {
+      "version": "8.2.0",
+      "resolved": "https://registry.nlark.com/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz",
+      "integrity": "sha1-5d5xEdZV57pgwFfb6f83yH5lzew=",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.4.0"
+      }
+    },
+    "regenerator-runtime": {
+      "version": "0.13.7",
+      "resolved": "https://registry.nlark.com/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz",
+      "integrity": "sha1-ysLazIoepnX+qrrriugziYrkb1U="
+    },
+    "regenerator-transform": {
+      "version": "0.14.5",
+      "resolved": "https://registry.nlark.com/regenerator-transform/download/regenerator-transform-0.14.5.tgz",
+      "integrity": "sha1-yY2hVGg2ccnE3LFuznNlF+G3/rQ=",
+      "dev": true,
+      "requires": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "regex-not": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/regex-not/download/regex-not-1.0.2.tgz",
+      "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "regexp.prototype.flags": {
+      "version": "1.3.1",
+      "resolved": "https://registry.nlark.com/regexp.prototype.flags/download/regexp.prototype.flags-1.3.1.tgz",
+      "integrity": "sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY=",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "regexpu-core": {
+      "version": "4.7.1",
+      "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.7.1.tgz?cache=0&sync_timestamp=1600413461940&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.7.1.tgz",
+      "integrity": "sha1-LepamgcjMpj78NuR+pq8TG4PitY=",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.4.0",
+        "regenerate-unicode-properties": "^8.2.0",
+        "regjsgen": "^0.5.1",
+        "regjsparser": "^0.6.4",
+        "unicode-match-property-ecmascript": "^1.0.4",
+        "unicode-match-property-value-ecmascript": "^1.2.0"
+      }
+    },
+    "regjsgen": {
+      "version": "0.5.2",
+      "resolved": "https://registry.nlark.com/regjsgen/download/regjsgen-0.5.2.tgz",
+      "integrity": "sha1-kv8pX7He7L9uzaslQ9IH6RqjNzM=",
+      "dev": true
+    },
+    "regjsparser": {
+      "version": "0.6.9",
+      "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.9.tgz",
+      "integrity": "sha1-tInu98mizkNydicBFCnPgzpxg+Y=",
+      "dev": true,
+      "requires": {
+        "jsesc": "~0.5.0"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "0.5.0",
+          "resolved": "https://registry.nlark.com/jsesc/download/jsesc-0.5.0.tgz",
+          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+          "dev": true
+        }
+      }
+    },
+    "relateurl": {
+      "version": "0.2.7",
+      "resolved": "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz",
+      "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+      "dev": true
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "dev": true
+    },
+    "renderkid": {
+      "version": "2.0.7",
+      "resolved": "https://registry.nlark.com/renderkid/download/renderkid-2.0.7.tgz",
+      "integrity": "sha1-Rk8namvc7mBvShWZP5sp/HTKhgk=",
+      "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.nlark.com/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "css-select": {
+          "version": "4.1.3",
+          "resolved": "https://registry.nlark.com/css-select/download/css-select-4.1.3.tgz?cache=0&sync_timestamp=1622994276976&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-select%2Fdownload%2Fcss-select-4.1.3.tgz",
+          "integrity": "sha1-pwRA9wMX8maRGK10/xBeZYSccGc=",
+          "dev": true,
+          "requires": {
+            "boolbase": "^1.0.0",
+            "css-what": "^5.0.0",
+            "domhandler": "^4.2.0",
+            "domutils": "^2.6.0",
+            "nth-check": "^2.0.0"
+          }
+        },
+        "css-what": {
+          "version": "5.0.1",
+          "resolved": "https://registry.nlark.com/css-what/download/css-what-5.0.1.tgz?cache=0&sync_timestamp=1622227051808&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-what%2Fdownload%2Fcss-what-5.0.1.tgz",
+          "integrity": "sha1-PvqCATH0ZpqKwkCPnDLnx96fTK0=",
+          "dev": true
+        },
+        "dom-serializer": {
+          "version": "1.3.2",
+          "resolved": "https://registry.nlark.com/dom-serializer/download/dom-serializer-1.3.2.tgz?cache=0&sync_timestamp=1621256830355&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdom-serializer%2Fdownload%2Fdom-serializer-1.3.2.tgz",
+          "integrity": "sha1-YgZDfTLO767HFhgDIwx6ILwbTZE=",
+          "dev": true,
+          "requires": {
+            "domelementtype": "^2.0.1",
+            "domhandler": "^4.2.0",
+            "entities": "^2.0.0"
+          }
+        },
+        "domelementtype": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.2.0.tgz?cache=0&sync_timestamp=1617298554829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.2.0.tgz",
+          "integrity": "sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=",
+          "dev": true
+        },
+        "domutils": {
+          "version": "2.7.0",
+          "resolved": "https://registry.nlark.com/domutils/download/domutils-2.7.0.tgz",
+          "integrity": "sha1-jrrwxB66/PVbC3LsMcVjI3EsVEI=",
+          "dev": true,
+          "requires": {
+            "dom-serializer": "^1.0.1",
+            "domelementtype": "^2.2.0",
+            "domhandler": "^4.2.0"
+          }
+        },
+        "nth-check": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/nth-check/download/nth-check-2.0.0.tgz",
+          "integrity": "sha1-G7T22scAcvwxPoyc0UF7UHTAoSU=",
+          "dev": true,
+          "requires": {
+            "boolbase": "^1.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        }
+      }
+    },
+    "repeat-element": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.4.tgz",
+      "integrity": "sha1-vmgVIIR6tYx1aKx1+/rSjtQtOek=",
+      "dev": true
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+      "dev": true
+    },
+    "request": {
+      "version": "2.88.2",
+      "resolved": "https://registry.nlark.com/request/download/request-2.88.2.tgz",
+      "integrity": "sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM=",
+      "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": "http://121.41.110.30:4873/qs/-/qs-6.5.3.tgz",
+          "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+          "dev": true
+        }
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.nlark.com/require-directory/download/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz",
+      "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=",
+      "dev": true
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+      "dev": true
+    },
+    "resolve": {
+      "version": "1.20.0",
+      "resolved": "https://registry.nlark.com/resolve/download/resolve-1.20.0.tgz",
+      "integrity": "sha1-YpoBP7P3B1XW8LeTXMHCxTeLGXU=",
+      "dev": true,
+      "requires": {
+        "is-core-module": "^2.2.0",
+        "path-parse": "^1.0.6"
+      }
+    },
+    "resolve-cwd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/resolve-cwd/download/resolve-cwd-2.0.0.tgz",
+      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "resolve-from": {
+      "version": "3.0.0",
+      "resolved": "https://registry.nlark.com/resolve-from/download/resolve-from-3.0.0.tgz",
+      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+      "dev": true
+    },
+    "resolve-url": {
+      "version": "0.2.1",
+      "resolved": "https://registry.nlark.com/resolve-url/download/resolve-url-0.2.1.tgz",
+      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+      "dev": true
+    },
+    "restore-cursor": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/restore-cursor/download/restore-cursor-2.0.0.tgz",
+      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+      "dev": true,
+      "requires": {
+        "onetime": "^2.0.0",
+        "signal-exit": "^3.0.2"
+      }
+    },
+    "ret": {
+      "version": "0.1.15",
+      "resolved": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz",
+      "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=",
+      "dev": true
+    },
+    "retry": {
+      "version": "0.12.0",
+      "resolved": "https://registry.nlark.com/retry/download/retry-0.12.0.tgz",
+      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+      "dev": true
+    },
+    "rgb-regex": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz",
+      "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=",
+      "dev": true
+    },
+    "rgba-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz",
+      "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz",
+      "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "ripemd160": {
+      "version": "2.0.2",
+      "resolved": "https://registry.nlark.com/ripemd160/download/ripemd160-2.0.2.tgz",
+      "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "run-queue": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz",
+      "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
+      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=",
+      "dev": true
+    },
+    "safe-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/safe-regex/download/safe-regex-1.1.0.tgz",
+      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "dev": true,
+      "requires": {
+        "ret": "~0.1.10"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz",
+      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=",
+      "dev": true
+    },
+    "sass": {
+      "version": "1.26.8",
+      "resolved": "https://registry.npmmirror.com/sass/-/sass-1.26.8.tgz",
+      "integrity": "sha512-yvtzyrKLGiXQu7H12ekXqsfoGT/aTKeMDyVzCB675k1HYuaj0py63i8Uf4SI9CHXj6apDhpfwbUr3gGOjdpu2Q==",
+      "requires": {
+        "chokidar": ">=2.0.0 <4.0.0"
+      }
+    },
+    "sass-loader": {
+      "version": "8.0.2",
+      "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-8.0.2.tgz",
+      "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==",
+      "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"
+      }
+    },
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz",
+      "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=",
+      "dev": true
+    },
+    "schema-utils": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.7.1.tgz",
+      "integrity": "sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=",
+      "requires": {
+        "@types/json-schema": "^7.0.5",
+        "ajv": "^6.12.4",
+        "ajv-keywords": "^3.5.2"
+      }
+    },
+    "select-hose": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/select-hose/download/select-hose-2.0.0.tgz",
+      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+      "dev": true
+    },
+    "selfsigned": {
+      "version": "1.10.11",
+      "resolved": "https://registry.nlark.com/selfsigned/download/selfsigned-1.10.11.tgz",
+      "integrity": "sha1-JJKc2Qb+D0S20B+yOZmnOVN6y+k=",
+      "dev": true,
+      "requires": {
+        "node-forge": "^0.10.0"
+      }
+    },
+    "semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.nlark.com/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1618847119601&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz",
+      "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0="
+    },
+    "send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz",
+      "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.nlark.com/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.0.0",
+              "resolved": "https://registry.nlark.com/ms/download/ms-2.0.0.tgz",
+              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+              "dev": true
+            }
+          }
+        },
+        "mime": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1615984369368&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz",
+          "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
+          "dev": true
+        },
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.nlark.com/ms/download/ms-2.1.1.tgz",
+          "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=",
+          "dev": true
+        }
+      }
+    },
+    "serialize-javascript": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-4.0.0.tgz?cache=0&sync_timestamp=1599740650381&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-4.0.0.tgz",
+      "integrity": "sha1-tSXhI4SJpez8Qq+sw/6Z5mb0sao=",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "serve-index": {
+      "version": "1.9.1",
+      "resolved": "https://registry.nlark.com/serve-index/download/serve-index-1.9.1.tgz",
+      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+      "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.nlark.com/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "http-errors": {
+          "version": "1.6.3",
+          "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz",
+          "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+          "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.nlark.com/inherits/download/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "setprototypeof": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz",
+          "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=",
+          "dev": true
+        }
+      }
+    },
+    "serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserve-static%2Fdownload%2Fserve-static-1.14.1.tgz",
+      "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=",
+      "dev": true,
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/set-blocking/download/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+      "dev": true
+    },
+    "set-value": {
+      "version": "2.0.1",
+      "resolved": "https://registry.nlark.com/set-value/download/set-value-2.0.1.tgz",
+      "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=",
+      "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.nlark.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "setimmediate": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+      "dev": true
+    },
+    "setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz",
+      "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=",
+      "dev": true
+    },
+    "sha.js": {
+      "version": "2.4.11",
+      "resolved": "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz",
+      "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "shallow-clone": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz",
+      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+      "requires": {
+        "kind-of": "^6.0.2"
+      }
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+      "dev": true
+    },
+    "shell-quote": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npm.taobao.org/shell-quote/download/shell-quote-1.7.2.tgz",
+      "integrity": "sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I=",
+      "dev": true
+    },
+    "side-channel": {
+      "version": "1.0.4",
+      "resolved": "http://121.41.110.30:4873/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.3",
+      "resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz?cache=0&sync_timestamp=1614858571178&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.3.tgz",
+      "integrity": "sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=",
+      "dev": true
+    },
+    "simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.nlark.com/simple-swizzle/download/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.3.1"
+      },
+      "dependencies": {
+        "is-arrayish": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz",
+          "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM=",
+          "dev": true
+        }
+      }
+    },
+    "slash": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/slash/download/slash-1.0.0.tgz",
+      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+      "dev": true
+    },
+    "snapdragon": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz",
+      "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
+      "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.nlark.com/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.nlark.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz",
+      "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=",
+      "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.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.nlark.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.nlark.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "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.nlark.com/snapdragon-util/download/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.2.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.nlark.com/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "sockjs": {
+      "version": "0.3.21",
+      "resolved": "https://registry.nlark.com/sockjs/download/sockjs-0.3.21.tgz",
+      "integrity": "sha1-s0/7mOeWkwtgoM+hGQTWozmn1Bc=",
+      "dev": true,
+      "requires": {
+        "faye-websocket": "^0.11.3",
+        "uuid": "^3.4.0",
+        "websocket-driver": "^0.7.4"
+      }
+    },
+    "sockjs-client": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.5.1.tgz?cache=0&sync_timestamp=1616686717128&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs-client%2Fdownload%2Fsockjs-client-1.5.1.tgz",
+      "integrity": "sha1-JWkI9tWt+5Tau9vQLGY2LMoPnqY=",
+      "dev": true,
+      "requires": {
+        "debug": "^3.2.6",
+        "eventsource": "^1.0.7",
+        "faye-websocket": "^0.11.3",
+        "inherits": "^2.0.4",
+        "json3": "^3.3.3",
+        "url-parse": "^1.5.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.nlark.com/debug/download/debug-3.2.7.tgz",
+          "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "sort-keys": {
+      "version": "1.1.2",
+      "resolved": "https://registry.nlark.com/sort-keys/download/sort-keys-1.1.2.tgz",
+      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+      "dev": true,
+      "requires": {
+        "is-plain-obj": "^1.0.0"
+      },
+      "dependencies": {
+        "is-plain-obj": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz?cache=0&sync_timestamp=1618600489644&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-obj%2Fdownload%2Fis-plain-obj-1.1.0.tgz",
+          "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+          "dev": true
+        }
+      }
+    },
+    "source-list-map": {
+      "version": "2.0.1",
+      "resolved": "https://registry.nlark.com/source-list-map/download/source-list-map-2.0.1.tgz",
+      "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=",
+      "dev": true
+    },
+    "source-map": {
+      "version": "0.5.7",
+      "resolved": "https://registry.nlark.com/source-map/download/source-map-0.5.7.tgz",
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+      "dev": true
+    },
+    "source-map-resolve": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.3.tgz",
+      "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=",
+      "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.19",
+      "resolved": "https://registry.nlark.com/source-map-support/download/source-map-support-0.5.19.tgz",
+      "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "source-map-url": {
+      "version": "0.4.1",
+      "resolved": "https://registry.nlark.com/source-map-url/download/source-map-url-0.4.1.tgz",
+      "integrity": "sha1-CvZmBadFpaL5HPG7+KevvCg97FY=",
+      "dev": true
+    },
+    "spdx-correct": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.1.tgz",
+      "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=",
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.3.0",
+      "resolved": "https://registry.nlark.com/spdx-exceptions/download/spdx-exceptions-2.3.0.tgz",
+      "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=",
+      "dev": true
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.1.tgz",
+      "integrity": "sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=",
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.9",
+      "resolved": "https://registry.nlark.com/spdx-license-ids/download/spdx-license-ids-3.0.9.tgz?cache=0&sync_timestamp=1621652583280&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fspdx-license-ids%2Fdownload%2Fspdx-license-ids-3.0.9.tgz",
+      "integrity": "sha1-illRNd75WSvaaXCUdPHL7qfCRn8=",
+      "dev": true
+    },
+    "spdy": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/spdy/download/spdy-4.0.2.tgz",
+      "integrity": "sha1-t09GYgOj7aRSwCSSuR+56EonZ3s=",
+      "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.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz",
+      "integrity": "sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=",
+      "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.nlark.com/readable-stream/download/readable-stream-3.6.0.tgz",
+          "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
+          "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.npm.taobao.org/split-string/download/split-string-3.1.0.tgz",
+      "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.0"
+      }
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.nlark.com/sprintf-js/download/sprintf-js-1.0.3.tgz?cache=0&sync_timestamp=1618847174560&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsprintf-js%2Fdownload%2Fsprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "sshpk": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
+      "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=",
+      "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": "6.0.2",
+      "resolved": "https://registry.nlark.com/ssri/download/ssri-6.0.2.tgz?cache=0&sync_timestamp=1621364626710&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fssri%2Fdownload%2Fssri-6.0.2.tgz",
+      "integrity": "sha1-FXk5E08gRk5zAd26PpD/qPdyisU=",
+      "dev": true,
+      "requires": {
+        "figgy-pudding": "^3.5.1"
+      }
+    },
+    "stable": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz",
+      "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=",
+      "dev": true
+    },
+    "stackframe": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/stackframe/download/stackframe-1.2.0.tgz",
+      "integrity": "sha1-UkKUktY8YuuYmATBFVLj0i53kwM=",
+      "dev": true
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz",
+      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "dev": true,
+      "requires": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+      "dev": true
+    },
+    "stream-browserify": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz",
+      "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "stream-each": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz",
+      "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "stream-http": {
+      "version": "2.8.3",
+      "resolved": "https://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz?cache=0&sync_timestamp=1618430946341&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstream-http%2Fdownload%2Fstream-http-2.8.3.tgz",
+      "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=",
+      "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.npm.taobao.org/stream-shift/download/stream-shift-1.0.1.tgz",
+      "integrity": "sha1-1wiCgVWasneEJCebCHfaPDktWj0=",
+      "dev": true
+    },
+    "strict-uri-encode": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz",
+      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+      "dev": true
+    },
+    "string-width": {
+      "version": "2.1.1",
+      "resolved": "https://registry.nlark.com/string-width/download/string-width-2.1.1.tgz",
+      "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+      "dev": true,
+      "requires": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        }
+      }
+    },
+    "string.prototype.trimend": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.4.tgz?cache=0&sync_timestamp=1614127461586&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimend%2Fdownload%2Fstring.prototype.trimend-1.0.4.tgz",
+      "integrity": "sha1-51rpDClCxjUEaGwYsoe0oLGkX4A=",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "string.prototype.trimstart": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.4.tgz?cache=0&sync_timestamp=1614127357785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimstart%2Fdownload%2Fstring.prototype.trimstart-1.0.4.tgz",
+      "integrity": "sha1-s2OZr0qymZtMnGSL16P7K7Jv7u0=",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz",
+      "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "strip-ansi": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-6.0.0.tgz",
+      "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^5.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.0",
+          "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-5.0.0.tgz",
+          "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=",
+          "dev": true
+        }
+      }
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/strip-eof/download/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+      "dev": true
+    },
+    "strip-final-newline": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/strip-final-newline/download/strip-final-newline-2.0.0.tgz?cache=0&sync_timestamp=1620046435959&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstrip-final-newline%2Fdownload%2Fstrip-final-newline-2.0.0.tgz",
+      "integrity": "sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=",
+      "dev": true
+    },
+    "stylehacks": {
+      "version": "4.0.3",
+      "resolved": "https://registry.nlark.com/stylehacks/download/stylehacks-4.0.3.tgz?cache=0&sync_timestamp=1621449652268&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstylehacks%2Fdownload%2Fstylehacks-4.0.3.tgz",
+      "integrity": "sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU=",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.2",
+          "resolved": "https://registry.nlark.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1620752939806&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz",
+          "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=",
+          "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.nlark.com/supports-color/download/supports-color-5.5.0.tgz?cache=0&sync_timestamp=1622293670728&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz",
+      "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "svg-tags": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/svg-tags/download/svg-tags-1.0.0.tgz",
+      "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
+      "dev": true
+    },
+    "svgo": {
+      "version": "1.3.2",
+      "resolved": "https://registry.nlark.com/svgo/download/svgo-1.3.2.tgz",
+      "integrity": "sha1-ttxRHAYzRsnkFbgeQ0ARRbltQWc=",
+      "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"
+      }
+    },
+    "tapable": {
+      "version": "1.1.3",
+      "resolved": "https://registry.nlark.com/tapable/download/tapable-1.1.3.tgz",
+      "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=",
+      "dev": true
+    },
+    "terser": {
+      "version": "4.8.0",
+      "resolved": "https://registry.nlark.com/terser/download/terser-4.8.0.tgz",
+      "integrity": "sha1-YwVjQ9fHC7KfOvZlhlpG/gOg3xc=",
+      "dev": true,
+      "requires": {
+        "commander": "^2.20.0",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.12"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "terser-webpack-plugin": {
+      "version": "1.4.5",
+      "resolved": "https://registry.nlark.com/terser-webpack-plugin/download/terser-webpack-plugin-1.4.5.tgz",
+      "integrity": "sha1-oheu+uozDnNP+sthIOwfoxLWBAs=",
+      "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": {
+        "find-cache-dir": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz",
+          "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=",
+          "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.nlark.com/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1618846778775&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz",
+          "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+          "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "make-dir": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz",
+          "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
+          "dev": true,
+          "requires": {
+            "pify": "^4.0.1",
+            "semver": "^5.6.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.nlark.com/p-locate/download/p-locate-3.0.0.tgz",
+          "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.nlark.com/path-exists/download/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "dev": true
+        },
+        "pkg-dir": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz",
+          "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
+          "dev": true,
+          "requires": {
+            "find-up": "^3.0.0"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "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.nlark.com/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1618847119601&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+          "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "thenify": {
+      "version": "3.3.1",
+      "resolved": "https://registry.nlark.com/thenify/download/thenify-3.3.1.tgz",
+      "integrity": "sha1-iTLmhqQGYDigFt2eLKRq3Zg4qV8=",
+      "dev": true,
+      "requires": {
+        "any-promise": "^1.0.0"
+      }
+    },
+    "thenify-all": {
+      "version": "1.6.0",
+      "resolved": "https://registry.nlark.com/thenify-all/download/thenify-all-1.6.0.tgz",
+      "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
+      "dev": true,
+      "requires": {
+        "thenify": ">= 3.1.0 < 4"
+      }
+    },
+    "thread-loader": {
+      "version": "2.1.3",
+      "resolved": "https://registry.nlark.com/thread-loader/download/thread-loader-2.1.3.tgz",
+      "integrity": "sha1-y9LBOfwrLebp0o9iKGq3cMGsvdo=",
+      "dev": true,
+      "requires": {
+        "loader-runner": "^2.3.1",
+        "loader-utils": "^1.1.0",
+        "neo-async": "^2.6.0"
+      }
+    },
+    "through2": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz",
+      "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=",
+      "dev": true,
+      "requires": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
+    "thunky": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/thunky/download/thunky-1.1.0.tgz",
+      "integrity": "sha1-Wrr3FKlAXbBQRzK7zNLO3Z75U30=",
+      "dev": true
+    },
+    "timers-browserify": {
+      "version": "2.0.12",
+      "resolved": "https://registry.nlark.com/timers-browserify/download/timers-browserify-2.0.12.tgz",
+      "integrity": "sha1-RKRcEfv0B/NPl7zNFXfGUjYbAO4=",
+      "dev": true,
+      "requires": {
+        "setimmediate": "^1.0.4"
+      }
+    },
+    "timsort": {
+      "version": "0.3.0",
+      "resolved": "https://registry.nlark.com/timsort/download/timsort-0.3.0.tgz",
+      "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
+      "dev": true
+    },
+    "to-arraybuffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz",
+      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+      "dev": true
+    },
+    "to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/to-fast-properties/download/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+      "dev": true
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "resolved": "https://registry.nlark.com/to-object-path/download/to-object-path-0.3.0.tgz",
+      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.nlark.com/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "to-regex": {
+      "version": "3.0.2",
+      "resolved": "https://registry.nlark.com/to-regex/download/to-regex-3.0.2.tgz",
+      "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
+      "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.nlark.com/to-regex-range/download/to-regex-range-2.1.1.tgz",
+      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      }
+    },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz",
+      "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=",
+      "dev": true
+    },
+    "toposort": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz",
+      "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
+      "dev": true
+    },
+    "tough-cookie": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz",
+      "integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=",
+      "dev": true,
+      "requires": {
+        "psl": "^1.1.28",
+        "punycode": "^2.1.1"
+      }
+    },
+    "tryer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/tryer/download/tryer-1.0.1.tgz",
+      "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=",
+      "dev": true
+    },
+    "ts-pnp": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/ts-pnp/download/ts-pnp-1.2.0.tgz",
+      "integrity": "sha1-pQCtCEsHmPHDBxrzkeZZEshrypI=",
+      "dev": true
+    },
+    "tslib": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
+      "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
+    },
+    "tty-browserify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz",
+      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+      "dev": true
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.nlark.com/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "dev": true
+    },
+    "type-fest": {
+      "version": "0.6.0",
+      "resolved": "https://registry.nlark.com/type-fest/download/type-fest-0.6.0.tgz",
+      "integrity": "sha1-jSojcNPfiG61yQraHFv2GIrPg4s=",
+      "dev": true
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.nlark.com/type-is/download/type-is-1.6.18.tgz",
+      "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=",
+      "dev": true,
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      }
+    },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "dev": true
+    },
+    "uglify-js": {
+      "version": "3.4.10",
+      "resolved": "https://registry.nlark.com/uglify-js/download/uglify-js-3.4.10.tgz",
+      "integrity": "sha1-mtlWPY6zrN+404WX0q8dgV9qdV8=",
+      "dev": true,
+      "requires": {
+        "commander": "~2.19.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.19.0",
+          "resolved": "https://registry.nlark.com/commander/download/commander-2.19.0.tgz?cache=0&sync_timestamp=1622954231534&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.19.0.tgz",
+          "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "unbox-primitive": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/unbox-primitive/download/unbox-primitive-1.0.1.tgz",
+      "integrity": "sha1-CF4hViXsMWJXTciFmr7nilmxRHE=",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1",
+        "has-bigints": "^1.0.1",
+        "has-symbols": "^1.0.2",
+        "which-boxed-primitive": "^1.0.2"
+      }
+    },
+    "unicode-canonical-property-names-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "https://registry.nlark.com/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+      "integrity": "sha1-JhmADEyCWADv3YNDr33Zkzy+KBg=",
+      "dev": true
+    },
+    "unicode-match-property-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "https://registry.nlark.com/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz",
+      "integrity": "sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw=",
+      "dev": true,
+      "requires": {
+        "unicode-canonical-property-names-ecmascript": "^1.0.4",
+        "unicode-property-aliases-ecmascript": "^1.0.4"
+      }
+    },
+    "unicode-match-property-value-ecmascript": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.2.0.tgz",
+      "integrity": "sha1-DZH2AO7rMJaqlisdb8iIduZOpTE=",
+      "dev": true
+    },
+    "unicode-property-aliases-ecmascript": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.1.0.tgz",
+      "integrity": "sha1-3Vepn2IHvt/0Yoq++5TFDblByPQ=",
+      "dev": true
+    },
+    "union-value": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/union-value/download/union-value-1.0.1.tgz",
+      "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=",
+      "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.nlark.com/uniq/download/uniq-1.0.1.tgz",
+      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+      "dev": true
+    },
+    "uniqs": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz",
+      "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+      "dev": true
+    },
+    "unique-filename": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz",
+      "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=",
+      "dev": true,
+      "requires": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "unique-slug": {
+      "version": "2.0.2",
+      "resolved": "https://registry.nlark.com/unique-slug/download/unique-slug-2.0.2.tgz",
+      "integrity": "sha1-uqvOkQg/xk6UWw861hPiZPfNTmw=",
+      "dev": true,
+      "requires": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "universalify": {
+      "version": "0.1.2",
+      "resolved": "https://registry.nlark.com/universalify/download/universalify-0.1.2.tgz",
+      "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=",
+      "dev": true
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true
+    },
+    "unquote": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/unquote/download/unquote-1.1.1.tgz",
+      "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
+      "dev": true
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/unset-value/download/unset-value-1.0.0.tgz",
+      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "dev": true,
+      "requires": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "resolved": "https://registry.nlark.com/has-value/download/has-value-0.3.1.tgz",
+          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+          "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.npm.taobao.org/isobject/download/isobject-2.1.0.tgz",
+              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+              "dev": true,
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
+          }
+        },
+        "has-values": {
+          "version": "0.1.4",
+          "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz",
+          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+          "dev": true
+        }
+      }
+    },
+    "upath": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz",
+      "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=",
+      "dev": true
+    },
+    "upper-case": {
+      "version": "1.1.3",
+      "resolved": "https://registry.nlark.com/upper-case/download/upper-case-1.1.3.tgz",
+      "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+      "dev": true
+    },
+    "uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.4.1.tgz?cache=0&sync_timestamp=1610237624359&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furi-js%2Fdownload%2Furi-js-4.4.1.tgz",
+      "integrity": "sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=",
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "urix": {
+      "version": "0.1.0",
+      "resolved": "https://registry.nlark.com/urix/download/urix-0.1.0.tgz",
+      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+      "dev": true
+    },
+    "url": {
+      "version": "0.11.0",
+      "resolved": "https://registry.nlark.com/url/download/url-0.11.0.tgz?cache=0&sync_timestamp=1618847135337&other_urls=https%3A%2F%2Fregistry.nlark.com%2Furl%2Fdownload%2Furl-0.11.0.tgz",
+      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "dev": true,
+      "requires": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.3.2",
+          "resolved": "https://registry.nlark.com/punycode/download/punycode-1.3.2.tgz",
+          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+          "dev": true
+        }
+      }
+    },
+    "url-loader": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/url-loader/download/url-loader-2.3.0.tgz?cache=0&sync_timestamp=1602252626029&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-loader%2Fdownload%2Furl-loader-2.3.0.tgz",
+      "integrity": "sha1-4OLvZY8APvuMpBsPP/v3a6uIZYs=",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.2.3",
+        "mime": "^2.4.4",
+        "schema-utils": "^2.5.0"
+      }
+    },
+    "url-parse": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.5.1.tgz?cache=0&sync_timestamp=1613659652440&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-parse%2Fdownload%2Furl-parse-1.5.1.tgz",
+      "integrity": "sha1-1fqYkK+KXh8nSiyYN2UQ9kJfbjs=",
+      "dev": true,
+      "requires": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "use": {
+      "version": "3.1.1",
+      "resolved": "https://registry.nlark.com/use/download/use-3.1.1.tgz",
+      "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=",
+      "dev": true
+    },
+    "util": {
+      "version": "0.11.1",
+      "resolved": "https://registry.nlark.com/util/download/util-0.11.1.tgz?cache=0&sync_timestamp=1622212984161&other_urls=https%3A%2F%2Fregistry.nlark.com%2Futil%2Fdownload%2Futil-0.11.1.tgz",
+      "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=",
+      "dev": true,
+      "requires": {
+        "inherits": "2.0.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.nlark.com/inherits/download/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        }
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/util-deprecate/download/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "util.promisify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz?cache=0&sync_timestamp=1610159895694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil.promisify%2Fdownload%2Futil.promisify-1.0.1.tgz",
+      "integrity": "sha1-a693dLgO6w91INi4HQeYKlmruu4=",
+      "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.nlark.com/utila/download/utila-0.4.0.tgz",
+      "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
+      "dev": true
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/utils-merge/download/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true
+    },
+    "uuid": {
+      "version": "3.4.0",
+      "resolved": "https://registry.nlark.com/uuid/download/uuid-3.4.0.tgz?cache=0&sync_timestamp=1622213136953&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fuuid%2Fdownload%2Fuuid-3.4.0.tgz",
+      "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=",
+      "dev": true
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.4",
+      "resolved": "https://registry.nlark.com/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=",
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "vant": {
+      "version": "2.12.23",
+      "resolved": "https://registry.npmjs.org/vant/-/vant-2.12.23.tgz",
+      "integrity": "sha512-9Ph9dS/XEWeU1TqH4exIs3gPTq8qfTG3ceOTvUGw46dic0uzoYepX736ssBNwGIe8hs0NbKwEGWq8j8XUcRQeA==",
+      "requires": {
+        "@babel/runtime": "7.x",
+        "@vant/icons": "^1.5.3",
+        "@vant/popperjs": "^1.0.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "vue-lazyload": "1.2.3"
+      }
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.nlark.com/vary/download/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "dev": true
+    },
+    "vendors": {
+      "version": "1.0.4",
+      "resolved": "https://registry.nlark.com/vendors/download/vendors-1.0.4.tgz",
+      "integrity": "sha1-4rgApT56Kbk1BsPPQRANFsTErY4=",
+      "dev": true
+    },
+    "verror": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "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.nlark.com/vm-browserify/download/vm-browserify-1.1.2.tgz",
+      "integrity": "sha1-eGQcSIuObKkadfUR56OzKobl3aA=",
+      "dev": true
+    },
+    "vue": {
+      "version": "2.6.14",
+      "resolved": "https://registry.nlark.com/vue/download/vue-2.6.14.tgz",
+      "integrity": "sha1-5RqlJQJQ1Wmj+606ilpofWA24jU="
+    },
+    "vue-hot-reload-api": {
+      "version": "2.3.4",
+      "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz",
+      "integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=",
+      "dev": true
+    },
+    "vue-lazyload": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/vue-lazyload/-/vue-lazyload-1.2.3.tgz",
+      "integrity": "sha512-DC0ZwxanbRhx79tlA3zY5OYJkH8FYp3WBAnAJbrcuoS8eye1P73rcgAZhyxFSPUluJUTelMB+i/+VkNU/qVm7g=="
+    },
+    "vue-loader": {
+      "version": "15.9.7",
+      "resolved": "https://registry.nlark.com/vue-loader/download/vue-loader-15.9.7.tgz",
+      "integrity": "sha1-FbBXdcPgw4QHZ5OTws5t9nOwEEQ=",
+      "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.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz",
+          "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
+          "dev": true
+        }
+      }
+    },
+    "vue-router": {
+      "version": "3.5.1",
+      "resolved": "https://registry.nlark.com/vue-router/download/vue-router-3.5.1.tgz?cache=0&sync_timestamp=1623832754570&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-router%2Fdownload%2Fvue-router-3.5.1.tgz",
+      "integrity": "sha1-7fPPSQeVLR4Fg+B5I3Igxf9utsk="
+    },
+    "vue-style-loader": {
+      "version": "4.1.3",
+      "resolved": "https://registry.nlark.com/vue-style-loader/download/vue-style-loader-4.1.3.tgz",
+      "integrity": "sha1-bVWGOlH6dXqyTonZNxRlByqnvDU=",
+      "dev": true,
+      "requires": {
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.0.2"
+      },
+      "dependencies": {
+        "hash-sum": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz",
+          "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
+          "dev": true
+        }
+      }
+    },
+    "vue-template-compiler": {
+      "version": "2.6.14",
+      "resolved": "https://registry.nlark.com/vue-template-compiler/download/vue-template-compiler-2.6.14.tgz?cache=0&sync_timestamp=1623059640396&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-template-compiler%2Fdownload%2Fvue-template-compiler-2.6.14.tgz",
+      "integrity": "sha1-ovDn2YVnDULJye4NBE/tdpD092M=",
+      "dev": true,
+      "requires": {
+        "de-indent": "^1.0.2",
+        "he": "^1.1.0"
+      }
+    },
+    "vue-template-es2015-compiler": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz",
+      "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=",
+      "dev": true
+    },
+    "watchpack": {
+      "version": "1.7.5",
+      "resolved": "https://registry.nlark.com/watchpack/download/watchpack-1.7.5.tgz?cache=0&sync_timestamp=1621437868630&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwatchpack%2Fdownload%2Fwatchpack-1.7.5.tgz",
+      "integrity": "sha1-EmfmxV4Lm1vkTCAjrtVDeiwmxFM=",
+      "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.nlark.com/watchpack-chokidar2/download/watchpack-chokidar2-2.0.1.tgz",
+      "integrity": "sha1-OFAAcu5uzmbzdpk2lQ6hdxvhyVc=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chokidar": "^2.1.8"
+      },
+      "dependencies": {
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/anymatch/download/anymatch-2.0.0.tgz",
+          "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://registry.nlark.com/binary-extensions/download/binary-extensions-1.13.1.tgz",
+          "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+          "dev": true,
+          "optional": true
+        },
+        "chokidar": {
+          "version": "2.1.8",
+          "resolved": "https://registry.nlark.com/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1623763535523&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz",
+          "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=",
+          "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.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+          "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "bindings": "^1.5.0",
+            "nan": "^2.12.1"
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz?cache=0&sync_timestamp=1620073321855&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob-parent%2Fdownload%2Fglob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "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.nlark.com/is-glob/download/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://registry.nlark.com/is-binary-path/download/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://registry.nlark.com/readdirp/download/readdirp-2.2.1.tgz",
+          "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+          "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.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz",
+      "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=",
+      "dev": true,
+      "requires": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "wcwidth": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/wcwidth/download/wcwidth-1.0.1.tgz",
+      "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+      "dev": true,
+      "requires": {
+        "defaults": "^1.0.3"
+      }
+    },
+    "webpack": {
+      "version": "4.46.0",
+      "resolved": "https://registry.nlark.com/webpack/download/webpack-4.46.0.tgz",
+      "integrity": "sha1-v5tEBOogoHNgXgoBHRiNd8tq1UI=",
+      "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": {
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "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.nlark.com/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.9.0.tgz?cache=0&sync_timestamp=1621259099265&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwebpack-bundle-analyzer%2Fdownload%2Fwebpack-bundle-analyzer-3.9.0.tgz",
+      "integrity": "sha1-9vlNsQj7V05BWtMT3kGicH0z7zw=",
+      "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.nlark.com/acorn/download/acorn-7.4.1.tgz",
+          "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
+          "dev": true
+        }
+      }
+    },
+    "webpack-chain": {
+      "version": "6.5.1",
+      "resolved": "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-6.5.1.tgz",
+      "integrity": "sha1-TycoTLu2N+PI+970Pu9YjU2GEgY=",
+      "dev": true,
+      "requires": {
+        "deepmerge": "^1.5.2",
+        "javascript-stringify": "^2.0.1"
+      }
+    },
+    "webpack-dev-middleware": {
+      "version": "3.7.3",
+      "resolved": "https://registry.nlark.com/webpack-dev-middleware/download/webpack-dev-middleware-3.7.3.tgz?cache=0&sync_timestamp=1622642128013&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwebpack-dev-middleware%2Fdownload%2Fwebpack-dev-middleware-3.7.3.tgz",
+      "integrity": "sha1-Bjk3KxQyYuK4SrldO5GnWXBhwsU=",
+      "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"
+      }
+    },
+    "webpack-dev-server": {
+      "version": "3.11.2",
+      "resolved": "https://registry.nlark.com/webpack-dev-server/download/webpack-dev-server-3.11.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwebpack-dev-server%2Fdownload%2Fwebpack-dev-server-3.11.2.tgz",
+      "integrity": "sha1-aV687Xakkp8NXef9c/r+GF/jNwg=",
+      "dev": true,
+      "requires": {
+        "ansi-html": "0.0.7",
+        "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.nlark.com/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://registry.nlark.com/anymatch/download/anymatch-2.0.0.tgz",
+          "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+          "dev": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "dev": true,
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://registry.nlark.com/binary-extensions/download/binary-extensions-1.13.1.tgz",
+          "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+          "dev": true
+        },
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.nlark.com/camelcase/download/camelcase-5.3.1.tgz",
+          "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+          "dev": true
+        },
+        "chokidar": {
+          "version": "2.1.8",
+          "resolved": "https://registry.nlark.com/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1623763535523&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz",
+          "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=",
+          "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.nlark.com/cliui/download/cliui-5.0.0.tgz",
+          "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=",
+          "dev": true,
+          "requires": {
+            "string-width": "^3.1.0",
+            "strip-ansi": "^5.2.0",
+            "wrap-ansi": "^5.1.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-4.1.0.tgz",
+              "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+              "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "emoji-regex": {
+          "version": "7.0.3",
+          "resolved": "https://registry.nlark.com/emoji-regex/download/emoji-regex-7.0.3.tgz",
+          "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
+          "dev": true
+        },
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.nlark.com/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1618846778775&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz",
+          "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "fsevents": {
+          "version": "1.2.13",
+          "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+          "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "bindings": "^1.5.0",
+            "nan": "^2.12.1"
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz?cache=0&sync_timestamp=1620073321855&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob-parent%2Fdownload%2Fglob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.nlark.com/is-glob/download/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "dev": true,
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
+        "http-proxy-middleware": {
+          "version": "0.19.1",
+          "resolved": "https://registry.nlark.com/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhttp-proxy-middleware%2Fdownload%2Fhttp-proxy-middleware-0.19.1.tgz",
+          "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=",
+          "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.nlark.com/is-absolute-url/download/is-absolute-url-3.0.3.tgz",
+          "integrity": "sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=",
+          "dev": true
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://registry.nlark.com/is-binary-path/download/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "dev": true,
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+          "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.nlark.com/p-locate/download/p-locate-3.0.0.tgz",
+          "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.nlark.com/path-exists/download/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "dev": true
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://registry.nlark.com/readdirp/download/readdirp-2.2.1.tgz",
+          "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+          "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.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.nlark.com/string-width/download/string-width-3.1.0.tgz",
+          "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
+          "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.0",
+              "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-4.1.0.tgz",
+              "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+              "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.nlark.com/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1622293670728&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz",
+          "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        },
+        "wrap-ansi": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz",
+          "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "string-width": "^3.0.0",
+            "strip-ansi": "^5.0.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-4.1.0.tgz",
+              "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+              "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "yargs": {
+          "version": "13.3.2",
+          "resolved": "https://registry.nlark.com/yargs/download/yargs-13.3.2.tgz?cache=0&sync_timestamp=1620086465147&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-13.3.2.tgz",
+          "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=",
+          "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.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.2.tgz",
+          "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        }
+      }
+    },
+    "webpack-log": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz?cache=0&sync_timestamp=1615477439589&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-log%2Fdownload%2Fwebpack-log-2.0.0.tgz",
+      "integrity": "sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=",
+      "dev": true,
+      "requires": {
+        "ansi-colors": "^3.0.0",
+        "uuid": "^3.3.2"
+      }
+    },
+    "webpack-merge": {
+      "version": "4.2.2",
+      "resolved": "https://registry.nlark.com/webpack-merge/download/webpack-merge-4.2.2.tgz",
+      "integrity": "sha1-onxS6ng9E5iv0gh/VH17nS9DY00=",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.15"
+      }
+    },
+    "webpack-sources": {
+      "version": "1.4.3",
+      "resolved": "https://registry.nlark.com/webpack-sources/download/webpack-sources-1.4.3.tgz?cache=0&sync_timestamp=1622110325575&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwebpack-sources%2Fdownload%2Fwebpack-sources-1.4.3.tgz",
+      "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=",
+      "dev": true,
+      "requires": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.nlark.com/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "websocket-driver": {
+      "version": "0.7.4",
+      "resolved": "https://registry.nlark.com/websocket-driver/download/websocket-driver-0.7.4.tgz",
+      "integrity": "sha1-ia1Slbv2S0gKvLox5JU6ynBvV2A=",
+      "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.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.4.tgz",
+      "integrity": "sha1-f4RzvIOd/YdgituV1+sHUhFXikI=",
+      "dev": true
+    },
+    "which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.nlark.com/which/download/which-1.3.1.tgz",
+      "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-boxed-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/which-boxed-primitive/download/which-boxed-primitive-1.0.2.tgz",
+      "integrity": "sha1-E3V7yJsgmwSf5dhkMOIc9AqJqOY=",
+      "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.npm.taobao.org/which-module/download/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+      "dev": true
+    },
+    "worker-farm": {
+      "version": "1.7.0",
+      "resolved": "https://registry.nlark.com/worker-farm/download/worker-farm-1.7.0.tgz?cache=0&sync_timestamp=1618846953836&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fworker-farm%2Fdownload%2Fworker-farm-1.7.0.tgz",
+      "integrity": "sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=",
+      "dev": true,
+      "requires": {
+        "errno": "~0.1.7"
+      }
+    },
+    "wrap-ansi": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=",
+      "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.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz",
+          "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+          "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.nlark.com/color-name/download/color-name-1.1.4.tgz",
+          "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "4.2.2",
+          "resolved": "https://registry.nlark.com/string-width/download/string-width-4.2.2.tgz",
+          "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.0"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/wrappy/download/wrappy-1.0.2.tgz?cache=0&sync_timestamp=1619133505879&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwrappy%2Fdownload%2Fwrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "ws": {
+      "version": "6.2.2",
+      "resolved": "https://registry.nlark.com/ws/download/ws-6.2.2.tgz?cache=0&sync_timestamp=1623849513642&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fws%2Fdownload%2Fws-6.2.2.tgz",
+      "integrity": "sha1-3Vzb1XqZeZFgl2UtePHMX66gwy4=",
+      "dev": true,
+      "requires": {
+        "async-limiter": "~1.0.0"
+      }
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz",
+      "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=",
+      "dev": true
+    },
+    "y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.3.tgz?cache=0&sync_timestamp=1617822684820&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fy18n%2Fdownload%2Fy18n-4.0.3.tgz",
+      "integrity": "sha1-tfJZyCzW4zaSHv17/Yv1YN6e7t8=",
+      "dev": true
+    },
+    "yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz",
+      "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=",
+      "dev": true
+    },
+    "yargs": {
+      "version": "16.2.0",
+      "resolved": "https://registry.nlark.com/yargs/download/yargs-16.2.0.tgz?cache=0&sync_timestamp=1620086465147&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-16.2.0.tgz",
+      "integrity": "sha1-HIK/D2tqZur85+8w43b0mhJHf2Y=",
+      "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.nlark.com/cliui/download/cliui-7.0.4.tgz",
+          "integrity": "sha1-oCZe5lVHb8gHrqnfPfjfd4OAi08=",
+          "dev": true,
+          "requires": {
+            "string-width": "^4.2.0",
+            "strip-ansi": "^6.0.0",
+            "wrap-ansi": "^7.0.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "4.2.2",
+          "resolved": "https://registry.nlark.com/string-width/download/string-width-4.2.2.tgz",
+          "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "y18n": {
+          "version": "5.0.8",
+          "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-5.0.8.tgz?cache=0&sync_timestamp=1617822684820&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fy18n%2Fdownload%2Fy18n-5.0.8.tgz",
+          "integrity": "sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU=",
+          "dev": true
+        }
+      }
+    },
+    "yargs-parser": {
+      "version": "20.2.7",
+      "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-20.2.7.tgz",
+      "integrity": "sha1-Yd+FwRPt+1p6TjbriqYO9CPLyQo=",
+      "dev": true
+    },
+    "zrender": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.1.1.tgz",
+      "integrity": "sha512-oeWlmUZPQdS9f5hK4pV21tHPqA3wgQ7CkKkw7l0CCBgWlJ/FP+lRgLFtUBW6yam4JX8y9CdHJo1o587VVrbcoQ==",
+      "requires": {
+        "tslib": "2.0.3"
+      }
+    }
+  }
+}

+ 32 - 0
package.json

@@ -0,0 +1,32 @@
+{
+  "name": "mobile_office_mini",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build"
+  },
+  "dependencies": {
+    "axios": "^0.21.1",
+    "core-js": "^3.6.5",
+    "echarts": "^5.1.2",
+    "font-awesome": "^4.7.0",
+    "qs": "^6.11.1",
+    "sass": "^1.26.8",
+    "sass-loader": "^8.0.2",
+    "vant": "^2.12.23",
+    "vue": "^2.6.11",
+    "vue-router": "^3.2.0"
+  },
+  "devDependencies": {
+    "@vue/cli-plugin-babel": "~4.5.0",
+    "@vue/cli-plugin-router": "~4.5.0",
+    "@vue/cli-service": "~4.5.0",
+    "vue-template-compiler": "^2.6.11"
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions",
+    "not dead"
+  ]
+}

二進制
public/favicon.ico


+ 33 - 0
public/index.html

@@ -0,0 +1,33 @@
+<!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><%= htmlWebpackPlugin.options.title %></title>
+    <script src="./weixin.js"></script>
+    <script src="./webView.js"></script>
+    <script>
+      document.addEventListener('UniAppJSBridgeReady', function(e) {
+        // uni.getEnv(function(res) {
+        //   console.log('当前环境:' + JSON.stringify(res))
+        // })
+        // 向uniapp底座发送消息
+        // uni.postMessage({
+        //   data: { url: res.data.filename.file, name: res.data.filename.name }
+        // })
+      })
+    </script>
+  </head>
+  <body>
+    <noscript>
+      <strong
+        >We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to
+        continue.</strong
+      >
+    </noscript>
+    <div id="app"></div>
+    <!-- built files will be auto injected -->
+  </body>
+</html>

+ 210 - 0
public/webView.js

@@ -0,0 +1,210 @@
+!(function(e, n) {
+  'object' == typeof exports && 'undefined' != typeof module
+    ? (module.exports = n())
+    : 'function' == typeof define && define.amd
+    ? define(n)
+    : ((e = e || self).uni = n())
+})(this, function() {
+  'use strict'
+  try {
+    var e = {}
+    Object.defineProperty(e, 'passive', {
+      get: function() {
+        !0
+      }
+    }),
+      window.addEventListener('test-passive', null, e)
+  } catch (e) {}
+  var n = Object.prototype.hasOwnProperty
+  function i(e, i) {
+    return n.call(e, i)
+  }
+  var t = []
+  function r() {
+    return window.__dcloud_weex_postMessage || window.__dcloud_weex_
+  }
+  var o = function(e, n) {
+      var i = { options: { timestamp: +new Date() }, name: e, arg: n }
+      if (r()) {
+        if ('postMessage' === e) {
+          var o = { data: [n] }
+          return window.__dcloud_weex_postMessage
+            ? window.__dcloud_weex_postMessage(o)
+            : window.__dcloud_weex_.postMessage(JSON.stringify(o))
+        }
+        var a = { type: 'WEB_INVOKE_APPSERVICE', args: { data: i, webviewIds: t } }
+        window.__dcloud_weex_postMessage
+          ? window.__dcloud_weex_postMessageToService(a)
+          : window.__dcloud_weex_.postMessageToService(JSON.stringify(a))
+      }
+      if (!window.plus) return window.parent.postMessage({ type: 'WEB_INVOKE_APPSERVICE', data: i, pageId: '' }, '*')
+      if (0 === t.length) {
+        var d = plus.webview.currentWebview()
+        if (!d) throw new Error('plus.webview.currentWebview() is undefined')
+        var s = d.parent(),
+          w = ''
+        ;(w = s ? s.id : d.id), t.push(w)
+      }
+      if (plus.webview.getWebviewById('__uniapp__service'))
+        plus.webview.postMessageToUniNView({ type: 'WEB_INVOKE_APPSERVICE', args: { data: i, webviewIds: t } }, '__uniapp__service')
+      else {
+        var u = JSON.stringify(i)
+        plus.webview.getLaunchWebview().evalJS(
+          'UniPlusBridge.subscribeHandler("'
+            .concat('WEB_INVOKE_APPSERVICE', '",')
+            .concat(u, ',')
+            .concat(JSON.stringify(t), ');')
+        )
+      }
+    },
+    a = {
+      navigateTo: function() {
+        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
+          n = e.url
+        o('navigateTo', { url: encodeURI(n) })
+      },
+      navigateBack: function() {
+        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
+          n = e.delta
+        o('navigateBack', { delta: parseInt(n) || 1 })
+      },
+      switchTab: function() {
+        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
+          n = e.url
+        o('switchTab', { url: encodeURI(n) })
+      },
+      reLaunch: function() {
+        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
+          n = e.url
+        o('reLaunch', { url: encodeURI(n) })
+      },
+      redirectTo: function() {
+        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
+          n = e.url
+        o('redirectTo', { url: encodeURI(n) })
+      },
+      getEnv: function(e) {
+        r() ? e({ nvue: !0 }) : window.plus ? e({ plus: !0 }) : e({ h5: !0 })
+      },
+      postMessage: function() {
+        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
+        o('postMessage', e.data || {})
+      }
+    },
+    d = /uni-app/i.test(navigator.userAgent),
+    s = /Html5Plus/i.test(navigator.userAgent),
+    w = /complete|loaded|interactive/
+  var u = window.my && navigator.userAgent.indexOf(['t', 'n', 'e', 'i', 'l', 'C', 'y', 'a', 'p', 'i', 'l', 'A'].reverse().join('')) > -1
+  var g = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent)
+  var v = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent)
+  var c = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent)
+  var m = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent)
+  var p = window.qa && /quickapp/i.test(navigator.userAgent)
+  var f = window.ks && window.ks.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent)
+  var l = window.tt && window.tt.miniProgram && /Lark|Feishu/i.test(navigator.userAgent)
+  var _ = window.jd && window.jd.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent)
+  var E = window.xhs && window.xhs.miniProgram && /xhsminiapp/i.test(navigator.userAgent)
+  for (
+    var h,
+      P = function() {
+        ;(window.UniAppJSBridge = !0), document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', { bubbles: !0, cancelable: !0 }))
+      },
+      b = [
+        function(e) {
+          if (d || s)
+            return (
+              window.__dcloud_weex_postMessage || window.__dcloud_weex_
+                ? document.addEventListener('DOMContentLoaded', e)
+                : window.plus && w.test(document.readyState)
+                ? setTimeout(e, 0)
+                : document.addEventListener('plusready', e),
+              a
+            )
+        },
+        function(e) {
+          if (m)
+            return (
+              window.WeixinJSBridge && window.WeixinJSBridge.invoke
+                ? setTimeout(e, 0)
+                : document.addEventListener('WeixinJSBridgeReady', e),
+              window.wx.miniProgram
+            )
+        },
+        function(e) {
+          if (v)
+            return (
+              window.QQJSBridge && window.QQJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QQJSBridgeReady', e),
+              window.qq.miniProgram
+            )
+        },
+        function(e) {
+          if (u) {
+            document.addEventListener('DOMContentLoaded', e)
+            var n = window.my
+            return {
+              navigateTo: n.navigateTo,
+              navigateBack: n.navigateBack,
+              switchTab: n.switchTab,
+              reLaunch: n.reLaunch,
+              redirectTo: n.redirectTo,
+              postMessage: n.postMessage,
+              getEnv: n.getEnv
+            }
+          }
+        },
+        function(e) {
+          if (g) return document.addEventListener('DOMContentLoaded', e), window.swan.webView
+        },
+        function(e) {
+          if (c) return document.addEventListener('DOMContentLoaded', e), window.tt.miniProgram
+        },
+        function(e) {
+          if (p) {
+            window.QaJSBridge && window.QaJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QaJSBridgeReady', e)
+            var n = window.qa
+            return {
+              navigateTo: n.navigateTo,
+              navigateBack: n.navigateBack,
+              switchTab: n.switchTab,
+              reLaunch: n.reLaunch,
+              redirectTo: n.redirectTo,
+              postMessage: n.postMessage,
+              getEnv: n.getEnv
+            }
+          }
+        },
+        function(e) {
+          if (f)
+            return (
+              window.WeixinJSBridge && window.WeixinJSBridge.invoke
+                ? setTimeout(e, 0)
+                : document.addEventListener('WeixinJSBridgeReady', e),
+              window.ks.miniProgram
+            )
+        },
+        function(e) {
+          if (l) return document.addEventListener('DOMContentLoaded', e), window.tt.miniProgram
+        },
+        function(e) {
+          if (_)
+            return (
+              window.JDJSBridgeReady && window.JDJSBridgeReady.invoke ? setTimeout(e, 0) : document.addEventListener('JDJSBridgeReady', e),
+              window.jd.miniProgram
+            )
+        },
+        function(e) {
+          if (E) return window.xhs.miniProgram
+        },
+        function(e) {
+          return document.addEventListener('DOMContentLoaded', e), a
+        }
+      ],
+      y = 0;
+    y < b.length && !(h = b[y](P));
+    y++
+  );
+  h || (h = {})
+  var B = 'undefined' != typeof uni ? uni : {}
+  if (!B.navigateTo) for (var S in h) i(h, S) && (B[S] = h[S])
+  return (B.webView = h), B
+})

+ 728 - 0
public/weixin.js

@@ -0,0 +1,728 @@
+!(function(e, n) {
+  'function' == typeof define && (define.amd || define.cmd)
+    ? define(function() {
+        return n(e)
+      })
+    : n(e, !0)
+})(this, function(e, n) {
+  function i(n, i, t) {
+    e.WeixinJSBridge
+      ? WeixinJSBridge.invoke(n, o(i), function(e) {
+          c(n, e, t)
+        })
+      : u(n, t)
+  }
+  function t(n, i, t) {
+    e.WeixinJSBridge
+      ? WeixinJSBridge.on(n, function(e) {
+          t && t.trigger && t.trigger(e), c(n, e, i)
+        })
+      : t
+      ? u(n, t)
+      : u(n, i)
+  }
+  function o(e) {
+    return (
+      (e = e || {}),
+      (e.appId = C.appId),
+      (e.verifyAppId = C.appId),
+      (e.verifySignType = 'sha1'),
+      (e.verifyTimestamp = C.timestamp + ''),
+      (e.verifyNonceStr = C.nonceStr),
+      (e.verifySignature = C.signature),
+      e
+    )
+  }
+  function r(e) {
+    return { timeStamp: e.timestamp + '', nonceStr: e.nonceStr, package: e.package, paySign: e.paySign, signType: e.signType || 'SHA1' }
+  }
+  function a(e) {
+    return (
+      (e.postalCode = e.addressPostalCode),
+      delete e.addressPostalCode,
+      (e.provinceName = e.proviceFirstStageName),
+      delete e.proviceFirstStageName,
+      (e.cityName = e.addressCitySecondStageName),
+      delete e.addressCitySecondStageName,
+      (e.countryName = e.addressCountiesThirdStageName),
+      delete e.addressCountiesThirdStageName,
+      (e.detailInfo = e.addressDetailInfo),
+      delete e.addressDetailInfo,
+      e
+    )
+  }
+  function c(e, n, i) {
+    'openEnterpriseChat' == e && (n.errCode = n.err_code), delete n.err_code, delete n.err_desc, delete n.err_detail
+    var t = n.errMsg
+    t || ((t = n.err_msg), delete n.err_msg, (t = s(e, t)), (n.errMsg = t)),
+      (i = i || {})._complete && (i._complete(n), delete i._complete),
+      (t = n.errMsg || ''),
+      C.debug && !i.isInnerInvoke && alert(JSON.stringify(n))
+    var o = t.indexOf(':')
+    switch (t.substring(o + 1)) {
+      case 'ok':
+        i.success && i.success(n)
+        break
+      case 'cancel':
+        i.cancel && i.cancel(n)
+        break
+      default:
+        i.fail && i.fail(n)
+    }
+    i.complete && i.complete(n)
+  }
+  function s(e, n) {
+    var i = e,
+      t = v[i]
+    t && (i = t)
+    var o = 'ok'
+    if (n) {
+      var r = n.indexOf(':')
+      'confirm' == (o = n.substring(r + 1)) && (o = 'ok'),
+        'failed' == o && (o = 'fail'),
+        -1 != o.indexOf('failed_') && (o = o.substring(7)),
+        -1 != o.indexOf('fail_') && (o = o.substring(5)),
+        ('access denied' != (o = (o = o.replace(/_/g, ' ')).toLowerCase()) && 'no permission to execute' != o) || (o = 'permission denied'),
+        'config' == i && 'function not exist' == o && (o = 'ok'),
+        '' == o && (o = 'fail')
+    }
+    return (n = i + ':' + o)
+  }
+  function d(e) {
+    if (e) {
+      for (var n = 0, i = e.length; n < i; ++n) {
+        var t = e[n],
+          o = h[t]
+        o && (e[n] = o)
+      }
+      return e
+    }
+  }
+  function u(e, n) {
+    if (!(!C.debug || (n && n.isInnerInvoke))) {
+      var i = v[e]
+      i && (e = i), n && n._complete && delete n._complete, console.log('"' + e + '",', n || '')
+    }
+  }
+  function l(e) {
+    if (!(k || w || C.debug || x < '6.0.2' || V.systemType < 0)) {
+      var n = new Image()
+      ;(V.appId = C.appId),
+        (V.initTime = A.initEndTime - A.initStartTime),
+        (V.preVerifyTime = A.preVerifyEndTime - A.preVerifyStartTime),
+        N.getNetworkType({
+          isInnerInvoke: !0,
+          success: function(e) {
+            V.networkType = e.networkType
+            var i =
+              'https://open.weixin.qq.com/sdk/report?v=' +
+              V.version +
+              '&o=' +
+              V.isPreVerifyOk +
+              '&s=' +
+              V.systemType +
+              '&c=' +
+              V.clientVersion +
+              '&a=' +
+              V.appId +
+              '&n=' +
+              V.networkType +
+              '&i=' +
+              V.initTime +
+              '&p=' +
+              V.preVerifyTime +
+              '&u=' +
+              V.url
+            n.src = i
+          }
+        })
+    }
+  }
+  function p() {
+    return new Date().getTime()
+  }
+  function f(n) {
+    T && (e.WeixinJSBridge ? n() : S.addEventListener && S.addEventListener('WeixinJSBridgeReady', n, !1))
+  }
+  function m() {
+    N.invoke ||
+      ((N.invoke = function(n, i, t) {
+        e.WeixinJSBridge && WeixinJSBridge.invoke(n, o(i), t)
+      }),
+      (N.on = function(n, i) {
+        e.WeixinJSBridge && WeixinJSBridge.on(n, i)
+      }))
+  }
+  function g(e) {
+    if ('string' == typeof e && e.length > 0) {
+      var n = e.split('?')[0],
+        i = e.split('?')[1]
+      return (n += '.html'), void 0 !== i ? n + '?' + i : n
+    }
+  }
+  if (!e.jWeixin) {
+    var h = {
+        config: 'preVerifyJSAPI',
+        onMenuShareTimeline: 'menu:share:timeline',
+        onMenuShareAppMessage: 'menu:share:appmessage',
+        onMenuShareQQ: 'menu:share:qq',
+        onMenuShareWeibo: 'menu:share:weiboApp',
+        onMenuShareQZone: 'menu:share:QZone',
+        previewImage: 'imagePreview',
+        getLocation: 'geoLocation',
+        openProductSpecificView: 'openProductViewWithPid',
+        addCard: 'batchAddCard',
+        openCard: 'batchViewCard',
+        chooseWXPay: 'getBrandWCPayRequest',
+        openEnterpriseRedPacket: 'getRecevieBizHongBaoRequest',
+        startSearchBeacons: 'startMonitoringBeacons',
+        stopSearchBeacons: 'stopMonitoringBeacons',
+        onSearchBeacons: 'onBeaconsInRange',
+        consumeAndShareCard: 'consumedShareCard',
+        openAddress: 'editAddress'
+      },
+      v = (function() {
+        var e = {}
+        for (var n in h) e[h[n]] = n
+        return e
+      })(),
+      S = e.document,
+      I = S.title,
+      y = navigator.userAgent.toLowerCase(),
+      _ = navigator.platform.toLowerCase(),
+      k = !(!_.match('mac') && !_.match('win')),
+      w = -1 != y.indexOf('wxdebugger'),
+      T = -1 != y.indexOf('micromessenger'),
+      M = -1 != y.indexOf('android'),
+      P = -1 != y.indexOf('iphone') || -1 != y.indexOf('ipad'),
+      x = (function() {
+        var e = y.match(/micromessenger\/(\d+\.\d+\.\d+)/) || y.match(/micromessenger\/(\d+\.\d+)/)
+        return e ? e[1] : ''
+      })(),
+      A = { initStartTime: p(), initEndTime: 0, preVerifyStartTime: 0, preVerifyEndTime: 0 },
+      V = {
+        version: 1,
+        appId: '',
+        initTime: 0,
+        preVerifyTime: 0,
+        networkType: '',
+        isPreVerifyOk: 1,
+        systemType: P ? 1 : M ? 2 : -1,
+        clientVersion: x,
+        url: encodeURIComponent(location.href)
+      },
+      C = {},
+      L = { _completes: [] },
+      B = { state: 0, data: {} }
+    f(function() {
+      A.initEndTime = p()
+    })
+    var O = !1,
+      E = [],
+      N = {
+        config: function(e) {
+          ;(C = e), u('config', e)
+          var n = !1 !== C.check
+          f(function() {
+            if (n)
+              i(
+                h.config,
+                { verifyJsApiList: d(C.jsApiList) },
+                (function() {
+                  ;(L._complete = function(e) {
+                    ;(A.preVerifyEndTime = p()), (B.state = 1), (B.data = e)
+                  }),
+                    (L.success = function(e) {
+                      V.isPreVerifyOk = 0
+                    }),
+                    (L.fail = function(e) {
+                      L._fail ? L._fail(e) : (B.state = -1)
+                    })
+                  var e = L._completes
+                  return (
+                    e.push(function() {
+                      l()
+                    }),
+                    (L.complete = function(n) {
+                      for (var i = 0, t = e.length; i < t; ++i) e[i]()
+                      L._completes = []
+                    }),
+                    L
+                  )
+                })()
+              ),
+                (A.preVerifyStartTime = p())
+            else {
+              B.state = 1
+              for (var e = L._completes, t = 0, o = e.length; t < o; ++t) e[t]()
+              L._completes = []
+            }
+          }),
+            m()
+        },
+        ready: function(e) {
+          0 != B.state ? e() : (L._completes.push(e), !T && C.debug && e())
+        },
+        error: function(e) {
+          x < '6.0.2' || (-1 == B.state ? e(B.data) : (L._fail = e))
+        },
+        checkJsApi: function(e) {
+          var n = function(e) {
+            var n = e.checkResult
+            for (var i in n) {
+              var t = v[i]
+              t && ((n[t] = n[i]), delete n[i])
+            }
+            return e
+          }
+          i(
+            'checkJsApi',
+            { jsApiList: d(e.jsApiList) },
+            ((e._complete = function(e) {
+              if (M) {
+                var i = e.checkResult
+                i && (e.checkResult = JSON.parse(i))
+              }
+              e = n(e)
+            }),
+            e)
+          )
+        },
+        onMenuShareTimeline: function(e) {
+          t(
+            h.onMenuShareTimeline,
+            {
+              complete: function() {
+                i(
+                  'shareTimeline',
+                  {
+                    title: e.title || I,
+                    desc: e.title || I,
+                    img_url: e.imgUrl || '',
+                    link: e.link || location.href,
+                    type: e.type || 'link',
+                    data_url: e.dataUrl || ''
+                  },
+                  e
+                )
+              }
+            },
+            e
+          )
+        },
+        onMenuShareAppMessage: function(e) {
+          t(
+            h.onMenuShareAppMessage,
+            {
+              complete: function(n) {
+                'favorite' === n.scene
+                  ? i('sendAppMessage', {
+                      title: e.title || I,
+                      desc: e.desc || '',
+                      link: e.link || location.href,
+                      img_url: e.imgUrl || '',
+                      type: e.type || 'link',
+                      data_url: e.dataUrl || ''
+                    })
+                  : i(
+                      'sendAppMessage',
+                      {
+                        title: e.title || I,
+                        desc: e.desc || '',
+                        link: e.link || location.href,
+                        img_url: e.imgUrl || '',
+                        type: e.type || 'link',
+                        data_url: e.dataUrl || ''
+                      },
+                      e
+                    )
+              }
+            },
+            e
+          )
+        },
+        onMenuShareQQ: function(e) {
+          t(
+            h.onMenuShareQQ,
+            {
+              complete: function() {
+                i('shareQQ', { title: e.title || I, desc: e.desc || '', img_url: e.imgUrl || '', link: e.link || location.href }, e)
+              }
+            },
+            e
+          )
+        },
+        onMenuShareWeibo: function(e) {
+          t(
+            h.onMenuShareWeibo,
+            {
+              complete: function() {
+                i('shareWeiboApp', { title: e.title || I, desc: e.desc || '', img_url: e.imgUrl || '', link: e.link || location.href }, e)
+              }
+            },
+            e
+          )
+        },
+        onMenuShareQZone: function(e) {
+          t(
+            h.onMenuShareQZone,
+            {
+              complete: function() {
+                i('shareQZone', { title: e.title || I, desc: e.desc || '', img_url: e.imgUrl || '', link: e.link || location.href }, e)
+              }
+            },
+            e
+          )
+        },
+        updateTimelineShareData: function(e) {
+          i('updateTimelineShareData', { title: e.title, link: e.link, imgUrl: e.imgUrl }, e)
+        },
+        updateAppMessageShareData: function(e) {
+          i('updateAppMessageShareData', { title: e.title, desc: e.desc, link: e.link, imgUrl: e.imgUrl }, e)
+        },
+        startRecord: function(e) {
+          i('startRecord', {}, e)
+        },
+        stopRecord: function(e) {
+          i('stopRecord', {}, e)
+        },
+        onVoiceRecordEnd: function(e) {
+          t('onVoiceRecordEnd', e)
+        },
+        playVoice: function(e) {
+          i('playVoice', { localId: e.localId }, e)
+        },
+        pauseVoice: function(e) {
+          i('pauseVoice', { localId: e.localId }, e)
+        },
+        stopVoice: function(e) {
+          i('stopVoice', { localId: e.localId }, e)
+        },
+        onVoicePlayEnd: function(e) {
+          t('onVoicePlayEnd', e)
+        },
+        uploadVoice: function(e) {
+          i('uploadVoice', { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
+        },
+        downloadVoice: function(e) {
+          i('downloadVoice', { serverId: e.serverId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
+        },
+        translateVoice: function(e) {
+          i('translateVoice', { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
+        },
+        chooseImage: function(e) {
+          i(
+            'chooseImage',
+            {
+              scene: '1|2',
+              count: e.count || 9,
+              sizeType: e.sizeType || ['original', 'compressed'],
+              sourceType: e.sourceType || ['album', 'camera']
+            },
+            ((e._complete = function(e) {
+              if (M) {
+                var n = e.localIds
+                try {
+                  n && (e.localIds = JSON.parse(n))
+                } catch (e) {}
+              }
+            }),
+            e)
+          )
+        },
+        getLocation: function(e) {},
+        previewImage: function(e) {
+          i(h.previewImage, { current: e.current, urls: e.urls }, e)
+        },
+        uploadImage: function(e) {
+          i('uploadImage', { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
+        },
+        downloadImage: function(e) {
+          i('downloadImage', { serverId: e.serverId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
+        },
+        getLocalImgData: function(e) {
+          !1 === O
+            ? ((O = !0),
+              i(
+                'getLocalImgData',
+                { localId: e.localId },
+                ((e._complete = function(e) {
+                  if (((O = !1), E.length > 0)) {
+                    var n = E.shift()
+                    wx.getLocalImgData(n)
+                  }
+                }),
+                e)
+              ))
+            : E.push(e)
+        },
+        getNetworkType: function(e) {
+          var n = function(e) {
+            var n = e.errMsg
+            e.errMsg = 'getNetworkType:ok'
+            var i = e.subtype
+            if ((delete e.subtype, i)) e.networkType = i
+            else {
+              var t = n.indexOf(':'),
+                o = n.substring(t + 1)
+              switch (o) {
+                case 'wifi':
+                case 'edge':
+                case 'wwan':
+                  e.networkType = o
+                  break
+                default:
+                  e.errMsg = 'getNetworkType:fail'
+              }
+            }
+            return e
+          }
+          i(
+            'getNetworkType',
+            {},
+            ((e._complete = function(e) {
+              e = n(e)
+            }),
+            e)
+          )
+        },
+        openLocation: function(e) {
+          i(
+            'openLocation',
+            {
+              latitude: e.latitude,
+              longitude: e.longitude,
+              name: e.name || '',
+              address: e.address || '',
+              scale: e.scale || 28,
+              infoUrl: e.infoUrl || ''
+            },
+            e
+          )
+        },
+        getLocation: function(e) {
+          ;(e = e || {}),
+            i(
+              h.getLocation,
+              { type: e.type || 'wgs84' },
+              ((e._complete = function(e) {
+                delete e.type
+              }),
+              e)
+            )
+        },
+        hideOptionMenu: function(e) {
+          i('hideOptionMenu', {}, e)
+        },
+        showOptionMenu: function(e) {
+          i('showOptionMenu', {}, e)
+        },
+        closeWindow: function(e) {
+          i('closeWindow', {}, (e = e || {}))
+        },
+        hideMenuItems: function(e) {
+          i('hideMenuItems', { menuList: e.menuList }, e)
+        },
+        showMenuItems: function(e) {
+          i('showMenuItems', { menuList: e.menuList }, e)
+        },
+        hideAllNonBaseMenuItem: function(e) {
+          i('hideAllNonBaseMenuItem', {}, e)
+        },
+        showAllNonBaseMenuItem: function(e) {
+          i('showAllNonBaseMenuItem', {}, e)
+        },
+        scanQRCode: function(e) {
+          i(
+            'scanQRCode',
+            { needResult: (e = e || {}).needResult || 0, scanType: e.scanType || ['qrCode', 'barCode'] },
+            ((e._complete = function(e) {
+              if (P) {
+                var n = e.resultStr
+                if (n) {
+                  var i = JSON.parse(n)
+                  e.resultStr = i && i.scan_code && i.scan_code.scan_result
+                }
+              }
+            }),
+            e)
+          )
+        },
+        openAddress: function(e) {
+          i(
+            h.openAddress,
+            {},
+            ((e._complete = function(e) {
+              e = a(e)
+            }),
+            e)
+          )
+        },
+        openProductSpecificView: function(e) {
+          i(h.openProductSpecificView, { pid: e.productId, view_type: e.viewType || 0, ext_info: e.extInfo }, e)
+        },
+        addCard: function(e) {
+          for (var n = e.cardList, t = [], o = 0, r = n.length; o < r; ++o) {
+            var a = n[o],
+              c = { card_id: a.cardId, card_ext: a.cardExt }
+            t.push(c)
+          }
+          i(
+            h.addCard,
+            { card_list: t },
+            ((e._complete = function(e) {
+              var n = e.card_list
+              if (n) {
+                for (var i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {
+                  var o = n[i]
+                  ;(o.cardId = o.card_id),
+                    (o.cardExt = o.card_ext),
+                    (o.isSuccess = !!o.is_succ),
+                    delete o.card_id,
+                    delete o.card_ext,
+                    delete o.is_succ
+                }
+                ;(e.cardList = n), delete e.card_list
+              }
+            }),
+            e)
+          )
+        },
+        chooseCard: function(e) {
+          i(
+            'chooseCard',
+            {
+              app_id: C.appId,
+              location_id: e.shopId || '',
+              sign_type: e.signType || 'SHA1',
+              card_id: e.cardId || '',
+              card_type: e.cardType || '',
+              card_sign: e.cardSign,
+              time_stamp: e.timestamp + '',
+              nonce_str: e.nonceStr
+            },
+            ((e._complete = function(e) {
+              ;(e.cardList = e.choose_card_info), delete e.choose_card_info
+            }),
+            e)
+          )
+        },
+        openCard: function(e) {
+          for (var n = e.cardList, t = [], o = 0, r = n.length; o < r; ++o) {
+            var a = n[o],
+              c = { card_id: a.cardId, code: a.code }
+            t.push(c)
+          }
+          i(h.openCard, { card_list: t }, e)
+        },
+        consumeAndShareCard: function(e) {
+          i(h.consumeAndShareCard, { consumedCardId: e.cardId, consumedCode: e.code }, e)
+        },
+        chooseWXPay: function(e) {
+          i(h.chooseWXPay, r(e), e)
+        },
+        openEnterpriseRedPacket: function(e) {
+          i(h.openEnterpriseRedPacket, r(e), e)
+        },
+        startSearchBeacons: function(e) {
+          i(h.startSearchBeacons, { ticket: e.ticket }, e)
+        },
+        stopSearchBeacons: function(e) {
+          i(h.stopSearchBeacons, {}, e)
+        },
+        onSearchBeacons: function(e) {
+          t(h.onSearchBeacons, e)
+        },
+        openEnterpriseChat: function(e) {
+          i('openEnterpriseChat', { useridlist: e.userIds, chatname: e.groupName }, e)
+        },
+        launchMiniProgram: function(e) {
+          i('launchMiniProgram', { targetAppId: e.targetAppId, path: g(e.path), envVersion: e.envVersion }, e)
+        },
+        miniProgram: {
+          navigateBack: function(e) {
+            ;(e = e || {}),
+              f(function() {
+                i('invokeMiniProgramAPI', { name: 'navigateBack', arg: { delta: e.delta || 1 } }, e)
+              })
+          },
+          navigateTo: function(e) {
+            f(function() {
+              i('invokeMiniProgramAPI', { name: 'navigateTo', arg: { url: e.url } }, e)
+            })
+          },
+          redirectTo: function(e) {
+            f(function() {
+              i('invokeMiniProgramAPI', { name: 'redirectTo', arg: { url: e.url } }, e)
+            })
+          },
+          switchTab: function(e) {
+            f(function() {
+              i('invokeMiniProgramAPI', { name: 'switchTab', arg: { url: e.url } }, e)
+            })
+          },
+          reLaunch: function(e) {
+            f(function() {
+              i('invokeMiniProgramAPI', { name: 'reLaunch', arg: { url: e.url } }, e)
+            })
+          },
+          postMessage: function(e) {
+            f(function() {
+              i('invokeMiniProgramAPI', { name: 'postMessage', arg: e.data || {} }, e)
+            })
+          },
+          getEnv: function(n) {
+            f(function() {
+              n({ miniprogram: 'miniprogram' === e.__wxjs_environment })
+            })
+          }
+        }
+      },
+      b = 1,
+      R = {}
+    return (
+      S.addEventListener(
+        'error',
+        function(e) {
+          if (!M) {
+            var n = e.target,
+              i = n.tagName,
+              t = n.src
+            if (('IMG' == i || 'VIDEO' == i || 'AUDIO' == i || 'SOURCE' == i) && -1 != t.indexOf('wxlocalresource://')) {
+              e.preventDefault(), e.stopPropagation()
+              var o = n['wx-id']
+              if ((o || ((o = b++), (n['wx-id'] = o)), R[o])) return
+              ;(R[o] = !0),
+                wx.ready(function() {
+                  wx.getLocalImgData({
+                    localId: t,
+                    success: function(e) {
+                      n.src = e.localData
+                    }
+                  })
+                })
+            }
+          }
+        },
+        !0
+      ),
+      S.addEventListener(
+        'load',
+        function(e) {
+          if (!M) {
+            var n = e.target,
+              i = n.tagName
+            n.src
+            if ('IMG' == i || 'VIDEO' == i || 'AUDIO' == i || 'SOURCE' == i) {
+              var t = n['wx-id']
+              t && (R[t] = !1)
+            }
+          }
+        },
+        !0
+      ),
+      n && (e.wx = e.jWeixin = N),
+      N
+    )
+  }
+})

+ 16 - 0
src/App.vue

@@ -0,0 +1,16 @@
+<template>
+  <div id="app">
+    <router-view/>
+  </div>
+</template>
+
+<script>
+
+export default {
+  name: 'App',
+
+}
+</script>
+<style>
+html,body,#app{height: 100%; margin: 0; padding: 0; background-color: #efefef;}
+</style>

二進制
src/assets/home/head_logo.png


二進制
src/assets/home/logo.png


二進制
src/assets/icon/down.png


+ 1 - 0
src/assets/icon/hspIcon.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="1680177083241" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2768" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M868.43 293.27L895 265.3c3.49-3.69 9.16-3.71 12.67-0.04a9.628 9.628 0 0 1 2.47 4.85l25.76 135.58c0.99 5.1-2.14 10.09-6.98 11.13-1.18 0.25-2.4 0.25-3.59 0l-128.8-27.12c-4.85-1.02-8.01-5.98-7.04-11.09a9.628 9.628 0 0 1 2.47-4.85l25.8-27.16-126.69-133.36-25.8 27.16c-3.49 3.69-9.16 3.71-12.67 0.04a9.628 9.628 0 0 1-2.47-4.85l-25.76-135.58c-0.99-5.1 2.14-10.09 6.98-11.13 1.18-0.25 2.4-0.25 3.59 0L763.74 116c4.85 1.02 8.01 5.98 7.04 11.09a9.628 9.628 0 0 1-2.47 4.85l-26.57 27.96c0 0.01 126.69 133.37 126.69 133.37z m-312.3 148.22h-73.47V185.61c0-26.04-20.06-47.16-44.8-47.16H178.02c-24.74 0-44.8 21.11-44.8 47.16v462.15c0 26.04 20.06 47.16 44.8 47.16h64.51v76.68h-89.6c-49.48 0-89.6-42.23-89.6-94.32V158.54c0-52.09 40.12-94.32 89.6-94.32h313.6c49.48 0 89.6 42.23 89.6 94.32v282.95z" p-id="2769" fill="#bfbfbf"></path><path d="M959.33 582.96v282.95c0 52.09-40.12 94.32-89.6 94.32h-492.8c-49.48 0-89.6-42.23-89.6-94.32V582.96c0-52.09 40.12-94.32 89.6-94.32h492.8c49.49 0 89.6 42.23 89.6 94.32z m-70.51 26.41c0-26.04-20.06-47.16-44.8-47.16H404.98c-24.74 0-44.8 21.11-44.8 47.16v226.36c0 26.04 20.06 47.16 44.8 47.16h439.04c24.74 0 44.8-21.11 44.8-47.16V609.37z" p-id="2770" fill="#bfbfbf"></path></svg>

二進制
src/assets/icon/icon_1001.png


二進制
src/assets/icon/icon_1002.png


二進制
src/assets/icon/icon_1003.png


二進制
src/assets/icon/icon_1004.png


二進制
src/assets/icon/icon_1005.png


二進制
src/assets/icon/icon_1006.png


二進制
src/assets/icon/icon_1007.png


二進制
src/assets/icon/icon_1008.png


二進制
src/assets/icon/icon_1009.png


二進制
src/assets/icon/icon_1010.png


二進制
src/assets/icon/icon_1011.png


二進制
src/assets/icon/icon_1012.png


二進制
src/assets/icon/icon_1013.png


二進制
src/assets/icon/shangsheng.png


二進制
src/assets/icon/师傅安装.png


二進制
src/assets/icon/师傅安装@3x.png


二進制
src/assets/icon/师傅维修.png


二進制
src/assets/icon/师傅维修@3x.png


二進制
src/assets/icon/收费统计.png


二進制
src/assets/icon/收费统计@3x.png


二進制
src/assets/icon/榜单.png


二進制
src/assets/icon/榜单@3x.png


二進制
src/assets/icon/满意度.png


二進制
src/assets/icon/满意度@3x.png


二進制
src/assets/icon/网点安装.png


二進制
src/assets/icon/网点安装@3x.png


二進制
src/assets/icon/网点维修.png


二進制
src/assets/icon/网点维修@3x.png


二進制
src/assets/icon/试用.png


二進制
src/assets/icon/试用@3x.png


+ 253 - 0
src/components/Analysis/Analysis1001.vue

@@ -0,0 +1,253 @@
+<template>
+ <div class="work-order-gather">
+   <van-nav-bar
+       left-arrow
+       left-text="返回"
+       @click-left="goBack"
+       :title="moduleTitle"
+   />
+   <van-radio-group v-model="selDateType" direction="horizontal" class="date-radio">
+     <van-radio name="1">七天</van-radio>
+     <van-radio name="2">近一月</van-radio>
+     <van-radio name="3">自定义</van-radio>
+     <van-button type="primary" v-show="selDateType !== '3'" @click="onConfirm">查询</van-button>
+   </van-radio-group>
+   <van-cell-group class="date-cell-group" v-show="selDateType === '3'">
+     <van-cell title="选择日期区间" :value="selDate" @click="show = true" is-link/>
+     <van-calendar v-model="show" type="range" @confirm="onConfirm" :min-date="minDate" :allow-same-day="true"/>
+   </van-cell-group>
+
+   <div id="drawTotalDivI" style="width: 100%;height:400px;" class="draw-div" v-if="totalDiv"></div>
+   <div id="drawTotalDivR" style="width: 100%;height:400px;" class="draw-div" v-if="totalDiv"></div>
+   <template v-for="drawDiv in drawDivs">
+     <div :id="'drawDivI' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+     <div :id="'drawDivR' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+   </template>
+ </div>
+</template>
+
+<script>
+
+export default {
+  name: "Analysis1001",
+  data() {
+    return {
+      moduleTitle: '',
+      selDateType: '1',
+      minDate: new Date(2020,1,1),
+      show: false,
+      miniReqParams: {
+        //0=今天,1=时间区间
+        timeConditionType: '0',
+        startDate: '',
+        endDate: '',
+        month: ''
+      },
+      drawDivs: [],
+      existCharts: [],
+      totalDiv: false
+    }
+  },
+  methods:{
+    goBack() {
+      this.$router.back();
+    },
+    onConfirm(date) {
+      if(this.selDateType === '3') {
+        const [start, end] = date;
+        this.show = false;
+        this.miniReqParams.timeConditionType = '1'
+        this.miniReqParams.startDate = this.dateUtils.formatDate(start);
+        this.miniReqParams.endDate = this.dateUtils.formatDate(end);
+      } else {
+        if(this.selDateType === '1') {
+          this.miniReqParams.startDate = this.dateUtils.getBeforeDate(7);
+          this.miniReqParams.endDate = this.dateUtils.formatDate(new Date());
+        } else {
+          this.miniReqParams.startDate = this.dateUtils.getBeforeDate(30);
+          this.miniReqParams.endDate = this.dateUtils.formatDate(new Date());
+        }
+      }
+      this.$toast.loading({message: '请求中', overlay: true});
+      this.sendQuery();
+    },
+    sendQuery() {
+      //发送查询请求
+      this.postRequest('/wechat-analysis/work-order-gather', this.miniReqParams).then(resp => {
+        // console.log(resp);
+        if(resp) {
+          if(this.existCharts.length > 0) {
+            this.existCharts.forEach(charts => {
+              charts.dispose();
+            })
+            this.existCharts = [];
+          }
+          let data = resp.data;
+          if(resp.attachObj && resp.attachObj.length > 0) {
+            this.totalDiv = true;
+            this.$nextTick(() => {
+              let totalMap = [{"合计数": resp.attachObj}]
+              this.drawCharts(totalMap, true);
+            });
+          }
+          if(data && data.length > 0) {
+            this.drawDivs = Object.keys(data);
+            this.$nextTick(() => {
+              this.drawCharts(data, false);
+            })
+          } else {
+            this.$toast("查询无数据,请换条件查询!")
+          }
+        }
+      })
+    },
+    drawCharts(data, type) {
+      let titles = ['安装工单','维修工单']
+      let legendGroup = [['新增安装工单数','新增安装设备台数','当天安装完工单数','当天安装完工设备台数'],['新增维修工单数','新增维修设备台','当天维修完工单数','当天维修完工设备台数']];
+      let columnsGroup = [['cut','machineNum','finishCut','finishMachineNum2'],['cutRepair','machineNumRepair','finishCutRepair','finishMachineNumRepair']];
+      //数据组装
+      data.forEach((company, index) => {
+        let key = Object.keys(company);
+        let items = company[key];
+        legendGroup.forEach((legend, i) => {
+          let params = {};
+          //标题
+          params.title = type ? '广佛' + titles[i] + ' ' + key : key + ' ' + titles[i];
+          //线条名称
+          params.legend = legend;
+          params.columns = columnsGroup[i];
+          //日期
+          params.showDates = [];
+          //展示的内容
+          params.series = [];
+          params.columns.forEach((column, columnIndex) => {
+            let columnData = [];
+            items.forEach(item => {
+              columnData.push(item[column]);
+              if(columnIndex == 0) {
+                params.showDates.push(item.udate)
+              }
+            })
+            let obj =  {
+              name: params.legend[columnIndex],
+              type: 'line',
+              stack: column,
+              data: columnData
+            }
+            params.series.push(obj);
+          })
+          if(type) {
+            if(i == 0) {
+              this.myEcharts('drawTotalDivI', params);
+            } else {
+              this.myEcharts('drawTotalDivR', params);
+            }
+          } else {
+            if(i == 0) {
+              this.myEcharts('drawDivI' + index, params);
+            } else {
+              this.myEcharts('drawDivR' + index, params);
+            }
+          }
+        });
+      })
+    },
+    myEcharts(id, params){
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = this.$echarts.init(document.getElementById(id));
+
+      // 指定图表的配置项和数据
+      let option = {
+        title: {
+          text: params.title
+        },
+        tooltip: {
+          trigger: 'axis',
+          confine: true,
+        },
+        legend: {
+          show: true,
+          top: '6%',
+          data: params.legend
+        },
+        grid: {
+          top: '20%',
+          left: '3%',
+          right: '11%',
+          bottom: '1%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          boundaryGap: false,
+          data: params.showDates
+        },
+        yAxis: [{
+          type: 'value',
+          axisTick: {
+            inside: true
+          },
+          scale: true,
+          axisLabel: {
+            margin: 2,
+            formatter: function (value, index) {  
+              //y轴的数值显示格式化主要调整部分
+              if (value >= 10000 && value < 10000000) {
+                value = value / 10000 + "万";
+              }
+              return value;
+            }
+          },
+          "splitLine": {//网格线 默认true
+            "show": true
+          }
+        }],
+        series: params.series
+      };
+
+      // 使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option);
+      this.existCharts.push(myChart);
+    },
+  },
+  computed: {
+    selDate() {
+      if(this.miniReqParams.startDate.length > 0
+          && this.miniReqParams.endDate.length > 0) {
+        return `${this.miniReqParams.startDate}-${this.miniReqParams.endDate}`
+      }
+    }
+  },
+  mounted: function () {
+    this.moduleTitle = window.sessionStorage.getItem("moduleTitle");
+  }
+}
+</script>
+
+<style scoped>
+.date-radio {
+  margin-top: 15px;
+  background-color: #fff;
+  padding: 10px 16px;
+}
+.date-radio>button {
+  margin-left: auto;
+}
+.draw-div {
+  margin-top: 15px;
+  background-color: white;
+}
+.van-nav-bar__content {
+  margin-bottom: 10px;
+}
+.work-order-gather {
+  padding-bottom: 15px;
+  width: 100%;
+}
+.date-cell-group {
+  margin: 15px 0;
+}
+.van-cell__value {
+  color: #999;
+}
+</style>

+ 404 - 0
src/components/Analysis/Analysis1002.vue

@@ -0,0 +1,404 @@
+<template>
+ <div class="work-order-gather">
+   <van-sticky>
+     <van-nav-bar
+         left-arrow
+         left-text="返回"
+         @click-left="goBack"
+         :title="moduleTitle"
+     />
+   </van-sticky>
+   <van-radio-group v-model="selDateType" direction="horizontal" class="date-radio">
+     <van-radio name="1">七天</van-radio>
+     <van-radio name="2">近一月</van-radio>
+     <van-radio name="3">自定义</van-radio>
+     <van-button type="primary" v-show="selDateType !== '3'" @click="onConfirm">查询</van-button>
+   </van-radio-group>
+   <van-cell-group class="date-cell-group" v-show="selDateType === '3'">
+     <van-cell title="选择日期区间" :value="selDate" @click="show = true" is-link/>
+     <van-calendar v-model="show" type="range" @confirm="onConfirm" :min-date="minDate" :allow-same-day="true"/>
+   </van-cell-group>
+   <template v-for="(drawTotalDiv,index) in drawTotalDivs">
+     <div :id="'drawTotalDiv' + index" style="width: 100%;height:400px;" class="draw-div"></div>
+   </template>
+   <template v-for="(drawDiv,index) in drawDivs">
+     <div :id="'drawDiv' + index" style="width: 100%;height:400px;" class="draw-div"></div>
+   </template>
+ </div>
+</template>
+
+<script>
+
+export default {
+  name: "Analysis1002",
+  data() {
+    return {
+      moduleTitle: '',
+      selDateType: '1',
+      minDate: new Date(2020,1,1),
+      show: false,
+      miniReqParams: {
+        //0=今天,1=时间区间
+        timeConditionType: '0',
+        startDate: '',
+        endDate: '',
+        month: ''
+      },
+      drawDivs: [],
+      drawTotalDivs: [],
+      existCharts: []
+    }
+  },
+  methods:{
+    goBack() {
+      this.$router.back();
+    },
+    onConfirm(date) {
+      if(this.selDateType === '3') {
+        const [start, end] = date;
+        this.show = false;
+        this.miniReqParams.timeConditionType = '1';
+        this.miniReqParams.startDate = this.dateUtils.formatDate(start);
+        this.miniReqParams.endDate = this.dateUtils.formatDate(end);
+      } else {
+        if(this.selDateType === '1') {
+          this.miniReqParams.startDate = this.dateUtils.getBeforeDate(7);
+          this.miniReqParams.endDate = this.dateUtils.formatDate(new Date());
+        } else {
+          this.miniReqParams.startDate = this.dateUtils.getBeforeDate(30);
+          this.miniReqParams.endDate = this.dateUtils.formatDate(new Date());
+        }
+      }
+      this.$toast.loading({message: '请求中', overlay: true});
+      this.sendQuery();
+    },
+    sendQuery() {
+      //发送查询请求
+      this.postRequest('/wechat-analysis/power-order-gather', this.miniReqParams).then(resp => {
+        // console.log(resp);
+        if(resp) {
+          this.drawTotalDivs = [];
+          this.drawDivs = [];
+          if(this.existCharts.length > 0) {
+            this.existCharts.forEach(charts => {
+              charts.dispose();
+            })
+            this.existCharts = [];
+          }
+          let data = resp.data;
+          if(resp.attachObj && resp.attachObj.length > 0) {
+            resp.attachObj.forEach((value, index) => {
+              this.drawTotalDivs.push(index);
+            })
+            this.$nextTick(() => {
+              this.drawTotalCharts(resp.attachObj);
+            })
+          }
+          if(data) {
+            console.log(data)
+            data.company.forEach((company, index) => {
+              let pageNum = parseInt((data.legendData[company].length - 1) / 4 + 1);
+              for (let i = 0; i < pageNum; i++) {
+                this.drawDivs.push(i);
+              }
+            })
+            //功率分组显示
+            // data.forEach(value => {
+            //   Object.keys(value).forEach(key => {
+            //     Object.keys(value[key]).forEach((k, i) => {
+            //       this.drawDivs.push(i);
+            //     })
+            //   });
+            // })
+            this.$nextTick(() => {
+              this.drawCharts(data);
+            })
+          } else {
+            this.$toast("查询无数据,请换条件查询!")
+          }
+        }
+      })
+    },
+    drawTotalCharts(data) {
+      data.forEach((company,i) => {
+        Object.keys(company).forEach(companyKey => {
+          let params = {};
+          //标题
+          params.title = companyKey;
+          //线条名称
+          params.legend = ['完工设备台数','新增设备台数']
+          let xAxisData = [];
+          let cutData = [];
+          let numberData = [];
+          company[companyKey].forEach((obj, index) => {
+            xAxisData.push(obj.pnamew);
+            cutData.push(obj.cut);
+            numberData.push(obj.number);
+          })
+          params.xAxis = xAxisData;
+          params.series = [
+            {
+              name: params.legend[0],
+              type: 'bar',
+              data: cutData
+            },
+            {
+              name: params.legend[1],
+              type: 'bar',
+              data: numberData
+            }
+          ];
+          this.totalEcharts('drawTotalDiv' + i, params);
+        })
+      })
+    },
+    drawCharts(data) {
+      let legendGroup = [' 完工设备台数',' 新增设备台数'];
+      let columnsGroup = ['Cut','Number'];
+      let divCount = 0;
+      data.company.forEach((company, companyIndex) => {
+        let paramsList = [];
+        let params = {};
+        params.title = company;
+        params.xAxis = data.xaxisData;
+        params.legend = [];
+        params.series = [];
+        data.legendData[company].forEach((legend, legendIndex) => {
+          let cutLegendName = legend + legendGroup[0];
+          let numberLegendName = legend + legendGroup[1];
+          let cutName = columnsGroup[0] + legend;
+          let numberName = columnsGroup[1] + legend;
+          params.legend.push(cutLegendName);
+          params.legend.push(numberLegendName);
+          params.series.push({
+            name: cutLegendName,
+            type: 'line',
+            stack: cutLegendName,
+            data: data.seriesData[company][cutName]
+          })
+          params.series.push({
+            name: numberLegendName,
+            type: 'line',
+            stack: numberLegendName,
+            data: data.seriesData[company][numberName]
+          })
+          if(legendIndex == (data.legendData[company].length - 1) || (legendIndex + 1) % 4 == 0) {
+            paramsList.push(params);
+            this.myEcharts('drawDiv' + divCount, paramsList, paramsList.length -1);
+            params.legend = [];
+            params.series = [];
+            divCount++;
+          }
+        });
+
+      })
+      //按功率分组展示
+      // let legendGroup = ['完工设备台数','新增设备台数'];
+      // let columnsGroup = ['cut','number'];
+      // let divCount = 0;
+      // data.forEach(company => {
+      //   Object.keys(company).forEach(companyKey => {
+      //     Object.keys(company[companyKey]).forEach((powerKey, index) => {
+      //       let params = {};
+      //       //标题
+      //       params.title = companyKey + " " + powerKey;
+      //       //线条名称
+      //       params.legend = legendGroup;
+      //       params.columns = columnsGroup;
+      //       //日期
+      //       params.showDates = [];
+      //       //展示的内容
+      //       params.series = [];
+      //       params.columns.forEach((column, columnIndex) => {
+      //         let columnData = [];
+      //         company[companyKey][powerKey].forEach(item => {
+      //           columnData.push(item[column]);
+      //           if(columnIndex == 0) {
+      //             params.showDates.push(item.udate)
+      //           }
+      //         })
+      //         let obj =  {
+      //           name: params.legend[columnIndex],
+      //           type: 'line',
+      //           stack: column,
+      //           data: columnData
+      //         }
+      //         params.series.push(obj);
+      //       })
+      //       this.myEcharts('drawDiv' + divCount, params);
+      //       divCount++;
+      //     })
+      //   });
+      // });
+    },
+    myEcharts(id, paramsList, index){
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = this.$echarts.init(document.getElementById(id));
+
+      // 指定图表的配置项和数据
+      let option = {
+        title: {
+          text: paramsList[index].title
+        },
+        tooltip: {
+          trigger: 'axis',
+          confine: true,
+        },
+        legend: {
+          show: true,
+          top: '6%',
+          data: paramsList[index].legend
+        },
+        grid: {
+          top: '20%',
+          left: '3%',
+          right: '11%',
+          bottom: '1%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          boundaryGap: false,
+          data: paramsList[index].xAxis
+        },
+        yAxis: [{
+          type: 'value',
+          axisTick: {
+            inside: true
+          },
+          scale: true,
+          axisLabel: {
+            margin: 2,
+            formatter: function (value, index) {  
+              //y轴的数值显示格式化主要调整部分
+              if (value >= 10000 && value < 10000000) {
+                value = value / 10000 + "万";
+              }
+              return value;
+            }
+          },
+          "splitLine": {//网格线 默认true
+            "show": true
+          }
+        }],
+        series: paramsList[index].series
+      };
+
+      // 使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option);
+      this.existCharts.push(myChart);
+    },
+    totalEcharts(id, params) {
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = this.$echarts.init(document.getElementById(id));
+      let option = {
+        title: {
+          text: params.title + " 安装工单功率汇总"
+        },
+        tooltip: {
+          trigger: 'axis',
+          confine: true,
+          axisPointer: {
+            type: 'cross',
+            crossStyle: {
+              color: '#999'
+            }
+          }
+        },
+        grid: {
+          top: '20%',
+          left: '3%',
+          right: '11%',
+          bottom: '5%',
+          containLabel: true
+        },
+        legend: {
+          top: '6%',
+          data: params.legend
+        },
+        xAxis: [
+          {
+            type: 'category',
+            data: params.xAxis,
+            axisPointer: {
+              type: 'shadow'
+            }
+          }
+        ],
+        yAxis: [
+          {
+            type: 'value',
+            axisLabel: {
+              margin: 2,
+              formatter: function (value, index) {
+                //y轴的数值显示格式化主要调整部分
+                if (value >= 10000 && value < 10000000) {
+                  value = value / 10000 + "万";
+                }
+                return value;
+              }
+            },
+          }
+        ],
+        dataZoom:[
+          {
+            show: true,
+            start: 0,
+            end: 30,
+            height: 10,
+            bottom: 10,
+          },
+          {
+            type: 'inside',
+            start: 0,
+            end: 30,
+          },
+        ],
+        series: params.series
+      };
+
+      myChart.setOption(option);
+      this.existCharts.push(myChart);
+    }
+  },
+  computed: {
+    selDate() {
+      if(this.miniReqParams.startDate.length > 0
+          && this.miniReqParams.endDate.length > 0) {
+        return `${this.miniReqParams.startDate}-${this.miniReqParams.endDate}`
+      }
+    }
+  },
+  mounted: function () {
+    this.moduleTitle = window.sessionStorage.getItem("moduleTitle");
+  }
+}
+</script>
+
+<style scoped>
+.date-radio {
+  margin-top: 15px;
+  background-color: #fff;
+  padding: 10px 16px;
+}
+.date-radio>button {
+  margin-left: auto;
+}
+.draw-div {
+  margin-top: 15px;
+  background-color: white;
+}
+.van-nav-bar__content {
+  margin-bottom: 10px;
+}
+.work-order-gather {
+  padding-bottom: 15px;
+  width: 100%;
+}
+.date-cell-group {
+  margin: 15px 0;
+}
+.van-cell__value {
+  color: #999;
+}
+</style>

+ 248 - 0
src/components/Analysis/Analysis1003.vue

@@ -0,0 +1,248 @@
+<template>
+ <div class="work-order-gather">
+   <van-nav-bar
+       left-arrow
+       left-text="返回"
+       @click-left="goBack"
+       :title="moduleTitle"
+   />
+   <van-radio-group v-model="selDateType" direction="horizontal" class="date-radio">
+     <van-radio name="1">七天</van-radio>
+     <van-radio name="2">近一月</van-radio>
+     <van-radio name="3">自定义</van-radio>
+     <van-button type="primary" v-show="selDateType !== '3'" @click="onConfirm">查询</van-button>
+   </van-radio-group>
+   <van-cell-group class="date-cell-group" v-show="selDateType === '3'">
+     <van-cell title="选择日期区间" :value="selDate" @click="show = true" is-link/>
+     <van-calendar v-model="show" type="range" @confirm="onConfirm" :min-date="minDate" :allow-same-day="true"/>
+   </van-cell-group>
+
+   <template v-for="drawDiv in drawDivs">
+     <div :id="'drawDivI' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+     <div :id="'drawDivIScore' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+     <div :id="'drawDivIScoreRate' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+     <div :id="'drawDivR' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+     <div :id="'drawDivRScore' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+     <div :id="'drawDivRScoreRate' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+   </template>
+ </div>
+</template>
+
+<script>
+
+export default {
+  name: "Analysis1003",
+  data() {
+    return {
+      moduleTitle: '',
+      selDateType: '1',
+      minDate: new Date(2020,1,1),
+      show: false,
+      miniReqParams: {
+        //0=今天,1=时间区间
+        timeConditionType: '0',
+        startDate: '',
+        endDate: '',
+        month: ''
+      },
+      drawDivs: [],
+      existCharts: []
+    }
+  },
+  methods:{
+    goBack() {
+      this.$router.back();
+    },
+    onConfirm(date) {
+      if(this.selDateType === '3') {
+        const [start, end] = date;
+        this.show = false;
+        this.miniReqParams.timeConditionType = '1'
+        this.miniReqParams.startDate = this.dateUtils.formatDate(start);
+        this.miniReqParams.endDate = this.dateUtils.formatDate(end);
+      } else {
+        if(this.selDateType === '1') {
+          this.miniReqParams.startDate = this.dateUtils.getBeforeDate(7);
+          this.miniReqParams.endDate = this.dateUtils.formatDate(new Date());
+        } else {
+          this.miniReqParams.startDate = this.dateUtils.getBeforeDate(30);
+          this.miniReqParams.endDate = this.dateUtils.formatDate(new Date());
+        }
+      }
+      this.$toast.loading({message: '请求中', overlay: true});
+      this.sendQuery();
+    },
+    sendQuery() {
+      //发送查询请求
+      this.postRequest('/wechat-analysis/evaluate-order-gather', this.miniReqParams).then(resp => {
+        if(resp) {
+          if(this.existCharts.length > 0) {
+            this.existCharts.forEach(charts => {
+              charts.dispose();
+            })
+            this.existCharts = [];
+          }
+          let data = resp.data;
+          if(data && data.length > 0) {
+            this.drawDivs = Object.keys(data);
+            this.$nextTick(() => {
+              this.drawCharts(data);
+            })
+          } else {
+            this.$toast("查询无数据,请换条件查询!")
+          }
+        }
+      })
+    },
+    drawCharts(data) {
+      let titleGroup = ['安装工单趋势图','安装评价数','安装评价率','维修工单趋势图','维修评价数','维修评价率']
+      let legendGroup = [['完工安装工单数','安装完工设备数','安装完工评价工单数'],['安装好评','安装中评','安装差评'],['安装评价率','安装好评率','安装差评率']
+        ,['完工维修工单数','维修完工设备数','维修评价工单数'],['维修好评','维修中评','维修差评'],['维修评价率','维修好评率','维修差评率']];
+      let columnsGroup = [['azcut','azmachine_num','azraisecut'],['azcut1','azcut2','azcut3'],['azrate','azrate1','azrate3'],
+        ['wxcut','wxmachine_num','wxraisecut'],['wxcut1','wxcut2','wxcut3'],['wxrate','wxrate1','wxrate3']];
+      //数据组装
+      data.forEach((company, index) => {
+        let key = Object.keys(company);
+        let items = company[key];
+        legendGroup.forEach((legend, i) => {
+          let params = {};
+          //标题
+          params.title = key + ' ' + titleGroup[i];
+          //线条名称
+          params.legend = legend;
+          params.columns = columnsGroup[i];
+          //日期
+          params.showDates = [];
+          //展示的内容
+          params.series = [];
+          params.columns.forEach((column, columnIndex) => {
+            let columnData = [];
+            items.forEach(item => {
+              columnData.push(item[column]);
+              if(columnIndex == 0) {
+                params.showDates.push(item.udate)
+              }
+            })
+            let obj =  {
+              name: params.legend[columnIndex],
+              type: 'line',
+              stack: column,
+              data: columnData
+            }
+            params.series.push(obj);
+          })
+          if(i == 0) {
+            this.myEcharts('drawDivI' + index, params);
+          } else if(i == 1) {
+            this.myEcharts('drawDivIScore' + index, params);
+          } else if(i == 2) {
+            this.myEcharts('drawDivIScoreRate' + index, params);
+          } else if(i == 3) {
+            this.myEcharts('drawDivR' + index, params);
+          } else if(i == 4) {
+            this.myEcharts('drawDivRScore' + index, params);
+          } else {
+            this.myEcharts('drawDivRScoreRate' + index, params);
+          }
+        });
+      })
+    },
+    myEcharts(id, params){
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = this.$echarts.init(document.getElementById(id));
+
+      // 指定图表的配置项和数据
+      let option = {
+        title: {
+          text: params.title
+        },
+        tooltip: {
+          trigger: 'axis',
+          confine: true,
+        },
+        legend: {
+          show: true,
+          top: '6%',
+          data: params.legend
+        },
+        grid: {
+          top: '20%',
+          left: '3%',
+          right: '11%',
+          bottom: '1%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          boundaryGap: false,
+          data: params.showDates
+        },
+        yAxis: [{
+          type: 'value',
+          axisTick: {
+            inside: true
+          },
+          scale: true,
+          axisLabel: {
+            margin: 2,
+            formatter: function (value, index) {  
+              //y轴的数值显示格式化主要调整部分
+              if (value >= 10000 && value < 10000000) {
+                value = value / 10000 + "万";
+              }
+              return value;
+            }
+          },
+          "splitLine": {//网格线 默认true
+            "show": true
+          }
+        }],
+        series: params.series
+      };
+
+      // 使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option);
+      this.existCharts.push(myChart);
+    },
+  },
+  computed: {
+    selDate() {
+      if(this.miniReqParams.startDate.length > 0
+          && this.miniReqParams.endDate.length > 0) {
+        return `${this.miniReqParams.startDate}-${this.miniReqParams.endDate}`
+      }
+    }
+  },
+  mounted: function () {
+    this.moduleTitle = window.sessionStorage.getItem("moduleTitle");
+  }
+}
+</script>
+
+<style scoped>
+.date-radio {
+  margin-top: 15px;
+  background-color: #fff;
+  padding: 10px 16px;
+}
+.date-radio>button {
+  margin-left: auto;
+}
+.draw-div {
+  margin-top: 15px;
+  background-color: white;
+}
+.van-nav-bar__content {
+  margin-bottom: 10px;
+}
+.work-order-gather {
+  padding-bottom: 15px;
+  width: 100%;
+}
+.date-cell-group {
+  margin: 15px 0;
+}
+.van-cell__value {
+  color: #999;
+}
+</style>

+ 339 - 0
src/components/Analysis/Analysis1004.vue

@@ -0,0 +1,339 @@
+<template>
+ <div class="work-order-gather">
+   <van-nav-bar
+       left-arrow
+       left-text="返回"
+       @click-left="goBack"
+       :title="moduleTitle"
+   />
+<!--   <van-radio-group v-model="selDateType" direction="horizontal" class="date-radio">-->
+<!--     <van-radio name="1">七天</van-radio>-->
+<!--     <van-radio name="2">近一月</van-radio>-->
+<!--     <van-radio name="3">自定义</van-radio>-->
+<!--     <van-button type="primary" v-show="selDateType !== '3'" @click="onConfirm">查询</van-button>-->
+<!--   </van-radio-group>-->
+<!--   <van-cell-group class="date-cell-group" v-show="selDateType === '3'">-->
+<!--     <van-cell title="选择日期区间" :value="selDate" @click="show = true" is-link/>-->
+<!--     <van-calendar v-model="show" type="range" @confirm="onConfirm" :min-date="minDate" :allow-same-day="true"/>-->
+<!--   </van-cell-group>-->
+
+   <div id="drawTotalDivI" style="width: 100%;height:400px;" class="draw-div" v-if="totalDiv"></div>
+   <div id="drawTotalDivR" style="width: 100%;height:400px;" class="draw-div" v-if="totalDiv"></div>
+   <template v-for="drawDiv in drawDivs">
+     <div :id="'drawDivI' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+     <div :id="'drawDivR' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+   </template>
+ </div>
+</template>
+
+<script>
+
+export default {
+  name: "Analysis1004",
+  data() {
+    return {
+      moduleTitle: '',
+      show: false,
+      miniReqParams: {
+        //0=今天,1=时间区间
+        timeConditionType: '0',
+        startDate: '',
+        endDate: '',
+        month: ''
+      },
+      drawDivs: [],
+      existCharts: [],
+      totalDiv: false
+    }
+  },
+  methods:{
+    goBack() {
+      this.$router.back();
+    },
+    // onConfirm(date) {
+    //   if(this.selDateType === '3') {
+    //     const [start, end] = date;
+    //     this.show = false;
+    //     this.miniReqParams.timeConditionType = '1'
+    //     this.miniReqParams.startDate = this.formatDate(start);
+    //     this.miniReqParams.endDate = this.formatDate(end);
+    //   } else {
+    //     if(this.selDateType === '1') {
+    //       this.miniReqParams.startDate = this.dateUtils.getBeforeDate(7);
+    //       this.miniReqParams.endDate = this.dateUtils.formatDate(new Date());
+    //     } else {
+    //       this.miniReqParams.startDate = this.dateUtils.getCurrentMonthFirstDay();
+    //       this.miniReqParams.endDate = this.dateUtils.formatDate(new Date());
+    //     }
+    //   }
+    //   this.$toast.loading({message: '请求中', overlay: true});
+    //   this.sendQuery();
+    // },
+    sendQuery() {
+      //发送查询请求
+      this.postRequest('/wechat-analysis/cd-work-order-gather', this.miniReqParams).then(resp => {
+        // console.log(resp);
+        if(resp) {
+          if(this.existCharts.length > 0) {
+            this.existCharts.forEach(charts => {
+              charts.dispose();
+            })
+            this.existCharts = [];
+          }
+          let data = resp.data;
+          if(resp.attachObj && resp.attachObj.length > 0) {
+            this.totalDiv = true;
+            this.$nextTick(() => {
+              let totalMap = [{"合计数": resp.attachObj}]
+              this.drawCharts(totalMap, true);
+            });
+          }
+          if(data && data.length > 0) {
+            this.drawDivs = Object.keys(data);
+            this.$nextTick(() => {
+              this.drawCharts(data, false);
+            })
+          } else {
+            this.$toast("查询无数据,请换条件查询!")
+          }
+        }
+      })
+    },
+    drawCharts(data, type) {
+      let titles = ['安装工单','维修工单']
+      let legendGroup = [['新增安装工单数','新增安装设备台数','当天安装完工单数','当天安装完工设备台数'],['新增维修工单数','新增维修设备台','当天维修完工单数','当天维修完工设备台数']];
+      let columnsGroup = [['cut','machineNum','finishCut','finishMachineNum2'],['cutRepair','machineNumRepair','finishCutRepair','finishMachineNumRepair']];
+      //数据组装
+      data.forEach((company, index) => {
+        let key = Object.keys(company);
+        let items = company[key];
+        legendGroup.forEach((legend, i) => {
+          let params = {};
+          //标题
+          params.title = type ? '广佛' + titles[i] + ' ' + key : key + ' ' + titles[i];
+          //线条名称
+          params.legend = legend;
+          params.columns = columnsGroup[i];
+          //日期
+          params.showDates = [];
+          //展示的内容
+          params.series = [];
+          params.columns.forEach((column, columnIndex) => {
+            let columnData = [];
+            items.forEach(item => {
+              columnData.push(item[column]);
+              if(columnIndex == 0) {
+                params.showDates.push(item.udate.substring(8))
+              }
+            })
+            let obj =  {
+              name: params.legend[columnIndex],
+              type: 'bar',
+              stack: column,
+              data: columnData
+            }
+            params.series.push(obj);
+          })
+          if(type) {
+            if(i == 0) {
+              this.myEcharts('drawTotalDivI', params);
+            } else {
+              this.myEcharts('drawTotalDivR', params);
+            }
+          } else {
+            if(i == 0) {
+              this.myEcharts('drawDivI' + index, params);
+            } else {
+              this.myEcharts('drawDivR' + index, params);
+            }
+          }
+        });
+      })
+    },
+    myEcharts(id, params){
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = this.$echarts.init(document.getElementById(id));
+      let app = {};
+      let posList = [
+        'left', 'right', 'top', 'bottom',
+        'inside',
+        'insideTop', 'insideLeft', 'insideRight', 'insideBottom',
+        'insideTopLeft', 'insideTopRight', 'insideBottomLeft', 'insideBottomRight'
+      ];
+      app.configParameters = {
+        rotate: {
+          min: -90,
+          max: 90
+        },
+        align: {
+          options: {
+            left: 'left',
+            center: 'center',
+            right: 'right'
+          }
+        },
+        verticalAlign: {
+          options: {
+            top: 'top',
+            middle: 'middle',
+            bottom: 'bottom'
+          }
+        },
+        position: {
+          options: posList.reduce(function (map, pos) {
+            map[pos] = pos;
+            return map;
+          }, {})
+        },
+        distance: {
+          min: 0,
+          max: 100
+        }
+      };
+
+      app.config = {
+        rotate: 0,
+        align: 'left',
+        verticalAlign: 'middle',
+        position: 'insideLeft',
+        distance: 15,
+        onChange: function () {
+          let labelOption = {
+            normal: {
+              rotate: app.config.rotate,
+              align: app.config.align,
+              verticalAlign: app.config.verticalAlign,
+              position: app.config.position,
+              distance: app.config.distance
+            }
+          };
+          myChart.setOption({
+            series: [{
+              label: labelOption
+            }, {
+              label: labelOption
+            }, {
+              label: labelOption
+            }, {
+              label: labelOption
+            }]
+          });
+        }
+      };
+
+      let labelOption = {
+        show: true,
+        position: app.config.position,
+        distance: app.config.distance,
+        align: app.config.align,
+        verticalAlign: app.config.verticalAlign,
+        rotate: app.config.rotate,
+        formatter: '{c}  {name|{a}}',
+        fontSize: 16,
+        rich: {
+          name: {
+          }
+        }
+      };
+      params.series.forEach(value => {
+        value.label = labelOption;
+      })
+      // 指定图表的配置项和数据
+      let option = {
+        title: {
+          text: params.title
+        },
+        tooltip: {
+          trigger: 'axis',
+          confine: true,
+          axisPointer: {
+            type: 'shadow'
+          }
+        },
+        legend: {
+          show: true,
+          top: '6%',
+          data: params.legend
+        },
+        grid: {
+          top: '20%',
+          left: '3%',
+          right: '11%',
+          bottom: '1%',
+          containLabel: true
+        },
+        yAxis: {
+          type: 'category',
+          boundaryGap: false,
+          data: params.showDates
+        },
+        xAxis: [{
+          type: 'value',
+          axisTick: {
+            inside: true
+          },
+          scale: true,
+          axisLabel: {
+            margin: 2,
+            formatter: function (value, index) {  
+              //y轴的数值显示格式化主要调整部分
+              if (value >= 10000 && value < 10000000) {
+                value = value / 10000 + "万";
+              }
+              return value;
+            }
+          },
+          "splitLine": {//网格线 默认true
+            "show": true
+          }
+        }],
+        series: params.series
+      };
+
+      // 使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option);
+      this.existCharts.push(myChart);
+    },
+  },
+  computed: {
+    // selDate() {
+    //   if(this.miniReqParams.startDate.length > 0
+    //       && this.miniReqParams.endDate.length > 0) {
+    //     return `${this.miniReqParams.startDate}-${this.miniReqParams.endDate}`
+    //   }
+    // }
+  },
+  mounted: function () {
+    this.sendQuery();
+    this.moduleTitle = window.sessionStorage.getItem("moduleTitle");
+  }
+}
+</script>
+
+<style scoped>
+.date-radio {
+  margin-top: 15px;
+  background-color: #fff;
+  padding: 10px 16px;
+}
+.date-radio>button {
+  margin-left: auto;
+}
+.draw-div {
+  margin-top: 15px;
+  background-color: white;
+}
+.van-nav-bar__content {
+  margin-bottom: 10px;
+}
+.work-order-gather {
+  padding-bottom: 15px;
+  width: 100%;
+}
+.date-cell-group {
+  margin: 15px 0;
+}
+.van-cell__value {
+  color: #999;
+}
+</style>

+ 284 - 0
src/components/Analysis/Analysis1005.vue

@@ -0,0 +1,284 @@
+<template>
+  <div class="month-finish-order-gather">
+    <van-sticky>
+      <van-nav-bar
+          left-arrow
+          left-text="返回"
+          @click-left="goBack"
+          :title="moduleTitle"
+      />
+    </van-sticky>
+    <van-cell-group style="margin: 15px 0;">
+      <van-cell title="开始月" :value="miniReqParams.startMonth" is-link @click="showSelMonthPopup('s')"/>
+      <van-cell title="结束月" :value="miniReqParams.endMonth" is-link @click="showSelMonthPopup('e')"/>
+      <div style="text-align: center;">
+        <van-button type="primary" @click="sendQuery" size="normal">查询</van-button>
+      </div>
+    </van-cell-group>
+    <van-popup v-model="showStartMonth" position="bottom">
+      <van-datetime-picker
+          v-model="startMonth"
+          type="year-month"
+          title="开始年月"
+          :min-date="minDate"
+          :max-date="maxDate"
+          :formatter="formatter"
+          @cancel="monthPopupCancel('s')"
+          @confirm="monthPopupSConfirm"
+      />
+    </van-popup>
+    <van-popup v-model="showEndMonth" position="bottom">
+      <van-datetime-picker
+          v-model="endMonth"
+          type="year-month"
+          title="结束年月"
+          :min-date="minDate"
+          :max-date="maxDate"
+          :formatter="formatter"
+          @cancel="monthPopupCancel('e')"
+          @confirm="monthPopupEConfirm"
+      />
+    </van-popup>
+
+    <div id="drawDivI" style="width: 100%;height:400px;" class="draw-div"></div>
+    <div id="drawDivR" style="width: 100%;height:400px;" class="draw-div"></div>
+
+  </div>
+</template>
+
+<script>
+import {getRandomColor} from "@/utils/common";
+
+export default {
+  name: "Analysis1005",
+  data() {
+    return {
+      moduleTitle: '',
+      minDate: new Date(2020, 0, 1),
+      maxDate: new Date(2025, 10, 1),
+      showStartMonth: false,
+      showEndMonth: false,
+      startMonth: new Date(),
+      endMonth: new Date(),
+      miniReqParams: {
+        startMonth: '',
+        endMonth: ''
+      },
+      drawDivs: [],
+      existCharts: []
+    }
+  },
+  methods: {
+    goBack() {
+      this.$router.back();
+    },
+    formatter(type, val) {
+      if (type === 'year') {
+        return `${val}年`;
+      } else if (type === 'month') {
+        return `${val}月`;
+      }
+      return val;
+    },
+    showSelMonthPopup(type) {
+      if(type === 's') {
+        this.showStartMonth = true;
+      } else {
+        this.showEndMonth = true;
+      }
+    },
+    monthPopupCancel(type) {
+      if(type === 's') {
+        this.showStartMonth = false;
+      } else {
+        this.showEndMonth = false;
+      }
+    },
+    monthPopupSConfirm(value) {
+      let month = value.getMonth()+1;
+      if(month < 10) month = '0' + month;
+      this.miniReqParams.startMonth = value.getFullYear() + '' + month;
+      this.showStartMonth = false;
+    },
+    monthPopupEConfirm(value) {
+      let month = value.getMonth()+1;
+      if(month < 10) month = '0' + month;
+      this.miniReqParams.endMonth = value.getFullYear() + '' + month;
+      this.showEndMonth = false;
+    },
+    sendQuery() {
+      //检查月份和限制半年
+      let startTime = new Date(this.miniReqParams.startMonth.substring(0,4) + "/" + this.miniReqParams.startMonth.substring(4)).getTime();
+      let endTime = new Date(this.miniReqParams.endMonth.substring(0,4) + "/" + this.miniReqParams.endMonth.substring(4)).getTime();
+      if(endTime < startTime) {
+        this.$notify({message: '结束月份不能少于开始月份', type: 'danger'});
+        return;
+      }
+      if((endTime - startTime) > 15046400000) {
+        this.$notify({message: '限制月份区间在6个月内', type: 'danger'});
+        return;
+      }
+
+      this.$toast.loading({ message: '请求中', overlay: true, duration:0 });
+      // //发送查询请求
+      this.postRequest('/wechat-analysis/month-finish-order-gather', this.miniReqParams).then(resp => {
+        console.log(resp);
+        if(resp) {
+          if(this.existCharts.length > 0) {
+            this.existCharts.forEach(charts => {
+              charts.dispose();
+            })
+            this.existCharts = [];
+          }
+          if(resp.data) {
+            this.$nextTick(() => {
+              this.drawCharts(resp.data);
+              this.$toast.clear();
+            })
+          } else {
+            this.$toast("查询无数据,请换条件查询!")
+          }
+        }
+      })
+    },
+    drawCharts(data) {
+      //数据组装
+      let rgbs = ['rgb(241, 194, 1)','rgb(241, 194, 174)','rgb(130, 200, 231)','rgb(99, 152, 123)','rgb(251, 118, 123)'];
+      let dataMap = data.data;
+      Object.keys(dataMap).forEach(dataKey => {
+        let dataList = dataMap[dataKey];
+        let params = {};
+        //标题
+        params.title = dataKey === 'az' ? '安装' : '维修';
+        //名称
+        params.legend = data.legend;
+        //展示的内容
+        params.series = [];
+        params.legend.forEach((legendData, legendIndex) => {
+          let obj = {};
+          obj.name = legendData;
+          obj.data = dataList[legendIndex];
+          obj.type = 'scatter';
+          obj.symbolSize = function (data) {
+            return Math.sqrt(data[2]*10000) / 5e2;
+          };
+          obj.emphasis = {
+            focus: 'series',
+            label: {
+              show: true,
+              formatter: function (param) {
+                return param.data[3];
+              },
+              position: 'top'
+            }
+          }
+          obj.itemStyle = {
+            shadowBlur: 10,
+            shadowColor: 'rgba(120, 36, 50, 0.5)',
+            shadowOffsetY: 5,
+            color: new this.$echarts.graphic.RadialGradient(0.4, 0.3, 1, [{
+              offset: 0,
+              color: getRandomColor()
+            }, {
+              offset: 1,
+              color: getRandomColor()
+            }])
+          }
+
+          params.series.push(obj);
+        })
+        if(dataKey == 'az') {
+          this.myEcharts('drawDivI', params);
+        } else {
+          this.myEcharts('drawDivR', params);
+        }
+      })
+
+    },
+    myEcharts(id, params){
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = this.$echarts.init(document.getElementById(id));
+
+      // 指定图表的配置项和数据
+      let option = {
+        backgroundColor: new this.$echarts.graphic.RadialGradient(0.3, 0.3, 0.8, [{
+          offset: 0,
+          color: '#f7f8fa'
+        }, {
+          offset: 1,
+          color: '#cdd0d5'
+        }]),
+        title: {
+          text: params.title,
+          left: '5%',
+          subtext: '竖轴代表人数,横轴代表工单数'
+        },
+        legend: {
+          right: '10%',
+          top: '1%',
+          data: params.legend
+        },
+        grid: {
+          left: '11%',
+          top: '15%'
+        },
+        xAxis: {
+          splitLine: {
+            lineStyle: {
+              type: 'dashed'
+            }
+          },
+          axisLabel: {
+            formatter: function (value, index) {
+              //X轴的数值显示格式化主要调整部分
+              if (value >= 10000 && value < 10000000) {
+                value = value / 10000 + "万";
+              }
+              return value;
+            }
+          },
+        },
+        yAxis: {
+          splitLine: {
+            lineStyle: {
+              type: 'dashed'
+            }
+          },
+          scale: true,
+          axisLabel: {
+            formatter: function (value, index) {
+              //Y轴的数值显示格式化主要调整部分
+              if (value >= 10000 && value < 10000000) {
+                value = value / 10000 + "万";
+              }
+              return value;
+            }
+          },
+        },
+        series: params.series
+      };
+
+      // 使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option);
+      this.existCharts.push(myChart);
+    }
+  },
+  mounted() {
+    this.moduleTitle = window.sessionStorage.getItem("moduleTitle");
+  }
+}
+</script>
+
+<style scoped>
+.month-finish-order-gather {
+  padding-bottom: 15px;
+  width: 100%;
+}
+.draw-div {
+  margin-top: 15px;
+  background-color: white;
+}
+.van-cell-group {
+
+}
+</style>

+ 264 - 0
src/components/Analysis/Analysis1006.vue

@@ -0,0 +1,264 @@
+<template>
+  <div class="work-order-gather">
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" :title="moduleTitle" />
+    <van-radio-group v-model="selDateType" direction="horizontal" class="date-radio">
+      <van-radio name="1">七天</van-radio>
+      <van-radio name="2">近一月</van-radio>
+      <van-radio name="3">自定义</van-radio>
+      <van-button type="primary" v-show="selDateType !== '3'" @click="onConfirm">查询</van-button>
+    </van-radio-group>
+    <van-cell-group class="date-cell-group" v-show="selDateType === '3'">
+      <van-cell title="选择日期区间" :value="selDate" @click="show = true" is-link />
+      <van-calendar v-model="show" type="range" @confirm="onConfirm" :min-date="minDate" :allow-same-day="true" />
+    </van-cell-group>
+
+    <template v-for="drawDiv in drawDivs">
+      <div :id="'drawDiv' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+      <div :id="'drawDivTotal' + drawDiv" style="width: 100%;height:400px;" class="draw-div"></div>
+    </template>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "Analysis1006",
+  data() {
+    return {
+      moduleTitle: "",
+      selDateType: "1",
+      minDate: new Date(2020, 1, 1),
+      show: false,
+      miniReqParams: {
+        //0=今天,1=时间区间
+        timeConditionType: "0",
+        startDate: "",
+        endDate: "",
+        month: "",
+      },
+      drawDivs: [],
+      existCharts: [],
+      totalDiv: false,
+    };
+  },
+  methods: {
+    goBack() {
+      this.$router.back();
+    },
+    onConfirm(date) {
+      if (this.selDateType === "3") {
+        const [start, end] = date;
+        this.show = false;
+        this.miniReqParams.timeConditionType = "1";
+        this.miniReqParams.startDate = this.dateUtils.formatDate(start);
+        this.miniReqParams.endDate = this.dateUtils.formatDate(end);
+      } else {
+        if (this.selDateType === "1") {
+          this.miniReqParams.startDate = this.dateUtils.getBeforeDate(7);
+          this.miniReqParams.endDate = this.dateUtils.formatDate(new Date());
+        } else {
+          this.miniReqParams.startDate = this.dateUtils.getBeforeDate(30);
+          this.miniReqParams.endDate = this.dateUtils.formatDate(new Date());
+        }
+      }
+      this.$toast.loading({ message: "请求中", overlay: true });
+      this.sendQuery();
+    },
+    sendQuery() {
+      //发送查询请求
+      this.postRequest(
+        "/wechat-analysis/test-order-gather",
+        this.miniReqParams
+      ).then((resp) => {
+        // console.log(resp);
+        if (resp) {
+          if (this.existCharts.length > 0) {
+            this.existCharts.forEach((charts) => {
+              charts.dispose();
+            });
+            this.existCharts = [];
+          }
+          let data = resp.data;
+          if (data) {
+            this.drawDivs = Object.keys(data.dataList);
+            this.$nextTick(() => {
+              this.drawCharts(data, false);
+            });
+          } else {
+            this.$toast("查询无数据,请换条件查询!");
+          }
+        }
+      });
+    },
+    drawCharts(data) {
+      let dataSourceGroup = ["广佛系统", "总部系统"];
+      let legendGroup = [
+        "安装工单",
+        "安装设备台数",
+        "辅材电子支付单数",
+        "维修工单",
+        "维修台数",
+        "保外维修电子支付单数",
+      ];
+      data.dataList.forEach((website, websiteIndex) => {
+        let key = Object.keys(website);
+        let params = {};
+        params.showDates = data.xaxis;
+        dataSourceGroup.forEach((dataSource, dataSourceIndex) => {
+          let title =
+            data.websiteNumberSet[websiteIndex].substring(8, 10) +
+            data.websiteNumberSet[websiteIndex].substring(
+              21,
+              data.websiteNumberSet[websiteIndex].length
+            );
+          params.title = title + "-" + dataSourceGroup[dataSourceIndex];
+          params.legend = legendGroup;
+          params.series = [];
+          //插入安装工单
+          params.series.push({
+            name: legendGroup[0],
+            type: "line",
+            data: website[key]["orderNumber" + (dataSourceIndex + 1)],
+          });
+          //插入安装设备台数
+          params.series.push({
+            name: legendGroup[1],
+            type: "line",
+            data: website[key]["machineNum" + (dataSourceIndex + 1)],
+          });
+          //插入辅材电子支付单数
+          params.series.push({
+            name: legendGroup[2],
+            type: "line",
+            data: website[key]["cutFc" + (dataSourceIndex + 1)],
+          });
+          //插入维修工单
+          params.series.push({
+            name: legendGroup[3],
+            type: "line",
+            data: website[key]["orderNumberRepair" + (dataSourceIndex + 1)],
+          });
+          //插入维修台数
+          params.series.push({
+            name: legendGroup[4],
+            type: "line",
+            data: website["machineNumRepair" + (dataSourceIndex + 1)],
+          });
+          //插入保外维修电子支付单数
+          params.series.push({
+            name: legendGroup[5],
+            type: "line",
+            data: website[key]["cutWx" + (dataSourceIndex + 1)],
+          });
+          console.log(params);
+          if (dataSourceIndex == 0) {
+            this.myEcharts("drawDiv" + websiteIndex, params);
+          } else {
+            this.myEcharts("drawDivTotal" + websiteIndex, params);
+          }
+        });
+      });
+    },
+    myEcharts(id, params) {
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = this.$echarts.init(document.getElementById(id));
+
+      // 指定图表的配置项和数据
+      let option = {
+        title: {
+          text: params.title,
+        },
+        tooltip: {
+          trigger: "axis",
+          confine: true,
+        },
+        legend: {
+          show: true,
+          top: "6%",
+          data: params.legend,
+        },
+        grid: {
+          top: "20%",
+          left: "3%",
+          right: "11%",
+          bottom: "1%",
+          containLabel: true,
+        },
+        xAxis: {
+          type: "category",
+          boundaryGap: false,
+          data: params.showDates,
+        },
+        yAxis: [
+          {
+            type: "value",
+            axisTick: {
+              inside: true,
+            },
+            scale: true,
+            axisLabel: {
+              margin: 2,
+              formatter: function (value, index) {
+                //y轴的数值显示格式化主要调整部分
+                if (value >= 10000 && value < 10000000) {
+                  value = value / 10000 + "万";
+                }
+                return value;
+              },
+            },
+            splitLine: {
+              //网格线 默认true
+              show: true,
+            },
+          },
+        ],
+        series: params.series,
+      };
+
+      // 使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option);
+      this.existCharts.push(myChart);
+    },
+  },
+  computed: {
+    selDate() {
+      if (
+        this.miniReqParams.startDate.length > 0 &&
+        this.miniReqParams.endDate.length > 0
+      ) {
+        return `${this.miniReqParams.startDate}-${this.miniReqParams.endDate}`;
+      }
+    },
+  },
+  mounted: function () {
+    this.moduleTitle = window.sessionStorage.getItem("moduleTitle");
+  },
+};
+</script>
+
+<style scoped>
+.date-radio {
+  margin-top: 15px;
+  background-color: #fff;
+  padding: 10px 16px;
+}
+.date-radio > button {
+  margin-left: auto;
+}
+.draw-div {
+  margin-top: 15px;
+  background-color: white;
+}
+.van-nav-bar__content {
+  margin-bottom: 10px;
+}
+.work-order-gather {
+  padding-bottom: 15px;
+  width: 100%;
+}
+.date-cell-group {
+  margin: 15px 0;
+}
+.van-cell__value {
+  color: #999;
+}
+</style>

+ 298 - 0
src/components/Analysis/Analysis1007.vue

@@ -0,0 +1,298 @@
+<template>
+  <div class="free-order-gather">
+    <van-nav-bar
+        left-arrow
+        left-text="返回"
+        @click-left="goBack"
+        :title="moduleTitle"
+    />
+    <van-radio-group v-model="selDateType" direction="horizontal" class="date-radio">
+      <van-radio name="1">七天</van-radio>
+      <van-radio name="2">近一月</van-radio>
+      <van-radio name="3">自定义</van-radio>
+      <van-button type="primary" v-show="selDateType !== '3'" @click="onConfirm">查询</van-button>
+    </van-radio-group>
+    <van-cell-group class="date-cell-group" v-show="selDateType === '3'">
+      <van-cell title="选择日期区间" :value="selDate" @click="show = true" is-link/>
+      <van-calendar v-model="show" type="range" @confirm="onConfirm" :min-date="minDate" :allow-same-day="true"/>
+    </van-cell-group>
+
+    <div id="drawDivWXTotal" style="width: 100%;height:400px;" class="draw-div" v-show="isLoad"></div>
+    <div id="drawDivAZTotal" style="width: 100%;height:400px;" class="draw-div" v-show="isLoad"></div>
+    <template v-for="(drawDiv, index) in drawDivs">
+      <div :id="'drawWXDiv' + index" style="width: 100%;height:400px;" class="draw-div"></div>
+      <div :id="'drawAZDiv' + index" style="width: 100%;height:400px;" class="draw-div"></div>
+    </template>
+    <div style="height: 50px;"></div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "Analysis1007",
+  data() {
+    return {
+      moduleTitle: '',
+      selDateType: '1',
+      minDate: new Date(2020,1,1),
+      show: false,
+      miniReqParams: {
+        //0=今天,1=时间区间
+        timeConditionType: '0',
+        startDate: '',
+        endDate: '',
+        month: ''
+      },
+      drawDivs: [],
+      existCharts: [],
+      isLoad: false,
+      xAxis: []
+    }
+  },
+  methods: {
+    goBack() {
+      this.$router.back();
+    },
+    onConfirm(date) {
+      if(this.selDateType === '3') {
+        const [start, end] = date
+        this.show = false
+        this.miniReqParams.timeConditionType = '1'
+        this.miniReqParams.startDate = this.dateUtils.formatDate(start)
+        this.miniReqParams.endDate = this.dateUtils.formatDate(end)
+      } else {
+        if(this.selDateType === '1') {
+          this.miniReqParams.startDate = this.dateUtils.getBeforeDate(7)
+          this.miniReqParams.endDate = this.dateUtils.formatDate(new Date())
+        } else {
+          this.miniReqParams.startDate = this.dateUtils.getBeforeDate(30)
+          this.miniReqParams.endDate = this.dateUtils.formatDate(new Date())
+        }
+      }
+      this.$toast.loading({ message: '请求中', overlay: true, duration: 0 })
+      this.sendQuery();
+    },
+    sendQuery() {
+      //发送查询请求
+      this.postRequest('/wechat-analysis/fee-order-gather', this.miniReqParams).then(resp => {
+        if(resp) {
+          if(this.existCharts.length > 0) {
+            this.existCharts.forEach(charts => {
+              charts.dispose()
+            })
+            this.existCharts = []
+          }
+          const data = resp.data
+          if(data) {
+            this.drawDivs = Object.keys(data.data)
+            this.isLoad = true
+            this.xAxis = data.xaxis
+            this.$nextTick(() => {
+              this.drawTotalDivs(data.sumData);
+              this.drawCharts(data.data);
+            })
+          } else {
+            this.$toast("查询无数据,请换条件查询!")
+          }
+        }
+        this.$toast.clear()
+      })
+    },
+    drawTotalDivs(data) {
+      const legendGroup = ['工单数','收费订单数','收费金额']
+      for (let i = 0; i < 2; i++) {
+        let params = {}
+        let series = [];
+        let chargeCount = []
+        let workCount = []
+        let chargeAmount = []
+        // 遍历出对应列
+        data.forEach(value => {
+          if (i === 0) {
+            chargeCount.push(value.wxFeeCut)
+            workCount.push(value.wxCut)
+            chargeAmount.push(value.wxFeeAmount)
+          } else {
+            chargeCount.push(value.azFeeCut)
+            workCount.push(value.azCut)
+            chargeAmount.push(value.azFeeAmount)
+          }
+        })
+        series.push({
+          name: legendGroup[0],
+          stack: 'total',
+          type: 'bar',
+          data: workCount
+        })
+        series.push({
+          name: legendGroup[1],
+          stack: 'total',
+          type: 'bar',
+          data: chargeCount
+        })
+        series.push({
+          name: legendGroup[2],
+          stock: 'Amount',
+          type: 'line',
+          yAxisIndex: 1,
+          data: chargeAmount
+        })
+        params.title = i === 0 ? '维修总计' : '安装总计'
+        params.legend = legendGroup
+        params.series = series
+        this.myEcharts(i === 0 ? 'drawDivWXTotal' : 'drawDivAZTotal', params)
+      }
+    },
+    drawCharts(data) {
+      Object.keys(data).forEach((company, index) => {
+        const legendGroup = ['工单数','收费订单数','收费金额']
+        for (let i = 0; i < 2; i++) {
+          let params = {}
+          let series = [];
+          let chargeCount = []
+          let workCount = []
+          let chargeAmount = []
+          // 遍历出对应列
+          data[company].forEach(value => {
+            if (i === 0) {
+              chargeCount.push(value.wxFeeCut)
+              workCount.push(value.wxCut)
+              chargeAmount.push(value.wxFeeAmount)
+            } else {
+              chargeCount.push(value.azFeeCut)
+              workCount.push(value.azCut)
+              chargeAmount.push(value.azFeeAmount)
+            }
+          })
+          series.push({
+            name: legendGroup[0],
+            stack: 'total',
+            type: 'bar',
+            data: workCount
+          })
+          series.push({
+            name: legendGroup[1],
+            stack: 'total',
+            type: 'bar',
+            data: chargeCount
+          })
+          series.push({
+            name: legendGroup[2],
+            stock: 'Amount',
+            type: 'line',
+            yAxisIndex: 1,
+            data: chargeAmount
+          })
+          params.title = i === 0 ? company+ '维修' : company + '安装'
+          params.legend = legendGroup
+          params.series = series
+          this.myEcharts(i === 0 ? 'drawWXDiv' + index : 'drawAZDiv' + index, params)
+        }
+      })
+    },
+    myEcharts(id, params){
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = this.$echarts.init(document.getElementById(id))
+      // 指定图表的配置项和数据
+      let option = {
+        title: {
+          text: params.title
+        },
+        tooltip: {
+          trigger: 'axis'
+        },
+        legend: {
+          top: '6%',
+          data: params.legend
+        },
+        grid: {
+          top: '20%',
+          left: '2%',
+          right: '5%',
+          bottom: '1%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          data: this.xAxis
+        },
+        yAxis: [{
+          type: 'value',
+          name: '单数',
+          axisLabel: {
+            formatter: function (value, index) {
+              if (value >= 1000 && value < 10000) {
+                value = value / 1000 + '千'
+              } else if (value >= 10000) {
+                value = value / 10000 + '万'
+              }
+              return value
+            }
+          }
+        },
+        {
+          type: 'value',
+          name: '金额',
+          axisTick: {
+            inside: true
+          },
+          scale: true,
+          axisLabel: {
+            margin: 2,
+            formatter: function (value, index) {
+              //y轴的数值显示格式化主要调整部分
+              if (value >= 10000 && value < 10000000) {
+                value = value / 10000 + '万';
+              }
+              return value;
+            }
+          }
+        }],
+        series: params.series
+      };
+      // 使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option);
+      this.existCharts.push(myChart);
+    }
+  },
+  computed: {
+    selDate() {
+      if(this.miniReqParams.startDate.length > 0
+          && this.miniReqParams.endDate.length > 0) {
+        return `${this.miniReqParams.startDate}-${this.miniReqParams.endDate}`
+      }
+    }
+  },
+  mounted: function () {
+    this.moduleTitle = window.sessionStorage.getItem("moduleTitle");
+  }
+}
+</script>
+
+<style scoped>
+  .date-radio {
+    margin-top: 15px;
+    background-color: #fff;
+    padding: 10px 16px;
+  }
+  .date-radio>button {
+    margin-left: auto;
+  }
+  .draw-div {
+    margin-top: 15px;
+    background-color: white;
+  }
+  .van-nav-bar__content {
+    margin-bottom: 10px;
+  }
+  .work-order-gather {
+    padding-bottom: 15px;
+    width: 100%;
+  }
+  .date-cell-group {
+    margin: 15px 0;
+  }
+  .van-cell__value {
+    color: #999;
+  }
+</style>

+ 374 - 0
src/components/Analysis/Analysis1008.vue

@@ -0,0 +1,374 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="网点榜单" />
+
+    <div style="background-color:#fff;margin-top:17px">
+      <van-cell title="选择日期" :value="date" @click="show = true" is-link />
+      <van-calendar v-model="show" @confirm="onConfirm" :min-date="minDate" />
+    </div>
+    <!-- 电子支付金额-列表 -->
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <div class="tit">电子支付金额</div>
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="10"><span class="listTitle">网点</span></van-col>
+        <van-col span="6" @click="insFn"><span class="listTitle">安装支付
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col @click="repairFn" span="6">
+          <span class="listTitle">维修支付
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished">
+          <van-cell v-for="(item,i) in list" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="10">
+                <div class="listTitle">{{item.name}}</div>
+                <div class="listTitle">{{item.webNumber}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">{{item.insAmount}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">{{item.repAmount}}</div>
+              </van-col>
+            </van-row>
+          </van-cell>
+          <template slot="finished">
+            <van-button @click="dzzfjeFn" v-if="list.length>0" type="default" size="small" icon="arrow" icon-position="right">查看全部</van-button>
+            <span v-else>暂无数据</span>
+          </template>
+        </van-list>
+      </van-pull-refresh>
+
+    </div>
+    <!-- 安装完工工单-列表 -->
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <div class="tit">安装完工工单</div>
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="10"><span class="listTitle">网点</span></van-col>
+        <van-col span="6" @click="insFn"><span class="listTitle">工单量
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col @click="repairFn" span="6">
+          <span class="listTitle">设备台数
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished">
+          <van-cell v-for="(item,i) in list" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="10">
+                <div class="listTitle">{{item.name}}</div>
+                <div class="listTitle">{{item.webNumber}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">{{item.install}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">0</div>
+              </van-col>
+            </van-row>
+          </van-cell>
+          <template slot="finished">
+            <van-button @click="azwggdFn" v-if="list.length>0" type="default" size="small" icon="arrow" icon-position="right">查看全部</van-button>
+            <span v-else>暂无数据</span>
+          </template>
+        </van-list>
+      </van-pull-refresh>
+    </div>
+    <!-- 维修完工工单-列表 -->
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <div class="tit">维修完工工单</div>
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="10"><span class="listTitle">网点</span></van-col>
+        <van-col span="6" @click="insFn">
+          <span class="listTitle">工单量
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col @click="repairFn" span="6">
+          <span class="listTitle">设备台数
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished">
+          <van-cell v-for="(item,i) in list" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="10">
+                <div class="listTitle">{{item.name}}</div>
+                <div class="listTitle">{{item.webNumber}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">{{item.repair}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">0</div>
+              </van-col>
+            </van-row>
+          </van-cell>
+          <template slot="finished">
+            <van-button @click="wxwggdFn" v-if="list.length>0" type="default" size="small" icon="arrow" icon-position="right">查看全部</van-button>
+            <span v-else>暂无数据</span>
+          </template>
+        </van-list>
+      </van-pull-refresh>
+    </div>
+    <!-- 工单好评率-列表 -->
+    <!-- <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <div class="tit">工单好评率</div>
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="10"><span class="listTitle">网点</span></van-col>
+        <van-col span="6" @click="insFn">
+          <span class="listTitle">评价率
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col @click="repairFn" span="6">
+          <span class="listTitle">好评率
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished">
+          <van-cell v-for="(item,i) in list" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="10">
+                <div class="listTitle">{{item.webName}}</div>
+                <div class="listTitle">{{item.websit}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">{{item.ctorder}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">0</div>
+              </van-col>
+            </van-row>
+          </van-cell>
+          <template slot="finished">
+            <van-button v-if="list.length>0" type="default" size="small" icon="arrow" icon-position="right">查看全部</van-button>
+            <span v-else>暂无数据</span>
+          </template>
+        </van-list>
+      </van-pull-refresh>
+    </div> -->
+    <!-- 工单差评率-列表 -->
+    <!-- <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <div class="tit">工单差评率</div>
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="10"><span class="listTitle">网点</span></van-col>
+        <van-col span="6" @click="insFn"><span class="listTitle">评价率
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col @click="repairFn" span="6">
+          <span class="listTitle">差评率
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished">
+          <van-cell v-for="(item,i) in list" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="10">
+                <div class="listTitle">{{item.webName}}</div>
+                <div class="listTitle">{{item.websit}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">{{item.ctorder}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">0</div>
+              </van-col>
+            </van-row>
+          </van-cell>
+          <template slot="finished">
+            <van-button v-if="list.length>0" type="default" size="small" icon="arrow" icon-position="right">查看全部</van-button>
+            <span v-else>暂无数据</span>
+          </template>
+        </van-list>
+      </van-pull-refresh>
+    </div> -->
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      show: false,
+      date: "",
+      minDate: new Date(2020, 1, 1),
+      list: [],
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false,
+    };
+  },
+  created() {
+    this.getDate();
+    this.getList();
+  },
+  methods: {
+    //维修完工工单-跳转
+    wxwggdFn() {
+      this.$router.push({
+        path: "/masterFinished/repaireDetail",
+        query: {
+          time: this.date,
+        },
+      });
+    },
+    //安装完工工单-跳转
+    azwggdFn() {
+      this.$router.push({
+        path: "/masterFinished/installDetail",
+        query: {
+          time: this.date,
+        },
+      });
+    },
+    //电子支付金额-跳转
+    dzzfjeFn() {
+      this.$router.push({
+        path: "/analysis/allNetWork",
+        query: {
+          date: this.date,
+        },
+      });
+    },
+    //维修筛选
+    repairFn() {},
+    //安装筛选
+    insFn() {},
+    onRefresh() {
+      // 清空列表数据
+      this.finished = false;
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true;
+      this.getList();
+    },
+    //获取今天日期
+    getDate() {
+      let time = new Date();
+      this.date = ` ${time.getFullYear()}/${
+        time.getMonth() + 1 > 9
+          ? time.getMonth() + 1
+          : "0" + (time.getMonth() + 1)
+      }/${time.getDate() > 9 ? time.getDate() : "0" + time.getDate()}`;
+    },
+    //获取数据
+    async getList() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "11",
+        type: "家用",
+        startDate: this.date,
+        endDate: this.date,
+      };
+      this.value = params;
+      let res = await this.postRequest("/wechat-analysis/fees-day", params);
+      let websitArr = res.data.map((v) => {
+        return v.websit;
+      });
+      websitArr = [...new Set(websitArr)].slice(0, 5);
+      let list = [];
+      for (let i = 0; i < websitArr.length; i++) {
+        list[i] = {
+          webNumber: websitArr[i],
+          name: "",
+          install: 0,
+          repair: 0,
+          insAmount: 0,
+          repAmount: 0,
+        };
+        for (let j = 0; j < res.data.length; j++) {
+          if (websitArr[i] === res.data[j].websit) {
+            list[i].name = res.data[j].webName;
+          }
+          if (
+            websitArr[i] === res.data[j].websit &&
+            res.data[j].btype === "材料"
+          ) {
+            list[i].install = res.data[j].ctorder;
+            list[i].insAmount = res.data[j].amount;
+          }
+          if (
+            websitArr[i] === res.data[j].websit &&
+            res.data[j].btype === "维修"
+          ) {
+            list[i].repair = res.data[j].ctorder;
+            list[i].repAmount = res.data[j].amount;
+          }
+        }
+      }
+      // this.list = list;
+      if (this.refreshing) {
+        this.list = [];
+        this.refreshing = false;
+      }
+      if (res.data.length === 0) {
+        this.list = [];
+        this.finished = true;
+      }
+      this.list = list;
+      this.loading = false;
+      if (this.list.length >= websitArr.length) {
+        this.finished = true;
+      }
+    },
+    onConfirm(date) {
+      this.show = false;
+      this.date = this.formatDate(date);
+      this.getList();
+    },
+    //日期格式化
+    formatDate(date) {
+      return `${date.getFullYear()}/${
+        date.getMonth() + 1 >= 10
+          ? date.getMonth() + 1
+          : "0" + (date.getMonth() + 1)
+      }/${date.getDate() >= 10 ? date.getDate() : "0" + date.getDate()}`;
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang='scss' scoped>
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+  padding: 10px 10px;
+}
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+</style>

+ 10 - 0
src/components/Analysis/Analysis1009.vue

@@ -0,0 +1,10 @@
+<template>
+  <div></div>
+</template>
+
+<script>
+export default {}
+</script>
+
+<style>
+</style>

+ 334 - 0
src/components/Analysis/Analysis1010.vue

@@ -0,0 +1,334 @@
+<template>
+  <div class="work-order-gather">
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="师傅安装工单统计" />
+    <!-- <div>{{ text.code }}</div>
+    <div>{{ text.msg }}</div>
+    <div>{{ text.time }}</div> -->
+    <div class="header" v-if="isHide">
+      <van-popover v-model="showPopover" trigger="click" :actions="actions" @select="onSelect">
+        <template #reference>
+          <van-button type="info" size="small">{{ role_typeText }} <span class="selectOrigin">></span></van-button>
+        </template>
+      </van-popover>
+      <input @keyup.enter="keydownFn" v-model="keyword" type="text" class="inputClass" />
+      <van-button @click="downLoadFn" type="info" size="small">下载报表 </van-button>
+      <img @click="showFn" class="svgClass" src="@/assets/icon/hspIcon.svg" />
+    </div>
+    <div :class="isHide ? '' : 'widDiv'">
+      <div @scroll="scrollFn" class="table_header" :style="isHide ? 'height: calc(100vh - 46px - 53.333px);' : ' height: 100vw;'">
+        <div v-for="(item, index) in dataList" :key="index">
+          <div class="header wrap" style="width:200px">{{ item.websit_name }}{{ item.websit_number }}</div>
+          <div class="header wrap" style="width:150px">{{ item.name }}{{ item.number }}</div>
+
+          <div class="header wrap">{{ item.appoint_reserve_today }}</div>
+          <div class="header wrap">{{ item.appoint_reserve_machine_today }}</div>
+          <div class="header wrap">{{ item.completed_today }}</div>
+          <div class="header wrap">{{ item.completed_machine_today }}</div>
+          <div class="header wrap">{{ item.unfinished_today }}</div>
+          <div class="header wrap">{{ item.unfinished_machine_today }}</div>
+          <div class="header wrap">{{ item.unfinished_all }}</div>
+          <div class="header wrap">{{ item.unfinished_machine_all }}</div>
+          <div class="header wrap">{{ item.no_appointment_all }}</div>
+        </div>
+      </div>
+      <!-- <div>yi</div> -->
+    </div>
+    <!-- <van-overlay :show="isShow">
+      <div class="wrapper">
+        <van-loading color="#0094ff" size="24px" vertical></van-loading>
+      </div>
+    </van-overlay> -->
+  </div>
+</template>
+
+<script>
+import { Toast, Notify } from 'vant'
+import { getUrlKey, debounce, getBlob } from '@/utils/common'
+export default {
+  data() {
+    return {
+      isShow: false,
+
+      finished: false,
+
+      pageSize: 50,
+      pageNum: 1,
+
+      keyword: '',
+      show: false,
+      isHide: true,
+      columns: ['杭州', '宁波', '温州', '绍兴', '湖州', '嘉兴', '金华', '衢州'],
+      showPopover: false,
+      role_type: 'websit',
+      role_typeText: '网点',
+      // 通过 actions 属性来定义菜单选项
+      actions: [
+        { text: '师傅', value: 'worker' },
+        { text: '网点', value: 'websit' }
+      ],
+      dataList: [
+        {
+          websit_name: '网点信息',
+          websit_number: '',
+          name: '师傅信息',
+          number: '',
+          appoint_reserve_today: '当日预约派工单量',
+          appoint_reserve_machine_today: '当日预约派工单台数',
+          completed_today: '当日完工单数',
+          completed_machine_today: '当日完工台数',
+          unfinished_today: '当日未完工单量',
+          unfinished_machine_today: '当日未完工单台数',
+          unfinished_all: '累计未完工单量',
+          unfinished_machine_all: '累计未完工单台数',
+          no_appointment_all: '未预约工单'
+        }
+      ]
+    }
+  },
+  created() {
+    this.onLoad()
+  },
+  methods: {
+    debounceChange: debounce(function(val, val2) {
+      if (val < 300 && val2 >= 0 && this.finished === false) {
+        this.onLoad()
+      }
+    }, 500),
+    scrollFn(value) {
+      const aaa = value.target.scrollHeight - value.target.scrollTop - value.target.clientHeight
+      const bbb = value.target.scrollLeft
+      this.debounceChange(aaa, bbb)
+    },
+    onLoad() {
+      // this.isShow = true
+      Toast.loading({
+        message: '加载中...',
+        forbidClick: true,
+        duration: 0
+      })
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        role_type: 'worker',
+        keyword_type: this.role_type,
+        keyword: this.keyword,
+        order_type: 'install',
+        export: '0',
+        page: this.pageNum++,
+        page_size: this.pageSize,
+        token: JSON.parse(sessionStorage.getItem('mobileOfficeMiniTOKEN'))
+      }
+      this.postRequestPHP('/services/statistics/order_statistics/lists', params)
+        .then(res => {
+          // console.log(res)
+          this.dataList.push(...res.data.data)
+
+          if (this.dataList.length >= res.data.total) {
+            this.finished = true
+            Notify({ type: 'primary', message: '已加载全部数据' })
+          }
+          // this.isShow = false
+          Toast.clear()
+        })
+        .catch(err => {
+          Notify({ type: 'danger', message: '参数错误' })
+          Toast.clear()
+        })
+    },
+    keydownFn() {
+      this.resetFn()
+    },
+    downLoadFn() {
+      //   this.getList()
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        role_type: 'worker',
+        keyword_type: this.role_type,
+        keyword: this.keyword,
+        order_type: 'install',
+        export: '1',
+        page: 1,
+        page_size: this.pageSize * this.pageNum,
+        token: JSON.parse(sessionStorage.getItem('mobileOfficeMiniTOKEN'))
+      }
+      this.postRequestPHP('/services/statistics/order_statistics/lists', params).then(res => {
+        // uni.postMessage({
+        //   data: { url: res.data.filename.file, name: res.data.filename.name }
+        // })
+        // console.log('pages/master/mine/download?url=' + res.data.filename.file + '&name=' + res.data.filename.name)
+        uni.navigateTo({
+          url: '/pages/master/mine/download?url=' + res.data.filename.file + '&name=' + res.data.filename.name
+        })
+        // console.log(res)
+        // window.open(res.data.filename.file)
+        // getBlob({ url: res.data.filename.file, name: res.data.filename.name })
+      })
+    },
+
+    // getList() {
+    //   let params = {
+    //     openid: getUrlKey('openid', window.location.href),
+    //     role_type: this.role_type,
+    //     keyword_type: this.role_type,
+    //     keyword: this.keyword,
+    //     order_type: 'install',
+    //     export: '0',
+    //     token: JSON.parse(sessionStorage.getItem('mobileOfficeMiniTOKEN'))
+    //   }
+
+    //   this.postRequestPHP('/services/statistics/order_statistics/lists', params).then(res => {
+    //     console.log(res)
+    //     this.text = res
+    //     let oneTitle = {
+    //       websit_name: '网点信息',
+    //       websit_number: '',
+    //       name: '师傅信息',
+    //       number: '',
+    //       appoint_reserve_today: '当日预约派工单量',
+    //       appoint_reserve_machine_today: '当日预约派工单台数',
+    //       completed_today: '当日完工单数',
+    //       completed_machine_today: '当日完工台数',
+    //       unfinished_today: '当日未完工单量',
+    //       unfinished_machine_today: '当日未完工单台数',
+    //       unfinished_all: '累计未完工单量',
+    //       unfinished_machine_all: '累计未完工单台数',
+    //       no_appointment_all: '未预约工单'
+    //     }
+    //     this.dataList = [oneTitle, ...res.data]
+    //   })
+    // },
+    showFn() {
+      this.isHide = false
+      // this.resetFn()
+      // this.finished = false
+    },
+    selectFn(value) {
+      this.show = true
+    },
+
+    onSelect(value) {
+      this.role_type = value.value
+      this.role_typeText = value.text
+      this.resetFn()
+    },
+
+    goBack() {
+      if (this.isHide) {
+        this.$router.back()
+      } else {
+        this.isHide = true
+        // this.resetFn()
+      }
+    },
+    resetFn() {
+      this.dataList = [
+        {
+          websit_name: '网点信息',
+          websit_number: '',
+          name: '师傅信息',
+          number: '',
+          appoint_reserve_today: '当日预约派工单量',
+          appoint_reserve_machine_today: '当日预约派工单台数',
+          completed_today: '当日完工单数',
+          completed_machine_today: '当日完工台数',
+          unfinished_today: '当日未完工单量',
+          unfinished_machine_today: '当日未完工单台数',
+          unfinished_all: '累计未完工单量',
+          unfinished_machine_all: '累计未完工单台数',
+          no_appointment_all: '未预约工单'
+        }
+      ]
+      this.pageNum = 1
+      this.finished = false
+      this.onLoad()
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+
+.selectOrigin {
+  display: inline-block;
+  transform: rotate(90deg);
+}
+.svgClass {
+  //   font-size: 20px;
+  height: 24px;
+  width: 24px;
+}
+
+.table_header {
+  overflow: scroll;
+  width: 100%;
+  //   height: 100vw;
+  border-top: 4px solid #efefef;
+  white-space: nowrap;
+
+  .header {
+    overflow: hidden;
+    border-right: 4px solid #efefef;
+    display: inline-block;
+    width: 120px;
+    height: 50px;
+    font-size: 14px;
+    // background-color: #ce1919;
+    // padding: 0;
+  }
+  .wrap {
+    white-space: pre-wrap;
+    width: 50px;
+  }
+  .header2 {
+    overflow: hidden;
+    border-right: 4px solid #efefef;
+    display: inline-block;
+    width: 180px;
+    height: 20px;
+    font-size: 14px;
+    // background-color: #ce1919;
+    // padding: 0;
+  }
+  .website {
+    position: sticky;
+    left: 0;
+  }
+  .worker {
+    position: sticky;
+    left: 224px;
+  }
+}
+
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+
+.widDiv {
+  width: calc(100vh - 46px);
+  height: calc(100vh - 46px);
+  transform: rotate(90deg);
+  transform-origin: 50vw 50vw;
+}
+.selectStyle {
+  height: 30px;
+  border-radius: 5px;
+  border: 1px solid #dadada;
+}
+.inputClass {
+  height: 30px;
+  border: 1px solid #dddddd;
+}
+.header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  background-color: #fff;
+  padding: 10px;
+}
+</style>

+ 269 - 0
src/components/Analysis/Analysis1011.vue

@@ -0,0 +1,269 @@
+<template>
+  <div class="work-order-gather">
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="师傅维修工单统计" />
+
+    <div class="header" v-if="isHide">
+      <van-popover v-model="showPopover" trigger="click" :actions="actions" @select="onSelect">
+        <template #reference>
+          <van-button type="info" size="small">{{ role_typeText }} <span class="selectOrigin">></span></van-button>
+        </template>
+      </van-popover>
+      <input @keyup.enter="keydownFn" v-model="keyword" type="text" class="inputClass" />
+      <van-button @click="downLoadFn" type="info" size="small">下载报表 </van-button>
+      <img @click="showFn" class="svgClass" src="@/assets/icon/hspIcon.svg" />
+    </div>
+    <div :class="isHide ? '' : 'widDiv'">
+      <div @scroll="scrollFn" class="table_header" :style="isHide ? 'height: calc(100vh - 46px - 53.333px);' : ' height: 100vw;'">
+        <div v-for="(item, index) in dataList" :key="index">
+          <div class="header wrap" style="width:200px">{{ item.websit_name }}{{ item.websit_number }}</div>
+          <div class="header wrap" style="width:150px">{{ item.name }}{{ item.number }}</div>
+          <div class="header wrap">{{ item.appoint_today }}</div>
+          <div class="header wrap">{{ item.completed_today }}</div>
+          <div class="header wrap">{{ item.unfinished_today }}</div>
+          <div class="header wrap">{{ item.no_appointment_all }}</div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { Toast, Notify } from 'vant'
+import { getUrlKey, debounce, getBlob } from '@/utils/common'
+export default {
+  data() {
+    return {
+      finished: false,
+
+      pageSize: 50,
+      pageNum: 1,
+
+      keyword: '',
+      show: false,
+      isHide: true,
+      columns: ['杭州', '宁波', '温州', '绍兴', '湖州', '嘉兴', '金华', '衢州'],
+      showPopover: false,
+      role_type: 'websit',
+      role_typeText: '网点',
+      // 通过 actions 属性来定义菜单选项
+      actions: [
+        { text: '师傅', value: 'worker' },
+        { text: '网点', value: 'websit' }
+      ],
+      dataList: [
+        {
+          websit_name: '网点信息',
+          websit_number: '',
+          name: '师傅信息',
+          number: '',
+          appoint_today: '当日派工单量',
+          completed_today: '当日完工单量',
+          unfinished_today: '当日未完工单量',
+          no_appointment_all: '未预约工单'
+        }
+      ]
+    }
+  },
+  created() {
+    this.onLoad()
+  },
+  methods: {
+    resetFn() {
+      this.dataList = [
+        {
+          websit_name: '网点信息',
+          websit_number: '',
+          name: '师傅信息',
+          number: '',
+          appoint_today: '当日派工单量',
+          completed_today: '当日完工单量',
+          unfinished_today: '当日未完工单量',
+          no_appointment_all: '未预约工单'
+        }
+      ]
+      this.pageNum = 1
+      this.finished = false
+      this.onLoad()
+    },
+    debounceChange: debounce(function(val, val2) {
+      // console.log(val)
+      if (val < 300 && val2 >= 0 && this.finished === false) {
+        this.onLoad()
+      }
+    }, 500),
+    scrollFn(value) {
+      const aaa = value.target.scrollHeight - value.target.scrollTop - value.target.clientHeight
+      const bbb = value.target.scrollLeft
+      this.debounceChange(aaa, bbb)
+    },
+    onLoad() {
+      Toast.loading({
+        message: '加载中...',
+        forbidClick: true,
+        duration: 0
+      })
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        role_type: 'worker',
+        keyword_type: this.role_type,
+        keyword: this.keyword,
+        order_type: 'repair',
+        export: '0',
+        page: this.pageNum++,
+        page_size: this.pageSize,
+        token: JSON.parse(sessionStorage.getItem('mobileOfficeMiniTOKEN'))
+      }
+      this.postRequestPHP('/services/statistics/order_statistics/lists', params)
+        .then(res => {
+          this.dataList.push(...res.data.data)
+
+          if (this.dataList.length >= res.data.total) {
+            this.finished = true
+            Notify({ type: 'primary', message: '已加载全部数据' })
+          }
+          Toast.clear()
+        })
+        .catch(err => {
+          Notify({ type: 'danger', message: '参数错误' })
+          Toast.clear()
+        })
+    },
+    keydownFn() {
+      this.resetFn()
+    },
+    downLoadFn() {
+      //   this.getList()
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        role_type: 'worker',
+        keyword_type: this.role_type,
+        keyword: this.keyword,
+        order_type: 'repair',
+        page: 1,
+        page_size: this.pageSize * this.pageNum,
+        export: '1',
+        token: JSON.parse(sessionStorage.getItem('mobileOfficeMiniTOKEN'))
+      }
+      this.postRequestPHP('/services/statistics/order_statistics/lists', params).then(res => {
+        // window.open(res.data.filename.file)
+        // getBlob({ url: res.data.filename.file, name: res.data.filename.name })
+        // uni.postMessage({
+        //   data: { url: res.data.filename.file, name: res.data.filename.name }
+        // })
+        uni.navigateTo({
+          url: '/pages/master/mine/download?url=' + res.data.filename.file + '&&name=' + res.data.filename.name
+        })
+      })
+    },
+    // getList() {
+    //   let params = {
+    //     openid: getUrlKey('openid', window.location.href),
+    //     role_type: this.role_type,
+    //     keyword_type: this.role_type,
+    //     keyword: this.keyword,
+    //     order_type: 'repair',
+    //     export: '0',
+    //     token: JSON.parse(sessionStorage.getItem('mobileOfficeMiniTOKEN'))
+    //   }
+    //   this.postRequestPHP('/services/statistics/order_statistics/lists', params).then(res => {
+    //     // console.log(res)
+    //     let oneTitle = {
+    //       websit_name: '网点信息',
+    //       websit_number: '',
+    //       name: '师傅信息',
+    //       number: '',
+    //       appoint_today: '当日派工单量',
+    //       completed_today: '当日完工单量',
+    //       unfinished_today: '当日未完工单量',
+    //       no_appointment_all: '未预约工单'
+    //     }
+    //     this.dataList = [oneTitle, ...res.data]
+    //   })
+    // },
+    showFn() {
+      this.isHide = false
+      // this.resetFn()
+    },
+    selectFn(value) {
+      this.show = true
+    },
+
+    onSelect(value) {
+      this.role_type = value.value
+      this.role_typeText = value.text
+      this.resetFn()
+    },
+
+    goBack() {
+      if (this.isHide) {
+        this.$router.back()
+      } else {
+        this.isHide = true
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.selectOrigin {
+  display: inline-block;
+  transform: rotate(90deg);
+}
+.svgClass {
+  //   font-size: 20px;
+  height: 24px;
+  width: 24px;
+}
+
+.table_header {
+  overflow: scroll;
+  width: 100%;
+  //   height: 100vw;
+  border-top: 4px solid #efefef;
+  white-space: nowrap;
+
+  .header {
+    overflow: hidden;
+    border-right: 4px solid #efefef;
+    display: inline-block;
+    width: 100px;
+    height: 50px;
+    font-size: 14px;
+    // background-color: #ce1919;
+    // padding: 0;
+  }
+  .wrap {
+    white-space: pre-wrap;
+    width: 50px;
+  }
+}
+
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+
+.widDiv {
+  width: calc(100vh - 46px);
+  height: calc(100vh - 46px);
+  transform: rotate(90deg);
+  transform-origin: 50vw 50vw;
+}
+.selectStyle {
+  height: 30px;
+  border-radius: 5px;
+  border: 1px solid #dadada;
+}
+.inputClass {
+  height: 30px;
+  border: 1px solid #dddddd;
+}
+.header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  background-color: #fff;
+  padding: 10px;
+}
+</style>

+ 264 - 0
src/components/Analysis/Analysis1012.vue

@@ -0,0 +1,264 @@
+<template>
+  <div class="work-order-gather">
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="网点安装工单统计" />
+
+    <div class="header" v-if="isHide">
+      <input @keyup.enter="keydownFn" v-model="keyword" type="text" class="inputClass" /><van-icon
+        class="iconClass"
+        @click="searchFn"
+        name="search"
+      />
+      <van-button @click="downLoadFn" type="info" size="small">下载报表 </van-button>
+      <img @click="showFn" class="svgClass" src="@/assets/icon/hspIcon.svg" />
+    </div>
+    <!-- <div :class="isHide ? '' : 'widDiv'">
+      <div class="table_header" :style="isHide ? 'height: calc(100vh - 46px - 53.333px);' : ' height: 100vw;'">
+        <div v-for="(item, index) in dataList" :key="index">
+          <div class="header wrap" style="width:200px">{{ item.company }}</div>
+          <div class="header wrap" style="width:200px">{{ item.websit_name }}{{ item.websit_number }}</div>
+          <div class="header wrap">{{ item.appoint_reserve_today }}</div>
+          <div class="header wrap">{{ item.appoint_reserve_machine_today }}</div>
+          <div class="header wrap">{{ item.completed_today }}</div>
+          <div class="header wrap">{{ item.completed_machine_today }}</div>
+          <div class="header wrap">{{ item.unfinished_today }}</div>
+          <div class="header wrap">{{ item.unfinished_machine_today }}</div>
+          <div class="header wrap">{{ item.unfinished_all }}</div>
+          <div class="header wrap">{{ item.unfinished_machine_all }}</div>
+          <div class="header wrap">{{ item.no_appointment_all }}</div>
+        </div>
+      </div>
+    </div> -->
+    <div :class="isHide ? '' : 'widDiv'" style="overflow:scroll">
+      <table class="table_header" border="1" align="center" cellspacing="0" cellpadding="10">
+        <tr style="color:#000;font-size:14px;">
+          <th>所属公司</th>
+          <th>网点信息</th>
+          <th><div class="wrapTitle" style="width:60px">当日预约派工单量</div></th>
+          <th><div class="wrapTitle" style="width:60px">当日预约派工单台数</div></th>
+          <th><div class="wrapTitle" style="width:60px">当日完工单数</div></th>
+          <th><div class="wrapTitle" style="width:60px">当日完工台数</div></th>
+          <th><div class="wrapTitle" style="width:60px">当日未完工单量</div></th>
+          <th><div class="wrapTitle" style="width:60px">当日未完工单台数</div></th>
+          <th><div class="wrapTitle" style="width:60px">累计未完工单量</div></th>
+          <th><div class="wrapTitle" style="width:60px">累计未完工单台数</div></th>
+          <th><div class="wrapTitle" style="width:60px">未预约工单</div></th>
+        </tr>
+        <tr v-for="(item, i) in dataList" :key="i">
+          <td :rowspan="item.rowspan" v-if="item.rowspan">{{ item.company }}</td>
+          <td>
+            <div class="wrapTitle">{{ item.websit_name }}{{ item.websit_number }}</div>
+          </td>
+          <td>{{ item.appoint_reserve_today }}</td>
+          <td>{{ item.appoint_reserve_machine_today }}</td>
+          <td>{{ item.completed_today }}</td>
+          <td>{{ item.completed_machine_today }}</td>
+          <td>{{ item.unfinished_today }}</td>
+          <td>{{ item.unfinished_machine_today }}</td>
+          <td>{{ item.unfinished_all }}</td>
+          <td>{{ item.unfinished_machine_all }}</td>
+          <td>{{ item.no_appointment_all }}</td>
+        </tr>
+      </table>
+    </div>
+    <!-- 搜索提示 -->
+    <van-empty v-show="dataList.length === 0" image="search" description="暂无数据" />
+  </div>
+</template>
+
+<script>
+import { Toast, Notify } from 'vant'
+import { getUrlKey, debounce, getBlob } from '@/utils/common'
+export default {
+  data() {
+    return {
+      // finished: false,
+
+      // pageSize: 15,
+      // pageNum: 1,
+
+      keyword: '',
+      show: false,
+      isHide: true,
+      columns: ['杭州', '宁波', '温州', '绍兴', '湖州', '嘉兴', '金华', '衢州'],
+      role_type: 'websit',
+      role_typeText: '网点',
+      dataList: []
+    }
+  },
+  created() {
+    this.onLoad()
+  },
+  methods: {
+    resetFn() {
+      this.dataList = []
+      // this.pageNum = 1
+      // this.finished = false
+      this.onLoad()
+    },
+    // debounceChange: debounce(function(val, val2) {
+    //   // console.log(val)
+    //   if (val < 300 && val2 >= 0 && this.finished === false) {
+    //     this.onLoad()
+    //   }
+    // }, 500),
+    // scrollFn(value) {
+    //   const aaa = value.target.scrollHeight - value.target.scrollTop - value.target.clientHeight
+    //   const bbb = value.target.scrollLeft
+    //   this.debounceChange(aaa, bbb)
+    // },
+    onLoad() {
+      Toast.loading({
+        message: '加载中...',
+        forbidClick: true,
+        duration: 0
+      })
+      let params = {
+        page: 1,
+        page_size: -1,
+        openid: getUrlKey('openid', window.location.href),
+        role_type: 'websit',
+        keyword_type: 'websit',
+        keyword: this.keyword,
+        order_type: 'install',
+        export: '0',
+        token: JSON.parse(sessionStorage.getItem('mobileOfficeMiniTOKEN'))
+      }
+      this.postRequestPHP('/services/statistics/order_statistics/lists', params)
+        .then(res => {
+          let data = res.data.data
+
+          for (const key in data) {
+            let arr = Object.values(data[key])
+            arr[0].rowspan = arr.length
+            for (const val of arr) {
+              this.dataList.push({
+                company: key,
+                ...val
+              })
+            }
+          }
+          Toast.clear()
+        })
+        .catch(err => {
+          Notify({ type: 'danger', message: '参数错误' })
+          Toast.clear()
+        })
+    },
+    searchFn() {
+      this.resetFn()
+    },
+    keydownFn() {
+      this.resetFn()
+    },
+    downLoadFn() {
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        role_type: 'websit',
+        keyword_type: 'websit',
+        keyword: this.keyword,
+        order_type: 'install',
+        export: '1',
+        page: 1,
+        page_size: -1,
+        token: JSON.parse(sessionStorage.getItem('mobileOfficeMiniTOKEN'))
+      }
+      this.postRequestPHP('/services/statistics/order_statistics/lists', params).then(res => {
+        uni.navigateTo({
+          url: '/pages/master/mine/download?url=' + res.data.filename.file + '&&name=' + res.data.filename.name
+        })
+      })
+    },
+
+    showFn() {
+      this.isHide = false
+      // this.resetFn()
+    },
+    // selectFn(value) {
+    //   this.show = true
+    // },
+
+    goBack() {
+      if (this.isHide) {
+        this.$router.back()
+      } else {
+        this.isHide = true
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.wrapTitle {
+  white-space: normal;
+  width: 150px;
+}
+
+.iconClass {
+  font-weight: 700;
+  font-size: 24px;
+  color: #bfbfbf;
+}
+.selectOrigin {
+  display: inline-block;
+  transform: rotate(90deg);
+}
+.svgClass {
+  //   font-size: 20px;
+  height: 24px;
+  width: 24px;
+}
+
+.table_header {
+  overflow: scroll;
+  width: 100%;
+  //   height: 100vw;
+  // border-top: 4px solid #efefef;
+  white-space: nowrap;
+  background-color: rgb(255, 255, 255);
+  border-color: #fff;
+
+  .header {
+    overflow: hidden;
+    border-right: 4px solid #efefef;
+    display: inline-block;
+    width: 120px;
+    height: 50px;
+    font-size: 14px;
+    // background-color: #ce1919;
+    // padding: 0;
+  }
+  .wrap {
+    white-space: pre-wrap;
+    width: 50px;
+  }
+}
+
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+
+.widDiv {
+  width: calc(100vh - 46px);
+  height: calc(100vh - 300px);
+  transform: rotate(90deg);
+  transform-origin: 50vw 50vw;
+}
+.selectStyle {
+  height: 30px;
+  border-radius: 5px;
+  border: 1px solid #dadada;
+}
+.inputClass {
+  height: 30px;
+  border: 1px solid #dddddd;
+}
+.header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  background-color: #fff;
+  padding: 10px;
+}
+</style>

+ 261 - 0
src/components/Analysis/Analysis1013.vue

@@ -0,0 +1,261 @@
+<template>
+  <div class="work-order-gather">
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="网点维修工单统计" />
+
+    <div class="header" v-if="isHide">
+      <input @keyup.enter="keydownFn" v-model="keyword" type="text" class="inputClass" /><van-icon
+        @click="searchFn"
+        class="iconClass"
+        name="search"
+      />
+      <van-button @click="downLoadFn" type="info" size="small">下载报表 </van-button>
+      <img @click="showFn" class="svgClass" src="@/assets/icon/hspIcon.svg" />
+    </div>
+    <!-- <div :class="isHide ? '' : 'widDiv'">
+      <div @scroll="scrollFn" class="table_header" :style="isHide ? 'height: calc(100vh - 46px - 53.333px);' : ' height: 100vw;'">
+        <div v-for="(item, index) in dataList" :key="index">
+          <div class="header wrap" style="width:200px">{{ item.websit_name }}{{ item.websit_number }}</div>
+
+          <div class="header wrap">{{ item.appoint_today }}</div>
+          <div class="header wrap">{{ item.completed_today }}</div>
+          <div class="header wrap">{{ item.unfinished_today }}</div>
+          <div class="header wrap">{{ item.no_appointment_all }}</div>
+        </div>
+      </div>
+    </div> -->
+
+    <div :class="isHide ? '' : 'widDiv'" style="overflow:scroll">
+      <table class="table_header" border="1" align="center" cellspacing="0" cellpadding="6">
+        <tr style="color:#000;font-size:14px;">
+          <th>所属公司</th>
+          <th>网点信息</th>
+          <th><div class="wrapTitle" style="width:60px">当日派工单量</div></th>
+          <th><div class="wrapTitle" style="width:60px">当日完工单量</div></th>
+          <th><div class="wrapTitle" style="width:60px">当日未完工单量</div></th>
+          <th><div class="wrapTitle" style="width:60px">未预约工单</div></th>
+          <th><div class="wrapTitle" style="width:60px">累计未完工单量</div></th>
+        </tr>
+        <tr v-for="(item, i) in dataList" :key="i">
+          <td :rowspan="item.rowspan" v-if="item.rowspan">{{ item.company }}</td>
+          <td>
+            <div class="wrapTitle">{{ item.websit_name }}{{ item.websit_number }}</div>
+          </td>
+          <td>{{ item.appoint_today }}</td>
+          <td>{{ item.completed_today }}</td>
+          <td>{{ item.unfinished_today }}</td>
+          <td>{{ item.no_appointment_all }}</td>
+          <td>{{ item.unfinished_all }}</td>
+        </tr>
+      </table>
+    </div>
+    <!-- 搜索提示 -->
+    <van-empty v-show="dataList.length === 0" image="search" description="暂无数据" />
+  </div>
+</template>
+
+<script>
+import { Toast, Notify } from 'vant'
+import { getUrlKey, debounce, getBlob } from '@/utils/common'
+export default {
+  data() {
+    return {
+      // finished: false,
+
+      // pageSize: 15,
+      // pageNum: 1,
+
+      keyword: '',
+      show: false,
+      isHide: true,
+      columns: ['杭州', '宁波', '温州', '绍兴', '湖州', '嘉兴', '金华', '衢州'],
+      showPopover: false,
+      role_type: 'websit',
+      role_typeText: '网点',
+      // 通过 actions 属性来定义菜单选项
+      actions: [
+        { text: '师傅', value: 'worker' },
+        { text: '网点', value: 'websit' }
+      ],
+      dataList: []
+    }
+  },
+  created() {
+    this.onLoad()
+  },
+  methods: {
+    resetFn() {
+      this.dataList = []
+      // this.pageNum = 1
+      // this.finished = false
+      this.onLoad()
+    },
+    // debounceChange: debounce(function(val, val2) {
+    //   // console.log(val)
+    //   if (val < 300 && val2 >= 0 && this.finished === false) {
+    //     this.onLoad()
+    //   }
+    // }, 500),
+    // scrollFn(value) {
+    //   const aaa = value.target.scrollHeight - value.target.scrollTop - value.target.clientHeight
+    //   const bbb = value.target.scrollLeft
+    //   this.debounceChange(aaa, bbb)
+    // },
+    onLoad() {
+      Toast.loading({
+        message: '加载中...',
+        forbidClick: true,
+        duration: 0
+      })
+      let params = {
+        page: 1,
+        page_size: -1,
+        openid: getUrlKey('openid', window.location.href),
+        role_type: 'websit',
+        keyword_type: 'websit',
+        keyword: this.keyword,
+        order_type: 'repair',
+        export: '0',
+        token: JSON.parse(sessionStorage.getItem('mobileOfficeMiniTOKEN'))
+      }
+      this.postRequestPHP('/services/statistics/order_statistics/lists', params)
+        .then(res => {
+          let data = res.data.data
+
+          for (const key in data) {
+            let arr = Object.values(data[key])
+            arr[0].rowspan = arr.length
+            for (const val of arr) {
+              this.dataList.push({
+                company: key,
+                ...val
+              })
+            }
+          }
+          Toast.clear()
+        })
+        .catch(err => {
+          Notify({ type: 'danger', message: '参数错误' })
+          Toast.clear()
+        })
+    },
+    searchFn() {
+      this.resetFn()
+    },
+    keydownFn() {
+      this.resetFn()
+    },
+    downLoadFn() {
+      //   this.getList()
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        role_type: 'websit',
+        keyword_type: 'websit',
+        keyword: this.keyword,
+        order_type: 'repair',
+        export: '1',
+        page: 1,
+        page_size: -1,
+        token: JSON.parse(sessionStorage.getItem('mobileOfficeMiniTOKEN'))
+      }
+      this.postRequestPHP('/services/statistics/order_statistics/lists', params).then(res => {
+        // window.open(res.data.filename.file)
+        // getBlob({ url: res.data.filename.file, name: res.data.filename.name })
+        // uni.postMessage({
+        //   data: { url: res.data.filename.file, name: res.data.filename.name }
+        // })
+        uni.navigateTo({
+          url: '/pages/master/mine/download?url=' + res.data.filename.file + '&&name=' + res.data.filename.name
+        })
+      })
+    },
+
+    showFn() {
+      this.isHide = false
+      // this.resetFn()
+    },
+
+    goBack() {
+      if (this.isHide) {
+        this.$router.back()
+      } else {
+        this.isHide = true
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.wrapTitle {
+  white-space: normal;
+  width: 150px;
+}
+
+.iconClass {
+  font-weight: 700;
+  font-size: 24px;
+  color: #bfbfbf;
+}
+.selectOrigin {
+  display: inline-block;
+  transform: rotate(90deg);
+}
+.svgClass {
+  //   font-size: 20px;
+  height: 24px;
+  width: 24px;
+}
+
+.table_header {
+  overflow: scroll;
+  width: 100%;
+  //   height: 100vw;
+  // border-top: 4px solid #efefef;
+  white-space: nowrap;
+  background-color: rgb(255, 255, 255);
+  border-color: #fff;
+
+  .header {
+    overflow: hidden;
+    border-right: 4px solid #efefef;
+    display: inline-block;
+    width: 100px;
+    height: 50px;
+    font-size: 14px;
+    // background-color: #ce1919;
+    // padding: 0;
+  }
+  .wrap {
+    white-space: pre-wrap;
+    width: 50px;
+  }
+}
+
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+
+.widDiv {
+  width: calc(100vh - 46px);
+  height: calc(100vh - 300px);
+  transform: rotate(90deg);
+  transform-origin: 50vw 50vw;
+}
+.selectStyle {
+  height: 30px;
+  border-radius: 5px;
+  border: 1px solid #dadada;
+}
+.inputClass {
+  height: 30px;
+  border: 1px solid #dddddd;
+}
+.header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  background-color: #fff;
+  padding: 10px;
+}
+</style>

+ 15 - 0
src/components/Business.vue

@@ -0,0 +1,15 @@
+<template>
+  <div id="Business">
+    <h1>业务模块</h1>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "Business"
+}
+</script>
+
+<style scoped>
+
+</style>

+ 47 - 0
src/main.js

@@ -0,0 +1,47 @@
+import Vue from 'vue'
+import App from './App.vue'
+import router from './router'
+import Vant from 'vant'
+import 'vant/lib/index.css'
+import '@/styles/index.scss' // global css
+import 'font-awesome/css/font-awesome.css'
+import echarts from '@/plugin/echartsUI'
+import dateUtils from '@/utils/dateUtils'
+
+Vue.use(Vant)
+
+import { numToFixed } from '@/utils/common.js'
+Vue.prototype.$numToFixed = numToFixed
+
+import { postRequest, getRequest, postRequestPHP } from '@/utils/api'
+
+Vue.config.productionTip = false
+Vue.prototype.$echarts = echarts
+Vue.prototype.postRequest = postRequest
+Vue.prototype.postRequestPHP = postRequestPHP
+Vue.prototype.getRequest = getRequest
+Vue.prototype.dateUtils = dateUtils
+
+//过滤器
+Vue.filter('numToFixed', function(num) {
+  if (!num) return '0.00'
+  if (isNaN(Number(num))) return num
+  num = num.toFixed(2)
+  if (num.includes('.')) {
+    return num.slice(0, -3).replace(/(\d)(?=(\d{3})+$)/g, '$1,') + num.slice(-3)
+  }
+  return num.replace(/(\d)(?=(\d{3})+$)/g, '$1,')
+})
+
+router.beforeEach((to, from, next) => {
+  let analysisList = JSON.parse(window.sessionStorage.getItem('analysisList'))
+  if (to.path == '/home/analysis' && analysisList && analysisList.length == 0) {
+    next('/home/business')
+  }
+  next()
+})
+
+new Vue({
+  router,
+  render: h => h(App)
+}).$mount('#app')

+ 38 - 0
src/plugin/echartsUI.js

@@ -0,0 +1,38 @@
+// 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。
+import * as echarts from 'echarts/core';
+// 引入各种图表,图表后缀都为 Chart
+import {
+    LineChart,BarChart,ScatterChart
+} from 'echarts/charts';
+// 引入提示框,标题,直角坐标系等组件,组件后缀都为 Component
+import {
+    TitleComponent,
+    TooltipComponent,
+    GridComponent,
+    LegendComponent,
+    ToolboxComponent,
+    DataZoomComponent,
+    // GeoCoComponent
+} from 'echarts/components';
+// 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
+import {
+    CanvasRenderer
+} from 'echarts/renderers';
+
+// 注册必须的组件
+echarts.use(
+    [
+        DataZoomComponent,
+        TitleComponent,
+        TooltipComponent,
+        GridComponent,
+        LegendComponent,
+        ToolboxComponent,
+        LineChart,
+        BarChart,
+        ScatterChart ,
+        CanvasRenderer
+    ]
+)
+
+export default echarts

+ 229 - 0
src/router/index.js

@@ -0,0 +1,229 @@
+import Vue from 'vue'
+import VueRouter from 'vue-router'
+import Home from '../views/Home.vue'
+import Login from '@/views/Login'
+import Business from '@/components/Business'
+
+Vue.use(VueRouter)
+
+const originalPush = VueRouter.prototype.push
+const originalReplace = VueRouter.prototype.replace
+
+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)
+}
+VueRouter.prototype.replace = function replace(location, onResolve, onReject) {
+  if (onResolve || onReject) {
+    return originalReplace.call(this, location, onResolve, onReject)
+  }
+  return originalReplace.call(this, location).catch(err => err)
+}
+
+const routes = [
+  {
+    path: '/',
+    name: 'Login',
+    component: Login
+  },
+  {
+    path: '/home',
+    name: 'Home',
+    component: Home,
+    children: [
+      {
+        path: 'analysis',
+        name: 'Analysis',
+        component: () => import('../views/Analysis')
+      },
+      {
+        path: 'mine',
+        name: 'mine',
+        component: () => import('../views/mine')
+      },
+      {
+        path: 'business',
+        name: 'Business',
+        component: Business
+      }
+    ]
+  },
+  {
+    path: '/mini',
+    name: 'MiniConfirm',
+    component: () => import('../views/MiniConfirm')
+  },
+  {
+    path: '/analysis/1001',
+    name: 'Analysis1001',
+    component: () => import('../components/Analysis/Analysis1001')
+  },
+  {
+    path: '/analysis/1002',
+    name: 'Analysis1002',
+    component: () => import('../components/Analysis/Analysis1002')
+  },
+  {
+    path: '/analysis/1003',
+    name: 'Analysis1003',
+    component: () => import('../components/Analysis/Analysis1003')
+  },
+  {
+    path: '/analysis/1004',
+    name: 'Analysis1004',
+    component: () => import('../components/Analysis/Analysis1004')
+  },
+  {
+    path: '/analysis/1005',
+    name: 'Analysis1005',
+    component: () => import('../components/Analysis/Analysis1005')
+  },
+  {
+    path: '/analysis/1006',
+    name: 'Analysis1006',
+    component: () => import('../components/Analysis/Analysis1006')
+  },
+  {
+    path: '/analysis/1007',
+    name: 'Analysis1007',
+    component: () => import('../components/Analysis/Analysis1007')
+  },
+  {
+    path: '/analysis/1008',
+    name: 'Analysis1008',
+    component: () => import('../components/Analysis/Analysis1008')
+  },
+  {
+    path: '/analysis/1009',
+    name: 'Analysis1009',
+    component: () => import('../components/Analysis/Analysis1009')
+  },
+  {
+    path: '/analysis/1010',
+    name: 'Analysis1010',
+    component: () => import('../components/Analysis/Analysis1010')
+  },
+  {
+    path: '/analysis/1011',
+    name: 'Analysis1011',
+    component: () => import('../components/Analysis/Analysis1011')
+  },
+  {
+    path: '/analysis/1012',
+    name: 'Analysis1012',
+    component: () => import('../components/Analysis/Analysis1012')
+  },
+  {
+    path: '/analysis/1013',
+    name: 'Analysis1013',
+    component: () => import('../components/Analysis/Analysis1013')
+  },
+  {
+    path: '/analysis/intradayAdd',
+    name: 'intradayAdd',
+    component: () => import('../views/intradayAdd')
+  },
+  {
+    path: '/analysis/addInstallgdl',
+    name: 'addInstallgdl',
+    component: () => import('../views/addInstallgdl')
+  },
+  {
+    path: '/analysis/addrepairgdl',
+    name: 'addrepairgdl',
+    component: () => import('../views/addrepairgdl')
+  },
+  {
+    path: '/analysis/payDay',
+    name: 'payDay',
+    component: () => import('../views/payDay')
+  },
+  {
+    path: '/analysis/allNetWork',
+    name: 'allNetWork',
+    component: () => import('../views/allNetWork')
+  },
+  {
+    path: '/analysis/allNetWorkMonth',
+    name: 'allNetWorkMonth',
+    component: () => import('../views/allNetWorkMonth')
+  },
+  {
+    path: '/masterFinished/index',
+    name: 'index',
+    component: () => import('../views/masterFinished/index')
+  },
+  {
+    path: '/masterFinished/install',
+    name: 'install',
+    component: () => import('../views/masterFinished/install.vue')
+  },
+  {
+    path: '/masterFinished/installDetail',
+    name: 'installDetail',
+    component: () => import('../views/masterFinished/install-detail.vue')
+  },
+  {
+    path: '/masterFinished/installDetailMonth',
+    name: 'installDetailMonth',
+    component: () => import('../views/masterFinished/install-detail-month.vue')
+  },
+  {
+    path: '/masterFinished/installDetailWebsit',
+    name: 'installDetailWebsit',
+    component: () => import('../views/masterFinished/install-detail-websit.vue')
+  },
+  {
+    path: '/masterFinished/repaire',
+    name: 'repaire',
+    component: () => import('../views/masterFinished/repaire.vue')
+  },
+  {
+    path: '/masterFinished/repaireDetail',
+    name: 'repaireDetail',
+    component: () => import('../views/masterFinished/repaire-detail.vue')
+  },
+  {
+    path: '/masterFinished/repaireDetailMonth',
+    name: 'repaireDetailMonth',
+    component: () => import('../views/masterFinished/repaire-detail-month.vue')
+  },
+  {
+    path: '/masterFinished/repaireDetailWebsit',
+    name: 'repaireDetailWebsit',
+    component: () => import('../views/masterFinished/repaire-detail-websit.vue')
+  },
+  {
+    path: '/order/today',
+    name: 'today',
+    component: () => import('../views/order/today.vue')
+  },
+  {
+    path: '/order/tomorrow',
+    name: 'tomorrow',
+    component: () => import('../views/order/tomorrow.vue')
+  },
+  {
+    path: '/analysis/websiteDetail',
+    name: 'websiteDetail',
+    component: () => import('../views/websiteDetail.vue')
+  },
+  {
+    path: '/reservation/index',
+    name: 'reservation',
+    component: () => import('../views/reservation/index.vue')
+  },
+  {
+    path: '/reservation/website',
+    name: 'website',
+    component: () => import('../views/reservation/website.vue')
+  }
+]
+
+const router = new VueRouter({
+  routes
+})
+
+export default router

+ 33 - 0
src/styles/index.scss

@@ -0,0 +1,33 @@
+.upStyle {
+    font-size: 16px;
+    color: #1296db;
+    img {
+      width: 16px;
+      height: 16px;
+      vertical-align: bottom;
+    }
+}
+.downStyle {
+    font-size: 16px;
+    color: #d81e06;
+    img {
+      width: 16px;
+      height: 16px;
+      vertical-align: bottom;
+    }
+}
+.upFloat {
+  color:#1296db;
+  font-size:12px;
+}
+.downFloat {
+  color:#d81e06;
+  font-size:12px;
+}
+.fr{
+  font-weight: 700;
+  font-size: 12px;
+}
+.fontColor {
+    color: #1296db;
+}

+ 90 - 0
src/utils/api.js

@@ -0,0 +1,90 @@
+import axios from 'axios'
+import { Notify } from 'vant'
+// import qs from 'qs'
+
+const token = JSON.parse(sessionStorage.getItem('mobileOfficeMiniTOKEN'))
+
+//响应拦截器
+axios.interceptors.response.use(
+  success => {
+    //业务逻辑错误
+    // if (success.code == 2) {
+    //   Notify({ type: 'danger', message: success.msg })
+    // }
+
+    if (success.status && success.status == 200) {
+      if (success.data.code == 500 || success.data.code == 401 || success.data.code == 403) {
+        Notify({ type: 'danger', message: success.data.message })
+        return
+      }
+      if (success.data.message) {
+        Notify({ type: 'success', message: success.data.message })
+      }
+    }
+    return success.data
+  },
+  error => {
+    // alert(error)
+    if (error.response.code == 501 || error.response.code == 404) {
+      Notify({ type: 'danger', message: '服务器丢失' })
+    } else if (error.response.code == 403) {
+      Notify({ type: 'danger', message: '权限不足,请联系管理员!' })
+    } else if (error.response.code == 401) {
+      Notify({ type: 'danger', message: '未登录,请登录' })
+    } else {
+      if (error.response.data.message) {
+        Notify({ type: 'danger', message: error.response.data.message })
+      } else {
+        Notify({ type: 'danger', message: '未知错误!' })
+      }
+    }
+    return
+  }
+)
+
+// 添加请求拦截器
+axios.interceptors.request.use(
+  function(config) {
+    // 在发送请求之前做些什么
+    // alert(JSON.stringify(config))
+
+    // console.log(config)
+    // if (token) {
+    //   config.headers['x-token'] = token
+    // }
+    // config.headers['Access-Control-Allow-Origin'] = '*'
+    return config
+  },
+  function(error) {
+    // 对请求错误做些什么
+    return Promise.reject(error)
+  }
+)
+
+let base = '/api'
+
+//传送json格式的post请求
+export const postRequest = (url, params) => {
+  return axios({
+    method: 'post',
+    url: `${base}${url}`,
+    data: params
+  })
+}
+export const getRequest = (url, params) => {
+  return axios({
+    method: 'get',
+    url: `${base}${url}`,
+    params: params
+  })
+}
+export const postRequestPHP = (url, params) => {
+  return axios({
+    // baseURL: 'https://admin.zfire.top',
+    // baseURL: 'https://pgxtadm.greeapps.com',
+    method: 'post',
+    url: `/php${url}`,//发版需打开
+    // url: `${url}`, //本地调试需打开
+    data: params
+  })
+}

+ 91 - 0
src/utils/common.js

@@ -0,0 +1,91 @@
+import axios from 'axios'
+
+export function getUrlKey(name, url) {
+  return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(url) || [, ''])[1].replace(/\+/g, '%20')) || null
+}
+
+export function getRandomColor() {
+  /*随机获取颜色*/
+  var r = Math.floor(Math.random() * 256)
+  var g = Math.floor(Math.random() * 256)
+  var b = Math.floor(Math.random() * 256)
+  return 'rgb(' + r + ',' + g + ',' + b + ')'
+  //return '#' + Math.floor(Math.random() * 0xffffff).toString(16);
+}
+/**
+ * 保留2位小数点
+ * @param {number} num
+ * @returns
+ */
+export const numToFixed = num => {
+  if (!num) return '0.00'
+  if (isNaN(Number(num))) return num
+  num = num.toFixed(2)
+  if (num.includes('.')) {
+    return num.slice(0, -3).replace(/(\d)(?=(\d{3})+$)/g, '$1,') + num.slice(-3)
+  }
+  return num.replace(/(\d)(?=(\d{3})+$)/g, '$1,')
+}
+
+/**
+ *
+ * @param {*} fn  是我们需要包装的事件回调
+ * @param {*} delay 是每次推迟执行的等待时间
+ */
+export const debounce = (fn, delay = 1000) => {
+  // 定时器
+  let timer = null
+  // 将debounce处理结果当作函数返回
+  return function() {
+    // 保留调用时的this上下文
+    let context = this
+    // 保留调用时传入的参数
+    let args = arguments
+    // 每次事件被触发时,都去清除之前的旧定时器
+    // console.log(timer)
+    if (timer) {
+      clearTimeout(timer)
+    }
+    // 设立新定时器
+    timer = setTimeout(function() {
+      fn.apply(context, args)
+    }, delay)
+  }
+}
+
+export function getBlob(data) {
+  return new Promise(function(r, j) {
+    axios({
+      // url: data.url,
+      url: `https://mml-kj.oss-cn-shenzhen.aliyuncs.com/%E8%AE%A2%E5%8D%95%E7%BB%9F%E8%AE%A1.xls`,
+      method: 'get',
+      responseType: 'blob',
+      params: {},
+      headers: {}
+    })
+      .then(res => {
+        var blob = new Blob([res.data], {
+          type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8'
+        })
+        var filename = data.name
+        var downloadElement = document.createElement('a')
+        var href = window.URL.createObjectURL(blob) // 创建下载的链接
+        downloadElement.style.display = 'none'
+        downloadElement.href = href
+        downloadElement.download = filename // 下载后文件名
+        document.body.appendChild(downloadElement)
+        downloadElement.click() // 点击下载
+        document.body.removeChild(downloadElement) // 下载完成移除元素
+        window.URL.revokeObjectURL(href) // 释放掉blob对象
+        r()
+      })
+      .catch(err => {
+        console.log(err.message)
+        j()
+      })
+  })
+}
+
+export default {
+  numToFixed
+}

+ 81 - 0
src/utils/dateUtils.js

@@ -0,0 +1,81 @@
+export default {
+    getBeforeDate: function (beforeDayNumber) {
+        /**
+         * 获取当前日前多少天
+         * 返回格式: YYYY-mm-dd
+         * 例子: 当日为: 2020-11-27
+         * 返回日期为: 2020-11-01
+         * */
+        let n = beforeDayNumber;
+        let d = new Date();
+        let year = d.getFullYear();
+        let month = d.getMonth() + 1;
+        let day = d.getDate();
+        if(day <= n) {
+            if(month > 1) {
+                month = month - 1;
+            } else {
+                year = year - 1;
+                month = 12;
+            }
+        }
+        d.setDate(d.getDate() - n);
+        year = d.getFullYear();
+        month = d.getMonth() + 1;
+        day = d.getDate();
+        return year + "/" + (month < 10 ? ('0' + month) : month) + "/" + (day < 10 ? ('0' + day) : day);
+    },
+    getCurrentMonthFirstDay: function () {
+        /**
+         * 获取当前月的第一天
+         * 返回格式: YYYY-mm-dd
+         * 例子: 当日为: 2020-11-27
+         * 返回日期为: 2020-11-01
+         * */
+        let date = new Date();
+        date.setDate(1);
+        let month = date.getMonth() + 1;
+        let day = date.getDate();
+        if (month < 10) {
+            month = '0' + month
+        }
+        if (day < 10) {
+            day = '0' + day
+        }
+        return date.getFullYear() + '/' + month + '/' + day;
+    },
+    getCurrentMonthLastDay: function () {
+        /**
+         * 获取当前月的最后一天
+         * 返回格式: YYYY-mm-dd
+         * 例子: 当日为: 2020-11-27
+         * 返回日期为: 2020-11-30
+         * */
+        let date = new Date();
+        let currentMonth = date.getMonth();
+        let nextMonth = ++currentMonth;
+        let nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
+        let oneDay = 1000 * 60 * 60 * 24;
+        let lastTime = new Date(nextMonthFirstDay - oneDay);
+        let month = lastTime.getMonth() + 1;
+        let day = lastTime.getDate();
+        if (month < 10) {
+            month = '0' + month
+        }
+        if (day < 10) {
+            day = '0' + day
+        }
+        return date.getFullYear() + '/' + month + '/' + day;
+    },
+    formatDate: function (date) {
+        let month = date.getMonth() + 1;
+        let day = date.getDate();
+        if(month < 10) {
+            month = '0' + month;
+        }
+        if(day < 10) {
+            day = '0' + day;
+        }
+        return `${date.getFullYear()}/${month}/${day}`;
+    },
+}

+ 311 - 0
src/views/Analysis.vue

@@ -0,0 +1,311 @@
+<template>
+  <div class="analysis-list">
+    <div class="head">
+      <!-- <van-grid :border="false" :column-num="1">
+        <van-grid-item>
+          <van-image :src="headImg" width="12rem" height="12rem" fit="contain" />
+        </van-grid-item>
+      </van-grid>-->
+      <van-row @click="intradayAdd" type="flex" justify="space-around">
+        <van-col span="24">
+          <span class="text">电子支付金额</span>
+          <div class="money">{{ data.allMoney }}</div>
+        </van-col>
+        <van-col span="12">
+          <span class="text">安装辅材金额</span>
+          <div class="number">{{ data.azfzje }}</div>
+        </van-col>
+        <van-col span="12">
+          <span class="text">维修收款金额</span>
+          <div class="number">{{ data.wxskje }}</div>
+        </van-col>
+        <van-col span="12">
+          <span class="text">安装辅材工单数</span>
+          <div class="number">{{ data.azfzgds }}</div>
+        </van-col>
+        <van-col span="12">
+          <span class="text">维修收款工单数</span>
+          <div class="number">{{ data.wxskgds }}</div>
+        </van-col>
+        <van-col span="24">
+          <div class="hline"></div>
+        </van-col>
+        <van-col span="11">
+          <span class="text">当天新增安装工单量</span>
+          <div class="number">{{ data.dtxzangdl }}</div>
+        </van-col>
+        <van-col span="1">
+          <div class="line"></div>
+        </van-col>
+        <van-col span="11">
+          <span class="text">当天新增维修工单量</span>
+          <div class="number">{{ data.dtxzwxgdl }}</div>
+        </van-col>
+        <van-col span="11">
+          <span class="text">当天新增安装设备数</span>
+          <div class="number">{{ data.dtxzazsbs }}</div>
+        </van-col>
+        <van-col span="1">
+          <div class="line"></div>
+        </van-col>
+        <van-col span="11">
+          <span class="text">当天新增维修设备数</span>
+          <div class="number">{{ data.dtxzwxsbs }}</div>
+        </van-col>
+      </van-row>
+    </div>
+    <div class="second" @click="$router.push('/masterFinished/index')">
+      <van-row type="flex" justify="space-around">
+        <van-col span="11">
+          <span class="text">师傅报完工工单数一安装</span>
+          <div class="number">{{ data.bwgazsl }}</div>
+        </van-col>
+        <van-col span="1">
+          <div class="line"></div>
+        </van-col>
+        <van-col span="11">
+          <span class="text">师傅报完工工单数一维修</span>
+          <div class="number">{{ data.bwgwxsl }}</div>
+        </van-col>
+        <van-col span="11">
+          <span class="text">设备台数</span>
+          <div class="number">{{ data.bwgazts }}</div>
+        </van-col>
+        <van-col span="1">
+          <div class="line"></div>
+        </van-col>
+        <van-col span="11">
+          <span class="text">设备台数</span>
+          <div class="number">{{ data.bwgwxts }}</div>
+        </van-col>
+      </van-row>
+    </div>
+    <div class="third" @click="$router.push('/reservation/index')">
+      <van-row type="flex" justify="space-around">
+        <van-col span="11">
+          <span class="text">预约今天—安装工单</span>
+          <div class="number">{{ data.yyjtazgd }}</div>
+          <span class="text">预约今天—维修工单</span>
+          <div class="number">{{ data.yyjtwxgd }}</div>
+        </van-col>
+        <van-col span="1">
+          <div class="line"></div>
+        </van-col>
+        <van-col span="11">
+          <span class="text">预约明天—安装工单</span>
+          <div class="number">{{ data.yymtazgd }}</div>
+          <span class="text">预约明天—维修工单</span>
+          <div class="number">{{ data.yymtwxgd }}</div>
+        </van-col>
+      </van-row>
+    </div>
+    <!-- <div class="third">
+      <van-row type="flex" justify="space-around">
+        <van-col span="11">
+          <span class="text">当月分销金额</span>
+          <div class="number">{{data.yyjtazgd}}</div>
+          <span class="text">当月分销台数</span>
+          <div class="number">{{data.yyjtwxgd}}</div>
+        </van-col>
+        <van-col span="1">
+          <div class="line"></div>
+        </van-col>
+        <van-col span="11">
+          <span class="text">当天分销金额</span>
+          <div class="number">{{data.yymtazgd}}</div>
+          <span class="text">当天分销台数</span>
+          <div class="number">{{data.yymtwxgd}}</div>
+        </van-col>
+      </van-row>
+    </div>-->
+    <div class="main">
+      <van-cell-group v-for="(analysis, index) in analysisList" title :key="index">
+        <van-cell
+          :title="analysis.moduleName"
+          :to="'/analysis/' + analysis.moduleId"
+          style="margin-bottom: 15px;"
+          @click="handleEvent(analysis.moduleName)"
+        >
+          <template #icon>
+            <van-image :src="analysisIcons[analysis.moduleId]" width="2rem" height="2rem" style="margin-right: 5px;" />
+          </template>
+        </van-cell>
+      </van-cell-group>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from '@/utils/common'
+export default {
+  name: 'Analysis',
+  data() {
+    return {
+      headImg: require('../assets/home/head_logo.png'),
+      analysisList: [],
+      analysisIcons: {
+        1001: require('../assets/icon/icon_1001.png'),
+        1002: require('../assets/icon/icon_1002.png'),
+        1003: require('../assets/icon/icon_1003.png'),
+        1004: require('../assets/icon/icon_1004.png'),
+        1005: require('../assets/icon/icon_1005.png'),
+        1006: require('../assets/icon/icon_1006.png'),
+        1007: require('../assets/icon/icon_1007.png'),
+        1008: require('../assets/icon/icon_1008.png'),
+        1009: require('../assets/icon/icon_1009.png'),
+        1010: require('../assets/icon/icon_1010.png'),
+        1011: require('../assets/icon/icon_1011.png'),
+        1012: require('../assets/icon/icon_1012.png'),
+        1013: require('../assets/icon/icon_1013.png')
+      },
+      data: {
+        allMoney: 0,
+        azfzje: 0,
+        azfzgds: 0,
+        wxskje: 0,
+        wxskgds: 0,
+        dtxzangdl: 0,
+        dtxzwxgdl: 0,
+        dtxzazsbs: 0,
+        dtxzwxsbs: 0,
+        bwgazsl: 0,
+        bwgazts: 0,
+        bwgwxsl: 0,
+        bwgwxts: 0,
+        yyjtazgd: 0,
+        yymtazgd: 0,
+        yyjtwxgd: 0,
+        yymtwxgd: 0
+      }
+    }
+  },
+  methods: {
+    //格式化金额
+    formatMoney(money, decimals = 2) {
+      return new Intl.NumberFormat('zh-CN', {
+        style: 'currency', // 货币形式
+        currency: 'CNY', // "CNY"是人民币
+        currencyDisplay: 'symbol', // 默认“symbol”,中文中代表“¥”符号
+        // useGrouping: true, // 是否使用分组分隔符,如千位分隔符或千/万/亿分隔符,默认为true
+        // minimumIntegerDigits: 1, // 使用的整数数字的最小数目.可能的值是从1到21,默认值是1
+        // minimumFractionDigits: 2, // 使用的小数位数的最小数目.可能的值是从 0 到 20
+        maximumFractionDigits: decimals // 使用的小数位数的最大数目。可能的值是从 0 到 20
+      }).format(money)
+    },
+
+    //
+    intradayAdd() {
+      this.$router.push('/analysis/intradayAdd')
+    },
+    //数据
+    getData() {
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        moduleId: '11',
+        type: '家用'
+      }
+      this.postRequest('/wechat-analysis/today-summary', params).then(res => {
+        let arr = res.data
+        //电子支付金额
+        // this.data.allMoney = arr[2].c1 + arr[3].c1;
+        this.data.allMoney = this.formatMoney(arr[2].c1 + arr[3].c1)
+        //安装辅材金额、工单数
+        // this.data.azfzje = arr[2].c1;
+        this.data.azfzje = this.formatMoney(arr[2].c1)
+        this.data.azfzgds = arr[2].c2
+        // this.data.wxskje = arr[3].c1;
+        this.data.wxskje = this.formatMoney(arr[3].c1)
+        this.data.wxskgds = arr[3].c2
+        //当天新增安装工单量
+        this.data.dtxzangdl = arr[4].c1
+        this.data.dtxzwxgdl = arr[5].c1
+        this.data.dtxzazsbs = arr[4].c2
+        this.data.dtxzwxsbs = arr[5].c2
+        this.data.bwgazsl = arr[0].c1
+        this.data.bwgazts = arr[0].c2
+        this.data.bwgwxsl = arr[1].c1
+        this.data.bwgwxts = arr[1].c2
+        this.data.yyjtazgd = arr[6].c1
+        this.data.yymtazgd = arr[8].c1
+        this.data.yyjtwxgd = arr[7].c1
+        this.data.yymtwxgd = arr[9].c1
+      })
+    },
+    handleEvent(title) {
+      window.sessionStorage.setItem('moduleTitle', title)
+    }
+  },
+  created() {
+    this.analysisList = JSON.parse(window.sessionStorage.getItem('analysisList'))
+    this.getData()
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.line {
+  width: 1px;
+  height: 100%;
+  background-color: #c1c1c1;
+}
+.hline {
+  height: 1px;
+  background-color: #c1c1c1;
+  margin-bottom: 6px;
+}
+.analysis-list .head {
+  margin-bottom: 10px;
+}
+.head {
+  background-color: #fff;
+  padding: 20px 20px 20px 16px;
+  .text {
+    font-size: 14px;
+  }
+  .money {
+    color: #428dff;
+    font-size: 28px;
+    font-weight: 700;
+    padding: 10px 0 15px 0;
+  }
+  .number {
+    font-size: 20px;
+    font-weight: 700;
+    padding: 10px 0 8px 0;
+  }
+}
+.second {
+  background-color: #fff;
+  padding: 20px 16px 10px 16px;
+  margin-bottom: 10px;
+  .text {
+    font-size: 14px;
+  }
+  .number1 {
+    color: #428dff;
+    font-size: 28px;
+    font-weight: 700;
+    padding: 10px 0 15px 0;
+  }
+  .number {
+    font-size: 20px;
+    font-weight: 700;
+    padding: 10px 0 15px 0;
+  }
+}
+.third {
+  background-color: #fff;
+  padding: 20px 16px 10px 16px;
+  margin-bottom: 10px;
+  .text {
+    font-size: 14px;
+  }
+  .number {
+    // color: #428dff;
+    // font-size: 28px;
+    font-size: 20px;
+    font-weight: 700;
+    padding: 10px 0 15px 0;
+  }
+}
+</style>

+ 48 - 0
src/views/Home.vue

@@ -0,0 +1,48 @@
+<template>
+  <div class="Home">
+    <router-view />
+    <div style="height: 50px;"></div>
+    <van-tabbar route v-model="active">
+      <van-tabbar-item replace to="/home/analysis" icon="home-o">数据分析</van-tabbar-item>
+      <van-tabbar-item replace to="/home/mine" icon="contact">我的</van-tabbar-item>
+    </van-tabbar>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "Home",
+  data() {
+    return {
+      analysisList: [],
+      businessList: [],
+      active: 0,
+    };
+  },
+  methods: {},
+  created() {
+    const modules = JSON.parse(window.sessionStorage.getItem("modules"));
+    modules.forEach((value) => {
+      if (value.moduleType === "0") {
+        this.analysisList.push(value);
+      } else {
+        this.businessList.push(value);
+      }
+    });
+    window.sessionStorage.setItem(
+      "analysisList",
+      JSON.stringify(this.analysisList)
+    );
+    window.sessionStorage.setItem(
+      "businessList",
+      JSON.stringify(this.businessList)
+    );
+    this.$router.replace("/home/analysis");
+  },
+};
+</script>
+<style scoped>
+.Home {
+  height: 100%;
+}
+</style>

+ 41 - 0
src/views/Login.vue

@@ -0,0 +1,41 @@
+<template> </template>
+
+<script>
+import { getUrlKey } from '@/utils/common'
+
+export default {
+  name: 'Login',
+  mounted() {
+    if (getUrlKey('openid', window.location.href)) {
+      if (window.sessionStorage.getItem('modules')) {
+        return
+      }
+      this.postRequest('/wechat/miniProgramLogin', {
+        openid: getUrlKey('openid', window.location.href),
+        token: getUrlKey('token', window.location.href)
+      }).then(resp => {
+        console.log(resp)
+        if (resp) {
+          let data = resp.data
+          if (data.selRole === 0) {
+            //单角色处理
+            if (data.modules && data.modules.length > 0) {
+              window.sessionStorage.setItem('modules', JSON.stringify(data.modules))
+              window.sessionStorage.setItem('mobileOfficeMiniTOKEN', JSON.stringify(data.token))
+              this.$router.replace('/home')
+            } else {
+              this.$toast.fail('当前账号还未分配资源,请联系管理员')
+            }
+          } else {
+            //多角色处理(暂时忽略)
+          }
+        }
+      })
+    } else {
+      this.$router.replace('/mini')
+    }
+  }
+}
+</script>
+
+<style scoped></style>

+ 44 - 0
src/views/MiniConfirm.vue

@@ -0,0 +1,44 @@
+<template>
+  <div>
+    <div id="main" style="width: 100%;height:400px;"></div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "MiniConfirm",
+  methods: {
+    myEcharts() {
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = this.$echarts.init(document.getElementById('main'));
+
+      // 指定图表的配置项和数据
+      let option = {
+        tooltip: {},
+        legend: {
+          data: ['销量']
+        },
+        xAxis: {
+          data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
+        },
+        yAxis: {},
+        series: [{
+          name: '销量',
+          type: 'bar',
+          data: [5, 20, 36, 10, 10, 20]
+        }]
+      };
+
+      // 使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option);
+    }
+  },
+  mounted: function () {
+    this.myEcharts();
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 240 - 0
src/views/addInstallgdl.vue

@@ -0,0 +1,240 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="查看全部网点" />
+    <!-- <input type="date"> -->
+    <div style="padding:6px 16px 0px;background-color:#fff;margin-top:17px">
+      <div class="tit">当天新增安装工单量:{{gdl}}</div>
+      <div class="tit">当天新增安装设备台数:{{sbts}}</div>
+    </div>
+    <van-cell title="选择日期" :value="date" @click="show = true" is-link />
+    <van-calendar v-model="show" @confirm="onConfirm" :min-date="minDate" />
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <van-row style="padding:0 16px">
+        <van-col span="2">
+          <span class="listTitle">排名</span>
+        </van-col>
+        <van-col span="12">
+          <span class="listTitle">网点</span>
+        </van-col>
+        <van-col span="5" @click="insFn">
+          <span class="listTitle">
+            工单量
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col span="5" @click="repairFn">
+          <span class="listTitle">
+            设备台数
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
+          <van-cell v-for="(item,i) in list" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.name}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="fr">{{item.orderct}}</div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="fr">{{item.machinect}}</div>
+                </div>
+              </van-col>
+            </van-row>
+            <van-row>
+              <van-col span="2"></van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.afterNumber}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.ztazgdl>0" class="upFloat">
+                    <img style="width:12px;height:12px" src="../assets/icon/shangsheng.png" alt />
+                    {{item.ztazgdl}}%
+                  </div>
+                  <div v-if="item.ztazgdl<0" class="downFloat">
+                    <img style="width:12px;height:12px" src="../assets/icon/down.png" alt />
+                    {{-item.ztazgdl}}%
+                  </div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.ztsbs>0" class="upFloat">
+                    <img style="width:12px;height:12px" src="../assets/icon/shangsheng.png" alt />
+                    {{item.ztsbs}}%
+                  </div>
+                  <div v-if="item.ztsbs<0" class="downFloat">
+                    <img style="width:12px;height:12px" src="../assets/icon/down.png" alt />
+                    {{-item.ztsbs}}%
+                  </div>
+                </div>
+              </van-col>
+            </van-row>
+          </van-cell>
+        </van-list>
+      </van-pull-refresh>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from '@/utils/common'
+export default {
+  data() {
+    return {
+      list: [],
+      show: false,
+      minDate: new Date(2020, 1, 1),
+      date: '',
+      gdl: 0,
+      sbts: 0,
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false
+    }
+  },
+  created() {
+    let val = new Date().getTime() - 24 * 60 * 60 * 1000
+    let time = new Date(val)
+    this.date = this.formatDate(time)
+  },
+  methods: {
+    //维修筛选
+    repairFn() {
+      this.isrepair = !this.isrepair
+      if (this.isrepair) {
+        this.list.sort((a, b) => {
+          return b.machinect - a.machinect
+        }) /* 从大到小 */
+      } else {
+        this.list.sort((a, b) => {
+          return a.machinect - b.machinect
+        }) /* 从小到大 */
+      }
+      // this.isrepair = false;
+    },
+    //安装筛选
+    insFn() {
+      this.isIns = !this.isIns
+      if (this.isIns) {
+        this.list.sort((a, b) => {
+          return b.orderct - a.orderct
+        }) /* 从大到小 */
+      } else {
+        this.list.sort((a, b) => {
+          return a.orderct - b.orderct
+        }) /* 从小到大 */
+      }
+    },
+    onRefresh() {
+      // 清空列表数据
+      this.finished = false
+
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true
+      this.onLoad()
+    },
+    onLoad() {
+      this.getList()
+    },
+    //获取数据
+    getList() {
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        moduleId: '111111',
+        type: '家用',
+        startDate: this.date,
+        endDate: this.date,
+        timeConditionType: 'day',
+        sumType: 1,
+        sumMode: 'install.neworder'
+      }
+      this.postRequest('/wechat-analysis/summarys', params).then(res => {
+        let ctorder = 0
+        let num = 0 //设备台数
+        res.data.forEach(v => {
+          ctorder = ctorder + v.orderct
+          num = num + v.machinect
+          let ztazgdl = 0
+          let ztsbs = 0
+          if (v.yorder && v.orderct) {
+            ztazgdl = (((v.orderct - v.yorder) / v.yorder) * 100).toFixed(2) * 1
+          }
+          if (v.machinect && v.ymachine) {
+            ztsbs = (((v.machinect - v.ymachine) / v.ymachine) * 100).toFixed(2) * 1
+          }
+          v.ztazgdl = ztazgdl
+          v.ztsbs = ztsbs
+        })
+        // let ctorder = 0;
+        // let num = 0; //设备台数
+        // let arr = res.data.filter((v) => {
+        //   if (v.btype === "材料") {
+        //     ctorder = ctorder + v.ctorder;
+        //     // num = num + v.
+        //   }
+        //   return v.btype === "材料";
+        // });
+        this.gdl = ctorder
+        this.sbts = num
+        if (this.refreshing) {
+          this.list = []
+          this.refreshing = false
+        }
+        if (res.data.length === 0) {
+          this.list = []
+          this.finished = true
+        }
+        this.list = res.data
+        this.isIns = false
+        this.insFn()
+        this.loading = false
+        if (this.list.length >= res.data.length) {
+          this.finished = true
+        }
+      })
+    },
+    onConfirm(date) {
+      this.show = false
+      this.date = this.formatDate(date)
+      this.getList()
+    },
+    //日期格式化
+    formatDate(date) {
+      return `${date.getFullYear()}/${date.getMonth() + 1 >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1)}/${
+        date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()
+      }`
+    },
+    goBack() {
+      this.$router.back()
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+}
+.top {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+</style>

+ 248 - 0
src/views/addrepairgdl.vue

@@ -0,0 +1,248 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="查看全部网点" />
+    <!-- <input type="date"> -->
+    <div style="padding:6px 16px 0px;background-color:#fff;margin-top:17px">
+      <div class="tit">当天新增维修工单量:{{gdl}}</div>
+      <div class="tit">当天新增维修设备台数:{{sbts}}</div>
+
+    </div>
+    <van-cell title="选择日期" :value="date" @click="show = true" is-link />
+    <van-calendar v-model="show" @confirm="onConfirm" :min-date="minDate" />
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="12"><span class="listTitle">网点</span></van-col>
+        <van-col span="5" @click="insFn"><span class="listTitle">工单量
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span></van-col>
+        <van-col span="5" @click="repairFn"><span class="listTitle">设备台数
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span></van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
+          <van-cell v-for="(item,i) in list" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.name}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="fr">{{item.orderct}}</div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="fr">{{item.machinect}}</div>
+                </div>
+              </van-col>
+            </van-row>
+            <van-row>
+              <van-col span="2"></van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.afterNumber}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.ztazgdl>0" class="upFloat"><img style="width:12px;height:12px" src="../assets/icon/shangsheng.png" alt="">{{item.ztazgdl}}%</div>
+                  <div v-if="item.ztazgdl<0" class="downFloat"><img style="width:12px;height:12px" src="../assets/icon/down.png" alt="">{{-item.ztazgdl}}%</div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.ztsbs>0" class="upFloat"><img style="width:12px;height:12px" src="../assets/icon/shangsheng.png" alt="">{{item.ztsbs}}%</div>
+                  <div v-if="item.ztsbs<0" class="downFloat"><img style="width:12px;height:12px" src="../assets/icon/down.png" alt="">{{-item.ztsbs}}%</div>
+                </div>
+              </van-col>
+            </van-row>
+          </van-cell>
+        </van-list>
+      </van-pull-refresh>
+
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      list: [],
+      gdl: 0,
+      sbts: 0,
+      show: false,
+      minDate: new Date(2020, 1, 1),
+      date: "",
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false,
+    };
+  },
+  created() {
+    let val = new Date().getTime() - 24 * 60 * 60 * 1000;
+    let time = new Date(val);
+    this.date = this.formatDate(time);
+  },
+  methods: {
+    //维修筛选
+    repairFn() {
+      this.isrepair = !this.isrepair;
+      if (this.isrepair) {
+        this.list.sort((a, b) => {
+          return b.machinect - a.machinect;
+        }); /* 从大到小 */
+      } else {
+        this.list.sort((a, b) => {
+          return a.machinect - b.machinect;
+        }); /* 从小到大 */
+      }
+      // this.isrepair = false;
+    },
+    //安装筛选
+    insFn() {
+      this.isIns = !this.isIns;
+      if (this.isIns) {
+        this.list.sort((a, b) => {
+          return b.orderct - a.orderct;
+        }); /* 从大到小 */
+      } else {
+        this.list.sort((a, b) => {
+          return a.orderct - b.orderct;
+        }); /* 从小到大 */
+      }
+    },
+    onRefresh() {
+      // 清空列表数据
+      this.finished = false;
+
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true;
+      this.onLoad();
+    },
+    onLoad() {
+      this.getList();
+    },
+    //获取数据
+    getList() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "111111",
+        type: "家用",
+        startDate: this.date,
+        endDate: this.date,
+        timeConditionType: "day",
+        sumType: 1,
+        sumMode: "repair.neworder",
+      };
+      this.postRequest("/wechat-analysis/summarys", params).then((res) => {
+        // console.log(res);
+        // let dtxzwxgdl = 0;
+        // let dtxzwxsbts = 0;
+        // for (let i = 0; i < res.data.length; i++) {
+        //   if (res.data[i].btype === "维修") {
+        //     dtxzwxgdl = dtxzwxgdl + res.data[i].amount;
+        //     dtxzwxsbts = dtxzwxsbts + res.data[i].ctorder;
+        //   }
+        // }
+        // this.list = res.data;
+        // this.gdl = dtxzwxgdl;
+        // this.sbts = dtxzwxsbts;
+        // if (this.refreshing) {
+        //   this.list = [];
+        //   this.refreshing = false;
+        // }
+        // if (res.data.length === 0) {
+        //   this.list = [];
+        //   this.finished = true;
+        // }
+        // this.list.push(...res.data);
+        // this.loading = false;
+        // if (this.list.length >= res.data.length) {
+        //   this.finished = true;
+        // }
+        // let ctorder = 0;
+        // let arr = res.data.filter((v) => {
+        //   if (v.btype === "维修") {
+        //     ctorder = ctorder + v.ctorder;
+        //   }
+        //   return v.btype === "维修";
+        // });
+
+        let ctorder = 0;
+        let num = 0; //设备台数
+        res.data.forEach((v) => {
+          ctorder = ctorder + v.orderct;
+          num = num + v.machinect;
+          let ztazgdl = 0;
+          let ztsbs = 0;
+          if (v.yorder && v.orderct) {
+            ztazgdl =
+              (((v.orderct - v.yorder) / v.yorder) * 100).toFixed(2) * 1;
+          }
+          if (v.machinect && v.ymachine) {
+            ztsbs =
+              (((v.machinect - v.ymachine) / v.ymachine) * 100).toFixed(2) * 1;
+          }
+          v.ztazgdl = ztazgdl;
+          v.ztsbs = ztsbs;
+        });
+        this.gdl = ctorder;
+        this.sbts = num;
+        if (this.refreshing) {
+          this.list = [];
+          this.refreshing = false;
+        }
+        if (res.data.length === 0) {
+          this.list = [];
+          this.finished = true;
+        }
+        this.list = res.data;
+        this.isIns = false;
+        this.insFn();
+        this.loading = false;
+        if (this.list.length >= res.data.length) {
+          this.finished = true;
+        }
+      });
+    },
+    onConfirm(date) {
+      this.show = false;
+      this.date = this.formatDate(date);
+      this.getList();
+    },
+    //日期格式化
+    formatDate(date) {
+      return `${date.getFullYear()}/${
+        date.getMonth() + 1 > 9
+          ? date.getMonth() + 1
+          : "0" + (date.getMonth() + 1)
+      }/${date.getDate() > 9 ? date.getDate() : "0" + date.getDate()}`;
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+}
+.top {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+</style>

+ 237 - 0
src/views/allNetWork.vue

@@ -0,0 +1,237 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="查看全部网点" />
+    <!-- <input type="date"> -->
+    <div style="padding:6px 16px 0px;background-color:#fff;margin-top:17px">
+      <div class="tit">电子支付总金额:{{allMoney | numToFixed}}元</div>
+
+    </div>
+    <van-cell title="选择日期" :value="date" @click="show = true" is-link />
+    <van-calendar v-model="show" @confirm="onConfirm" :min-date="minDate" />
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="12"><span class="listTitle">网点</span></van-col>
+        <van-col span="5" @click="insFn"><span class="listTitle">安装支付
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span></van-col>
+        <van-col span="5" @click="repairFn"><span class="listTitle">维修支付
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span></van-col>
+      </van-row>
+      <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
+        <van-cell v-for="(item,i) in dataList" :key="i" @click="websiteDetail(item.webNumber,item.name)">
+          <van-row>
+            <van-col span="2">{{i+1}}</van-col>
+            <van-col span="12">
+              <div class="listTitle">{{item.name}}</div>
+
+            </van-col>
+            <van-col span="5">
+              <div style="text-align:right">
+                <div class="fr">{{item.amountIns | numToFixed}}</div>
+              </div>
+            </van-col>
+            <van-col span="5">
+              <div style="text-align:right">
+                <div class="fr">{{item.amountRepair | numToFixed}}</div>
+              </div>
+            </van-col>
+          </van-row>
+          <van-row>
+            <van-col span="2">
+            </van-col>
+            <van-col span="12">
+              <div class="listTitle">{{item.webNumber}}</div>
+            </van-col>
+            <van-col span="5">
+              <div style="text-align:right">
+                <div v-if="item.wmrIns>0" class="upFloat"><img style="width:12px;height:12px" src="../assets/icon/shangsheng.png" alt="">{{item.wmrIns}}%</div>
+                <div v-if="item.wmrIns<0" class="downFloat"><img style="width:12px;height:12px" src="../assets/icon/down.png" alt="">{{-item.wmrIns}}%</div>
+              </div>
+            </van-col>
+            <van-col span="5">
+              <div style="text-align:right">
+                <div v-if="item.wmrRepair>0" class="upFloat"><img style="width:12px;height:12px" src="../assets/icon/shangsheng.png" alt="">{{item.wmrRepair}}%</div>
+                <div v-if="item.wmrRepair<0" class="downFloat"><img style="width:12px;height:12px" src="../assets/icon/down.png" alt="">{{-item.wmrRepair}}%</div>
+              </div>
+            </van-col>
+          </van-row>
+        </van-cell>
+      </van-list>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      dataList: [],
+      show: false,
+      minDate: new Date(2020, 1, 1),
+      date: "",
+      allMoney: 0,
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false,
+    };
+  },
+  created() {
+    let time = this.$route.query.date;
+    console.log(time);
+    this.date = time.replace(/-/g, "/");
+  },
+  methods: {
+    //网点详情-跳转
+    websiteDetail(value, name) {
+      this.$router.push({
+        path: "/analysis/websiteDetail",
+        query: {
+          time: this.date,
+          website: value,
+          name: name,
+          type: "day",
+        },
+      });
+    },
+    //维修筛选
+    repairFn() {
+      this.isrepair = !this.isrepair;
+      if (this.isrepair) {
+        this.dataList.sort((a, b) => {
+          return b.amountRepair - a.amountRepair;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.amountRepair - b.amountRepair;
+        }); /* 从小到大 */
+      }
+      // this.isrepair = false;
+    },
+    //安装筛选
+    insFn() {
+      this.isIns = !this.isIns;
+      if (this.isIns) {
+        this.dataList.sort((a, b) => {
+          return b.amountIns - a.amountIns;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.amountIns - b.amountIns;
+        }); /* 从小到大 */
+      }
+    },
+    onRefresh() {
+      // 清空列表数据
+      this.finished = false;
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true;
+      this.onLoad();
+    },
+    onLoad() {
+      this.getList();
+    },
+    //获取数据
+    getList() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "111111",
+        type: "家用",
+        startDate: this.date,
+        endDate: this.date,
+        website: "",
+      };
+      this.postRequest("/wechat-analysis/fees-day", params).then((res) => {
+        let money = 0;
+        let websitArr = res.data.map((v) => {
+          money = money + v.amount;
+          return v.websit;
+        });
+        this.allMoney = money;
+        websitArr = [...new Set(websitArr)];
+        let list = [];
+        for (let i = 0; i < websitArr.length; i++) {
+          list[i] = {
+            webNumber: websitArr[i],
+            name: "",
+            amountIns: 0,
+            wmrIns: 0,
+            amountRepair: 0,
+            wmrRepair: 0,
+          };
+          for (let j = 0; j < res.data.length; j++) {
+            if (websitArr[i] === res.data[j].websit) {
+              list[i].name = res.data[j].webName;
+            }
+            if (
+              websitArr[i] === res.data[j].websit &&
+              res.data[j].btype === "材料"
+            ) {
+              list[i].amountIns = res.data[j].amount;
+              list[i].wmrIns = res.data[j].wmr;
+            }
+            if (
+              websitArr[i] === res.data[j].websit &&
+              res.data[j].btype === "维修"
+            ) {
+              list[i].amountRepair = res.data[j].amount;
+              list[i].wmrRepair = res.data[j].wmr;
+            }
+          }
+        }
+        if (this.refreshing) {
+          this.dataList = [];
+          this.refreshing = false;
+        }
+        if (res.data.length === 0) {
+          this.dataList = [];
+          this.finished = true;
+        }
+        this.dataList = list;
+        this.insFn();
+        this.loading = false;
+        if (this.dataList.length >= websitArr.length) {
+          this.finished = true;
+        }
+      });
+    },
+    onConfirm(date) {
+      this.show = false;
+      this.date = this.formatDate(date);
+      this.getList();
+    },
+    //日期格式化
+    formatDate(date) {
+      return `${date.getFullYear()}/${
+        date.getMonth() + 1 >= 10
+          ? date.getMonth() + 1
+          : "0" + (date.getMonth() + 1)
+      }/${date.getDate() >= 10 ? date.getDate() : "0" + date.getDate()}`;
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+}
+.top {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+</style>

+ 214 - 0
src/views/allNetWorkMonth.vue

@@ -0,0 +1,214 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="查看全部网点" />
+    <!-- <input type="date"> -->
+    <div style="padding:6px 16px 0px;background-color:#fff;margin-top:17px">
+      <div class="tit">电子支付总金额:{{allMoney|numToFixed}}元</div>
+
+    </div>
+    <van-cell title="选择日期" :value="date" @click="show = true" is-link />
+    <van-popup v-model="show" safe-area-inset-bottom position="bottom">
+      <van-datetime-picker v-model="currentDate" type="year-month" title="" :formatter="formatter" @cancel='show=false' @confirm="onConfirm" />
+    </van-popup>
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="12"><span class="listTitle">网点</span></van-col>
+        <van-col span="5" @click="insFn"><span class="listTitle">安装支付
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span></van-col>
+        <van-col span="5" @click="repairFn"><span class="listTitle">维修支付
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span></van-col>
+      </van-row>
+      <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
+        <van-cell @click="websiteMonthFn(item.websit,item.websitName)" v-for="(item,i) in dataList" :key="i">
+          <van-row>
+            <van-col span="2">{{i+1}}</van-col>
+            <van-col span="12">
+              <div class="listTitle">{{item.websitName}}</div>
+            </van-col>
+            <van-col span="5">
+              <div style="text-align:right">
+                <div class="fr">{{item.insamount|numToFixed}}</div>
+              </div>
+            </van-col>
+            <van-col span="5">
+              <div style="text-align:right">
+                <div class="fr">{{item.repamount|numToFixed}}</div>
+              </div>
+            </van-col>
+          </van-row>
+          <van-row>
+            <van-col span="2"></van-col>
+            <van-col span="12">
+              <div class="listTitle">{{item.websit}}</div>
+            </van-col>
+            <van-col span="5">
+              <div style="text-align:right">
+                <div v-if="item.linsratea>0" class="upFloat"><img style="width:12px;height:12px" src="../assets/icon/shangsheng.png" alt="">{{item.linsratea}}%</div>
+                <div v-if="item.linsratea<0" class="downFloat"><img style="width:12px;height:12px" src="../assets/icon/down.png" alt="">{{-item.linsratea}}%</div>
+              </div>
+            </van-col>
+            <van-col span="5">
+              <div style="text-align:right">
+                <div v-if="item.lrepratea>0" class="upFloat"><img style="width:12px;height:12px" src="../assets/icon/shangsheng.png" alt="">{{item.lrepratea}}%</div>
+                <div v-if="item.lrepratea<0" class="downFloat"><img style="width:12px;height:12px" src="../assets/icon/down.png" alt="">{{-item.lrepratea}}%</div>
+              </div>
+            </van-col>
+          </van-row>
+        </van-cell>
+      </van-list>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      dataList: [],
+      show: false,
+      date: "",
+      allMoney: 0,
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false,
+      currentDate: new Date(),
+    };
+  },
+  created() {
+    this.date = this.$route.query.date;
+  },
+  methods: {
+    //月报网点详情
+    websiteMonthFn(value, name) {
+      this.$router.push({
+        path: "/analysis/websiteDetail",
+        query: {
+          time: this.date,
+          website: value,
+          name: name,
+          type: "month",
+        },
+      });
+    },
+    //维修筛选
+    repairFn() {
+      this.isrepair = !this.isrepair;
+      if (this.isrepair) {
+        this.dataList.sort((a, b) => {
+          return b.repamount - a.repamount;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.repamount - b.repamount;
+        }); /* 从小到大 */
+      }
+      // this.isrepair = false;
+    },
+    //安装筛选
+    insFn() {
+      this.isIns = !this.isIns;
+      if (this.isIns) {
+        this.dataList.sort((a, b) => {
+          return b.insamount - a.insamount;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.insamount - b.insamount;
+        }); /* 从小到大 */
+      }
+    },
+    onRefresh() {
+      // 清空列表数据
+      this.finished = false;
+
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true;
+      this.onLoad();
+    },
+    onLoad() {
+      this.getList();
+    },
+    //获取数据
+    getList() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "111111",
+        type: "家用",
+        startYearMonth: this.date,
+        endYearMonth: this.date,
+        website: "",
+        sumType: 1,
+      };
+      this.postRequest("/wechat-analysis/fees-month", params).then((res) => {
+        let money = 0;
+        res.data.forEach((v) => {
+          money = money + v.insamount + v.repamount;
+        });
+        this.allMoney = money;
+        if (this.refreshing) {
+          this.dataList = [];
+          this.refreshing = false;
+        }
+        if (res.data.length === 0) {
+          this.dataList = [];
+          this.finished = true;
+        }
+        this.dataList = res.data;
+        this.insFn();
+        this.loading = false;
+        if (this.dataList.length >= res.data.length) {
+          this.finished = true;
+        }
+      });
+    },
+    onConfirm(date) {
+      this.show = false;
+      this.date = this.formatDate(date);
+      this.getList();
+    },
+    //日期格式化
+    formatDate(date) {
+      return `${date.getFullYear()}-${
+        date.getMonth() + 1 >= 10
+          ? date.getMonth() + 1
+          : "0" + (date.getMonth() + 1)
+      }`;
+    },
+    //日期格式化
+    formatter(type, val) {
+      if (type === "year") {
+        return `${val}年`;
+      } else if (type === "month") {
+        return `${val}月`;
+      }
+      return val;
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+}
+.top {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+</style>

+ 628 - 0
src/views/intradayAdd.vue

@@ -0,0 +1,628 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="当天新增" />
+    <div class="search">
+      <van-radio-group style="font-size:14px" icon-size="16px" @change="selectDateFn" v-model="dateType" direction="horizontal">
+        <van-radio name="1">七天</van-radio>
+        <van-radio name="2">近一月</van-radio>
+        <van-radio name="3">自定义</van-radio>
+        <van-radio name="4">全年</van-radio>
+        <van-button type="primary" size="mini" @click="searchFn">查询</van-button>
+      </van-radio-group>
+    </div>
+    <van-cell-group class="date-cell-group" v-show="dateType === '3'">
+      <van-cell title="选择日期区间" :value="date" @click="show = true" is-link />
+      <van-calendar v-model="show" type="range" :min-date="minDate" @confirm="onConfirm" />
+    </van-cell-group>
+    <div>
+      <van-row>
+        <van-col span="24">
+          <div @click="dzzfjeFn" style="width: auto;height: 400px;" class="payMoney" id="payMoney"></div>
+        </van-col>
+        <van-col span="24">
+          <div @click="dtxzazgdFn" style="width: auto;height: 400px;" class="payMoney" id="payMoney2"></div>
+        </van-col>
+        <van-col span="24">
+          <div @click="dtxzwxgdFn" style="width: auto;height: 400px;" class="payMoney" id="payMoney3"></div>
+        </van-col>
+      </van-row>
+
+    </div>
+    <div class="install"></div>
+    <div class="repair"></div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      dateType: "1",
+      date: "",
+      show: false,
+      startDate: "",
+      endDate: "",
+      minDate: new Date(2020, 1, 1),
+      queryData: {}, //路由需要传的参数
+      value: {
+        startDate: "",
+        endDate: "",
+      }, //路由需要传的参数
+    };
+  },
+  mounted() {
+    this.searchFn();
+  },
+  methods: {
+    dtxzwxgdFn(e) {
+      if (e.target.nodeName === "DIV" || e.target.nodeName === "SPAN") {
+        this.$router.push({
+          path: "/analysis/addrepairgdl",
+        });
+      }
+    },
+    dtxzazgdFn(e) {
+      if (e.target.nodeName === "DIV" || e.target.nodeName === "SPAN") {
+        this.$router.push({
+          path: "/analysis/addInstallgdl",
+        });
+      }
+    },
+    //电子支付金额页面
+    dzzfjeFn(e) {
+      if (e.target.nodeName === "DIV" || e.target.nodeName === "SPAN") {
+        this.$router.push({
+          path: "/analysis/payDay",
+          name: "payDay",
+          query: {
+            // date: this.queryData,
+            start: this.value.startDate,
+            end: this.value.endDate,
+          },
+        });
+      }
+    },
+    lastMonthArr(value) {
+      var d = new Date();
+      var result = [];
+      for (var i = 0; i < value; i++) {
+        var m = d.getMonth() + 1;
+        m = m < 10 ? "0" + m : m;
+        //在这里可以自定义输出的日期格式
+        result.push(d.getFullYear() + "-" + m);
+        d.setMonth(d.getMonth() - 1);
+      }
+      result.splice(0, 1);
+      return result.reverse();
+    },
+
+    getMyDate(value) {
+      const arr = [];
+      for (let i = 0; i < value; i++) {
+        const time = new Date(
+          new Date().setDate(new Date().getDate() + i - value)
+        );
+        const year = time.getFullYear();
+        const month = `0${time.getMonth() + 1}`.slice(-2);
+        const strDate = `0${time.getDate()}`.slice(-2);
+        arr.push(`${year}-${month}-${strDate}`);
+      }
+      return arr;
+    },
+    //查询
+    searchFn() {
+      let xx = 0;
+      let start = null;
+      let end = null;
+      if (this.dateType === "4") {
+        let nowDate = new Date();
+        let date = {
+          // 获取当前年份
+
+          year: nowDate.getFullYear(),
+
+          //获取当前月份
+
+          month: nowDate.getMonth() + 1,
+        };
+        start = date.year + "-01";
+        end =
+          date.year + "-" + (date.month > 9 ? date.month : "0" + date.month);
+        let params = {
+          openid: getUrlKey("openid", window.location.href),
+          moduleId: "11",
+          type: "家用",
+          startYearMonth: start,
+          endYearMonth: end,
+          website: "",
+        };
+        this.postRequest("/wechat-analysis/fees-month", params).then((res) => {
+          let azje = [];
+          let wxje = [];
+          let qnazje = [];
+          let qnwxje = [];
+          let azgdl = [];
+          let qnazgdl = [];
+          let azsbs = [];
+          let qnazsbs = [];
+          let wxsbs = [];
+          let qnwxsbs = [];
+          let wxgdl = [];
+          let qnwxgdl = [];
+          let date_x = [];
+          for (let index = 0; index < res.data.length; index++) {
+            azje.push(res.data[index].insamount);
+            wxje.push(res.data[index].repamount);
+            qnazje.push(res.data[index].yinsa);
+            qnwxje.push(res.data[index].yrepa);
+            azgdl.push(res.data[index].insorder);
+            qnazgdl.push(res.data[index].yinso);
+            wxgdl.push(res.data[index].reporder);
+            qnwxgdl.push(res.data[index].yrepo);
+            date_x.push(res.data[index].dmonth);
+          }
+          let mon = date_x;
+          let obj = {
+            title: "电子支付金额",
+            rightTitle: [
+              "安装电子支付",
+              "去年安装电子支付",
+              "维修电子支付",
+              "去年维修电子支付",
+            ],
+            ddate: mon,
+            ser: [
+              {
+                name: "安装电子支付",
+                type: "line",
+                data: azje,
+              },
+              {
+                name: "去年安装电子支付",
+                type: "line",
+                data: qnazje,
+              },
+              {
+                name: "维修电子支付",
+                type: "line",
+                data: wxje,
+              },
+              {
+                name: "去年维修电子支付",
+                type: "line",
+                data: qnwxje,
+              },
+            ],
+          };
+          let obj2 = {
+            title: "当天新增安装工单",
+            rightTitle: ["安装工单量", "去年工单量"],
+            ddate: mon,
+            ser: [
+              {
+                name: "安装工单量",
+                type: "line",
+                data: azgdl,
+              },
+              {
+                name: "去年工单量",
+                type: "line",
+                data: qnazgdl,
+              },
+            ],
+          };
+          let obj3 = {
+            title: "当天新增维修工单",
+            rightTitle: ["维修工单量", "去年工单量"],
+            ddate: mon,
+            ser: [
+              {
+                name: "维修工单量",
+                type: "line",
+                data: wxgdl,
+              },
+              {
+                name: "去年工单量",
+                type: "line",
+                data: qnwxgdl,
+              },
+            ],
+          };
+
+          this.payMoney("payMoney", obj);
+          this.payMoney("payMoney2", obj2);
+          this.payMoney("payMoney3", obj3);
+        });
+      } else {
+        if (this.dateType === "1") {
+          xx = 7;
+          start = this.dateUtils.getBeforeDate(xx);
+          // end = this.dateUtils.formatDate(new Date());
+          end = this.dateUtils.getBeforeDate(1);
+        } else if (this.dateType === "2") {
+          xx = 30;
+          start = this.dateUtils.getBeforeDate(xx);
+          // end = this.dateUtils.formatDate(new Date());
+          end = this.dateUtils.getBeforeDate(1);
+        } else {
+          start = this.startDate;
+          end = this.endDate;
+        }
+
+        let params = {
+          openid: getUrlKey("openid", window.location.href),
+          moduleId: "11",
+          type: "家用",
+          startDate: start,
+          endDate: end,
+        };
+        this.value = params;
+        this.postRequest("/wechat-analysis/fees-day-wo-website", params).then(
+          (res) => {
+            let azdzzf = [];
+            let qnazdzzf = [];
+            let wxdzzf = [];
+            let qnwxdzzf = [];
+            let date = [];
+            let azgdl = [];
+            let qnazgdl = [];
+            let wxgdl = [];
+            let qnwxgdl = [];
+            let zdyTime = [];
+            let zdyTime2 = [];
+            let azsbs = [];
+            let qnazsbs = [];
+            let wxsbs = [];
+            let qnwxsbs = [];
+            for (let index = 0; index < res.data.length; index++) {
+              if (res.data[index].btype === "材料") {
+                azdzzf.push(res.data[index].amount);
+                qnazdzzf.push(res.data[index].namount);
+                azgdl.push(res.data[index].ctorder);
+                qnazgdl.push(res.data[index].nct);
+                azsbs.push(res.data[index].machinect);
+                qnazsbs.push(res.data[index].nmachine);
+                zdyTime.push(res.data[index].ddate);
+              }
+              if (res.data[index].btype === "维修") {
+                wxdzzf.push(res.data[index].amount);
+                qnwxdzzf.push(
+                  res.data[index].namount ? res.data[index].namount : 0
+                );
+                wxgdl.push(
+                  res.data[index].ctorder ? res.data[index].ctorder : 0
+                );
+                qnwxgdl.push(res.data[index].nct ? res.data[index].nct : 0);
+                wxsbs.push(
+                  res.data[index].machinect ? res.data[index].machinect : 0
+                );
+                qnwxsbs.push(
+                  res.data[index].nmachine ? res.data[index].nmachine : 0
+                );
+                zdyTime2.push(res.data[index].ddate);
+              }
+              date.push(res.data[index].ddate);
+            }
+            let arr = [];
+            if (this.dateType === "3") {
+              arr = zdyTime == [] || zdyTime2;
+            } else {
+              arr = this.getMyDate(xx);
+            }
+            // this.queryData = arr;
+            // if (arr.length > 20) {
+            //   let a = arr.map((v, i) => {
+            //     if ((i + 1) % 7 === 1) {
+            //       return v;
+            //     } else {
+            //       return "";
+            //     }
+            //   });
+            //   arr = a;
+            // }
+            let obj = {
+              title: "电子支付金额",
+              rightTitle: [
+                "安装电子支付",
+                "去年安装电子支付",
+                "维修电子支付",
+                "去年维修电子支付",
+              ],
+              ddate: arr,
+              ser: [
+                {
+                  name: "安装电子支付",
+                  type: "line",
+                  data: azdzzf,
+                },
+                {
+                  name: "去年安装电子支付",
+                  type: "line",
+                  data: qnazdzzf,
+                },
+                {
+                  name: "维修电子支付",
+                  type: "line",
+                  data: wxdzzf,
+                },
+                {
+                  name: "去年维修电子支付",
+                  type: "line",
+                  data: qnwxdzzf,
+                },
+              ],
+            };
+            let obj2 = {
+              title: "当天新增安装工单",
+              rightTitle: [
+                "安装工单量",
+                "去年工单量",
+                "安装设备数",
+                "去年设备数",
+              ],
+              ddate: arr,
+              ser: [
+                {
+                  name: "安装工单量",
+                  type: "line",
+                  data: azgdl,
+                },
+                {
+                  name: "去年工单量",
+                  type: "line",
+                  data: qnazgdl,
+                },
+                {
+                  name: "安装设备数",
+                  type: "line",
+                  data: azsbs,
+                },
+                {
+                  name: "去年设备数",
+                  type: "line",
+                  data: qnazsbs,
+                },
+              ],
+            };
+            let obj3 = {
+              title: "当天新增维修工单",
+              rightTitle: [
+                "维修工单量",
+                "去年工单量",
+                "维修设备数",
+                "去年设备数",
+              ],
+              ddate: arr,
+              ser: [
+                {
+                  name: "维修工单量",
+                  type: "line",
+                  data: wxgdl,
+                },
+                {
+                  name: "去年工单量",
+                  type: "line",
+                  data: qnwxgdl,
+                },
+                {
+                  name: "维修设备数",
+                  type: "line",
+                  data: wxsbs,
+                },
+                {
+                  name: "去年设备数",
+                  type: "line",
+                  data: qnwxsbs,
+                },
+              ],
+            };
+
+            this.payMoney("payMoney", obj);
+            this.payMoney("payMoney2", obj2);
+            this.payMoney("payMoney3", obj3);
+          }
+        );
+      }
+    },
+    //日期区间
+    formatDate(date) {
+      return `${date.getFullYear()}/${
+        date.getMonth() + 1 > 10
+          ? date.getMonth() + 1
+          : "0" + (date.getMonth() + 1)
+      }/${date.getDate() > 10 ? date.getDate() : "0" + date.getDate()}`;
+    },
+    onConfirm(date) {
+      const [start, end] = date;
+      this.show = false;
+      this.startDate = this.formatDate(start);
+      this.endDate = this.formatDate(end);
+      this.date = `${this.formatDate(start)} - ${this.formatDate(end)}`;
+    },
+    //选择查询日期
+    selectDateFn(value) {},
+    //电子支付金额
+    payMoney(id, value) {
+      let myChart = this.$echarts.getInstanceByDom(document.getElementById(id));
+      if (myChart == null) {
+        myChart = this.$echarts.init(document.getElementById(id));
+      }
+      myChart.setOption(
+        {
+          title: {
+            text: value.title,
+          },
+          tooltip: {
+            trigger: "axis",
+            triggerOn: "click",
+            enterable: true,
+            formatter: function (params) {
+              // console.log(params, this);
+              let zzl = 0;
+              let zzl2 = 0;
+              let dataStr = `
+              <div style='font-weight:700;margin:0 8px 6px'>${params[0].name}</div>`;
+              if (this.dateType !== "4") {
+                zzl =
+                  (
+                    ((params[0].data - params[1].data) / params[1].data) *
+                    100
+                  ).toFixed(2) * 1;
+                zzl2 =
+                  (
+                    ((params[2].data - params[3].data) / params[3].data) *
+                    100
+                  ).toFixed(2) * 1;
+
+                dataStr += `
+                   <div style='margin: 0 8px'>
+                  <span style='display:inline-block;margin-right:5px;width:10px;height:10px;border-radius: 10px;background-color:${
+                    params[0].color
+                  }';></span>
+                  <span >${params[0].seriesName}</span>
+                  <div>
+                  <span style='color:#000;margin-left:20px;'>${
+                    params[0].data
+                  }<span style='color:${zzl >= 0 ? "#4790ff" : "#ff6c6c"}'>↗${
+                  zzl === Infinity ? "9999" : zzl
+                }%</span></span>
+                  </div>
+                </div>
+                <div style='margin: 0 8px'>
+                  <span style='display:inline-block;margin-right:5px;width:10px;height:10px;border-radius: 10px;background-color:${
+                    params[1].color
+                  }';></span>
+                  <span >${params[1].seriesName}</span>
+                  <div>
+                  <span style='color:#000;margin-left:20px;'>${
+                    params[1].data
+                  }</span>
+                  </div>
+                </div>
+                <div style='margin: 0 8px'>
+                  <span style='display:inline-block;margin-right:5px;width:10px;height:10px;border-radius: 10px;background-color:${
+                    params[2].color
+                  }';></span>
+                  <span >${params[2].seriesName}</span>
+                  <div>
+                  <span style='color:#000;margin-left:20px;'>${
+                    params[2].data
+                  }<span style='color:${zzl2 >= 0 ? "#4790ff" : "#ff6c6c"}'>↗${
+                  zzl2 === Infinity ? "9999" : zzl2
+                }%</span></span>
+                  </div>
+                </div>
+                <div style='margin: 0 8px'>
+                  <span style='display:inline-block;margin-right:5px;width:10px;height:10px;border-radius: 10px;background-color:${
+                    params[3].color
+                  }';></span>
+                  <span >${params[3].seriesName}</span>
+                  <div>
+                  <span style='color:#000;margin-left:20px;'>${
+                    params[3].data
+                  }</span>
+                  </div>
+                </div>
+             
+              `;
+              } else {
+                dataStr += `
+                   <div style='margin: 0 8px'>
+                  <span style='display:inline-block;margin-right:5px;width:10px;height:10px;border-radius: 10px;background-color:${params[0].color}';></span>
+                  <span >${params[0].seriesName}</span>
+                  <div>
+                  <span style='color:#000;margin-left:20px;'>${params[0].data}</span>
+                  </div>
+                </div>
+                   <div style='margin: 0 8px'>
+                  <span style='display:inline-block;margin-right:5px;width:10px;height:10px;border-radius: 10px;background-color:${params[0].color}';></span>
+                  <span >${params[1].seriesName}</span>
+                  <div>
+                  <span style='color:#000;margin-left:20px;'>${params[1].data}</span>
+                  </div>
+                </div>
+                
+                `;
+              }
+
+              // params.forEach((v) => {
+              //   dataStr += `
+              //   <div>
+              //   <div style='margin: 0 8px'>
+              //   <span style='display:inline-block;margin-right:5px;width:10px;height:10px;border-radius: 10px;background-color:${v.color}';></span>
+              //   <span >${v.seriesName}</span>
+              //   <span style='float:right;color:#000;margin-left:20px;'>${v.data}
+              //   <span style='color:#4790ff;'>↗</span></span>
+              //   </div>
+              //   </div>
+              //   `;
+              // });
+              return dataStr;
+            }.bind(this),
+          },
+          legend: {
+            data: value.rightTitle,
+            top: "6%",
+          },
+          grid: {
+            top: "20%",
+            left: "3%",
+            right: "4%",
+            bottom: "3%",
+            containLabel: true,
+          },
+          // toolbox: {
+          //   feature: {
+          //     saveAsImage: {},
+          //   },
+          // },
+          xAxis: {
+            type: "category",
+            boundaryGap: false,
+            data: value.ddate,
+            // axisLabel: {
+            //   //坐标轴刻度标签的相关设置。
+            //   interval: function (index, value) {
+            //     console.log(index, value, this.dateType);
+            //     if (index % 2 === 0 && this.dateType === "2") {
+            //       return false;
+            //     }
+            //     return true;
+            //   }.bind(this),
+            axisLabel: {
+              interval: "auto",
+              rotate: "45",
+            },
+          },
+          yAxis: {
+            type: "value",
+          },
+          series: value.ser,
+        },
+        true
+      );
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.search {
+  background-color: #fff;
+  padding: 10px 0;
+  margin-top: 10px;
+  .van-radio-group {
+    justify-content: space-around;
+    align-items: center;
+  }
+}
+.payMoney {
+  background-color: #fff;
+  margin-top: 10px;
+  padding-top: 10px;
+}
+</style>

+ 513 - 0
src/views/masterFinished/index.vue

@@ -0,0 +1,513 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="师傅报完工" />
+    <div class="search">
+      <van-radio-group style="font-size:14px" icon-size="16px" v-model="dateType" direction="horizontal">
+        <van-radio name="1">七天</van-radio>
+        <van-radio name="2">近一月</van-radio>
+        <van-radio name="3">自定义</van-radio>
+        <van-radio name="4">全年</van-radio>
+        <van-button type="primary" size="mini" @click="searchFn">查询</van-button>
+      </van-radio-group>
+    </div>
+    <van-cell-group class="date-cell-group" v-show="dateType === '3'">
+      <van-cell title="选择日期区间" :value="date" @click="show = true" is-link />
+      <van-calendar v-model="show" type="range" :min-date="minDate" @confirm="onConfirm" />
+    </van-cell-group>
+    <div>
+      <van-row>
+        <van-col span="24">
+          <div style="width: auto;height: 400px;" class="payMoney" id="ins" @click="installFn"></div>
+        </van-col>
+        <van-col span="24">
+          <div style="width: auto;height: 400px;" class="payMoney" id="repair" @click="repaireFn"></div>
+        </van-col>
+      </van-row>
+    </div>
+    <van-overlay :show="isshow">
+      <div class="wrapper">
+        <van-loading color="#0094ff" size="24px" vertical>加载中...</van-loading>
+      </div>
+    </van-overlay>
+
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      dateType: "1",
+      date: "",
+      show: false,
+      minDate: new Date(2020, 1, 1),
+      endDate: "",
+      startDate: "",
+      isshow: false,
+    };
+  },
+  created() {
+    this.searchFn();
+  },
+  methods: {
+    aaa() {
+      console.log(1111);
+    },
+    //维修工单
+    repaireFn(e) {
+      if (e.target.nodeName === "DIV" || e.target.nodeName === "SPAN") {
+        this.$router.push({
+          path: "/masterFinished/repaire",
+          query: {
+            start: this.startDate,
+            end: this.endDate,
+          },
+        });
+      }
+    },
+
+    //安装工单
+    installFn(e) {
+      if (e.target.nodeName === "DIV" || e.target.nodeName === "SPAN") {
+        this.$router.push({
+          path: "/masterFinished/install",
+          query: {
+            start: this.startDate,
+            end: this.endDate,
+          },
+        });
+      }
+    },
+    //折线图
+    echartsFn(id, value) {
+      let myChart = this.$echarts.getInstanceByDom(document.getElementById(id));
+      if (myChart == null) {
+        myChart = this.$echarts.init(document.getElementById(id));
+      }
+      myChart.setOption(
+        {
+          title: {
+            text: value.title,
+          },
+          tooltip: {
+            trigger: "axis",
+            triggerOn: "click",
+            enterable: true,
+            // formatter: function (params) {
+            //   console.log(params, this);
+            //   // if (params.seriesType === `line`) {
+            //   //   setTimeout(() => {
+            //   //     this.hookToolTip = params.name;
+            //   //   }, 1000);
+            //   // }
+            //   return "{b0}";
+            // }.bind(this),
+          },
+          legend: {
+            data: value.rightTitle,
+            top: "6%",
+          },
+          grid: {
+            top: "20%",
+            left: "3%",
+            right: "4%",
+            bottom: "3%",
+            containLabel: true,
+          },
+          // toolbox: {
+          //   feature: {
+          //     saveAsImage: {},
+          //   },
+          // },
+          xAxis: {
+            type: "category",
+            boundaryGap: false,
+            data: value.ddate,
+            axisLabel: {
+              //坐标轴刻度标签的相关设置。
+              interval: "auto",
+              rotate: "45",
+            },
+            axisTick: {
+              inside: true,
+            },
+          },
+          yAxis: {
+            type: "value",
+          },
+          series: value.ser,
+        },
+        true
+      );
+      myChart.on("click", function (params) {
+        console.log(params);
+      });
+    },
+    //折线图数据请求
+    async installEcharts(params, value) {
+      let res = await this.postRequest("/wechat-analysis/summarys", params);
+      let date = [];
+      let gdl = [];
+      let sbs = [];
+      res.data.forEach((v) => {
+        date.push(v.ddate);
+        gdl.push(v.orderct);
+        sbs.push(v.machinect);
+      });
+      if (date.length > 20) {
+        let a = date.map((v, i) => {
+          if ((i + 1) % 7 === 1) {
+            return v;
+          } else {
+            return "";
+          }
+        });
+        date = a;
+      }
+      if (value === "install") {
+        let obj = {
+          title: "安装工单",
+          rightTitle: ["安装工单量", "安装设备数"],
+          ddate: date,
+          ser: [
+            {
+              name: "安装工单量",
+              type: "line",
+              data: gdl,
+            },
+            {
+              name: "安装设备数",
+              type: "line",
+              data: sbs,
+            },
+          ],
+        };
+        this.echartsFn("ins", obj);
+      } else {
+        let obj = {
+          title: "维修工单",
+          rightTitle: ["维修工单量", "维修设备数"],
+          ddate: date,
+          ser: [
+            {
+              name: "维修工单量",
+              type: "line",
+              data: gdl,
+            },
+            {
+              name: "维修设备数",
+              type: "line",
+              data: sbs,
+            },
+          ],
+        };
+        this.echartsFn("repair", obj);
+        this.isshow = false;
+      }
+    },
+    //搜索
+    searchFn() {
+      this.isshow = true;
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "11",
+        type: "家用",
+      };
+      let obj = {};
+      if (this.dateType === "4") {
+        let nowDate = new Date();
+        let date = {
+          // 获取当前年份
+          year: nowDate.getFullYear(),
+          //获取当前月份
+          month: nowDate.getMonth() + 1,
+          //获取当天
+          day: nowDate.getDate(),
+        };
+        let start = date.year + "/01/01";
+        let end =
+          date.year +
+          "/" +
+          (date.month > 9 ? date.month : "0" + date.month) +
+          "/" +
+          (date.day > 9 ? date.day : "0" + date.day);
+        obj = {
+          startDate: start,
+          endDate: end,
+          timeConditionType: "month",
+          sumType: 0,
+        };
+      } else if (this.dateType === "3") {
+        let start = this.startDate;
+        let end = this.endDate;
+        obj = {
+          startDate: start,
+          endDate: end,
+          timeConditionType: "day",
+          sumType: 0,
+        };
+      } else if (this.dateType === "2") {
+        let start = this.dateUtils.getBeforeDate(31);
+        // let end = this.dateUtils.formatDate(new Date());
+        let end = this.dateUtils.getBeforeDate(1);
+        obj = {
+          startDate: start,
+          endDate: end,
+          timeConditionType: "day",
+          sumType: 0,
+        };
+      } else {
+        let start = this.dateUtils.getBeforeDate(7);
+
+        // let end = this.dateUtils.formatDate(new Date());
+        let end = this.dateUtils.getBeforeDate(1);
+        obj = {
+          startDate: start,
+          endDate: end,
+          timeConditionType: "day",
+          sumType: 0,
+        };
+      }
+      this.startDate = obj.startDate;
+      this.endDate = obj.endDate;
+
+      this.installEcharts(
+        { sumMode: "install.comp", ...params, ...obj },
+        "install"
+      );
+      this.installEcharts(
+        { sumMode: "repair.comp", ...params, ...obj },
+        "repair"
+      );
+    },
+    async searchFn_Old() {
+      if (this.dateType === "4") {
+        let params = {
+          openid: getUrlKey("openid", window.location.href),
+          moduleId: "11",
+          type: "家用",
+          startYearMonth: "2022-01",
+          endYearMonth: "2022-10",
+        };
+        let date_x = [];
+        let azgdl = [];
+        let wxgdl = [];
+        let res = await this.postRequest("/wechat-analysis/fees-month", params);
+        res.data.forEach((v) => {
+          date_x.push(v.dmonth);
+          azgdl.push(v.insorder);
+          wxgdl.push(v.reporder);
+        });
+
+        let obj = {
+          title: "安装工单",
+          rightTitle: ["安装工单量", "去年工单量", "安装设备数", "去年设备数"],
+          ddate: date_x,
+          ser: [
+            {
+              name: "安装工单量",
+              type: "line",
+              data: azgdl,
+            },
+          ],
+        };
+        let obj2 = {
+          title: "维修工单",
+          rightTitle: ["维修工单量"],
+          ddate: date_x,
+          ser: [
+            {
+              name: "维修工单量",
+              type: "line",
+              data: wxgdl,
+            },
+          ],
+        };
+        this.echartsFn("ins", obj);
+        this.echartsFn("repair", obj2);
+      } else {
+        let xx = 0;
+        let start = null;
+        let end = null;
+        if (this.dateType === "1") {
+          xx = 7;
+          start = this.dateUtils.getBeforeDate(xx);
+          end = this.dateUtils.formatDate(new Date());
+        } else if (this.dateType === "2") {
+          xx = 30;
+          start = this.dateUtils.getBeforeDate(xx);
+          end = this.dateUtils.formatDate(new Date());
+        } else {
+          start = this.startDate;
+          end = this.endDate;
+        }
+
+        let params = {
+          openid: getUrlKey("openid", window.location.href),
+          moduleId: "11",
+          type: "家用",
+          startDate: start,
+          endDate: end,
+          sumMode: "install.comp",
+          timeConditionType: "day",
+          sumType: 0,
+        };
+        this.startDate = params.startDate;
+        this.endDate = params.endDate;
+
+        this.postRequest("/wechat-analysis/summarys", params).then((res) => {
+          console.log(res);
+          // let date_x = [];
+          // let bwgazgdl = [];
+          // let qnbwgazgdl = [];
+          // let azsbs = [];
+          // let qnsbs = [];
+          // let wxgdl = [];
+          // let qnwxgdl = [];
+          // let wxsbs = [];
+          // let qnwxsbs = [];
+          // for (let i = 0; i < res.data.length; i++) {
+          //   if (res.data[i].btype === "维修") {
+          //     date_x.push(res.data[i].ddate);
+          //     wxgdl.push(res.data[i].ctorder);
+          //     qnwxgdl.push(res.data[i].nct);
+          //     wxsbs.push(res.data[i].machinect);
+          //     qnwxsbs.push(res.data[i].nmachine);
+          //   }
+          //   if (res.data[i].btype === "材料") {
+          //     bwgazgdl.push(res.data[i].ctorder);
+          //     qnbwgazgdl.push(res.data[i].nct);
+          //     azsbs.push(res.data[i].machinect);
+          //     qnsbs.push(res.data[i].nmachine);
+          //   }
+          // }
+          // if (date_x.length > 20) {
+          //   let a = date_x.map((v, i) => {
+          //     if ((i + 1) % 7 === 1) {
+          //       return v;
+          //     } else {
+          //       return "";
+          //     }
+          //   });
+          //   date_x = a;
+          // }
+          // let obj = {
+          //   title: "安装工单",
+          //   rightTitle: [
+          //     "安装工单量",
+          //     "去年工单量",
+          //     "安装设备数",
+          //     "去年设备数",
+          //   ],
+          //   ddate: date_x,
+          //   ser: [
+          //     {
+          //       name: "安装工单量",
+          //       type: "line",
+          //       data: bwgazgdl,
+          //     },
+          //     {
+          //       name: "去年工单量",
+          //       type: "line",
+          //       data: qnbwgazgdl,
+          //     },
+          //     {
+          //       name: "安装设备数",
+          //       type: "line",
+          //       data: azsbs,
+          //     },
+          //     {
+          //       name: "去年设备数",
+          //       type: "line",
+          //       data: qnsbs,
+          //     },
+          //   ],
+          // };
+          // let obj2 = {
+          //   title: "维修工单",
+          //   rightTitle: [
+          //     "维修工单量",
+          //     "去年工单量",
+          //     "维修设备数",
+          //     "去年设备数",
+          //   ],
+          //   ddate: date_x,
+          //   ser: [
+          //     {
+          //       name: "维修工单量",
+          //       type: "line",
+          //       data: wxgdl,
+          //     },
+          //     {
+          //       name: "去年工单量",
+          //       type: "line",
+          //       data: qnwxgdl,
+          //     },
+          //     {
+          //       name: "维修设备数",
+          //       type: "line",
+          //       data: wxsbs,
+          //     },
+          //     {
+          //       name: "去年设备数",
+          //       type: "line",
+          //       data: qnwxsbs,
+          //     },
+          //   ],
+          // };
+          // this.echartsFn("ins", obj);
+          // this.echartsFn("repair", obj2);
+        });
+      }
+    },
+    //日期区间
+    formatDate(date) {
+      return `${date.getFullYear()}/${
+        date.getMonth() + 1 > 9
+          ? date.getMonth() + 1
+          : "0" + (date.getMonth() + 1)
+      }/${date.getDate() > 9 ? date.getDate() : "0" + date.getDate()}`;
+    },
+    onConfirm(date) {
+      const [start, end] = date;
+      this.show = false;
+      this.startDate = this.formatDate(start);
+      this.endDate = this.formatDate(end);
+      this.date = `${this.formatDate(start)} - ${this.formatDate(end)}`;
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+
+.block {
+  width: 120px;
+  height: 120px;
+  background-color: #fff;
+}
+.search {
+  background-color: #fff;
+  padding: 10px 0;
+  margin-top: 10px;
+  .van-radio-group {
+    justify-content: space-around;
+    align-items: center;
+  }
+}
+.payMoney {
+  background-color: #fff;
+  margin-top: 10px;
+  padding-top: 10px;
+}
+</style>

+ 266 - 0
src/views/masterFinished/install-detail-month.vue

@@ -0,0 +1,266 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="查看全部网点" />
+    <!-- <input type="date"> -->
+    <div style="padding:6px 16px 0px;background-color:#fff;margin-top:17px">
+      <div class="tit">当月师傅报完工工单量: {{gdl}}</div>
+      <div class="tit">当月师傅报完工设备台数: {{sbts}}</div>
+    </div>
+    <van-cell title="选择日期" :value="date" @click="show = true" is-link />
+    <van-popup v-model="show" safe-area-inset-bottom position="bottom">
+      <van-datetime-picker v-model="currentDate" type="year-month" title :formatter="formatter" @cancel="show=false" @confirm="onConfirm" />
+    </van-popup>
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <van-row style="padding:0 16px">
+        <van-col span="2">
+          <span class="listTitle">排名</span>
+        </van-col>
+        <van-col span="12">
+          <span class="listTitle">网点</span>
+        </van-col>
+        <van-col span="5" @click="insFn">
+          <span class="listTitle">
+            工单量
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col span="5" @click="repairFn">
+          <span class="listTitle">
+            设备台数
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
+          <van-cell @click="websiteMonthFn(item.afterNumber)" v-for="(item,i) in dataList" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.name}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="fr">{{item.orderct}}</div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="listTitle">{{item.machinect}}</div>
+                </div>
+              </van-col>
+            </van-row>
+            <van-row>
+              <van-col span="2"></van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.afterNumber}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.sygdl>0" class="upFloat">
+                    <img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt />
+                    {{item.sygdl}}%
+                  </div>
+                  <div v-if="item.sygdl<0" class="downFloat">
+                    <img style="width:12px;height:12px" src="../../assets/icon/down.png" alt />
+                    {{-item.sygdl}}%
+                  </div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.sysbts>0" class="upFloat">
+                    <img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt />
+                    {{item.sysbts}}%
+                  </div>
+                  <div v-if="item.sysbts<0" class="downFloat">
+                    <img style="width:12px;height:12px" src="../../assets/icon/down.png" alt />
+                    {{-item.sysbts}}%
+                  </div>
+                </div>
+              </van-col>
+            </van-row>
+          </van-cell>
+        </van-list>
+      </van-pull-refresh>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from '@/utils/common'
+export default {
+  data() {
+    return {
+      dataList: [],
+      show: false,
+      date: '',
+      gdl: 0,
+      sbts: 0,
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false,
+      currentDate: new Date()
+    }
+  },
+  created() {
+    this.date = this.$route.query.time
+    this.date = this.date.replace(/-/g, '/')
+  },
+  computed: {
+    startDate() {
+      let day = this.date.split('/')
+      return day[0] + '/' + day[1] + '/01'
+    },
+    endDate() {
+      let day = this.date.split('/')
+      let days = this.getmonthday(day[0], day[1])
+      return day[0] + '/' + day[1] + '/' + days
+    }
+  },
+  methods: {
+    //月报网点详情
+    websiteMonthFn(value) {
+      this.$router.push({
+        path: '/masterFinished/installDetailWebsit',
+        query: {
+          website: value,
+          startTime: this.startDate,
+          endTime: this.endDate,
+          type: 'month'
+        }
+      })
+    },
+    getmonthday(year, month) {
+      let days = new Date(year, Number(month), 0).getDate()
+      return days
+    },
+    //维修筛选
+    repairFn() {
+      this.isrepair = !this.isrepair
+      if (this.isrepair) {
+        this.dataList.sort((a, b) => {
+          return b.machinect - a.machinect
+        }) /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.machinect - b.machinect
+        }) /* 从小到大 */
+      }
+      // this.isrepair = false;
+    },
+    //安装筛选
+    insFn() {
+      this.isIns = !this.isIns
+      if (this.isIns) {
+        this.dataList.sort((a, b) => {
+          return b.orderct - a.orderct
+        }) /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.orderct - b.orderct
+        }) /* 从小到大 */
+      }
+    },
+    onRefresh() {
+      // 清空列表数据
+      this.finished = false
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true
+      this.onLoad()
+    },
+    onLoad() {
+      this.getList()
+    },
+    //获取数据
+    getList() {
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        moduleId: '111111',
+        type: '家用',
+        startDate: this.startDate,
+        endDate: this.endDate,
+        sumType: 1,
+        sumMode: 'install.comp',
+        timeConditionType: 'month'
+      }
+      this.postRequest('/wechat-analysis/summarys', params).then(res => {
+        // console.log(res);
+        let gdl = 0
+        let sbts = 0
+        res.data.forEach(v => {
+          let sygdl = 0
+          let sysbts = 0
+          if (v.orderct && v.morder) {
+            sygdl = (((v.orderct - v.morder) / v.morder) * 100).toFixed(2) * 1
+          }
+          if (v.machinect && v.mmachine) {
+            sysbts = (((v.machinect - v.mmachine) / v.mmachine) * 100).toFixed(2) * 1
+          }
+          v.sygdl = sygdl
+          v.sysbts = sysbts
+          gdl = gdl + v.orderct
+          sbts = sbts + v.machinect
+        })
+        this.gdl = gdl
+        this.sbts = sbts
+        if (this.refreshing) {
+          this.dataList = []
+          this.refreshing = false
+        }
+        if (res.data.length === 0) {
+          this.dataList = []
+          this.finished = true
+        }
+        this.dataList = res.data
+        this.isIns = false
+        this.insFn()
+        this.loading = false
+        if (this.dataList.length >= res.data.length) {
+          this.finished = true
+        }
+      })
+    },
+    onConfirm(date) {
+      this.show = false
+      this.date = this.formatDate(date)
+      this.getList()
+    },
+    //日期格式化
+    formatDate(date) {
+      return `${date.getFullYear()}/${date.getMonth() + 1 >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1)}`
+    },
+    //日期格式化
+    formatter(type, val) {
+      if (type === 'year') {
+        return `${val}年`
+      } else if (type === 'month') {
+        return `${val}月`
+      }
+      return val
+    },
+    goBack() {
+      this.$router.back()
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+}
+.top {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+</style>

+ 160 - 0
src/views/masterFinished/install-detail-websit.vue

@@ -0,0 +1,160 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" :title="activeName==='day'?'网点详情-日报':'网点详情-月报'" />
+    <div>
+      <!-- <van-tabs @change='getList' v-model="activeName" color='#428dff'> -->
+      <div class="top">
+        <div>{{websiteName}}</div>
+        <div>{{websiteNumber}}</div>
+      </div>
+      <!-- <van-tab title="日报" name="day"> -->
+      <div v-if="activeName ==='day'">
+        <div v-for="(v,i) in list" :key="i" style="padding:16px;background-color:#fff;margin-top:10px">
+          <div>{{v.ddate}}</div>
+          <van-row style="text-align:center" type='flex' justify='space-around'>
+            <van-col span="12">
+              <div class="title">安装工单量</div>
+              <div class="num">{{v.orderct}}</div>
+              <div class="title">较上周对比</div>
+              <div v-if="v.szazgdl<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.szazgdl}}%</div>
+              <div v-if="v.szazgdl>0" class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.szazgdl}}%</div>
+            </van-col>
+            <van-col span="12">
+              <div class="title">设备数</div>
+              <div class="num">{{v.machinect}}</div>
+              <div class="title">较上周对比</div>
+              <div v-if="v.szsbs<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.szsbs}}%</div>
+              <div v-if="v.szsbs>0" class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.szsbs}}%</div>
+            </van-col>
+          </van-row>
+        </div>
+      </div>
+
+      <!-- </van-tab> -->
+      <!-- <van-tab title="月报" name="month"> -->
+      <div v-if="activeName ==='month'">
+        <div v-for="(v,i) in list" :key="i" style="padding:16px;background-color:#fff;margin-top:10px">
+          <div>{{v.ddate}}</div>
+          <van-row style="text-align:center">
+            <van-col span="12">
+              <div class="title">安装工单量</div>
+              <div class="num">{{v.orderct}}</div>
+              <div class="title">较上月对比</div>
+              <div v-if="v.syazgdl<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.syazgdl}}%</div>
+              <div v-if="v.syazgdl>0" class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.syazgdl}}%</div>
+            </van-col>
+            <van-col span="12">
+              <div class="title">设备数</div>
+              <div class="num">{{v.machinect}}</div>
+              <div class="title">较上月对比</div>
+              <div v-if="v.sysbs<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.sysbs}}%</div>
+              <div v-if="v.sysbs>0" class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.sysbs}}%</div>
+            </van-col>
+          </van-row>
+        </div>
+      </div>
+      <!-- </van-tab> -->
+      <!-- </van-tabs> -->
+    </div>
+    <van-overlay :show="isshow">
+      <div class="wrapper">
+        <van-loading color="#0094ff" size="24px" vertical>加载中...</van-loading>
+      </div>
+    </van-overlay>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      list: [],
+      websiteName: "",
+      websiteNumber: "",
+      activeName: this.$route.query.type,
+      isshow: false,
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    //获取列表数据
+    async getList() {
+      this.isshow = true;
+      this.list = [];
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "111111",
+        type: "家用",
+        startDate: this.$route.query.startTime,
+        endDate: this.$route.query.endTime,
+        website: this.$route.query.website,
+        // timeConditionType: "day",
+        sumType: 1,
+        sumMode: "install.comp",
+      };
+      if (this.activeName === "day") {
+        params.timeConditionType = "day";
+      } else {
+        params.timeConditionType = "month";
+      }
+      let res = await this.postRequest("/wechat-analysis/summarys", params);
+      res.data.forEach((v) => {
+        let szazgdl = 0;
+        let szsbs = 0;
+        let syazgdl = 0;
+        let sysbs = 0;
+        szazgdl = (((v.orderct - v.worder) / v.worder) * 100).toFixed(2) * 1;
+        szsbs =
+          (((v.machinect - v.wmachine) / v.wmachine) * 100).toFixed(2) * 1;
+        syazgdl = (((v.orderct - v.morder) / v.morder) * 100).toFixed(2) * 1;
+        sysbs =
+          (((v.machinect - v.mmachine) / v.mmachine) * 100).toFixed(2) * 1;
+        v.szazgdl = szazgdl;
+        v.szsbs = szsbs;
+        v.syazgdl = syazgdl;
+        v.sysbs = sysbs;
+        this.websiteName = v.name;
+        this.websiteNumber = v.afterNumber;
+      });
+      this.list = res.data;
+      this.isshow = false;
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+.top {
+  padding: 16px 0 16px 9px;
+  font-weight: 700;
+  font-size: 12px;
+  background-color: #fff;
+}
+.title {
+  font-size: 12px;
+  color: #afafaf;
+  margin-bottom: 5px;
+  padding-top: 16px;
+}
+.num {
+  font-size: 16px;
+  color: #1296db;
+  img {
+    width: 16px;
+    height: 16px;
+    vertical-align: bottom;
+  }
+}
+</style>

+ 223 - 0
src/views/masterFinished/install-detail.vue

@@ -0,0 +1,223 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="查看详情-安装" />
+    <!-- <input type="date"> -->
+    <div style="padding:6px 16px 0px;background-color:#fff;margin-top:17px">
+      <div class="tit">当天师傅报完工工单量: {{gdl}}</div>
+      <div class="tit">当天师傅报完工设备台数:{{sbts}}</div>
+      <!-- <div class="tit">{{date}}</div> -->
+
+    </div>
+    <van-cell title="选择日期" :value="date" @click="show = true" is-link />
+    <van-calendar v-model="show" @confirm="onConfirm" :min-date="minDate" />
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="12"><span class="listTitle">网点</span></van-col>
+        <van-col span="5" @click="insFn"><span class="listTitle">工单量
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col @click="repairFn" span="5"><span class="listTitle">设备台数
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span></van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished" finished-text="没有更多了">
+          <van-cell v-for="(item,i) in dataList" :key="i" @click="websitDetail(item.afterNumber)">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.name}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="listTitle">{{item.orderct}}</div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="listTitle">{{item.machinect}}</div>
+                </div>
+              </van-col>
+            </van-row>
+            <van-row>
+              <van-col span="2"></van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.afterNumber}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.ztazgdl<0" style="color:#dd3a25;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/down.png" alt="">{{-item.ztazgdl }}%</div>
+                  <div v-else style="color:#2da2df;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt="">{{item.ztazgdl }}%</div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.ztsbs<0" style="color:#dd3a25;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/down.png" alt="">{{-item.ztsbs }}%</div>
+                  <div v-else style="color:#2da2df;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt="">{{item.ztsbs }}%</div>
+                </div>
+              </van-col>
+            </van-row>
+          </van-cell>
+        </van-list>
+      </van-pull-refresh>
+
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      show: false,
+      minDate: new Date(2020, 1, 1),
+      date: "",
+      gdl: 0,
+      sbts: 0,
+      dataList: [],
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false,
+    };
+  },
+
+  created() {
+    this.date = this.$route.query.time.replace(/-/g, "/");
+    this.getList();
+  },
+  methods: {
+    //跳转网点详情
+    websitDetail(value) {
+      this.$router.push({
+        path: "/masterFinished/installDetailWebsit",
+        query: {
+          website: value,
+          startTime: this.date,
+          endTime: this.date,
+          type: "day",
+        },
+      });
+    },
+    onConfirm(date) {
+      this.show = false;
+      this.date = this.formatDate(date);
+      this.getList();
+    },
+    //日期格式化
+    formatDate(date) {
+      return `${date.getFullYear()}/${
+        date.getMonth() + 1 >= 10
+          ? date.getMonth() + 1
+          : "0" + (date.getMonth() + 1)
+      }/${date.getDate() >= 10 ? date.getDate() : "0" + date.getDate()}`;
+    },
+    //维修筛选
+    repairFn() {
+      this.isrepair = !this.isrepair;
+      if (this.isrepair) {
+        this.dataList.sort((a, b) => {
+          return b.machinect - a.machinect;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.machinect - b.machinect;
+        }); /* 从小到大 */
+      }
+      // this.isrepair = false;
+    },
+    //安装筛选
+    insFn() {
+      this.isIns = !this.isIns;
+      if (this.isIns) {
+        this.dataList.sort((a, b) => {
+          return b.orderct - a.orderct;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.orderct - b.orderct;
+        }); /* 从小到大 */
+      }
+    },
+    onRefresh() {
+      // 清空列表数据
+      this.finished = false;
+
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true;
+      this.getList();
+    },
+    //获取列表数据
+    getList() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "111111",
+        type: "家用",
+        startDate: this.date,
+        endDate: this.date,
+        timeConditionType: "day",
+        sumType: 1,
+        sumMode: "install.comp",
+      };
+      this.postRequest("/wechat-analysis/summarys", params).then((res) => {
+        let gdl = 0;
+        let sbts = 0;
+        res.data.forEach((v) => {
+          gdl = gdl + v.orderct;
+          sbts = sbts + v.machinect;
+          let ztazgdl = 0;
+          let ztsbs = 0;
+          if (v.yorder && v.orderct) {
+            ztazgdl =
+              (((v.orderct - v.yorder) / v.yorder) * 100).toFixed(2) * 1;
+          }
+          if (v.machinect && v.ymachine) {
+            ztsbs =
+              (((v.machinect - v.ymachine) / v.ymachine) * 100).toFixed(2) * 1;
+          }
+          v.ztazgdl = ztazgdl;
+          v.ztsbs = ztsbs;
+        });
+        this.gdl = gdl;
+        this.sbts = sbts;
+
+        if (this.refreshing) {
+          this.dataList = [];
+          this.refreshing = false;
+        }
+        if (res.data.length === 0) {
+          this.dataList = [];
+          this.finished = true;
+        }
+        this.dataList = res.data;
+        this.isIns = false;
+        this.insFn();
+        this.loading = false;
+        if (this.dataList.length >= res.data.length) {
+          this.finished = true;
+        }
+      });
+    },
+
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+}
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+</style>

+ 174 - 0
src/views/masterFinished/install.vue

@@ -0,0 +1,174 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="师傅报完工" />
+    <div>
+      <van-tabs v-model="activeName" color='#428dff' @change='getList'>
+        <van-tab title="日报" name="day">
+          <div @click="dayFn(v.ddate)" v-for="(v,i) in list" :key="i" style="padding:16px;background-color:#fff;margin-top:10px">
+            <div>{{v.ddate}}</div>
+            <van-row style="text-align:center" type='flex' justify='space-around'>
+              <van-col span="12">
+                <div class="title">安装工单量</div>
+                <div class="num">{{v.orderct}}</div>
+                <div class="title">较上周对比</div>
+                <div v-if="v.szazgdl<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.szazgdl}}%</div>
+                <div v-if="v.szazgdl>=0" class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.szazgdl}}%</div>
+              </van-col>
+              <van-col span="12">
+                <div class="title">设备数</div>
+                <div class="num">{{v.machinect}}</div>
+                <div class="title">较上周对比</div>
+                <div v-if="v.szsbs<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.szsbs}}%</div>
+                <div v-if="v.szsbs>=0" class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.szsbs}}%</div>
+              </van-col>
+
+            </van-row>
+          </div>
+        </van-tab>
+        <van-tab title="月报" name="month">
+          <div @click="monthFn(v.ddate)" v-for="(v,i) in list" :key="i" style="padding:16px;background-color:#fff;margin-top:10px">
+            <div>{{v.ddate}}</div>
+            <van-row style="text-align:center">
+              <van-col span="12">
+                <div class="title">安装工单量</div>
+                <div class="num">{{v.orderct}}</div>
+                <div class="title">较上月对比</div>
+                <div v-if="v.syazgdl<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.syazgdl}}%</div>
+                <div v-else class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.syazgdl}}%</div>
+              </van-col>
+              <van-col span="12">
+                <div class="title">设备数</div>
+                <div class="num">{{v.machinect}}</div>
+                <div class="title">较上月对比</div>
+                <div v-if="v.sysbs<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.sysbs}}%</div>
+                <div v-else class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.sysbs}}%</div>
+              </van-col>
+            </van-row>
+          </div>
+        </van-tab>
+      </van-tabs>
+    </div>
+    <van-overlay :show="isshow">
+      <div class="wrapper">
+        <van-loading color="#0094ff" size="24px" vertical>加载中...</van-loading>
+      </div>
+    </van-overlay>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      list: [],
+      listMonth: [],
+      startDate: "",
+      endDate: "",
+      activeName: "day",
+      isshow: false,
+    };
+  },
+  created() {
+    this.startDate = this.$route.query.start;
+    this.endDate = this.$route.query.end;
+    this.getList();
+    // this.getListMonth();
+  },
+  methods: {
+    getmonthday(year, month) {
+      let days = new Date(year, Number(month), 0).getDate();
+      return days;
+    },
+    //月报跳转
+    monthFn(value) {
+      this.$router.push({
+        path: "/masterFinished/installDetailMonth",
+        query: {
+          time: value,
+        },
+      });
+    },
+    //日报跳转
+    dayFn(value) {
+      this.$router.push({
+        path: "/masterFinished/installDetail",
+        query: {
+          time: value,
+        },
+      });
+    },
+    //h获取数据-日报
+    async getList() {
+      this.isshow = true;
+      this.list = [];
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "11",
+        type: "家用",
+        startDate: this.startDate,
+        endDate: this.endDate,
+        // timeConditionType: "day",
+        sumType: 0,
+        sumMode: "install.comp",
+      };
+      if (this.activeName === "day") {
+        params.timeConditionType = "day";
+      } else {
+        let day = this.startDate.split("/");
+        let day2 = this.endDate.split("/");
+        let days = this.getmonthday(day2[0], day2[1]);
+        params.startDate = day[0] + "/" + day[1] + "/01";
+        params.endDate = day2[0] + "/" + day2[1] + "/" + days;
+        params.timeConditionType = "month";
+      }
+      let res = await this.postRequest("/wechat-analysis/summarys", params);
+      res.data.forEach((v) => {
+        let szazgdl = 0;
+        let szsbs = 0;
+        let syazgdl = 0;
+        let sysbs = 0;
+        szazgdl = (((v.orderct - v.worder) / v.worder) * 100).toFixed(2) * 1;
+        szsbs =
+          (((v.machinect - v.wmachine) / v.wmachine) * 100).toFixed(2) * 1;
+        syazgdl = (((v.orderct - v.morder) / v.morder) * 100).toFixed(2) * 1;
+        sysbs =
+          (((v.machinect - v.mmachine) / v.mmachine) * 100).toFixed(2) * 1;
+        v.szazgdl = szazgdl;
+        v.szsbs = szsbs;
+        v.syazgdl = syazgdl;
+        v.sysbs = sysbs;
+      });
+      this.list = res.data.reverse();
+      this.isshow = false;
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+.title {
+  font-size: 12px;
+  color: #afafaf;
+  margin-bottom: 5px;
+  padding-top: 16px;
+}
+.num {
+  font-size: 16px;
+  color: #1296db;
+  img {
+    width: 16px;
+    height: 16px;
+    vertical-align: bottom;
+  }
+}
+</style>

+ 266 - 0
src/views/masterFinished/repaire-detail-month.vue

@@ -0,0 +1,266 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="查看全部网点" />
+    <!-- <input type="date"> -->
+    <div style="padding:6px 16px 0px;background-color:#fff;margin-top:17px">
+      <div class="tit">当月师傅报完工工单量: {{gdl}}</div>
+      <div class="tit">当月师傅报完工设备台数: {{sbts}}</div>
+    </div>
+    <van-cell title="选择日期" :value="date" @click="show = true" is-link />
+    <van-popup v-model="show" safe-area-inset-bottom position="bottom">
+      <van-datetime-picker v-model="currentDate" type="year-month" title :formatter="formatter" @cancel="show=false" @confirm="onConfirm" />
+    </van-popup>
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <van-row style="padding:0 16px">
+        <van-col span="2">
+          <span class="listTitle">排名</span>
+        </van-col>
+        <van-col span="12">
+          <span class="listTitle">网点</span>
+        </van-col>
+        <van-col span="5" @click="insFn">
+          <span class="listTitle">
+            工单量
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col span="5" @click="repairFn">
+          <span class="listTitle">
+            设备条数
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
+          <van-cell @click="websiteMonthFn(item.afterNumber)" v-for="(item,i) in dataList" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.name}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="fr">{{item.orderct}}</div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="fr">{{item.machinect}}</div>
+                </div>
+              </van-col>
+            </van-row>
+            <van-row>
+              <van-col span="2"></van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.afterNumber}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.sygdl>0" class="upFloat">
+                    <img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt />
+                    {{item.sygdl}}%
+                  </div>
+                  <div v-if="item.sygdl<0" class="downFloat">
+                    <img style="width:12px;height:12px" src="../../assets/icon/down.png" alt />
+                    {{-item.sygdl}}%
+                  </div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.sysbts>0" class="upFloat">
+                    <img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt />
+                    {{item.sysbts}}%
+                  </div>
+                  <div v-if="item.sysbts<0" class="downFloat">
+                    <img style="width:12px;height:12px" src="../../assets/icon/down.png" alt />
+                    {{-item.sysbts}}%
+                  </div>
+                </div>
+              </van-col>
+            </van-row>
+          </van-cell>
+        </van-list>
+      </van-pull-refresh>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from '@/utils/common'
+export default {
+  data() {
+    return {
+      dataList: [],
+      show: false,
+      date: '',
+      gdl: 0,
+      sbts: 0,
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false,
+      currentDate: new Date()
+    }
+  },
+  created() {
+    this.date = this.$route.query.time
+    this.date = this.date.replace(/-/g, '/')
+  },
+  computed: {
+    startDate() {
+      let day = this.date.split('/')
+      return day[0] + '/' + day[1] + '/01'
+    },
+    endDate() {
+      let day = this.date.split('/')
+      let days = this.getmonthday(day[0], day[1])
+      return day[0] + '/' + day[1] + '/' + days
+    }
+  },
+  methods: {
+    //月报网点详情
+    websiteMonthFn(value) {
+      this.$router.push({
+        path: '/masterFinished/repaireDetailWebsit',
+        query: {
+          website: value,
+          startTime: this.startDate,
+          endTime: this.endDate,
+          type: 'month'
+        }
+      })
+    },
+    getmonthday(year, month) {
+      let days = new Date(year, Number(month), 0).getDate()
+      return days
+    },
+    //维修筛选
+    repairFn() {
+      this.isrepair = !this.isrepair
+      if (this.isrepair) {
+        this.dataList.sort((a, b) => {
+          return b.machinect - a.machinect
+        }) /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.machinect - b.machinect
+        }) /* 从小到大 */
+      }
+      // this.isrepair = false;
+    },
+    //安装筛选
+    insFn() {
+      this.isIns = !this.isIns
+      if (this.isIns) {
+        this.dataList.sort((a, b) => {
+          return b.orderct - a.orderct
+        }) /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.orderct - b.orderct
+        }) /* 从小到大 */
+      }
+    },
+    onRefresh() {
+      // 清空列表数据
+      this.finished = false
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true
+      this.onLoad()
+    },
+    onLoad() {
+      this.getList()
+    },
+    //获取数据
+    getList() {
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        moduleId: '111111',
+        type: '家用',
+        startDate: this.startDate,
+        endDate: this.endDate,
+        sumType: 1,
+        sumMode: 'repair.comp',
+        timeConditionType: 'month'
+      }
+      this.postRequest('/wechat-analysis/summarys', params).then(res => {
+        console.log(res)
+        let gdl = 0
+        let sbts = 0
+        res.data.forEach(v => {
+          let sygdl = 0
+          let sysbts = 0
+          if (v.orderct && v.morder) {
+            sygdl = (((v.orderct - v.morder) / v.morder) * 100).toFixed(2) * 1
+          }
+          if (v.machinect && v.mmachine) {
+            sysbts = (((v.machinect - v.mmachine) / v.mmachine) * 100).toFixed(2) * 1
+          }
+          v.sygdl = sygdl
+          v.sysbts = sysbts
+          gdl = gdl + v.orderct
+          sbts = sbts + v.machinect
+        })
+        this.gdl = gdl
+        this.sbts = sbts
+        if (this.refreshing) {
+          this.dataList = []
+          this.refreshing = false
+        }
+        if (res.data.length === 0) {
+          this.dataList = []
+          this.finished = true
+        }
+        this.dataList = res.data
+        this.isIns = false
+        this.insFn()
+        this.loading = false
+        if (this.dataList.length >= res.data.length) {
+          this.finished = true
+        }
+      })
+    },
+    onConfirm(date) {
+      this.show = false
+      this.date = this.formatDate(date)
+      this.getList()
+    },
+    //日期格式化
+    formatDate(date) {
+      return `${date.getFullYear()}/${date.getMonth() + 1 >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1)}`
+    },
+    //日期格式化
+    formatter(type, val) {
+      if (type === 'year') {
+        return `${val}年`
+      } else if (type === 'month') {
+        return `${val}月`
+      }
+      return val
+    },
+    goBack() {
+      this.$router.back()
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+}
+.top {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+</style>

+ 183 - 0
src/views/masterFinished/repaire-detail-websit.vue

@@ -0,0 +1,183 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="网点详情" />
+    <div>
+      <!-- <van-tabs @change='getList' v-model="activeName" color='#428dff'> -->
+      <div class="top">
+        <div>{{websiteName}}</div>
+        <div>{{websiteNumber}}</div>
+      </div>
+      <!-- <van-tab title="日报" name="day"> -->
+      <div v-if="activeName ==='day'">
+        <div v-for="(v,i) in list" :key="i" style="padding:16px;background-color:#fff;margin-top:10px">
+          <div>{{v.ddate}}</div>
+          <van-row style="text-align:center" type='flex' justify='space-around'>
+            <van-col span="12">
+              <div class="title">维修工单量</div>
+              <div class="num">{{v.orderct}}</div>
+              <div class="title">较上周对比</div>
+              <div v-if="v.szazgdl<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.szazgdl}}%</div>
+              <div v-else class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.szazgdl}}%</div>
+            </van-col>
+            <van-col span="12">
+              <div class="title">设备数</div>
+              <div class="num">{{v.machinect}}</div>
+              <div class="title">较上周对比</div>
+              <div v-if="v.szsbs<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.szsbs}}%</div>
+              <div v-else class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.szsbs}}%</div>
+            </van-col>
+          </van-row>
+        </div>
+      </div>
+
+      <!-- </van-tab> -->
+      <!-- <van-tab title="月报" name="month"> -->
+      <div v-if="activeName ==='month'">
+        <div v-for="(v,i) in list" :key="i" style="padding:16px;background-color:#fff;margin-top:10px">
+          <div>{{v.ddate}}</div>
+          <van-row style="text-align:center">
+            <van-col span="12">
+              <div class="title">维修工单量</div>
+              <div class="num">{{v.orderct}}</div>
+              <div class="title">较上月对比</div>
+              <div v-if="v.syazgdl<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.syazgdl}}%</div>
+              <div v-else class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.syazgdl}}%</div>
+            </van-col>
+            <van-col span="12">
+              <div class="title">设备数</div>
+              <div class="num">{{v.machinect}}</div>
+              <div class="title">较上月对比</div>
+              <div v-if="v.sysbs<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.sysbs}}%</div>
+              <div v-else class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.sysbs}}%</div>
+            </van-col>
+          </van-row>
+        </div>
+      </div>
+
+      <!-- </van-tab> -->
+      <!-- </van-tabs> -->
+    </div>
+    <van-overlay :show="isshow">
+      <div class="wrapper">
+        <van-loading color="#0094ff" size="24px" vertical>加载中...</van-loading>
+      </div>
+    </van-overlay>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      list: [],
+      websiteName: "",
+      websiteNumber: "",
+      activeName: this.$route.query.type,
+      isshow: false,
+    };
+  },
+  created() {
+    this.getList();
+    // this.getListMonth();
+  },
+  methods: {
+    //获取数据-月报
+    async getListMonth() {
+      let nowDate = new Date();
+      let date = {
+        year: nowDate.getFullYear(), // 获取当前年份
+        month: nowDate.getMonth() + 1, //获取当前月份
+      };
+      let start = date.year + "-01";
+      let end =
+        date.year + "-" + (date.month > 9 ? date.month : "0" + date.month);
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "11",
+        type: "家用",
+        startYearMonth: start,
+        endYearMonth: end,
+        website: this.$route.query.website,
+      };
+      let res = await this.postRequest("/wechat-analysis/fees-month", params);
+      this.listMonth = res.data;
+    },
+    //获取列表数据
+    async getList() {
+      this.isshow = true;
+      this.list = [];
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "111111",
+        type: "家用",
+        startDate: this.$route.query.startTime,
+        endDate: this.$route.query.endTime,
+        website: this.$route.query.website,
+        // timeConditionType: "day",
+        sumType: 1,
+        sumMode: "repair.comp",
+      };
+      if (this.activeName === "day") {
+        params.timeConditionType = "day";
+      } else {
+        params.timeConditionType = "month";
+      }
+      let res = await this.postRequest("/wechat-analysis/summarys", params);
+      res.data.forEach((v) => {
+        let szazgdl = 0;
+        let szsbs = 0;
+        let syazgdl = 0;
+        let sysbs = 0;
+        szazgdl = (((v.orderct - v.worder) / v.worder) * 100).toFixed(2) * 1;
+        szsbs =
+          (((v.machinect - v.wmachine) / v.wmachine) * 100).toFixed(2) * 1;
+        syazgdl = (((v.orderct - v.morder) / v.morder) * 100).toFixed(2) * 1;
+        sysbs =
+          (((v.machinect - v.mmachine) / v.mmachine) * 100).toFixed(2) * 1;
+        v.szazgdl = szazgdl === Infinity ? 0 : szazgdl;
+        v.szsbs = szsbs === Infinity ? 0 : szsbs;
+        v.syazgdl = syazgdl === Infinity ? 0 : syazgdl;
+        v.sysbs = sysbs === Infinity ? 0 : sysbs;
+        this.websiteName = v.name;
+        this.websiteNumber = v.afterNumber;
+      });
+      this.list = res.data;
+      this.isshow = false;
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+.top {
+  padding: 16px 0 16px 9px;
+  font-weight: 700;
+  font-size: 12px;
+  background-color: #fff;
+}
+.title {
+  font-size: 12px;
+  color: #afafaf;
+  margin-bottom: 5px;
+  padding-top: 16px;
+}
+.num {
+  font-size: 16px;
+  color: #1296db;
+  img {
+    width: 16px;
+    height: 16px;
+    vertical-align: bottom;
+  }
+}
+</style>

+ 222 - 0
src/views/masterFinished/repaire-detail.vue

@@ -0,0 +1,222 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="查看详情-维修" />
+    <!-- <input type="date"> -->
+    <div style="padding:6px 16px 0px;background-color:#fff;margin-top:17px">
+      <div class="tit">当天师傅报完工工单量: {{gdl}}</div>
+      <div class="tit">当天师傅报完工设备台数:{{sbts}}</div>
+      <!-- <div class="tit">{{date}}</div> -->
+
+    </div>
+    <van-cell title="选择日期" :value="date" @click="show = true" is-link />
+    <van-calendar v-model="show" @confirm="onConfirm" :min-date="minDate" />
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="12"><span class="listTitle">网点</span></van-col>
+        <van-col span="5" @click="insFn"><span class="listTitle">工单量
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col @click="repairFn" span="5"><span class="listTitle">设备台数
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span></van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished" finished-text="没有更多了">
+          <van-cell v-for="(item,i) in dataList" :key="i" @click="websitDetail(item.afterNumber)">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.name}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="fr">{{item.orderct}}</div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="listTitle">{{item.machinect}}</div>
+                </div>
+              </van-col>
+            </van-row>
+            <van-row>
+              <van-col span="2"></van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.afterNumber}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.ztazgdl<0" class="downFloat"><img style="width:12px;height:12px" src="../../assets/icon/down.png" alt="">{{-item.ztazgdl }}%</div>
+                  <div v-if="item.ztazgdl>0" class="upFloat"><img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt="">{{item.ztazgdl }}%</div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.ztsbs<0" class="downFloat"><img style="width:12px;height:12px" src="../../assets/icon/down.png" alt="">{{-item.ztsbs }}%</div>
+                  <div v-if="item.ztsbs>0" class="upFloat"><img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt="">{{item.ztsbs }}%</div>
+                </div>
+              </van-col>
+            </van-row>
+          </van-cell>
+        </van-list>
+      </van-pull-refresh>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      show: false,
+      minDate: new Date(2020, 1, 1),
+      date: "",
+      gdl: 0,
+      sbts: 0,
+      dataList: [],
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false,
+    };
+  },
+
+  created() {
+    this.date = this.$route.query.time.replace(/-/g, "/");
+    this.getList();
+  },
+  methods: {
+    //跳转网点详情
+    websitDetail(value) {
+      this.$router.push({
+        path: "/masterFinished/repaireDetailWebsit",
+        query: {
+          website: value,
+          time: this.date,
+          startTime: this.date,
+          endTime: this.date,
+          type: "day",
+        },
+      });
+    },
+    onConfirm(date) {
+      this.show = false;
+      this.date = this.formatDate(date);
+      this.getList();
+    },
+    //日期格式化
+    formatDate(date) {
+      return `${date.getFullYear()}/${
+        date.getMonth() + 1 >= 10
+          ? date.getMonth() + 1
+          : "0" + (date.getMonth() + 1)
+      }/${date.getDate() >= 10 ? date.getDate() : "0" + date.getDate()}`;
+    },
+    //维修筛选
+    repairFn() {
+      this.isrepair = !this.isrepair;
+      if (this.isrepair) {
+        this.dataList.sort((a, b) => {
+          return b.machinect - a.machinect;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.machinect - b.machinect;
+        }); /* 从小到大 */
+      }
+      // this.isrepair = false;
+    },
+    //安装筛选
+    insFn() {
+      this.isIns = !this.isIns;
+      if (this.isIns) {
+        this.dataList.sort((a, b) => {
+          return b.orderct - a.orderct;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.orderct - b.orderct;
+        }); /* 从小到大 */
+      }
+    },
+    onRefresh() {
+      // 清空列表数据
+      this.finished = false;
+
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true;
+      this.getList();
+    },
+    //获取列表数据
+    getList() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "111111",
+        type: "家用",
+        startDate: this.date,
+        endDate: this.date,
+        timeConditionType: "day",
+        sumType: 1,
+        sumMode: "repair.comp",
+      };
+      this.postRequest("/wechat-analysis/summarys", params).then((res) => {
+        let gdl = 0;
+        let sbts = 0;
+        res.data.forEach((v) => {
+          gdl = gdl + v.orderct;
+          sbts = sbts + v.machinect;
+          let ztazgdl = 0;
+          let ztsbs = 0;
+          if (v.yorder && v.orderct) {
+            ztazgdl =
+              (((v.orderct - v.yorder) / v.yorder) * 100).toFixed(2) * 1;
+          }
+          if (v.machinect && v.ymachine) {
+            ztsbs =
+              (((v.machinect - v.ymachine) / v.ymachine) * 100).toFixed(2) * 1;
+          }
+          v.ztazgdl = ztazgdl;
+          v.ztsbs = ztsbs;
+        });
+        this.gdl = gdl;
+        this.sbts = sbts;
+        if (this.refreshing) {
+          this.dataList = [];
+          this.refreshing = false;
+        }
+        if (res.data.length === 0) {
+          this.dataList = [];
+          this.finished = true;
+        }
+        this.dataList = res.data;
+        this.isIns = false;
+        this.insFn();
+        this.loading = false;
+        if (this.dataList.length >= res.data.length) {
+          this.finished = true;
+        }
+      });
+    },
+
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+}
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+</style>

+ 173 - 0
src/views/masterFinished/repaire.vue

@@ -0,0 +1,173 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="师傅报完工" />
+    <div>
+      <van-tabs v-model="activeName" color='#428dff' @change='getList'>
+        <van-tab title="日报" name="day">
+          <div @click="dayFn(v.ddate)" v-for="(v,i) in list" :key="i" style="padding:16px;background-color:#fff;margin-top:10px">
+            <div>{{v.ddate}}</div>
+            <van-row style="text-align:center" type='flex' justify='space-around'>
+              <van-col span="12">
+                <div class="title">维修工单量</div>
+                <div class="num">{{v.orderct}}</div>
+                <div class="title">较上周对比</div>
+                <div v-if="v.szazgdl<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.szazgdl}}%</div>
+                <div v-else class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.szazgdl}}%</div>
+              </van-col>
+              <van-col span="12">
+                <div class="title">设备数</div>
+                <div class="num">{{v.machinect}}</div>
+                <div class="title">较上周对比</div>
+                <div v-if="v.szsbs<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.szsbs}}%</div>
+                <div v-else class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.szsbs}}%</div>
+              </van-col>
+
+            </van-row>
+          </div>
+        </van-tab>
+        <van-tab title="月报" name="month">
+          <div @click="monthFn(v.ddate)" v-for="(v,i) in list" :key="i" style="padding:16px;background-color:#fff;margin-top:10px">
+            <div>{{v.ddate}}</div>
+            <van-row style="text-align:center">
+              <van-col span="12">
+                <div class="title">维修工单量</div>
+                <div class="num">{{v.orderct}}</div>
+                <div class="title">较上月对比</div>
+                <div v-if="v.syazgdl<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.syazgdl}}%</div>
+                <div v-else class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.syazgdl}}%</div>
+              </van-col>
+              <van-col span="12">
+                <div class="title">设备数</div>
+                <div class="num">{{v.machinect}}</div>
+                <div class="title">较上月对比</div>
+                <div v-if="v.sysbs<0" class="downStyle" style="color:#d8210a"><img src='../../assets/icon/down.png'>{{-v.sysbs}}%</div>
+                <div v-else class="upStyle"><img src='../../assets/icon/shangsheng.png'>{{v.sysbs}}%</div>
+              </van-col>
+            </van-row>
+          </div>
+        </van-tab>
+      </van-tabs>
+    </div>
+    <van-overlay :show="isshow">
+      <div class="wrapper">
+        <van-loading color="#0094ff" size="24px" vertical>加载中...</van-loading>
+      </div>
+    </van-overlay>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      list: [],
+      listMonth: [],
+      startDate: "",
+      endDate: "",
+      activeName: "day",
+      isshow: false,
+    };
+  },
+  created() {
+    this.startDate = this.$route.query.start;
+    this.endDate = this.$route.query.end;
+    this.getList();
+  },
+  methods: {
+    getmonthday(year, month) {
+      let days = new Date(year, Number(month), 0).getDate();
+      return days;
+    },
+    //月报跳转
+    monthFn(value) {
+      this.$router.push({
+        path: "/masterFinished/repaireDetailMonth",
+        query: {
+          time: value,
+        },
+      });
+    },
+    //日报跳转
+    dayFn(value) {
+      this.$router.push({
+        path: "/masterFinished/repaireDetail",
+        query: {
+          time: value,
+        },
+      });
+    },
+    //h获取数据-日报
+    async getList() {
+      this.isshow = true;
+      this.list = [];
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "11",
+        type: "家用",
+        startDate: this.startDate,
+        endDate: this.endDate,
+        // timeConditionType: "day",
+        sumType: 0,
+        sumMode: "repair.comp",
+      };
+      if (this.activeName === "day") {
+        params.timeConditionType = "day";
+      } else {
+        let day = this.startDate.split("/");
+        let day2 = this.endDate.split("/");
+        let days = this.getmonthday(day2[0], day2[1]);
+        params.startDate = day[0] + "/" + day[1] + "/01";
+        params.endDate = day2[0] + "/" + day2[1] + "/" + days;
+        params.timeConditionType = "month";
+      }
+      let res = await this.postRequest("/wechat-analysis/summarys", params);
+      res.data.forEach((v) => {
+        let szazgdl = 0;
+        let szsbs = 0;
+        let syazgdl = 0;
+        let sysbs = 0;
+        szazgdl = (((v.orderct - v.worder) / v.worder) * 100).toFixed(2) * 1;
+        szsbs =
+          (((v.machinect - v.wmachine) / v.wmachine) * 100).toFixed(2) * 1;
+        syazgdl = (((v.orderct - v.morder) / v.morder) * 100).toFixed(2) * 1;
+        sysbs =
+          (((v.machinect - v.mmachine) / v.mmachine) * 100).toFixed(2) * 1;
+        v.szazgdl = szazgdl;
+        v.szsbs = szsbs;
+        v.syazgdl = syazgdl;
+        v.sysbs = sysbs;
+      });
+      this.list = res.data.reverse();
+      this.isshow = false;
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+.title {
+  font-size: 12px;
+  color: #afafaf;
+  margin-bottom: 5px;
+  padding-top: 16px;
+}
+.num {
+  font-size: 16px;
+  color: #1296db;
+  img {
+    width: 16px;
+    height: 16px;
+    vertical-align: bottom;
+  }
+}
+</style>

+ 48 - 0
src/views/mine.vue

@@ -0,0 +1,48 @@
+<template>
+  <div>
+    <div class="info" v-for="(v,i) in list" :key="i">
+      <div>网点编号:{{v.websiteNumber}}</div>
+      <div>网点名称:{{v.websiteName}}</div>
+      <div>网点属性:{{v.attr}}</div>
+    </div>
+
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      list: [],
+    };
+  },
+  created() {
+    this.getUserInfo();
+  },
+  methods: {
+    async getUserInfo() {
+      let res = await this.getRequest("/wechat/miniProgramQueryUser");
+      let type = await this.getRequest("/wechat/miniProgramBelongType");
+      for (let i = 0; i < type.data.length; i++) {
+        for (let j = 0; j < res.data.length; j++) {
+          if (type.data[i].type === res.data[j].websiteType) {
+            res.data[j].attr = type.data[i].desc;
+          }
+        }
+      }
+      this.list = res.data;
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.info {
+  font-size: 14px;
+  background-color: #fff;
+  padding-top: 20px;
+  margin-top: 20px;
+  div {
+    padding: 0 0 20px 17px;
+  }
+}
+</style>

+ 203 - 0
src/views/order/today.vue

@@ -0,0 +1,203 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="查看全部网点" />
+    <!-- <input type="date"> -->
+    <div style="padding:6px 16px 0px;background-color:#fff;margin-top:17px">
+      <div class="tit">预约今天安装工单量:{{installNumber}}</div>
+      <div class="tit">预约今天维修工单量:{{repairNumber}}</div>
+      <div class="tit">{{date}}</div>
+    </div>
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="10"><span class="listTitle">网点</span></van-col>
+        <van-col span="6" @click="insFn"><span class="listTitle">安装工单量
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col @click="repairFn" span="6"><span class="listTitle">维修工单量
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span></van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished" finished-text="没有更多了">
+          <van-cell v-for="(item,i) in dataList" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="10">
+                <div class="listTitle">{{item.name}}</div>
+                <div class="listTitle">{{item.webNumber}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">{{item.install}}</div>
+                <!-- <div v-if="item.wmr>0" style="color:#2da2df;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt="">{{item.wmr}}%</div>
+                <div v-if="item.wmr<0" style="color:#dd3a25;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/down.png" alt="">{{-item.wmr}}%</div> -->
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">{{item.repair}}</div>
+                <!-- <div v-if="item.wcr>0" style="color:#2da2df;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt="">{{item.wcr}}%</div>
+                <div v-if="item.wcr<0" style="color:#dd3a25;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/down.png" alt="">{{-item.wcr}}%</div> -->
+              </van-col>
+            </van-row>
+          </van-cell>
+        </van-list>
+      </van-pull-refresh>
+
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      installNumber: 0,
+      repairNumber: 0,
+      date: "",
+      dataList: [],
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false,
+    };
+  },
+
+  created() {
+    this.getData();
+    this.getDate();
+    this.getList();
+  },
+  methods: {
+    //维修筛选
+    repairFn() {
+      this.isrepair = !this.isrepair;
+      if (this.isrepair) {
+        this.dataList.sort((a, b) => {
+          return b.repair - a.repair;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.repair - b.repair;
+        }); /* 从小到大 */
+      }
+      // this.isrepair = false;
+    },
+    //安装筛选
+    insFn() {
+      this.isIns = !this.isIns;
+      if (this.isIns) {
+        this.dataList.sort((a, b) => {
+          return b.install - a.install;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.install - b.install;
+        }); /* 从小到大 */
+      }
+    },
+    onRefresh() {
+      // 清空列表数据
+      this.finished = false;
+
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true;
+      this.getList();
+    },
+    //获取列表数据
+    getList() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "111111",
+        type: "家用",
+        startDate: "2022/09/29", // this.date,
+        endDate: "2022/09/29", //this.date,
+        website: "",
+      };
+      this.postRequest("/wechat-analysis/fees-day", params).then((res) => {
+        let websitArr = res.data.map((v) => {
+          return v.websit;
+        });
+        websitArr = [...new Set(websitArr)];
+        let list = [];
+        for (let i = 0; i < websitArr.length; i++) {
+          list[i] = {
+            webNumber: websitArr[i],
+            name: "",
+            install: 0,
+            repair: 0,
+          };
+          for (let j = 0; j < res.data.length; j++) {
+            if (websitArr[i] === res.data[j].websit) {
+              list[i].name = res.data[j].webName;
+            }
+            if (
+              websitArr[i] === res.data[j].websit &&
+              res.data[j].btype === "材料"
+            ) {
+              list[i].install = res.data[j].ctorder;
+            }
+            if (
+              websitArr[i] === res.data[j].websit &&
+              res.data[j].btype === "维修"
+            ) {
+              list[i].repair = res.data[j].ctorder;
+            }
+          }
+        }
+        if (this.refreshing) {
+          this.dataList = [];
+          this.refreshing = false;
+        }
+        if (res.data.length === 0) {
+          this.dataList = [];
+          this.finished = true;
+        }
+        this.dataList = list;
+        this.loading = false;
+        if (this.dataList.length >= websitArr.length) {
+          this.finished = true;
+        }
+      });
+    },
+    //获取今天日期
+    getDate() {
+      let time = new Date();
+      this.date = ` ${time.getFullYear()}/${
+        time.getMonth() + 1 > 9
+          ? time.getMonth() + 1
+          : "0" + (time.getMonth() + 1)
+      }/${time.getDate() > 9 ? time.getDate() : "0" + time.getDate()}`;
+    },
+    //获取标题数据
+    getData() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "11",
+        type: "家用",
+      };
+      this.postRequest("/wechat-analysis/today-summary", params).then((res) => {
+        console.log(res);
+        this.installNumber = res.data[6].c1;
+        this.repairNumber = res.data[7].c1;
+      });
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+}
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+</style>

+ 202 - 0
src/views/order/tomorrow.vue

@@ -0,0 +1,202 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="查看全部网点" />
+    <!-- <input type="date"> -->
+    <div style="padding:6px 16px 0px;background-color:#fff;margin-top:17px">
+      <div class="tit">预约明天安装工单量:{{installNumber}}</div>
+      <div class="tit">预约明天维修工单量:{{repairNumber}}</div>
+      <div class="tit">{{date}}</div>
+    </div>
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <van-row style="padding:0 16px">
+        <van-col span="2"><span class="listTitle">排名</span></van-col>
+        <van-col span="10"><span class="listTitle">网点</span></van-col>
+        <van-col span="6" @click="insFn"><span class="listTitle">安装工单量
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col @click="repairFn" span="6"><span class="listTitle">维修工单量
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span></van-col>
+      </van-row>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished" finished-text="没有更多了">
+          <van-cell v-for="(item,i) in dataList" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="10">
+                <div class="listTitle">{{item.name}}</div>
+                <div class="listTitle">{{item.webNumber}}</div>
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">{{item.install}}</div>
+                <!-- <div v-if="item.wmr>0" style="color:#2da2df;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt="">{{item.wmr}}%</div>
+                <div v-if="item.wmr<0" style="color:#dd3a25;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/down.png" alt="">{{-item.wmr}}%</div> -->
+              </van-col>
+              <van-col span="6">
+                <div class="listTitle">{{item.repair}}</div>
+                <!-- <div v-if="item.wcr>0" style="color:#2da2df;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/shangsheng.png" alt="">{{item.wcr}}%</div>
+                <div v-if="item.wcr<0" style="color:#dd3a25;font-size:12px"><img style="width:12px;height:12px" src="../../assets/icon/down.png" alt="">{{-item.wcr}}%</div> -->
+              </van-col>
+            </van-row>
+          </van-cell>
+        </van-list>
+      </van-pull-refresh>
+
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      installNumber: 0,
+      repairNumber: 0,
+      date: "",
+      dataList: [],
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false,
+    };
+  },
+  created() {
+    this.getData();
+    this.getDate();
+    this.getList();
+  },
+  methods: {
+    //维修筛选
+    repairFn() {
+      this.isrepair = !this.isrepair;
+      if (this.isrepair) {
+        this.dataList.sort((a, b) => {
+          return b.repair - a.repair;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.repair - b.repair;
+        }); /* 从小到大 */
+      }
+      // this.isrepair = false;
+    },
+    //安装筛选
+    insFn() {
+      this.isIns = !this.isIns;
+      if (this.isIns) {
+        this.dataList.sort((a, b) => {
+          return b.install - a.install;
+        }); /* 从大到小 */
+      } else {
+        this.dataList.sort((a, b) => {
+          return a.install - b.install;
+        }); /* 从小到大 */
+      }
+    },
+    onRefresh() {
+      // 清空列表数据
+      this.finished = false;
+
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true;
+      this.getList();
+    },
+    //获取列表数据
+    getList() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "111111",
+        type: "家用",
+        startDate: "2022/09/28", // this.date,
+        endDate: "2022/09/28", //this.date,
+        website: "",
+      };
+      this.postRequest("/wechat-analysis/fees-day", params).then((res) => {
+        let websitArr = res.data.map((v) => {
+          return v.websit;
+        });
+        websitArr = [...new Set(websitArr)];
+        let list = [];
+        for (let i = 0; i < websitArr.length; i++) {
+          list[i] = {
+            webNumber: websitArr[i],
+            name: 0,
+            install: 0,
+            repair: "",
+          };
+          for (let j = 0; j < res.data.length; j++) {
+            if (websitArr[i] === res.data[j].websit) {
+              list[i].name = res.data[j].webName;
+            }
+            if (
+              websitArr[i] === res.data[j].websit &&
+              res.data[j].btype === "材料"
+            ) {
+              list[i].install = res.data[j].ctorder;
+            }
+            if (
+              websitArr[i] === res.data[j].websit &&
+              res.data[j].btype === "维修"
+            ) {
+              list[i].repair = res.data[j].ctorder;
+            }
+          }
+        }
+        if (this.refreshing) {
+          this.dataList = [];
+          this.refreshing = false;
+        }
+        if (res.data.length === 0) {
+          this.dataList = [];
+          this.finished = true;
+        }
+        this.dataList = list;
+        this.loading = false;
+        if (this.dataList.length >= websitArr.length) {
+          this.finished = true;
+        }
+      });
+    },
+    //获取今天日期
+    getDate() {
+      let time = new Date();
+      this.date = ` ${time.getFullYear()}/${
+        time.getMonth() + 1 > 9
+          ? time.getMonth() + 1
+          : "0" + (time.getMonth() + 1)
+      }/${time.getDate() > 9 ? time.getDate() : "0" + time.getDate()}`;
+    },
+    //获取标题数据
+    getData() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "11",
+        type: "家用",
+      };
+      this.postRequest("/wechat-analysis/today-summary", params).then((res) => {
+        console.log(res);
+        this.installNumber = res.data[8].c1;
+        this.repairNumber = res.data[9].c1;
+      });
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+}
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+</style>

+ 29 - 0
src/views/package.json

@@ -0,0 +1,29 @@
+{
+  "name": "mobile_office_mini",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build"
+  },
+  "dependencies": {
+    "axios": "^0.21.1",
+    "core-js": "^3.6.5",
+    "echarts": "^5.1.2",
+    "font-awesome": "^4.7.0",
+    "vant": "^2.12.23",
+    "vue": "^2.6.11",
+    "vue-router": "^3.2.0"
+  },
+  "devDependencies": {
+    "@vue/cli-plugin-babel": "~4.5.0",
+    "@vue/cli-plugin-router": "~4.5.0",
+    "@vue/cli-service": "~4.5.0",
+    "vue-template-compiler": "^2.6.11"
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions",
+    "not dead"
+  ]
+}

+ 298 - 0
src/views/payDay.vue

@@ -0,0 +1,298 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="电子支付金额" />
+    <div>
+      <van-tabs v-model="activeName" color='#428dff'>
+        <van-tab title="日报" name="day">
+          <div v-for="(v,i) in dataList" :key="i" style="padding:16px;background-color:#fff;margin-top:10px" @click="dayFn(v.date)">
+            <div>{{v.date}}</div>
+            <van-row style="text-align:center" type='flex' justify='space-around'>
+              <van-col span="8">
+                <div class="title">安装电子支付</div>
+                <div class="num">{{v.azdzzf}}</div>
+                <div class="title">较上周对比</div>
+                <div class="num" v-if="v.szazdzzf>0"><img src="../assets/icon/shangsheng.png">{{v.szazdzzf}}%</div>
+                <div class="num2" v-else><img src="../assets/icon/down.png">{{-v.szazdzzf}}%</div>
+              </van-col>
+              <van-col span="8">
+                <div class="title">安装工单量</div>
+                <div class="num">{{v.azgdl}}</div>
+                <div class="title">较上周对比</div>
+                <div class="num" v-if="v.szazgdl>0"><img src="../assets/icon/shangsheng.png">{{v.szazgdl}}%</div>
+                <div class="num2" v-else><img src="../assets/icon/down.png">{{-v.szazgdl}}%</div>
+              </van-col>
+              <van-col span="8">
+                <div class="title">开工师傅组</div>
+                <div class="num">{{v.kgsfz}}</div>
+                <div class="title">较上周对比</div>
+                <div class="num" v-if="v.szkgsfz>0"><img src="../assets/icon/shangsheng.png">{{v.szkgsfz}}%</div>
+                <div class="num2" v-else><img src="../assets/icon/down.png">{{-v.szkgsfz}}%</div>
+              </van-col>
+              <van-col span="8">
+                <div class="title">维修电子支付</div>
+                <div class="num">{{v.wxdzzf}}</div>
+                <div class="title">较上周对比</div>
+                <div class="num" v-if="v.szwxdzzf>0"><img src="../assets/icon/shangsheng.png">{{v.szwxdzzf}}%</div>
+                <div class="num2" v-else><img src="../assets/icon/down.png">{{-v.szwxdzzf}}%</div>
+              </van-col>
+              <van-col span="8">
+                <div class="title">维修工单量</div>
+                <div class="num">{{v.wxgdl}}</div>
+                <div class="title">较上周对比</div>
+                <div class="num" v-if="v.szwxgdl>0"><img src="../assets/icon/shangsheng.png">{{v.szwxgdl}}%</div>
+                <div class="num2" v-else><img src="../assets/icon/down.png">{{-v.szwxgdl}}%</div>
+              </van-col>
+              <van-col span="8">
+                <div class="title">开工师傅</div>
+                <div class="num">{{v.kgsf}}</div>
+                <div class="title">较上周对比</div>
+                <div class="num" v-if="v.szkgsf>0"><img src="../assets/icon/shangsheng.png">{{v.szkgsf}}%</div>
+                <div class="num2" v-else><img src="../assets/icon/down.png">{{-v.szkgsf}}%</div>
+              </van-col>
+            </van-row>
+          </div>
+        </van-tab>
+        <van-tab title="月报" name="month">
+          <div @click="monthFn(v.dmonth)" v-for="(v,i) in listMonth" :key="i" style="padding:16px;background-color:#fff;margin-top:10px">
+            <div>{{v.dmonth}}</div>
+            <van-row style="text-align:center">
+              <van-col span="12">
+                <div class="title">安装电子支付</div>
+                <div class="num">{{v.insamount}}</div>
+                <div class="title">较上月对比</div>
+                <div v-if="v.linsratea<0" class="num2"><img src='../assets/icon/down.png'>{{-v.linsratea}}%</div>
+                <div v-else class="num"><img src='../assets/icon/shangsheng.png'>{{v.linsratea}}%</div>
+              </van-col>
+              <van-col span="12">
+                <div class="title">安装工单量</div>
+                <div class="num">{{v.insorder}}</div>
+                <div class="title">较上月对比</div>
+                <div v-if="v.linsrateo<0" class="num2"><img src='../assets/icon/down.png'>{{-v.linsrateo}}%</div>
+                <div v-else class="num"><img src='../assets/icon/shangsheng.png'>{{v.linsrateo}}%</div>
+              </van-col>
+              <van-col span="12">
+                <div class="title">维修电子支付</div>
+                <div class="num">{{v.repamount}}</div>
+                <div class="title">较上月对比</div>
+                <div v-if="v.lrepratea<0" class="num2"><img src='../assets/icon/down.png'>{{-v.lrepratea}}%</div>
+                <div v-else class="num"><img src='../assets/icon/shangsheng.png'>{{v.lrepratea}}%</div>
+              </van-col>
+              <van-col span="12">
+                <div class="title">维修工单量</div>
+                <div class="num">{{v.reporder}}</div>
+                <div class="title">较上月对比</div>
+                <div v-if="v.lreprateo<0" class="num2"><img src='../assets/icon/down.png'>{{-v.lreprateo}}%</div>
+                <div v-else class="num"><img src='../assets/icon/shangsheng.png'>{{v.lreprateo}}%</div>
+              </van-col>
+            </van-row>
+          </div>
+        </van-tab>
+      </van-tabs>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      activeName: "day",
+      dataList: [],
+      listMonth: [],
+      obj: {
+        start: "",
+        end: "",
+      },
+    };
+  },
+  created() {
+    this.obj = {
+      start: this.$route.query.start,
+      end: this.$route.query.end,
+    };
+    this.getList();
+    this.getListMonth();
+  },
+  methods: {
+    getmonthday(year, month) {
+      let days = new Date(year, Number(month), 0).getDate();
+      return days;
+    },
+    //月结跳转
+    monthFn(value) {
+      this.$router.push({
+        path: "/analysis/allNetWorkMonth",
+        query: {
+          date: value,
+        },
+      });
+    },
+    //日报跳转
+    dayFn(value) {
+      this.$router.push({
+        path: "/analysis/allNetWork",
+        query: {
+          date: value,
+        },
+      });
+    },
+    getMyDate(value) {
+      const arr = [];
+      for (let i = 0; i < value; i++) {
+        const time = new Date(
+          new Date().setDate(new Date().getDate() + i - value)
+        );
+        const year = time.getFullYear();
+        const month = `0${time.getMonth() + 1}`.slice(-2);
+        const strDate = `0${time.getDate()}`.slice(-2);
+        arr.push(`${year}-${month}-${strDate}`);
+      }
+      return arr;
+    },
+    //获取数据---月报
+    getListMonth() {
+      let nowDate = new Date();
+      let date = {
+        year: nowDate.getFullYear(), // 获取当前年份
+        month: nowDate.getMonth() + 1, //获取当前月份
+      };
+      let start = date.year + "-01";
+      let end =
+        date.year + "-" + (date.month > 9 ? date.month : "0" + date.month);
+
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "11",
+        type: "家用",
+        startYearMonth: start,
+        endYearMonth: end,
+        website: "",
+        sumType: 0,
+      };
+
+      this.postRequest("/wechat-analysis/fees-month", params).then((res) => {
+        res.data.forEach((v) => {
+          v.insamount = this.$numToFixed(v.insamount);
+          v.repamount = this.$numToFixed(v.repamount);
+        });
+        this.listMonth = res.data.reverse();
+      });
+    },
+    //获取数据---日报
+    getList() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "11",
+        type: "家用",
+        startDate: this.obj.start,
+        endDate: this.obj.end,
+      };
+      this.postRequest("/wechat-analysis/fees-day-wo-website", params).then(
+        (res) => {
+          // let section = this.$route.query.date;
+
+          // let list = [];
+          // for (let i = 0; i < section.length; i++) {
+          //   let obj = [];
+          //   for (let j = 0; j < res.data.length; j++) {
+          //     if (section[i] === res.data[j].ddate) {
+          //       obj.push(res.data[j]);
+          //     }
+          //   }
+          //   list.push(obj);
+          // }
+          // this.dataList = list;
+
+          let time = res.data.map((v) => {
+            return v.ddate;
+          });
+          time = [...new Set(time)];
+          console.log(time);
+          let list = [];
+          for (let i = 0; i < time.length; i++) {
+            list[i] = {
+              date: time[i],
+              azdzzf: 0,
+              szazdzzf: 0,
+              azgdl: 0,
+              szazgdl: 0,
+              kgsfz: 0,
+              szkgsfz: 0,
+              wxdzzf: 0,
+              szwxdzzf: 0,
+              wxgdl: 0,
+              szwxgdl: 0,
+              kgsf: 0,
+              szkgsf: 0,
+            };
+            for (let j = 0; j < res.data.length; j++) {
+              let zzl =
+                ((res.data[j].workers - res.data[j].wworkers) /
+                  res.data[j].wworkers) *
+                100;
+              zzl = zzl.toFixed(2);
+              if (
+                time[i] === res.data[j].ddate &&
+                res.data[j].btype === "材料"
+              ) {
+                // list[i].azdzzf = res.data[j].amount;
+                list[i].azdzzf = this.$numToFixed(res.data[j].amount);
+                list[i].szazdzzf = res.data[j].wmr;
+                list[i].azgdl = res.data[j].ctorder;
+                list[i].szazgdl = res.data[j].wcr;
+                list[i].kgsfz = res.data[j].workers;
+                list[i].szkgsfz = zzl;
+              }
+              if (
+                time[i] === res.data[j].ddate &&
+                res.data[j].btype === "维修"
+              ) {
+                // list[i].wxdzzf = res.data[j].amount;
+                list[i].wxdzzf = this.$numToFixed(res.data[j].amount);
+                list[i].szwxdzzf = res.data[j].wmr;
+                list[i].wxgdl = res.data[j].ctorder;
+                list[i].szwxgdl = res.data[j].wcr;
+                list[i].kgsf = res.data[j].workers;
+                list[i].szkgsf = zzl;
+              }
+            }
+          }
+          // console.log(list);
+          this.dataList = list.reverse();
+        }
+      );
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.title {
+  font-size: 12px;
+  color: #afafaf;
+  margin-bottom: 5px;
+  padding-top: 16px;
+}
+.num {
+  font-size: 16px;
+  color: #1296db;
+  img {
+    width: 16px;
+    height: 16px;
+    vertical-align: bottom;
+  }
+}
+.num2 {
+  font-size: 16px;
+  color: #d81e06;
+  img {
+    width: 16px;
+    height: 16px;
+    vertical-align: bottom;
+  }
+}
+</style>

+ 296 - 0
src/views/reservation/index.vue

@@ -0,0 +1,296 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="预约工单" />
+    <div class="search">
+      <van-radio-group style="font-size:14px" icon-size="16px" v-model="dateType" direction="horizontal">
+        <van-radio name="1">七天</van-radio>
+        <van-radio name="2">近一月</van-radio>
+        <van-radio name="3">自定义</van-radio>
+        <van-radio name="4">全年</van-radio>
+        <van-button type="primary" size="mini" @click="searchFn">查询</van-button>
+      </van-radio-group>
+    </div>
+    <van-cell-group class="date-cell-group" v-show="dateType === '3'">
+      <van-cell title="选择日期区间" :value="date" @click="show = true" is-link />
+      <van-calendar v-model="show" type="range" :min-date="minDate" @confirm="onConfirm" />
+    </van-cell-group>
+    <div>
+      <van-row>
+        <van-col span="24">
+          <div style="width: auto;height: 400px;" class="payMoney" id="today" @click="toWebsiteFn"></div>
+        </van-col>
+      </van-row>
+    </div>
+    <van-overlay :show="isshow">
+      <div class="wrapper">
+        <van-loading color="#0094ff" size="24px" vertical>加载中...</van-loading>
+      </div>
+    </van-overlay>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from '@/utils/common'
+export default {
+  data() {
+    return {
+      dateType: '1',
+      date: '',
+      show: false,
+      minDate: new Date(2020, 1, 1),
+      endDate: '',
+      startDate: '',
+      isshow: false
+    }
+  },
+  created() {
+    this.searchFn()
+  },
+  methods: {
+    toWebsiteFn(e) {
+      if (e.target.nodeName === 'DIV' || e.target.nodeName === 'SPAN') {
+        console.log(e)
+        let time =
+          e.path.length > 14
+            ? e.path[7].innerText.split('安装工单量')[0].split('\n')[0]
+            : e.path[4].innerText.split('安装工单量')[0].split('\n')[0]
+        this.$router.push({
+          path: '/reservation/website',
+          query: {
+            time,
+            type: this.dateType
+          }
+        })
+      }
+    },
+    //折线图
+    echartsFn(id, value) {
+      let myChart = this.$echarts.getInstanceByDom(document.getElementById(id))
+      if (myChart == null) {
+        myChart = this.$echarts.init(document.getElementById(id))
+      }
+      myChart.setOption(
+        {
+          title: {
+            text: value.title
+          },
+          tooltip: {
+            trigger: 'axis',
+            triggerOn: 'click',
+            enterable: true
+            // formatter: function (params) {
+            //   console.log(params, this);
+            //   // if (params.seriesType === `line`) {
+            //   //   setTimeout(() => {
+            //   //     this.hookToolTip = params.name;
+            //   //   }, 1000);
+            //   // }
+            //   return "{b0}";
+            // }.bind(this),
+          },
+          legend: {
+            data: value.rightTitle,
+            top: '6%'
+          },
+          grid: {
+            top: '20%',
+            left: '3%',
+            right: '4%',
+            bottom: '3%',
+            containLabel: true
+          },
+          // toolbox: {
+          //   feature: {
+          //     saveAsImage: {},
+          //   },
+          // },
+          xAxis: {
+            type: 'category',
+            boundaryGap: false,
+            data: value.ddate,
+            axisLabel: {
+              //坐标轴刻度标签的相关设置。
+              interval: 'auto',
+              rotate: '45'
+            },
+            axisTick: {
+              inside: true
+            }
+          },
+          yAxis: {
+            type: 'value'
+          },
+          series: value.ser
+        },
+        true
+      )
+      myChart.on('click', function (params) {
+        console.log(params, 1111)
+      })
+    },
+    //折线图数据请求
+    async installEcharts(params, value) {
+      let installRes = await this.postRequest('/wechat-analysis/summarys', { sumMode: 'install.reserve', ...params })
+      let repairRes = await this.postRequest('/wechat-analysis/summarys', { sumMode: 'repair.reserve', ...params })
+      //   console.log(repairRes)
+      let date = []
+      let azgdl = []
+      let azsbs = []
+      let wxgdl = []
+      let wxsbs = []
+      installRes.data.forEach(v => {
+        date.push(v.ddate)
+        azgdl.push(v.orderct)
+        azsbs.push(v.machinect)
+      })
+      repairRes.data.forEach(v => {
+        // date.push(v.ddate)
+        wxgdl.push(v.orderct)
+        wxsbs.push(v.machinect)
+      })
+      //   if (date.length > 20) {
+      //     let a = date.map((v, i) => {
+      //       if ((i + 1) % 7 === 1) {
+      //         return v
+      //       } else {
+      //         return ''
+      //       }
+      //     })
+      //     date = a
+      //   }
+      //   console.log(date)
+      if (value === 'today') {
+        let obj = {
+          title: '预约工单量',
+          rightTitle: ['安装工单量', '安装设备数', '维修工单量', '维修设备数'],
+          ddate: date,
+          ser: [
+            {
+              name: '安装工单量',
+              type: 'line',
+              data: azgdl
+            },
+            {
+              name: '安装设备数',
+              type: 'line',
+              data: azsbs
+            },
+            {
+              name: '维修工单量',
+              type: 'line',
+              data: wxgdl
+            },
+            {
+              name: '维修设备数',
+              type: 'line',
+              data: wxsbs
+            }
+          ]
+        }
+        this.echartsFn('today', obj)
+        this.isshow = false
+      }
+    },
+
+    //查询
+    async searchFn() {
+      this.isshow = true
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        moduleId: '11',
+        type: '家用'
+      }
+      let obj = {}
+      if (this.dateType === '4') {
+        let nowDate = new Date()
+        let date = {
+          // 获取当前年份
+          year: nowDate.getFullYear(),
+          //获取当前月份
+          month: nowDate.getMonth() + 1,
+          //获取当天
+          day: nowDate.getDate()
+        }
+        let start = date.year + '/01/01'
+        let end = date.year + '/' + (date.month > 9 ? date.month : '0' + date.month) + '/' + (date.day > 9 ? date.day : '0' + date.day)
+        obj = {
+          startDate: start,
+          endDate: end,
+          timeConditionType: 'month',
+          sumType: 0
+        }
+      } else if (this.dateType === '3') {
+        let start = this.startDate
+        let end = this.endDate
+        obj = {
+          startDate: start,
+          endDate: end,
+          timeConditionType: 'day',
+          sumType: 0
+        }
+      } else if (this.dateType === '2') {
+        let start = this.dateUtils.getBeforeDate(31)
+        // let end = this.dateUtils.formatDate(new Date());
+        let end = this.dateUtils.getBeforeDate(1)
+        obj = {
+          startDate: start,
+          endDate: end,
+          timeConditionType: 'day',
+          sumType: 0
+        }
+      } else {
+        let start = this.dateUtils.getBeforeDate(7)
+        // let end = this.dateUtils.formatDate(new Date())
+        let end = this.dateUtils.getBeforeDate(-1)
+        obj = {
+          startDate: start,
+          endDate: end,
+          timeConditionType: 'day',
+          sumType: 0
+        }
+      }
+      //   let res = await this.postRequest('/wechat-analysis/summarys', { sumMode: 'install.reserve', ...params, ...obj })
+      this.installEcharts({ ...params, ...obj }, 'today')
+    },
+    //日期区间
+    formatDate(date) {
+      return `${date.getFullYear()}/${date.getMonth() + 1 > 9 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1)}/${
+        date.getDate() > 9 ? date.getDate() : '0' + date.getDate()
+      }`
+    },
+    onConfirm(date) {
+      const [start, end] = date
+      this.show = false
+      this.startDate = this.formatDate(start)
+      this.endDate = this.formatDate(end)
+      this.date = `${this.formatDate(start)} - ${this.formatDate(end)}`
+    },
+    goBack() {
+      this.$router.back()
+    }
+  }
+}
+</script>
+
+<style lang='scss' scoped>
+.wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+.search {
+  background-color: #fff;
+  padding: 10px 0;
+  margin-top: 10px;
+  .van-radio-group {
+    justify-content: space-around;
+    align-items: center;
+  }
+}
+.payMoney {
+  background-color: #fff;
+  margin-top: 10px;
+  padding-top: 10px;
+}
+</style>

+ 329 - 0
src/views/reservation/website.vue

@@ -0,0 +1,329 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="查看全部网点" />
+    <div style="padding:6px 16px 0px;background-color:#fff;margin-top:17px">
+      <div class="tit">预约安装工单量:{{reservation.install}}</div>
+      <div class="tit">预约维修工单量:{{reservation.repaire}}</div>
+    </div>
+    <van-cell title="选择日期" :value="date" @click="show = true" is-link />
+    <!-- <van-calendar v-model="show" @confirm="onConfirm" :min-date="minDate" /> -->
+    <van-popup v-model="show" style="border-radius:10px">
+      <div style="width:90vw">
+        <van-datetime-picker
+          @confirm="confirmFn"
+          @cancel="cancelFn"
+          v-model="time"
+          :type="type === '4' ? 'year-month' : 'date' "
+          :title="type === '4' ? '选择年月' : '选择年月日'"
+          :min-date="minDate"
+          :max-date="maxDate"
+        />
+      </div>
+    </van-popup>
+    <div style="margin-top:18px;background-color:#fff;padding-top:6px">
+      <div class="list_title">
+        <div class="rank">排名</div>
+        <div class="website">网点</div>
+        <div class="install" @click="insFn">
+          安装工单量
+          <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+        </div>
+        <div class="repaire" @click="repairFn">
+          维修工单量
+          <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+        </div>
+      </div>
+      <!-- <van-row style="padding:0 16px">
+        <van-col span="2">
+          <span class="listTitle">排名</span>
+        </van-col>
+        <van-col span="12">
+          <span class="listTitle">网点</span>
+        </van-col>
+        <van-col span="5" @click="insFn">
+          <span class="listTitle">
+            安装工单量
+            <van-icon :name="isIns?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+        <van-col span="5" @click="repairFn">
+          <span class="listTitle">
+            维修工单量
+            <van-icon :name="isrepair?'arrow-down':'arrow-up'" />
+          </span>
+        </van-col>
+      </van-row>-->
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
+          <div class="list_title" v-for="(item,i) in list" :key="i">
+            <div class="rank">{{i+1}}</div>
+            <div class="website">{{item.name+'('+item.afterNumber+')'}}</div>
+            <div class="install">{{item.azgdl}}</div>
+            <div class="repaire">{{item.wxgdl}}</div>
+          </div>
+          <!-- <van-cell v-for="(item,i) in list" :key="i">
+            <van-row>
+              <van-col span="2">{{i+1}}</van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.name}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="fr">{{item.azgdl}}</div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div class="fr">{{item.wxgdl}}</div>
+                </div>
+              </van-col>
+            </van-row>
+            <van-row>
+              <van-col span="2"></van-col>
+              <van-col span="12">
+                <div class="listTitle">{{item.afterNumber}}</div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.ztazgdl>0" class="upFloat">
+                    <img style="width:12px;height:12px" src="../assets/icon/shangsheng.png" alt />
+                    {{item.ztazgdl}}%
+                  </div>
+                  <div v-if="item.ztazgdl<0" class="downFloat">
+                    <img style="width:12px;height:12px" src="../assets/icon/down.png" alt />
+                    {{-item.ztazgdl}}%
+                  </div>
+                </div>
+              </van-col>
+              <van-col span="5">
+                <div style="text-align:right">
+                  <div v-if="item.ztsbs>0" class="upFloat">
+                    <img style="width:12px;height:12px" src="../assets/icon/shangsheng.png" alt />
+                    {{item.ztsbs}}%
+                  </div>
+                  <div v-if="item.ztsbs<0" class="downFloat">
+                    <img style="width:12px;height:12px" src="../assets/icon/down.png" alt />
+                    {{-item.ztsbs}}%
+                  </div>
+                </div>
+              </van-col>
+            </van-row>
+          </van-cell>-->
+        </van-list>
+      </van-pull-refresh>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from '@/utils/common'
+export default {
+  data() {
+    return {
+      azgdl: 0,
+      wxgdl: 0,
+      show: false,
+      date: '',
+      time: '',
+      minDate: new Date(2010, 1, 1),
+      maxDate: new Date(2030, 10, 1),
+      loading: false,
+      finished: false,
+      refreshing: false,
+      isIns: false,
+      isrepair: false,
+      list: [],
+      type: this.$route.query.type,
+      startDate: '',
+      endDate: ''
+    }
+  },
+  created() {
+    console.log(this.$route)
+    this.date = this.$route.query.time.replace(/-/g, '/')
+    if (this.$route.query.type === '4') {
+      let year = this.$route.query.time.slice(0, 4)
+      let month = this.$route.query.time.slice(5, 8)
+      let day = new Date(year, month, 0).getDate()
+      this.startDate = this.date + '/01'
+      this.endDate = this.date + '/' + day
+    }
+  },
+  computed: {
+    reservation() {
+      let install = 0
+      let repaire = 0
+      this.list.forEach(v => {
+        install = install + v.azgdl
+        repaire = repaire + v.wxgdl
+      })
+      return { install, repaire }
+    }
+  },
+  methods: {
+    //日期格式化
+    formatDate(date) {
+      if (this.type === '4') {
+        let day = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate()
+        return `${date.getFullYear()}/${date.getMonth() + 1 >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1)}/${day}`
+      } else {
+        return `${date.getFullYear()}/${date.getMonth() + 1 >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1)}/${
+          date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()
+        }`
+      }
+    },
+    confirmFn(date) {
+      this.show = false
+      this.date = this.type === '4' ? this.formatDate(date).slice(0, 7) : this.formatDate(date)
+      this.startDate = this.formatDate(date).slice(0, 7) + '/01'
+      this.endDate = this.formatDate(date)
+      this.getList()
+    },
+    cancelFn() {
+      this.show = false
+    },
+    //维修筛选
+    repairFn() {
+      this.isrepair = !this.isrepair
+      if (this.isrepair) {
+        this.list.sort((a, b) => {
+          return b.wxgdl - a.wxgdl
+        }) /* 从大到小 */
+      } else {
+        this.list.sort((a, b) => {
+          return a.wxgdl - b.wxgdl
+        }) /* 从小到大 */
+      }
+      // this.isrepair = false;
+    },
+    //安装筛选
+    insFn() {
+      this.isIns = !this.isIns
+      if (this.isIns) {
+        this.list.sort((a, b) => {
+          return b.azgdl - a.azgdl
+        }) /* 从大到小 */
+      } else {
+        this.list.sort((a, b) => {
+          return a.azgdl - b.azgdl
+        }) /* 从小到大 */
+      }
+    },
+    async onRefresh() {
+      // 清空列表数据
+      this.finished = false
+
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true
+      await this.onLoad()
+    },
+    async onLoad() {
+      await this.getList()
+    },
+
+    async getList() {
+      let params = {
+        openid: getUrlKey('openid', window.location.href),
+        moduleId: '11',
+        type: '家用',
+        startDate: this.type === '4' ? this.startDate : this.date,
+        endDate: this.type === '4' ? this.endDate : this.date,
+        // timeConditionType: 'day',
+        timeConditionType: this.type === '4' ? 'month' : 'day',
+        sumType: 1
+      }
+      let azRes = await this.postRequest('/wechat-analysis/summarys', { sumMode: 'install.reserve', ...params })
+      let wxRes = await this.postRequest('/wechat-analysis/summarys', { sumMode: 'repair.reserve', ...params })
+      console.log(azRes, wxRes)
+      let oneData = []
+      let twoData = []
+      if (azRes.data.length > wxRes.data.length) {
+        oneData = azRes.data
+        twoData = wxRes.data
+      } else {
+        oneData = wxRes.data
+        twoData = azRes.data
+      }
+      let data = []
+      for (let i = 0; i < oneData.length; i++) {
+        let obj = {
+          afterNumber: oneData[i].afterNumber,
+          name: oneData[i].name,
+          azgdl: 0,
+          wxgdl: 0
+        }
+        for (let j = 0; j < twoData.length; j++) {
+          if (oneData[i].afterNumber === twoData[j].afterNumber) {
+            if (azRes.data.length > wxRes.data.length) {
+              obj.azgdl = oneData[i].orderct
+              obj.wxgdl = twoData[j].orderct
+            } else {
+              obj.wxgdl = oneData[i].orderct
+              obj.azgdl = twoData[j].orderct
+            }
+          }
+        }
+        data.push(obj)
+      }
+      if (this.refreshing) {
+        this.list = []
+        this.refreshing = false
+      }
+      if (data.length === 0) {
+        this.list = []
+        this.finished = true
+      }
+      this.list = data
+      this.isIns = false
+      this.insFn()
+      this.loading = false
+      if (this.list.length >= data.length) {
+        this.finished = true
+      }
+    },
+
+    goBack() {
+      this.$router.back()
+    }
+  }
+}
+</script>
+
+<style lang='scss' scoped>
+.tit {
+  font-weight: 700;
+  font-size: 14px;
+}
+
+.top {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.listTitle {
+  font-weight: 700;
+  font-size: 12px;
+}
+.list_title {
+  display: flex;
+  justify-content: space-between;
+  font-size: 12px;
+  padding: 10px 16px;
+  font-weight: 700;
+  .rank {
+    width: 10vw;
+  }
+  .website {
+    width: 38vw;
+  }
+  .install {
+    width: 21vw;
+    text-align: right;
+  }
+  .repaire {
+    width: 21vw;
+    text-align: right;
+  }
+}
+</style>

+ 244 - 0
src/views/websiteDetail.vue

@@ -0,0 +1,244 @@
+<template>
+  <div>
+    <van-nav-bar left-arrow left-text="返回" @click-left="goBack" title="网点详情" />
+    <div>
+      <!-- <van-tabs v-model="activeName" color='#428dff'> -->
+      <div class="top">
+        <div>{{websiteName}}</div>
+        <div>{{websiteNumber}}</div>
+      </div>
+      <!-- <van-tab title="日报" name="day"> -->
+      <div v-if="activeName === 'day'">
+        <div style="padding:16px;background-color:#fff;margin-top:10px">
+          <div>{{$route.query.time}}</div>
+          <van-row style="text-align:center" type='flex' justify='space-around'>
+            <van-col span="8">
+              <div class="title">安装电子支付</div>
+              <div class="fontColor">{{list.azdzzf|numToFixed}}</div>
+              <div class="title">较上周对比</div>
+              <div v-if="list.szazdzzf<0" class="downStyle"><img src='../assets/icon/down.png'>{{-list.szazdzzf}}%</div>
+              <div v-else class="upStyle"><img src='../assets/icon/shangsheng.png'>{{list.szazdzzf}}%</div>
+            </van-col>
+            <van-col span=" 8">
+              <div class="title">安装工单量</div>
+              <div class="fontColor">{{list.azgdl}}</div>
+              <div class="title">较上周对比</div>
+              <div v-if="list.szazgdl<0" class="downStyle"><img src='../assets/icon/down.png'>{{-list.szazgdl}}%</div>
+              <div v-else class="upStyle"><img src='../assets/icon/shangsheng.png'>{{list.szazgdl}}%</div>
+            </van-col>
+            <van-col span="8">
+              <div class="title">开工师傅组</div>
+              <div class="fontColor">{{list.kgsfz}}</div>
+              <div class="title">较上周对比</div>
+              <div v-if="list.szkgsfz<0" class="downStyle"><img src='../assets/icon/down.png'>{{-list.szkgsfz}}%</div>
+              <div v-else class="upStyle"><img src='../assets/icon/shangsheng.png'>{{list.szkgsfz}}%</div>
+            </van-col>
+            <van-col span="8">
+              <div class="title">维修电子支付</div>
+              <div class="fontColor">{{list.wxdzzf|numToFixed}}</div>
+              <div class="title">较上周对比</div>
+              <div v-if="list.szwxdzzf<0" class="downStyle"><img src='../assets/icon/down.png'>{{-list.szwxdzzf}}%</div>
+              <div v-else class="upStyle"><img src='../assets/icon/shangsheng.png'>{{list.szwxdzzf}}%</div>
+            </van-col>
+            <van-col span="8">
+              <div class="title">维修工单量</div>
+              <div class="fontColor">{{list.wxgdl}}</div>
+              <div class="title">较上周对比</div>
+              <div v-if="list.szwxgdl<0" class="downStyle"><img src='../assets/icon/down.png'>{{-list.szwxgdl}}%</div>
+              <div v-else class="upStyle"><img src='../assets/icon/shangsheng.png'>{{list.szwxgdl}}%</div>
+            </van-col>
+            <van-col span="8">
+              <div class="title">开工师傅</div>
+              <div class="fontColor">{{list.kgsf}}</div>
+              <div class="title">较上周对比</div>
+              <div v-if="list.szkgsf<0" class="downStyle"><img src='../assets/icon/down.png'>{{-list.szkgsf}}%</div>
+              <div v-else class="upStyle"><img src='../assets/icon/shangsheng.png'>{{list.szkgsf}}%</div>
+            </van-col>
+
+          </van-row>
+        </div>
+      </div>
+      <!-- </van-tab> -->
+      <!-- <van-tab title="月报" name="month"> -->
+      <div v-if="activeName === 'month'">
+        <div v-for="(v,i) in listMonth" :key="i" style="padding:16px;background-color:#fff;margin-top:10px">
+          <div>{{v.dmonth}}</div>
+          <van-row style="text-align:center">
+            <van-col span="12">
+              <div class="title">安装电子支付</div>
+              <div class="fontColor">{{v.insamount|numToFixed}}</div>
+              <div class="title">较上月对比</div>
+              <div v-if="v.linsratea<0" class="downStyle"><img src='../assets/icon/down.png'>{{-v.linsratea}}%</div>
+              <div v-else class="upStyle"><img src='../assets/icon/shangsheng.png'>{{v.linsratea ? v.linsratea:'0'}}%</div>
+            </van-col>
+            <van-col span="12">
+              <div class="title">安装工单量</div>
+              <div class="fontColor">{{v.insorder}}</div>
+              <div class="title">较上月对比</div>
+              <div v-if="v.linsrateo<0" class="downStyle"><img src='../assets/icon/down.png'>{{-v.linsrateo}}%</div>
+              <div v-else class="upStyle"><img src='../assets/icon/shangsheng.png'>{{v.linsrateo ? v.linsrateo:'0'}}%</div>
+            </van-col>
+            <van-col span="12">
+              <div class="title">维修电子支付</div>
+              <div class="fontColor">{{v.repamount|numToFixed}}</div>
+              <div class="title">较上月对比</div>
+              <div v-if="v.lrepratea<0" class="downStyle"><img src='../assets/icon/down.png'>{{-v.lrepratea}}%</div>
+              <div v-else class="upStyle"><img src='../assets/icon/shangsheng.png'>{{v.lrepratea ? v.lrepratea:'0'}}%</div>
+            </van-col>
+            <van-col span="12">
+              <div class="title">维修工单量</div>
+              <div class="fontColor">{{v.reporder}}</div>
+              <div class="title">较上月对比</div>
+              <div v-if="v.lreprateo<0" class="downStyle"><img src='../assets/icon/down.png'>{{-v.lreprateo}}%</div>
+              <div v-else class="upStyle"><img src='../assets/icon/shangsheng.png'>{{v.lreprateo ? v.lreprateo:'0'}}%</div>
+            </van-col>
+          </van-row>
+        </div>
+      </div>
+      <!-- </van-tab> -->
+      <!-- </van-tabs> -->
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUrlKey } from "@/utils/common";
+export default {
+  data() {
+    return {
+      list: {},
+      listMonth: [],
+      websiteName: this.$route.query.name,
+      websiteNumber: this.$route.query.website,
+      activeName: this.$route.query.type,
+    };
+  },
+  created() {
+    // this.getList();
+    // this.getListMonth();
+    if (this.activeName === "day") {
+      this.getList();
+    } else {
+      this.getListMonth();
+    }
+  },
+  methods: {
+    //获取数据-月报
+    async getListMonth() {
+      // let nowDate = new Date();
+      // let date = {
+      //   year: nowDate.getFullYear(), // 获取当前年份
+      //   month: nowDate.getMonth() + 1, //获取当前月份
+      // };
+      // let start = date.year + "-01";
+      // let end =
+      //   date.year + "-" + (date.month > 9 ? date.month : "0" + date.month);
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "11",
+        type: "家用",
+        startYearMonth: this.$route.query.time,
+        endYearMonth: this.$route.query.time,
+        website: this.$route.query.website,
+        sumType: 1,
+      };
+      let res = await this.postRequest("/wechat-analysis/fees-month", params);
+      this.listMonth = res.data;
+    },
+    //获取列表数据
+    async getList() {
+      let params = {
+        openid: getUrlKey("openid", window.location.href),
+        moduleId: "111111",
+        type: "家用",
+        startDate: this.$route.query.time,
+        endDate: this.$route.query.time,
+        website: this.$route.query.website,
+      };
+      let res = await this.postRequest(
+        "/wechat-analysis/fees-day-wo-website",
+        params
+      );
+      //   let list = res.data.for((v) => {
+      //     this.websiteName = v.webName;
+      //     this.websiteNumber = v.websit;
+      //     return v.btype === "维修";
+      //   });
+      let list = {
+        date: "",
+        name: "",
+        website: "",
+        azdzzf: 0,
+        szazdzzf: 0,
+        azgdl: 0,
+        szazgdl: 0,
+        kgsfz: 0,
+        szkgsfz: 0,
+        wxdzzf: 0,
+        szwxdzzf: 0,
+        wxgdl: 0,
+        szwxgdl: 0,
+        kgsf: 0,
+        szkgsf: 0,
+      };
+      res.data.forEach((v) => {
+        let zzl = ((v.workers - v.wworkers) / v.wworkers) * 100;
+        zzl = zzl.toFixed(2);
+        if (v.btype === "材料") {
+          list.azdzzf = v.amount;
+          list.szazdzzf = v.wmr;
+          list.azgdl = v.ctorder;
+          list.szazgdl = v.wcr;
+          list.kgsfz = v.workers;
+          list.szkgsfz = zzl;
+        }
+        if (v.btype === "维修") {
+          list.wxdzzf = v.amount;
+          list.szwxdzzf = v.wmr;
+          list.wxgdl = v.ctorder;
+          list.szwxgdl = v.wcr;
+          list.kgsf = v.workers;
+          list.szkgsf = zzl;
+        }
+      });
+      this.list = list;
+    },
+    goBack() {
+      this.$router.back();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.top {
+  padding: 16px 0 16px 9px;
+  font-weight: 700;
+  font-size: 12px;
+  background-color: #fff;
+}
+.title {
+  font-size: 12px;
+  color: #afafaf;
+  margin-bottom: 5px;
+  padding-top: 16px;
+}
+.num {
+  font-size: 16px;
+  color: #1296db;
+  img {
+    width: 16px;
+    height: 16px;
+    vertical-align: bottom;
+  }
+}
+.num2 {
+  font-size: 16px;
+  color: #d81e06;
+  img {
+    width: 16px;
+    height: 16px;
+    vertical-align: bottom;
+  }
+}
+</style>

+ 71 - 0
vue.config.js

@@ -0,0 +1,71 @@
+let proxyObj = {}
+
+proxyObj['/'] = {
+  //websocket
+  ws: false,
+  //目标地址
+  target: 'http://116.62.158.92:8081',
+  // target: 'https://admin.zfire.top/',
+  // target: "https://reportinter.zfire.top",
+  //发送请求头host会被设置target
+  changeOrigin: true,
+  //不重写请求地址
+  pathRewrite: {
+    '^/api': '/'
+  }
+}
+
+module.exports = {
+  publicPath: './',
+  assetsDir: 'static',
+  lintOnSave: false, //关闭eslint
+  //修改或新增html-webpack-plugin的值,在index.html里面能读取htmlWebpackPlugin.options.title
+  chainWebpack: config => {
+    config.plugin('html').tap(args => {
+      args[0].title = '嘉讯茂移动办公平台'
+      return args
+    })
+  },
+  // devServer: {
+  //   host: 'localhost',
+  //   port: 8080,
+  //   proxy: proxyObj,
+  //   compress: true,
+  //   disableHostCheck: true
+  // },
+  devServer: {
+    host: 'localhost',
+    port: 8080,
+    proxy: {
+      '/api': {
+        ws: false,
+        //目标地址
+        target: 'http://116.62.158.92:8081',
+        // target: 'https://admin.zfire.top/',
+        // target: "https://reportinter.zfire.top",
+        //发送请求头host会被设置target
+        changeOrigin: true,
+        pathRewrite: {
+          '^/api': '/'
+        }
+      },
+      '/services': {
+        ws: false,
+        //目标地址
+        // target: 'http://116.62.158.92:8081',
+        target: 'https://admin.zfire.top', //测试,
+        // target: 'https://pgxtadm.greeapps.com',
+        // target: "https://reportinter.zfire.top",
+        //发送请求头host会被设置target
+        changeOrigin: true
+        // onProxyRes(proxyRes, req, res) {
+        //   //在控制台显示真实代理地址
+        //   const realUrl = new URL(req.url || '', 'https://admin.zfire.top')?.href || ''
+        //   proxyRes.headers['x-real-url'] = realUrl
+        // }
+      }
+    },
+    compress: true,
+    disableHostCheck: true
+  }
+}