From a76c5c86ac9af71da45bf78c825a2c7aa843b4c8 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 26 一月 2024 15:35:54 +0800
Subject: [PATCH] Revert "Mr.Shi"

---
 platform/src/components/business/OperaCategoryWindow.vue         |  251 
 platform/src/components/common/DepartmentSelect.vue              |   10 
 platform/src/components/common/Pagination.vue                    |    2 
 platform/src/views/system/user.vue                               |  106 
 platform/src/views/business/baseData.vue                         |  152 
 company/src/components/business/OperaInsuranceApplyWindow.vue    |   21 
 platform/src/assets/images/qq.png                                |    0 
 platform/src/api/business/goods.js                               |   66 
 platform/src/components/business/OperaCompanyValidDateWindow.vue |  163 
 platform/src/components/system/role/OperaRoleWindow.vue          |    7 
 platform/vue.config.js                                           |   20 
 platform/src/assets/style/style.scss                             |   47 
 platform/src/components/common/UploadImage.vue                   |    7 
 platform/src/plugins/download.js                                 |    3 
 platform/src/views/business/brand.vue                            |   93 
 platform/src/components/business/OperaBaseDataWindow.vue         |  246 
 platform/src/assets/images/man.png                               |    0 
 platform/.env.development                                        |   14 
 platform/src/components/common/GlobalAlertWindow.vue             |    2 
 platform/src/components/common/Header.vue                        |  174 
 platform/src/layouts/AppLayout.vue                               |  112 
 platform/src/views/business/category.vue                         |  120 
 platform/src/assets/images/wxpay.jpeg                            |    0 
 platform/src/views/business/fileRecord.vue                       |  119 
 platform/src/components/business/OperaCompanyWindow.vue          |  473 
 platform/src/components/common/TreeSelect.vue                    |    2 
 platform/src/assets/logo.png                                     |    0 
 platform/src/api/business/category.js                            |   41 
 platform/src/api/system/permission.js                            |    5 
 platform/src/components/common/PositionSelect.vue                |    2 
 platform/package-lock.json                                       | 17495 +++++++++++++++++++++++++++++++++++++++++++++
 platform/src/views/business/anchor.vue                           |  108 
 platform/src/views/business/companyUser.vue                      |  115 
 platform/src/components/system/menu/OperaMenuWindow.vue          |   14 
 platform/public/template/goods_import_modle.xlsx                 |    0 
 platform/src/api/system/common.js                                |    9 
 platform/src/views/login.vue                                     |    2 
 platform/src/components/base/BaseTable.vue                       |    8 
 platform/src/components/business/OperaBrandWindow.vue            |  100 
 platform/src/App.vue                                             |   10 
 platform/src/views/business/goods.vue                            |  227 
 platform/src/views/system/menuCom.vue                            |  444 
 platform/src/api/system/menu.js                                  |   15 
 platform/src/api/system/user.js                                  |   10 
 platform/src/views/business/company.vue                          |  287 
 platform/src/components/common/GlobalWindow.vue                  |   29 
 platform/package.json                                            |    1 
 platform/src/components/common/SearchFormCollapse.vue            |    2 
 platform/src/components/base/BaseOpera.vue                       |   16 
 platform/src/components/common/ImportButton.vue                  |    2 
 platform/src/store/index.js                                      |   43 
 platform/src/assets/style/variables.scss                         |    9 
 platform/src/components/business/selectProductItem.vue           |  183 
 platform/src/api/business/brand.js                               |   31 
 platform/src/components/common/ImportWindow.vue                  |   11 
 platform/src/components/business/selectProduct.vue               |  119 
 platform/src/utils/request.js                                    |   12 
 platform/src/views/system/menu.vue                               |   11 
 platform/src/components/business/OperaCompanyUserWindow.vue      |  120 
 platform/.env                                                    |    6 
 platform/src/components/common/UploadAvatarImage.vue             |   62 
 platform/src/components/business/OperaGoodsWindow.vue            |  173 
 platform/src/components/common/Menu.vue                          |   55 
 platform/.env.production                                         |   18 
 platform/src/views/business/role.vue                             |  107 
 platform/src/layouts/TableLayout.vue                             |    4 
 platform/public/index.html                                       |    6 
 platform/src/views/system/role.vue                               |   27 
 platform/src/api/business/company.js                             |   45 
 platform/src/api/business/fileRecord.js                          |    8 
 platform/src/assets/images/woman.png                             |    0 
 platform/src/components/system/role/PermissionConfigWindow.vue   |    8 
 platform/src/api/business/baseData.js                            |   40 
 platform/src/components/system/user/OperaUserWindow.vue          |   97 
 platform/src/components/system/role/MenuConfigWindow.vue         |    4 
 company/src/views/business/insuranceApply.vue                    |   11 
 /dev/null                                                        |  193 
 platform/public/favicon.ico                                      |    0 
 platform/src/assets/style/element-variables.scss                 |    1 
 platform/src/main.js                                             |    2 
 platform/src/utils/form.js                                       |   83 
 platform/src/router/index.js                                     |    2 
 platform/src/api/business/companyUser.js                         |   36 
 platform/src/plugins/messagebox.js                               |   31 
 platform/src/components/common/Light.vue                         |   29 
 platform/src/components/common/MenuSelect.vue                    |    6 
 platform/src/assets/images/alipay.jpeg                           |    0 
 platform/.env.staging                                            |   10 
 88 files changed, 21,158 insertions(+), 1,597 deletions(-)

diff --git a/company/src/components/business/OperaInsuranceApplyWindow.vue b/company/src/components/business/OperaInsuranceApplyWindow.vue
index c8095b8..b61ea73 100644
--- a/company/src/components/business/OperaInsuranceApplyWindow.vue
+++ b/company/src/components/business/OperaInsuranceApplyWindow.vue
@@ -1,7 +1,7 @@
 <template>
     <GlobalWindow
         :title="title"
-        width="100%"
+        width="80%"
         :visible.sync="visible"
         :confirm-working="isWorking"
         @confirm="confirm"
@@ -410,7 +410,6 @@
                     user: '',
                     region: ''
                 },
-                value1: '',
                 visible1: false,
                 visible2: false,
                 visible3: false,
@@ -443,24 +442,6 @@
             })
         },
         methods: {
-            open (title, target) {
-                this.title = title
-                this.visible = true
-                // 鏂板缓
-                // if (target == null) {
-                //     this.$nextTick(() => {
-                //         this.$refs.form.resetFields()
-                //         this.form[this.configData['field.id']] = null
-                //     })
-                //     return
-                // }
-                // 缂栬緫
-                this.$nextTick(() => {
-                    for (const key in this.form) {
-                        this.form[key] = target[key]
-                    }
-                })
-            },
             handleRemove(file, fileList) {
                 console.log(file, fileList);
             },
diff --git a/company/src/views/business/insuranceApply.vue b/company/src/views/business/insuranceApply.vue
index 8eb3a44..b51a383 100644
--- a/company/src/views/business/insuranceApply.vue
+++ b/company/src/views/business/insuranceApply.vue
@@ -48,6 +48,7 @@
             <section>
                 <el-button type="primary" @click="search">鎼滅储</el-button>
                 <el-button @click="reset">閲嶇疆</el-button>
+                <el-button @click="$refs.operaInsuranceApplyWindow.open('鎶曚繚璇︽儏')">鎶曚繚璇︽儏</el-button>
             </section>
         </el-form>
         <!-- 琛ㄦ牸鍜屽垎椤� -->
@@ -131,12 +132,12 @@
             'field.main': 'id'
         })
         this.search()
-        // this.loadSelectList()
+        this.loadSelectList()
     },
-    methods (){
-        // loadSelectList() {
-        //
-        // }
+  methods (){
+    loadSelectList(){
+
     }
+  }
 }
 </script>
diff --git a/platform/.env b/platform/.env
index e6bec69..ea008f1 100644
--- a/platform/.env
+++ b/platform/.env
@@ -4,7 +4,9 @@
 VUE_APP_ROUTER_MODE = 'hash'
 
 # 椤圭洰涓婁笅鏂囪矾寰�
-VUE_APP_CONTEXT_PATH = '/'
+# preselect_admin/
+VUE_APP_CONTEXT_PATH = './'
 
 # 鎺ュ彛鍓嶇紑
-VUE_APP_API_PREFIX = '/api'
+# VUE_APP_API_PREFIX = '/yunyibao_interface/'
+VUE_APP_API_PREFIX = '/interface'
diff --git a/platform/.env.development b/platform/.env.development
index 22616b7..c1a5ac8 100644
--- a/platform/.env.development
+++ b/platform/.env.development
@@ -1,7 +1,15 @@
 # 寮�鍙戠幆澧冮厤缃�
 NODE_ENV = 'development'
 
-VUE_APP_API = 'http://192.168.0.104:10023/'
+VUE_APP_CONTEXT_PATH = '/'
+VUE_APP_API_PREFIX = '/api'
 
-VUE_APP_API = 'http://192.168.0.104:10023/'
-# VUE_APP_API = 'http://192.168.0.134:10023/'
+# 浠诲悍
+# VUE_APP_API = 'http://192.168.0.15:10017/'
+# 鐒︽澗
+#VUE_APP_API = 'http://192.168.0.36:10023'
+# 姹熻悕
+VUE_APP_API = 'http://192.168.0.154:10023'
+
+# #娴嬭瘯鏈嶅姟鍣�
+#VUE_APP_API = 'https://dmtest.ahapp.net/preselect_admin_interface'
diff --git a/platform/.env.production b/platform/.env.production
index 5eaa71b..0693cdc 100644
--- a/platform/.env.production
+++ b/platform/.env.production
@@ -1,19 +1,11 @@
 # 鐢熶骇鐜閰嶇疆
 NODE_ENV = 'production'
 
-# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_interface/'
 
-# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_web_interface/'
+VUE_APP_CONTEXT_PATH = '/admin'
+VUE_APP_API_PREFIX = '/admin_interface'
 
-# VUE_APP_API = 'http://127.0.0.1:10022/'
 
-# VUE_APP_API = 'https://dm.ahapp.net/preselect_interface/'
-
-VUE_APP_CONTEXT_PATH_REL = '/web'
-VUE_APP_CONTEXT_PATH = '/web'
-
-VUE_APP_API_PREFIX = '/web_interface'
-
-VUE_APP_API = 'https://yx.ahapp.net/web_interface/'
-
-# VUE_APP_API = 'http://mjyx.doumee.com/preselect_interface/'
\ No newline at end of file
+# http://yx.ahapp.net/admin_interface/doc.html
+# VUE_APP_API = 'https://yx.ahapp.net/admin_interface'
+VUE_APP_API = 'https://127.0.0.1:10023/
\ No newline at end of file
diff --git a/platform/.env.staging b/platform/.env.staging
new file mode 100644
index 0000000..5aa1555
--- /dev/null
+++ b/platform/.env.staging
@@ -0,0 +1,10 @@
+# 娴嬭瘯鐜閰嶇疆
+NODE_ENV = 'production'
+
+VUE_APP_CONTEXT_PATH = '/preselect_admin'
+VUE_APP_API_PREFIX = '/preselect_admin_interface'
+
+
+# https://dmtest.ahapp.net/preselect_admin_interface/doc.html
+VUE_APP_API = 'https://dmtest.ahapp.net/preselect_admin_interface'
+VUE_APP_API = 'https://127.0.0.1:10023'
diff --git a/platform/package-lock.json b/platform/package-lock.json
index f92c6d2..b613211 100644
--- a/platform/package-lock.json
+++ b/platform/package-lock.json
@@ -1,8 +1,17296 @@
 {
   "name": "intelligent_manufacture",
   "version": "1.0.0",
-  "lockfileVersion": 1,
+  "lockfileVersion": 2,
   "requires": true,
+  "packages": {
+    "": {
+      "name": "intelligent_manufacture",
+      "version": "1.0.0",
+      "dependencies": {
+        "@riophae/vue-treeselect": "^0.4.0",
+        "axios": "^0.21.1",
+        "core-js": "^3.6.5",
+        "element-ui": "^2.3.6",
+        "js-cookie": "^2.2.1",
+        "js-file-download": "^0.4.12",
+        "vue": "^2.6.11",
+        "vue-clipboard2": "^0.3.1",
+        "vue-router": "^3.5.1",
+        "vuescroll": "^4.17.3",
+        "vuex": "^3.4.0"
+      },
+      "devDependencies": {
+        "@vue/cli-plugin-babel": "~4.5.0",
+        "@vue/cli-plugin-eslint": "~4.5.0",
+        "@vue/cli-plugin-router": "~4.5.0",
+        "@vue/cli-plugin-vuex": "~4.5.0",
+        "@vue/cli-service": "~4.5.0",
+        "@vue/eslint-config-standard": "^5.1.2",
+        "babel-eslint": "^10.1.0",
+        "eslint": "^6.7.2",
+        "eslint-plugin-import": "^2.20.2",
+        "eslint-plugin-node": "^11.1.0",
+        "eslint-plugin-promise": "^4.2.1",
+        "eslint-plugin-standard": "^4.0.0",
+        "eslint-plugin-vue": "^6.2.2",
+        "lint-staged": "^9.5.0",
+        "node-sass": "^4.12.0",
+        "sass-loader": "^8.0.2",
+        "vue-cli-plugin-element-ui": "~1.1.4",
+        "vue-template-compiler": "^2.6.11"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz",
+      "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=",
+      "dev": true,
+      "dependencies": {
+        "@babel/highlight": "^7.12.13"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.14.0",
+      "resolved": "https://registry.nlark.com/@babel/compat-data/download/@babel/compat-data-7.14.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fcompat-data%2Fdownload%2F%40babel%2Fcompat-data-7.14.0.tgz",
+      "integrity": "sha1-qQESi84q0CVl35Xm7L8ZXPlGWRk=",
+      "dev": true
+    },
+    "node_modules/@babel/core": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/core/download/@babel/core-7.14.2.tgz",
+      "integrity": "sha1-VORTNP/AFyBI5ck97TZGHTrUxBc=",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.12.13",
+        "@babel/generator": "^7.14.2",
+        "@babel/helper-compilation-targets": "^7.13.16",
+        "@babel/helper-module-transforms": "^7.14.2",
+        "@babel/helpers": "^7.14.0",
+        "@babel/parser": "^7.14.2",
+        "@babel/template": "^7.12.13",
+        "@babel/traverse": "^7.14.2",
+        "@babel/types": "^7.14.2",
+        "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"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/generator/download/@babel/generator-7.14.2.tgz?cache=0&sync_timestamp=1620839974232&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.14.2.tgz",
+      "integrity": "sha1-1Xc+i1V9Qh/Wzg1e+l/X/CJWfDA=",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.14.2",
+        "jsesc": "^2.5.1",
+        "source-map": "^0.5.0"
+      }
+    },
+    "node_modules/@babel/helper-annotate-as-pure": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.12.13.tgz?cache=0&sync_timestamp=1612314636125&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-annotate-as-pure%2Fdownload%2F%40babel%2Fhelper-annotate-as-pure-7.12.13.tgz",
+      "integrity": "sha1-D1jobfxLs7H819uAZXDhd9Q5tqs=",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.12.13"
+      }
+    },
+    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz",
+      "integrity": "sha1-a8IDYciLCnTQUTemXKyNPL9vYfw=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-explode-assignable-expression": "^7.12.13",
+        "@babel/types": "^7.12.13"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.13.16",
+      "resolved": "https://registry.nlark.com/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.13.16.tgz?cache=0&sync_timestamp=1618918364728&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-compilation-targets%2Fdownload%2F%40babel%2Fhelper-compilation-targets-7.13.16.tgz",
+      "integrity": "sha1-bpHczxXj9D5VVt/+MthgEJiHVjw=",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.13.15",
+        "@babel/helper-validator-option": "^7.12.17",
+        "browserslist": "^4.14.5",
+        "semver": "^6.3.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-class-features-plugin": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.14.2.tgz?cache=0&sync_timestamp=1620839457478&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.2.tgz",
+      "integrity": "sha1-TkVbAymvKcLTrSVLXdWu00WVOF0=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.12.13",
+        "@babel/helper-function-name": "^7.14.2",
+        "@babel/helper-member-expression-to-functions": "^7.13.12",
+        "@babel/helper-optimise-call-expression": "^7.12.13",
+        "@babel/helper-replace-supers": "^7.13.12",
+        "@babel/helper-split-export-declaration": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-regexp-features-plugin": {
+      "version": "7.12.17",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.12.17.tgz",
+      "integrity": "sha1-oqyH6eMZJprGVbjUQV6U041mPLc=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.12.13",
+        "regexpu-core": "^4.7.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-define-polyfill-provider": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-define-polyfill-provider/download/@babel/helper-define-polyfill-provider-0.2.0.tgz",
+      "integrity": "sha1-pkAFF3IEX+2q7MbwxsafAr3TS/E=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0-0"
+      }
+    },
+    "node_modules/@babel/helper-explode-assignable-expression": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.13.0.tgz?cache=0&sync_timestamp=1614034839085&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-explode-assignable-expression%2Fdownload%2F%40babel%2Fhelper-explode-assignable-expression-7.13.0.tgz",
+      "integrity": "sha1-F7XFn/Rz2flW9A71cM86dsoSZX8=",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.13.0"
+      }
+    },
+    "node_modules/@babel/helper-function-name": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/helper-function-name/download/@babel/helper-function-name-7.14.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.14.2.tgz",
+      "integrity": "sha1-OXaItZB2C273cltfCGDIJCfrqsI=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-get-function-arity": "^7.12.13",
+        "@babel/template": "^7.12.13",
+        "@babel/types": "^7.14.2"
+      }
+    },
+    "node_modules/@babel/helper-get-function-arity": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&sync_timestamp=1612314686467&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz",
+      "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.12.13"
+      }
+    },
+    "node_modules/@babel/helper-hoist-variables": {
+      "version": "7.13.16",
+      "resolved": "https://registry.nlark.com/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.13.16.tgz?cache=0&sync_timestamp=1618917701165&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-hoist-variables%2Fdownload%2F%40babel%2Fhelper-hoist-variables-7.13.16.tgz",
+      "integrity": "sha1-GxZRJJ6UtR+PDTNDmEPjPjl3WzA=",
+      "dev": true,
+      "dependencies": {
+        "@babel/traverse": "^7.13.15",
+        "@babel/types": "^7.13.16"
+      }
+    },
+    "node_modules/@babel/helper-member-expression-to-functions": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.13.12.tgz?cache=0&sync_timestamp=1616428156989&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-member-expression-to-functions%2Fdownload%2F%40babel%2Fhelper-member-expression-to-functions-7.13.12.tgz",
+      "integrity": "sha1-3+No8m1CagcpnY1lE4IXaCFubXI=",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.13.12"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.13.12.tgz?cache=0&sync_timestamp=1616428145076&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-imports%2Fdownload%2F%40babel%2Fhelper-module-imports-7.13.12.tgz",
+      "integrity": "sha1-xqNppvNiHLJdoBQHhoTakZa2GXc=",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.13.12"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.14.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-module-transforms%2Fdownload%2F%40babel%2Fhelper-module-transforms-7.14.2.tgz",
+      "integrity": "sha1-rBzDDuR7lF4+DE2xL6DFOJUJ3+U=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.13.12",
+        "@babel/helper-replace-supers": "^7.13.12",
+        "@babel/helper-simple-access": "^7.13.12",
+        "@babel/helper-split-export-declaration": "^7.12.13",
+        "@babel/helper-validator-identifier": "^7.14.0",
+        "@babel/template": "^7.12.13",
+        "@babel/traverse": "^7.14.2",
+        "@babel/types": "^7.14.2"
+      }
+    },
+    "node_modules/@babel/helper-optimise-call-expression": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.12.13.tgz?cache=0&sync_timestamp=1612314687212&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-optimise-call-expression%2Fdownload%2F%40babel%2Fhelper-optimise-call-expression-7.12.13.tgz",
+      "integrity": "sha1-XALRcbTIYVsecWP4iMHIHDCiquo=",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.12.13"
+      }
+    },
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+      "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
+      "dev": true
+    },
+    "node_modules/@babel/helper-remap-async-to-generator": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.13.0.tgz?cache=0&sync_timestamp=1614034833096&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-remap-async-to-generator%2Fdownload%2F%40babel%2Fhelper-remap-async-to-generator-7.13.0.tgz",
+      "integrity": "sha1-N2p2DZ97SyB3qd0Fqpw5J8rbIgk=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.12.13",
+        "@babel/helper-wrap-function": "^7.13.0",
+        "@babel/types": "^7.13.0"
+      }
+    },
+    "node_modules/@babel/helper-replace-supers": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.13.12.tgz?cache=0&sync_timestamp=1616428110982&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.13.12.tgz",
+      "integrity": "sha1-ZEL0wa2RJQJIGlZKc4beDHf/OAQ=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-member-expression-to-functions": "^7.13.12",
+        "@babel/helper-optimise-call-expression": "^7.12.13",
+        "@babel/traverse": "^7.13.0",
+        "@babel/types": "^7.13.12"
+      }
+    },
+    "node_modules/@babel/helper-simple-access": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.13.12.tgz?cache=0&sync_timestamp=1616428158129&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-simple-access%2Fdownload%2F%40babel%2Fhelper-simple-access-7.13.12.tgz",
+      "integrity": "sha1-3WxTivthgZ0gWgEsMXkqOcel6vY=",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.13.12"
+      }
+    },
+    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.12.1",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-skip-transparent-expression-wrappers/download/@babel/helper-skip-transparent-expression-wrappers-7.12.1.tgz",
+      "integrity": "sha1-Ri3GOn5DWt6EaDhcY9K4TM5LPL8=",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.12.1"
+      }
+    },
+    "node_modules/@babel/helper-split-export-declaration": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314686094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz",
+      "integrity": "sha1-6UML4AuvPoiw4T5vnU6vITY3KwU=",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.12.13"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.14.0",
+      "resolved": "https://registry.nlark.com/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.14.0.tgz?cache=0&sync_timestamp=1619727556616&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.14.0.tgz",
+      "integrity": "sha1-0mytikfGUoaxXfFUcxml0Lzycog=",
+      "dev": true
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.12.17",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-option/download/@babel/helper-validator-option-7.12.17.tgz?cache=0&sync_timestamp=1613661300791&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-option%2Fdownload%2F%40babel%2Fhelper-validator-option-7.12.17.tgz",
+      "integrity": "sha1-0fvwEuGnm37rv9xtJwuq+NnrmDE=",
+      "dev": true
+    },
+    "node_modules/@babel/helper-wrap-function": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.13.0.tgz?cache=0&sync_timestamp=1614034839729&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-wrap-function%2Fdownload%2F%40babel%2Fhelper-wrap-function-7.13.0.tgz",
+      "integrity": "sha1-vbXGb9qFJuwjWriUrVOhI1x5/MQ=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-function-name": "^7.12.13",
+        "@babel/template": "^7.12.13",
+        "@babel/traverse": "^7.13.0",
+        "@babel/types": "^7.13.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.14.0",
+      "resolved": "https://registry.nlark.com/@babel/helpers/download/@babel/helpers-7.14.0.tgz?cache=0&sync_timestamp=1619727503327&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelpers%2Fdownload%2F%40babel%2Fhelpers-7.14.0.tgz",
+      "integrity": "sha1-6ptr6UeKE9b5Ydu182v3Xi87j2I=",
+      "dev": true,
+      "dependencies": {
+        "@babel/template": "^7.12.13",
+        "@babel/traverse": "^7.14.0",
+        "@babel/types": "^7.14.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.14.0",
+      "resolved": "https://registry.nlark.com/@babel/highlight/download/@babel/highlight-7.14.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.14.0.tgz",
+      "integrity": "sha1-MZfjdXEe9r+DTmfQ2uyI5PRhE88=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.14.0",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/parser/download/@babel/parser-7.14.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.14.2.tgz",
+      "integrity": "sha1-DBaAqkStRgWxbL3MXDQaYb3px0Y=",
+      "dev": true,
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/download/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-bugfix-v8-spread-parameters-in-optional-chaining%2Fdownload%2F%40babel%2Fplugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz",
+      "integrity": "sha1-o0hNhNC1SfP8kWuZ7keD8m+rrSo=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
+        "@babel/plugin-proposal-optional-chaining": "^7.13.12"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.13.0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.14.2.tgz?cache=0&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.2.tgz",
+      "integrity": "sha1-OiCFq79dX5YtSA28gTRzhe1i6x4=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-remap-async-to-generator": "^7.13.0",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-class-properties": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.13.0.tgz?cache=0&sync_timestamp=1614034504606&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.13.0.tgz",
+      "integrity": "sha1-FGN2AAuU79AB5XpAqIpSWvqrnzc=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.13.0",
+        "@babel/helper-plugin-utils": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-class-static-block": {
+      "version": "7.13.11",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-class-static-block/download/@babel/plugin-proposal-class-static-block-7.13.11.tgz",
+      "integrity": "sha1-b8u6SpYnAsF+U3Ggx7Oa/eGG1wM=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-class-static-block": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.12.0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-decorators": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.14.2.tgz?cache=0&sync_timestamp=1620840050927&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-decorators%2Fdownload%2F%40babel%2Fplugin-proposal-decorators-7.14.2.tgz",
+      "integrity": "sha1-5ow8XkpqCINEVlaCVvw+cbk1kM8=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.14.2",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-decorators": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-dynamic-import": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.14.2.tgz",
+      "integrity": "sha1-Aeur18OBz/Ix+kPjApOaneW+nZ8=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-export-namespace-from": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-export-namespace-from/download/@babel/plugin-proposal-export-namespace-from-7.14.2.tgz",
+      "integrity": "sha1-YlQvlKqc6Pbbp57saYryIRIlN5E=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-json-strings": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.14.2.tgz?cache=0&sync_timestamp=1620840046817&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-json-strings%2Fdownload%2F%40babel%2Fplugin-proposal-json-strings-7.14.2.tgz",
+      "integrity": "sha1-gwtOJCanguiyh4+/4suoW3DL+Yw=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-logical-assignment-operators/download/@babel/plugin-proposal-logical-assignment-operators-7.14.2.tgz",
+      "integrity": "sha1-IiNIwIChZ44OdOpj/nbydYgtH9c=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz",
+      "integrity": "sha1-QlsR3GL8JpOaKrQsu6aAvfVzRUY=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-numeric-separator": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.14.2.tgz",
+      "integrity": "sha1-grTMBlcRQ/r1BiYQSzNd1xuqT54=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.14.2.tgz?cache=0&sync_timestamp=1620840046672&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.2.tgz",
+      "integrity": "sha1-4X1Bj4HMED/t1M4DfhgcgFYiWrw=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.14.0",
+        "@babel/helper-compilation-targets": "^7.13.16",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.14.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-optional-catch-binding": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.14.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-optional-catch-binding%2Fdownload%2F%40babel%2Fplugin-proposal-optional-catch-binding-7.14.2.tgz",
+      "integrity": "sha1-FQ1OWOUlsWqaFDG9UybE7thw1xc=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-optional-chaining": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.14.2.tgz?cache=0&sync_timestamp=1620840046588&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-optional-chaining%2Fdownload%2F%40babel%2Fplugin-proposal-optional-chaining-7.14.2.tgz",
+      "integrity": "sha1-34FxqLnEPr9MHavmMRtDLYPhs04=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-private-methods": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-private-methods/download/@babel/plugin-proposal-private-methods-7.13.0.tgz?cache=0&sync_timestamp=1614034842648&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-private-methods%2Fdownload%2F%40babel%2Fplugin-proposal-private-methods-7.13.0.tgz",
+      "integrity": "sha1-BL1MbUD25rv6L1fi2AlLrZAO94c=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.13.0",
+        "@babel/helper-plugin-utils": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.14.0",
+      "resolved": "https://registry.nlark.com/@babel/plugin-proposal-private-property-in-object/download/@babel/plugin-proposal-private-property-in-object-7.14.0.tgz?cache=0&sync_timestamp=1619727515932&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-private-property-in-object%2Fdownload%2F%40babel%2Fplugin-proposal-private-property-in-object-7.14.0.tgz",
+      "integrity": "sha1-saHyAwWGudNInMJhedLrWIMndjY=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.12.13",
+        "@babel/helper-create-class-features-plugin": "^7.14.0",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.12.13.tgz",
+      "integrity": "sha1-vr3lEzm+gpwXqqrO0YZB3rYrObo=",
+      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@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?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-class-properties%2Fdownload%2F%40babel%2Fplugin-syntax-class-properties-7.12.13.tgz",
+      "integrity": "sha1-tcmHJ0xKOoK4lxR5aTGmtTVErhA=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-static-block": {
+      "version": "7.12.13",
+      "resolved": "https://registry.nlark.com/@babel/plugin-syntax-class-static-block/download/@babel/plugin-syntax-class-static-block-7.12.13.tgz",
+      "integrity": "sha1-jj1nSwYT5nl1zqwndsl7YMr8XJw=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-decorators": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.12.13.tgz",
+      "integrity": "sha1-+sgpvzx+9KG8kWJXtAPljGva9kg=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-jsx": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.12.13.tgz",
+      "integrity": "sha1-BE+4HrrWaY/mLEeIdVdby7m3DxU=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-logical-assignment-operators/download/@babel/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+      "integrity": "sha1-ypHvRjA1MESLkGZSusLp/plB9pk=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-nullish-coalescing-operator/download/@babel/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+      "integrity": "sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@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?cache=0&sync_timestamp=1593521791666&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-numeric-separator%2Fdownload%2F%40babel%2Fplugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-chaining/download/@babel/plugin-syntax-optional-chaining-7.8.3.tgz",
+      "integrity": "sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.0",
+      "resolved": "https://registry.nlark.com/@babel/plugin-syntax-private-property-in-object/download/@babel/plugin-syntax-private-property-in-object-7.14.0.tgz",
+      "integrity": "sha1-dipLq+xhF2/sbIhIDexANysUDAs=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-top-level-await": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.12.13.tgz",
+      "integrity": "sha1-xfD6biSfW3OXJ/kjVAz3qAYTAXg=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-arrow-functions": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.13.0.tgz?cache=0&sync_timestamp=1614034822229&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-arrow-functions%2Fdownload%2F%40babel%2Fplugin-transform-arrow-functions-7.13.0.tgz",
+      "integrity": "sha1-EKWb661S1jegJ6+mkujVzv9ePa4=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-async-to-generator": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.13.0.tgz?cache=0&sync_timestamp=1614034507617&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-async-to-generator%2Fdownload%2F%40babel%2Fplugin-transform-async-to-generator-7.13.0.tgz",
+      "integrity": "sha1-jhEr9ncbgr8el05eJoBsXJmqUW8=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-remap-async-to-generator": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.12.13.tgz?cache=0&sync_timestamp=1612314757904&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoped-functions%2Fdownload%2F%40babel%2Fplugin-transform-block-scoped-functions-7.12.13.tgz",
+      "integrity": "sha1-qb8YNvKjm062zwmWdzneKepL9MQ=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoping": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.14.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-block-scoping%2Fdownload%2F%40babel%2Fplugin-transform-block-scoping-7.14.2.tgz",
+      "integrity": "sha1-dhyxKrWojWQK1K9KqB+CDmtf31w=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-classes": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.14.2.tgz?cache=0&sync_timestamp=1620840046699&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-classes%2Fdownload%2F%40babel%2Fplugin-transform-classes-7.14.2.tgz",
+      "integrity": "sha1-PxGWxXCfBkwlKtBWIH2Ht66y0D0=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.12.13",
+        "@babel/helper-function-name": "^7.14.2",
+        "@babel/helper-optimise-call-expression": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-replace-supers": "^7.13.12",
+        "@babel/helper-split-export-declaration": "^7.12.13",
+        "globals": "^11.1.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-computed-properties": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.13.0.tgz?cache=0&sync_timestamp=1614034823289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-computed-properties%2Fdownload%2F%40babel%2Fplugin-transform-computed-properties-7.13.0.tgz",
+      "integrity": "sha1-hFxui5u1U3ax+guS7wvcjqBmRO0=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-destructuring": {
+      "version": "7.13.17",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.13.17.tgz?cache=0&sync_timestamp=1618960864725&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-destructuring%2Fdownload%2F%40babel%2Fplugin-transform-destructuring-7.13.17.tgz",
+      "integrity": "sha1-Z42WV2Y4wZ1bNrMyUE0/1uBt6ic=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-dotall-regex": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.12.13.tgz?cache=0&sync_timestamp=1612314760609&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-dotall-regex%2Fdownload%2F%40babel%2Fplugin-transform-dotall-regex-7.12.13.tgz",
+      "integrity": "sha1-PxYBzCmQW/y2f1ORDxl66v67Ja0=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-duplicate-keys": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.12.13.tgz?cache=0&sync_timestamp=1612314757993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-duplicate-keys%2Fdownload%2F%40babel%2Fplugin-transform-duplicate-keys-7.12.13.tgz",
+      "integrity": "sha1-bwa4eouAP9ko5UuBwljwoAM5BN4=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.12.13.tgz?cache=0&sync_timestamp=1612314760620&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-exponentiation-operator%2Fdownload%2F%40babel%2Fplugin-transform-exponentiation-operator-7.12.13.tgz",
+      "integrity": "sha1-TVI5C5onPmUeSrpq7knvQOgM0KE=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-for-of": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.13.0.tgz?cache=0&sync_timestamp=1614034500476&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-for-of%2Fdownload%2F%40babel%2Fplugin-transform-for-of-7.13.0.tgz",
+      "integrity": "sha1-x5n4gagJGsJrVIZ6hFw+l9JpYGI=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-function-name": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.12.13.tgz?cache=0&sync_timestamp=1612314760791&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-function-name%2Fdownload%2F%40babel%2Fplugin-transform-function-name-7.12.13.tgz",
+      "integrity": "sha1-uwJEUvmq7YYdN0yOeiQlLOOlAFE=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-function-name": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-literals": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.12.13.tgz",
+      "integrity": "sha1-LKRbr+SoIBl88xV5Sk0mVg/kvbk=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-member-expression-literals": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.12.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-member-expression-literals%2Fdownload%2F%40babel%2Fplugin-transform-member-expression-literals-7.12.13.tgz",
+      "integrity": "sha1-X/pmzVm54ZExTJ8fgDuTjowIHkA=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-amd": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.14.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-modules-amd%2Fdownload%2F%40babel%2Fplugin-transform-modules-amd-7.14.2.tgz",
+      "integrity": "sha1-ZiKAb+GnwHoTiERCIu+VNfLKF7A=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.14.2",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-commonjs": {
+      "version": "7.14.0",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.14.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-modules-commonjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-commonjs-7.14.0.tgz",
+      "integrity": "sha1-UrwZnLWB4Jku26Dw+ANWRnWH8WE=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.14.0",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-simple-access": "^7.13.12",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-systemjs": {
+      "version": "7.13.8",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.13.8.tgz?cache=0&sync_timestamp=1614383098157&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-systemjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-systemjs-7.13.8.tgz",
+      "integrity": "sha1-bQZu4r/zx7PWC/KN7Baa2ZODGuM=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-hoist-variables": "^7.13.0",
+        "@babel/helper-module-transforms": "^7.13.0",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-validator-identifier": "^7.12.11",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-umd": {
+      "version": "7.14.0",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.14.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-modules-umd%2Fdownload%2F%40babel%2Fplugin-transform-modules-umd-7.14.0.tgz",
+      "integrity": "sha1-L4F50bvJJjZlzkpl8wVSay6orDQ=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.14.0",
+        "@babel/helper-plugin-utils": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.12.13.tgz?cache=0&sync_timestamp=1612314757088&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-named-capturing-groups-regex%2Fdownload%2F%40babel%2Fplugin-transform-named-capturing-groups-regex-7.12.13.tgz",
+      "integrity": "sha1-IhNyWl9bu+NktQw7pZmMlZnFydk=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-new-target": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.12.13.tgz",
+      "integrity": "sha1-4i2MOvJLFQ3VKMvW5oXnmb8cNRw=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-object-super": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.12.13.tgz?cache=0&sync_timestamp=1612314760724&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-object-super%2Fdownload%2F%40babel%2Fplugin-transform-object-super-7.12.13.tgz",
+      "integrity": "sha1-tEFqLWO4974xTz00m9VanBtRcfc=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13",
+        "@babel/helper-replace-supers": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-parameters": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.14.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-parameters%2Fdownload%2F%40babel%2Fplugin-transform-parameters-7.14.2.tgz",
+      "integrity": "sha1-5CkPcuDp6DEADQZkJ8RmcJjezDE=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-property-literals": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.12.13.tgz",
+      "integrity": "sha1-TmqeN4ZNjxs7wOLc57+IV9uLGoE=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-regenerator": {
+      "version": "7.13.15",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.13.15.tgz",
+      "integrity": "sha1-5esolFv4tlY+f4GJRflmqNKZfzk=",
+      "dev": true,
+      "dependencies": {
+        "regenerator-transform": "^0.14.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-reserved-words": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.12.13.tgz",
+      "integrity": "sha1-fZmI1PBuD+aX6h2YAxiKoYtHJpU=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-runtime": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.14.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-runtime%2Fdownload%2F%40babel%2Fplugin-transform-runtime-7.14.2.tgz",
+      "integrity": "sha1-TiQ4m9aA3ZTqG4cUZdABEq6XRCU=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.13.12",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "babel-plugin-polyfill-corejs2": "^0.2.0",
+        "babel-plugin-polyfill-corejs3": "^0.2.0",
+        "babel-plugin-polyfill-regenerator": "^0.2.0",
+        "semver": "^6.3.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-shorthand-properties": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.12.13.tgz?cache=0&sync_timestamp=1612314760117&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-shorthand-properties%2Fdownload%2F%40babel%2Fplugin-transform-shorthand-properties-7.12.13.tgz",
+      "integrity": "sha1-23VXMrcMU51QTGOQ2c6Q/mSv960=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-spread": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.13.0.tgz?cache=0&sync_timestamp=1614034823666&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-spread%2Fdownload%2F%40babel%2Fplugin-transform-spread-7.13.0.tgz",
+      "integrity": "sha1-hIh3EOJzwYFaznrkWfb0Kl0x1f0=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-sticky-regex": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.12.13.tgz?cache=0&sync_timestamp=1612314760921&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-sticky-regex%2Fdownload%2F%40babel%2Fplugin-transform-sticky-regex-7.12.13.tgz",
+      "integrity": "sha1-dg/9k2+s5z+GCuZG+4bugvPQbR8=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-template-literals": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.13.0.tgz",
+      "integrity": "sha1-o2BJEnl3rZRDje50Q1mNHO/fQJ0=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-typeof-symbol": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.12.13.tgz?cache=0&sync_timestamp=1612314760046&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-typeof-symbol%2Fdownload%2F%40babel%2Fplugin-transform-typeof-symbol-7.12.13.tgz",
+      "integrity": "sha1-eF3Weh8upXnZwr5yLejITLhfWn8=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-escapes": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-escapes/download/@babel/plugin-transform-unicode-escapes-7.12.13.tgz",
+      "integrity": "sha1-hAztO4FtO1En3R0S3O3F3q0aXnQ=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-regex": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.12.13.tgz?cache=0&sync_timestamp=1612314760208&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-unicode-regex%2Fdownload%2F%40babel%2Fplugin-transform-unicode-regex-7.12.13.tgz",
+      "integrity": "sha1-tSUhaFgE4VWxIC6D/BiNNLtw9aw=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-env": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/preset-env/download/@babel/preset-env-7.14.2.tgz?cache=0&sync_timestamp=1620839457830&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fpreset-env%2Fdownload%2F%40babel%2Fpreset-env-7.14.2.tgz",
+      "integrity": "sha1-6AYSll2nNXnIStL5Y8I1nHFSTtU=",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.14.0",
+        "@babel/helper-compilation-targets": "^7.13.16",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-validator-option": "^7.12.17",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12",
+        "@babel/plugin-proposal-async-generator-functions": "^7.14.2",
+        "@babel/plugin-proposal-class-properties": "^7.13.0",
+        "@babel/plugin-proposal-class-static-block": "^7.13.11",
+        "@babel/plugin-proposal-dynamic-import": "^7.14.2",
+        "@babel/plugin-proposal-export-namespace-from": "^7.14.2",
+        "@babel/plugin-proposal-json-strings": "^7.14.2",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.14.2",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.2",
+        "@babel/plugin-proposal-numeric-separator": "^7.14.2",
+        "@babel/plugin-proposal-object-rest-spread": "^7.14.2",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.14.2",
+        "@babel/plugin-proposal-optional-chaining": "^7.14.2",
+        "@babel/plugin-proposal-private-methods": "^7.13.0",
+        "@babel/plugin-proposal-private-property-in-object": "^7.14.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.12.13",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.12.13",
+        "@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.0",
+        "@babel/plugin-syntax-top-level-await": "^7.12.13",
+        "@babel/plugin-transform-arrow-functions": "^7.13.0",
+        "@babel/plugin-transform-async-to-generator": "^7.13.0",
+        "@babel/plugin-transform-block-scoped-functions": "^7.12.13",
+        "@babel/plugin-transform-block-scoping": "^7.14.2",
+        "@babel/plugin-transform-classes": "^7.14.2",
+        "@babel/plugin-transform-computed-properties": "^7.13.0",
+        "@babel/plugin-transform-destructuring": "^7.13.17",
+        "@babel/plugin-transform-dotall-regex": "^7.12.13",
+        "@babel/plugin-transform-duplicate-keys": "^7.12.13",
+        "@babel/plugin-transform-exponentiation-operator": "^7.12.13",
+        "@babel/plugin-transform-for-of": "^7.13.0",
+        "@babel/plugin-transform-function-name": "^7.12.13",
+        "@babel/plugin-transform-literals": "^7.12.13",
+        "@babel/plugin-transform-member-expression-literals": "^7.12.13",
+        "@babel/plugin-transform-modules-amd": "^7.14.2",
+        "@babel/plugin-transform-modules-commonjs": "^7.14.0",
+        "@babel/plugin-transform-modules-systemjs": "^7.13.8",
+        "@babel/plugin-transform-modules-umd": "^7.14.0",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13",
+        "@babel/plugin-transform-new-target": "^7.12.13",
+        "@babel/plugin-transform-object-super": "^7.12.13",
+        "@babel/plugin-transform-parameters": "^7.14.2",
+        "@babel/plugin-transform-property-literals": "^7.12.13",
+        "@babel/plugin-transform-regenerator": "^7.13.15",
+        "@babel/plugin-transform-reserved-words": "^7.12.13",
+        "@babel/plugin-transform-shorthand-properties": "^7.12.13",
+        "@babel/plugin-transform-spread": "^7.13.0",
+        "@babel/plugin-transform-sticky-regex": "^7.12.13",
+        "@babel/plugin-transform-template-literals": "^7.13.0",
+        "@babel/plugin-transform-typeof-symbol": "^7.12.13",
+        "@babel/plugin-transform-unicode-escapes": "^7.12.13",
+        "@babel/plugin-transform-unicode-regex": "^7.12.13",
+        "@babel/preset-modules": "^0.1.4",
+        "@babel/types": "^7.14.2",
+        "babel-plugin-polyfill-corejs2": "^0.2.0",
+        "babel-plugin-polyfill-corejs3": "^0.2.0",
+        "babel-plugin-polyfill-regenerator": "^0.2.0",
+        "core-js-compat": "^3.9.0",
+        "semver": "^6.3.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-modules": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/preset-modules/download/@babel/preset-modules-0.1.4.tgz?cache=0&sync_timestamp=1598549925898&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fpreset-modules%2Fdownload%2F%40babel%2Fpreset-modules-0.1.4.tgz",
+      "integrity": "sha1-Ni8raMZihClw/bXiVP/I/BwuQV4=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.14.0",
+      "resolved": "https://registry.nlark.com/@babel/runtime/download/@babel/runtime-7.14.0.tgz?cache=0&sync_timestamp=1619727501090&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.14.0.tgz",
+      "integrity": "sha1-RnlLwgthLF915i3QceJN/ZXxy+Y=",
+      "dependencies": {
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
+      "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.12.13",
+        "@babel/parser": "^7.12.13",
+        "@babel/types": "^7.12.13"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/traverse/download/@babel/traverse-7.14.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.14.2.tgz",
+      "integrity": "sha1-kgGo2RJyOoMcJnnH678v4UFtdls=",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.12.13",
+        "@babel/generator": "^7.14.2",
+        "@babel/helper-function-name": "^7.14.2",
+        "@babel/helper-split-export-declaration": "^7.12.13",
+        "@babel/parser": "^7.14.2",
+        "@babel/types": "^7.14.2",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.14.2",
+      "resolved": "https://registry.nlark.com/@babel/types/download/@babel/types-7.14.2.tgz?cache=0&sync_timestamp=1620839476067&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.14.2.tgz",
+      "integrity": "sha1-QgiuADEH74oFfqgzPlbrZNL2osM=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.14.0",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "node_modules/@hapi/address": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz?cache=0&sync_timestamp=1603524710662&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Faddress%2Fdownload%2F%40hapi%2Faddress-2.1.4.tgz",
+      "integrity": "sha1-XWftQ/P9QaadS5/3tW58DR0KgeU=",
+      "deprecated": "Moved to 'npm install @sideway/address'",
+      "dev": true
+    },
+    "node_modules/@hapi/bourne": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npm.taobao.org/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz?cache=0&sync_timestamp=1593915150444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fbourne%2Fdownload%2F%40hapi%2Fbourne-1.3.2.tgz",
+      "integrity": "sha1-CnCVreoGckPOMoPhtWuKj0U7JCo=",
+      "deprecated": "This version has been deprecated and is no longer supported or maintained",
+      "dev": true
+    },
+    "node_modules/@hapi/hoek": {
+      "version": "8.5.1",
+      "resolved": "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.5.1.tgz",
+      "integrity": "sha1-/elgZMpEbeyMVajC8TCVewcMbgY=",
+      "deprecated": "This version has been deprecated and is no longer supported or maintained",
+      "dev": true
+    },
+    "node_modules/@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=1603524515155&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fjoi%2Fdownload%2F%40hapi%2Fjoi-15.1.1.tgz",
+      "integrity": "sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc=",
+      "deprecated": "Switch to 'npm install joi'",
+      "dev": true,
+      "dependencies": {
+        "@hapi/address": "2.x.x",
+        "@hapi/bourne": "1.x.x",
+        "@hapi/hoek": "8.x.x",
+        "@hapi/topo": "3.x.x"
+      }
+    },
+    "node_modules/@hapi/topo": {
+      "version": "3.1.6",
+      "resolved": "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.6.tgz?cache=0&sync_timestamp=1593916080558&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Ftopo%2Fdownload%2F%40hapi%2Ftopo-3.1.6.tgz",
+      "integrity": "sha1-aNk1+j6uf91asNf5U/MgXYsr/Ck=",
+      "deprecated": "This version has been deprecated and is no longer supported or maintained",
+      "dev": true,
+      "dependencies": {
+        "@hapi/hoek": "^8.3.0"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "cssnano": "^4.0.0",
+        "cssnano-preset-default": "^4.0.0",
+        "postcss": "^7.0.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "call-me-maybe": "^1.0.1",
+        "glob-to-regexp": "^0.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npm.taobao.org/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.4.tgz?cache=0&sync_timestamp=1609074618762&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40nodelib%2Ffs.scandir%2Fdownload%2F%40nodelib%2Ffs.scandir-2.1.4.tgz",
+      "integrity": "sha1-1LNUml213iaD4MEHGrTxQJBLv2k=",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.4",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.scandir/node_modules/@nodelib/fs.stat": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-2.0.4.tgz?cache=0&sync_timestamp=1609074554588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-2.0.4.tgz",
+      "integrity": "sha1-o/LdYbq0O424+hCKEhz//kxnZlU=",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz?cache=0&sync_timestamp=1609074554588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-1.1.3.tgz",
+      "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=",
+      "dev": true,
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npm.taobao.org/@nodelib/fs.walk/download/@nodelib/fs.walk-1.2.6.tgz?cache=0&sync_timestamp=1609077165961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40nodelib%2Ffs.walk%2Fdownload%2F%40nodelib%2Ffs.walk-1.2.6.tgz",
+      "integrity": "sha1-zOk5azCqWv6eN1Zgj1gxrctT0GM=",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.4",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@riophae/vue-treeselect": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npm.taobao.org/@riophae/vue-treeselect/download/@riophae/vue-treeselect-0.4.0.tgz",
+      "integrity": "sha1-C67Vp5TP/FgLY1kfNcEl5RwN8kE=",
+      "dependencies": {
+        "@babel/runtime": "^7.3.1",
+        "babel-helper-vue-jsx-merge-props": "^2.0.3",
+        "easings-css": "^1.0.0",
+        "fuzzysearch": "^1.0.3",
+        "is-promise": "^2.1.0",
+        "lodash": "^4.0.0",
+        "material-colors": "^1.2.6",
+        "watch-size": "^2.0.0"
+      },
+      "peerDependencies": {
+        "vue": "^2.2.0"
+      }
+    },
+    "node_modules/@samverschueren/stream-to-observable": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npm.taobao.org/@samverschueren/stream-to-observable/download/@samverschueren/stream-to-observable-0.3.1.tgz?cache=0&sync_timestamp=1596974175687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40samverschueren%2Fstream-to-observable%2Fdownload%2F%40samverschueren%2Fstream-to-observable-0.3.1.tgz",
+      "integrity": "sha1-ohEXsZ7pvnDDeewYd1N+8uHGMwE=",
+      "dev": true,
+      "dependencies": {
+        "any-observable": "^0.3.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependenciesMeta": {
+        "rxjs": {
+          "optional": true
+        },
+        "zen-observable": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@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=1607927399532&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,
+      "dependencies": {
+        "chalk": "^2.4.2",
+        "error-stack-parser": "^2.0.2",
+        "string-width": "^2.0.0",
+        "strip-ansi": "^5"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1618558823901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz",
+      "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+      "dev": true,
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/strip-ansi/node_modules/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,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@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
+    },
+    "node_modules/@types/anymatch": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npm.taobao.org/@types/anymatch/download/@types/anymatch-1.3.1.tgz?cache=0&sync_timestamp=1613378060592&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fanymatch%2Fdownload%2F%40types%2Fanymatch-1.3.1.tgz",
+      "integrity": "sha1-M2utwb7sudrMOL6izzKt9ieoQho=",
+      "dev": true
+    },
+    "node_modules/@types/body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npm.taobao.org/@types/body-parser/download/@types/body-parser-1.19.0.tgz?cache=0&sync_timestamp=1613378063000&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbody-parser%2Fdownload%2F%40types%2Fbody-parser-1.19.0.tgz",
+      "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=",
+      "dev": true,
+      "dependencies": {
+        "@types/connect": "*",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/connect": {
+      "version": "3.4.34",
+      "resolved": "https://registry.nlark.com/@types/connect/download/@types/connect-3.4.34.tgz",
+      "integrity": "sha1-FwpAIjptZmAG2TyhKK8r6x2bGQE=",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/connect-history-api-fallback": {
+      "version": "1.3.4",
+      "resolved": "https://registry.npm.taobao.org/@types/connect-history-api-fallback/download/@types/connect-history-api-fallback-1.3.4.tgz?cache=0&sync_timestamp=1615910664204&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fconnect-history-api-fallback%2Fdownload%2F%40types%2Fconnect-history-api-fallback-1.3.4.tgz",
+      "integrity": "sha1-jA8Obl2CUraZ9aZi9Rvfgv2di7g=",
+      "dev": true,
+      "dependencies": {
+        "@types/express-serve-static-core": "*",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/express": {
+      "version": "4.17.11",
+      "resolved": "https://registry.nlark.com/@types/express/download/@types/express-4.17.11.tgz",
+      "integrity": "sha1-3r48qm+OX82pa0e9VOL0DE7llUU=",
+      "dev": true,
+      "dependencies": {
+        "@types/body-parser": "*",
+        "@types/express-serve-static-core": "^4.17.18",
+        "@types/qs": "*",
+        "@types/serve-static": "*"
+      }
+    },
+    "node_modules/@types/express-serve-static-core": {
+      "version": "4.17.19",
+      "resolved": "https://registry.npm.taobao.org/@types/express-serve-static-core/download/@types/express-serve-static-core-4.17.19.tgz?cache=0&sync_timestamp=1615830555880&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress-serve-static-core%2Fdownload%2F%40types%2Fexpress-serve-static-core-4.17.19.tgz",
+      "integrity": "sha1-AKz8FjLnKaysTxUw6eFvbdFQih0=",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*",
+        "@types/qs": "*",
+        "@types/range-parser": "*"
+      }
+    },
+    "node_modules/@types/glob": {
+      "version": "7.1.3",
+      "resolved": "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fglob%2Fdownload%2F%40types%2Fglob-7.1.3.tgz",
+      "integrity": "sha1-5rqA82t9qtLGhazZJmOC5omFwYM=",
+      "dev": true,
+      "dependencies": {
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/http-proxy": {
+      "version": "1.17.6",
+      "resolved": "https://registry.nlark.com/@types/http-proxy/download/@types/http-proxy-1.17.6.tgz?cache=0&sync_timestamp=1621034446420&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fhttp-proxy%2Fdownload%2F%40types%2Fhttp-proxy-1.17.6.tgz",
+      "integrity": "sha1-Ytw/reIn1qwoYsjxnuDanan9hhY=",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/json-schema": {
+      "version": "7.0.7",
+      "resolved": "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.7.tgz?cache=0&sync_timestamp=1613378919536&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fjson-schema%2Fdownload%2F%40types%2Fjson-schema-7.0.7.tgz",
+      "integrity": "sha1-mKmTUWyFnrDVxMjwmDF6nqaNua0=",
+      "dev": true
+    },
+    "node_modules/@types/json5": {
+      "version": "0.0.29",
+      "resolved": "https://registry.npm.taobao.org/@types/json5/download/@types/json5-0.0.29.tgz",
+      "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
+      "dev": true
+    },
+    "node_modules/@types/mime": {
+      "version": "1.3.2",
+      "resolved": "https://registry.nlark.com/@types/mime/download/@types/mime-1.3.2.tgz?cache=0&sync_timestamp=1618846739993&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fmime%2Fdownload%2F%40types%2Fmime-1.3.2.tgz",
+      "integrity": "sha1-k+Jb+e51/g/YC1lLxP6w6GIRG1o=",
+      "dev": true
+    },
+    "node_modules/@types/minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.4.tgz",
+      "integrity": "sha1-8Owl2/Lw5LGGRzE6wDETTKWySyE=",
+      "dev": true
+    },
+    "node_modules/@types/minimist": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/@types/minimist/download/@types/minimist-1.2.1.tgz?cache=0&sync_timestamp=1613379261405&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fminimist%2Fdownload%2F%40types%2Fminimist-1.2.1.tgz",
+      "integrity": "sha1-KD9mn/dte4Jg34q3pCYsyD2YglY=",
+      "dev": true
+    },
+    "node_modules/@types/node": {
+      "version": "15.3.0",
+      "resolved": "https://registry.nlark.com/@types/node/download/@types/node-15.3.0.tgz",
+      "integrity": "sha1-1v7X1rxoVDBto96hr5+HSwB4PiY=",
+      "dev": true
+    },
+    "node_modules/@types/normalize-package-data": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz?cache=0&sync_timestamp=1613379350842&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnormalize-package-data%2Fdownload%2F%40types%2Fnormalize-package-data-2.4.0.tgz",
+      "integrity": "sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=",
+      "dev": true
+    },
+    "node_modules/@types/q": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.4.tgz",
+      "integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=",
+      "dev": true
+    },
+    "node_modules/@types/qs": {
+      "version": "6.9.6",
+      "resolved": "https://registry.npm.taobao.org/@types/qs/download/@types/qs-6.9.6.tgz",
+      "integrity": "sha1-35w8izGiR+wxXmmWVmvjFx30s7E=",
+      "dev": true
+    },
+    "node_modules/@types/range-parser": {
+      "version": "1.2.3",
+      "resolved": "https://registry.nlark.com/@types/range-parser/download/@types/range-parser-1.2.3.tgz",
+      "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=",
+      "dev": true
+    },
+    "node_modules/@types/serve-static": {
+      "version": "1.13.9",
+      "resolved": "https://registry.nlark.com/@types/serve-static/download/@types/serve-static-1.13.9.tgz",
+      "integrity": "sha1-qs8oqFoF7imhH7fD6tk1rFbzPk4=",
+      "dev": true,
+      "dependencies": {
+        "@types/mime": "^1",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@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
+    },
+    "node_modules/@types/tapable": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npm.taobao.org/@types/tapable/download/@types/tapable-1.0.7.tgz?cache=0&sync_timestamp=1617127562296&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Ftapable%2Fdownload%2F%40types%2Ftapable-1.0.7.tgz",
+      "integrity": "sha1-VFFYNC+Uno/Tv9gTIklx7N3D+sQ=",
+      "dev": true
+    },
+    "node_modules/@types/uglify-js": {
+      "version": "3.13.0",
+      "resolved": "https://registry.npm.taobao.org/@types/uglify-js/download/@types/uglify-js-3.13.0.tgz",
+      "integrity": "sha1-HK2N8fsLFDxaugjeVxLqnR/3ESQ=",
+      "dev": true,
+      "dependencies": {
+        "source-map": "^0.6.1"
+      }
+    },
+    "node_modules/@types/uglify-js/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@types/webpack": {
+      "version": "4.41.28",
+      "resolved": "https://registry.nlark.com/@types/webpack/download/@types/webpack-4.41.28.tgz",
+      "integrity": "sha1-AGmiFZt61Ng9C1gBlCwX1UEziXs=",
+      "dev": true,
+      "dependencies": {
+        "@types/anymatch": "*",
+        "@types/node": "*",
+        "@types/tapable": "^1",
+        "@types/uglify-js": "*",
+        "@types/webpack-sources": "*",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/@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?cache=0&sync_timestamp=1620426497880&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fwebpack-dev-server%2Fdownload%2F%40types%2Fwebpack-dev-server-3.11.4.tgz",
+      "integrity": "sha1-kNR91mC2ltQJQxq4wen6NhUQOgc=",
+      "dev": true,
+      "dependencies": {
+        "@types/connect-history-api-fallback": "*",
+        "@types/express": "*",
+        "@types/serve-static": "*",
+        "@types/webpack": "^4",
+        "http-proxy-middleware": "^1.0.0"
+      }
+    },
+    "node_modules/@types/webpack-sources": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/@types/webpack-sources/download/@types/webpack-sources-2.1.0.tgz?cache=0&sync_timestamp=1613384741414&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fwebpack-sources%2Fdownload%2F%40types%2Fwebpack-sources-2.1.0.tgz",
+      "integrity": "sha1-iIKwvWLR4M5i8YPQ0Bty5ugujBA=",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*",
+        "@types/source-list-map": "*",
+        "source-map": "^0.7.3"
+      }
+    },
+    "node_modules/@types/webpack-sources/node_modules/source-map": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.7.3.tgz",
+      "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@types/webpack/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@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=1602851386916&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=",
+      "dev": true
+    },
+    "node_modules/@vue/babel-helper-vue-transform-on": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-transform-on/download/@vue/babel-helper-vue-transform-on-1.0.2.tgz?cache=0&sync_timestamp=1610812436327&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-helper-vue-transform-on%2Fdownload%2F%40vue%2Fbabel-helper-vue-transform-on-1.0.2.tgz",
+      "integrity": "sha1-m5xpHNBvyFUiGiR1w8yDHXdLx9w=",
+      "dev": true
+    },
+    "node_modules/@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",
+      "integrity": "sha1-GEvzVBq279vlB5q4sgwZ4q8QC/s=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      }
+    },
+    "node_modules/@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=1602851387265&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,
+      "dependencies": {
+        "@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"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@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?cache=0&sync_timestamp=1620982846300&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fbabel-preset-app%2Fdownload%2F%40vue%2Fbabel-preset-app-4.5.13.tgz",
+      "integrity": "sha1-y0dTIeTHP38RDawppIwqnLgK/rY=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      },
+      "peerDependencies": {
+        "@babel/core": "*",
+        "core-js": "^3",
+        "vue": "^2 || ^3.0.0-0"
+      },
+      "peerDependenciesMeta": {
+        "core-js": {
+          "optional": true
+        },
+        "vue": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@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?cache=0&sync_timestamp=1603806993853&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-preset-jsx%2Fdownload%2F%40vue%2Fbabel-preset-jsx-1.2.4.tgz",
+      "integrity": "sha1-kv6nnbbxOwHoDToAmeKSS9y+Toc=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@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?cache=0&sync_timestamp=1602851381964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-composition-api-inject-h%2Fdownload%2F%40vue%2Fbabel-sugar-composition-api-inject-h-1.2.1.tgz",
+      "integrity": "sha1-BdbgxDJxDjdYKyvppgSbaJtvA+s=",
+      "dev": true,
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@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?cache=0&sync_timestamp=1603806995958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-composition-api-render-instance%2Fdownload%2F%40vue%2Fbabel-sugar-composition-api-render-instance-1.2.4.tgz",
+      "integrity": "sha1-5MvGmXw0T6wnF4WteikyXFHWjRk=",
+      "dev": true,
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-sugar-functional-vue": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.2.2.tgz?cache=0&sync_timestamp=1602929516892&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-functional-vue%2Fdownload%2F%40vue%2Fbabel-sugar-functional-vue-1.2.2.tgz",
+      "integrity": "sha1-JnqayNeHyW7b8Dzj85LEnam9Jlg=",
+      "dev": true,
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-sugar-inject-h": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.2.2.tgz?cache=0&sync_timestamp=1602929516704&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-inject-h%2Fdownload%2F%40vue%2Fbabel-sugar-inject-h-1.2.2.tgz",
+      "integrity": "sha1-1zjTyJM2fshJHcu2abAAkZKT46o=",
+      "dev": true,
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@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=1603184347642&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,
+      "dependencies": {
+        "@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"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603923709404&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz",
+      "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@vue/babel-sugar-v-model/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/babel-sugar-v-on": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.2.3.tgz",
+      "integrity": "sha1-NCNnF4WGpp85LwS/ujICHQKROto=",
+      "dev": true,
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+        "camelcase": "^5.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603923709404&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz",
+      "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@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
+    },
+    "node_modules/@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?cache=0&sync_timestamp=1620982924315&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fcli-plugin-babel%2Fdownload%2F%40vue%2Fcli-plugin-babel-4.5.13.tgz",
+      "integrity": "sha1-qJxILtzE6h0TVkXOxQKn9f1MMOc=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      },
+      "peerDependencies": {
+        "@vue/cli-service": "^3.0.0 || ^4.0.0-0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint": {
+      "version": "4.5.13",
+      "resolved": "https://registry.nlark.com/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-4.5.13.tgz",
+      "integrity": "sha1-i68i0NltdnIMdQZka5b09iwFvfo=",
+      "dev": true,
+      "dependencies": {
+        "@vue/cli-shared-utils": "^4.5.13",
+        "eslint-loader": "^2.2.1",
+        "globby": "^9.2.0",
+        "inquirer": "^7.1.0",
+        "webpack": "^4.0.0",
+        "yorkie": "^2.0.0"
+      },
+      "peerDependencies": {
+        "@vue/cli-service": "^3.0.0 || ^4.0.0-0",
+        "eslint": ">= 1.6.0 < 7.0.0"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@vue/cli-shared-utils": "^4.5.13"
+      },
+      "peerDependencies": {
+        "@vue/cli-service": "^3.0.0 || ^4.0.0-0"
+      }
+    },
+    "node_modules/@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,
+      "peerDependencies": {
+        "@vue/cli-service": "^3.0.0 || ^4.0.0-0"
+      }
+    },
+    "node_modules/@vue/cli-service": {
+      "version": "4.5.13",
+      "resolved": "https://registry.nlark.com/@vue/cli-service/download/@vue/cli-service-4.5.13.tgz?cache=0&sync_timestamp=1620982846498&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fcli-service%2Fdownload%2F%40vue%2Fcli-service-4.5.13.tgz",
+      "integrity": "sha1-oJ5oSoAWhLbiTlQUrTBlCXDuye0=",
+      "dev": true,
+      "dependencies": {
+        "@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-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"
+      },
+      "bin": {
+        "vue-cli-service": "bin/vue-cli-service.js"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "optionalDependencies": {
+        "vue-loader-v16": "npm:vue-loader@^16.1.0"
+      },
+      "peerDependencies": {
+        "@vue/compiler-sfc": "^3.0.0-beta.14",
+        "vue-template-compiler": "^2.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/compiler-sfc": {
+          "optional": true
+        },
+        "less-loader": {
+          "optional": true
+        },
+        "pug-plain-loader": {
+          "optional": true
+        },
+        "raw-loader": {
+          "optional": true
+        },
+        "sass-loader": {
+          "optional": true
+        },
+        "stylus-loader": {
+          "optional": true
+        },
+        "vue-template-compiler": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/acorn": {
+      "version": "7.4.1",
+      "resolved": "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1620134123724&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-7.4.1.tgz",
+      "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/ssri": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
+      "integrity": "sha1-Y45OQ54v+9LNKJd21cpFfE9Roq8=",
+      "dev": true,
+      "dependencies": {
+        "minipass": "^3.1.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@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?cache=0&sync_timestamp=1620982846134&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fcli-shared-utils%2Fdownload%2F%40vue%2Fcli-shared-utils-4.5.13.tgz",
+      "integrity": "sha1-rNQPMbR5DxY0KSvapfypXcHg/1A=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      }
+    },
+    "node_modules/@vue/component-compiler-utils": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.2.0.tgz",
+      "integrity": "sha1-j4UYLO7Sjps8dTE95mn4MWbRHl0=",
+      "dev": true,
+      "dependencies": {
+        "consolidate": "^0.15.1",
+        "hash-sum": "^1.0.2",
+        "lru-cache": "^4.1.2",
+        "merge-source-map": "^1.1.0",
+        "postcss": "^7.0.14",
+        "postcss-selector-parser": "^6.0.2",
+        "source-map": "~0.6.1",
+        "vue-template-es2015-compiler": "^1.9.0"
+      },
+      "optionalDependencies": {
+        "prettier": "^1.18.2"
+      }
+    },
+    "node_modules/@vue/component-compiler-utils/node_modules/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
+    },
+    "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz?cache=0&sync_timestamp=1594427582110&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-4.1.5.tgz",
+      "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+      "dev": true,
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/@vue/component-compiler-utils/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@vue/component-compiler-utils/node_modules/yallist": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+      "dev": true
+    },
+    "node_modules/@vue/eslint-config-standard": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npm.taobao.org/@vue/eslint-config-standard/download/@vue/eslint-config-standard-5.1.2.tgz?cache=0&sync_timestamp=1607330340331&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Feslint-config-standard%2Fdownload%2F%40vue%2Feslint-config-standard-5.1.2.tgz",
+      "integrity": "sha1-xdVa+JSjriO2Wxr0pCV3esAXC0I=",
+      "dev": true,
+      "dependencies": {
+        "eslint-config-standard": "^14.1.0",
+        "eslint-import-resolver-node": "^0.3.3",
+        "eslint-import-resolver-webpack": "^0.12.1"
+      },
+      "peerDependencies": {
+        "@vue/cli-service": "^3.0.0 || ^4.0.0-0",
+        "eslint": ">=6.2.2",
+        "eslint-plugin-import": ">= 2.18.0",
+        "eslint-plugin-node": ">= 9.1.0",
+        "eslint-plugin-promise": ">= 4.2.1",
+        "eslint-plugin-standard": ">= 4.0.0",
+        "eslint-plugin-vue": ">= 6.1.2"
+      },
+      "peerDependenciesMeta": {
+        "@vue/cli-service": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vue/preload-webpack-plugin": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fpreload-webpack-plugin%2Fdownload%2F%40vue%2Fpreload-webpack-plugin-1.1.2.tgz",
+      "integrity": "sha1-zrkktOyzucQ4ccekKaAvhCPmIas=",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0.0"
+      },
+      "peerDependencies": {
+        "html-webpack-plugin": ">=2.26.0",
+        "webpack": ">=4.0.0"
+      }
+    },
+    "node_modules/@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",
+      "integrity": "sha1-trQKdiVCnSvXwigd26YB7QXcfxo=",
+      "dev": true
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0"
+      }
+    },
+    "node_modules/@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
+    },
+    "node_modules/@webassemblyjs/helper-api-error": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.9.0.tgz",
+      "integrity": "sha1-ID9nbjM7lsnaLuqzzO8zxFkotqI=",
+      "dev": true
+    },
+    "node_modules/@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
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/helper-fsm": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.9.0.tgz?cache=0&sync_timestamp=1610041181722&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-fsm%2Fdownload%2F%40webassemblyjs%2Fhelper-fsm-1.9.0.tgz",
+      "integrity": "sha1-wFJWtxJEIUZx9LCOwQitY7cO3bg=",
+      "dev": true
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0"
+      }
+    },
+    "node_modules/@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
+    },
+    "node_modules/@webassemblyjs/helper-wasm-section": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.9.0.tgz?cache=0&sync_timestamp=1610041488989&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-wasm-section%2Fdownload%2F%40webassemblyjs%2Fhelper-wasm-section-1.9.0.tgz",
+      "integrity": "sha1-WkE41aYpK6GLBMWuSXF+QWeWU0Y=",
+      "dev": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/ieee754": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.9.0.tgz",
+      "integrity": "sha1-Fceg+6roP7JhQ7us9tbfFwKtOeQ=",
+      "dev": true,
+      "dependencies": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "node_modules/@webassemblyjs/leb128": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.9.0.tgz",
+      "integrity": "sha1-8Zygt2ptxVYjoJz/p2noOPoeHJU=",
+      "dev": true,
+      "dependencies": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@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
+    },
+    "node_modules/@webassemblyjs/wasm-edit": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.9.0.tgz?cache=0&sync_timestamp=1610041485419&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-edit%2Fdownload%2F%40webassemblyjs%2Fwasm-edit-1.9.0.tgz",
+      "integrity": "sha1-P+bXnT8PkiGDqoYALELdJWz+6c8=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-gen": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.9.0.tgz?cache=0&sync_timestamp=1610041488584&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-gen%2Fdownload%2F%40webassemblyjs%2Fwasm-gen-1.9.0.tgz",
+      "integrity": "sha1-ULxw7Gje2OJ2OwGhQYv0NJGnpJw=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@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"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@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"
+      }
+    },
+    "node_modules/@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,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@xtuc/ieee754": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz",
+      "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=",
+      "dev": true
+    },
+    "node_modules/@xtuc/long": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz",
+      "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=",
+      "dev": true
+    },
+    "node_modules/abbrev": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz",
+      "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=",
+      "dev": true
+    },
+    "node_modules/accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz",
+      "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
+      "dev": true,
+      "dependencies": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "6.4.2",
+      "resolved": "https://registry.nlark.com/acorn/download/acorn-6.4.2.tgz?cache=0&sync_timestamp=1620134123724&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-6.4.2.tgz",
+      "integrity": "sha1-NYZv1xBSjpLeEM8GAWSY5H454eY=",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-jsx": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.3.1.tgz?cache=0&sync_timestamp=1599499155970&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.3.1.tgz",
+      "integrity": "sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns=",
+      "dev": true,
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/address": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz",
+      "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/aggregate-error": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.1.0.tgz?cache=0&sync_timestamp=1618681242464&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faggregate-error%2Fdownload%2Faggregate-error-3.1.0.tgz",
+      "integrity": "sha1-kmcP9Q9TWb23o+DUDQ7DDFc3aHo=",
+      "dev": true,
+      "dependencies": {
+        "clean-stack": "^2.0.0",
+        "indent-string": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.nlark.com/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1621023838921&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
+      "integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=",
+      "dev": true,
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "node_modules/ajv-errors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz",
+      "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=",
+      "dev": true,
+      "peerDependencies": {
+        "ajv": ">=5.0.0"
+      }
+    },
+    "node_modules/ajv-keywords": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1616882441894&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz",
+      "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=",
+      "dev": true,
+      "peerDependencies": {
+        "ajv": "^6.9.1"
+      }
+    },
+    "node_modules/alphanum-sort": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz",
+      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+      "dev": true
+    },
+    "node_modules/amdefine": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz",
+      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.2"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ansi-escapes": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.2.tgz",
+      "integrity": "sha1-ayKR0dt9mLZSHV8e+kLQ86n+tl4=",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.21.3"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-escapes/node_modules/type-fest": {
+      "version": "0.21.3",
+      "resolved": "https://registry.nlark.com/type-fest/download/type-fest-0.21.3.tgz",
+      "integrity": "sha1-0mCiSwGYQ24TP6JqUkptZfo7Ljc=",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/ansi-html": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz",
+      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+      "dev": true,
+      "engines": [
+        "node >= 0.8.0"
+      ],
+      "bin": {
+        "ansi-html": "bin/ansi-html"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz",
+      "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/any-observable": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/any-observable/download/any-observable-0.3.0.tgz",
+      "integrity": "sha1-r5M0deWAamfQ198JDdXovvZdEZs=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/any-promise": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz",
+      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
+      "dev": true
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.nlark.com/anymatch/download/anymatch-3.1.2.tgz",
+      "integrity": "sha1-wFV8CWrzLxBhmPT04qODU343hxY=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/aproba": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz",
+      "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=",
+      "dev": true
+    },
+    "node_modules/arch": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/arch/download/arch-2.2.0.tgz",
+      "integrity": "sha1-G8R4GPMFdk8jqzMGsL/AhsWinRE=",
+      "dev": true
+    },
+    "node_modules/are-we-there-yet": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.5.tgz",
+      "integrity": "sha1-SzXClE8GKov82mZBB2A1D+nd/CE=",
+      "dev": true,
+      "dependencies": {
+        "delegates": "^1.0.0",
+        "readable-stream": "^2.0.6"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz?cache=0&sync_timestamp=1598649734444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fargparse%2Fdownload%2Fargparse-1.0.10.tgz",
+      "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
+      "dev": true,
+      "dependencies": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/arr-diff": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz",
+      "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arr-union": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz",
+      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-find": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/array-find/download/array-find-1.0.0.tgz",
+      "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=",
+      "dev": true
+    },
+    "node_modules/array-find-index": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz",
+      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz?cache=0&sync_timestamp=1574313384951&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-1.1.1.tgz",
+      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+      "dev": true
+    },
+    "node_modules/array-includes": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npm.taobao.org/array-includes/download/array-includes-3.1.3.tgz?cache=0&sync_timestamp=1613858037848&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-includes%2Fdownload%2Farray-includes-3.1.3.tgz",
+      "integrity": "sha1-x/YZs4KtKvr1Mmzd/cCvxhr3aQo=",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.2",
+        "get-intrinsic": "^1.1.1",
+        "is-string": "^1.0.5"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/array-union": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz?cache=0&sync_timestamp=1614624302839&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-union%2Fdownload%2Farray-union-1.0.2.tgz",
+      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+      "dev": true,
+      "dependencies": {
+        "array-uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-uniq": {
+      "version": "1.0.3",
+      "resolved": "https://registry.nlark.com/array-uniq/download/array-uniq-1.0.3.tgz?cache=0&sync_timestamp=1620042045402&other_urls=https%3A%2F%2Fregistry.nlark.com%2Farray-uniq%2Fdownload%2Farray-uniq-1.0.3.tgz",
+      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-unique": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array.prototype.flat": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npm.taobao.org/array.prototype.flat/download/array.prototype.flat-1.2.4.tgz?cache=0&sync_timestamp=1605688512391&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray.prototype.flat%2Fdownload%2Farray.prototype.flat-1.2.4.tgz",
+      "integrity": "sha1-bvY4tDMSvUAbTGGZ/ex+LcnpoSM=",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/asn1": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz",
+      "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
+      "dev": true,
+      "dependencies": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "node_modules/asn1.js/node_modules/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
+    },
+    "node_modules/assert": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz",
+      "integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=",
+      "dev": true,
+      "dependencies": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      }
+    },
+    "node_modules/assert-plus": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/assert/node_modules/inherits": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz",
+      "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+      "dev": true
+    },
+    "node_modules/assert/node_modules/util": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil%2Fdownload%2Futil-0.10.3.tgz",
+      "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "2.0.1"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/astral-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz",
+      "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/async": {
+      "version": "2.6.3",
+      "resolved": "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz",
+      "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=",
+      "dev": true,
+      "dependencies": {
+        "lodash": "^4.17.14"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/async-foreach": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npm.taobao.org/async-foreach/download/async-foreach-0.1.3.tgz",
+      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/async-validator": {
+      "version": "1.8.5",
+      "resolved": "https://registry.nlark.com/async-validator/download/async-validator-1.8.5.tgz",
+      "integrity": "sha1-3D4I7B/Q3dtn5ghC8CwM0c7G1/A=",
+      "dependencies": {
+        "babel-runtime": "6.x"
+      }
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "dev": true
+    },
+    "node_modules/atob": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz",
+      "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=",
+      "dev": true,
+      "bin": {
+        "atob": "bin/atob.js"
+      },
+      "engines": {
+        "node": ">= 4.5.0"
+      }
+    },
+    "node_modules/autoprefixer": {
+      "version": "9.8.6",
+      "resolved": "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.8.6.tgz",
+      "integrity": "sha1-O3NZTKG/kmYyDFrPFYjXTep0IQ8=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "bin": {
+        "autoprefixer": "bin/autoprefixer"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/aws4": {
+      "version": "1.11.0",
+      "resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.11.0.tgz?cache=0&sync_timestamp=1604101166484&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.11.0.tgz",
+      "integrity": "sha1-1h9G2DslGSUOJ4Ta9bCUeai0HFk=",
+      "dev": true
+    },
+    "node_modules/axios": {
+      "version": "0.21.1",
+      "resolved": "https://registry.npm.taobao.org/axios/download/axios-0.21.1.tgz?cache=0&sync_timestamp=1608611162952&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.21.1.tgz",
+      "integrity": "sha1-IlY0gZYvTWvemnbVFu8OXTwJsrg=",
+      "dependencies": {
+        "follow-redirects": "^1.10.0"
+      }
+    },
+    "node_modules/babel-eslint": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz?cache=0&sync_timestamp=1611945896690&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-eslint%2Fdownload%2Fbabel-eslint-10.1.0.tgz",
+      "integrity": "sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI=",
+      "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.7.0",
+        "@babel/traverse": "^7.7.0",
+        "@babel/types": "^7.7.0",
+        "eslint-visitor-keys": "^1.0.0",
+        "resolve": "^1.12.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependencies": {
+        "eslint": ">= 4.12.1"
+      }
+    },
+    "node_modules/babel-helper-vue-jsx-merge-props": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
+      "integrity": "sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY="
+    },
+    "node_modules/babel-loader": {
+      "version": "8.2.2",
+      "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.2.2.tgz?cache=0&sync_timestamp=1606424705083&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-loader%2Fdownload%2Fbabel-loader-8.2.2.tgz",
+      "integrity": "sha1-k2POhMEMmkDmx1N0jhRBtgyKC4E=",
+      "dev": true,
+      "dependencies": {
+        "find-cache-dir": "^3.3.1",
+        "loader-utils": "^1.4.0",
+        "make-dir": "^3.1.0",
+        "schema-utils": "^2.6.5"
+      },
+      "engines": {
+        "node": ">= 8.9"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0",
+        "webpack": ">=2"
+      }
+    },
+    "node_modules/babel-plugin-dynamic-import-node": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.3.tgz?cache=0&sync_timestamp=1587495903478&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-dynamic-import-node%2Fdownload%2Fbabel-plugin-dynamic-import-node-2.3.3.tgz",
+      "integrity": "sha1-hP2hnJduxcbe/vV/lCez3vZuF6M=",
+      "dev": true,
+      "dependencies": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs2": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npm.taobao.org/babel-plugin-polyfill-corejs2/download/babel-plugin-polyfill-corejs2-0.2.0.tgz",
+      "integrity": "sha1-aGd1v5pap1fhBSCQNnXjiJyu7cQ=",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.13.11",
+        "@babel/helper-define-polyfill-provider": "^0.2.0",
+        "semver": "^6.1.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs3": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npm.taobao.org/babel-plugin-polyfill-corejs3/download/babel-plugin-polyfill-corejs3-0.2.0.tgz",
+      "integrity": "sha1-9LS7exkymCffNv9W9ubTZwJst6I=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.2.0",
+        "core-js-compat": "^3.9.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-regenerator": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npm.taobao.org/babel-plugin-polyfill-regenerator/download/babel-plugin-polyfill-regenerator-0.2.0.tgz",
+      "integrity": "sha1-hT9fVxb0aR2YyE+Aacdjbqjaerg=",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.2.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-runtime": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz",
+      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+      "dependencies": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      }
+    },
+    "node_modules/babel-runtime/node_modules/core-js": {
+      "version": "2.6.12",
+      "resolved": "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz?cache=0&sync_timestamp=1620507873758&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcore-js%2Fdownload%2Fcore-js-2.6.12.tgz",
+      "integrity": "sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw=",
+      "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
+      "hasInstallScript": true
+    },
+    "node_modules/babel-runtime/node_modules/regenerator-runtime": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz",
+      "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk="
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.2.tgz?cache=0&sync_timestamp=1617714233441&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbalanced-match%2Fdownload%2Fbalanced-match-1.0.2.tgz",
+      "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=",
+      "dev": true
+    },
+    "node_modules/base": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz",
+      "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base/node_modules/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,
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base/node_modules/is-accessor-descriptor": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+      "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base/node_modules/is-data-descriptor": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+      "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base/node_modules/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,
+      "dependencies": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.5.1.tgz?cache=0&sync_timestamp=1605123440207&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbase64-js%2Fdownload%2Fbase64-js-1.5.1.tgz",
+      "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=",
+      "dev": true
+    },
+    "node_modules/batch": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz",
+      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "node_modules/bfj": {
+      "version": "6.1.2",
+      "resolved": "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz",
+      "integrity": "sha1-MlyGGoIryzWKQceKM7jm4ght3n8=",
+      "dev": true,
+      "dependencies": {
+        "bluebird": "^3.5.5",
+        "check-types": "^8.0.3",
+        "hoopy": "^0.1.4",
+        "tryer": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/big.js": {
+      "version": "5.2.2",
+      "resolved": "https://registry.nlark.com/big.js/download/big.js-5.2.2.tgz?cache=0&sync_timestamp=1620132748267&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbig.js%2Fdownload%2Fbig.js-5.2.2.tgz",
+      "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.2.0.tgz?cache=0&sync_timestamp=1610299308660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-2.2.0.tgz",
+      "integrity": "sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=",
+      "dev": true,
+      "optional": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz",
+      "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
+    "node_modules/block-stream": {
+      "version": "0.0.9",
+      "resolved": "https://registry.npm.taobao.org/block-stream/download/block-stream-0.0.9.tgz",
+      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "~2.0.0"
+      },
+      "engines": {
+        "node": "0.4 || >=0.5.8"
+      }
+    },
+    "node_modules/bluebird": {
+      "version": "3.7.2",
+      "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz",
+      "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz",
+      "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/body-parser/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/body-parser/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/body-parser/node_modules/qs": {
+      "version": "6.7.0",
+      "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1616385328325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz",
+      "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/bonjour": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz",
+      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/bonjour/node_modules/array-flatten": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz?cache=0&sync_timestamp=1574313384951&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-2.1.2.tgz",
+      "integrity": "sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=",
+      "dev": true
+    },
+    "node_modules/boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz",
+      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+      "dev": true
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
+      "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/braces/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/brorand": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz",
+      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+      "dev": true
+    },
+    "node_modules/browserify-aes": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz",
+      "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/browserify-cipher": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz",
+      "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=",
+      "dev": true,
+      "dependencies": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "node_modules/browserify-des": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz",
+      "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=",
+      "dev": true,
+      "dependencies": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "node_modules/browserify-rsa": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.1.0.tgz",
+      "integrity": "sha1-sv0Gtbda4pf3zi3GUfkY9b4VjI0=",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^5.0.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "node_modules/browserify-sign": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.2.1.tgz?cache=0&sync_timestamp=1596557839219&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserify-sign%2Fdownload%2Fbrowserify-sign-4.2.1.tgz",
+      "integrity": "sha1-6vSt1G3VS+O7OzbAzxWrvrp5VsM=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/browserify-sign/node_modules/readable-stream": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1581624324274&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz",
+      "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/browserify-sign/node_modules/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
+    },
+    "node_modules/browserify-zlib": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz",
+      "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=",
+      "dev": true,
+      "dependencies": {
+        "pako": "~1.0.5"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.16.6",
+      "resolved": "https://registry.nlark.com/browserslist/download/browserslist-4.16.6.tgz?cache=0&sync_timestamp=1619789072079&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.16.6.tgz",
+      "integrity": "sha1-15ASd6WojlVO0wWxg+ybDAj2b6I=",
+      "dev": true,
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001219",
+        "colorette": "^1.2.2",
+        "electron-to-chromium": "^1.3.723",
+        "escalade": "^3.1.1",
+        "node-releases": "^1.1.71"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "4.9.2",
+      "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz?cache=0&sync_timestamp=1606098159535&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbuffer%2Fdownload%2Fbuffer-4.9.2.tgz",
+      "integrity": "sha1-Iw6tNEACmIZEhBqwJEr4xEu+Pvg=",
+      "dev": true,
+      "dependencies": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/buffer-indexof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz",
+      "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=",
+      "dev": true
+    },
+    "node_modules/buffer-json": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/buffer-json/download/buffer-json-2.0.0.tgz",
+      "integrity": "sha1-9z4TseQvGW/i/WfQAcfXEH7dfCM=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/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
+    },
+    "node_modules/bytes": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz",
+      "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/cacache": {
+      "version": "12.0.4",
+      "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.4.tgz?cache=0&sync_timestamp=1616431100222&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-12.0.4.tgz",
+      "integrity": "sha1-ZovL0QWutfHZL+JVcOyVJcj6pAw=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cache-loader": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/cache-loader/download/cache-loader-4.1.0.tgz",
+      "integrity": "sha1-mUjK41OuwKH8ser9ojAIFuyFOH4=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 8.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.2.tgz?cache=0&sync_timestamp=1610403007655&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcall-bind%2Fdownload%2Fcall-bind-1.0.2.tgz",
+      "integrity": "sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/caller-callsite": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz",
+      "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+      "dev": true,
+      "dependencies": {
+        "callsites": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/caller-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz?cache=0&sync_timestamp=1618738124477&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaller-path%2Fdownload%2Fcaller-path-2.0.0.tgz",
+      "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+      "dev": true,
+      "dependencies": {
+        "caller-callsite": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/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=1606869170809&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamel-case%2Fdownload%2Fcamel-case-3.0.0.tgz",
+      "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+      "dev": true,
+      "dependencies": {
+        "no-case": "^2.2.0",
+        "upper-case": "^1.1.1"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-6.2.0.tgz?cache=0&sync_timestamp=1603923709404&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-6.2.0.tgz",
+      "integrity": "sha1-kkr4gcnVJaydh/QNlk5c6pgqGAk=",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/camelcase-keys": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz",
+      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^2.0.0",
+        "map-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/camelcase-keys/node_modules/camelcase": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz?cache=0&sync_timestamp=1603923709404&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-2.1.1.tgz",
+      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "caniuse-lite": "^1.0.0",
+        "lodash.memoize": "^4.1.2",
+        "lodash.uniq": "^4.5.0"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001228",
+      "resolved": "https://registry.nlark.com/caniuse-lite/download/caniuse-lite-1.0.30001228.tgz?cache=0&sync_timestamp=1620658693631&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001228.tgz",
+      "integrity": "sha1-v9xZQs0zJvpR7gtC++9NqdSSp/o=",
+      "dev": true
+    },
+    "node_modules/case-sensitive-paths-webpack-plugin": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.4.0.tgz?cache=0&sync_timestamp=1614018085802&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcase-sensitive-paths-webpack-plugin%2Fdownload%2Fcase-sensitive-paths-webpack-plugin-2.4.0.tgz",
+      "integrity": "sha1-22QGbGQi7tLgjMFLmGykN5bbxtQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/caseless": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "dev": true
+    },
+    "node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz",
+      "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/chardet": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1601032454247&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz",
+      "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=",
+      "dev": true
+    },
+    "node_modules/check-types": {
+      "version": "8.0.3",
+      "resolved": "https://registry.npm.taobao.org/check-types/download/check-types-8.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcheck-types%2Fdownload%2Fcheck-types-8.0.3.tgz",
+      "integrity": "sha1-M1bMoZyIlUTy16le1JzlCKDs9VI=",
+      "dev": true
+    },
+    "node_modules/chokidar": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.5.1.tgz?cache=0&sync_timestamp=1610719440699&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.5.1.tgz",
+      "integrity": "sha1-7pznu+vSt59J8wR5nVRo4x4U5oo=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "anymatch": "~3.1.1",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.0",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.5.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.1"
+      }
+    },
+    "node_modules/chokidar/node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz",
+      "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/chokidar/node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz",
+      "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/chokidar/node_modules/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,
+      "optional": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/chokidar/node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz",
+      "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/chownr": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npm.taobao.org/chownr/download/chownr-1.1.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchownr%2Fdownload%2Fchownr-1.1.4.tgz",
+      "integrity": "sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs=",
+      "dev": true
+    },
+    "node_modules/chrome-trace-event": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.3.tgz?cache=0&sync_timestamp=1617905925551&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchrome-trace-event%2Fdownload%2Fchrome-trace-event-1.0.3.tgz",
+      "integrity": "sha1-EBXs7UdB4V0GZkqVfbv1DQQeJqw=",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/ci-info": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz",
+      "integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=",
+      "dev": true
+    },
+    "node_modules/cipher-base": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz",
+      "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/class-utils": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz",
+      "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
+      "dev": true,
+      "dependencies": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/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,
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/clean-css": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.3.tgz",
+      "integrity": "sha1-UHtd59l7SO5T2ErbAWD/YhY4D3g=",
+      "dev": true,
+      "dependencies": {
+        "source-map": "~0.6.0"
+      },
+      "engines": {
+        "node": ">= 4.0"
+      }
+    },
+    "node_modules/clean-css/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/clean-stack": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/clean-stack/download/clean-stack-2.2.0.tgz",
+      "integrity": "sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "restore-cursor": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cli-highlight": {
+      "version": "2.1.11",
+      "resolved": "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.11.tgz",
+      "integrity": "sha1-SXNvpFLwqvT65YDjCssmgo0twb8=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "bin": {
+        "highlight": "bin/highlight"
+      },
+      "engines": {
+        "node": ">=8.0.0",
+        "npm": ">=5.0.0"
+      }
+    },
+    "node_modules/cli-highlight/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
+      "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cli-highlight/node_modules/chalk": {
+      "version": "4.1.1",
+      "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz",
+      "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/cli-highlight/node_modules/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,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/cli-highlight/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
+      "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+      "dev": true
+    },
+    "node_modules/cli-highlight/node_modules/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,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cli-highlight/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1618560959124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
+      "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cli-spinners": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.6.0.tgz",
+      "integrity": "sha1-NsfcmPtqmna9YjjsP3fiQlYn6Tk=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/cli-truncate": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npm.taobao.org/cli-truncate/download/cli-truncate-0.2.1.tgz",
+      "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
+      "dev": true,
+      "dependencies": {
+        "slice-ansi": "0.0.4",
+        "string-width": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cli-truncate/node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz",
+      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+      "dev": true,
+      "dependencies": {
+        "number-is-nan": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cli-truncate/node_modules/slice-ansi": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-0.0.4.tgz?cache=0&sync_timestamp=1618554953055&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslice-ansi%2Fdownload%2Fslice-ansi-0.0.4.tgz",
+      "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cli-truncate/node_modules/string-width": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz?cache=0&sync_timestamp=1618558823901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-1.0.2.tgz",
+      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+      "dev": true,
+      "dependencies": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cli-truncate/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cli-width": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-3.0.0.tgz",
+      "integrity": "sha1-ovSEN6LKqaIkNueUvwceyeYc7fY=",
+      "dev": true,
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/clipboard": {
+      "version": "2.0.8",
+      "resolved": "https://registry.npm.taobao.org/clipboard/download/clipboard-2.0.8.tgz?cache=0&sync_timestamp=1615410640293&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclipboard%2Fdownload%2Fclipboard-2.0.8.tgz",
+      "integrity": "sha1-/8bBA90pZ6gwBfP2GXaqRlWkzbo=",
+      "dependencies": {
+        "good-listener": "^1.2.2",
+        "select": "^1.1.2",
+        "tiny-emitter": "^2.0.0"
+      }
+    },
+    "node_modules/clipboardy": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.3.0.tgz",
+      "integrity": "sha1-PCkDZQxo5GqRs4iYW8J3QofbopA=",
+      "dev": true,
+      "dependencies": {
+        "arch": "^2.1.1",
+        "execa": "^1.0.0",
+        "is-wsl": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/clipboardy/node_modules/is-wsl": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.2.0.tgz",
+      "integrity": "sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=",
+      "dev": true,
+      "dependencies": {
+        "is-docker": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz?cache=0&sync_timestamp=1604880033053&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-6.0.0.tgz",
+      "integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      }
+    },
+    "node_modules/cliui/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
+      "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cliui/node_modules/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,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/cliui/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
+      "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+      "dev": true
+    },
+    "node_modules/cliui/node_modules/wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.nlark.com/wrap-ansi/download/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/clone": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz",
+      "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/clone-deep": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/clone-deep/download/clone-deep-4.0.1.tgz",
+      "integrity": "sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c=",
+      "dev": true,
+      "dependencies": {
+        "is-plain-object": "^2.0.4",
+        "kind-of": "^6.0.2",
+        "shallow-clone": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "@types/q": "^1.5.1",
+        "chalk": "^2.4.1",
+        "q": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 4.0"
+      }
+    },
+    "node_modules/code-point-at": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/collection-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
+      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "dev": true,
+      "dependencies": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/color": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npm.taobao.org/color/download/color-3.1.3.tgz?cache=0&sync_timestamp=1602228883047&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolor%2Fdownload%2Fcolor-3.1.3.tgz",
+      "integrity": "sha1-ymf7TnuX1hHc3jns7tQiBn2RWW4=",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^1.9.1",
+        "color-string": "^1.5.4"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+      "dev": true
+    },
+    "node_modules/color-string": {
+      "version": "1.5.5",
+      "resolved": "https://registry.npm.taobao.org/color-string/download/color-string-1.5.5.tgz?cache=0&sync_timestamp=1614967243349&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolor-string%2Fdownload%2Fcolor-string-1.5.5.tgz",
+      "integrity": "sha1-ZUdKjw50OWJfPSemoZ2J/EUiMBQ=",
+      "dev": true,
+      "dependencies": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "node_modules/colorette": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npm.taobao.org/colorette/download/colorette-1.2.2.tgz?cache=0&sync_timestamp=1614259623635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolorette%2Fdownload%2Fcolorette-1.2.2.tgz",
+      "integrity": "sha1-y8x51emcrqLb8Q6zom/Ys+as+pQ=",
+      "dev": true
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz",
+      "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=",
+      "dev": true,
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/commander": {
+      "version": "2.20.3",
+      "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1616364009866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz",
+      "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=",
+      "dev": true
+    },
+    "node_modules/commondir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz",
+      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+      "dev": true
+    },
+    "node_modules/component-emitter": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz",
+      "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=",
+      "dev": true
+    },
+    "node_modules/compressible": {
+      "version": "2.0.18",
+      "resolved": "https://registry.npm.taobao.org/compressible/download/compressible-2.0.18.tgz?cache=0&sync_timestamp=1578286264482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcompressible%2Fdownload%2Fcompressible-2.0.18.tgz",
+      "integrity": "sha1-r1PMprBw1MPAdQ+9dyhqbXzEb7o=",
+      "dev": true,
+      "dependencies": {
+        "mime-db": ">= 1.43.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/compression": {
+      "version": "1.7.4",
+      "resolved": "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz",
+      "integrity": "sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/compression/node_modules/bytes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz",
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/compression/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/compression/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "node_modules/concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz",
+      "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=",
+      "dev": true,
+      "engines": [
+        "node >= 0.8"
+      ],
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "node_modules/connect-history-api-fallback": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz",
+      "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/console-browserify": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.2.0.tgz",
+      "integrity": "sha1-ZwY871fOts9Jk6KrOlWECujEkzY=",
+      "dev": true
+    },
+    "node_modules/console-control-strings": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/console-control-strings/download/console-control-strings-1.1.0.tgz",
+      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+      "dev": true
+    },
+    "node_modules/consolidate": {
+      "version": "0.15.1",
+      "resolved": "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz?cache=0&sync_timestamp=1599596647062&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fconsolidate%2Fdownload%2Fconsolidate-0.15.1.tgz",
+      "integrity": "sha1-IasEMjXHGgfUXZqtmFk7DbpWurc=",
+      "deprecated": "Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog",
+      "dev": true,
+      "dependencies": {
+        "bluebird": "^3.1.1"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/constants-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz",
+      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+      "dev": true
+    },
+    "node_modules/contains-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/contains-path/download/contains-path-1.0.0.tgz",
+      "integrity": "sha1-NFizMhhWA+ju0Y9RjUoQiIo6vJE=",
+      "dev": true,
+      "dependencies": {
+        "normalize-path": "^2.1.1",
+        "path-starts-with": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/contains-path/node_modules/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,
+      "dependencies": {
+        "remove-trailing-separator": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "safe-buffer": "5.1.2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz",
+      "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/convert-source-map": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.7.0.tgz?cache=0&sync_timestamp=1573003637425&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fconvert-source-map%2Fdownload%2Fconvert-source-map-1.7.0.tgz",
+      "integrity": "sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "node_modules/cookie": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz?cache=0&sync_timestamp=1587525865178&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcookie%2Fdownload%2Fcookie-0.4.0.tgz",
+      "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/copy-concurrently": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz",
+      "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/copy-webpack-plugin": {
+      "version": "5.1.2",
+      "resolved": "https://registry.nlark.com/copy-webpack-plugin/download/copy-webpack-plugin-5.1.2.tgz",
+      "integrity": "sha1-ioieHcr6bJHGzUvhrRWPHTgjuuI=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/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,
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^2.0.0",
+        "pkg-dir": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz",
+      "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/glob-parent": {
+      "version": "3.1.0",
+      "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/glob-parent/node_modules/is-glob": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+      "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/globby": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz?cache=0&sync_timestamp=1616407139482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-7.1.1.tgz",
+      "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/globby/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/ignore": {
+      "version": "3.3.10",
+      "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz?cache=0&sync_timestamp=1590809289115&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-3.3.10.tgz",
+      "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=",
+      "dev": true
+    },
+    "node_modules/copy-webpack-plugin/node_modules/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,
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/make-dir": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz?cache=0&sync_timestamp=1587567572251&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-2.1.0.tgz",
+      "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
+      "dev": true,
+      "dependencies": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+      "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/pkg-dir": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz?cache=0&sync_timestamp=1602859045787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-3.0.0.tgz",
+      "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/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,
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+      "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/slash": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz?cache=0&sync_timestamp=1618384508676&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslash%2Fdownload%2Fslash-1.0.0.tgz",
+      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/core-js": {
+      "version": "3.12.1",
+      "resolved": "https://registry.nlark.com/core-js/download/core-js-3.12.1.tgz?cache=0&sync_timestamp=1620507873758&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcore-js%2Fdownload%2Fcore-js-3.12.1.tgz",
+      "integrity": "sha1-a1r0/1VhbAikTThvH1EJF/8gQRI=",
+      "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
+      "hasInstallScript": true
+    },
+    "node_modules/core-js-compat": {
+      "version": "3.12.1",
+      "resolved": "https://registry.nlark.com/core-js-compat/download/core-js-compat-3.12.1.tgz?cache=0&sync_timestamp=1620509313036&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcore-js-compat%2Fdownload%2Fcore-js-compat-3.12.1.tgz",
+      "integrity": "sha1-LDAsRwhQX6cHKwrbUVbSb3gBoYs=",
+      "dev": true,
+      "dependencies": {
+        "browserslist": "^4.16.6",
+        "semver": "7.0.0"
+      }
+    },
+    "node_modules/core-js-compat/node_modules/semver": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.0.0.tgz",
+      "integrity": "sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+      "dev": true
+    },
+    "node_modules/cosmiconfig": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz?cache=0&sync_timestamp=1596310819353&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcosmiconfig%2Fdownload%2Fcosmiconfig-5.2.1.tgz",
+      "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=",
+      "dev": true,
+      "dependencies": {
+        "import-fresh": "^2.0.0",
+        "is-directory": "^0.3.1",
+        "js-yaml": "^3.13.1",
+        "parse-json": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cosmiconfig/node_modules/parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1610966646988&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-4.0.0.tgz",
+      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+      "dev": true,
+      "dependencies": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/create-ecdh": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz?cache=0&sync_timestamp=1596557423693&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcreate-ecdh%2Fdownload%2Fcreate-ecdh-4.0.4.tgz",
+      "integrity": "sha1-1uf0v/pmc2CFoHYv06YyaE2rzE4=",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.5.3"
+      }
+    },
+    "node_modules/create-ecdh/node_modules/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
+    },
+    "node_modules/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,
+      "dependencies": {
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
+      }
+    },
+    "node_modules/create-hmac": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz",
+      "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz",
+      "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=",
+      "dev": true,
+      "dependencies": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      },
+      "engines": {
+        "node": ">=4.8"
+      }
+    },
+    "node_modules/cross-spawn/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+      "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/css-color-names": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz",
+      "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/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&sync_timestamp=1620754698059&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-declaration-sorter%2Fdownload%2Fcss-declaration-sorter-4.0.1.tgz",
+      "integrity": "sha1-wZiUD2OnbX42wecQGLABchBUyyI=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.1",
+        "timsort": "^0.3.0"
+      },
+      "engines": {
+        "node": ">4"
+      }
+    },
+    "node_modules/css-loader": {
+      "version": "3.6.0",
+      "resolved": "https://registry.nlark.com/css-loader/download/css-loader-3.6.0.tgz",
+      "integrity": "sha1-Lkssfm4tJ/jI8o9hv/zS5ske9kU=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 8.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/css-loader/node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603923709404&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz",
+      "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/css-select": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/css-select/download/css-select-2.1.0.tgz",
+      "integrity": "sha1-ajRlM1ZjWTSoG6ymjQJVQyEF2+8=",
+      "dev": true,
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-what": "^3.2.1",
+        "domutils": "^1.7.0",
+        "nth-check": "^1.0.2"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/css-tree": {
+      "version": "1.0.0-alpha.37",
+      "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.37.tgz",
+      "integrity": "sha1-mL69YsTB2flg7DQM+fdSLjBwmiI=",
+      "dev": true,
+      "dependencies": {
+        "mdn-data": "2.0.4",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/css-tree/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/css-what": {
+      "version": "3.4.2",
+      "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-3.4.2.tgz?cache=0&sync_timestamp=1615262617763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-what%2Fdownload%2Fcss-what-3.4.2.tgz",
+      "integrity": "sha1-6nAm/LAXd+295SEk4h8yfnrpUOQ=",
+      "dev": true,
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/cssesc": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz",
+      "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=",
+      "dev": true,
+      "bin": {
+        "cssesc": "bin/cssesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cssnano": {
+      "version": "4.1.11",
+      "resolved": "https://registry.nlark.com/cssnano/download/cssnano-4.1.11.tgz?cache=0&sync_timestamp=1619611252094&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcssnano%2Fdownload%2Fcssnano-4.1.11.tgz",
+      "integrity": "sha1-x7X1uB2iacsf2YLLlgwSAJEMmpk=",
+      "dev": true,
+      "dependencies": {
+        "cosmiconfig": "^5.0.0",
+        "cssnano-preset-default": "^4.0.8",
+        "is-resolvable": "^1.0.0",
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/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=1619610598052&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,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-util-get-arguments": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz",
+      "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-util-get-match": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz",
+      "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-util-same-parent": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz",
+      "integrity": "sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M=",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/csso": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npm.taobao.org/csso/download/csso-4.2.0.tgz?cache=0&sync_timestamp=1606408849393&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcsso%2Fdownload%2Fcsso-4.2.0.tgz",
+      "integrity": "sha1-6jpWE0bo3J9UbW/r7dUBh884lSk=",
+      "dev": true,
+      "dependencies": {
+        "css-tree": "^1.1.2"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/csso/node_modules/css-tree": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.1.3.tgz",
+      "integrity": "sha1-60hw+2/XcHMn7JXC/yqwm16NuR0=",
+      "dev": true,
+      "dependencies": {
+        "mdn-data": "2.0.14",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/csso/node_modules/mdn-data": {
+      "version": "2.0.14",
+      "resolved": "https://registry.nlark.com/mdn-data/download/mdn-data-2.0.14.tgz",
+      "integrity": "sha1-cRP8QoGRfWPOKbQ0RvcB5owlulA=",
+      "dev": true
+    },
+    "node_modules/csso/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/currently-unhandled": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz",
+      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+      "dev": true,
+      "dependencies": {
+        "array-find-index": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cyclist": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz",
+      "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "assert-plus": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/date-fns": {
+      "version": "1.30.1",
+      "resolved": "https://registry.nlark.com/date-fns/download/date-fns-1.30.1.tgz?cache=0&sync_timestamp=1620446248863&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdate-fns%2Fdownload%2Fdate-fns-1.30.1.tgz",
+      "integrity": "sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw=",
+      "dev": true
+    },
+    "node_modules/de-indent": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz",
+      "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
+      "dev": true
+    },
+    "node_modules/debug": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.3.1.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.3.1.tgz",
+      "integrity": "sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz?cache=0&sync_timestamp=1610348716845&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecamelize%2Fdownload%2Fdecamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/dedent": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npm.taobao.org/dedent/download/dedent-0.7.0.tgz",
+      "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
+      "dev": true
+    },
+    "node_modules/deep-equal": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz",
+      "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz",
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+      "dev": true
+    },
+    "node_modules/deepmerge": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1572279720382&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz",
+      "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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=1610365857779&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-5.0.5.tgz",
+      "integrity": "sha1-T9a9XShV05s0zFpZUFSG6ar8mxA=",
+      "dev": true,
+      "dependencies": {
+        "execa": "^3.3.0"
+      },
+      "engines": {
+        "node": "^8.12.0 || >=9.7.0"
+      }
+    },
+    "node_modules/default-gateway/node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.3.tgz",
+      "integrity": "sha1-9zqFudXUHQRVUcF34ogtSshXKKY=",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/execa": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npm.taobao.org/execa/download/execa-3.4.0.tgz?cache=0&sync_timestamp=1606971018065&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-3.4.0.tgz",
+      "integrity": "sha1-wI7UVQ72XYWPrCaf/IVyRG8364k=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": "^8.12.0 || >=9.7.0"
+      }
+    },
+    "node_modules/default-gateway/node_modules/get-stream": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-5.2.0.tgz",
+      "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=",
+      "dev": true,
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/is-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz",
+      "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1617823583529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz",
+      "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/default-gateway/node_modules/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,
+      "dependencies": {
+        "path-key": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz",
+      "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/default-gateway/node_modules/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,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz",
+      "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/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,
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/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,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz?cache=0&sync_timestamp=1574116720213&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-2.0.2.tgz",
+      "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "clone": "^1.0.2"
+      }
+    },
+    "node_modules/define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz",
+      "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=",
+      "dev": true,
+      "dependencies": {
+        "object-keys": "^1.0.12"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/define-property/node_modules/is-accessor-descriptor": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+      "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/define-property/node_modules/is-data-descriptor": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+      "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/define-property/node_modules/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,
+      "dependencies": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "@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"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/del/node_modules/globby": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz?cache=0&sync_timestamp=1616407139482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-6.1.0.tgz",
+      "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+      "dev": true,
+      "dependencies": {
+        "array-union": "^1.0.1",
+        "glob": "^7.0.3",
+        "object-assign": "^4.0.1",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/del/node_modules/globby/node_modules/pify": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz",
+      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/delegate": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npm.taobao.org/delegate/download/delegate-3.2.0.tgz",
+      "integrity": "sha1-tmtxwxWFIuirV0T3INjKDCr1kWY="
+    },
+    "node_modules/delegates": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz",
+      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+      "dev": true
+    },
+    "node_modules/depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "dev": true
+    },
+    "node_modules/detect-node": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.5.tgz?cache=0&sync_timestamp=1615921320304&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdetect-node%2Fdownload%2Fdetect-node-2.0.5.tgz",
+      "integrity": "sha1-nScKp+qlrwtyxMnZuBTn9M5zi3k=",
+      "dev": true
+    },
+    "node_modules/diffie-hellman": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz",
+      "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      }
+    },
+    "node_modules/diffie-hellman/node_modules/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
+    },
+    "node_modules/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,
+      "dependencies": {
+        "path-type": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/dns-equal": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz",
+      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+      "dev": true
+    },
+    "node_modules/dns-packet": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npm.taobao.org/dns-packet/download/dns-packet-1.3.1.tgz",
+      "integrity": "sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo=",
+      "dev": true,
+      "dependencies": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "node_modules/doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz",
+      "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=",
+      "dev": true,
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "utila": "~0.4"
+      }
+    },
+    "node_modules/dom-serializer": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.2.tgz",
+      "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=",
+      "dev": true,
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "entities": "^2.0.0"
+      }
+    },
+    "node_modules/dom-serializer/node_modules/domelementtype": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.2.0.tgz",
+      "integrity": "sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=",
+      "dev": true
+    },
+    "node_modules/domain-browser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz?cache=0&sync_timestamp=1604239998047&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomain-browser%2Fdownload%2Fdomain-browser-1.2.0.tgz",
+      "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4",
+        "npm": ">=1.2"
+      }
+    },
+    "node_modules/domelementtype": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz",
+      "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=",
+      "dev": true
+    },
+    "node_modules/domhandler": {
+      "version": "2.4.2",
+      "resolved": "https://registry.nlark.com/domhandler/download/domhandler-2.4.2.tgz",
+      "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=",
+      "dev": true,
+      "dependencies": {
+        "domelementtype": "1"
+      }
+    },
+    "node_modules/domutils": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz",
+      "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=",
+      "dev": true,
+      "dependencies": {
+        "dom-serializer": "0",
+        "domelementtype": "1"
+      }
+    },
+    "node_modules/dot-prop": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-5.3.0.tgz?cache=0&sync_timestamp=1605778229330&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdot-prop%2Fdownload%2Fdot-prop-5.3.0.tgz",
+      "integrity": "sha1-kMzOcIzZzYLMTcjD3dmr3VWyDog=",
+      "dev": true,
+      "dependencies": {
+        "is-obj": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/dotenv": {
+      "version": "8.6.0",
+      "resolved": "https://registry.nlark.com/dotenv/download/dotenv-8.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdotenv%2Fdownload%2Fdotenv-8.6.0.tgz",
+      "integrity": "sha1-Bhr2ZNGff02PxuT/m1hM4jety4s=",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/dotenv-expand": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz",
+      "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=",
+      "dev": true
+    },
+    "node_modules/duplexer": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.2.tgz",
+      "integrity": "sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY=",
+      "dev": true
+    },
+    "node_modules/duplexify": {
+      "version": "3.7.1",
+      "resolved": "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz",
+      "integrity": "sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=",
+      "dev": true,
+      "dependencies": {
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "node_modules/easings-css": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/easings-css/download/easings-css-1.0.0.tgz",
+      "integrity": "sha1-3eVpADu3pKDAt3h49ds+C+VnnIE="
+    },
+    "node_modules/easy-stack": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.1.tgz?cache=0&sync_timestamp=1605129209848&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feasy-stack%2Fdownload%2Feasy-stack-1.0.1.tgz",
+      "integrity": "sha1-iv5CZGJpiMq7EfPHBMzQyDVBEGY=",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/ejs": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npm.taobao.org/ejs/download/ejs-2.7.4.tgz?cache=0&sync_timestamp=1612643435705&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fejs%2Fdownload%2Fejs-2.7.4.tgz",
+      "integrity": "sha1-SGYSh1c9zFPjZsehrlLDoSDuybo=",
+      "dev": true,
+      "hasInstallScript": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.3.728",
+      "resolved": "https://registry.nlark.com/electron-to-chromium/download/electron-to-chromium-1.3.728.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.728.tgz",
+      "integrity": "sha1-2+3WNz9ZWuEKE9FGtmvs5MGvpb0=",
+      "dev": true
+    },
+    "node_modules/elegant-spinner": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/elegant-spinner/download/elegant-spinner-1.0.1.tgz",
+      "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/element-ui": {
+      "version": "2.15.1",
+      "resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.15.1.tgz",
+      "integrity": "sha1-raAKpuMsAndKLndWPdhGaPgTzf8=",
+      "dependencies": {
+        "async-validator": "~1.8.1",
+        "babel-helper-vue-jsx-merge-props": "^2.0.0",
+        "deepmerge": "^1.2.0",
+        "normalize-wheel": "^1.0.1",
+        "resize-observer-polyfill": "^1.5.0",
+        "throttle-debounce": "^1.0.1"
+      },
+      "peerDependencies": {
+        "vue": "^2.5.17"
+      }
+    },
+    "node_modules/elliptic": {
+      "version": "6.5.4",
+      "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.4.tgz",
+      "integrity": "sha1-2jfOvTHnmhNn6UG1ku0fvr1Yq7s=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/elliptic/node_modules/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
+    },
+    "node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz?cache=0&sync_timestamp=1614682707048&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-regex-8.0.0.tgz",
+      "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=",
+      "dev": true
+    },
+    "node_modules/emojis-list": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz",
+      "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=",
+      "dev": true,
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz",
+      "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.4.0"
+      }
+    },
+    "node_modules/enhanced-resolve": {
+      "version": "4.5.0",
+      "resolved": "https://registry.nlark.com/enhanced-resolve/download/enhanced-resolve-4.5.0.tgz",
+      "integrity": "sha1-Lzz9hNvjtIfxjy2y7x4GSlccpew=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.5.0",
+        "tapable": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/enhanced-resolve/node_modules/memory-fs": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.5.0.tgz",
+      "integrity": "sha1-MkwBKIuIZSlm0WHbd4OHIIRajjw=",
+      "dev": true,
+      "dependencies": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4.3.0 <5.0.0 || >=5.10"
+      }
+    },
+    "node_modules/entities": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.2.0.tgz",
+      "integrity": "sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=",
+      "dev": true
+    },
+    "node_modules/errno": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz",
+      "integrity": "sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=",
+      "dev": true,
+      "dependencies": {
+        "prr": "~1.0.1"
+      },
+      "bin": {
+        "errno": "cli.js"
+      }
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz",
+      "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=",
+      "dev": true,
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/error-stack-parser": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.6.tgz?cache=0&sync_timestamp=1578288503034&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ferror-stack-parser%2Fdownload%2Ferror-stack-parser-2.0.6.tgz",
+      "integrity": "sha1-WpmnB716TFinl5AtSNgoA+3mqtg=",
+      "dev": true,
+      "dependencies": {
+        "stackframe": "^1.1.1"
+      }
+    },
+    "node_modules/es-abstract": {
+      "version": "1.18.0",
+      "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.18.0.tgz",
+      "integrity": "sha1-q4CzWe7Lft5MKYAAOQvFrD7HtaQ=",
+      "dev": true,
+      "dependencies": {
+        "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.2",
+        "is-string": "^1.0.5",
+        "object-inspect": "^1.9.0",
+        "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.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npm.taobao.org/escalade/download/escalade-3.1.1.tgz?cache=0&sync_timestamp=1602567224085&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescalade%2Fdownload%2Fescalade-3.1.1.tgz",
+      "integrity": "sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz?cache=0&sync_timestamp=1618677243201&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/eslint": {
+      "version": "6.8.0",
+      "resolved": "https://registry.nlark.com/eslint/download/eslint-6.8.0.tgz?cache=0&sync_timestamp=1620440445769&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feslint%2Fdownload%2Feslint-6.8.0.tgz",
+      "integrity": "sha1-YiYtZylzn5J1cjgkMC+yJ8jJP/s=",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "ajv": "^6.10.0",
+        "chalk": "^2.1.0",
+        "cross-spawn": "^6.0.5",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "eslint-scope": "^5.0.0",
+        "eslint-utils": "^1.4.3",
+        "eslint-visitor-keys": "^1.1.0",
+        "espree": "^6.1.2",
+        "esquery": "^1.0.1",
+        "esutils": "^2.0.2",
+        "file-entry-cache": "^5.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob-parent": "^5.0.0",
+        "globals": "^12.1.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "inquirer": "^7.0.0",
+        "is-glob": "^4.0.0",
+        "js-yaml": "^3.13.1",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.3.0",
+        "lodash": "^4.17.14",
+        "minimatch": "^3.0.4",
+        "mkdirp": "^0.5.1",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.8.3",
+        "progress": "^2.0.0",
+        "regexpp": "^2.0.1",
+        "semver": "^6.1.2",
+        "strip-ansi": "^5.2.0",
+        "strip-json-comments": "^3.0.1",
+        "table": "^5.2.3",
+        "text-table": "^0.2.0",
+        "v8-compile-cache": "^2.0.3"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+      }
+    },
+    "node_modules/eslint-config-standard": {
+      "version": "14.1.1",
+      "resolved": "https://registry.npm.taobao.org/eslint-config-standard/download/eslint-config-standard-14.1.1.tgz?cache=0&sync_timestamp=1605664520005&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-config-standard%2Fdownload%2Feslint-config-standard-14.1.1.tgz",
+      "integrity": "sha1-gwqOROeu995nRkl5rQa0BgJsVuo=",
+      "dev": true,
+      "peerDependencies": {
+        "eslint": ">=6.2.2",
+        "eslint-plugin-import": ">=2.18.0",
+        "eslint-plugin-node": ">=9.1.0",
+        "eslint-plugin-promise": ">=4.2.1",
+        "eslint-plugin-standard": ">=4.0.0"
+      }
+    },
+    "node_modules/eslint-import-resolver-node": {
+      "version": "0.3.4",
+      "resolved": "https://registry.npm.taobao.org/eslint-import-resolver-node/download/eslint-import-resolver-node-0.3.4.tgz?cache=0&sync_timestamp=1592327223893&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-import-resolver-node%2Fdownload%2Feslint-import-resolver-node-0.3.4.tgz",
+      "integrity": "sha1-hf+oGULCUBLYIxCW3fZ5wDBCxxc=",
+      "dev": true,
+      "dependencies": {
+        "debug": "^2.6.9",
+        "resolve": "^1.13.1"
+      }
+    },
+    "node_modules/eslint-import-resolver-node/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/eslint-import-resolver-node/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/eslint-import-resolver-webpack": {
+      "version": "0.12.2",
+      "resolved": "https://registry.nlark.com/eslint-import-resolver-webpack/download/eslint-import-resolver-webpack-0.12.2.tgz",
+      "integrity": "sha1-dp6GzQx1KhU2wZhV69kKoUzjhO4=",
+      "dev": true,
+      "dependencies": {
+        "array-find": "^1.0.0",
+        "debug": "^2.6.9",
+        "enhanced-resolve": "^0.9.1",
+        "find-root": "^1.1.0",
+        "has": "^1.0.3",
+        "interpret": "^1.2.0",
+        "lodash": "^4.17.15",
+        "node-libs-browser": "^1.0.0 || ^2.0.0",
+        "resolve": "^1.13.1",
+        "semver": "^5.7.1"
+      },
+      "peerDependencies": {
+        "eslint-plugin-import": ">=1.4.0",
+        "webpack": ">=1.11.0"
+      }
+    },
+    "node_modules/eslint-import-resolver-webpack/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/eslint-import-resolver-webpack/node_modules/enhanced-resolve": {
+      "version": "0.9.1",
+      "resolved": "https://registry.nlark.com/enhanced-resolve/download/enhanced-resolve-0.9.1.tgz",
+      "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.2.0",
+        "tapable": "^0.1.8"
+      },
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/eslint-import-resolver-webpack/node_modules/memory-fs": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.2.0.tgz",
+      "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=",
+      "dev": true
+    },
+    "node_modules/eslint-import-resolver-webpack/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/eslint-import-resolver-webpack/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+      "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/eslint-import-resolver-webpack/node_modules/tapable": {
+      "version": "0.1.10",
+      "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-0.1.10.tgz?cache=0&sync_timestamp=1607088905649&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftapable%2Fdownload%2Ftapable-0.1.10.tgz",
+      "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/eslint-loader": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/eslint-loader/download/eslint-loader-2.2.1.tgz?cache=0&sync_timestamp=1601214436656&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-loader%2Fdownload%2Feslint-loader-2.2.1.tgz",
+      "integrity": "sha1-KLnBLaVAV68IReKmEScBova/gzc=",
+      "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin",
+      "dev": true,
+      "dependencies": {
+        "loader-fs-cache": "^1.0.0",
+        "loader-utils": "^1.0.2",
+        "object-assign": "^4.0.1",
+        "object-hash": "^1.1.4",
+        "rimraf": "^2.6.1"
+      },
+      "peerDependencies": {
+        "eslint": ">=1.6.0 <7.0.0",
+        "webpack": ">=2.0.0 <5.0.0"
+      }
+    },
+    "node_modules/eslint-module-utils": {
+      "version": "2.6.1",
+      "resolved": "https://registry.nlark.com/eslint-module-utils/download/eslint-module-utils-2.6.1.tgz?cache=0&sync_timestamp=1620972429711&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feslint-module-utils%2Fdownload%2Feslint-module-utils-2.6.1.tgz",
+      "integrity": "sha1-tRvh5HPdDeHF6mOOIkKcJJDqgjM=",
+      "dev": true,
+      "dependencies": {
+        "debug": "^3.2.7",
+        "pkg-dir": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-module-utils/node_modules/debug": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.7.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz",
+      "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/eslint-module-utils/node_modules/find-up": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-2.1.0.tgz",
+      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-module-utils/node_modules/locate-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-module-utils/node_modules/p-limit": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz?cache=0&sync_timestamp=1606290276843&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-1.3.0.tgz",
+      "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-module-utils/node_modules/p-locate": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-module-utils/node_modules/p-try": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-module-utils/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-module-utils/node_modules/pkg-dir": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz?cache=0&sync_timestamp=1602859045787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-2.0.0.tgz",
+      "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-es": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/eslint-plugin-es/download/eslint-plugin-es-3.0.1.tgz?cache=0&sync_timestamp=1605769812592&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-es%2Fdownload%2Feslint-plugin-es-3.0.1.tgz",
+      "integrity": "sha1-dafN/czdwFiZNK7rOEF18iHFeJM=",
+      "dev": true,
+      "dependencies": {
+        "eslint-utils": "^2.0.0",
+        "regexpp": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      },
+      "peerDependencies": {
+        "eslint": ">=4.19.1"
+      }
+    },
+    "node_modules/eslint-plugin-es/node_modules/eslint-utils": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/eslint-utils/download/eslint-utils-2.1.0.tgz",
+      "integrity": "sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=",
+      "dev": true,
+      "dependencies": {
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/eslint-plugin-es/node_modules/regexpp": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-3.1.0.tgz",
+      "integrity": "sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/eslint-plugin-import": {
+      "version": "2.23.1",
+      "resolved": "https://registry.nlark.com/eslint-plugin-import/download/eslint-plugin-import-2.23.1.tgz",
+      "integrity": "sha1-wT/97p9XIOlDL6fomcIi+iWXhjY=",
+      "dev": true,
+      "dependencies": {
+        "array-includes": "^3.1.3",
+        "array.prototype.flat": "^1.2.4",
+        "contains-path": "^1.0.0",
+        "debug": "^2.6.9",
+        "doctrine": "^2.1.0",
+        "eslint-import-resolver-node": "^0.3.4",
+        "eslint-module-utils": "^2.6.1",
+        "find-up": "^2.0.0",
+        "has": "^1.0.3",
+        "is-core-module": "^2.4.0",
+        "minimatch": "^3.0.4",
+        "object.values": "^1.1.3",
+        "pkg-up": "^2.0.0",
+        "read-pkg-up": "^3.0.0",
+        "resolve": "^1.20.0",
+        "tsconfig-paths": "^3.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/doctrine": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-2.1.0.tgz",
+      "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=",
+      "dev": true,
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/find-up": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-2.1.0.tgz",
+      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/locate-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/eslint-plugin-import/node_modules/p-limit": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz?cache=0&sync_timestamp=1606290276843&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-1.3.0.tgz",
+      "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/p-locate": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/p-try": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-node": {
+      "version": "11.1.0",
+      "resolved": "https://registry.npm.taobao.org/eslint-plugin-node/download/eslint-plugin-node-11.1.0.tgz?cache=0&sync_timestamp=1585396050025&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-node%2Fdownload%2Feslint-plugin-node-11.1.0.tgz",
+      "integrity": "sha1-yVVEQW7kraJnQKMEdO78VALcZx0=",
+      "dev": true,
+      "dependencies": {
+        "eslint-plugin-es": "^3.0.0",
+        "eslint-utils": "^2.0.0",
+        "ignore": "^5.1.1",
+        "minimatch": "^3.0.4",
+        "resolve": "^1.10.1",
+        "semver": "^6.1.0"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      },
+      "peerDependencies": {
+        "eslint": ">=5.16.0"
+      }
+    },
+    "node_modules/eslint-plugin-node/node_modules/eslint-utils": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/eslint-utils/download/eslint-utils-2.1.0.tgz",
+      "integrity": "sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=",
+      "dev": true,
+      "dependencies": {
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/eslint-plugin-node/node_modules/ignore": {
+      "version": "5.1.8",
+      "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-5.1.8.tgz?cache=0&sync_timestamp=1590809289115&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-5.1.8.tgz",
+      "integrity": "sha1-8VCotQo0KJsz4i9YiavU2AFvDlc=",
+      "dev": true,
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/eslint-plugin-promise": {
+      "version": "4.3.1",
+      "resolved": "https://registry.nlark.com/eslint-plugin-promise/download/eslint-plugin-promise-4.3.1.tgz",
+      "integrity": "sha1-YUhd8qNZ4DFJ/a/AposOAwrSrEU=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/eslint-plugin-standard": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/eslint-plugin-standard/download/eslint-plugin-standard-4.1.0.tgz?cache=0&sync_timestamp=1606091897901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-standard%2Fdownload%2Feslint-plugin-standard-4.1.0.tgz",
+      "integrity": "sha1-DDvzpn6FP4u7xYD7SUX78W9Bt8U=",
+      "dev": true,
+      "peerDependencies": {
+        "eslint": ">=5.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-vue": {
+      "version": "6.2.2",
+      "resolved": "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-6.2.2.tgz?cache=0&sync_timestamp=1618213533393&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-6.2.2.tgz",
+      "integrity": "sha1-J/7NmjokeJsPER7N1UCp5WGY4P4=",
+      "dev": true,
+      "dependencies": {
+        "natural-compare": "^1.4.0",
+        "semver": "^5.6.0",
+        "vue-eslint-parser": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.10"
+      },
+      "peerDependencies": {
+        "eslint": "^5.0.0 || ^6.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-vue/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+      "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/eslint-scope": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz?cache=0&sync_timestamp=1599933651660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-4.0.3.tgz",
+      "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=",
+      "dev": true,
+      "dependencies": {
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/eslint-utils": {
+      "version": "1.4.3",
+      "resolved": "https://registry.nlark.com/eslint-utils/download/eslint-utils-1.4.3.tgz",
+      "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=",
+      "dev": true,
+      "dependencies": {
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/eslint-visitor-keys": {
+      "version": "1.3.0",
+      "resolved": "https://registry.nlark.com/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz?cache=0&sync_timestamp=1620088667316&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.3.0.tgz",
+      "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint/node_modules/eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.1.tgz?cache=0&sync_timestamp=1599933651660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-5.1.1.tgz",
+      "integrity": "sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=",
+      "dev": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/eslint/node_modules/globals": {
+      "version": "12.4.0",
+      "resolved": "https://registry.npm.taobao.org/globals/download/globals-12.4.0.tgz?cache=0&sync_timestamp=1617957623227&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-12.4.0.tgz",
+      "integrity": "sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.8.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/eslint/node_modules/import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.3.0.tgz?cache=0&sync_timestamp=1608469561643&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.3.0.tgz",
+      "integrity": "sha1-NxYsJfy566oublPVtNiM4X2eDCs=",
+      "dev": true,
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/eslint/node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz",
+      "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/eslint/node_modules/type-fest": {
+      "version": "0.8.1",
+      "resolved": "https://registry.nlark.com/type-fest/download/type-fest-0.8.1.tgz",
+      "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/espree": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz?cache=0&sync_timestamp=1607143966756&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-6.2.1.tgz",
+      "integrity": "sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o=",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^7.1.1",
+        "acorn-jsx": "^5.2.0",
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/espree/node_modules/acorn": {
+      "version": "7.4.1",
+      "resolved": "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1620134123724&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-7.4.1.tgz",
+      "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz",
+      "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=",
+      "dev": true,
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/esquery": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.4.0.tgz?cache=0&sync_timestamp=1612565616129&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesquery%2Fdownload%2Fesquery-1.4.0.tgz",
+      "integrity": "sha1-IUj/w4uC6McFff7UhCWz5h8PJKU=",
+      "dev": true,
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/esquery/node_modules/estraverse": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz?cache=0&sync_timestamp=1596642998635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.2.0.tgz",
+      "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.3.0.tgz?cache=0&sync_timestamp=1598898255610&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesrecurse%2Fdownload%2Fesrecurse-4.3.0.tgz",
+      "integrity": "sha1-eteWTWeauyi+5yzsY3WLHF0smSE=",
+      "dev": true,
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse/node_modules/estraverse": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz?cache=0&sync_timestamp=1596642998635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.2.0.tgz",
+      "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz?cache=0&sync_timestamp=1596642998635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-4.3.0.tgz",
+      "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz",
+      "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/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=1606361475552&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fevent-pubsub%2Fdownload%2Fevent-pubsub-4.3.0.tgz",
+      "integrity": "sha1-9o2Ba8KfHsAsU53FjI3UDOcss24=",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.7.tgz?cache=0&sync_timestamp=1598517728928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-4.0.7.tgz",
+      "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=",
+      "dev": true
+    },
+    "node_modules/events": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npm.taobao.org/events/download/events-3.3.0.tgz?cache=0&sync_timestamp=1614446722579&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fevents%2Fdownload%2Fevents-3.3.0.tgz",
+      "integrity": "sha1-Mala0Kkk4tLEGagTrrLE6HjqdAA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.x"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "original": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/evp_bytestokey": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz",
+      "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=",
+      "dev": true,
+      "dependencies": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "node_modules/execa": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1606971018065&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz",
+      "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/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,
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz",
+      "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/express/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/express/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/express/node_modules/qs": {
+      "version": "6.7.0",
+      "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1616385328325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz",
+      "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/extend": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz",
+      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=",
+      "dev": true
+    },
+    "node_modules/extend-shallow": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "dev": true,
+      "dependencies": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extend-shallow/node_modules/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,
+      "dependencies": {
+        "is-plain-object": "^2.0.4"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/external-editor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz",
+      "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=",
+      "dev": true,
+      "dependencies": {
+        "chardet": "^0.7.0",
+        "iconv-lite": "^0.4.24",
+        "tmp": "^0.0.33"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/extglob": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz",
+      "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/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,
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/is-accessor-descriptor": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+      "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/is-data-descriptor": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+      "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/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,
+      "dependencies": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extsprintf": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "dev": true,
+      "engines": [
+        "node >=0.6.0"
+      ]
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz?cache=0&sync_timestamp=1591599697571&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-3.1.3.tgz",
+      "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=",
+      "dev": true
+    },
+    "node_modules/fast-glob": {
+      "version": "2.2.7",
+      "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&sync_timestamp=1610876505711&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz",
+      "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/fast-glob/node_modules/glob-parent": {
+      "version": "3.1.0",
+      "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      }
+    },
+    "node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+      "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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?cache=0&sync_timestamp=1576340291001&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-json-stable-stringify%2Fdownload%2Ffast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=",
+      "dev": true
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+      "dev": true
+    },
+    "node_modules/fastq": {
+      "version": "1.11.0",
+      "resolved": "https://registry.npm.taobao.org/fastq/download/fastq-1.11.0.tgz?cache=0&sync_timestamp=1614183822444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffastq%2Fdownload%2Ffastq-1.11.0.tgz",
+      "integrity": "sha1-u5+5VaBxMKkY62PB9RYcwypdCFg=",
+      "dev": true,
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/faye-websocket": {
+      "version": "0.11.3",
+      "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz",
+      "integrity": "sha1-XA6aiWjokSwoZjn96XeosgnyUI4=",
+      "dev": true,
+      "dependencies": {
+        "websocket-driver": ">=0.5.1"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/figures": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npm.taobao.org/figures/download/figures-3.2.0.tgz?cache=0&sync_timestamp=1581865349068&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-3.2.0.tgz",
+      "integrity": "sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=",
+      "dev": true,
+      "dependencies": {
+        "escape-string-regexp": "^1.0.5"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/file-entry-cache": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz?cache=0&sync_timestamp=1613794272556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-entry-cache%2Fdownload%2Ffile-entry-cache-5.0.1.tgz",
+      "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=",
+      "dev": true,
+      "dependencies": {
+        "flat-cache": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/file-loader": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npm.taobao.org/file-loader/download/file-loader-4.3.0.tgz?cache=0&sync_timestamp=1603816843418&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-loader%2Fdownload%2Ffile-loader-4.3.0.tgz",
+      "integrity": "sha1-eA8ED3KbPRgBnyBgX3I+hEuKWK8=",
+      "dev": true,
+      "dependencies": {
+        "loader-utils": "^1.2.3",
+        "schema-utils": "^2.5.0"
+      },
+      "engines": {
+        "node": ">= 8.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/filesize": {
+      "version": "3.6.1",
+      "resolved": "https://registry.nlark.com/filesize/download/filesize-3.6.1.tgz",
+      "integrity": "sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
+      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+      "dev": true,
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fill-range/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/finalhandler/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/finalhandler/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^3.0.2",
+        "pkg-dir": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-root": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/find-root/download/find-root-1.1.0.tgz",
+      "integrity": "sha1-q8/Iunb3CMQql7PWhbfpRQv7nOQ=",
+      "dev": true
+    },
+    "node_modules/find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-4.1.0.tgz",
+      "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/flat-cache": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz?cache=0&sync_timestamp=1604831838291&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflat-cache%2Fdownload%2Fflat-cache-2.0.1.tgz",
+      "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=",
+      "dev": true,
+      "dependencies": {
+        "flatted": "^2.0.0",
+        "rimraf": "2.6.3",
+        "write": "1.0.3"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/flat-cache/node_modules/rimraf": {
+      "version": "2.6.3",
+      "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz?cache=0&sync_timestamp=1581229865753&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.6.3.tgz",
+      "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/flatted": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-2.0.2.tgz?cache=0&sync_timestamp=1611059462226&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatted%2Fdownload%2Fflatted-2.0.2.tgz",
+      "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.3.6"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "version": "1.14.1",
+      "resolved": "https://registry.nlark.com/follow-redirects/download/follow-redirects-1.14.1.tgz?cache=0&sync_timestamp=1620555292056&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.14.1.tgz",
+      "integrity": "sha1-2RFN7Qoc/dM04WTmZirQK/2R/0M=",
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 0.12"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz",
+      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fragment-cache": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
+      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "dev": true,
+      "dependencies": {
+        "map-cache": "^0.2.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=6 <7 || >=8"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
+      }
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.3.2.tgz",
+      "integrity": "sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/fstream": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npm.taobao.org/fstream/download/fstream-1.0.12.tgz",
+      "integrity": "sha1-Touo7i1Ivk99DeUFRVVI6uWTIEU=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "inherits": "~2.0.0",
+        "mkdirp": ">=0.5 0",
+        "rimraf": "2"
+      },
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/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=",
+      "dev": true
+    },
+    "node_modules/functional-red-black-tree": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz",
+      "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+      "dev": true
+    },
+    "node_modules/fuzzysearch": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/fuzzysearch/download/fuzzysearch-1.0.3.tgz",
+      "integrity": "sha1-3/yA9tawQiPyImqnndGUIxCW0Ag="
+    },
+    "node_modules/gauge": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz",
+      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+      "dev": true,
+      "dependencies": {
+        "aproba": "^1.0.3",
+        "console-control-strings": "^1.0.0",
+        "has-unicode": "^2.0.0",
+        "object-assign": "^4.1.0",
+        "signal-exit": "^3.0.0",
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wide-align": "^1.1.0"
+      }
+    },
+    "node_modules/gauge/node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/gauge/node_modules/is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz",
+      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+      "dev": true,
+      "dependencies": {
+        "number-is-nan": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/gauge/node_modules/string-width": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz?cache=0&sync_timestamp=1618558823901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-1.0.2.tgz",
+      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+      "dev": true,
+      "dependencies": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/gauge/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/gaze": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/gaze/download/gaze-1.1.3.tgz",
+      "integrity": "sha1-xEFzPhO5J6yMD/C0w7Az8ogSkko=",
+      "dev": true,
+      "dependencies": {
+        "globule": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.2.tgz?cache=0&sync_timestamp=1603831745943&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgensync%2Fdownload%2Fgensync-1.0.0-beta.2.tgz",
+      "integrity": "sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA=",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/get-intrinsic/download/get-intrinsic-1.1.1.tgz?cache=0&sync_timestamp=1612364352840&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-intrinsic%2Fdownload%2Fget-intrinsic-1.1.1.tgz",
+      "integrity": "sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y=",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1"
+      }
+    },
+    "node_modules/get-own-enumerable-property-symbols": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npm.taobao.org/get-own-enumerable-property-symbols/download/get-own-enumerable-property-symbols-3.0.2.tgz",
+      "integrity": "sha1-tf3nfyLL4185C04ImSLFC85u9mQ=",
+      "dev": true
+    },
+    "node_modules/get-stdin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz?cache=0&sync_timestamp=1618557624027&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stdin%2Fdownload%2Fget-stdin-4.0.1.tgz",
+      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-4.1.0.tgz",
+      "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=",
+      "dev": true,
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/get-value": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz",
+      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/getpass": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dev": true,
+      "dependencies": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.1.7",
+      "resolved": "https://registry.nlark.com/glob/download/glob-7.1.7.tgz?cache=0&sync_timestamp=1620337382269&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob%2Fdownload%2Fglob-7.1.7.tgz",
+      "integrity": "sha1-Oxk+kjPwHULQs/eClLvutBj5SpA=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-5.1.2.tgz",
+      "integrity": "sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/glob-to-regexp": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz",
+      "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
+      "dev": true
+    },
+    "node_modules/globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz?cache=0&sync_timestamp=1617957623227&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-11.12.0.tgz",
+      "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/globby": {
+      "version": "9.2.0",
+      "resolved": "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz?cache=0&sync_timestamp=1616407139482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-9.2.0.tgz",
+      "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/globule": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npm.taobao.org/globule/download/globule-1.3.2.tgz?cache=0&sync_timestamp=1591644214501&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobule%2Fdownload%2Fglobule-1.3.2.tgz",
+      "integrity": "sha1-2L3Z6eTu+PluJFmZpd7n612FKcQ=",
+      "dev": true,
+      "dependencies": {
+        "glob": "~7.1.1",
+        "lodash": "~4.17.10",
+        "minimatch": "~3.0.2"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/good-listener": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npm.taobao.org/good-listener/download/good-listener-1.2.2.tgz",
+      "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
+      "dependencies": {
+        "delegate": "^3.1.2"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.6",
+      "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.6.tgz",
+      "integrity": "sha1-/wQLKwhTsjw9MQJ1I3BvGIXXa+4=",
+      "dev": true
+    },
+    "node_modules/gzip-size": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz?cache=0&sync_timestamp=1605523125680&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgzip-size%2Fdownload%2Fgzip-size-5.1.1.tgz",
+      "integrity": "sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=",
+      "dev": true,
+      "dependencies": {
+        "duplexer": "^0.1.1",
+        "pify": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/har-schema": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/har-validator": {
+      "version": "5.1.5",
+      "resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.5.tgz?cache=0&sync_timestamp=1596082584903&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhar-validator%2Fdownload%2Fhar-validator-5.1.5.tgz",
+      "integrity": "sha1-HwgDufjLIMD6E4It8ezds2veHv0=",
+      "deprecated": "this library is no longer supported",
+      "dev": true,
+      "dependencies": {
+        "ajv": "^6.12.3",
+        "har-schema": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz",
+      "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/has-ansi": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz",
+      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-ansi/node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-bigints": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/has-bigints/download/has-bigints-1.0.1.tgz?cache=0&sync_timestamp=1615461427142&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-bigints%2Fdownload%2Fhas-bigints-1.0.1.tgz",
+      "integrity": "sha1-ZP5qywIGc+O3jbA1pa9pqp0HsRM=",
+      "dev": true
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.2.tgz?cache=0&sync_timestamp=1614443557459&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.2.tgz",
+      "integrity": "sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/has-unicode": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz",
+      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+      "dev": true
+    },
+    "node_modules/has-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz",
+      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "dev": true,
+      "dependencies": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-values/node_modules/kind-of": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz",
+      "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/hash-base/node_modules/readable-stream": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1581624324274&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz",
+      "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/hash-base/node_modules/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
+    },
+    "node_modules/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
+    },
+    "node_modules/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,
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "node_modules/he": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz",
+      "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=",
+      "dev": true,
+      "bin": {
+        "he": "bin/he"
+      }
+    },
+    "node_modules/hex-color-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz",
+      "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=",
+      "dev": true
+    },
+    "node_modules/highlight.js": {
+      "version": "10.7.2",
+      "resolved": "https://registry.nlark.com/highlight.js/download/highlight.js-10.7.2.tgz",
+      "integrity": "sha1-iTGbhh7cZsSIVO0ebaIeqJ+Ec2A=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/hmac-drbg": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz",
+      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+      "dev": true,
+      "dependencies": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "node_modules/hoopy": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz",
+      "integrity": "sha1-YJIH1mEQADOpqUAq096mdzgcGx0=",
+      "dev": true,
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/hosted-git-info": {
+      "version": "2.8.9",
+      "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.9.tgz?cache=0&sync_timestamp=1617826541967&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.9.tgz",
+      "integrity": "sha1-3/wL+aIcAiCQkPKqaUKeFBTa8/k=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "obuf": "^1.0.0",
+        "readable-stream": "^2.0.1",
+        "wbuf": "^1.1.0"
+      }
+    },
+    "node_modules/hsl-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz",
+      "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/html-entities": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npm.taobao.org/html-entities/download/html-entities-1.4.0.tgz?cache=0&sync_timestamp=1617031553039&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-entities%2Fdownload%2Fhtml-entities-1.4.0.tgz",
+      "integrity": "sha1-z70bAdKvr5rcobEK59/6uYxx0tw=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "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"
+      },
+      "bin": {
+        "html-minifier": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/html-minifier/node_modules/commander": {
+      "version": "2.17.1",
+      "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1616364009866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz",
+      "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=",
+      "dev": true
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/html-webpack-plugin": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz?cache=0&sync_timestamp=1615296040860&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-webpack-plugin%2Fdownload%2Fhtml-webpack-plugin-3.2.0.tgz",
+      "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
+      "deprecated": "3.x is no longer supported",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=6.9"
+      },
+      "peerDependencies": {
+        "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0"
+      }
+    },
+    "node_modules/html-webpack-plugin/node_modules/big.js": {
+      "version": "3.2.0",
+      "resolved": "https://registry.nlark.com/big.js/download/big.js-3.2.0.tgz?cache=0&sync_timestamp=1620132748267&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbig.js%2Fdownload%2Fbig.js-3.2.0.tgz",
+      "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/html-webpack-plugin/node_modules/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,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/html-webpack-plugin/node_modules/json5": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz",
+      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+      "dev": true,
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/html-webpack-plugin/node_modules/loader-utils": {
+      "version": "0.2.17",
+      "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz?cache=0&sync_timestamp=1584445207623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-utils%2Fdownload%2Floader-utils-0.2.17.tgz",
+      "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+      "dev": true,
+      "dependencies": {
+        "big.js": "^3.1.3",
+        "emojis-list": "^2.0.0",
+        "json5": "^0.5.0",
+        "object-assign": "^4.0.1"
+      }
+    },
+    "node_modules/html-webpack-plugin/node_modules/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,
+      "dependencies": {
+        "define-properties": "^1.1.2",
+        "object.getownpropertydescriptors": "^2.0.3"
+      }
+    },
+    "node_modules/htmlparser2": {
+      "version": "3.10.1",
+      "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz?cache=0&sync_timestamp=1617914940336&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.1.tgz",
+      "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=",
+      "dev": true,
+      "dependencies": {
+        "domelementtype": "^1.3.1",
+        "domhandler": "^2.3.0",
+        "domutils": "^1.5.1",
+        "entities": "^1.1.1",
+        "inherits": "^2.0.1",
+        "readable-stream": "^3.1.1"
+      }
+    },
+    "node_modules/htmlparser2/node_modules/entities": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz",
+      "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=",
+      "dev": true
+    },
+    "node_modules/htmlparser2/node_modules/readable-stream": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1581624324274&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz",
+      "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/http-deceiver": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz",
+      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+      "dev": true
+    },
+    "node_modules/http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz?cache=0&sync_timestamp=1593407676624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.2.tgz",
+      "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
+      "dev": true,
+      "dependencies": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/http-errors/node_modules/inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/http-proxy": {
+      "version": "1.18.1",
+      "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-proxy%2Fdownload%2Fhttp-proxy-1.18.1.tgz",
+      "integrity": "sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=",
+      "dev": true,
+      "dependencies": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/http-proxy-middleware": {
+      "version": "1.3.1",
+      "resolved": "https://registry.nlark.com/http-proxy-middleware/download/http-proxy-middleware-1.3.1.tgz",
+      "integrity": "sha1-Q3ANbZ7st0Gb8IahKND3IF2etmU=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz",
+      "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=",
+      "dev": true,
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz",
+      "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=",
+      "dev": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/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,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/micromatch": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-4.0.4.tgz?cache=0&sync_timestamp=1618054842871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-4.0.4.tgz",
+      "integrity": "sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=",
+      "dev": true,
+      "dependencies": {
+        "braces": "^3.0.1",
+        "picomatch": "^2.2.3"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz",
+      "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/http-signature": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz?cache=0&sync_timestamp=1600868452638&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-signature%2Fdownload%2Fhttp-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "dev": true,
+      "dependencies": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      },
+      "engines": {
+        "node": ">=0.8",
+        "npm": ">=1.3.7"
+      }
+    },
+    "node_modules/https-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz",
+      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+      "dev": true
+    },
+    "node_modules/human-signals": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz?cache=0&sync_timestamp=1584198662293&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhuman-signals%2Fdownload%2Fhuman-signals-1.1.1.tgz",
+      "integrity": "sha1-xbHNFPUK6uCatsWf5jujOV/k36M=",
+      "dev": true,
+      "engines": {
+        "node": ">=8.12.0"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1594184264130&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz",
+      "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
+      "dev": true,
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "postcss": "^7.0.14"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.2.1.tgz?cache=0&sync_timestamp=1603838208740&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fieee754%2Fdownload%2Fieee754-1.2.1.tgz",
+      "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=",
+      "dev": true
+    },
+    "node_modules/iferr": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz",
+      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+      "dev": true
+    },
+    "node_modules/ignore": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz?cache=0&sync_timestamp=1590809289115&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-4.0.6.tgz",
+      "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=",
+      "dev": true,
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/import-cwd": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz",
+      "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+      "dev": true,
+      "dependencies": {
+        "import-from": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "caller-path": "^2.0.0",
+        "resolve-from": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-from": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz",
+      "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+      "dev": true,
+      "dependencies": {
+        "resolve-from": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-local": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz",
+      "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=",
+      "dev": true,
+      "dependencies": {
+        "pkg-dir": "^3.0.0",
+        "resolve-cwd": "^2.0.0"
+      },
+      "bin": {
+        "import-local-fixture": "fixtures/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/import-local/node_modules/find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz",
+      "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/import-local/node_modules/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,
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/import-local/node_modules/p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+      "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/import-local/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-local/node_modules/pkg-dir": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz?cache=0&sync_timestamp=1602859045787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-3.0.0.tgz",
+      "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz",
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/in-publish": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/in-publish/download/in-publish-2.0.1.tgz?cache=0&sync_timestamp=1584388407299&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fin-publish%2Fdownload%2Fin-publish-2.0.1.tgz",
+      "integrity": "sha1-lIsaU1yAMFYc6lIvc/ePS+NX4Aw=",
+      "dev": true,
+      "bin": {
+        "in-install": "in-install.js",
+        "in-publish": "in-publish.js",
+        "not-in-install": "not-in-install.js",
+        "not-in-publish": "not-in-publish.js"
+      }
+    },
+    "node_modules/indent-string": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-4.0.0.tgz?cache=0&sync_timestamp=1618679561483&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Findent-string%2Fdownload%2Findent-string-4.0.0.tgz",
+      "integrity": "sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/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
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz",
+      "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=",
+      "dev": true
+    },
+    "node_modules/inquirer": {
+      "version": "7.3.3",
+      "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-7.3.3.tgz",
+      "integrity": "sha1-BNF2sq8Er8FXqD/XwQDpjuCq0AM=",
+      "dev": true,
+      "dependencies": {
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.1.0",
+        "cli-cursor": "^3.1.0",
+        "cli-width": "^3.0.0",
+        "external-editor": "^3.0.3",
+        "figures": "^3.0.0",
+        "lodash": "^4.17.19",
+        "mute-stream": "0.0.8",
+        "run-async": "^2.4.0",
+        "rxjs": "^6.6.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0",
+        "through": "^2.3.6"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/inquirer/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
+      "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inquirer/node_modules/chalk": {
+      "version": "4.1.1",
+      "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz",
+      "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/inquirer/node_modules/cli-cursor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz",
+      "integrity": "sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=",
+      "dev": true,
+      "dependencies": {
+        "restore-cursor": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inquirer/node_modules/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,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/inquirer/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
+      "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+      "dev": true
+    },
+    "node_modules/inquirer/node_modules/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,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inquirer/node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1617823583529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz",
+      "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/inquirer/node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz",
+      "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/inquirer/node_modules/restore-cursor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz",
+      "integrity": "sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=",
+      "dev": true,
+      "dependencies": {
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inquirer/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1618560959124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
+      "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "default-gateway": "^4.2.0",
+        "ipaddr.js": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/internal-ip/node_modules/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=1610365857779&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-4.2.0.tgz",
+      "integrity": "sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=",
+      "dev": true,
+      "dependencies": {
+        "execa": "^1.0.0",
+        "ip-regex": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/interpret": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npm.taobao.org/interpret/download/interpret-1.4.0.tgz?cache=0&sync_timestamp=1591167206134&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finterpret%2Fdownload%2Finterpret-1.4.0.tgz",
+      "integrity": "sha1-Zlq4vE2iendKQFhOgS4+D6RbGh4=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/ip": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+      "dev": true
+    },
+    "node_modules/ip-regex": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz?cache=0&sync_timestamp=1611327032630&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fip-regex%2Fdownload%2Fip-regex-2.1.0.tgz",
+      "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-absolute-url": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz",
+      "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-accessor-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-arguments": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.1.0.tgz?cache=0&sync_timestamp=1607117337190&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-arguments%2Fdownload%2Fis-arguments-1.1.0.tgz",
+      "integrity": "sha1-YjUwMd++4HzrNGVqa95Z7+yujdk=",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/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
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz",
+      "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "call-bind": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-buffer": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz?cache=0&sync_timestamp=1604429452232&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-buffer%2Fdownload%2Fis-buffer-1.1.6.tgz",
+      "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=",
+      "dev": true
+    },
+    "node_modules/is-callable": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.2.3.tgz",
+      "integrity": "sha1-ix4FALc6HXbHBIdjbzaOUZ3o244=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-ci": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz",
+      "integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=",
+      "dev": true,
+      "dependencies": {
+        "ci-info": "^1.5.0"
+      },
+      "bin": {
+        "is-ci": "bin.js"
+      }
+    },
+    "node_modules/is-color-stop": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz",
+      "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.4.0",
+      "resolved": "https://registry.nlark.com/is-core-module/download/is-core-module-2.4.0.tgz",
+      "integrity": "sha1-jp/I4VAnsBFBgCbpjw5vTYYwXME=",
+      "dev": true,
+      "dependencies": {
+        "has": "^1.0.3"
+      }
+    },
+    "node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-data-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-descriptor/node_modules/kind-of": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz",
+      "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-docker": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/is-docker/download/is-docker-2.2.1.tgz?cache=0&sync_timestamp=1617958843085&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-docker%2Fdownload%2Fis-docker-2.2.1.tgz",
+      "integrity": "sha1-M+6r4jz+hvFL3kQIoCwM+4U6zao=",
+      "dev": true,
+      "bin": {
+        "is-docker": "cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-finite": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-finite/download/is-finite-1.1.0.tgz?cache=0&sync_timestamp=1617779324274&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-finite%2Fdownload%2Fis-finite-1.1.0.tgz",
+      "integrity": "sha1-kEE1x3+0LAZB1qobzbxNqo2ggvM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz",
+      "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-negative-zero": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/is-negative-zero/download/is-negative-zero-2.0.1.tgz?cache=0&sync_timestamp=1607123080624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-negative-zero%2Fdownload%2Fis-negative-zero-2.0.1.tgz",
+      "integrity": "sha1-PedGwY3aIxkkGlNnWQjY92bxHCQ=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-number/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-obj": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-2.0.0.tgz?cache=0&sync_timestamp=1618600378936&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-obj%2Fdownload%2Fis-obj-2.0.0.tgz",
+      "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-observable": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-observable/download/is-observable-1.1.0.tgz?cache=0&sync_timestamp=1596373156794&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-observable%2Fdownload%2Fis-observable-1.1.0.tgz",
+      "integrity": "sha1-s+mGyPRN6VCGfKtUA/WjRlAFl14=",
+      "dev": true,
+      "dependencies": {
+        "symbol-observable": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "is-path-inside": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "path-is-inside": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/is-plain-obj": {
+      "version": "3.0.0",
+      "resolved": "https://registry.nlark.com/is-plain-obj/download/is-plain-obj-3.0.0.tgz",
+      "integrity": "sha1-r28uoUrFpkYYOlu9tbqrvBVq2dc=",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/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=",
+      "dev": true,
+      "dependencies": {
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-promise": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npm.taobao.org/is-promise/download/is-promise-2.2.2.tgz",
+      "integrity": "sha1-OauVnMv5p3TPB597QMeib3YxNfE="
+    },
+    "node_modules/is-regex": {
+      "version": "1.1.3",
+      "resolved": "https://registry.nlark.com/is-regex/download/is-regex-1.1.3.tgz?cache=0&sync_timestamp=1620452285370&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-regex%2Fdownload%2Fis-regex-1.1.3.tgz",
+      "integrity": "sha1-0Cn5r/ZEi5Prvj8z2scVEf3L758=",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-regexp": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-regexp/download/is-regexp-1.0.0.tgz?cache=0&sync_timestamp=1617816524760&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-regexp%2Fdownload%2Fis-regexp-1.0.0.tgz",
+      "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-string": {
+      "version": "1.0.6",
+      "resolved": "https://registry.nlark.com/is-string/download/is-string-1.0.6.tgz?cache=0&sync_timestamp=1620448245505&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-string%2Fdownload%2Fis-string-1.0.6.tgz",
+      "integrity": "sha1-P+XVmS+w2TQE8yWE1LAXmnG1Sl8=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-symbol": {
+      "version": "1.0.4",
+      "resolved": "https://registry.nlark.com/is-symbol/download/is-symbol-1.0.4.tgz?cache=0&sync_timestamp=1620501182675&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-symbol%2Fdownload%2Fis-symbol-1.0.4.tgz",
+      "integrity": "sha1-ptrJO2NbBjymhyI23oiRClevE5w=",
+      "dev": true,
+      "dependencies": {
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/is-utf8": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz",
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+      "dev": true
+    },
+    "node_modules/is-windows": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz",
+      "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-wsl": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz",
+      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "node_modules/isobject": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/isstream": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "dev": true
+    },
+    "node_modules/javascript-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-2.1.0.tgz?cache=0&sync_timestamp=1618360134745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjavascript-stringify%2Fdownload%2Fjavascript-stringify-2.1.0.tgz",
+      "integrity": "sha1-J8dlOb4U2L0Sghmi1zGwkzeQTnk=",
+      "dev": true
+    },
+    "node_modules/js-base64": {
+      "version": "2.6.4",
+      "resolved": "https://registry.npm.taobao.org/js-base64/download/js-base64-2.6.4.tgz?cache=0&sync_timestamp=1604450326544&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-base64%2Fdownload%2Fjs-base64-2.6.4.tgz",
+      "integrity": "sha1-9OaGxd4eofhn28rT1G2WlCjfmMQ=",
+      "dev": true
+    },
+    "node_modules/js-cookie": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.1.tgz",
+      "integrity": "sha1-aeEG3F1YBolFYpAqpbrsN0Tpsrg="
+    },
+    "node_modules/js-file-download": {
+      "version": "0.4.12",
+      "resolved": "https://registry.npm.taobao.org/js-file-download/download/js-file-download-0.4.12.tgz",
+      "integrity": "sha1-EMcO82JVmlsjzb3DvW85nD2R2CE="
+    },
+    "node_modules/js-message": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.7.tgz?cache=0&sync_timestamp=1605129209185&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-message%2Fdownload%2Fjs-message-1.0.7.tgz",
+      "integrity": "sha1-+93QU8ekcCGHG7iyyVOXzBfCDkc=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/js-queue": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.2.tgz?cache=0&sync_timestamp=1605129207324&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-queue%2Fdownload%2Fjs-queue-2.0.2.tgz",
+      "integrity": "sha1-C+WQM4+QOzbHPTPDGIOoIUEs1II=",
+      "dev": true,
+      "dependencies": {
+        "easy-stack": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=1.0.0"
+      }
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.nlark.com/js-tokens/download/js-tokens-4.0.0.tgz",
+      "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=",
+      "dev": true
+    },
+    "node_modules/js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.nlark.com/js-yaml/download/js-yaml-3.14.1.tgz?cache=0&sync_timestamp=1618846844115&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fjs-yaml%2Fdownload%2Fjs-yaml-3.14.1.tgz",
+      "integrity": "sha1-2ugS/bOCX6MGYJqHFzg8UMNqBTc=",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsbn": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "dev": true
+    },
+    "node_modules/jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz?cache=0&sync_timestamp=1603891232110&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsesc%2Fdownload%2Fjsesc-2.5.2.tgz",
+      "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=",
+      "dev": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/json-parse-better-errors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz",
+      "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=",
+      "dev": true
+    },
+    "node_modules/json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npm.taobao.org/json-parse-even-better-errors/download/json-parse-even-better-errors-2.3.1.tgz?cache=0&sync_timestamp=1599064788298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-parse-even-better-errors%2Fdownload%2Fjson-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz?cache=0&sync_timestamp=1607999852153&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema-traverse%2Fdownload%2Fjson-schema-traverse-0.4.1.tgz",
+      "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=",
+      "dev": true
+    },
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/json3": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz",
+      "integrity": "sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E=",
+      "dev": true
+    },
+    "node_modules/json5": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.2.0.tgz",
+      "integrity": "sha1-Lf7+cgxrpSXZ69kJlQ8FFTFsiaM=",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.5"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/jsonfile": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz?cache=0&sync_timestamp=1604161797011&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-4.0.0.tgz",
+      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+      "dev": true,
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "node_modules/jsprim": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "dev": true,
+      "engines": [
+        "node >=0.6.0"
+      ],
+      "dependencies": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "node_modules/killable": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz",
+      "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=",
+      "dev": true
+    },
+    "node_modules/kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
+      "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "chalk": "^2.3.0",
+        "shell-quote": "^1.6.1"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "launch-editor": "^2.2.1"
+      }
+    },
+    "node_modules/levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz",
+      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/lines-and-columns": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz",
+      "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+      "dev": true
+    },
+    "node_modules/lint-staged": {
+      "version": "9.5.0",
+      "resolved": "https://registry.nlark.com/lint-staged/download/lint-staged-9.5.0.tgz?cache=0&sync_timestamp=1620406121591&other_urls=https%3A%2F%2Fregistry.nlark.com%2Flint-staged%2Fdownload%2Flint-staged-9.5.0.tgz",
+      "integrity": "sha1-KQ7GBSUq9kbZt01zoPoRg2KwWjM=",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^2.4.2",
+        "commander": "^2.20.0",
+        "cosmiconfig": "^5.2.1",
+        "debug": "^4.1.1",
+        "dedent": "^0.7.0",
+        "del": "^5.0.0",
+        "execa": "^2.0.3",
+        "listr": "^0.14.3",
+        "log-symbols": "^3.0.0",
+        "micromatch": "^4.0.2",
+        "normalize-path": "^3.0.0",
+        "please-upgrade-node": "^3.1.1",
+        "string-argv": "^0.3.0",
+        "stringify-object": "^3.3.0"
+      },
+      "bin": {
+        "lint-staged": "bin/lint-staged"
+      }
+    },
+    "node_modules/lint-staged/node_modules/@nodelib/fs.stat": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-2.0.4.tgz?cache=0&sync_timestamp=1609074554588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-2.0.4.tgz",
+      "integrity": "sha1-o/LdYbq0O424+hCKEhz//kxnZlU=",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/array-union": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-2.1.0.tgz?cache=0&sync_timestamp=1614624302839&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-union%2Fdownload%2Farray-union-2.1.0.tgz",
+      "integrity": "sha1-t5hCCtvrHego2ErNii4j0+/oXo0=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz",
+      "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=",
+      "dev": true,
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.3.tgz",
+      "integrity": "sha1-9zqFudXUHQRVUcF34ogtSshXKKY=",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/del": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npm.taobao.org/del/download/del-5.1.0.tgz?cache=0&sync_timestamp=1601076882347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdel%2Fdownload%2Fdel-5.1.0.tgz",
+      "integrity": "sha1-2Uh8lONnQQ5u/ykl7ljAyEp1s6c=",
+      "dev": true,
+      "dependencies": {
+        "globby": "^10.0.1",
+        "graceful-fs": "^4.2.2",
+        "is-glob": "^4.0.1",
+        "is-path-cwd": "^2.2.0",
+        "is-path-inside": "^3.0.1",
+        "p-map": "^3.0.0",
+        "rimraf": "^3.0.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/dir-glob": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-3.0.1.tgz",
+      "integrity": "sha1-Vtv3PZkqSpO6FYT0U0Bj/S5BcX8=",
+      "dev": true,
+      "dependencies": {
+        "path-type": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/execa": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/execa/download/execa-2.1.0.tgz?cache=0&sync_timestamp=1606971018065&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-2.1.0.tgz",
+      "integrity": "sha1-5dPs2DfSpg7FDz2nj9OXZ3R7vpk=",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.0",
+        "get-stream": "^5.0.0",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^3.0.0",
+        "onetime": "^5.1.0",
+        "p-finally": "^2.0.0",
+        "signal-exit": "^3.0.2",
+        "strip-final-newline": "^2.0.0"
+      },
+      "engines": {
+        "node": "^8.12.0 || >=9.7.0"
+      }
+    },
+    "node_modules/lint-staged/node_modules/fast-glob": {
+      "version": "3.2.5",
+      "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-3.2.5.tgz?cache=0&sync_timestamp=1610876505711&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-3.2.5.tgz",
+      "integrity": "sha1-eTmvKmVt55pPGQGQPuityqfLlmE=",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.0",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.2",
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz",
+      "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=",
+      "dev": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/get-stream": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-5.2.0.tgz",
+      "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=",
+      "dev": true,
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/globby": {
+      "version": "10.0.2",
+      "resolved": "https://registry.npm.taobao.org/globby/download/globby-10.0.2.tgz?cache=0&sync_timestamp=1616407139482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-10.0.2.tgz",
+      "integrity": "sha1-J3WT50WsqkZGw6tBEonsR6A5JUM=",
+      "dev": true,
+      "dependencies": {
+        "@types/glob": "^7.1.1",
+        "array-union": "^2.1.0",
+        "dir-glob": "^3.0.1",
+        "fast-glob": "^3.0.3",
+        "glob": "^7.1.3",
+        "ignore": "^5.1.1",
+        "merge2": "^1.2.3",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/ignore": {
+      "version": "5.1.8",
+      "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-5.1.8.tgz?cache=0&sync_timestamp=1590809289115&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-5.1.8.tgz",
+      "integrity": "sha1-8VCotQo0KJsz4i9YiavU2AFvDlc=",
+      "dev": true,
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/lint-staged/node_modules/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,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/lint-staged/node_modules/is-path-inside": {
+      "version": "3.0.3",
+      "resolved": "https://registry.nlark.com/is-path-inside/download/is-path-inside-3.0.3.tgz?cache=0&sync_timestamp=1620046845369&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-path-inside%2Fdownload%2Fis-path-inside-3.0.3.tgz",
+      "integrity": "sha1-0jE2LlOgf/Kw4Op/7QSRYf/RYoM=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/is-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz",
+      "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/log-symbols": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-3.0.0.tgz",
+      "integrity": "sha1-86CFFqXeqJMzan3uFNGKHP2rd8Q=",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^2.4.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/micromatch": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-4.0.4.tgz?cache=0&sync_timestamp=1618054842871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-4.0.4.tgz",
+      "integrity": "sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=",
+      "dev": true,
+      "dependencies": {
+        "braces": "^3.0.1",
+        "picomatch": "^2.2.3"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/lint-staged/node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1617823583529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz",
+      "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/lint-staged/node_modules/npm-run-path": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-3.1.0.tgz",
+      "integrity": "sha1-f5G+MX9qRm7+08nymArYpO6LD6U=",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz",
+      "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/lint-staged/node_modules/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,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/p-map": {
+      "version": "3.0.0",
+      "resolved": "https://registry.nlark.com/p-map/download/p-map-3.0.0.tgz",
+      "integrity": "sha1-1wTZr4orpoTiYA2aIVmD1BQal50=",
+      "dev": true,
+      "dependencies": {
+        "aggregate-error": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz",
+      "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/path-type": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-4.0.0.tgz?cache=0&sync_timestamp=1611752015315&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-type%2Fdownload%2Fpath-type-4.0.0.tgz",
+      "integrity": "sha1-hO0BwKe6OAr+CdkKjBgNzZ0DBDs=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-3.0.2.tgz?cache=0&sync_timestamp=1581229865753&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-3.0.2.tgz",
+      "integrity": "sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/lint-staged/node_modules/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,
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/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,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/slash": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/slash/download/slash-3.0.0.tgz?cache=0&sync_timestamp=1618384508676&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslash%2Fdownload%2Fslash-3.0.0.tgz",
+      "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lint-staged/node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz",
+      "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/lint-staged/node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz?cache=0&sync_timestamp=1574116720213&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-2.0.2.tgz",
+      "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/listr": {
+      "version": "0.14.3",
+      "resolved": "https://registry.npm.taobao.org/listr/download/listr-0.14.3.tgz",
+      "integrity": "sha1-L+qQlgTkNL5GTFC926DUlpKPpYY=",
+      "dev": true,
+      "dependencies": {
+        "@samverschueren/stream-to-observable": "^0.3.0",
+        "is-observable": "^1.1.0",
+        "is-promise": "^2.1.0",
+        "is-stream": "^1.1.0",
+        "listr-silent-renderer": "^1.1.1",
+        "listr-update-renderer": "^0.5.0",
+        "listr-verbose-renderer": "^0.5.0",
+        "p-map": "^2.0.0",
+        "rxjs": "^6.3.3"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/listr-silent-renderer": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/listr-silent-renderer/download/listr-silent-renderer-1.1.1.tgz",
+      "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/listr-update-renderer": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npm.taobao.org/listr-update-renderer/download/listr-update-renderer-0.5.0.tgz",
+      "integrity": "sha1-Tqg2hUinuK7LfgbYyVy0WuLt5qI=",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^1.1.3",
+        "cli-truncate": "^0.2.1",
+        "elegant-spinner": "^1.0.1",
+        "figures": "^1.7.0",
+        "indent-string": "^3.0.0",
+        "log-symbols": "^1.0.2",
+        "log-update": "^2.3.0",
+        "strip-ansi": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependencies": {
+        "listr": "^0.14.2"
+      }
+    },
+    "node_modules/listr-update-renderer/node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/listr-update-renderer/node_modules/ansi-styles": {
+      "version": "2.2.1",
+      "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz",
+      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/listr-update-renderer/node_modules/chalk": {
+      "version": "1.1.3",
+      "resolved": "https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz",
+      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^2.2.1",
+        "escape-string-regexp": "^1.0.2",
+        "has-ansi": "^2.0.0",
+        "strip-ansi": "^3.0.0",
+        "supports-color": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/listr-update-renderer/node_modules/figures": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npm.taobao.org/figures/download/figures-1.7.0.tgz?cache=0&sync_timestamp=1581865349068&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-1.7.0.tgz",
+      "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+      "dev": true,
+      "dependencies": {
+        "escape-string-regexp": "^1.0.5",
+        "object-assign": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/listr-update-renderer/node_modules/indent-string": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-3.2.0.tgz?cache=0&sync_timestamp=1618679561483&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Findent-string%2Fdownload%2Findent-string-3.2.0.tgz",
+      "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/listr-update-renderer/node_modules/log-symbols": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-1.0.2.tgz",
+      "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/listr-update-renderer/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/listr-update-renderer/node_modules/supports-color": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1618560959124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz",
+      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/listr-verbose-renderer": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npm.taobao.org/listr-verbose-renderer/download/listr-verbose-renderer-0.5.0.tgz",
+      "integrity": "sha1-8RMhZ1NepMEmEQK58o2sfLoeA9s=",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^2.4.1",
+        "cli-cursor": "^2.1.0",
+        "date-fns": "^1.27.2",
+        "figures": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/listr-verbose-renderer/node_modules/figures": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/figures/download/figures-2.0.0.tgz?cache=0&sync_timestamp=1581865349068&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-2.0.0.tgz",
+      "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+      "dev": true,
+      "dependencies": {
+        "escape-string-regexp": "^1.0.5"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/load-json-file": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/load-json-file/download/load-json-file-4.0.0.tgz",
+      "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^4.0.0",
+        "pify": "^3.0.0",
+        "strip-bom": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/load-json-file/node_modules/parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1610966646988&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-4.0.0.tgz",
+      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+      "dev": true,
+      "dependencies": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/load-json-file/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/loader-fs-cache": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.3.tgz",
+      "integrity": "sha1-8IZXZG1gcHi+LwoDL4vWndbyd9k=",
+      "dev": true,
+      "dependencies": {
+        "find-cache-dir": "^0.1.1",
+        "mkdirp": "^0.5.1"
+      }
+    },
+    "node_modules/loader-fs-cache/node_modules/find-cache-dir": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz",
+      "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
+      "dev": true,
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "mkdirp": "^0.5.1",
+        "pkg-dir": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/loader-fs-cache/node_modules/find-up": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-1.1.2.tgz",
+      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+      "dev": true,
+      "dependencies": {
+        "path-exists": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/loader-fs-cache/node_modules/path-exists": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz",
+      "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+      "dev": true,
+      "dependencies": {
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/loader-fs-cache/node_modules/pkg-dir": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz?cache=0&sync_timestamp=1602859045787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-1.0.0.tgz",
+      "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=4.3.0 <5.0.0 || >=5.10"
+      }
+    },
+    "node_modules/loader-utils": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.4.0.tgz?cache=0&sync_timestamp=1584445207623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-utils%2Fdownload%2Floader-utils-1.4.0.tgz",
+      "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=",
+      "dev": true,
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/loader-utils/node_modules/json5": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz",
+      "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz",
+      "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw="
+    },
+    "node_modules/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
+    },
+    "node_modules/lodash.defaultsdeep": {
+      "version": "4.6.1",
+      "resolved": "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz",
+      "integrity": "sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=",
+      "dev": true
+    },
+    "node_modules/lodash.kebabcase": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz",
+      "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/lodash.memoize": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz",
+      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/lodash.uniq": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz",
+      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+      "dev": true
+    },
+    "node_modules/log-symbols": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz",
+      "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/log-update": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/log-update/download/log-update-2.3.0.tgz",
+      "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=",
+      "dev": true,
+      "dependencies": {
+        "ansi-escapes": "^3.0.0",
+        "cli-cursor": "^2.0.0",
+        "wrap-ansi": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/log-update/node_modules/ansi-escapes": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.2.0.tgz",
+      "integrity": "sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/log-update/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/log-update/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/log-update/node_modules/string-width": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1618558823901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz",
+      "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+      "dev": true,
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/log-update/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/log-update/node_modules/wrap-ansi": {
+      "version": "3.0.1",
+      "resolved": "https://registry.nlark.com/wrap-ansi/download/wrap-ansi-3.0.1.tgz",
+      "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^2.1.1",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/loglevel": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.7.1.tgz?cache=0&sync_timestamp=1606314029553&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floglevel%2Fdownload%2Floglevel-1.7.1.tgz",
+      "integrity": "sha1-AF/eL15uRwaPk1/yhXPhJe9y8Zc=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/loud-rejection": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz",
+      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+      "dev": true,
+      "dependencies": {
+        "currently-unhandled": "^0.4.1",
+        "signal-exit": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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=1606867292121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flower-case%2Fdownload%2Flower-case-1.1.4.tgz",
+      "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+      "dev": true
+    },
+    "node_modules/lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz?cache=0&sync_timestamp=1594427582110&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-5.1.1.tgz",
+      "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/make-dir": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz?cache=0&sync_timestamp=1587567572251&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-3.1.0.tgz",
+      "integrity": "sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=",
+      "dev": true,
+      "dependencies": {
+        "semver": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/map-cache": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz",
+      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/map-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/map-obj/download/map-obj-1.0.1.tgz",
+      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/map-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz",
+      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "dev": true,
+      "dependencies": {
+        "object-visit": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/material-colors": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npm.taobao.org/material-colors/download/material-colors-1.2.6.tgz",
+      "integrity": "sha1-bRlYhxEmmSzuzHL0vMTY8BCGX0Y="
+    },
+    "node_modules/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,
+      "dependencies": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "node_modules/mdn-data": {
+      "version": "2.0.4",
+      "resolved": "https://registry.nlark.com/mdn-data/download/mdn-data-2.0.4.tgz",
+      "integrity": "sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=",
+      "dev": true
+    },
+    "node_modules/media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/memory-fs": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz",
+      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+      "dev": true,
+      "dependencies": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "node_modules/meow": {
+      "version": "3.7.0",
+      "resolved": "https://registry.nlark.com/meow/download/meow-3.7.0.tgz",
+      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+      "dev": true,
+      "dependencies": {
+        "camelcase-keys": "^2.0.0",
+        "decamelize": "^1.1.2",
+        "loud-rejection": "^1.0.0",
+        "map-obj": "^1.0.1",
+        "minimist": "^1.1.3",
+        "normalize-package-data": "^2.3.4",
+        "object-assign": "^4.0.1",
+        "read-pkg-up": "^1.0.1",
+        "redent": "^1.0.0",
+        "trim-newlines": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/meow/node_modules/find-up": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-1.1.2.tgz",
+      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+      "dev": true,
+      "dependencies": {
+        "path-exists": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/meow/node_modules/load-json-file": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz",
+      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^2.2.0",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0",
+        "strip-bom": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/meow/node_modules/parse-json": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz?cache=0&sync_timestamp=1610966646988&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-2.2.0.tgz",
+      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+      "dev": true,
+      "dependencies": {
+        "error-ex": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/meow/node_modules/path-exists": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz",
+      "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+      "dev": true,
+      "dependencies": {
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/meow/node_modules/path-type": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz?cache=0&sync_timestamp=1611752015315&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-type%2Fdownload%2Fpath-type-1.1.0.tgz",
+      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/meow/node_modules/pify": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz",
+      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/meow/node_modules/read-pkg": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz",
+      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+      "dev": true,
+      "dependencies": {
+        "load-json-file": "^1.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/meow/node_modules/read-pkg-up": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz",
+      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^1.0.0",
+        "read-pkg": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/meow/node_modules/strip-bom": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz?cache=0&sync_timestamp=1618599551066&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-bom%2Fdownload%2Fstrip-bom-2.0.0.tgz",
+      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+      "dev": true,
+      "dependencies": {
+        "is-utf8": "^0.2.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true
+    },
+    "node_modules/merge-source-map": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz",
+      "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=",
+      "dev": true,
+      "dependencies": {
+        "source-map": "^0.6.1"
+      }
+    },
+    "node_modules/merge-source-map/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.4.1.tgz",
+      "integrity": "sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "3.1.10",
+      "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&sync_timestamp=1618054842871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz",
+      "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/miller-rabin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz",
+      "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      },
+      "bin": {
+        "miller-rabin": "bin/miller-rabin"
+      }
+    },
+    "node_modules/miller-rabin/node_modules/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
+    },
+    "node_modules/mime": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.5.2.tgz?cache=0&sync_timestamp=1613584754851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-2.5.2.tgz",
+      "integrity": "sha1-bj3GzCuVEGQ4MOXxnVy3U9pe6r4=",
+      "dev": true,
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.47.0",
+      "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.47.0.tgz?cache=0&sync_timestamp=1617306043996&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.47.0.tgz",
+      "integrity": "sha1-jLMT5Zll08Bc+/iYkVomevRqM1w=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.30",
+      "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.30.tgz",
+      "integrity": "sha1-bnvotMR5gl+F7WMmaV23P5MF1i0=",
+      "dev": true,
+      "dependencies": {
+        "mime-db": "1.47.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz?cache=0&sync_timestamp=1617823583529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-1.2.0.tgz",
+      "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "loader-utils": "^1.1.0",
+        "normalize-url": "1.9.1",
+        "schema-utils": "^1.0.0",
+        "webpack-sources": "^1.1.0"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.4.0"
+      }
+    },
+    "node_modules/mini-css-extract-plugin/node_modules/normalize-url": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-1.9.1.tgz?cache=0&sync_timestamp=1617786359552&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-1.9.1.tgz",
+      "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+      "dev": true,
+      "dependencies": {
+        "object-assign": "^4.0.1",
+        "prepend-http": "^1.0.0",
+        "query-string": "^4.1.0",
+        "sort-keys": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/mini-css-extract-plugin/node_modules/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,
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/minimalistic-assert": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz",
+      "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=",
+      "dev": true
+    },
+    "node_modules/minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz",
+      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminimist%2Fdownload%2Fminimist-1.2.5.tgz",
+      "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=",
+      "dev": true
+    },
+    "node_modules/minipass": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-3.1.3.tgz",
+      "integrity": "sha1-fUL/HzljVILhX5zbUxhN7r1YFf0=",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/minipass/node_modules/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
+    },
+    "node_modules/mississippi": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz",
+      "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/mixin-deep/node_modules/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,
+      "dependencies": {
+        "is-plain-object": "^2.0.4"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz?cache=0&sync_timestamp=1587535418745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.5.5.tgz",
+      "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.5"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/move-concurrently": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz",
+      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz",
+      "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=",
+      "dev": true
+    },
+    "node_modules/multicast-dns": {
+      "version": "6.2.3",
+      "resolved": "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz",
+      "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=",
+      "dev": true,
+      "dependencies": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      },
+      "bin": {
+        "multicast-dns": "cli.js"
+      }
+    },
+    "node_modules/multicast-dns-service-types": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz",
+      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+      "dev": true
+    },
+    "node_modules/mute-stream": {
+      "version": "0.0.8",
+      "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz",
+      "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "any-promise": "^1.0.0",
+        "object-assign": "^4.0.1",
+        "thenify-all": "^1.0.0"
+      }
+    },
+    "node_modules/nan": {
+      "version": "2.14.2",
+      "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591684976&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz",
+      "integrity": "sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk=",
+      "dev": true
+    },
+    "node_modules/nanomatch": {
+      "version": "1.2.13",
+      "resolved": "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz",
+      "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz",
+      "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+      "dev": true
+    },
+    "node_modules/negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
+      "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/neo-async": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.2.tgz?cache=0&sync_timestamp=1594317434347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fneo-async%2Fdownload%2Fneo-async-2.6.2.tgz",
+      "integrity": "sha1-tKr7k+OustgXTKU88WOrfXMIMF8=",
+      "dev": true
+    },
+    "node_modules/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=1614510039289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnice-try%2Fdownload%2Fnice-try-1.0.5.tgz",
+      "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=",
+      "dev": true
+    },
+    "node_modules/no-case": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz?cache=0&sync_timestamp=1606867290260&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fno-case%2Fdownload%2Fno-case-2.3.2.tgz",
+      "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=",
+      "dev": true,
+      "dependencies": {
+        "lower-case": "^1.1.1"
+      }
+    },
+    "node_modules/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=1599010773454&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.10.0.tgz",
+      "integrity": "sha1-Mt6ir7Ppkm8C7lzoeUkCaRpna/M=",
+      "dev": true,
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/node-gyp": {
+      "version": "3.8.0",
+      "resolved": "https://registry.npm.taobao.org/node-gyp/download/node-gyp-3.8.0.tgz?cache=0&sync_timestamp=1617410134031&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-gyp%2Fdownload%2Fnode-gyp-3.8.0.tgz",
+      "integrity": "sha1-VAMEJhwzDoDQ1e3OJTpoyzlkIYw=",
+      "dev": true,
+      "dependencies": {
+        "fstream": "^1.0.0",
+        "glob": "^7.0.3",
+        "graceful-fs": "^4.1.2",
+        "mkdirp": "^0.5.0",
+        "nopt": "2 || 3",
+        "npmlog": "0 || 1 || 2 || 3 || 4",
+        "osenv": "0",
+        "request": "^2.87.0",
+        "rimraf": "2",
+        "semver": "~5.3.0",
+        "tar": "^2.0.0",
+        "which": "1"
+      },
+      "bin": {
+        "node-gyp": "bin/node-gyp.js"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/node-gyp/node_modules/semver": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.3.0.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.3.0.tgz",
+      "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/node-ipc": {
+      "version": "9.1.4",
+      "resolved": "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.4.tgz?cache=0&sync_timestamp=1614360609190&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-ipc%2Fdownload%2Fnode-ipc-9.1.4.tgz",
+      "integrity": "sha1-Ks+WJoGv2sJgKHbZj+ZDTVTZvTw=",
+      "dev": true,
+      "dependencies": {
+        "event-pubsub": "4.3.0",
+        "js-message": "1.0.7",
+        "js-queue": "2.0.2"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/node-libs-browser": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz",
+      "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/node-libs-browser/node_modules/punycode": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
+      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+      "dev": true
+    },
+    "node_modules/node-releases": {
+      "version": "1.1.72",
+      "resolved": "https://registry.nlark.com/node-releases/download/node-releases-1.1.72.tgz?cache=0&sync_timestamp=1620978644820&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.72.tgz",
+      "integrity": "sha1-FIAqtrEDmnmgx9ZithClu9durL4=",
+      "dev": true
+    },
+    "node_modules/node-sass": {
+      "version": "4.14.1",
+      "resolved": "https://registry.nlark.com/node-sass/download/node-sass-4.14.1.tgz",
+      "integrity": "sha1-mch+wu+3BH7WOPtMnbfzpC4iF7U=",
+      "dev": true,
+      "hasInstallScript": true,
+      "dependencies": {
+        "async-foreach": "^0.1.3",
+        "chalk": "^1.1.1",
+        "cross-spawn": "^3.0.0",
+        "gaze": "^1.0.0",
+        "get-stdin": "^4.0.1",
+        "glob": "^7.0.3",
+        "in-publish": "^2.0.0",
+        "lodash": "^4.17.15",
+        "meow": "^3.7.0",
+        "mkdirp": "^0.5.1",
+        "nan": "^2.13.2",
+        "node-gyp": "^3.8.0",
+        "npmlog": "^4.0.0",
+        "request": "^2.88.0",
+        "sass-graph": "2.2.5",
+        "stdout-stream": "^1.4.0",
+        "true-case-path": "^1.0.2"
+      },
+      "bin": {
+        "node-sass": "bin/node-sass"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/node-sass/node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/node-sass/node_modules/ansi-styles": {
+      "version": "2.2.1",
+      "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz",
+      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/node-sass/node_modules/chalk": {
+      "version": "1.1.3",
+      "resolved": "https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz",
+      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^2.2.1",
+        "escape-string-regexp": "^1.0.2",
+        "has-ansi": "^2.0.0",
+        "strip-ansi": "^3.0.0",
+        "supports-color": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/node-sass/node_modules/cross-spawn": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-3.0.1.tgz",
+      "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^4.0.1",
+        "which": "^1.2.9"
+      }
+    },
+    "node_modules/node-sass/node_modules/lru-cache": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz?cache=0&sync_timestamp=1594427582110&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-4.1.5.tgz",
+      "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+      "dev": true,
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/node-sass/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/node-sass/node_modules/supports-color": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1618560959124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz",
+      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/node-sass/node_modules/yallist": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+      "dev": true
+    },
+    "node_modules/nopt": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz?cache=0&sync_timestamp=1597649905420&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnopt%2Fdownload%2Fnopt-3.0.6.tgz",
+      "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+      "dev": true,
+      "dependencies": {
+        "abbrev": "1"
+      },
+      "bin": {
+        "nopt": "bin/nopt.js"
+      }
+    },
+    "node_modules/normalize-package-data": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz?cache=0&sync_timestamp=1616087086564&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-package-data%2Fdownload%2Fnormalize-package-data-2.5.0.tgz",
+      "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=",
+      "dev": true,
+      "dependencies": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "node_modules/normalize-package-data/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+      "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/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=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/normalize-url": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz?cache=0&sync_timestamp=1617786359552&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-3.3.0.tgz",
+      "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/normalize-wheel": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz",
+      "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
+    },
+    "node_modules/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,
+      "dependencies": {
+        "path-key": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npmlog": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz",
+      "integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=",
+      "dev": true,
+      "dependencies": {
+        "are-we-there-yet": "~1.1.2",
+        "console-control-strings": "~1.1.0",
+        "gauge": "~2.7.3",
+        "set-blocking": "~2.0.0"
+      }
+    },
+    "node_modules/nth-check": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz?cache=0&sync_timestamp=1606860664533&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnth-check%2Fdownload%2Fnth-check-1.0.2.tgz",
+      "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=",
+      "dev": true,
+      "dependencies": {
+        "boolbase": "~1.0.0"
+      }
+    },
+    "node_modules/num2fraction": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz",
+      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+      "dev": true
+    },
+    "node_modules/number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz?cache=0&sync_timestamp=1617776101309&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnumber-is-nan%2Fdownload%2Fnumber-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/oauth-sign": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz",
+      "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz?cache=0&sync_timestamp=1571657171505&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-assign%2Fdownload%2Fobject-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/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,
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-hash": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npm.taobao.org/object-hash/download/object-hash-1.3.1.tgz?cache=0&sync_timestamp=1608921171985&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-hash%2Fdownload%2Fobject-hash-1.3.1.tgz",
+      "integrity": "sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.10.3",
+      "resolved": "https://registry.nlark.com/object-inspect/download/object-inspect-1.10.3.tgz?cache=0&sync_timestamp=1620446150016&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fobject-inspect%2Fdownload%2Fobject-inspect-1.10.3.tgz",
+      "integrity": "sha1-wqp9LQn1DJk3VwT3oK3yTFeC02k=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz",
+      "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object-visit": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz",
+      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "dev": true,
+      "dependencies": {
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object.assign": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.2.tgz?cache=0&sync_timestamp=1604115158081&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.assign%2Fdownload%2Fobject.assign-4.1.2.tgz",
+      "integrity": "sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA=",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "has-symbols": "^1.0.1",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/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=1613860145677&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.getownpropertydescriptors%2Fdownload%2Fobject.getownpropertydescriptors-2.1.2.tgz",
+      "integrity": "sha1-G9Y66s8NXS0vMbXjk7A6fGAaI/c=",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.2"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object.values": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/object.values/download/object.values-1.1.3.tgz",
+      "integrity": "sha1-6qix4XWJ8C9pjbCT98Yu4WmXQu4=",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.2",
+        "has": "^1.0.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/obuf": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz",
+      "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=",
+      "dev": true
+    },
+    "node_modules/on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/on-headers": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz",
+      "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz",
+      "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/open": {
+      "version": "6.4.0",
+      "resolved": "https://registry.nlark.com/open/download/open-6.4.0.tgz?cache=0&sync_timestamp=1620403721777&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fopen%2Fdownload%2Fopen-6.4.0.tgz",
+      "integrity": "sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk=",
+      "dev": true,
+      "dependencies": {
+        "is-wsl": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/opener": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npm.taobao.org/opener/download/opener-1.5.2.tgz?cache=0&sync_timestamp=1598733244715&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopener%2Fdownload%2Fopener-1.5.2.tgz",
+      "integrity": "sha1-XTfh81B3udysQwE3InGv3rKhNZg=",
+      "dev": true,
+      "bin": {
+        "opener": "bin/opener-bin.js"
+      }
+    },
+    "node_modules/opn": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz",
+      "integrity": "sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w=",
+      "dev": true,
+      "dependencies": {
+        "is-wsl": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/optionator": {
+      "version": "0.8.3",
+      "resolved": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Foptionator%2Fdownload%2Foptionator-0.8.3.tgz",
+      "integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=",
+      "dev": true,
+      "dependencies": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/ora": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npm.taobao.org/ora/download/ora-3.4.0.tgz",
+      "integrity": "sha1-vwdSSRBZo+8+1MhQl1Md6f280xg=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ora/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/original": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz",
+      "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=",
+      "dev": true,
+      "dependencies": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "node_modules/os-browserify": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz",
+      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+      "dev": true
+    },
+    "node_modules/os-homedir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz",
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/osenv": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz",
+      "integrity": "sha1-hc36+uso6Gd/QW4odZK18/SepBA=",
+      "dev": true,
+      "dependencies": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1606290276843&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz",
+      "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz",
+      "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/p-retry": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz?cache=0&sync_timestamp=1617001968077&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-retry%2Fdownload%2Fp-retry-3.0.1.tgz",
+      "integrity": "sha1-MWtMiJPiyNwc+okfQGxLQivr8yg=",
+      "dev": true,
+      "dependencies": {
+        "retry": "^0.12.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pako": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz?cache=0&sync_timestamp=1610209004795&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpako%2Fdownload%2Fpako-1.0.11.tgz",
+      "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "cyclist": "^1.0.1",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
+      }
+    },
+    "node_modules/param-case": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz?cache=0&sync_timestamp=1606867288643&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparam-case%2Fdownload%2Fparam-case-2.1.1.tgz",
+      "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+      "dev": true,
+      "dependencies": {
+        "no-case": "^2.2.0"
+      }
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz",
+      "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=",
+      "dev": true,
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parent-module/node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz",
+      "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-asn1": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.6.tgz?cache=0&sync_timestamp=1597167309380&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-asn1%2Fdownload%2Fparse-asn1-5.1.6.tgz",
+      "integrity": "sha1-OFCAo+wTy2KmLTlAnLPoiETNrtQ=",
+      "dev": true,
+      "dependencies": {
+        "asn1.js": "^5.2.0",
+        "browserify-aes": "^1.0.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.2.0.tgz?cache=0&sync_timestamp=1610966646988&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-5.2.0.tgz",
+      "integrity": "sha1-x2/Gbe5UIxyWKyK8yKcs8vmXU80=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/parse5": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-5.1.1.tgz?cache=0&sync_timestamp=1595850861876&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-5.1.1.tgz",
+      "integrity": "sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "parse5": "^6.0.1"
+      }
+    },
+    "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-6.0.1.tgz?cache=0&sync_timestamp=1595850861876&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-6.0.1.tgz",
+      "integrity": "sha1-4aHAhcVps9wIMhGE8Zo5zCf3wws=",
+      "dev": true
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz",
+      "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/pascalcase": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz",
+      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-browserify": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz",
+      "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz",
+      "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-is-inside": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz",
+      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+      "dev": true
+    },
+    "node_modules/path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz",
+      "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=",
+      "dev": true
+    },
+    "node_modules/path-starts-with": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/path-starts-with/download/path-starts-with-1.0.0.tgz",
+      "integrity": "sha1-soJDAV6LE43lcmgqxS2kLmRq2E4=",
+      "dev": true,
+      "dependencies": {
+        "normalize-path": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/path-starts-with/node_modules/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,
+      "dependencies": {
+        "remove-trailing-separator": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+      "dev": true
+    },
+    "node_modules/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=1611752015315&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-type%2Fdownload%2Fpath-type-3.0.0.tgz",
+      "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=",
+      "dev": true,
+      "dependencies": {
+        "pify": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/path-type/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pbkdf2": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.1.2.tgz?cache=0&sync_timestamp=1617976027191&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpbkdf2%2Fdownload%2Fpbkdf2-3.1.2.tgz",
+      "integrity": "sha1-3YIqoIh1gOUvGgOdw+2hCO+uMHU=",
+      "dev": true,
+      "dependencies": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      },
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/performance-now": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+      "dev": true
+    },
+    "node_modules/picomatch": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.3.tgz?cache=0&sync_timestamp=1618050023150&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpicomatch%2Fdownload%2Fpicomatch-2.2.3.tgz",
+      "integrity": "sha1-RlVH81nMwgbTxI5Goby4m/fuYZ0=",
+      "dev": true,
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/pify": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
+      "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "dependencies": {
+        "pinkie": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz?cache=0&sync_timestamp=1602859045787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-4.2.0.tgz",
+      "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/pkg-up": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/pkg-up/download/pkg-up-2.0.0.tgz",
+      "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/find-up": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-2.1.0.tgz",
+      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/locate-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-limit": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz?cache=0&sync_timestamp=1606290276843&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-1.3.0.tgz",
+      "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-locate": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-try": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/please-upgrade-node": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npm.taobao.org/please-upgrade-node/download/please-upgrade-node-3.2.0.tgz",
+      "integrity": "sha1-rt3T+ZTJM+StmLmdmlVu+g4v6UI=",
+      "dev": true,
+      "dependencies": {
+        "semver-compare": "^1.0.0"
+      }
+    },
+    "node_modules/pnp-webpack-plugin": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz?cache=0&sync_timestamp=1589684269502&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpnp-webpack-plugin%2Fdownload%2Fpnp-webpack-plugin-1.6.4.tgz",
+      "integrity": "sha1-yXEaxNxIpoXauvyG+Lbdn434QUk=",
+      "dev": true,
+      "dependencies": {
+        "ts-pnp": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/portfinder": {
+      "version": "1.0.28",
+      "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.28.tgz?cache=0&sync_timestamp=1596018176291&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fportfinder%2Fdownload%2Fportfinder-1.0.28.tgz",
+      "integrity": "sha1-Z8RiKFK9U3TdHdkA93n1NGL6x3g=",
+      "dev": true,
+      "dependencies": {
+        "async": "^2.6.2",
+        "debug": "^3.1.1",
+        "mkdirp": "^0.5.5"
+      },
+      "engines": {
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/portfinder/node_modules/debug": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.7.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz",
+      "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "7.0.35",
+      "resolved": "https://registry.nlark.com/postcss/download/postcss-7.0.35.tgz?cache=0&sync_timestamp=1620676610377&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss%2Fdownload%2Fpostcss-7.0.35.tgz",
+      "integrity": "sha1-0r4AuZj38hHYonaXQHny6SuXDiQ=",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^2.4.2",
+        "source-map": "^0.6.1",
+        "supports-color": "^6.1.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-calc": {
+      "version": "7.0.5",
+      "resolved": "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.5.tgz?cache=0&sync_timestamp=1609689294247&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-calc%2Fdownload%2Fpostcss-calc-7.0.5.tgz",
+      "integrity": "sha1-+KbpnxLmGcLrwjz2xIb9wVhgkz4=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.27",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.0.2"
+      }
+    },
+    "node_modules/postcss-colormin": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz?cache=0&sync_timestamp=1618056387757&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-colormin%2Fdownload%2Fpostcss-colormin-4.0.3.tgz",
+      "integrity": "sha1-rgYLzpPteUrHEmTwgTLVUJVr04E=",
+      "dev": true,
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "color": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-colormin/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-convert-values": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz?cache=0&sync_timestamp=1618056388436&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-convert-values%2Fdownload%2Fpostcss-convert-values-4.0.1.tgz",
+      "integrity": "sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-convert-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-discard-comments": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz?cache=0&sync_timestamp=1618056386715&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-comments%2Fdownload%2Fpostcss-discard-comments-4.0.2.tgz",
+      "integrity": "sha1-H7q9LCRr/2qq15l7KwkY9NevQDM=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-discard-duplicates": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz?cache=0&sync_timestamp=1618056387068&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-duplicates%2Fdownload%2Fpostcss-discard-duplicates-4.0.2.tgz",
+      "integrity": "sha1-P+EzzTyCKC5VD8myORdqkge3hOs=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-discard-empty": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz",
+      "integrity": "sha1-yMlR6fc+2UKAGUWERKAq2Qu592U=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-discard-overridden": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz",
+      "integrity": "sha1-ZSrvipZybwKfXj4AFG7npOdV/1c=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-load-config": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.2.tgz?cache=0&sync_timestamp=1612742943575&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-load-config%2Fdownload%2Fpostcss-load-config-2.1.2.tgz",
+      "integrity": "sha1-xepQTyxK7zPHNZo03jVzdyrXUCo=",
+      "dev": true,
+      "dependencies": {
+        "cosmiconfig": "^5.0.0",
+        "import-cwd": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/postcss-loader": {
+      "version": "3.0.0",
+      "resolved": "https://registry.nlark.com/postcss-loader/download/postcss-loader-3.0.0.tgz",
+      "integrity": "sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=",
+      "dev": true,
+      "dependencies": {
+        "loader-utils": "^1.1.0",
+        "postcss": "^7.0.0",
+        "postcss-load-config": "^2.0.0",
+        "schema-utils": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-loader/node_modules/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,
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/postcss-merge-longhand": {
+      "version": "4.0.11",
+      "resolved": "https://registry.nlark.com/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz",
+      "integrity": "sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ=",
+      "dev": true,
+      "dependencies": {
+        "css-color-names": "0.0.4",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "stylehacks": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-merge-rules": {
+      "version": "4.0.3",
+      "resolved": "https://registry.nlark.com/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz",
+      "integrity": "sha1-NivqT/Wh+Y5AdacTxsslrv75plA=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-merge-rules/node_modules/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=1620752924836&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz",
+      "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=",
+      "dev": true,
+      "dependencies": {
+        "dot-prop": "^5.2.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/postcss-minify-font-values": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz",
+      "integrity": "sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-minify-gradients": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz",
+      "integrity": "sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE=",
+      "dev": true,
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "is-color-stop": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-minify-params": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz",
+      "integrity": "sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-params/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-minify-selectors": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz",
+      "integrity": "sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g=",
+      "dev": true,
+      "dependencies": {
+        "alphanum-sort": "^1.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-selectors/node_modules/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=1620752924836&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz",
+      "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=",
+      "dev": true,
+      "dependencies": {
+        "dot-prop": "^5.2.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "postcss": "^7.0.5"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-modules-local-by-default": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-3.0.3.tgz?cache=0&sync_timestamp=1602587568476&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-local-by-default%2Fdownload%2Fpostcss-modules-local-by-default-3.0.3.tgz",
+      "integrity": "sha1-uxTgzHgnnVBNvcv9fgyiiZP/u7A=",
+      "dev": true,
+      "dependencies": {
+        "icss-utils": "^4.1.1",
+        "postcss": "^7.0.32",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.1.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-modules-scope": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-2.2.0.tgz?cache=0&sync_timestamp=1602593260387&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-scope%2Fdownload%2Fpostcss-modules-scope-2.2.0.tgz",
+      "integrity": "sha1-OFyuATzHdD9afXYC0Qc6iequYu4=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-modules-values": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-3.0.0.tgz?cache=0&sync_timestamp=1602586230505&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-values%2Fdownload%2Fpostcss-modules-values-3.0.0.tgz",
+      "integrity": "sha1-W1AA1uuuKbQlUwG0o6VFdEI+fxA=",
+      "dev": true,
+      "dependencies": {
+        "icss-utils": "^4.0.0",
+        "postcss": "^7.0.6"
+      }
+    },
+    "node_modules/postcss-normalize-charset": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz?cache=0&sync_timestamp=1618056389116&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-charset%2Fdownload%2Fpostcss-normalize-charset-4.0.1.tgz",
+      "integrity": "sha1-izWt067oOhNrBHHg1ZvlilAoXdQ=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-display-values": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz",
+      "integrity": "sha1-Db4EpM6QY9RmftK+R2u4MMglk1o=",
+      "dev": true,
+      "dependencies": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-normalize-positions": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz?cache=0&sync_timestamp=1618056388080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-positions%2Fdownload%2Fpostcss-normalize-positions-4.0.2.tgz",
+      "integrity": "sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8=",
+      "dev": true,
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-normalize-repeat-style": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz?cache=0&sync_timestamp=1618056392185&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-repeat-style%2Fdownload%2Fpostcss-normalize-repeat-style-4.0.2.tgz",
+      "integrity": "sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw=",
+      "dev": true,
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-normalize-string": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz?cache=0&sync_timestamp=1618056389791&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-string%2Fdownload%2Fpostcss-normalize-string-4.0.2.tgz",
+      "integrity": "sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw=",
+      "dev": true,
+      "dependencies": {
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/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",
+      "integrity": "sha1-jgCcoqOUnNr4rSPmtquZy159KNk=",
+      "dev": true,
+      "dependencies": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-normalize-unicode": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz",
+      "integrity": "sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs=",
+      "dev": true,
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-normalize-url": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz",
+      "integrity": "sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE=",
+      "dev": true,
+      "dependencies": {
+        "is-absolute-url": "^2.0.0",
+        "normalize-url": "^3.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-normalize-whitespace": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz",
+      "integrity": "sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-ordered-values": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz?cache=0&sync_timestamp=1618056391473&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-ordered-values%2Fdownload%2Fpostcss-ordered-values-4.1.2.tgz",
+      "integrity": "sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4=",
+      "dev": true,
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-reduce-initial": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz?cache=0&sync_timestamp=1618056389446&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-reduce-initial%2Fdownload%2Fpostcss-reduce-initial-4.0.3.tgz",
+      "integrity": "sha1-f9QuvqXpyBRgljniwuhK4nC6SN8=",
+      "dev": true,
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-reduce-transforms": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz",
+      "integrity": "sha1-F++kBerMbge+NBSlyi0QdGgdTik=",
+      "dev": true,
+      "dependencies": {
+        "cssnano-util-get-match": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/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=1620752924836&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-6.0.6.tgz",
+      "integrity": "sha1-LFu6gXSsL2mBq2MaQqsO5UrzMuo=",
+      "dev": true,
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-svgo": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.3.tgz?cache=0&sync_timestamp=1618056390441&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-svgo%2Fdownload%2Fpostcss-svgo-4.0.3.tgz",
+      "integrity": "sha1-NDos26yVBdQWJD1Jb3JPOIlMlB4=",
+      "dev": true,
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "svgo": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-svgo/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "node_modules/postcss-unique-selectors": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz",
+      "integrity": "sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w=",
+      "dev": true,
+      "dependencies": {
+        "alphanum-sort": "^1.0.0",
+        "postcss": "^7.0.0",
+        "uniqs": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-value-parser": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.1.0.tgz",
+      "integrity": "sha1-RD9qIM7WSBor2k+oUypuVdeJoss=",
+      "dev": true
+    },
+    "node_modules/postcss/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/postcss/node_modules/supports-color": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1618560959124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz",
+      "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/prepend-http": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz",
+      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/prettier": {
+      "version": "1.19.1",
+      "resolved": "https://registry.nlark.com/prettier/download/prettier-1.19.1.tgz?cache=0&sync_timestamp=1620594183343&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fprettier%2Fdownload%2Fprettier-1.19.1.tgz",
+      "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=",
+      "dev": true,
+      "optional": true,
+      "bin": {
+        "prettier": "bin-prettier.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pretty-error": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.2.tgz",
+      "integrity": "sha1-von4LYGxyG7I/fvDhQRYgnJ/k7Y=",
+      "dev": true,
+      "dependencies": {
+        "lodash": "^4.17.20",
+        "renderkid": "^2.0.4"
+      }
+    },
+    "node_modules/process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/progress": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz",
+      "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/promise-inflight": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz",
+      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+      "dev": true
+    },
+    "node_modules/proxy-addr": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz",
+      "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=",
+      "dev": true,
+      "dependencies": {
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.9.1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true
+    },
+    "node_modules/pseudomap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
+    },
+    "node_modules/psl": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz",
+      "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/public-encrypt/node_modules/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
+    },
+    "node_modules/pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz",
+      "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=",
+      "dev": true,
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/pumpify": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz",
+      "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=",
+      "dev": true,
+      "dependencies": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      }
+    },
+    "node_modules/pumpify/node_modules/pump": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz",
+      "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=",
+      "dev": true,
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
+      "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/qs": {
+      "version": "6.5.2",
+      "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1616385328325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz",
+      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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=",
+      "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz",
+      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.2.0.tgz?cache=0&sync_timestamp=1597686771604&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquerystringify%2Fdownload%2Fquerystringify-2.2.0.tgz",
+      "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=",
+      "dev": true
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npm.taobao.org/queue-microtask/download/queue-microtask-1.2.3.tgz?cache=0&sync_timestamp=1616391510274&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqueue-microtask%2Fdownload%2Fqueue-microtask-1.2.3.tgz",
+      "integrity": "sha1-SSkii7xyTfrEPg77BYyve2z7YkM=",
+      "dev": true
+    },
+    "node_modules/randombytes": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",
+      "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/randomfill": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz",
+      "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=",
+      "dev": true,
+      "dependencies": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz",
+      "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
+      "dev": true,
+      "dependencies": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/read-pkg-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-3.0.0.tgz",
+      "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^2.0.0",
+        "read-pkg": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/find-up": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-2.1.0.tgz",
+      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/locate-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/p-limit": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz?cache=0&sync_timestamp=1606290276843&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-1.3.0.tgz",
+      "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/p-locate": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/p-try": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/read-pkg": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-3.0.0.tgz",
+      "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+      "dev": true,
+      "dependencies": {
+        "load-json-file": "^4.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/readable-stream": {
+      "version": "2.3.7",
+      "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz?cache=0&sync_timestamp=1581624324274&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-2.3.7.tgz",
+      "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-3.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-3.5.0.tgz",
+      "integrity": "sha1-m6dMAZsV02UnjS6Ru4xI17TULJ4=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/redent": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/redent/download/redent-1.0.0.tgz?cache=0&sync_timestamp=1620069702182&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fredent%2Fdownload%2Fredent-1.0.0.tgz",
+      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+      "dev": true,
+      "dependencies": {
+        "indent-string": "^2.1.0",
+        "strip-indent": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/redent/node_modules/indent-string": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz?cache=0&sync_timestamp=1618679561483&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Findent-string%2Fdownload%2Findent-string-2.1.0.tgz",
+      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+      "dev": true,
+      "dependencies": {
+        "repeating": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/redent/node_modules/strip-indent": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/strip-indent/download/strip-indent-1.0.1.tgz",
+      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+      "dev": true,
+      "dependencies": {
+        "get-stdin": "^4.0.1"
+      },
+      "bin": {
+        "strip-indent": "cli.js"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/regenerate-unicode-properties": {
+      "version": "8.2.0",
+      "resolved": "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz",
+      "integrity": "sha1-5d5xEdZV57pgwFfb6f83yH5lzew=",
+      "dev": true,
+      "dependencies": {
+        "regenerate": "^1.4.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.13.7",
+      "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz",
+      "integrity": "sha1-ysLazIoepnX+qrrriugziYrkb1U="
+    },
+    "node_modules/regenerator-transform": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.5.tgz?cache=0&sync_timestamp=1593557846694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-transform%2Fdownload%2Fregenerator-transform-0.14.5.tgz",
+      "integrity": "sha1-yY2hVGg2ccnE3LFuznNlF+G3/rQ=",
+      "dev": true,
+      "dependencies": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "node_modules/regex-not": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz",
+      "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
+      "dev": true,
+      "dependencies": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/regexp.prototype.flags": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.1.tgz?cache=0&sync_timestamp=1610725679574&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp.prototype.flags%2Fdownload%2Fregexp.prototype.flags-1.3.1.tgz",
+      "integrity": "sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY=",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/regexpp": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz",
+      "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=",
+      "dev": true,
+      "engines": {
+        "node": ">=6.5.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regjsgen": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.2.tgz",
+      "integrity": "sha1-kv8pX7He7L9uzaslQ9IH6RqjNzM=",
+      "dev": true
+    },
+    "node_modules/regjsparser": {
+      "version": "0.6.9",
+      "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.9.tgz?cache=0&sync_timestamp=1616544927031&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregjsparser%2Fdownload%2Fregjsparser-0.6.9.tgz",
+      "integrity": "sha1-tInu98mizkNydicBFCnPgzpxg+Y=",
+      "dev": true,
+      "dependencies": {
+        "jsesc": "~0.5.0"
+      },
+      "bin": {
+        "regjsparser": "bin/parser"
+      }
+    },
+    "node_modules/regjsparser/node_modules/jsesc": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz?cache=0&sync_timestamp=1603891232110&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsesc%2Fdownload%2Fjsesc-0.5.0.tgz",
+      "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+      "dev": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "dev": true
+    },
+    "node_modules/renderkid": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.5.tgz?cache=0&sync_timestamp=1609588663632&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frenderkid%2Fdownload%2Frenderkid-2.0.5.tgz",
+      "integrity": "sha1-SDsaxZxmAaswp6WWpZZcq8z90KU=",
+      "dev": true,
+      "dependencies": {
+        "css-select": "^2.0.2",
+        "dom-converter": "^0.2",
+        "htmlparser2": "^3.10.1",
+        "lodash": "^4.17.20",
+        "strip-ansi": "^3.0.0"
+      }
+    },
+    "node_modules/renderkid/node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/renderkid/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/repeat-element": {
+      "version": "1.1.4",
+      "resolved": "https://registry.nlark.com/repeat-element/download/repeat-element-1.1.4.tgz",
+      "integrity": "sha1-vmgVIIR6tYx1aKx1+/rSjtQtOek=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/repeating": {
+      "version": "2.0.1",
+      "resolved": "https://registry.nlark.com/repeating/download/repeating-2.0.1.tgz",
+      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+      "dev": true,
+      "dependencies": {
+        "is-finite": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/request": {
+      "version": "2.88.2",
+      "resolved": "https://registry.npm.taobao.org/request/download/request-2.88.2.tgz",
+      "integrity": "sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM=",
+      "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/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
+    },
+    "node_modules/resize-observer-polyfill": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz",
+      "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ="
+    },
+    "node_modules/resolve": {
+      "version": "1.20.0",
+      "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.20.0.tgz",
+      "integrity": "sha1-YpoBP7P3B1XW8LeTXMHCxTeLGXU=",
+      "dev": true,
+      "dependencies": {
+        "is-core-module": "^2.2.0",
+        "path-parse": "^1.0.6"
+      }
+    },
+    "node_modules/resolve-cwd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz",
+      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "dev": true,
+      "dependencies": {
+        "resolve-from": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz",
+      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/resolve-url": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz",
+      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+      "deprecated": "https://github.com/lydell/resolve-url#deprecated",
+      "dev": true
+    },
+    "node_modules/restore-cursor": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz",
+      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+      "dev": true,
+      "dependencies": {
+        "onetime": "^2.0.0",
+        "signal-exit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ret": {
+      "version": "0.1.15",
+      "resolved": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz?cache=0&sync_timestamp=1613002712228&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fret%2Fdownload%2Fret-0.1.15.tgz",
+      "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/retry": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz",
+      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+      "dev": true,
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/reusify/download/reusify-1.0.4.tgz",
+      "integrity": "sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=",
+      "dev": true,
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/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
+    },
+    "node_modules/rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz?cache=0&sync_timestamp=1581229865753&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.7.1.tgz",
+      "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/ripemd160": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz",
+      "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=",
+      "dev": true,
+      "dependencies": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "node_modules/run-async": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.4.1.tgz",
+      "integrity": "sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/run-parallel/download/run-parallel-1.2.0.tgz",
+      "integrity": "sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=",
+      "dev": true,
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "node_modules/rxjs": {
+      "version": "6.6.7",
+      "resolved": "https://registry.nlark.com/rxjs/download/rxjs-6.6.7.tgz",
+      "integrity": "sha1-kKwBisq/SRv2UEQjXVhjxNq4BMk=",
+      "dev": true,
+      "dependencies": {
+        "tslib": "^1.9.0"
+      },
+      "engines": {
+        "npm": ">=2.0.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/safe-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz",
+      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "dev": true,
+      "dependencies": {
+        "ret": "~0.1.10"
+      }
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz",
+      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=",
+      "dev": true
+    },
+    "node_modules/sass-graph": {
+      "version": "2.2.5",
+      "resolved": "https://registry.npm.taobao.org/sass-graph/download/sass-graph-2.2.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass-graph%2Fdownload%2Fsass-graph-2.2.5.tgz",
+      "integrity": "sha1-qYHIdEa4MZ2W3OBnHkh4eb0kwug=",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.0.0",
+        "lodash": "^4.0.0",
+        "scss-tokenizer": "^0.2.3",
+        "yargs": "^13.3.2"
+      },
+      "bin": {
+        "sassgraph": "bin/sassgraph"
+      }
+    },
+    "node_modules/sass-graph/node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603923709404&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz",
+      "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/sass-graph/node_modules/cliui": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz?cache=0&sync_timestamp=1604880033053&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-5.0.0.tgz",
+      "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
+      }
+    },
+    "node_modules/sass-graph/node_modules/emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz?cache=0&sync_timestamp=1614682707048&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-regex-7.0.3.tgz",
+      "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
+      "dev": true
+    },
+    "node_modules/sass-graph/node_modules/find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz",
+      "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/sass-graph/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/sass-graph/node_modules/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,
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/sass-graph/node_modules/p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+      "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/sass-graph/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/sass-graph/node_modules/string-width": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz?cache=0&sync_timestamp=1618558823901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz",
+      "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/sass-graph/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/sass-graph/node_modules/wrap-ansi": {
+      "version": "5.1.0",
+      "resolved": "https://registry.nlark.com/wrap-ansi/download/wrap-ansi-5.1.0.tgz",
+      "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.0",
+        "string-width": "^3.0.0",
+        "strip-ansi": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/sass-graph/node_modules/yargs": {
+      "version": "13.3.2",
+      "resolved": "https://registry.nlark.com/yargs/download/yargs-13.3.2.tgz?cache=0&sync_timestamp=1620086644940&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-13.3.2.tgz",
+      "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/sass-graph/node_modules/yargs-parser": {
+      "version": "13.1.2",
+      "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.2.tgz?cache=0&sync_timestamp=1615405185480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.2.tgz",
+      "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    },
+    "node_modules/sass-loader": {
+      "version": "8.0.2",
+      "resolved": "https://registry.nlark.com/sass-loader/download/sass-loader-8.0.2.tgz?cache=0&sync_timestamp=1620926321113&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsass-loader%2Fdownload%2Fsass-loader-8.0.2.tgz",
+      "integrity": "sha1-3r7NjDziQ8dkVPLoKQSCFQOACQ0=",
+      "dev": true,
+      "dependencies": {
+        "clone-deep": "^4.0.1",
+        "loader-utils": "^1.2.3",
+        "neo-async": "^2.6.1",
+        "schema-utils": "^2.6.1",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">= 8.9.0"
+      },
+      "peerDependencies": {
+        "fibers": ">= 3.1.0",
+        "node-sass": "^4.0.0",
+        "sass": "^1.3.0",
+        "webpack": "^4.36.0 || ^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "fibers": {
+          "optional": true
+        },
+        "node-sass": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz",
+      "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=",
+      "dev": true
+    },
+    "node_modules/schema-utils": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.7.1.tgz",
+      "integrity": "sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=",
+      "dev": true,
+      "dependencies": {
+        "@types/json-schema": "^7.0.5",
+        "ajv": "^6.12.4",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 8.9.0"
+      }
+    },
+    "node_modules/scss-tokenizer": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npm.taobao.org/scss-tokenizer/download/scss-tokenizer-0.2.3.tgz",
+      "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+      "dev": true,
+      "dependencies": {
+        "js-base64": "^2.1.8",
+        "source-map": "^0.4.2"
+      }
+    },
+    "node_modules/scss-tokenizer/node_modules/source-map": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.4.4.tgz",
+      "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+      "dev": true,
+      "dependencies": {
+        "amdefine": ">=0.0.4"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/select": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/select/download/select-1.1.2.tgz",
+      "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
+    },
+    "node_modules/select-hose": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz",
+      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "node-forge": "^0.10.0"
+      }
+    },
+    "node_modules/semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz",
+      "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/semver-compare": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/semver-compare/download/semver-compare-1.0.0.tgz",
+      "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+      "dev": true
+    },
+    "node_modules/send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz",
+      "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/send/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/send/node_modules/debug/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/send/node_modules/mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1613584754851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz",
+      "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
+      "dev": true,
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/send/node_modules/ms": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.1.tgz",
+      "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "node_modules/serve-index": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz",
+      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/serve-index/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/serve-index/node_modules/http-errors": {
+      "version": "1.6.3",
+      "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz?cache=0&sync_timestamp=1593407676624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.6.3.tgz",
+      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+      "dev": true,
+      "dependencies": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.0",
+        "statuses": ">= 1.4.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/serve-index/node_modules/inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true
+    },
+    "node_modules/serve-index/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/serve-index/node_modules/setprototypeof": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz",
+      "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=",
+      "dev": true
+    },
+    "node_modules/serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz",
+      "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=",
+      "dev": true,
+      "dependencies": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/set-value/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/setimmediate": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+      "dev": true
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz",
+      "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      },
+      "bin": {
+        "sha.js": "bin.js"
+      }
+    },
+    "node_modules/shallow-clone": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/shallow-clone/download/shallow-clone-3.0.1.tgz",
+      "integrity": "sha1-jymBrZJTH1UDWwH7IwdppA4C76M=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "shebang-regex": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz",
+      "integrity": "sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=",
+      "dev": true
+    },
+    "node_modules/simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+      "dev": true,
+      "dependencies": {
+        "is-arrayish": "^0.3.1"
+      }
+    },
+    "node_modules/simple-swizzle/node_modules/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
+    },
+    "node_modules/slash": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz?cache=0&sync_timestamp=1618384508676&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslash%2Fdownload%2Fslash-2.0.0.tgz",
+      "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/slice-ansi": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz?cache=0&sync_timestamp=1618554953055&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslice-ansi%2Fdownload%2Fslice-ansi-2.1.0.tgz",
+      "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.0",
+        "astral-regex": "^1.0.0",
+        "is-fullwidth-code-point": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/slice-ansi/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/snapdragon": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsnapdragon%2Fdownload%2Fsnapdragon-0.8.2.tgz",
+      "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node/node_modules/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,
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+      "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node/node_modules/is-data-descriptor": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+      "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node/node_modules/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,
+      "dependencies": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-util": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.2.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-util/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/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,
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/sockjs": {
+      "version": "0.3.21",
+      "resolved": "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.21.tgz",
+      "integrity": "sha1-s0/7mOeWkwtgoM+hGQTWozmn1Bc=",
+      "dev": true,
+      "dependencies": {
+        "faye-websocket": "^0.11.3",
+        "uuid": "^3.4.0",
+        "websocket-driver": "^0.7.4"
+      }
+    },
+    "node_modules/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=1616686664258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs-client%2Fdownload%2Fsockjs-client-1.5.1.tgz",
+      "integrity": "sha1-JWkI9tWt+5Tau9vQLGY2LMoPnqY=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/sockjs-client/node_modules/debug": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.7.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz",
+      "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/sort-keys": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz",
+      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+      "dev": true,
+      "dependencies": {
+        "is-plain-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sort-keys/node_modules/is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.nlark.com/is-plain-obj/download/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-list-map": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz",
+      "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=",
+      "dev": true
+    },
+    "node_modules/source-map": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.5.7.tgz",
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-resolve": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.3.tgz?cache=0&sync_timestamp=1584829515586&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-resolve%2Fdownload%2Fsource-map-resolve-0.5.3.tgz",
+      "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=",
+      "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/source-map-support": {
+      "version": "0.5.19",
+      "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.19.tgz?cache=0&sync_timestamp=1587719289626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.5.19.tgz",
+      "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=",
+      "dev": true,
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/source-map-support/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-url": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.1.tgz?cache=0&sync_timestamp=1612211015749&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-url%2Fdownload%2Fsource-map-url-0.4.1.tgz",
+      "integrity": "sha1-CvZmBadFpaL5HPG7+KevvCg97FY=",
+      "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
+      "dev": true
+    },
+    "node_modules/spdx-correct": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.1.tgz?cache=0&sync_timestamp=1590161967473&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdx-correct%2Fdownload%2Fspdx-correct-3.1.1.tgz",
+      "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=",
+      "dev": true,
+      "dependencies": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-exceptions": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.3.0.tgz",
+      "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-license-ids": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.7.tgz?cache=0&sync_timestamp=1606610735791&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdx-license-ids%2Fdownload%2Fspdx-license-ids-3.0.7.tgz",
+      "integrity": "sha1-6cGKQQ5e1+EkQqVJ+9ivp2cDjWU=",
+      "dev": true
+    },
+    "node_modules/spdy": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/spdy/download/spdy-4.0.2.tgz?cache=0&sync_timestamp=1585970491493&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdy%2Fdownload%2Fspdy-4.0.2.tgz",
+      "integrity": "sha1-t09GYgOj7aRSwCSSuR+56EonZ3s=",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.1.0",
+        "handle-thing": "^2.0.0",
+        "http-deceiver": "^1.2.7",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/spdy-transport/node_modules/readable-stream": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1581624324274&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz",
+      "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "extend-shallow": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "node_modules/sshpk": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
+      "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "bin": {
+        "sshpk-conv": "bin/sshpk-conv",
+        "sshpk-sign": "bin/sshpk-sign",
+        "sshpk-verify": "bin/sshpk-verify"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ssri": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-6.0.2.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-6.0.2.tgz",
+      "integrity": "sha1-FXk5E08gRk5zAd26PpD/qPdyisU=",
+      "dev": true,
+      "dependencies": {
+        "figgy-pudding": "^3.5.1"
+      }
+    },
+    "node_modules/stable": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz",
+      "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=",
+      "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility",
+      "dev": true
+    },
+    "node_modules/stackframe": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/stackframe/download/stackframe-1.2.0.tgz?cache=0&sync_timestamp=1590854108362&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstackframe%2Fdownload%2Fstackframe-1.2.0.tgz",
+      "integrity": "sha1-UkKUktY8YuuYmATBFVLj0i53kwM=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/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,
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1609654014762&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/stdout-stream": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npm.taobao.org/stdout-stream/download/stdout-stream-1.4.1.tgz",
+      "integrity": "sha1-WsF0zdXNcmEEqgwLK9g4FdjVNd4=",
+      "dev": true,
+      "dependencies": {
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "node_modules/stream-browserify": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz?cache=0&sync_timestamp=1587041194718&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstream-browserify%2Fdownload%2Fstream-browserify-2.0.2.tgz",
+      "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "node_modules/stream-http": {
+      "version": "2.8.3",
+      "resolved": "https://registry.nlark.com/stream-http/download/stream-http-2.8.3.tgz",
+      "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=",
+      "dev": true,
+      "dependencies": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/string-argv": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npm.taobao.org/string-argv/download/string-argv-0.3.1.tgz",
+      "integrity": "sha1-leL77AQnrhkYSTX4FtdKqkxcGdo=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6.19"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.2.tgz?cache=0&sync_timestamp=1618558823901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-4.2.2.tgz",
+      "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/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=1614128416111&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,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "node_modules/string.prototype.trimstart": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.4.tgz",
+      "integrity": "sha1-s2OZr0qymZtMnGSL16P7K7Jv7u0=",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "node_modules/stringify-object": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npm.taobao.org/stringify-object/download/stringify-object-3.3.0.tgz",
+      "integrity": "sha1-cDBlrvyhkwDTzoivT1s5VtdVZik=",
+      "dev": true,
+      "dependencies": {
+        "get-own-enumerable-property-symbols": "^3.0.0",
+        "is-obj": "^1.0.1",
+        "is-regexp": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/stringify-object/node_modules/is-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz?cache=0&sync_timestamp=1618600378936&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-obj%2Fdownload%2Fis-obj-1.0.1.tgz",
+      "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi/node_modules/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,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-bom": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz?cache=0&sync_timestamp=1618599551066&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-bom%2Fdownload%2Fstrip-bom-3.0.0.tgz",
+      "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/strip-eof": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-final-newline": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/strip-final-newline/download/strip-final-newline-2.0.0.tgz",
+      "integrity": "sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/strip-indent": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/strip-indent/download/strip-indent-2.0.0.tgz",
+      "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.1.tgz?cache=0&sync_timestamp=1594567532500&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.1.tgz",
+      "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/stylehacks": {
+      "version": "4.0.3",
+      "resolved": "https://registry.nlark.com/stylehacks/download/stylehacks-4.0.3.tgz",
+      "integrity": "sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU=",
+      "dev": true,
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/stylehacks/node_modules/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=1620752924836&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz",
+      "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=",
+      "dev": true,
+      "dependencies": {
+        "dot-prop": "^5.2.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&sync_timestamp=1618560959124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz",
+      "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/svg-tags": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz",
+      "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
+      "dev": true
+    },
+    "node_modules/svgo": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npm.taobao.org/svgo/download/svgo-1.3.2.tgz?cache=0&sync_timestamp=1616929367791&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsvgo%2Fdownload%2Fsvgo-1.3.2.tgz",
+      "integrity": "sha1-ttxRHAYzRsnkFbgeQ0ARRbltQWc=",
+      "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "bin": {
+        "svgo": "bin/svgo"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/symbol-observable": {
+      "version": "1.2.0",
+      "resolved": "https://registry.nlark.com/symbol-observable/download/symbol-observable-1.2.0.tgz",
+      "integrity": "sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/table": {
+      "version": "5.4.6",
+      "resolved": "https://registry.nlark.com/table/download/table-5.4.6.tgz",
+      "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=",
+      "dev": true,
+      "dependencies": {
+        "ajv": "^6.10.2",
+        "lodash": "^4.17.14",
+        "slice-ansi": "^2.1.0",
+        "string-width": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/table/node_modules/emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz?cache=0&sync_timestamp=1614682707048&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-regex-7.0.3.tgz",
+      "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
+      "dev": true
+    },
+    "node_modules/table/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/table/node_modules/string-width": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz?cache=0&sync_timestamp=1618558823901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz",
+      "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/table/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/tapable": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz?cache=0&sync_timestamp=1607088905649&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftapable%2Fdownload%2Ftapable-1.1.3.tgz",
+      "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/tar": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npm.taobao.org/tar/download/tar-2.2.2.tgz",
+      "integrity": "sha1-DKiEhWLHKZuLRG/2pNYM27I+3EA=",
+      "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.",
+      "dev": true,
+      "dependencies": {
+        "block-stream": "*",
+        "fstream": "^1.0.12",
+        "inherits": "2"
+      }
+    },
+    "node_modules/terser": {
+      "version": "4.8.0",
+      "resolved": "https://registry.nlark.com/terser/download/terser-4.8.0.tgz",
+      "integrity": "sha1-YwVjQ9fHC7KfOvZlhlpG/gOg3xc=",
+      "dev": true,
+      "dependencies": {
+        "commander": "^2.20.0",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.12"
+      },
+      "bin": {
+        "terser": "bin/terser"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/terser-webpack-plugin": {
+      "version": "1.4.5",
+      "resolved": "https://registry.nlark.com/terser-webpack-plugin/download/terser-webpack-plugin-1.4.5.tgz?cache=0&sync_timestamp=1620830698693&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-1.4.5.tgz",
+      "integrity": "sha1-oheu+uozDnNP+sthIOwfoxLWBAs=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/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,
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^2.0.0",
+        "pkg-dir": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz",
+      "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/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,
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/make-dir": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz?cache=0&sync_timestamp=1587567572251&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-2.1.0.tgz",
+      "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
+      "dev": true,
+      "dependencies": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+      "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/pkg-dir": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz?cache=0&sync_timestamp=1602859045787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-3.0.0.tgz",
+      "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/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,
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+      "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/terser/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz",
+      "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+      "dev": true
+    },
+    "node_modules/thenify": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.1.tgz",
+      "integrity": "sha1-iTLmhqQGYDigFt2eLKRq3Zg4qV8=",
+      "dev": true,
+      "dependencies": {
+        "any-promise": "^1.0.0"
+      }
+    },
+    "node_modules/thenify-all": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz",
+      "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
+      "dev": true,
+      "dependencies": {
+        "thenify": ">= 3.1.0 < 4"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "loader-runner": "^2.3.1",
+        "loader-utils": "^1.1.0",
+        "neo-async": "^2.6.0"
+      },
+      "engines": {
+        "node": ">= 6.9.0 <7.0.0 || >= 8.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0"
+      }
+    },
+    "node_modules/throttle-debounce": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-1.1.0.tgz?cache=0&sync_timestamp=1604313832516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthrottle-debounce%2Fdownload%2Fthrottle-debounce-1.1.0.tgz",
+      "integrity": "sha1-UYU9o3vmihVctugns1FKPEIuic0=",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+      "dev": true
+    },
+    "node_modules/through2": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz",
+      "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=",
+      "dev": true,
+      "dependencies": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
+    "node_modules/thunky": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/thunky/download/thunky-1.1.0.tgz",
+      "integrity": "sha1-Wrr3FKlAXbBQRzK7zNLO3Z75U30=",
+      "dev": true
+    },
+    "node_modules/timers-browserify": {
+      "version": "2.0.12",
+      "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.12.tgz?cache=0&sync_timestamp=1603793741116&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftimers-browserify%2Fdownload%2Ftimers-browserify-2.0.12.tgz",
+      "integrity": "sha1-RKRcEfv0B/NPl7zNFXfGUjYbAO4=",
+      "dev": true,
+      "dependencies": {
+        "setimmediate": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/timsort": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz",
+      "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
+      "dev": true
+    },
+    "node_modules/tiny-emitter": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/tiny-emitter/download/tiny-emitter-2.1.0.tgz",
+      "integrity": "sha1-HRpW7fxRxD6GPLtTgqcjMONVVCM="
+    },
+    "node_modules/tmp": {
+      "version": "0.0.33",
+      "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz?cache=0&sync_timestamp=1588178571895&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftmp%2Fdownload%2Ftmp-0.0.33.tgz",
+      "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=",
+      "dev": true,
+      "dependencies": {
+        "os-tmpdir": "~1.0.2"
+      },
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz?cache=0&sync_timestamp=1580550317222&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fto-fast-properties%2Fdownload%2Fto-fast-properties-2.0.0.tgz",
+      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/to-object-path": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz",
+      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-object-path/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-regex": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz",
+      "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
+      "dev": true,
+      "dependencies": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz",
+      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz",
+      "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/toposort": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz",
+      "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
+      "dev": true
+    },
+    "node_modules/tough-cookie": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz?cache=0&sync_timestamp=1584646121003&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-2.5.0.tgz",
+      "integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=",
+      "dev": true,
+      "dependencies": {
+        "psl": "^1.1.28",
+        "punycode": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/trim-newlines": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/trim-newlines/download/trim-newlines-1.0.0.tgz?cache=0&sync_timestamp=1619005721489&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftrim-newlines%2Fdownload%2Ftrim-newlines-1.0.0.tgz",
+      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/true-case-path": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/true-case-path/download/true-case-path-1.0.3.tgz",
+      "integrity": "sha1-+BO1qMhrQNpZYGcisUTjIleZ9H0=",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.2"
+      }
+    },
+    "node_modules/tryer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/tryer/download/tryer-1.0.1.tgz",
+      "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=",
+      "dev": true
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/tsconfig-paths": {
+      "version": "3.9.0",
+      "resolved": "https://registry.npm.taobao.org/tsconfig-paths/download/tsconfig-paths-3.9.0.tgz",
+      "integrity": "sha1-CYVHpsREiAfo/Ljq4IEGTumjyQs=",
+      "dev": true,
+      "dependencies": {
+        "@types/json5": "^0.0.29",
+        "json5": "^1.0.1",
+        "minimist": "^1.2.0",
+        "strip-bom": "^3.0.0"
+      }
+    },
+    "node_modules/tsconfig-paths/node_modules/json5": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz",
+      "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.14.1.tgz",
+      "integrity": "sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "^5.0.1"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz?cache=0&sync_timestamp=1581364203962&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftweetnacl%2Fdownload%2Ftweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "dev": true
+    },
+    "node_modules/type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz",
+      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz",
+      "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=",
+      "dev": true,
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "commander": "~2.19.0",
+        "source-map": "~0.6.1"
+      },
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/uglify-js/node_modules/commander": {
+      "version": "2.19.0",
+      "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz?cache=0&sync_timestamp=1616364009866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.19.0.tgz",
+      "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=",
+      "dev": true
+    },
+    "node_modules/uglify-js/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unbox-primitive": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/unbox-primitive/download/unbox-primitive-1.0.1.tgz?cache=0&sync_timestamp=1616706302651&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funbox-primitive%2Fdownload%2Funbox-primitive-1.0.1.tgz",
+      "integrity": "sha1-CF4hViXsMWJXTciFmr7nilmxRHE=",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "has-bigints": "^1.0.1",
+        "has-symbols": "^1.0.2",
+        "which-boxed-primitive": "^1.0.2"
+      }
+    },
+    "node_modules/unicode-canonical-property-names-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+      "integrity": "sha1-JhmADEyCWADv3YNDr33Zkzy+KBg=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz",
+      "integrity": "sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw=",
+      "dev": true,
+      "dependencies": {
+        "unicode-canonical-property-names-ecmascript": "^1.0.4",
+        "unicode-property-aliases-ecmascript": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/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?cache=0&sync_timestamp=1583945910569&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funicode-property-aliases-ecmascript%2Fdownload%2Funicode-property-aliases-ecmascript-1.1.0.tgz",
+      "integrity": "sha1-3Vepn2IHvt/0Yoq++5TFDblByPQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/union-value": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz",
+      "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=",
+      "dev": true,
+      "dependencies": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/uniq": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz",
+      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+      "dev": true
+    },
+    "node_modules/uniqs": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz",
+      "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "node_modules/unique-slug": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz",
+      "integrity": "sha1-uqvOkQg/xk6UWw861hPiZPfNTmw=",
+      "dev": true,
+      "dependencies": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "node_modules/universalify": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz?cache=0&sync_timestamp=1603179967633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-0.1.2.tgz",
+      "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=",
+      "dev": true,
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/unquote": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz",
+      "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
+      "dev": true
+    },
+    "node_modules/unset-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz?cache=0&sync_timestamp=1616088539233&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funset-value%2Fdownload%2Funset-value-1.0.0.tgz",
+      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "dev": true,
+      "dependencies": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/has-value": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz",
+      "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+      "dev": true,
+      "dependencies": {
+        "get-value": "^2.0.3",
+        "has-values": "^0.1.4",
+        "isobject": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/has-value/node_modules/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,
+      "dependencies": {
+        "isarray": "1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/upath": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz?cache=0&sync_timestamp=1604768535464&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupath%2Fdownload%2Fupath-1.2.0.tgz",
+      "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=4",
+        "yarn": "*"
+      }
+    },
+    "node_modules/upper-case": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz",
+      "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+      "dev": true
+    },
+    "node_modules/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=",
+      "dev": true,
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/urix": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz",
+      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+      "deprecated": "Please see https://github.com/lydell/urix#deprecated",
+      "dev": true
+    },
+    "node_modules/url": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz",
+      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "dev": true,
+      "dependencies": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "loader-utils": "^1.2.3",
+        "mime": "^2.4.4",
+        "schema-utils": "^2.5.0"
+      },
+      "engines": {
+        "node": ">= 8.9.0"
+      },
+      "peerDependencies": {
+        "file-loader": "*",
+        "webpack": "^4.0.0"
+      },
+      "peerDependenciesMeta": {
+        "file-loader": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/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=1613660079745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-parse%2Fdownload%2Furl-parse-1.5.1.tgz",
+      "integrity": "sha1-1fqYkK+KXh8nSiyYN2UQ9kJfbjs=",
+      "dev": true,
+      "dependencies": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "node_modules/url/node_modules/punycode": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz",
+      "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+      "dev": true
+    },
+    "node_modules/use": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz",
+      "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/util": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil%2Fdownload%2Futil-0.11.1.tgz",
+      "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "2.0.3"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "node_modules/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,
+      "dependencies": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.2",
+        "has-symbols": "^1.0.1",
+        "object.getownpropertydescriptors": "^2.1.0"
+      }
+    },
+    "node_modules/util/node_modules/inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true
+    },
+    "node_modules/utila": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npm.taobao.org/utila/download/utila-0.4.0.tgz",
+      "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
+      "dev": true
+    },
+    "node_modules/utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/uuid": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz?cache=0&sync_timestamp=1607460081656&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.4.0.tgz",
+      "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=",
+      "deprecated": "Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.",
+      "dev": true,
+      "bin": {
+        "uuid": "bin/uuid"
+      }
+    },
+    "node_modules/v8-compile-cache": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.3.0.tgz?cache=0&sync_timestamp=1614993639567&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fv8-compile-cache%2Fdownload%2Fv8-compile-cache-2.3.0.tgz",
+      "integrity": "sha1-LeGWGMZtwkfc+2+ZM4A12CRaLO4=",
+      "dev": true
+    },
+    "node_modules/validate-npm-package-license": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=",
+      "dev": true,
+      "dependencies": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/vendors": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/vendors/download/vendors-1.0.4.tgz?cache=0&sync_timestamp=1615203425696&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvendors%2Fdownload%2Fvendors-1.0.4.tgz",
+      "integrity": "sha1-4rgApT56Kbk1BsPPQRANFsTErY4=",
+      "dev": true
+    },
+    "node_modules/verror": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "dev": true,
+      "engines": [
+        "node >=0.6.0"
+      ],
+      "dependencies": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "node_modules/vm-browserify": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz?cache=0&sync_timestamp=1572870717730&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvm-browserify%2Fdownload%2Fvm-browserify-1.1.2.tgz",
+      "integrity": "sha1-eGQcSIuObKkadfUR56OzKobl3aA=",
+      "dev": true
+    },
+    "node_modules/vue": {
+      "version": "2.6.12",
+      "resolved": "https://registry.nlark.com/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1620856192360&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue%2Fdownload%2Fvue-2.6.12.tgz",
+      "integrity": "sha1-9evU+mvShpQD4pqJau1JBEVskSM="
+    },
+    "node_modules/vue-cli-plugin-element-ui": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npm.taobao.org/vue-cli-plugin-element-ui/download/vue-cli-plugin-element-ui-1.1.4.tgz",
+      "integrity": "sha1-gwdkDYUjC6YeFekmh59pW6jurt8=",
+      "dev": true
+    },
+    "node_modules/vue-clipboard2": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npm.taobao.org/vue-clipboard2/download/vue-clipboard2-0.3.1.tgz",
+      "integrity": "sha1-blUft704SImyiw2jsSKJ7WvKSJQ=",
+      "dependencies": {
+        "clipboard": "^2.0.0"
+      }
+    },
+    "node_modules/vue-eslint-parser": {
+      "version": "7.6.0",
+      "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-7.6.0.tgz?cache=0&sync_timestamp=1614679548045&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-eslint-parser%2Fdownload%2Fvue-eslint-parser-7.6.0.tgz",
+      "integrity": "sha1-AeoaKTL1gf8kQzZWXXEoAfj3JWE=",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.1.1",
+        "eslint-scope": "^5.0.0",
+        "eslint-visitor-keys": "^1.1.0",
+        "espree": "^6.2.1",
+        "esquery": "^1.4.0",
+        "lodash": "^4.17.15"
+      },
+      "engines": {
+        "node": ">=8.10"
+      },
+      "peerDependencies": {
+        "eslint": ">=5.0.0"
+      }
+    },
+    "node_modules/vue-eslint-parser/node_modules/eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.1.tgz?cache=0&sync_timestamp=1599933651660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-5.1.1.tgz",
+      "integrity": "sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=",
+      "dev": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/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,
+      "dependencies": {
+        "@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"
+      },
+      "peerDependencies": {
+        "css-loader": "*",
+        "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0"
+      },
+      "peerDependenciesMeta": {
+        "cache-loader": {
+          "optional": true
+        },
+        "vue-template-compiler": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue-loader-v16": {
+      "name": "vue-loader",
+      "version": "16.8.3",
+      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
+      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "chalk": "^4.1.0",
+        "hash-sum": "^2.0.0",
+        "loader-utils": "^2.0.0"
+      }
+    },
+    "node_modules/vue-loader-v16/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/vue-loader-v16/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/vue-loader-v16/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/vue-loader-v16/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/vue-loader-v16/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "optional": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/vue-loader-v16/node_modules/loader-utils": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+      "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^2.1.2"
+      },
+      "engines": {
+        "node": ">=8.9.0"
+      }
+    },
+    "node_modules/vue-loader-v16/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/vue-loader/node_modules/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
+    },
+    "node_modules/vue-router": {
+      "version": "3.5.1",
+      "resolved": "https://registry.nlark.com/vue-router/download/vue-router-3.5.1.tgz?cache=0&sync_timestamp=1620899536020&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-router%2Fdownload%2Fvue-router-3.5.1.tgz",
+      "integrity": "sha1-7fPPSQeVLR4Fg+B5I3Igxf9utsk="
+    },
+    "node_modules/vue-style-loader": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.3.tgz",
+      "integrity": "sha1-bVWGOlH6dXqyTonZNxRlByqnvDU=",
+      "dev": true,
+      "dependencies": {
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.0.2"
+      }
+    },
+    "node_modules/vue-style-loader/node_modules/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
+    },
+    "node_modules/vue-template-compiler": {
+      "version": "2.6.12",
+      "resolved": "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.12.tgz?cache=0&sync_timestamp=1597927407682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-template-compiler%2Fdownload%2Fvue-template-compiler-2.6.12.tgz",
+      "integrity": "sha1-lH7XGWdEyKUoXr4SM/6WBDf8xX4=",
+      "dev": true,
+      "dependencies": {
+        "de-indent": "^1.0.2",
+        "he": "^1.1.0"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/vuescroll": {
+      "version": "4.17.3",
+      "resolved": "https://registry.npm.taobao.org/vuescroll/download/vuescroll-4.17.3.tgz",
+      "integrity": "sha1-4cKTcqAH4N/wzua0UVeD1Dkk+eE=",
+      "peerDependencies": {
+        "vue": "^2.0.0"
+      }
+    },
+    "node_modules/vuex": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.6.2.tgz?cache=0&sync_timestamp=1612277384353&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvuex%2Fdownload%2Fvuex-3.6.2.tgz",
+      "integrity": "sha1-I2vAhqhww655lG8QfxbeWdWJXnE=",
+      "peerDependencies": {
+        "vue": "^2.0.0"
+      }
+    },
+    "node_modules/watch-size": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/watch-size/download/watch-size-2.0.0.tgz",
+      "integrity": "sha1-CW7ijQNlvX6gPZyL8fL1CnO+FHQ="
+    },
+    "node_modules/watchpack": {
+      "version": "1.7.5",
+      "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.5.tgz",
+      "integrity": "sha1-EmfmxV4Lm1vkTCAjrtVDeiwmxFM=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0"
+      },
+      "optionalDependencies": {
+        "chokidar": "^3.4.1",
+        "watchpack-chokidar2": "^2.0.1"
+      }
+    },
+    "node_modules/watchpack-chokidar2": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/watchpack-chokidar2/download/watchpack-chokidar2-2.0.1.tgz?cache=0&sync_timestamp=1604989128919&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack-chokidar2%2Fdownload%2Fwatchpack-chokidar2-2.0.1.tgz",
+      "integrity": "sha1-OFAAcu5uzmbzdpk2lQ6hdxvhyVc=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/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,
+      "dependencies": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/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,
+      "dependencies": {
+        "remove-trailing-separator": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/binary-extensions": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz?cache=0&sync_timestamp=1610299308660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-1.13.1.tgz",
+      "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+      "dev": true,
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/chokidar": {
+      "version": "2.1.8",
+      "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1610719440699&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz",
+      "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=",
+      "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.1",
+        "braces": "^2.3.2",
+        "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"
+      },
+      "optionalDependencies": {
+        "fsevents": "^1.2.7"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/fsevents": {
+      "version": "1.2.13",
+      "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+      "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+      "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "dependencies": {
+        "bindings": "^1.5.0",
+        "nan": "^2.12.1"
+      },
+      "engines": {
+        "node": ">= 4.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/glob-parent": {
+      "version": "3.1.0",
+      "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+      "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "is-extglob": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/is-binary-path": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "binary-extensions": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/readdirp": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz",
+      "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/wbuf": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz",
+      "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=",
+      "dev": true,
+      "dependencies": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "node_modules/wcwidth": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz",
+      "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+      "dev": true,
+      "dependencies": {
+        "defaults": "^1.0.3"
+      }
+    },
+    "node_modules/webpack": {
+      "version": "4.46.0",
+      "resolved": "https://registry.nlark.com/webpack/download/webpack-4.46.0.tgz?cache=0&sync_timestamp=1620663741729&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwebpack%2Fdownload%2Fwebpack-4.46.0.tgz",
+      "integrity": "sha1-v5tEBOogoHNgXgoBHRiNd8tq1UI=",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      },
+      "bin": {
+        "webpack": "bin/webpack.js"
+      },
+      "engines": {
+        "node": ">=6.11.5"
+      },
+      "peerDependenciesMeta": {
+        "webpack-cli": {
+          "optional": true
+        },
+        "webpack-command": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/webpack-bundle-analyzer": {
+      "version": "3.9.0",
+      "resolved": "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.9.0.tgz",
+      "integrity": "sha1-9vlNsQj7V05BWtMT3kGicH0z7zw=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "bin": {
+        "webpack-bundle-analyzer": "lib/bin/analyzer.js"
+      },
+      "engines": {
+        "node": ">= 6.14.4"
+      }
+    },
+    "node_modules/webpack-bundle-analyzer/node_modules/acorn": {
+      "version": "7.4.1",
+      "resolved": "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1620134123724&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-7.4.1.tgz",
+      "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/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,
+      "dependencies": {
+        "deepmerge": "^1.5.2",
+        "javascript-stringify": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/webpack-dev-middleware": {
+      "version": "3.7.3",
+      "resolved": "https://registry.nlark.com/webpack-dev-middleware/download/webpack-dev-middleware-3.7.3.tgz",
+      "integrity": "sha1-Bjk3KxQyYuK4SrldO5GnWXBhwsU=",
+      "dev": true,
+      "dependencies": {
+        "memory-fs": "^0.4.1",
+        "mime": "^2.4.4",
+        "mkdirp": "^0.5.1",
+        "range-parser": "^1.2.1",
+        "webpack-log": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server": {
+      "version": "3.11.2",
+      "resolved": "https://registry.nlark.com/webpack-dev-server/download/webpack-dev-server-3.11.2.tgz",
+      "integrity": "sha1-aV687Xakkp8NXef9c/r+GF/jNwg=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "bin": {
+        "webpack-dev-server": "bin/webpack-dev-server.js"
+      },
+      "engines": {
+        "node": ">= 6.11.5"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "webpack-cli": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/anymatch": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/anymatch/download/anymatch-2.0.0.tgz",
+      "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+      "dev": true,
+      "dependencies": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/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,
+      "dependencies": {
+        "remove-trailing-separator": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/binary-extensions": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz?cache=0&sync_timestamp=1610299308660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-1.13.1.tgz",
+      "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603923709404&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz",
+      "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/chokidar": {
+      "version": "2.1.8",
+      "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1610719440699&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz",
+      "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=",
+      "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
+      "dev": true,
+      "dependencies": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.1",
+        "braces": "^2.3.2",
+        "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"
+      },
+      "optionalDependencies": {
+        "fsevents": "^1.2.7"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/cliui": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz?cache=0&sync_timestamp=1604880033053&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-5.0.0.tgz",
+      "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/cliui/node_modules/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,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/cliui/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz?cache=0&sync_timestamp=1614682707048&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-regex-7.0.3.tgz",
+      "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
+      "dev": true
+    },
+    "node_modules/webpack-dev-server/node_modules/find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz",
+      "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/fsevents": {
+      "version": "1.2.13",
+      "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+      "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+      "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "dependencies": {
+        "bindings": "^1.5.0",
+        "nan": "^2.12.1"
+      },
+      "engines": {
+        "node": ">= 4.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/glob-parent": {
+      "version": "3.1.0",
+      "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+      "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": {
+      "version": "0.19.1",
+      "resolved": "https://registry.nlark.com/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz",
+      "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=",
+      "dev": true,
+      "dependencies": {
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/is-absolute-url": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz",
+      "integrity": "sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/is-binary-path": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+      "dev": true,
+      "dependencies": {
+        "binary-extensions": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/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,
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+      "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/readdirp": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz",
+      "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/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,
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/string-width": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz?cache=0&sync_timestamp=1618558823901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz",
+      "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/string-width/node_modules/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,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/string-width/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/supports-color": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1618560959124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz",
+      "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/wrap-ansi": {
+      "version": "5.1.0",
+      "resolved": "https://registry.nlark.com/wrap-ansi/download/wrap-ansi-5.1.0.tgz",
+      "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.0",
+        "string-width": "^3.0.0",
+        "strip-ansi": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/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,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/yargs": {
+      "version": "13.3.2",
+      "resolved": "https://registry.nlark.com/yargs/download/yargs-13.3.2.tgz?cache=0&sync_timestamp=1620086644940&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-13.3.2.tgz",
+      "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/yargs-parser": {
+      "version": "13.1.2",
+      "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.2.tgz?cache=0&sync_timestamp=1615405185480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.2.tgz",
+      "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    },
+    "node_modules/webpack-log": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz",
+      "integrity": "sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=",
+      "dev": true,
+      "dependencies": {
+        "ansi-colors": "^3.0.0",
+        "uuid": "^3.3.2"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/webpack-merge": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.2.tgz",
+      "integrity": "sha1-onxS6ng9E5iv0gh/VH17nS9DY00=",
+      "dev": true,
+      "dependencies": {
+        "lodash": "^4.17.15"
+      }
+    },
+    "node_modules/webpack-sources": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.4.3.tgz?cache=0&sync_timestamp=1603965311142&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-sources%2Fdownload%2Fwebpack-sources-1.4.3.tgz",
+      "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=",
+      "dev": true,
+      "dependencies": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      }
+    },
+    "node_modules/webpack-sources/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1571657176668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/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,
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/websocket-driver": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.4.tgz?cache=0&sync_timestamp=1591288600527&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebsocket-driver%2Fdownload%2Fwebsocket-driver-0.7.4.tgz",
+      "integrity": "sha1-ia1Slbv2S0gKvLox5JU6ynBvV2A=",
+      "dev": true,
+      "dependencies": {
+        "http-parser-js": ">=0.5.1",
+        "safe-buffer": ">=5.1.0",
+        "websocket-extensions": ">=0.1.1"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/websocket-extensions": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.4.tgz?cache=0&sync_timestamp=1591103014229&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebsocket-extensions%2Fdownload%2Fwebsocket-extensions-0.1.4.tgz",
+      "integrity": "sha1-f4RzvIOd/YdgituV1+sHUhFXikI=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&sync_timestamp=1574116720213&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz",
+      "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/which-boxed-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/which-boxed-primitive/download/which-boxed-primitive-1.0.2.tgz?cache=0&sync_timestamp=1614855347940&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich-boxed-primitive%2Fdownload%2Fwhich-boxed-primitive-1.0.2.tgz",
+      "integrity": "sha1-E3V7yJsgmwSf5dhkMOIc9AqJqOY=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/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
+    },
+    "node_modules/wide-align": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/wide-align/download/wide-align-1.1.3.tgz",
+      "integrity": "sha1-rgdOa9wMFKQx6ATmJFScYzsABFc=",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^1.0.2 || 2"
+      }
+    },
+    "node_modules/wide-align/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/wide-align/node_modules/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/wide-align/node_modules/string-width": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1618558823901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz",
+      "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+      "dev": true,
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/wide-align/node_modules/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,
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/word-wrap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz",
+      "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/worker-farm": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz",
+      "integrity": "sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=",
+      "dev": true,
+      "dependencies": {
+        "errno": "~0.1.7"
+      }
+    },
+    "node_modules/wrap-ansi": {
+      "version": "7.0.0",
+      "resolved": "https://registry.nlark.com/wrap-ansi/download/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
+      "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/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,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
+      "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/write": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz",
+      "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=",
+      "dev": true,
+      "dependencies": {
+        "mkdirp": "^0.5.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ws": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz?cache=0&sync_timestamp=1618734243525&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-6.2.1.tgz",
+      "integrity": "sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=",
+      "dev": true,
+      "dependencies": {
+        "async-limiter": "~1.0.0"
+      }
+    },
+    "node_modules/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,
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
+    "node_modules/y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.3.tgz",
+      "integrity": "sha1-tfJZyCzW4zaSHv17/Yv1YN6e7t8=",
+      "dev": true
+    },
+    "node_modules/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
+    },
+    "node_modules/yargs": {
+      "version": "16.2.0",
+      "resolved": "https://registry.nlark.com/yargs/download/yargs-16.2.0.tgz?cache=0&sync_timestamp=1620086644940&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-16.2.0.tgz",
+      "integrity": "sha1-HIK/D2tqZur85+8w43b0mhJHf2Y=",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "20.2.7",
+      "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-20.2.7.tgz?cache=0&sync_timestamp=1615405185480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-20.2.7.tgz",
+      "integrity": "sha1-Yd+FwRPt+1p6TjbriqYO9CPLyQo=",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yargs/node_modules/cliui": {
+      "version": "7.0.4",
+      "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-7.0.4.tgz?cache=0&sync_timestamp=1604880033053&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-7.0.4.tgz",
+      "integrity": "sha1-oCZe5lVHb8gHrqnfPfjfd4OAi08=",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^7.0.0"
+      }
+    },
+    "node_modules/yargs/node_modules/y18n": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-5.0.8.tgz",
+      "integrity": "sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU=",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yorkie": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz",
+      "integrity": "sha1-kkEZEtQ1IU4SxRwq4Qk+VLa7g9k=",
+      "dev": true,
+      "hasInstallScript": true,
+      "dependencies": {
+        "execa": "^0.8.0",
+        "is-ci": "^1.0.10",
+        "normalize-path": "^1.0.0",
+        "strip-indent": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yorkie/node_modules/cross-spawn": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz",
+      "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^4.0.1",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "node_modules/yorkie/node_modules/execa": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz?cache=0&sync_timestamp=1606971018065&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.8.0.tgz",
+      "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^5.0.1",
+        "get-stream": "^3.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yorkie/node_modules/get-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-3.0.0.tgz",
+      "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yorkie/node_modules/lru-cache": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz?cache=0&sync_timestamp=1594427582110&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-4.1.5.tgz",
+      "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+      "dev": true,
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/yorkie/node_modules/normalize-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz",
+      "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/yorkie/node_modules/yallist": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+      "dev": true
+    }
+  },
   "dependencies": {
     "@babel/code-frame": {
       "version": "7.12.13",
@@ -1742,7 +19030,8 @@
       "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
+      "dev": true,
+      "requires": {}
     },
     "@vue/cli-service": {
       "version": "4.5.13",
@@ -1814,63 +19103,6 @@
           "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
           "dev": true
         },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true,
-          "optional": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true,
-          "optional": true
-        },
-        "loader-utils": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
-          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
-          "dev": true,
-          "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.npm.taobao.org/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
@@ -1878,28 +19110,6 @@
           "dev": true,
           "requires": {
             "minipass": "^3.1.1"
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "vue-loader-v16": {
-          "version": "npm:vue-loader@16.8.3",
-          "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
-          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chalk": "^4.1.0",
-            "hash-sum": "^2.0.0",
-            "loader-utils": "^2.0.0"
           }
         }
       }
@@ -1986,7 +19196,8 @@
       "version": "1.1.2",
       "resolved": "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fpreload-webpack-plugin%2Fdownload%2F%40vue%2Fpreload-webpack-plugin-1.1.2.tgz",
       "integrity": "sha1-zrkktOyzucQ4ccekKaAvhCPmIas=",
-      "dev": true
+      "dev": true,
+      "requires": {}
     },
     "@vue/web-component-wrapper": {
       "version": "1.3.0",
@@ -2207,7 +19418,8 @@
       "version": "5.3.1",
       "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.3.1.tgz?cache=0&sync_timestamp=1599499155970&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.3.1.tgz",
       "integrity": "sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns=",
-      "dev": true
+      "dev": true,
+      "requires": {}
     },
     "acorn-walk": {
       "version": "7.2.0",
@@ -2247,13 +19459,15 @@
       "version": "1.0.1",
       "resolved": "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz",
       "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=",
-      "dev": true
+      "dev": true,
+      "requires": {}
     },
     "ajv-keywords": {
       "version": "3.5.2",
       "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1616882441894&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz",
       "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=",
-      "dev": true
+      "dev": true,
+      "requires": {}
     },
     "alphanum-sort": {
       "version": "1.0.2",
@@ -5235,7 +22449,8 @@
       "version": "14.1.1",
       "resolved": "https://registry.npm.taobao.org/eslint-config-standard/download/eslint-config-standard-14.1.1.tgz?cache=0&sync_timestamp=1605664520005&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-config-standard%2Fdownload%2Feslint-config-standard-14.1.1.tgz",
       "integrity": "sha1-gwqOROeu995nRkl5rQa0BgJsVuo=",
-      "dev": true
+      "dev": true,
+      "requires": {}
     },
     "eslint-import-resolver-node": {
       "version": "0.3.4",
@@ -5587,7 +22802,8 @@
       "version": "4.1.0",
       "resolved": "https://registry.npm.taobao.org/eslint-plugin-standard/download/eslint-plugin-standard-4.1.0.tgz?cache=0&sync_timestamp=1606091897901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-standard%2Fdownload%2Feslint-plugin-standard-4.1.0.tgz",
       "integrity": "sha1-DDvzpn6FP4u7xYD7SUX78W9Bt8U=",
-      "dev": true
+      "dev": true,
+      "requires": {}
     },
     "eslint-plugin-vue": {
       "version": "6.2.2",
@@ -12243,6 +29459,15 @@
       "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
       "dev": true
     },
+    "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"
+      }
+    },
     "string-argv": {
       "version": "0.3.1",
       "resolved": "https://registry.npm.taobao.org/string-argv/download/string-argv-0.3.1.tgz",
@@ -12278,15 +29503,6 @@
       "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"
       }
     },
     "stringify-object": {
@@ -13290,6 +30506,87 @@
         }
       }
     },
+    "vue-loader-v16": {
+      "version": "npm:vue-loader@16.8.3",
+      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
+      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chalk": "^4.1.0",
+        "hash-sum": "^2.0.0",
+        "loader-utils": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true,
+          "optional": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true,
+          "optional": true
+        },
+        "loader-utils": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "vue-router": {
       "version": "3.5.1",
       "resolved": "https://registry.nlark.com/vue-router/download/vue-router-3.5.1.tgz?cache=0&sync_timestamp=1620899536020&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-router%2Fdownload%2Fvue-router-3.5.1.tgz",
@@ -13332,12 +30629,14 @@
     "vuescroll": {
       "version": "4.17.3",
       "resolved": "https://registry.npm.taobao.org/vuescroll/download/vuescroll-4.17.3.tgz",
-      "integrity": "sha1-4cKTcqAH4N/wzua0UVeD1Dkk+eE="
+      "integrity": "sha1-4cKTcqAH4N/wzua0UVeD1Dkk+eE=",
+      "requires": {}
     },
     "vuex": {
       "version": "3.6.2",
       "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.6.2.tgz?cache=0&sync_timestamp=1612277384353&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvuex%2Fdownload%2Fvuex-3.6.2.tgz",
-      "integrity": "sha1-I2vAhqhww655lG8QfxbeWdWJXnE="
+      "integrity": "sha1-I2vAhqhww655lG8QfxbeWdWJXnE=",
+      "requires": {}
     },
     "watch-size": {
       "version": "2.0.0",
diff --git a/platform/package.json b/platform/package.json
index 0434d88..14effa1 100644
--- a/platform/package.json
+++ b/platform/package.json
@@ -5,7 +5,6 @@
   "scripts": {
     "serve": "vue-cli-service serve",
     "build:pro": "vue-cli-service build",
-    "build:pro_v2": "vue-cli-service build --mode production_v2",
     "build:dev": "vue-cli-service build --mode staging",
     "lint": "vue-cli-service lint",
     "fix": "eslint --ext .js,.vue src --fix"
diff --git a/platform/public/bitbug_favicon.ico b/platform/public/bitbug_favicon.ico
deleted file mode 100644
index 64ccd74..0000000
--- a/platform/public/bitbug_favicon.ico
+++ /dev/null
Binary files differ
diff --git a/platform/public/favicon.ico b/platform/public/favicon.ico
index c6ff5db..64ccd74 100644
--- a/platform/public/favicon.ico
+++ b/platform/public/favicon.ico
Binary files differ
diff --git a/platform/public/file/typeWork.xlsx b/platform/public/file/typeWork.xlsx
deleted file mode 100644
index 6da7e14..0000000
--- a/platform/public/file/typeWork.xlsx
+++ /dev/null
Binary files differ
diff --git a/platform/public/index.html b/platform/public/index.html
index 8314eac..7b5e3e7 100644
--- a/platform/public/index.html
+++ b/platform/public/index.html
@@ -4,12 +4,12 @@
     <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 %>bitbug_favicon.ico">
-    <title>浜戞槗淇�</title>
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <title>浜戞槗淇濆鎴锋湇鍔$郴缁�</title>
   </head>
   <body>
     <noscript>
-      <strong>We're sorry but 浜戞槗淇� doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+      <strong>We're sorry but 浜戞槗淇濆鎴锋湇鍔$郴缁� doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
     </noscript>
     <div id="app"></div>
     <!-- built files will be auto injected -->
diff --git a/platform/public/template/goods_import_modle.xlsx b/platform/public/template/goods_import_modle.xlsx
new file mode 100644
index 0000000..31b678a
--- /dev/null
+++ b/platform/public/template/goods_import_modle.xlsx
Binary files differ
diff --git a/platform/src/App.vue b/platform/src/App.vue
index d22b2c9..2892abe 100644
--- a/platform/src/App.vue
+++ b/platform/src/App.vue
@@ -3,20 +3,10 @@
 </template>
 
 <style lang="scss">
-@import "assets/style/lib.css";
 // 寮曞叆鍏ㄥ眬鏍峰紡
 @import "assets/style/style";
 // 寮曞叆绯荤粺鍐呯疆鍥炬爣
 @import "assets/icons/system/index";
 // 寮曞叆鑷畾涔夊浘鏍�
 @import "assets/icons/ext/index";
-.long-title-style {
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  -webkit-text-overflow: ellipsis;
-  overflow: hidden;
-}
-.el-tooltip__popper.is-dark {
-  max-width: 400px;
-}
 </style>
diff --git a/platform/src/api/business/applyChange.js b/platform/src/api/business/applyChange.js
deleted file mode 100644
index f1decd8..0000000
--- a/platform/src/api/business/applyChange.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-    return request.post('/business/applyChange/page', data, {
-        trim: true
-    })
-}
-
-// 淇敼
-export function updateById (data) {
-    return request.post('/business/applyChange/updateById', data)
-}
diff --git a/platform/src/api/business/baseData.js b/platform/src/api/business/baseData.js
new file mode 100644
index 0000000..197c405
--- /dev/null
+++ b/platform/src/api/business/baseData.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/baseData/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/business/baseData/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/business/baseData/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/business/baseData/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/business/baseData/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/business/baseData/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/platform/src/api/business/brand.js b/platform/src/api/business/brand.js
new file mode 100644
index 0000000..a62fd03
--- /dev/null
+++ b/platform/src/api/business/brand.js
@@ -0,0 +1,31 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/brand/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/business/brand/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/business/brand/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/business/brand/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/business/brand/delete/${id}`)
+}
diff --git a/platform/src/api/business/category.js b/platform/src/api/business/category.js
new file mode 100644
index 0000000..23818c9
--- /dev/null
+++ b/platform/src/api/business/category.js
@@ -0,0 +1,41 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/baseCategory/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/business/baseCategory/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/business/baseCategory/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/business/baseCategory/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/business/baseCategory/delete/${id}`)
+}
+
+// 鏍规嵁ID鏌ヨ
+export function queryById (id) {
+  return request.get(`/business/baseCategory/${id}`)
+}
+
+// 淇敼鐘舵��
+export function updateDisableById (data) {
+  return request.post('/business/baseCategory/updateDisableById', data)
+}
\ No newline at end of file
diff --git a/platform/src/api/business/company.js b/platform/src/api/business/company.js
index 5131034..7721767 100644
--- a/platform/src/api/business/company.js
+++ b/platform/src/api/business/company.js
@@ -2,42 +2,35 @@
 
 // 鏌ヨ
 export function fetchList (data) {
-    return request.post('/business/company/page', data, {
-        trim: true
-    })
+  return request.post('/company/findPlatformPage', data, {
+    trim: true
+  })
 }
 
 // 鍒涘缓
 export function create (data) {
-    return request.post('/business/company/create', data)
+  return request.post('/company/create', data)
 }
 
 // 淇敼
 export function updateById (data) {
-    return request.post('/business/company/updateById', data)
+  return request.post('/company/updateById', data)
+}
+// 淇敼
+export function update (data) {
+  return request.post('/company/update', data)
 }
 
-// 鏌ヨ鍏ㄩ儴鏁版嵁(璐﹀彿鍒嗛厤浼佷笟浣跨敤)
-export function pageAll (data) {
-    return request.post('/business/company/pageAll', data)
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/company/delete/${id}`)
 }
 
-// 鏍规嵁ID绂佺敤鍚敤
-export function updateStatus (data) {
-    return request.post('/business/company/updateStatus', data)
-}
-
-// 鏍规嵁ID鏌ヨ
-export function getById (id) {
-    return request.get(`/business/company/${id}`)
-}
-
-// 浼佷笟鏇存崲鎵嬫満鍙�
-export function updatePhone (data) {
-    return request.post('/business/company/updatePhone', data)
-}
-
-// 淇敼淇濋櫓鏂规
-export function updateSolutions (data) {
-    return request.post('/business/company/updateSolutions', data)
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/company/delete/batch', {
+    params: {
+      ids
+    }
+  })
 }
diff --git a/platform/src/api/business/companyPermission.js b/platform/src/api/business/companyPermission.js
deleted file mode 100644
index 6afbf1a..0000000
--- a/platform/src/api/business/companyPermission.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import request from '../../utils/request'
-
-// 璐﹀彿鍒嗛厤浼佷笟
-export function create (data) {
-    return request.post('/business/companyPermission/create', data)
-}
diff --git a/platform/src/api/business/companyUser.js b/platform/src/api/business/companyUser.js
new file mode 100644
index 0000000..70b3108
--- /dev/null
+++ b/platform/src/api/business/companyUser.js
@@ -0,0 +1,36 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/companyUser/page', data, {
+    trim: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/company/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/company/updateById', data)
+}
+// 淇敼
+export function update (data) {
+  return request.post('/company/update', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/company/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/company/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/platform/src/api/business/dispatchUnit.js b/platform/src/api/business/dispatchUnit.js
deleted file mode 100644
index af8149a..0000000
--- a/platform/src/api/business/dispatchUnit.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-    return request.post('/business/dispatchUnit/page', data, {
-        trim: true
-    })
-}
-
-// 鍒涘缓
-export function create (data) {
-    return request.post('/business/dispatchUnit/create', data)
-}
diff --git a/platform/src/api/business/fileRecord.js b/platform/src/api/business/fileRecord.js
new file mode 100644
index 0000000..5e34b26
--- /dev/null
+++ b/platform/src/api/business/fileRecord.js
@@ -0,0 +1,8 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/fileRecord/page', data, {
+    trim: true
+  })
+}
diff --git a/platform/src/api/business/goods.js b/platform/src/api/business/goods.js
new file mode 100644
index 0000000..1ae02b3
--- /dev/null
+++ b/platform/src/api/business/goods.js
@@ -0,0 +1,66 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/baseGoods/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/business/baseGoods/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 瀵煎嚭妯℃澘
+export function exportDoc (params) {
+  return request.get('/business/baseGoods/export', params, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/business/baseGoods/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/business/baseGoods/update', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/business/baseGoods/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/business/baseGoods/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
+
+// 淇敼鐘舵��
+export function updateStatus (data) {
+  return request.post('/business/baseGoods/updateStatus', data)
+}
+/*export function updateStatusById (data) {
+  return request.post('/business/baseGoods/updateStatusById', data)
+}*/
+
+// 鍒楄〃 - 鍟嗗搧閫夋嫨
+export function findListForbaseGoodsId (goodsId) {
+  return request.get(`/business/category/findListForGoodsId?goodsId=${goodsId}`)
+}
+
+// 鏍规嵁ID鏌ヨ
+export function queryById (id) {
+  return request.get(`/business/baseGoods/${id}`)
+}
\ No newline at end of file
diff --git a/platform/src/api/business/insurance.js b/platform/src/api/business/insurance.js
deleted file mode 100644
index 2713c67..0000000
--- a/platform/src/api/business/insurance.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-    return request.post('/business/insurance/page', data, {
-        trim: true
-    })
-}
-
-// 瀵煎嚭Excel
-export function exportExcel (data) {
-    return request.post('/business/insurance/exportExcel', data, {
-        trim: true,
-        download: true
-    })
-}
-
-// 鍒涘缓
-export function create (data) {
-    return request.post('/business/insurance/create', data)
-}
-
-// 鏌ヨ鍏ㄩ儴
-export function all (data) {
-    return request.post('/business/insurance/list', data)
-}
-
-// 淇敼
-export function updateById (data) {
-    return request.post('/business/insurance/updateById', data)
-}
-
-// 淇敼鐘舵��
-export function updateStatus (data) {
-    return request.post('/business/insurance/updateStatus', data)
-}
diff --git a/platform/src/api/business/insuranceApply.js b/platform/src/api/business/insuranceApply.js
deleted file mode 100644
index 793cbbb..0000000
--- a/platform/src/api/business/insuranceApply.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-    return request.post('/business/insuranceApply/page', data, {
-        trim: true
-    })
-}
-
-// 淇敼
-export function updateById (data) {
-    return request.post('/business/insuranceApply/updateById', data)
-}
diff --git a/platform/src/api/business/member.js b/platform/src/api/business/member.js
deleted file mode 100644
index b902304..0000000
--- a/platform/src/api/business/member.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-    return request.post('/business/member/page', data, {
-        trim: true
-    })
-}
-
-// 鍒涘缓
-export function create (data) {
-    return request.post('/business/member/create', data)
-}
diff --git a/platform/src/api/business/settleClaims.js b/platform/src/api/business/settleClaims.js
deleted file mode 100644
index 877b2e0..0000000
--- a/platform/src/api/business/settleClaims.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-    return request.post('/business/settleClaims/page', data, {
-        trim: true
-    })
-}
-
-// 淇敼
-export function updateById (data) {
-    return request.post('/business/settleClaims/updateById', data)
-}
diff --git a/platform/src/api/business/smsEmail.js b/platform/src/api/business/smsEmail.js
deleted file mode 100644
index f1e3564..0000000
--- a/platform/src/api/business/smsEmail.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import request from '../../utils/request'
-
-// 鍙戦�佺煭淇¢獙璇佺爜
-export function sendSms (data) {
-    return request.post('/business/smsEmail/sendSms', data)
-}
diff --git a/platform/src/api/business/solutions.js b/platform/src/api/business/solutions.js
deleted file mode 100644
index 103e023..0000000
--- a/platform/src/api/business/solutions.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-    return request.post('/business/solutions/page', data, {
-        trim: true
-    })
-}
-
-// 鍒涘缓
-export function create (data) {
-    return request.post('/business/solutions/create', data)
-}
-
-// 鏌ヨ鍏ㄩ儴淇濋櫓鏂规
-export function all (data) {
-    return request.post('/business/solutions/list', data)
-}
-
-// 绂佺敤鍚敤
-export function updateStatus (data) {
-    return request.post('/business/solutions/updateStatus', data)
-}
-
-// 淇敼
-export function updateById (data) {
-    return request.post('/business/solutions/updateById', data)
-}
-
-// 鏍规嵁ID鏌ヨ
-export function solutionsId (id) {
-    return request.get(`/business/solutions/${id}`)
-}
-
-// 鏌ヨ浼佷笟鍏ㄩ儴鍏宠仈鏂规
-export function listForCompany (data) {
-    return request.post('/business/companySolution/listForCompany', data)
-}
diff --git a/platform/src/api/business/taxes.js b/platform/src/api/business/taxes.js
deleted file mode 100644
index 03a2cee..0000000
--- a/platform/src/api/business/taxes.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-    return request.post('/business/taxes/page', data, {
-        trim: true
-    })
-}
diff --git a/platform/src/api/business/worktype.js b/platform/src/api/business/worktype.js
deleted file mode 100644
index 5d62464..0000000
--- a/platform/src/api/business/worktype.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import request from '../../utils/request'
-
-// 瀵煎叆妯℃澘
-export function importExcel (data) {
-    return request.post(`/business/worktype/importExcel`, data)
-}
-
-// 鏌ヨ鍏ㄩ儴宸ョ
-export function all (data) {
-    return request.post(`/business/worktype/list`, data)
-}
diff --git a/platform/src/api/system/common.js b/platform/src/api/system/common.js
index 53d23a4..a7966ee 100644
--- a/platform/src/api/system/common.js
+++ b/platform/src/api/system/common.js
@@ -36,13 +36,12 @@
 export function category (data) {
   return request.post('/business/category/list', data)
 }
+// 绫诲埆鍒楄〃鏌ヨ
+export function baseCategory (data) {
+  return request.post('/business/baseCategory/findList', data)
+}
 
 // 瀵煎叆妯℃澘
 export function importExcel (data) {
   return request.post('/business/goods/importExcel', data)
-}
-
-// 涓婁紶鎺ュ彛
-export function upload (data) {
-  return request.post('/public/upload', data)
 }
\ No newline at end of file
diff --git a/platform/src/api/system/menu.js b/platform/src/api/system/menu.js
index adad7ad..a88bc4f 100644
--- a/platform/src/api/system/menu.js
+++ b/platform/src/api/system/menu.js
@@ -1,13 +1,8 @@
 import request from '@/utils/request'
 
-// 鏌ヨ----骞冲彴鑿滃崟
-export function fetchTree () {
-  return request.post(`/system/menu/treeList/0`)
-}
-
-// 鏌ヨ----浼佷笟鑿滃崟
-export function fetchTree1 () {
-  return request.post(`/system/menu/treeList/1`)
+// 鏌ヨ
+export function fetchTree (data, type) {
+  return request.post(`/system/menu/treeList/${type}`, data)
 }
 
 // 鏂板缓
@@ -40,8 +35,8 @@
 }
 
 // 鏌ヨ鑿滃崟鏍�
-export function fetchMenuTree () {
-  return request.get('/system/menu/treeNodes?type=0')
+export function fetchMenuTree (params) {
+  return request.get('/system/menu/treeNodes', { params })
 }
 
 // 鎺掑簭
diff --git a/platform/src/api/system/permission.js b/platform/src/api/system/permission.js
index 2f3f92c..055a24d 100644
--- a/platform/src/api/system/permission.js
+++ b/platform/src/api/system/permission.js
@@ -10,6 +10,11 @@
   return request.get('/system/permission/all')
 }
 
+// 鏌ヨ鎵�鏈�
+export function fetchAllCom () {
+  return request.get('/system/permission/all')
+}
+
 // 鏂板缓
 export function create (data) {
   return request.post('/system/permission/create', data, {
diff --git a/platform/src/api/system/user.js b/platform/src/api/system/user.js
index 6473428..a4d52d4 100644
--- a/platform/src/api/system/user.js
+++ b/platform/src/api/system/user.js
@@ -5,6 +5,11 @@
   return request.post('/system/user/page', data)
 }
 
+// 鏌ヨ
+export function findAllList (data) {
+  return request.post('/system/user/findAllList', data)
+}
+
 // 鏂板缓
 export function create (data) {
   return request.post('/system/user/create', data, {
@@ -41,9 +46,4 @@
 // 閲嶇疆瀵嗙爜
 export function resetPwd (data) {
   return request.post('/system/user/resetPwd', data)
-}
-
-// 閲嶇疆瀵嗙爜
-export function updUserStatus (params) {
-  return request.get('/system/user/updUserStatus', {params})
 }
diff --git a/platform/src/assets/avatar/man.png b/platform/src/assets/avatar/man.png
deleted file mode 100644
index a84beb9..0000000
--- a/platform/src/assets/avatar/man.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/avatar/woman.png b/platform/src/assets/avatar/woman.png
deleted file mode 100644
index eef8695..0000000
--- a/platform/src/assets/avatar/woman.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/Galanz@2x.png b/platform/src/assets/images/Galanz@2x.png
deleted file mode 100644
index bbdfef9..0000000
--- a/platform/src/assets/images/Galanz@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/Samsung@2x.png b/platform/src/assets/images/Samsung@2x.png
deleted file mode 100644
index 91ecbe7..0000000
--- a/platform/src/assets/images/Samsung@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/alipay.jpeg b/platform/src/assets/images/alipay.jpeg
new file mode 100644
index 0000000..94d78da
--- /dev/null
+++ b/platform/src/assets/images/alipay.jpeg
Binary files differ
diff --git a/platform/src/assets/images/ar_open@2x.png b/platform/src/assets/images/ar_open@2x.png
deleted file mode 100644
index 7fbbb8e..0000000
--- a/platform/src/assets/images/ar_open@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/background_defult.png b/platform/src/assets/images/background_defult.png
deleted file mode 100644
index d930b7c..0000000
--- a/platform/src/assets/images/background_defult.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/banner_defult.png b/platform/src/assets/images/banner_defult.png
deleted file mode 100644
index 1318be1..0000000
--- a/platform/src/assets/images/banner_defult.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/category/ic_bingxiang@2x.png b/platform/src/assets/images/category/ic_bingxiang@2x.png
deleted file mode 100644
index 8765eaf..0000000
--- a/platform/src/assets/images/category/ic_bingxiang@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/category/ic_dianshi@2x.png b/platform/src/assets/images/category/ic_dianshi@2x.png
deleted file mode 100644
index 3fde123..0000000
--- a/platform/src/assets/images/category/ic_dianshi@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/category/ic_jinshui@2x.png b/platform/src/assets/images/category/ic_jinshui@2x.png
deleted file mode 100644
index 7b9473e..0000000
--- a/platform/src/assets/images/category/ic_jinshui@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/category/ic_kaoxiang@2x.png b/platform/src/assets/images/category/ic_kaoxiang@2x.png
deleted file mode 100644
index 043c75b..0000000
--- a/platform/src/assets/images/category/ic_kaoxiang@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/category/ic_kongtiao@2x.png b/platform/src/assets/images/category/ic_kongtiao@2x.png
deleted file mode 100644
index 0a14d62..0000000
--- a/platform/src/assets/images/category/ic_kongtiao@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/category/ic_qita@2x.png b/platform/src/assets/images/category/ic_qita@2x.png
deleted file mode 100644
index 09fc5e5..0000000
--- a/platform/src/assets/images/category/ic_qita@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/category/ic_reshuiqi@2x.png b/platform/src/assets/images/category/ic_reshuiqi@2x.png
deleted file mode 100644
index 4fb6504..0000000
--- a/platform/src/assets/images/category/ic_reshuiqi@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/category/ic_xiwanji@2x.png b/platform/src/assets/images/category/ic_xiwanji@2x.png
deleted file mode 100644
index cb142dc..0000000
--- a/platform/src/assets/images/category/ic_xiwanji@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/category/ic_xiyiji @2x.png b/platform/src/assets/images/category/ic_xiyiji @2x.png
deleted file mode 100644
index a6ec399..0000000
--- a/platform/src/assets/images/category/ic_xiyiji @2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/category/ic_yanzao@2x.png b/platform/src/assets/images/category/ic_yanzao@2x.png
deleted file mode 100644
index 0dcfc82..0000000
--- a/platform/src/assets/images/category/ic_yanzao@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/ic_copy@2x.png b/platform/src/assets/images/ic_copy@2x.png
deleted file mode 100644
index d0d88dc..0000000
--- a/platform/src/assets/images/ic_copy@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/ic_delete@2x.png b/platform/src/assets/images/ic_delete@2x.png
deleted file mode 100644
index e850687..0000000
--- a/platform/src/assets/images/ic_delete@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/ic_img@2x.png b/platform/src/assets/images/ic_img@2x.png
deleted file mode 100644
index 316b93f..0000000
--- a/platform/src/assets/images/ic_img@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/ic_pk@2x.png b/platform/src/assets/images/ic_pk@2x.png
deleted file mode 100644
index c563243..0000000
--- a/platform/src/assets/images/ic_pk@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/ic_search@2x.png b/platform/src/assets/images/ic_search@2x.png
deleted file mode 100644
index 82e52e7..0000000
--- a/platform/src/assets/images/ic_search@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/login_bg.png b/platform/src/assets/images/login_bg.png
deleted file mode 100644
index edff503..0000000
--- a/platform/src/assets/images/login_bg.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/login_img.jpg b/platform/src/assets/images/login_img.jpg
deleted file mode 100644
index c7024a0..0000000
--- a/platform/src/assets/images/login_img.jpg
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/login_img.png b/platform/src/assets/images/login_img.png
deleted file mode 100644
index 93ec0f9..0000000
--- a/platform/src/assets/images/login_img.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/man.png b/platform/src/assets/images/man.png
index a6e3a8f..a84beb9 100644
--- a/platform/src/assets/images/man.png
+++ b/platform/src/assets/images/man.png
Binary files differ
diff --git a/platform/src/assets/images/pk_defult.png b/platform/src/assets/images/pk_defult.png
deleted file mode 100644
index 3b29ca6..0000000
--- a/platform/src/assets/images/pk_defult.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/qq.png b/platform/src/assets/images/qq.png
new file mode 100644
index 0000000..454f087
--- /dev/null
+++ b/platform/src/assets/images/qq.png
Binary files differ
diff --git a/platform/src/assets/images/top_ic_bolang@2x.png b/platform/src/assets/images/top_ic_bolang@2x.png
deleted file mode 100644
index f3d281b..0000000
--- a/platform/src/assets/images/top_ic_bolang@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/top_ic_chilun@2x.png b/platform/src/assets/images/top_ic_chilun@2x.png
deleted file mode 100644
index 209e1c3..0000000
--- a/platform/src/assets/images/top_ic_chilun@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/images/woman.png b/platform/src/assets/images/woman.png
index 2aaafa6..eef8695 100644
--- a/platform/src/assets/images/woman.png
+++ b/platform/src/assets/images/woman.png
Binary files differ
diff --git a/platform/src/assets/images/wxpay.jpeg b/platform/src/assets/images/wxpay.jpeg
new file mode 100644
index 0000000..5c8fdfc
--- /dev/null
+++ b/platform/src/assets/images/wxpay.jpeg
Binary files differ
diff --git a/platform/src/assets/images/zan.png b/platform/src/assets/images/zan.png
deleted file mode 100644
index 6af5480..0000000
--- a/platform/src/assets/images/zan.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/logo.png b/platform/src/assets/logo.png
index 3c0b233..5d8fd16 100644
--- a/platform/src/assets/logo.png
+++ b/platform/src/assets/logo.png
Binary files differ
diff --git a/platform/src/assets/logo1.png b/platform/src/assets/logo1.png
deleted file mode 100644
index 3c0b233..0000000
--- a/platform/src/assets/logo1.png
+++ /dev/null
Binary files differ
diff --git a/platform/src/assets/style/alertstyle.scss b/platform/src/assets/style/alertstyle.scss
deleted file mode 100644
index 761f010..0000000
--- a/platform/src/assets/style/alertstyle.scss
+++ /dev/null
@@ -1,32 +0,0 @@
-::v-deep .el-form-item {
-  display: flex;
-}
-::v-deep .el-form-item__content {
-  margin-left: 0 !important;
-  flex: 1;
-}
-
-.address-plus {
-  display: flex;
-  justify-content: space-between;
-  ::v-deep .el-select {
-    width: 31%;
-    .el-input__inner {
-      width: 100%;
-    }
-  }
-}
-.address {
-  display: flex;
-  justify-content: space-between;
-  ::v-deep .el-select {
-    width: 47%;
-    .el-input__inner {
-      width: 100%;
-    }
-  }
-}
-
-::v-deep input {
-  text-align: left !important;
-}
diff --git a/platform/src/assets/style/element-variables.scss b/platform/src/assets/style/element-variables.scss
index efaf750..9c8266b 100644
--- a/platform/src/assets/style/element-variables.scss
+++ b/platform/src/assets/style/element-variables.scss
@@ -6,4 +6,3 @@
 $--font-path: '~element-ui/lib/theme-chalk/fonts';
 
 @import "~element-ui/packages/theme-chalk/src/index";
-
diff --git a/platform/src/assets/style/lib.css b/platform/src/assets/style/lib.css
deleted file mode 100644
index 2fd7178..0000000
--- a/platform/src/assets/style/lib.css
+++ /dev/null
@@ -1,117 +0,0 @@
-/*-----------------[鍒濆鍖朷--------------*/
-*{ font-family: PingFang SC;}
-/* 娓呯悊娴姩 */
-.cle:after {visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0;}
-.cle:after{zoom:1;}
-.clear{clear: both;}
-.tc{text-align:center;}
-.tl{text-align:left}
-.tr{text-align:right}
-.fl{float: left;}
-.fr{float: right;}
-
-.wp{ width: 94%; margin: 0 auto;}
-.w30{ width: 30%;}.w40{ width: 40%;}.w47{ width: 47%;}.w48{ width: 48%;}.w49{ width: 49%;}.w50{ width: 50%;}.w60{ width: 60%;}.w80{ width: 80%;}.w90{ width: 90%;}
-
-.bg_fa{ background-color: #fafafa;}.bg_f2{ background-color: #f2f2f2;}.bg_f1{ background-color: #f1f1f1;}.bg_f5{ background-color: #f5f5f5;}.bg_f6{ background-color: #f6f6f6;}.bg_f7{ background-color: #f7f7f7;}.bg_f8{ background-color: #f8f8f8;}.bg_e{ background-color: #eee;}.bg_d{ background-color: #ddd;}.bg_w{ background-color: #fff;}.bg_3{ background-color: #333;}.bcf{ color: #fff;}.bc3{ color: #333;}.bcc{ color: #ccc;}.bc9{ color: #999;}.bc6{ color: #666;}
-
-.rd4{border-radius: 4px;}.rd5{border-radius: 5px;}.rd6{border-radius: 6px;}.rd8{border-radius: 8px;}.rd10{border-radius: 10px;}.rd15{border-radius: 15px;}.rd20{border-radius: 20px;}.rd30{border-radius: 30px;}.rd40{border-radius: 40px;}.rd50{border-radius: 50px;}.rd60{border-radius: 60px;}.rd70{border-radius: 70px;}.rd80{border-radius: 80px;}.rd90{border-radius: 90px;}.rd100{border-radius: 100px;}.rd120{border-radius: 120px;}.rdhalf{  border-radius:50%}
-
-.ml5{ margin-left: 5px;}.ml10{ margin-left: 10px;}.ml15{ margin-left: 15px;}.ml20{ margin-left: 20px;}.ml25{ margin-left: 25px;}.ml30{ margin-left: 30px;}.ml40{ margin-left: 40px;}.ml50{ margin-left: 50px;}.ml60{ margin-left: 60px;}
-
-.mt5{ margin-top: 5px;}.mt10{ margin-top: 10px;}.mt15{ margin-top: 15px;}.mt20{ margin-top: 20px;}.mt25{ margin-top: 25px;}.mt30{ margin-top: 30px;}.mt35{ margin-top: 35px;}.mt40{ margin-top: 40px;}.mt45{ margin-top: 45px;}.mt50{ margin-top: 50px;}.mt60{ margin-top: 60px;}.mt70{ margin-top: 70px;}.mt80{ margin-top: 80px;}.mt90{ margin-top: 90px;}.mt100{ margin-top:100px;}.mt150{ margin-top:150px;}.mt200{ margin-top:200px;}.mt-20{ margin-top: -20px;}.mt-30{ margin-top: -30px;}.mt-40{ margin-top: -40px;}
-
-.mb5{ margin-bottom: 5px;}.mb10{ margin-bottom: 10px;}.mb15{ margin-bottom: 15px;}.mb20{ margin-bottom: 20px;}.mb25{ margin-bottom: 25px;}.mb30{ margin-bottom: 30px;}.mb40{ margin-bottom: 40px;}.mb50{ margin-bottom: 50px;}.mb60{ margin-bottom: 60px;}.mb80{ margin-bottom: 80px;}
-
-.mr5{ margin-right: 5px;}.mr10{ margin-right: 10px;}.mr15{ margin-right: 15px;}.mr20{ margin-right: 20px;}.mr25{ margin-right: 25px;}.mr30{ margin-right: 30px;}.mr40{ margin-right: 40px;}.mr60{ margin-right: 60px;}.mr80{ margin-right: 80px;}.mr100{ margin-right: 100px;}
-
-.pl10{ padding-left: 10px;}.pl20{ padding-left: 20px;}.pl25{ padding-left: 25px;}.pl30{ padding-left: 30px;}.pl40{ padding-left: 40px;}.pl50{ padding-left: 50px;}.pl60{ padding-left: 60px;}.pl80{ padding-left: 80px;}.pl100{ padding-left: 100px;}
-
-.pr10{ padding-right: 10px;}.pr20{ padding-right: 20px;}.pr25{ padding-right: 25px;}.pr30{ padding-right: 30px;}.pr40{ padding-right: 40px;}.pr50{ padding-right: 50px;}.pr60{ padding-right: 60px;}.pr80{ padding-right: 80px;}.pr100{ padding-right: 100px;}
-
-.pb10{ padding-bottom: 10px;}.pb20{ padding-bottom: 20px;}.pb25{ padding-bottom: 25px;}.pb30{ padding-bottom: 30px;}.pb40{ padding-bottom: 40px;}.pb50{ padding-bottom: 50px;}.pb100{ padding-bottom: 100px;}
-
-.pt10{ padding-top: 10px;}.pt20{ padding-top: 20px;}.pt25{ padding-top: 25px;}.pt30{ padding-top: 30px;}.pt40{ padding-top: 40px;}.pt50{ padding-top: 50px;}.pt100{ padding-top: 100px;}
-
-.plr{ padding-left: 30px; padding-right: 30px;}.plr20{ padding-left: 20px; padding-right: 20px;}.plr25{ padding-left: 25px; padding-right: 25px;}.plr30{ padding-left: 30px; padding-right: 30px;}.plr40{ padding-left: 40px; padding-right: 40px;}.plr50{ padding-left: 50px; padding-right: 50px;}.plr60{ padding-left: 60px; padding-right: 60px;}
-
-.ptb10{padding-bottom: 10px; padding-top: 10px;} .ptb15{padding-bottom: 15px; padding-top: 15px;} .ptb20{padding-bottom: 20px; padding-top: 20px;}.ptb25{padding-bottom: 25px; padding-top: 25px;}.ptb30{padding-bottom: 30px; padding-top: 30px;}.ptb35{padding-bottom: 35px; padding-top: 35px;}.ptb40{padding-bottom: 40px; padding-top: 40px;}.ptb50{padding-bottom: 50px; padding-top: 50px;}.ptb60{padding-bottom: 60px; padding-top: 60px;}.ptb80{padding-bottom: 80px; padding-top: 80px;}.ptb100{padding-bottom: 100px; padding-top: 100px;}.ptb150{padding-bottom: 150px; padding-top: 150px;}.ptb200{padding-bottom: 200px; padding-top: 200px;}
-
-.p5{ padding:5px}.p10{ padding:10px} .p20{ padding:20px}.p30{ padding:30px}.p2030{ padding:20px 30px}.p40{ padding:40px}.p3040{ padding:30px 40px}
-
-.f0{ font-size: 0px;}.f20{ font-size: 20px;}.f22{ font-size: 22px;}.f24{ font-size: 24px;}.f26{ font-size: 26px;}.f28{ font-size: 28px;}.f30{ font-size: 30px;}.f32{ font-size: 32px;}.f34{ font-size: 34px;}.f36{ font-size: 36px;} .f38{ font-size: 38px;}.f40{ font-size: 40px;} .f42{ font-size: 42px;}.f44{ font-size: 44px;}.f48{ font-size: 48px;}.f50{ font-size: 50px;}.f60{ font-size: 60px;}.f64{ font-size: 64px;}.f70{ font-size: 70px;}.f80{ font-size: 80px;}.f90{ font-size: 90px;}.f100{ font-size: 100px;}
-
-.img16{ width: 16px; height: 16px;}
-.img20{ width: 20px; height: 20px;}
-.img24{ width: 24px; height: 24px;}
-.img26{ width: 26px; height: 26px;}
-.img30{ width: 30px; height: 30px;}
-.img32{ width: 32px; height: 32px;}
-.img36{ width: 36px; height: 36px;}
-.img40{ width: 40px; height: 40px;}
-.img48{ width: 48px; height: 48px;}
-.img60{ width: 60px; height: 60px;}
-.img66{ width: 66px; height: 66px;}
-.img80{ width: 80px; height: 80px;}
-.img86{ width: 86px; height: 86px;}
-.img90{ width: 90px; height: 90px;}
-.img100{ width: 100px; height: 100px;}
-.img110{ width: 110px; height: 110px;}
-.img120{ width: 120px; height: 120px;}
-.img150{ width: 150px; height: 150px;}
-.img180{ width: 180px; height: 180px;}
-.img200{ width: 200px; height: 200px;}
-.imgfull{ width: 100%;}
-
-.rimb{ border-bottom: 1px solid #F1F1F1;}
-.rimt{ border-top: 1px solid #F1F1F1;}
-
-
-.bcover{  background-size: cover; background-position: center center; background-repeat:  no-repeat;}
-.bfull{ background-size: 100% 100%; background-position: center center; background-repeat:  no-repeat;}
-
-.b{ font-weight: bold;}
-.ibm{ display: inline-block; vertical-align: middle;}
-.bbox{ box-sizing: border-box;}
-.rauto{ margin-left:auto; margin-right:auto}
-.fixedBottom{position: fixed;		left: 0;		bottom: 0;		width: 100%;}
-.lh1-6{line-height: 1.6;}
-.lh1-6{line-height: 1.6;}
-.lh1-8{line-height: 1.8;}
-.lh2{line-height: 2;}
-
-.sbtn{ display: inline-block; padding: 0.7em 2em;  border: 1px solid transparent; box-sizing: border-box; text-align: center;}
-.mini{ font-size: 18px;}
-.med{ font-size: 26px;}
-.def{ font-size: 34px;}
-.sbtn_w100{ width: 100%; padding-left: 0; padding-right: 0;}
-.sbtn_green{ color: #fff; background:#65C35D; }
-.sbtn_green_rim{ color: #65C35D; border-color:#65C35D; }
-.sbtn_black{ color: #fff; background:#333; }
-.sbtn_gray{ color: #333; background:#F7F7F7; }
-.sbtn_black_rim{ color: #333; border-color:#eee; }
-.sbtn_gray_rim{ color: #999; border-color:#ccc; }
-/* flex */
-.flex{ display: flex; flex-wrap: wrap; justify-content: space-between;}
-.cXY{ display: flex;  align-items: center;justify-content: center;}
-.cY{ display: flex; align-items: center;}
-.cX{display: flex; justify-content: center}
-.rowW{ display: flex; flex-wrap: wrap;}
-.bX{ display: flex;   flex-direction: row; justify-content: space-between;} 
-.bY{ display: flex;   flex-direction:column; justify-content: space-between;} 
-.bcX{ display: flex; justify-content: space-between; align-items: center;}
-.fx1{ flex: 1; overflow: hidden; }
-
-.cAXY{ position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);}
-.shadowA{box-shadow: 0 0 5px 0 #ddd;}
-.shadowB{ position: relative;}
-.shadowB::after{ content: ""; display: block; width: 100%; height: 8px; box-shadow: 0 6px 12px rgba(0,0,0,.08); top: -8px; left: 0; position: absolute; }
-
-
-.orange{ color: #EA531B;}
-.green{ color: #65C35D;}
-.blue{ color: #3C77DA;}
-.red{ color: #f00;}
-/* /deep/ .uicon-close .u-icon--right{ position: absolute; right: 30px; top: 30px; z-index: 999;} */
-.popCloseBtn{ position: absolute; width:50px; height:50px; right: 20px; top: 20px;}
-.fixedHeader{ position: absolute; left: 0; top: 0;}
diff --git a/platform/src/assets/style/style.scss b/platform/src/assets/style/style.scss
index cd08f82..114ca0e 100644
--- a/platform/src/assets/style/style.scss
+++ b/platform/src/assets/style/style.scss
@@ -5,26 +5,13 @@
   padding: 0;
   margin: 0;
   color: $font-color;
-  // overflow: hidden;
   font-family: 'Avenir', Helvetica, Arial, sans-serif;
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
-  scrollbar-width: none; /* firefox */
-  -ms-overflow-style: none; /* IE 10+ */
-  &::-webkit-scrollbar {
-    display: none; /* Chrome Safari */
-  }
   body {
     height: 100%;
     padding: 0;
     margin: 0;
-    overflow: scroll;
-    overflow: hidden;
-    scrollbar-width: none; /* firefox */
-    -ms-overflow-style: none; /* IE 10+ */
-    &::-webkit-scrollbar {
-      display: none; /* Chrome Safari */
-    }
   }
   h1,h2,h3,h4,h5,h6,ul {
     margin: 0;
@@ -36,44 +23,10 @@
   #app {
     height: 100%;
     min-width: $page-min-width;
-    // overflow: hidden;
   }
-}
-
-.bg {
-  z-index: 9990 !important;
-}
-.windows {
-  z-index: 9991 !important;
 }
 
 // 绌挎妗嗙殑鎸夐挳
 .el-transfer__buttons {
   padding: 0 16px !important;
-}
-
-.table-header {
-  background-color: #F5F6F8!important;
-  th {
-    background-color: #F5F6F8!important;
-    color: #3F4F69 !important;
-    font-size: 14px;
-  }
-}
-
-.doumee-element-table {
-  border-color: #DFE2E8;
-  tr, th, td {
-    border-color: #DFE2E8;
-  }
-}
-
-::v-deep .el-table__fixed {
-  height: 100% !important;
-}
-::v-deep .el-table__fixed-right {
-  height: 100% !important;
-}
-::v-deep .el-table__cell {
-  height: 100% !important;
 }
diff --git a/platform/src/assets/style/variables.scss b/platform/src/assets/style/variables.scss
index d982769..ff3f939 100644
--- a/platform/src/assets/style/variables.scss
+++ b/platform/src/assets/style/variables.scss
@@ -1,12 +1,5 @@
 // 涓昏壊璋�
-$primary-color: #216EEE;
-$primary-title-start-color: #3582ff;
-$primary-title-color: #216EcE;
-$primary-color-sel: #0046c6;
-$primary-color-hover: #1562e2;
-$icon-background-color: #0d5ada;
-//鑿滃崟鎮诞鑹诧細
-$menu-hover-color: rgba(33, 110, 238, 0.10);
+$primary-color: #2E68EC;
 // 澶撮儴楂樺害
 $header-height: 60px;
 // 鑿滃崟瀹藉害
diff --git a/platform/src/components/base/BaseOpera.vue b/platform/src/components/base/BaseOpera.vue
index 5d64137..70681bd 100644
--- a/platform/src/components/base/BaseOpera.vue
+++ b/platform/src/components/base/BaseOpera.vue
@@ -14,16 +14,6 @@
       }
     }
   },
-  // watch: {
-  //   visible() {
-  //     console.log(this.visible);
-  //   }
-  // },
-  watch: {
-    $route (to, from) {
-      this.close()
-    }
-  },
   methods: {
     // 閰嶇疆
     config (extParams = {}) {
@@ -59,9 +49,6 @@
         }
       })
     },
-    close () {
-      this.visible = false
-    },
     // 纭鏂板缓/淇敼
     confirm () {
       if (this.form.id == null || this.form.id === '') {
@@ -73,12 +60,9 @@
     // 纭鏂板缓
     __confirmCreate () {
       this.$refs.form.validate((valid) => {
-        // debugger
         if (!valid) {
           return
         }
-        // console.log(this.form);
-        // debugger
         // 璋冪敤鏂板缓鎺ュ彛
         this.isWorking = true
         this.api.create(this.form)
diff --git a/platform/src/components/base/BaseTable.vue b/platform/src/components/base/BaseTable.vue
index ccdafc0..e738f2d 100644
--- a/platform/src/components/base/BaseTable.vue
+++ b/platform/src/components/base/BaseTable.vue
@@ -135,11 +135,9 @@
     // 鍒犻櫎
     deleteById (row, childConfirm = true) {
       this.__checkApi()
-      // let message = `纭鍒犻櫎${this.module}銆�${row[this.configData['field.main']]}銆戝悧?`
-      let message = `纭鍒犻櫎璇ヨ褰曞悧?`
+      let message = `纭鍒犻櫎${this.module}銆�${row[this.configData['field.main']]}銆戝悧?`
       if (childConfirm && row.children != null && row.children.length > 0) {
-        // message = `纭鍒犻櫎${this.module}銆�${row[this.configData['field.main']]}銆戝強鍏跺瓙${this.module}鍚�?`
-        message = `纭鍒犻櫎璇ヨ褰曞強鍏跺瓙鏁版嵁鍚�?`
+        message = `纭鍒犻櫎${this.module}銆�${row[this.configData['field.main']]}銆戝強鍏跺瓙${this.module}鍚�?`
       }
       this.$dialog.deleteConfirm(message)
         .then(() => {
@@ -177,7 +175,7 @@
           }
         }
         if (containChildrenRows.length > 0) {
-          message = '鏈灏嗗垹闄よ鏁版嵁鍙婂叾瀛愭暟鎹紝纭鍒犻櫎鍚楋紵'
+          message = `鏈灏嗗垹闄�${this.module}銆�${containChildrenRows.join('銆�')}銆戝強鍏跺瓙${this.module}璁板綍锛岀‘璁ゅ垹闄ゅ悧锛焋
         }
       }
       this.$dialog.deleteConfirm(message)
diff --git a/platform/src/components/business/InsuranceDetails.vue b/platform/src/components/business/InsuranceDetails.vue
deleted file mode 100644
index d615444..0000000
--- a/platform/src/components/business/InsuranceDetails.vue
+++ /dev/null
@@ -1,209 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="50%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="box">
-            <div class="box_header">
-                <div class="box_header_item">
-                    <div class="box_header_item_label">鎶曚繚浼佷笟</div>
-                    <div class="box_header_item_val">瀹夊窘鏍煎姏鏈烘鍒堕�犲巶</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">淇濋櫓鏂规</div>
-                    <div class="box_header_item_val">骞冲畨淇濋櫓闆囦富璐d换闄〢鐗�</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">淇濋櫓鐢熸晥璧锋湡</div>
-                    <div class="box_header_item_val">2023-09-11 00:00:00</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">淇濋櫓鐢熸晥姝㈡湡</div>
-                    <div class="box_header_item_val">2023-10-11 23:59:59</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">鎶曚繚浜烘暟</div>
-                    <div class="box_header_item_val">50</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">鎬昏垂鐢�</div>
-                    <div class="box_header_item_val">15000</div>
-                </div>
-            </div>
-            <div class="box_table">
-                <div class="box_table_head">
-                    <div class="box_table_head_item">搴忓彿</div>
-                    <div class="box_table_head_item">鍛樺伐濮撳悕</div>
-                    <div class="box_table_head_item">韬唤璇佸彿</div>
-                    <div class="box_table_head_item">娲鹃仯鍗曚綅</div>
-                    <div class="box_table_head_item">鎵�灞炲伐绉�</div>
-                </div>
-                <div class="box_table_content" v-for="(item, index) in 6" :key="index">
-                    <div class="box_table_content_item">{{index + 1}}</div>
-                    <div class="box_table_content_item">鐜嬫煇鏌�</div>
-                    <div class="box_table_content_item">340411190001010011</div>
-                    <div class="box_table_content_item">瀹夊窘鏍煎姏鏈烘鍒堕�犲巶</div>
-                    <div class="box_table_content_item">4绫� 鏈烘鍔犲伐/鍒堕��</div>
-                </div>
-            </div>
-        </div>
-        <template v-slot:footer>
-            <el-button type="primary">浼佷笟璇佷欢</el-button>
-            <el-button type="primary">瀵煎嚭璇﹀崟</el-button>
-            <el-button>鍙栨秷</el-button>
-        </template>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    export default {
-        name: 'InsuranceDetails',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    editDate: ''
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                formInline: {
-                    user: '',
-                    region: ''
-                },
-                reverse: true,
-                activities: [{
-                    content: '娲诲姩鎸夋湡寮�濮�',
-                    timestamp: '2018-04-15'
-                }, {
-                    content: '閫氳繃瀹℃牳',
-                    timestamp: '2018-04-13'
-                }, {
-                    content: '鍒涘缓鎴愬姛',
-                    timestamp: '2018-04-11'
-                }],
-                tableData: [],
-                activeName: 'first',
-                currentPage: 1
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insuranceApply',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            handleSizeChange(val) {
-                console.log(`姣忛〉 ${val} 鏉);
-            },
-            handleCurrentChange(val) {
-                console.log(`褰撳墠椤�: ${val}`);
-            },
-            handleClick(tab, event) {
-                console.log(tab, event);
-            },
-            onSubmit() {
-
-            }
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-    .box {
-        width: 100%;
-        .box_header {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            flex-wrap: wrap;
-            border-top: 1px solid #b4bbc5;
-            border-left: 1px solid #b4bbc5;
-            .box_header_item {
-                width: 50%;
-                height: 50px;
-                display: flex;
-                align-items: center;
-                border-right: 1px solid #b4bbc5;
-                border-bottom: 1px solid #b4bbc5;
-                box-sizing: border-box;
-                .box_header_item_label {
-                    flex: 1;
-                    height: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    background: #f2f2f2;
-                    border-right: 1px solid #b4bbc5;
-                }
-                .box_header_item_val {
-                    flex: 1;
-                    height: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                }
-            }
-        }
-        .box_table {
-            width: 100%;
-            border-left: 1px solid #b4bbc5;
-            box-sizing: border-box;
-            .box_table_head {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                .box_table_head_item {
-                    flex: 1;
-                    height: 50px;
-                    background: #f2f2f2;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    border-right: 1px solid #b4bbc5;
-                    border-bottom: 1px solid #b4bbc5;
-                    box-sizing: border-box;
-                    &:nth-child(1) {
-                        flex: 0.5;
-                    }
-                }
-            }
-            .box_table_content {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                .box_table_content_item {
-                    flex: 1;
-                    height: 50px;
-                    background: #ffffff;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    border-right: 1px solid #b4bbc5;
-                    border-bottom: 1px solid #b4bbc5;
-                    box-sizing: border-box;
-                    &:nth-child(1) {
-                        flex: 0.5;
-                    }
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/OperaApplyChangeWindow.vue b/platform/src/components/business/OperaApplyChangeWindow.vue
deleted file mode 100644
index c544c30..0000000
--- a/platform/src/components/business/OperaApplyChangeWindow.vue
+++ /dev/null
@@ -1,485 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="80%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="desc">
-            <div class="desc_item">
-                <div class="desc_item_label">
-                    <div class="desc_item_label_left">
-                        <span>鎶曚繚浼佷笟锛氬畨寰藉钩瀹変汉鍔涜祫婧愭湁闄愬叕鍙�</span>
-                        <span>淇濆崟鐘舵�侊細寰呭嚭鍗�</span>
-                        <span>鎻愪氦鏃堕棿锛�2023-09-11 00:00:00</span>
-                    </div>
-                    <div class="desc_item_label_right">
-                        <el-button type="primary" @click="$refs.applyChangeDetails.open('鍔犲噺淇濈敵璇峰崟璇︽儏')">瀵煎嚭璇﹀崟</el-button>
-                        <el-button type="primary" @click="$refs.applyChangeDetails.open('鍔犲噺淇濈敵璇峰崟璇︽儏')">瀵煎嚭璇﹀崟</el-button>
-                        <el-button type="primary" @click="visible3 = true">涓婁紶鎵瑰崟</el-button>
-                        <el-button type="danger" @click="visible1 = true">閫�鍥炴姇淇�</el-button>
-                        <el-button type="danger" @click="visible4 = true">淇敼鎵瑰崟</el-button>
-                    </div>
-                </div>
-                <div class="desc_item_from">
-                    <el-table
-                            :data="tableData"
-                            border
-                            style="width: 100%">
-                        <el-table-column
-                                prop="date"
-                                label="淇濆崟鍙�">
-                        </el-table-column>
-                        <el-table-column
-                                prop="name"
-                                label="淇濋櫓鏂规"
-                                width="180">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="淇濋櫓鐢熸晥璧锋湡">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="淇濋櫓鐢熸晥姝㈡湡">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="鎶曚繚浜烘暟">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="鍦ㄤ繚鏃堕暱锛堝ぉ锛�">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="褰撳墠璐圭敤">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="鎬昏垂鐢�">
-                        </el-table-column>
-                    </el-table>
-                </div>
-                <div class="desc_item_cate">
-                    <el-tabs v-model="activeName" @tab-click="handleClick">
-                        <el-tab-pane label="鍔犱繚鍛樺伐" name="first"></el-tab-pane>
-                        <el-tab-pane label="鍑忎繚鍛樺伐" name="second"></el-tab-pane>
-                    </el-tabs>
-                </div>
-                <div class="desc_item_from">
-                    <el-table
-                        :data="tableData"
-                        border
-                        style="width: 100%">
-                        <el-table-column label="搴忓彿">
-                            <template slot-scope="scope">
-                                <span>{{scope.$index + 1}}</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column
-                            prop="date"
-                            label="鍛樺伐濮撳悕">
-                        </el-table-column>
-                        <el-table-column
-                            prop="name"
-                            label="鎬у埆"
-                            width="180">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="韬唤璇佸彿">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="娲鹃仯鍗曚綅">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="鎵�灞炲伐绉�">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="淇濋櫓鐢熸晥璧锋湡">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="淇濋櫓鐢熸晥姝㈡湡">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="璐圭敤">
-                        </el-table-column>
-                    </el-table>
-                    <div class="desc_item_from_page">
-                        <el-pagination
-                            @size-change="handleSizeChange"
-                            @current-change="handleCurrentChange"
-                            :current-page="currentPage"
-                            :page-sizes="[100, 200, 300, 400]"
-                            :page-size="100"
-                            layout="total, sizes, prev, pager, next, jumper"
-                            :total="400">
-                        </el-pagination>
-                    </div>
-                </div>
-                <div class="desc_item_review">
-                    <div class="desc_item_review_label">瀹℃牳娴佺▼</div>
-                    <el-timeline :reverse="reverse">
-                        <el-timeline-item
-                                v-for="(activity, index) in activities"
-                                :key="index"
-                                :timestamp="activity.timestamp">
-                            {{activity.content}}
-                        </el-timeline-item>
-                    </el-timeline>
-                </div>
-            </div>
-        </div>
-        <!--    閫�鍥炴姇淇�    -->
-        <el-dialog
-            title="閫�鍥炴姇淇�"
-            :visible.sync="visible1"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>濉啓閫�鍥炶鏄庯細</div>
-                    <div class="form_item_val">
-                        <textarea placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible1 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible1 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <!--    涓婁紶淇濋櫓鎵瑰崟    -->
-        <el-dialog
-            title="涓婁紶淇濋櫓鎵瑰崟"
-            :visible.sync="visible3"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label">瀹㈡埛鏈熸湜鎵瑰崟鐢熸晥鏈燂細</div>
-                    <div class="form_item_val">2023-10-01 00:00:00</div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">鎵瑰崟鐢熸晥璧锋湡鏄惁涓�鑷达細</div>
-                    <div class="form_item_val">
-                        <el-radio-group v-model="radio">
-                            <el-radio :label="0">涓庢壒鍗曚竴鑷�</el-radio>
-                            <el-radio :label="1">涓庢壒鍗曚笉涓�鑷�</el-radio>
-                        </el-radio-group>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>鎵瑰崟鐢熸晥鏈燂細</div>
-                    <div class="form_item_val">
-                        <el-date-picker
-                            v-model="value1"
-                            type="date"
-                            placeholder="閫夋嫨鏃ユ湡">
-                        </el-date-picker>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">鎵瑰崟鐢熸晥鏈燂細</div>
-                    <div class="form_item_val">2023-10-01 00:00:00</div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>鎵瑰崟鍙凤細</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">涓婁紶淇濋櫓鎵瑰崟锛�</div>
-                    <div class="form_item_val">
-                        <el-upload
-                                class="upload-demo"
-                                action="https://jsonplaceholder.typicode.com/posts/"
-                                :on-preview="handlePreview"
-                                :on-remove="handleRemove"
-                                :before-remove="beforeRemove"
-                                multiple
-                                :limit="1"
-                                :on-exceed="handleExceed"
-                                :file-list="fileList">
-                            <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
-                            <div slot="tip" class="el-upload__tip">鍙兘涓婁紶pdf鏂囦欢锛屼笖涓嶈秴杩�5mb</div>
-                        </el-upload>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible3 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible3 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <!--    淇敼淇濋櫓鍗�    -->
-        <el-dialog
-            title="淇敼淇濋櫓鍗�"
-            :visible.sync="visible4"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濋櫓鐢熸晥鏈燂細</div>
-                    <div class="form_item_val">
-                        <el-date-picker
-                            style="width: 100%;"
-                            v-model="value1"
-                            type="date"
-                            placeholder="閫夋嫨鏃ユ湡">
-                        </el-date-picker>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濆崟鍙凤細</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>涓婁紶淇濋櫓鍗曪細</div>
-                    <div class="form_item_val">
-                        <el-upload
-                            class="upload-demo"
-                            action="https://jsonplaceholder.typicode.com/posts/"
-                            :on-preview="handlePreview"
-                            :on-remove="handleRemove"
-                            :before-remove="beforeRemove"
-                            multiple
-                            :limit="1"
-                            :on-exceed="handleExceed"
-                            :file-list="fileList">
-                            <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
-                            <div slot="tip" class="el-upload__tip">鍙兘涓婁紶pdf鏂囦欢锛屼笖涓嶈秴杩�5mb</div>
-                        </el-upload>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇敼鍘熷洜锛�</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible4 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible4 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <applyChangeDetails ref="applyChangeDetails" />
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import applyChangeDetails from '@/components/business/applyChangeDetails'
-    export default {
-        name: 'OperaApplyChangeWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow, applyChangeDetails },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    editDate: ''
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                formInline: {
-                    user: '',
-                    region: ''
-                },
-                visible1: false,
-                visible2: false,
-                visible3: false,
-                visible4: false,
-                visible5: false,
-                reverse: true,
-                radio: 0,
-                fileList: [
-                    {name: 'food.pdf', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}
-                ],
-                activities: [{
-                    content: '娲诲姩鎸夋湡寮�濮�',
-                    timestamp: '2018-04-15'
-                }, {
-                    content: '閫氳繃瀹℃牳',
-                    timestamp: '2018-04-13'
-                }, {
-                    content: '鍒涘缓鎴愬姛',
-                    timestamp: '2018-04-11'
-                }],
-                tableData: [],
-                activeName: 'first',
-                currentPage: 1
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insuranceApply',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            handleRemove(file, fileList) {
-                console.log(file, fileList);
-            },
-            handlePreview(file) {
-                console.log(file);
-            },
-            handleExceed(files, fileList) {
-                this.$message.warning(`褰撳墠闄愬埗閫夋嫨 3 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶);
-            },
-            beforeRemove(file, fileList) {
-                return this.$confirm(`纭畾绉婚櫎 ${ file.name }锛焋);
-            },
-            successEvent() {
-
-            },
-            handleSizeChange(val) {
-                console.log(`姣忛〉 ${val} 鏉);
-            },
-            handleCurrentChange(val) {
-                console.log(`褰撳墠椤�: ${val}`);
-            },
-            handleClick(tab, event) {
-                console.log(tab, event);
-            },
-            onSubmit() {
-
-            }
-        }
-    }
-</script>
-<style>
-    .v-modal {
-        z-index: 2000 !important;
-    }
-</style>
-<style lang="scss" scoped>
-    .form {
-        width: 100%;
-        display: flex;
-        align-items: center;
-        flex-direction: column;
-        .form_span {
-            width: 100%;
-            display: flex;
-            align-items: start;
-            flex-direction: column;
-            margin-bottom: 20px;
-            span {
-                font-size: 14px;
-                &:nth-child(1) {
-                    color: black;
-                    margin-bottom: 5px;
-                }
-                &:nth-child(2) {
-                    color: #8c939d;
-                }
-            }
-        }
-        .form_item {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            margin-bottom: 20px;
-            &:last-child {
-                margin: 0 !important;
-            }
-            .form_item_label {
-                flex-shrink: 0;
-                width: 170px;
-                color: black;
-                font-size: 14px;
-                span {
-                    color: red;
-                    font-size: 14px;
-                }
-            }
-            .form_item_val {
-                flex: 1;
-                /*height: 40px;*/
-                margin-left: 20px;
-                textarea {
-                    width: 100%;
-                    height: 70px;
-                    border: 1px solid #cbcbcb;
-                    padding: 10px;
-                    outline: none;
-                    box-sizing: border-box;
-                }
-                input {
-                    width: 100%;
-                    height: 40px;
-                    outline: none;
-                    border-radius: 5px;
-                    border: 1px solid #cbcbcb;
-                    padding: 0 20px;
-                    box-sizing: border-box;
-                }
-            }
-        }
-    }
-    .desc {
-        width: 100%;
-        .desc_item {
-            width: 100%;
-            display: flex;
-            flex-direction: column;
-            .desc_item_label {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-                margin-bottom: 10px;
-                span {
-                    font-size: 14px;
-                    color: black;
-                    margin-right: 30px;
-                }
-            }
-            .desc_item_from {
-                width: 100%;
-                margin-bottom: 10px;
-                .desc_item_from_page {
-                    width: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: end;
-                    margin-top: 10px;
-                }
-            }
-            .desc_item_cate {
-                width: 100%;
-                margin-bottom: 10px;
-            }
-            .desc_item_review {
-                width: 100%;
-                .desc_item_review_label {
-                    font-size: 20px;
-                    color: black;
-                    font-weight: bold;
-                    margin-bottom: 15px;
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/OperaBaseDataWindow.vue b/platform/src/components/business/OperaBaseDataWindow.vue
new file mode 100644
index 0000000..ff0a5d8
--- /dev/null
+++ b/platform/src/components/business/OperaBaseDataWindow.vue
@@ -0,0 +1,246 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏍囬" prop="title">
+        <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍟嗗搧鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="浜笢sku" prop="sku">
+        <el-input v-model="form.sku" placeholder="璇疯緭鍏ヤ含涓渟ku" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍝佺墝" prop="brand">
+        <el-input v-model="form.brand" placeholder="璇疯緭鍏ュ搧鐗�" v-trim/>
+      </el-form-item>
+      <el-form-item label="绫诲埆" prop="category">
+        <el-input v-model="form.category" placeholder="璇疯緭鍏ョ被鍒�" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶栭摼鍦板潃" prop="url">
+        <el-input v-model="form.url" placeholder="璇疯緭鍏ュ閾惧湴鍧�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒楄〃鍥�" prop="imgurl">
+        <el-input v-model="form.imgurl" placeholder="璇疯緭鍏ュ垪琛ㄥ浘" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶у浘1" prop="bgImg">
+        <el-input v-model="form.bgImg" placeholder="璇疯緭鍏ュぇ鍥�1" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶у浘2" prop="bgImg2">
+        <el-input v-model="form.bgImg2" placeholder="璇疯緭鍏ュぇ鍥�2" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶у浘3" prop="bgImg3">
+        <el-input v-model="form.bgImg3" placeholder="璇疯緭鍏ュぇ鍥�3" v-trim/>
+      </el-form-item>
+      <el-form-item label="浠锋牸" prop="price">
+        <el-input v-model="form.price" placeholder="璇疯緭鍏ヤ环鏍�" v-trim/>
+      </el-form-item>
+      <el-form-item label="閲囪喘浠锋牸" prop="saleprice">
+        <el-input v-model="form.saleprice" placeholder="璇疯緭鍏ラ噰璐环鏍�" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��1" prop="attr1">
+        <el-input v-model="form.attr1" placeholder="璇疯緭鍏ュ睘鎬�1" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��2" prop="attr2">
+        <el-input v-model="form.attr2" placeholder="璇疯緭鍏ュ睘鎬�2" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��3" prop="attr3">
+        <el-input v-model="form.attr3" placeholder="璇疯緭鍏ュ睘鎬�3" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��4" prop="attr4">
+        <el-input v-model="form.attr4" placeholder="璇疯緭鍏ュ睘鎬�4" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��5" prop="attr5">
+        <el-input v-model="form.attr5" placeholder="璇疯緭鍏ュ睘鎬�5" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��6" prop="attr6">
+        <el-input v-model="form.attr6" placeholder="璇疯緭鍏ュ睘鎬�6" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��7" prop="attr7">
+        <el-input v-model="form.attr7" placeholder="璇疯緭鍏ュ睘鎬�7" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��8" prop="attr8">
+        <el-input v-model="form.attr8" placeholder="璇疯緭鍏ュ睘鎬�8" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��9" prop="attr9">
+        <el-input v-model="form.attr9" placeholder="璇疯緭鍏ュ睘鎬�9" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��10" prop="attr10">
+        <el-input v-model="form.attr10" placeholder="璇疯緭鍏ュ睘鎬�10" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��11" prop="attr11">
+        <el-input v-model="form.attr11" placeholder="璇疯緭鍏ュ睘鎬�11" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��12" prop="attr12">
+        <el-input v-model="form.attr12" placeholder="璇疯緭鍏ュ睘鎬�12" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��13" prop="attr13">
+        <el-input v-model="form.attr13" placeholder="璇疯緭鍏ュ睘鎬�13" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��14" prop="attr14">
+        <el-input v-model="form.attr14" placeholder="璇疯緭鍏ュ睘鎬�14" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��15" prop="attr15">
+        <el-input v-model="form.attr15" placeholder="璇疯緭鍏ュ睘鎬�15" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��16" prop="attr16">
+        <el-input v-model="form.attr16" placeholder="璇疯緭鍏ュ睘鎬�16" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��17" prop="attr17">
+        <el-input v-model="form.attr17" placeholder="璇疯緭鍏ュ睘鎬�17" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��18" prop="attr18">
+        <el-input v-model="form.attr18" placeholder="璇疯緭鍏ュ睘鎬�18" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��19" prop="attr19">
+        <el-input v-model="form.attr19" placeholder="璇疯緭鍏ュ睘鎬�19" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��20" prop="attr20">
+        <el-input v-model="form.attr20" placeholder="璇疯緭鍏ュ睘鎬�20" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��21" prop="attr21">
+        <el-input v-model="form.attr21" placeholder="璇疯緭鍏ュ睘鎬�21" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��22" prop="attr22">
+        <el-input v-model="form.attr22" placeholder="璇疯緭鍏ュ睘鎬�22" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��23" prop="attr23">
+        <el-input v-model="form.attr23" placeholder="璇疯緭鍏ュ睘鎬�23" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��24" prop="attr24">
+        <el-input v-model="form.attr24" placeholder="璇疯緭鍏ュ睘鎬�24" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��25" prop="attr25">
+        <el-input v-model="form.attr25" placeholder="璇疯緭鍏ュ睘鎬�25" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��26" prop="attr26">
+        <el-input v-model="form.attr26" placeholder="璇疯緭鍏ュ睘鎬�26" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��27" prop="attr27">
+        <el-input v-model="form.attr27" placeholder="璇疯緭鍏ュ睘鎬�27" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��28" prop="attr28">
+        <el-input v-model="form.attr28" placeholder="璇疯緭鍏ュ睘鎬�28" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��29" prop="attr29">
+        <el-input v-model="form.attr29" placeholder="璇疯緭鍏ュ睘鎬�29" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��30" prop="attr30">
+        <el-input v-model="form.attr30" placeholder="璇疯緭鍏ュ睘鎬�30" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��31" prop="attr31">
+        <el-input v-model="form.attr31" placeholder="璇疯緭鍏ュ睘鎬�31" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��32" prop="attr32">
+        <el-input v-model="form.attr32" placeholder="璇疯緭鍏ュ睘鎬�32" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��33" prop="attr33">
+        <el-input v-model="form.attr33" placeholder="璇疯緭鍏ュ睘鎬�33" v-trim/>
+      </el-form-item>
+      <el-form-item label="灞炴��34" prop="attr34">
+        <el-input v-model="form.attr34" placeholder="璇疯緭鍏ュ睘鎬�34" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶勭悊鐘舵�� 0寰呭鐞� 1宸插鐞�" prop="status">
+        <el-input v-model="form.status" placeholder="璇疯緭鍏ュ鐞嗙姸鎬� 0寰呭鐞� 1宸插鐞�" v-trim/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaBaseDataWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        title: '',
+        name: '',
+        sku: '',
+        brand: '',
+        category: '',
+        url: '',
+        imgurl: '',
+        bgImg: '',
+        bgImg2: '',
+        bgImg3: '',
+        price: '',
+        saleprice: '',
+        attr1: '',
+        attr2: '',
+        attr3: '',
+        attr4: '',
+        attr5: '',
+        attr6: '',
+        attr7: '',
+        attr8: '',
+        attr9: '',
+        attr10: '',
+        attr11: '',
+        attr12: '',
+        attr13: '',
+        attr14: '',
+        attr15: '',
+        attr16: '',
+        attr17: '',
+        attr18: '',
+        attr19: '',
+        attr20: '',
+        attr21: '',
+        attr22: '',
+        attr23: '',
+        attr24: '',
+        attr25: '',
+        attr26: '',
+        attr27: '',
+        attr28: '',
+        attr29: '',
+        attr30: '',
+        attr31: '',
+        attr32: '',
+        attr33: '',
+        attr34: '',
+        status: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/baseData',
+      'field.id': 'id'
+    })
+  }
+}
+</script>
diff --git a/platform/src/components/business/OperaBrandWindow.vue b/platform/src/components/business/OperaBrandWindow.vue
new file mode 100644
index 0000000..b5899ee
--- /dev/null
+++ b/platform/src/components/business/OperaBrandWindow.vue
@@ -0,0 +1,100 @@
+<template>
+  <GlobalAlertWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @confirm="confirm">
+    <el-form :model="form" ref="form" label-width="150px" label-suffix="锛�" :rules="rules">
+      <el-form-item label="鍝佺墝鍚嶇О" prop="name">
+        <el-input v-model="form.name" maxlength="20" placeholder="璇疯緭鍏ワ紝涓嶈秴杩�20涓瓧绗�" v-trim />
+      </el-form-item>
+      <el-form-item label="鍝佺墝鍥炬爣" prop="imgurl">
+        <UploadAvatarImage
+            :file="{ 'imgurlfull': form.imgfullurl, 'imgurl': form.imgurl }"
+            :uploadData="uploadData"
+            tipsLabel=""
+            @uploadSuccess="uploadReverseSuccess"
+            @uploadEnd="end"
+            @uploadBegin="begin"
+          />
+        鍙兘涓婁紶鍥剧墖鏍煎紡锛宲ng鏍煎紡锛屽缓璁昂瀵�200px*200px
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+        <el-input v-model="form.sortnum" type="number" placeholder="璇疯緭鍏ユ帓搴忕爜锛屽崌搴忓睍绀�" v-trim />
+      </el-form-item>
+    </el-form>
+  </GlobalAlertWindow>
+</template>
+  
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import UploadAvatarImage from '../common/UploadAvatarImage.vue'
+import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+export default {
+  name: 'OperaBrandWindow',
+  extends: BaseOpera,
+  components: { GlobalAlertWindow, UploadAvatarImage },
+  data() {
+    return {
+      action: process.env.VUE_APP_API_PREFIX + '/public/uploadLocal',
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        name: '',
+        sortnum: '',
+        imgurl: '',
+        imgfullurl: '',
+        type: 1
+      },
+      uploadData: {
+        folder: 'brand_img',
+        type: 'image'
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+        name: [
+          { required: true, message: '涓嶈兘涓虹┖', trigger: 'blur' }
+        ]
+      }
+    }
+  },
+  created() {
+    this.config({
+      api: '/business/brand',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open (title, target) {
+      this.title = title
+      this.visible = true
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form.imgfullurl = ''
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+      })
+    },
+    begin() {
+      this.isUploading=true
+    },
+    end() {
+      this.isUploading=false
+    },
+    // 涓婁紶鍥剧墖
+    uploadReverseSuccess(file) {
+      this.form.imgurl = file.imgurl;
+      this.form.imgfullurl = file.imgurlfull;
+    },
+  }
+}
+</script>
+
+<style lang="scss">
+</style>
+  
\ No newline at end of file
diff --git a/platform/src/components/business/OperaCategoryWindow.vue b/platform/src/components/business/OperaCategoryWindow.vue
new file mode 100644
index 0000000..e70b3a3
--- /dev/null
+++ b/platform/src/components/business/OperaCategoryWindow.vue
@@ -0,0 +1,251 @@
+<template>
+  <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" width="900px">
+    <el-form :model="form" ref="form" label-width="120px" label-suffix="锛�" :rules="rules" v-loading="isUploading">
+      <el-form-item label="绫诲埆鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ョ被鍒悕绉帮紝涓嶈秴杩�6涓瓧" maxlength="6" v-trim />
+      </el-form-item>
+      <el-form-item label="鍥炬爣" prop="imgurl">
+        <UploadAvatarImage :file="{ 'imgurlfull': form.imgfullurl, 'imgurl': form.imgurl }"
+          :uploadData="{ folder: 'category_img' }" @uploadSuccess="uploadReverseSuccess" @uploadEnd="isUploading = false"
+          @uploadBegin="isUploading = true" />
+        鍙兘涓婁紶鍥剧墖鏍煎紡锛宲ng鏍煎紡锛屽缓璁昂瀵�120*120px
+      </el-form-item>
+      <el-form-item label="鍔犱环绯绘暟" prop="priceRate">
+        <!-- <el-input v-model="form.priceRate" placeholder="鍦ㄤ含涓滈噰璐环鍩虹涓婏紝骞冲彴鐨勫姞浠风郴鏁�" v-trim /> -->
+        <el-input-number v-model="form.priceRate" controls-position="right" :min="0.1" :step="0.1"></el-input-number>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+        <el-input v-model="form.sortnum" type="number" placeholder="璇疯緭鍏ユ帓搴忕爜锛屽崌搴忓睍绀�" v-trim />
+      </el-form-item>
+
+    </el-form>
+    <div class="param-table" >
+      <div class="title-contant">
+        <div class="title">鍙傛暟灞炴�ч厤缃�</div>
+        <div class="sub-title">閰嶇疆褰撳墠绫诲埆鐨勪骇鍝佸弬鏁板悕</div>
+      </div>
+      <el-table :data="form.baseCateParamList" stripe border >
+        <el-table-column prop="" label="鍙傛暟鍚�"  min-width="200px" align="center">
+          <template slot-scope="{row}">
+            <el-input v-model="row.name" placeholder="璇疯緭鍏ュ弬鏁板悕" v-trim />
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" width="100" align="center">
+          <template slot-scope="{row, $index}">
+            <el-button type="text" style="color: red"
+              @click="form.baseCateParamList.splice($index, 1)">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-button style="color: #2E68EC; margin-top: 10px;" @click="addParam" icon="el-icon-plus">鏂板</el-button>
+    </div>
+  </GlobalWindow>
+</template>
+  
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadAvatarImage from '@/components/common/UploadAvatarImage.vue'
+import { create, updateById } from '@/api/business/category.js'
+export default {
+  name: 'OperaCategoryWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow, UploadAvatarImage },
+  data() {
+    return {
+      action: process.env.VUE_APP_API_PREFIX + '/public/upload',
+      isUploading: false,
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        name: '',
+        imgurl: '',
+        imgfullurl: '',
+        priceRate: '1.2',
+        sortnum: '',
+
+        // attrFirst: '',
+        // attrFirst1: '',
+        baseCateParamList: [],
+        // attrSecond: '',
+        // attrSecond1: '',
+        // attrSecondList: [],
+
+        // parameter: '',
+        paramList: []
+
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+        name: [
+          { required: true, message: '涓嶈兘涓虹┖', trigger: 'blur' }
+        ]
+      },
+      dialogVisible: false
+    }
+  },
+  created() {
+    this.config({
+      api: '/business/category',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open(title, target) {
+      this.title = title
+      this.visible = true
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form.imgfullurl = ''
+          this.form.baseCateParamList = [{name:''}]
+          this.form.paramList = [{name:''}]
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+        this.form.baseCateParamList = this.form.baseCateParamList || []
+      })
+    },
+    addParam () {
+      this.form.baseCateParamList.push({ name: '' })
+    },
+    changeInput (type, index) {
+      if (type === 1) {
+        if (!this.form.budgetList[index].minamount) return
+        if (!/^[0-9]*[1-9][0-9]*$/.test(this.form.budgetList[index].minamount)) {
+          this.$message.warning({
+            type: 'warning',
+            message: '棰勭畻鍙兘杈撳叆姝f暣鏁�'
+          })
+          this.form.budgetList[index].minamount = ''
+        }
+      } else {
+        if (!this.form.budgetList[index].maxamount) return
+        if (!/^[0-9]*[1-9][0-9]*$/.test(this.form.budgetList[index].maxamount)) {
+          this.$message.warning({
+            type: 'warning',
+            message: '棰勭畻鍙兘杈撳叆姝f暣鏁�'
+          })
+          this.form.budgetList[index].maxamount = ''
+        }
+      }
+    },
+
+    confirm() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.isWorking = true
+          if (!this.form.id) {
+            create(this.form)
+              .then(() => {
+                this.visible = false
+                this.$tip.apiSuccess('鏂板缓鎴愬姛')
+                this.$emit('success')
+              })
+              .catch(e => {
+                this.$tip.apiFailed(e)
+              })
+              .finally(() => {
+                this.isWorking = false
+              })
+          } else {
+            updateById(this.form)
+              .then(() => {
+                this.visible = false
+                this.$tip.apiSuccess('缂栬緫鎴愬姛')
+                this.$emit('success')
+              })
+              .catch(e => {
+                this.$tip.apiFailed(e)
+              })
+              .finally(() => {
+                this.isWorking = false
+              })
+          }
+        } else {
+          return false;
+        }
+      });
+    },
+    close(index, type) {
+      if (type === 1) {
+        this.form.attrFirstList.splice(index, 1)
+      } else if (type === 2) {
+        this.form.attrSecondList.splice(index, 1)
+      } else if (type === 3) {
+        this.form.paramList.splice(index, 1)
+      }
+    },
+    confirmVal(type) {
+      if (type === 1) {
+        if (!this.form.attrFirst1) return
+        this.form.attrFirstList.push({ name: this.form.attrFirst1 })
+        this.form.attrFirst1 = ''
+      } else if (type === 2) {
+        if (!this.form.attrSecond1) return
+        this.form.attrSecondList.push({ name: this.form.attrSecond1 })
+        this.form.attrSecond1 = ''
+      } else if (type === 3) {
+        if (!this.form.parameter) return
+        this.form.paramList.push({ name: this.form.parameter })
+        this.form.parameter = ''
+      }
+    },
+    add() {
+      this.form.budgetList.push({ minamount: '', maxamount: '' })
+    },
+    begin() {
+      this.isUploading = true
+    },
+    end() {
+      this.isUploading = false
+    },
+    // 涓婁紶鍥剧墖
+    uploadReverseSuccess(file) {
+      this.form.imgurl = file.imgurl;
+      this.form.imgfullurl = file.imgurlfull;
+    },
+    dele(i) {
+      if (this.form.budgetList.length === 1) return
+      this.form.budgetList.splice(i, 1)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.param-table {
+  //width: 70%;
+  margin-top: 40px;
+
+  .title-contant {
+    display: flex;
+    align-items: baseline;
+    margin-bottom: 10px;
+    .title {
+      font-weight: 600;
+      font-size: 20px;
+      margin-right: 15px;
+    }
+    .sub-title {
+      font-size: 14px;
+    }
+  }
+}
+::v-deep .el-form-item__content {
+  .el-input {
+    width: 300px;
+  }
+  .el-input-number {
+    text-align: left;
+    width: 300px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/platform/src/components/business/OperaCompanyDescWindow.vue b/platform/src/components/business/OperaCompanyDescWindow.vue
deleted file mode 100644
index a5b131e..0000000
--- a/platform/src/components/business/OperaCompanyDescWindow.vue
+++ /dev/null
@@ -1,401 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="100%"
-        :withFooter="false"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="info">
-            <div class="info_label">
-                <span>浼佷笟璇︽儏</span>
-                <div>
-                    <el-button type="primary" @click="$refs.modification.open('淇敼淇濋櫓鏂规', form)">鏇存敼淇濋櫓鏂规</el-button>
-                    <el-button type="primary" @click="$refs.operaCompanyWindow.open('缂栬緫浼佷笟淇℃伅', form)">淇敼浼佷笟淇℃伅</el-button>
-                </div>
-            </div>
-            <div class="info_list">
-                <div class="info_list_item">
-                    <div class="info_list_item_label">浼佷笟鍚嶇О锛�</div>
-                    <div class="info_list_item_val">{{form.name || '-'}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">缁熶竴淇$敤浠g爜锛�</div>
-                    <div class="info_list_item_val">{{form.code || '-'}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">鍏徃璐﹀彿锛�</div>
-                    <div class="info_list_item_val">{{form.username || '-'}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">缁戝畾鎵嬫満鍙凤細</div>
-                    <div class="info_list_item_val">
-                        {{form.phone || '-'}}
-                        <el-button type="primary" size="mini" style="margin-left: 10px;" @click="visiblePhone = true">鏇存敼缁戝畾</el-button>
-                    </div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">璁よ瘉閭锛�</div>
-                    <div class="info_list_item_val">{{form.email || '-'}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">绾崇◣浜鸿瘑鍒彿锛�</div>
-                    <div class="info_list_item_val">{{form.taxCode || '-'}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">寮�鎴疯锛�</div>
-                    <div class="info_list_item_val">{{form.taxBank || '-'}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">閾惰璐﹀彿锛�</div>
-                    <div class="info_list_item_val">{{form.taxAccount || '-'}}</div>
-                </div>
-                <div class="info_list_item" style="width: 100%;">
-                    <div class="info_list_item_label">鍦板潃銆佺數璇濓細</div>
-                    <div class="info_list_item_val">{{form.taxAddr || '-'}}</div>
-                </div>
-                <div class="info_list_item" style="width: 100%;">
-                    <div class="info_list_item_label">鐢靛瓙鍙戠エ鎺ユ敹鍦板潃锛�</div>
-                    <div class="info_list_item_val">{{form.invoiceEmail || '-'}}</div>
-                </div>
-                <div class="info_list_item" style="width: 100%;">
-                    <div class="info_list_item_label">鐢靛瓙鍙戠エ鎺ユ敹鍦板潃锛�</div>
-                    <div class="info_list_item_val">{{form.invoiceAddr || '-'}}</div>
-                </div>
-            </div>
-            <el-table
-                :data="form.solutionListName"
-                border
-                style="width: 100%; margin-bottom: 20px;">
-                <el-table-column
-                    label="搴忓彿"
-                    align="center"
-                    width="80">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    prop="solutionName"
-                    align="center"
-                    label="淇濋櫓鏂规">
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    label="鍔犲噺淇濆姛鑳�">
-                    <template slot-scope="{row}">
-                        <el-checkbox :true-label="1" :false-label="0" disabled v-model="row.canAdd">鍔犱繚</el-checkbox>
-                        <el-checkbox :true-label="1" :false-label="0" disabled v-model="row.canReduce">鍑忎繚</el-checkbox>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <div class="info_list" v-if="JSON.stringify(form) !== '{}'">
-                <div class="info_list_item">
-                    <div class="info_list_item_label" style="width: 100px;">钀ヤ笟鎵х収锛�</div>
-                    <div class="info_list_item_val">
-                        <div class="image" v-if="form.businessImg.fileurlFull">
-                            <img :src="form.businessImg.fileurlFull" alt="">
-                        </div>
-                    </div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label" style="width: 100px;">娉曚汉韬唤璇侊細</div>
-                    <div class="info_list_item_val">
-                        <div class="image" v-if="form.idcardImgList[0].fileurlFull">
-                            <img :src="form.idcardImgList[0].fileurlFull" alt="">
-                        </div>
-                        <div class="image" v-if="form.idcardImgList[1].fileurlFull">
-                            <img :src="form.idcardImgList[1].fileurlFull" alt="">
-                        </div>
-                    </div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label" style="width: 100px;">浼佷笟绛剧珷锛�</div>
-                    <div class="info_list_item_val">
-                        <div class="image" v-if="form.signImg.fileurlFull">
-                            <img :src="form.signImg.fileurlFull" alt="">
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaCompanyWindow ref="operaCompanyWindow" @success="callback"/>
-        <!-- 淇敼淇濋櫓鏂规 -->
-        <modification ref="modification" @success="callback"/>
-        <!-- 淇敼鎵嬫満鍙� -->
-        <el-dialog
-            title="鏇存敼缁戝畾鎵嬫満鍙�"
-            :visible.sync="visiblePhone"
-            width="500px"
-            :modal="false"
-            :show-close="false"
-            :close-on-click-modal="false"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label">缁戝畾鎵嬫満鍙凤細</div>
-                    <div class="form_item_val">
-                        <el-input v-model="phone" placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">楠岃瘉鐮侊細</div>
-                    <div class="form_item_val">
-                        <el-input v-model="code" placeholder="璇疯緭鍏�"></el-input>
-                        <el-button type="primary" style="margin-left: 20px;" @click="send" v-if="num === 0">鍙戦�侀獙璇佺爜</el-button>
-                        <el-button type="primary" style="flex-shrink: 0; margin-left: 15px;" v-else>{{num}}s</el-button>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="close">鍙� 娑�</el-button>
-                <el-button type="primary" @click="updatePhoneEvent">鎻� 浜�</el-button>
-            </span>
-        </el-dialog>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import OperaCompanyWindow from '@/components/business/OperaCompanyWindow'
-    import modification from '@/components/business/modification'
-    import { getById, updatePhone } from '@/api/business/company'
-    import { listForCompany } from '@/api/business/solutions'
-    import { sendSms } from '@/api/business/smsEmail'
-    export default {
-        name: 'OperaCompanyDescWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow, OperaCompanyWindow, modification },
-        data () {
-            return {
-                ruleForm: {
-                    phone: '',
-                    code: ''
-                },
-                num: 0,
-                timer: null,
-                // 琛ㄥ崟鏁版嵁
-                form: {},
-                phone: '',
-                code: '',
-                visiblePhone: false,
-                options: [],
-                tableData: []
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/company',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            close() {
-                this.visiblePhone = false
-                this.phone = ''
-                this.code = ''
-                clearInterval(this.timer)
-                this.num = 0
-            },
-            updatePhoneEvent() {
-                if (!this.phone) {
-                    this.$message.warning('璇疯緭鍏ユ墜鏈哄彿')
-                    return
-                }
-                if (!this.code) {
-                    this.$message.warning('璇疯緭鍏ラ獙璇佺爜')
-                    return
-                }
-                updatePhone({
-                    id: this.form.id,
-                    captche: this.code,
-                    phone: this.phone
-                }).then(res => {
-                    this.form.phone = JSON.parse(JSON.stringify(this.phone))
-                    this.$message.success('鎿嶄綔鎴愬姛')
-                    this.visiblePhone = false
-                    this.phone = ''
-                    this.code = ''
-                    clearInterval(this.timer)
-                    this.num = 0
-                })
-            },
-            send() {
-                if (!this.phone) {
-                    this.$message.warning('璇疯緭鍏ユ墜鏈哄彿')
-                    return
-                }
-                sendSms({ phone: this.phone })
-                    .then(res => {
-                        this.num = 60
-                        this.setTime()
-                    })
-            },
-            setTime() {
-                this.timer = setInterval(() => {
-                    this.num -= 1
-                    if (this.num === 0) {
-                        clearInterval(this.timer)
-                        this.num = 0
-                    }
-                }, 1000)
-            },
-            open (title, target) {
-                const that = this;
-                this.title = title
-                this.phone = ''
-                this.code = ''
-                clearInterval(this.timer)
-                this.num = 0
-                getById(target.id)
-                    .then(res => {
-                        this.form = res
-                        this.form.type = 1
-
-                        this.form.file = {
-                            imgurl: '',
-                            imgurlfull: ''
-                        }
-                        this.form.file1 = {
-                            imgurl: '',
-                            imgurlfull: ''
-                        }
-                        this.form.file2 = {
-                            imgurl: '',
-                            imgurlfull: ''
-                        }
-                        this.form.file3 = {
-                            imgurl: '',
-                            imgurlfull: ''
-                        }
-
-                        this.form.file.imgurl = res.businessImg.fileurl
-                        this.form.file.imgurlfull = res.businessImg.fileurlFull
-                        this.form.file1.imgurl = res.idcardImgList[0].fileurl
-                        this.form.file1.imgurlfull = res.idcardImgList[0].fileurlFull
-                        this.form.file2.imgurl = res.idcardImgList[1].fileurl
-                        this.form.file2.imgurlfull = res.idcardImgList[1].fileurlFull
-                        this.form.file3.imgurl = res.signImg.fileurl
-                        this.form.file3.imgurlfull = res.signImg.fileurlFull
-
-                        listForCompany({ companyId: target.id })
-                            .then(resa => {
-                                that.form.solutionList = resa.map(item => {
-                                    return {
-                                        solutionBaseId: item.solutionBaseId,
-                                        canAdd: item.canAdd,
-                                        canReduce: item.canReduce
-                                    }
-                                })
-                                that.form.solutionListName = resa.map(item => {
-                                    return {
-                                        solutionName: item.solutionName,
-                                        canAdd: item.canAdd,
-                                        canReduce: item.canReduce
-                                    }
-                                })
-                                console.log(that.form)
-                                that.visible = true
-                            })
-                    })
-            },
-            callback() {
-                this.$emit('success')
-                this.visible = false
-            }
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-    .form {
-        width: 100%;
-        display: flex;
-        flex-direction: column;
-        .form_item {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            margin-bottom: 20px;
-            &:last-child {
-                margin-bottom: 0 !important;
-            }
-            .form_item_label {
-                width: 100px;
-                flex-shrink: 0;
-                font-size: 14px;
-                color: black;
-            }
-            .form_item_val {
-                flex: 1;
-                height: 35px;
-                display: flex;
-                align-items: center;
-                input {
-                    width: 100%;
-                    height: 100%;
-                    font-size: 14px;
-                    color: black;
-                    padding: 5px 10px;
-                    outline: none;
-                    box-sizing: border-box;
-                    border: 1px solid #ececec;
-                }
-            }
-        }
-    }
-    .info {
-        width: 100%;
-        .info_label {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            margin-bottom: 20px;
-            span {
-                font-size: 18px;
-                font-weight: 500;
-                color: #000000;
-            }
-        }
-        .info_list {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            flex-wrap: wrap;
-            .info_list_item {
-                width: 33.3%;
-                display: flex;
-                align-items: start;
-                margin-bottom: 20px;
-                .info_list_item_label {
-                    width: 150px;
-                    flex-shrink: 0;
-                }
-                .info_list_item_val {
-                    flex: 1;
-                    display: flex;
-                    align-items: center;
-                    .image {
-                        width: 100px;
-                        height: 100px;
-                        display: flex;
-                        align-items: center;
-                        justify-content: center;
-                        overflow: hidden;
-                        margin-right: 10px;
-                        &:last-child {
-                            margin: 0 !important;
-                        }
-                        img {
-                            width: 100%;
-                        }
-                    }
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/OperaCompanyUserWindow.vue b/platform/src/components/business/OperaCompanyUserWindow.vue
new file mode 100644
index 0000000..45942e7
--- /dev/null
+++ b/platform/src/components/business/OperaCompanyUserWindow.vue
@@ -0,0 +1,120 @@
+<template>
+  <GlobalAlertWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    width="750px"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" label-width="125px" :rules="rules">
+      <el-form-item label="浼佷笟鍏ㄧО" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鎴蜂紒涓氬叏绉帮紝涓嶈秴杩�30瀛�" v-trim/>
+        浼佷笟鍚嶇О闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
+      </el-form-item>
+      <el-form-item label="瀹㈡埛绠�绉�" prop="shortName">
+        <el-input v-model="form.shortName" placeholder="璇疯緭鍏ヤ紒涓氱畝绉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCode">
+        <el-input v-model="form.creditCode" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" v-trim/>
+        缁熶竴淇$敤浠g爜闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
+      </el-form-item>
+      <el-form-item label="鐧诲綍璐﹀彿" prop="managerUserName">
+        <el-input v-model="form.managerUserName" :disabled="!!this.form.id" placeholder="璇疯緭鍏ョ櫥褰曡处鍙�" v-trim/>
+      </el-form-item>
+      <el-form-item label="绯荤粺浣跨敤鏈夋晥鏈�" prop="oepnValidDate">
+        <el-date-picker v-model="form.oepnValidDate" value-format="yyyy-MM-dd" :disabled="!!this.form.id" placeholder="璇疯緭鍏ョ郴缁熶娇鐢ㄦ湁鏁堟湡"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="涓绘挱鏁伴噺闄愬埗" prop="userNum">
+        <el-input v-model="form.userNum" :disabled="!!this.form.id" placeholder="璇疯緭鍏ヤ富鎾暟閲忛檺鍒�" v-trim/>
+        
+      </el-form-item>
+      <el-form-item label="閿�鍞汉鍛�" prop="salesmanId">
+        <!-- <el-input v-model="form.salesmanId" placeholder="璇疯緭鍏ラ攢鍞汉鍛樼紪鐮�" v-trim/> -->
+        <el-select v-model="form.salesmanId" clearable placeholder="璇烽�夋嫨" filterable >
+          <el-option v-for="item in sales" :label="item.realname" :key="item.id" :value="item.id"></el-option>
+        </el-select>
+      </el-form-item>
+
+      <div class="more">
+        <div class="more-title">鏇村璁剧疆</div>
+        <el-form-item label="鑱旂郴浜�" prop="linkname">
+          <el-input v-model="form.linkname" placeholder="璇疯緭鍏ヨ仈绯讳汉" v-trim/>
+        </el-form-item>
+        <el-form-item label="鑱旂郴浜虹數璇�" prop="linkephone">
+          <el-input v-model="form.linkephone" placeholder="璇疯緭鍏ヨ仈绯讳汉鐢佃瘽" v-trim/>
+        </el-form-item>
+      </div>
+      
+      
+      
+    </el-form>
+  </GlobalAlertWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+import { findAllList } from '@/api/system/user'
+export default {
+  name: 'OperaCompanyWindow',
+  extends: BaseOpera,
+  components: { GlobalAlertWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        managerUserName: '',
+        name: '',
+        shortName: '',
+        remark: '',
+        managerId: '',
+        linkname: '',
+        linkephone: '',
+        creditCode: '',
+        userNum: 5,
+        oepnValidDate: '',
+        salesmanId: ''
+      },
+      sales: [],
+      // 楠岃瘉瑙勫垯
+      rules: {
+        name: [
+          { required: true, message: '璇疯緭鍏ュ鎴蜂紒涓氬叏绉�', tigger: 'blur'}
+        ],
+        managerUserName: [
+          { required: true, message: '璇疯緭鍏ョ櫥褰曡处鍙�', tigger: 'blur'}
+        ],
+        openUserNum: [
+          { pattern: /^[0-9]+$/, message: '鍙彲浠ヨ緭鍏ユ暟瀛�', trigger: 'change' }
+        ]
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/companyUser',
+      'field.id': 'id'
+    })
+    findAllList({ type: 0 })
+      .then(res => {
+        this.sales = res
+      })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.more {
+  margin-top: 40px;
+  margin-bottom: 10px;
+  .more-title {
+    font-weight: 600;
+    font-size: 18px;
+  }
+}
+::v-deep .el-input {
+  width: 300px;
+  margin-right: 10px;
+}
+</style>
diff --git a/platform/src/components/business/OperaCompanyValidDateWindow.vue b/platform/src/components/business/OperaCompanyValidDateWindow.vue
new file mode 100644
index 0000000..cd1fa6f
--- /dev/null
+++ b/platform/src/components/business/OperaCompanyValidDateWindow.vue
@@ -0,0 +1,163 @@
+<template>
+  <GlobalAlertWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+    <div class="tips-style">璋冩暣鏈夋晥鏈熷悗锛屽鎴风殑鏈夋晥鏈熶細鍙戠敓鏀瑰彉锛岃璋ㄦ厧鎿嶄綔</div>
+    <el-form :model="form" ref="form" label-width="100px" label-suffix="锛�" :rules="rules" inline>
+      <div class="short-line">
+        <el-form-item label="浼佷笟鍚嶇О" prop="name">
+          <el-input v-model="form.name" disabled v-trim />
+        </el-form-item>
+      </div>
+      <!-- <div class="item-line">
+        <el-form-item label="瀹㈡埛绫诲瀷"  prop="oepnType">
+          <el-radio-group v-model="form.oepnType" @change="typeChange">
+            <el-radio :label="1">姝e紡璐﹀彿</el-radio>
+            <el-radio :label="0">璇曠敤璐﹀彿</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </div> -->
+
+      <div class="item-line">
+        <el-form-item label="鏈夋晥鏈�" prop="oepnValidDate">
+          <!-- <el-date-picker v-model="form.oepnValidDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd hh:mm:ss"
+            placeholder="閫夋嫨鏃ユ湡"> -->
+          <el-date-picker type="date" v-model="form.oepnValidDate" value-format="yyyy-MM-dd" placeholder="閫夋嫨鏈夋晥鏃ユ湡">
+          </el-date-picker>
+          鏈夋晥鏈熷寘鍚�夋嫨鏃ユ湡
+        </el-form-item>
+      </div>
+      <div class="short-line">
+        <el-form-item label="涓绘挱鏁伴檺鍒�" prop="userNum">
+          <el-input v-model="form.userNum" placeholder="璇疯緭鍏ヤ富鎾暟" v-trim />
+          <span style="display:inline;font-size:10px;color:red">娉細涓�0涓嶉檺鍒朵汉鏁�</span>
+        </el-form-item>
+      </div>
+    </el-form>
+    <!-- <div slot="footer"></div> -->
+  </GlobalAlertWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+import { update } from '@/api/business/company'
+// import { create } from '@/api/business/companyChange'
+export default {
+  name: 'OperaCompanyValidDateWindow',
+  extends: BaseOpera,
+  components: { GlobalAlertWindow },
+  data() {
+
+    return {
+      isUploading: false,
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        name: '',
+        oepnValidDate: '',
+        userNum: 0
+      },
+      types: [],
+      // 楠岃瘉瑙勫垯
+      rules: {
+        openUserNum: [
+          { pattern: /^[0-9]+$/, message: '鍙彲浠ヨ緭鍏ユ暟瀛�', trigger: 'change' }
+        ]
+      }
+    }
+  },
+  created() {
+    this.config({
+      api: '/business/company',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open(title, target) {
+      this.title = title
+      this.visible = true
+      // 缂栬緫
+      this.$nextTick(() => {
+        this.$refs.form.clearValidate()
+        this.$refs.form.resetFields()
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+      })
+    },
+    typeChange() {
+      let tempDate = new Date();
+      tempDate.setDate(tempDate.getDate() + (this.form.oepnType ? 30 : 15))
+      this.form.oepnValidDate = `${tempDate.getFullYear()}-${tempDate.getMonth() + 1}-${tempDate.getDate()} 00:00:00`
+    },
+    confirm() {
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        this.isWorking = true
+        update(this.form)
+          .then(() => {
+            this.visible = false
+            this.$refs.form.resetFields()
+            this.$tip.apiSuccess('淇敼鏈夋晥鏈熸垚鍔�')
+            this.$emit('success')
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking = false
+          })
+      })
+    }
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+.tips-style {
+  background-color: #f7f7f7;
+  height: 30px;
+  line-height: 30px;
+
+  a {
+    text-decoration: none
+  }
+
+  padding-left: 10px;
+  margin-bottom: 20px;
+}
+
+.item-line {
+  ::v-deep .el-form-item__content {
+    width: 480px;
+  }
+}
+
+.short-line {
+  ::v-deep .el-form-item__content {
+    width: 286px;
+  }
+}
+
+.pic-line {
+  ::v-deep .el-form-item__content {
+    width: 500px;
+  }
+}
+
+.address {
+  display: flex;
+
+  .line {
+    width: 10px;
+  }
+}
+
+.sub-title {
+  font-size: 20px;
+  font-weight: 600;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+</style>
diff --git a/platform/src/components/business/OperaCompanyWindow.vue b/platform/src/components/business/OperaCompanyWindow.vue
index 44c6e69..0739250 100644
--- a/platform/src/components/business/OperaCompanyWindow.vue
+++ b/platform/src/components/business/OperaCompanyWindow.vue
@@ -1,335 +1,150 @@
 <template>
-    <GlobalWindow
-        :title="title"
-        width="50%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <el-form :model="form" ref="form" :rules="rules" style="width: 50%;">
-            <el-form-item label="鍏徃鍚嶇О" prop="name">
-                <el-input v-model="form.name" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="缁熶竴淇$敤浠g爜" prop="code">
-                <el-input v-model="form.code" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="娉曚汉濮撳悕" prop="legalName" v-if="form.type !== 1">
-                <el-input v-model="form.legalName" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="缁戝畾鎵嬫満鍙�" prop="phone" v-if="form.type !== 1">
-                <div style="width: 100%; display: flex; align-items: center;">
-                    <el-input v-model="form.phone" maxlength="11" type="number" style="flex: 1;" placeholder="璇疯緭鍏�" v-trim/>
-                    <el-button type="primary" style="flex-shrink: 0; margin-left: 15px;" @click="send" v-if="num === 0">鍙戦�侀獙璇佺爜</el-button>
-                    <el-button type="primary" style="flex-shrink: 0; margin-left: 15px;" v-else>{{num}}s</el-button>
-                </div>
-            </el-form-item>
-            <el-form-item label="楠岃瘉鐮�" prop="captche" v-if="form.type !== 1">
-                <el-input v-model="form.captche" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="鍏徃璐﹀彿" prop="username" v-if="form.type !== 1">
-                <el-input v-model="form.username" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="璁よ瘉閭" prop="email" v-if="form.type !== 1">
-                <el-input v-model="form.email" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="绾崇◣浜鸿瘑鍒彿" prop="taxCode">
-                <el-input v-model="form.taxCode" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="閾惰璐﹀彿" prop="taxAccount">
-                <el-input v-model="form.taxAccount" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="寮�鎴疯" prop="taxBank">
-                <el-input v-model="form.taxBank" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="鍦板潃銆佺數璇�" prop="taxAddr">
-                <el-input v-model="form.taxAddr" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="鐢靛瓙鍙戠エ鎺ユ敹鍦板潃" prop="invoiceEmail">
-                <el-input v-model="form.invoiceEmail" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="绾歌川鍙戠エ鎺ユ敹鍦板潃" prop="invoiceAddr">
-                <el-input v-model="form.invoiceAddr" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="钀ヤ笟鎵х収" prop="businessImg">
-                <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file" @uploadSuccess="result" />
-            </el-form-item>
-            <el-form-item label="娉曚汉韬唤璇�" prop="idcardImgList">
-                <div style="width: 100%; display: flex; align-items: center;">
-                    <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file1" @uploadSuccess="result1" />
-                    <div style="width: 15px;height: 100%;"></div>
-                    <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file2" @uploadSuccess="result2" />
-                </div>
-            </el-form-item>
-            <el-form-item label="鐢靛瓙绛剧珷" prop="signImg">
-                <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file3" @uploadSuccess="result3" />
-            </el-form-item>
-        </el-form>
-        <el-button type="primary" style="margin-bottom: 15px;" @click="add" v-if="form.type !== 1">娣诲姞</el-button>
-        <el-table
-            v-if="form.type !== 1"
-            :data="form.solutionList"
-            border
-            style="width: 100%">
-            <el-table-column
-                label="搴忓彿"
-                align="center"
-                width="80">
-                <template slot-scope="scope">
-                    <span>{{scope.$index + 1}}</span>
-                </template>
-            </el-table-column>
-            <el-table-column
-                align="center"
-                label="淇濋櫓鏂规">
-                <template slot-scope="{row}">
-                    <el-select v-model="row.solutionBaseId" placeholder="璇烽�夋嫨">
-                        <el-option
-                            v-for="item in programme"
-                            :key="item.id"
-                            :label="item.name"
-                            :value="item.id">
-                        </el-option>
-                    </el-select>
-                </template>
-            </el-table-column>
-            <el-table-column
-                align="center"
-                label="鍔犲噺淇濆姛鑳�">
-                <template slot-scope="{row}">
-                    <el-checkbox :true-label="1" :false-label="0" v-model="row.canAdd">鍔犱繚</el-checkbox>
-                    <el-checkbox :true-label="1" :false-label="0" v-model="row.canReduce">鍑忎繚</el-checkbox>
-                </template>
-            </el-table-column>
-            <el-table-column
-                label="鎿嶄綔"
-                align="center"
-                width="100">
-                <template slot-scope="scope">
-                    <el-button type="text" size="small" style="color: red;" @click="dele(scope.$index)">鍒犻櫎</el-button>
-                </template>
-            </el-table-column>
-        </el-table>
-    </GlobalWindow>
+  <GlobalAlertWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    width="750px"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" label-width="125px" :rules="rules">
+      <el-form-item label="浼佷笟鍏ㄧО" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鎴蜂紒涓氬叏绉帮紝涓嶈秴杩�30瀛�" v-trim/>
+        浼佷笟鍚嶇О闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
+      </el-form-item>
+      <el-form-item label="瀹㈡埛绠�绉�" prop="shortName">
+        <el-input v-model="form.shortName" placeholder="璇疯緭鍏ュ鎴风畝绉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCode">
+        <el-input v-model="form.creditCode" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" v-trim/>
+        缁熶竴淇$敤浠g爜闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
+      </el-form-item>
+      <el-form-item label="鐧诲綍璐﹀彿" prop="managerUserName">
+        <el-input v-model="form.managerUserName" :disabled="!!this.form.id" placeholder="璇疯緭鍏ョ櫥褰曡处鍙�" v-trim/>
+      </el-form-item>
+      <el-form-item label="绯荤粺浣跨敤鏈夋晥鏈�" prop="oepnValidDate">
+        <el-date-picker v-model="form.oepnValidDate" value-format="yyyy-MM-dd" :disabled="!!this.form.id" placeholder="璇疯緭鍏ョ郴缁熶娇鐢ㄦ湁鏁堟湡"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="涓绘挱鏁伴噺闄愬埗" prop="userNum">
+        <el-input v-model="form.userNum" :disabled="!!this.form.id" placeholder="璇疯緭鍏ヤ富鎾暟閲忛檺鍒�" v-trim/>
+        杈撳叆0琛ㄧず涓嶉檺鍒�
+      </el-form-item>
+      <el-form-item label="閿�鍞汉鍛�" prop="salesmanId">
+        <!-- <el-input v-model="form.salesmanId" placeholder="璇疯緭鍏ラ攢鍞汉鍛樼紪鐮�" v-trim/> -->
+        <el-select v-model="form.salesmanId" clearable placeholder="璇烽�夋嫨" filterable >
+          <el-option v-for="item in sales" :label="item.realname" :key="item.id" :value="item.id"></el-option>
+        </el-select>
+      </el-form-item>
+
+      <div class="more">
+        <div class="more-title">鏇村璁剧疆</div>
+        <el-form-item label="鑱旂郴浜�" prop="linkname">
+          <el-input v-model="form.linkname" placeholder="璇疯緭鍏ヨ仈绯讳汉" v-trim/>
+        </el-form-item>
+        <el-form-item label="鑱旂郴浜虹數璇�" prop="linkephone">
+          <el-input v-model="form.linkephone" placeholder="璇疯緭鍏ヨ仈绯讳汉鐢佃瘽" v-trim/>
+        </el-form-item>
+      </div>
+      
+      
+      
+    </el-form>
+  </GlobalAlertWindow>
 </template>
 
 <script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import UploadAvatarImage from '@/components/common/UploadAvatarImage'
-    import { all } from '@/api/business/solutions'
-    import { sendSms } from '@/api/business/smsEmail'
-    export default {
-        name: 'OperaCompanyWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow, UploadAvatarImage },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    name: '',
-                    code: '',
-                    legalName: '',
-                    taxCode: '',
-                    taxAccount: '',
-                    username: '',
-                    taxBank: '',
-                    taxAddr: '',
-                    invoiceEmail: '',
-                    invoiceAddr: '',
-                    phone: '',
-                    email: '',
-                    captche: '',
-                    businessImg: {
-                        fileurl: '',
-                        name: ''
-                    },
-                    idcardImgList: [],
-                    signImg: {
-                        fileurl: '',
-                        name: ''
-                    },
-                    solutionList: [
-                        {
-                            solutionBaseId: '',
-                            canAdd: 0,
-                            canReduce: 0
-                        }
-                    ],
-                    type: '',
-                    file: {
-                        imgurl: '',
-                        imgurlfull: ''
-                    },
-                    file1: {
-                        imgurl: '',
-                        imgurlfull: ''
-                    },
-                    file2: {
-                        imgurl: '',
-                        imgurlfull: ''
-                    },
-                    file3: {
-                        imgurl: '',
-                        imgurlfull: ''
-                    },
-                },
-                timer: null,
-                num: 0,
-                // 楠岃瘉瑙勫垯
-                rules: {
-                    name: [
-                        { required: true, message: '璇疯緭鍏ュ叕鍙稿悕绉�' }
-                    ],
-                    code: [
-                        { required: true, message: '璇疯緭鍏ョ粺涓�淇$敤浠g爜' }
-                    ],
-                    captche: [
-                        { required: true, message: '璇疯緭鍏ラ獙璇佺爜' }
-                    ],
-                    legalName: [
-                        { required: true, message: '璇疯緭鍏ユ硶浜哄鍚�' }
-                    ],
-                    phone: [
-                        { required: true, message: '璇疯緭鍏ユ墜鏈哄彿' }
-                    ],
-                    taxAccount: [
-                        { required: true, message: '璇疯緭鍏ユ墜鏈哄彿' }
-                    ],
-                    email: [
-                        { required: true, message: '璇疯緭鍏ヨ璇侀偖绠�' }
-                    ],
-                    businessImg: [
-                        { required: true, message: '璇蜂笂浼犺惀涓氭墽鐓�' }
-                    ],
-                    idcardImgList: [
-                        { required: true, message: '璇蜂笂浼犳硶浜鸿韩浠借瘉' }
-                    ],
-                    signImg: [
-                        { required: true, message: '璇蜂笂浼犵數瀛愮绔�' }
-                    ],
-                    username: [
-                        { required: true, message: '璇疯緭鍏ュ叕鍙歌处鍙�' }
-                    ]
-                },
-
-                programme: []
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/company',
-                'field.id': 'id'
-            })
-        },
-        watch: {
-            visible: {
-                handler(news) {
-                    if (news) {
-                        clearInterval(this.timer)
-                        this.num = 0
-                    }
-                }
-            }
-        },
-        methods: {
-            send() {
-                if (!this.form.phone) {
-                    this.$message.warning('璇疯緭鍏ユ墜鏈哄彿')
-                    return
-                }
-                sendSms({ phone: this.form.phone })
-                    .then(res => {
-                        this.num = 60
-                        this.setTime()
-                    })
-            },
-            setTime() {
-                this.timer = setInterval(() => {
-                    this.num -= 1
-                    if (this.num === 0) {
-                        clearInterval(this.timer)
-                        this.num = 0
-                    }
-                }, 1000)
-            },
-            open (title, target) {
-                this.title = title
-                this.visible = true
-                this.getAll()
-                // 鏂板缓
-                if (target == null) {
-                    this.$nextTick(() => {
-                        this.$refs.form.resetFields()
-                        this.form[this.configData['field.id']] = null
-                    })
-                    return
-                }
-                // 缂栬緫
-                this.$nextTick(() => {
-                    for (const key in this.form) {
-                        this.form[key] = target[key]
-                    }
-                })
-            },
-            // 鑾峰彇鍏ㄩ儴鏂规
-            getAll() {
-                all({})
-                    .then(res => {
-                        this.programme = res
-                    })
-            },
-            dele(index) {
-                if (this.form.solutionList.length === 1) {
-                    this.$message.warning('鑷冲皯淇濈暀涓�椤�')
-                    return
-                }
-                this.form.solutionList.splice(index, 1)
-            },
-            add() {
-                this.form.solutionList.push({
-                    solutionName: '',
-                    canAdd: '',
-                    canReduce: ''
-                })
-            },
-            handleRemove(file, fileList) {
-                console.log(file, fileList);
-            },
-            // 鎺ユ敹钀ヤ笟鎵х収鏁版嵁
-            result(data) {
-                this.form.businessImg = {
-                    fileurl: '',
-                    name: ''
-                }
-                this.form.businessImg.fileurl = data.imgurl
-                this.form.businessImg.name = data.name
-            },
-            // 韬唤璇佺収鐗�1
-            result1(data) {
-                this.form.idcardImgList[0] = {
-                    fileurl: '',
-                    name: ''
-                }
-                this.form.idcardImgList[0] = { fileurl: data.imgurl, name: data.name }
-            },
-            // 韬唤璇佺収鐗�2
-            result2(data) {
-                this.form.idcardImgList[1] = {
-                    fileurl: '',
-                    name: ''
-                }
-                this.form.idcardImgList[1] = { fileurl: data.imgurl, name: data.name }
-            },
-            // 鐢靛瓙绛剧珷
-            result3(data) {
-                this.form.signImg = {
-                    fileurl: '',
-                    name: ''
-                }
-                this.form.signImg.fileurl = data.imgurl
-                this.form.signImg.name = data.name
-            }
-        }
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+import { findAllList } from '@/api/system/user'
+import { loginNameRule, creditCode } from '@/utils/form'
+export default {
+  name: 'OperaCompanyWindow',
+  extends: BaseOpera,
+  components: { GlobalAlertWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        managerUserName: '',
+        name: '',
+        shortName: '',
+        remark: '',
+        managerId: '',
+        linkname: '',
+        linkephone: '',
+        creditCode: '',
+        userNum: '5',
+        oepnValidDate: '',
+        salesmanId: ''
+      },
+      sales: [],
+      // 楠岃瘉瑙勫垯
+      rules: {
+        name: [
+          { required: true, message: '璇疯緭鍏ュ鎴蜂紒涓氬叏绉�', tigger: 'blur'}
+        ],
+        managerUserName: [
+          { required: true, validator: loginNameRule, message: '璇疯緭鍏ョ櫥褰曡处鍙�', tigger: 'blur'}
+        ],
+        creditCode: [
+          { validator: creditCode, trigger: 'blur' }
+        ],
+        openUserNum: [
+          { pattern: /^[0-9]+$/, message: '鍙彲浠ヨ緭鍏ユ暟瀛�', trigger: 'change' }
+        ]
+      }
     }
+  },
+  created () {
+    this.config({
+      api: '/business/company',
+      'field.id': 'id'
+    })
+    findAllList({ type: 0 })
+      .then(res => {
+        this.sales = res
+      })
+  },
+  methods: {
+    open(title, target) {
+      this.title = title
+      this.visible = true
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          let data = new Date(new Date().getTime() + 31536000000)
+          this.form.oepnValidDate = `${data.getFullYear()}-${data.getMonth() +1}-${data.getDate()}`
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+        this.form.multifileList.forEach(item => {
+          item.url = item.filefullurl
+        })
+      })
+    },
+  },
+}
 </script>
+
+<style lang="scss" scoped>
+.more {
+  margin-top: 40px;
+  
+  .more-title {
+    font-weight: 600;
+    font-size: 18px;
+    margin-bottom: 10px;
+  }
+}
+::v-deep .el-input {
+  width: 300px;
+  margin-right: 10px;
+}
+</style>
diff --git a/platform/src/components/business/OperaDispatchUnitWindow.vue b/platform/src/components/business/OperaDispatchUnitWindow.vue
deleted file mode 100644
index 3593eed..0000000
--- a/platform/src/components/business/OperaDispatchUnitWindow.vue
+++ /dev/null
@@ -1,245 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="50%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="box">
-            <div class="box_label">娲鹃仯鍗曚綅璇︽儏</div>
-            <div class="box_list">
-                <div class="box_list_item">
-                    <div class="box_list_item_label">娲鹃仯鍗曚綅锛�</div>
-                    <div class="box_list_item_val">鑺滄箹鏍煎姏绮惧瘑鍒堕�犳湁闄愬叕鍙�</div>
-                </div>
-                <div class="box_list_item">
-                    <div class="box_list_item_label">娲鹃仯鍗曚綅淇$敤浠g爜锛�</div>
-                    <div class="box_list_item_val">913401000900000001</div>
-                </div>
-                <div class="box_list_item">
-                    <div class="box_list_item_label">娲鹃仯鍗曚綅鐘舵�侊細</div>
-                    <div class="box_list_item_val">宸查�氳繃</div>
-                </div>
-                <div class="box_list_item">
-                    <div class="box_list_item_label">娲鹃仯鍗曚綅璇﹁堪锛�</div>
-                    <div class="box_list_item_val">鏃�</div>
-                </div>
-            </div>
-            <div class="box_x"></div>
-            <div class="box_fa">淇濋櫓鏂规锛氬钩瀹変繚闄╅泧涓昏矗浠婚櫓A鐗�</div>
-            <el-table
-                :data="tableData"
-                border
-                style="width: 100%">
-                <el-table-column
-                    label="搴忓彿"
-                    align="center"
-                    width="80">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    label="鎵�灞炲伐绉�">
-                    <template slot-scope="{row}">
-                        <el-select v-model="row.info" placeholder="璇烽�夋嫨">
-                            <el-option
-                                v-for="item in options"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
-                            </el-option>
-                        </el-select>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    label="瀹℃牳閫氳繃鏃ユ湡"
-                    width="150"
-                    align="center"
-                    prop="time">
-                </el-table-column>
-            </el-table>
-            <div class="box_videos">
-                <div class="box_videos_item" v-for="(item,index) in 1" :key="index">
-                    <video src="https://baidu.com"></video>
-                    <div class="box_videos_item_info">
-                        1-3绫� 钄彍/鍥壓宸�/瀹剁瀹剁暅楗插吇浜哄憳
-                    </div>
-                </div>
-            </div>
-            <div class="box_fa">淇濋櫓鏂规锛氬钩瀹変繚闄╅泧涓昏矗浠婚櫓A鐗�</div>
-            <el-table
-                    :data="tableData"
-                    border
-                    style="width: 100%">
-                <el-table-column
-                        label="搴忓彿"
-                        align="center"
-                        width="80">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                        align="center"
-                        label="鎵�灞炲伐绉�">
-                    <template slot-scope="{row}">
-                        <el-select v-model="row.info" placeholder="璇烽�夋嫨">
-                            <el-option
-                                    v-for="item in options"
-                                    :key="item.value"
-                                    :label="item.label"
-                                    :value="item.value">
-                            </el-option>
-                        </el-select>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                        label="瀹℃牳閫氳繃鏃ユ湡"
-                        width="150"
-                        align="center"
-                        prop="time">
-                </el-table-column>
-            </el-table>
-            <div class="box_videos">
-                <div class="box_videos_item" v-for="(item,index) in 1" :key="index">
-                    <video src="https://baidu.com"></video>
-                    <div class="box_videos_item_info">
-                        1-3绫� 钄彍/鍥壓宸�/瀹剁瀹剁暅楗插吇浜哄憳
-                    </div>
-                </div>
-            </div>
-            <div class="box_label">瀹℃牳娴佺▼</div>
-            <el-timeline :reverse="reverse" style="margin-top: 20px;">
-                <el-timeline-item
-                    v-for="(activity, index) in activities"
-                    :key="index"
-                    :timestamp="activity.timestamp">
-                    {{activity.content}}
-                </el-timeline-item>
-            </el-timeline>
-        </div>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    export default {
-        name: 'OperaDispatchUnitWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                reverse: true,
-                activities: [{
-                    content: '鎻愪氦娲鹃仯鍗曚綅',
-                    timestamp: '鎿嶄綔鍛�-寮犱紵锛堝畨寰借眴绫崇鎶�鏈夐檺鍏徃锛塡n' +
-                        '\n' +
-                        '2023-09-11 00:00:00'
-                }, {
-                    content: '娲鹃仯鍗曚綅閫氳繃\n' +
-                        '\n' +
-                        '\n' +
-                        '鎻愪氦鎰忚锛�-',
-                    timestamp: '鎿嶄綔鍛�-鍙舵樉楠忥紙骞冲彴绔級\n' +
-                        '\n' +
-                        '2023-09-11 00:00:00'
-                }],
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    worktypeStatus: ''
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                tableData: []
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/dispatchUnit',
-                'field.id': 'id'
-            })
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-    .box {
-        width: 100%;
-        .box_label {
-            font-size: 20px;
-            font-weight: 600;
-            margin-bottom: 10px;
-        }
-        .box_list {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            flex-wrap: wrap;
-            justify-content: space-between;
-            .box_list_item {
-                width: 33.3%;
-                display: flex;
-                align-items: center;
-                margin-top: 10px;
-                .box_list_item_label {
-                    flex-shrink: 0;
-                    font-size: 14px;
-                    color: black;
-                }
-                .box_list_item_val {
-                    flex: 1;
-                    font-size: 14px;
-                    color: black;
-                }
-            }
-        }
-        .box_x {
-            width: 100%;
-            height: 1px;
-            background: #ececec;
-            margin: 20px 0;
-        }
-        .box_fa {
-            font-size: 14px;
-            color: black;
-            margin-bottom: 20px;
-        }
-        .box_videos {
-            width: 100%;
-            display: flex;
-            flex-wrap: wrap;
-            align-items: center;
-            margin-top: 20px;
-            .box_videos_item {
-                width: 300px;
-                padding: 5px;
-                box-sizing: border-box;
-                display: flex;
-                align-items: start;
-                border: 1px solid #ececec;
-                margin-right: 20px;
-                margin-bottom: 20px;
-                &:last-child {
-                    margin-right: 0 !important;
-                }
-                video {
-                    flex-shrink: 0;
-                    width: 100px;
-                    height: 100px;
-                }
-                .box_videos_item_info {
-                    flex: 1;
-                    font-size: 14px;
-                    color: black;
-                    margin-left: 5px;
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/OperaGoodsWindow.vue b/platform/src/components/business/OperaGoodsWindow.vue
new file mode 100644
index 0000000..b4d0072
--- /dev/null
+++ b/platform/src/components/business/OperaGoodsWindow.vue
@@ -0,0 +1,173 @@
+<template>
+  <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" width="800px"
+    v-loading="isUploading">
+    <el-form :model="form" ref="form" label-width="120px" :rules="rules">
+      <div style="font-size: 18px;font-weight: bold; margin-bottom: 10px;">鍩烘湰淇℃伅</div>
+      <el-form-item label="鍟嗗搧鍚嶇О" prop="name">
+        <el-input v-model="form.name" maxlength="50" placeholder="璇疯緭鍏ュ晢鍝佸悕绉帮紝涓嶈秴杩�50涓瓧" v-trim />
+      </el-form-item>
+      <el-form-item label="鍟嗗搧鍝佺墝" prop="brandId">
+        <el-select v-model="form.brandId" filterable placeholder="璇烽�夋嫨锛屽崟閫�">
+          <el-option v-for="item in brandList()" :key="item.id" :label="item.name" :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鍟嗗搧绫诲埆" prop="categoryId">
+        <el-select v-model="form.categoryId" filterable placeholder="璇烽�夋嫨锛屽崟閫�" @change="categorySelect">
+          <el-option v-for="item in categoryList()" :key="item.id" :label="item.name" :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鎸囧浠凤紙鍏冿級" prop="zdPrice">
+        <el-input v-model="form.zdPrice" @input="priceCHANEG(form.zdPrice, 1)" type="number" placeholder="寤鸿褰曞叆鏁存暟锛屽崟浣嶅厓"
+          v-trim />
+      </el-form-item>
+      <el-form-item label="鍏ユ墜浠凤紙鍏冿級" prop="price">
+        <el-input v-model="form.price" @input="priceCHANEG(form.price, 2)" type="number" placeholder="寤鸿褰曞叆鏁存暟锛屽崟浣嶅厓"
+          v-trim />
+      </el-form-item>
+      <el-form-item label="鍟嗗搧涓诲浘">
+        <UploadAvatarImage :file="{ 'imgurlfull': form.imgfullurl, 'imgurl': form.imgurl }" :uploadData="uploadData"
+          tipsLabel="" @uploadSuccess="uploadReverseSuccess" @uploadEnd="isUploading = false"
+          @uploadBegin="isUploading = true" />
+        鍙兘涓婁紶鍥剧墖鏍煎紡锛宲ng鏍煎紡锛屽缓璁昂瀵�140px*140px
+      </el-form-item>
+      <el-form-item label="鍟嗗搧鍥剧墖">
+        <UploadImage :fileList="form.multifileList" :uploadData="uploadData" @beginUpload="isUploading = true" @endUpload="isUploading = false" />
+        鍙兘涓婁紶鍥剧墖鏍煎紡锛宲ng鏍煎紡锛屽缓璁昂瀵�600*600px
+      </el-form-item>
+      <template v-if="form.baseGoodsParamList && form.baseGoodsParamList.length > 0">
+        <div style="font-size: 18px;font-weight: bold; margin-bottom: 10px;">鍙傛暟灞炴�у�奸厤缃� <span
+            style="font-size: 13px; font-weight: 500;">鎸夐渶閰嶇疆褰撳墠鍟嗗搧鐨勪骇鍝佸弬鏁板�硷紝鍗曚釜鍙傛暟鍊间笉瓒呰繃30涓瓧</span></div>
+        <el-form-item :label="item.name" v-for="(item, index) in form.baseGoodsParamList" :key="index">
+          <el-input v-model="item.val" maxlength="30" type="text" placeholder="璇疯緭鍏�" v-trim />
+        </el-form-item>
+      </template>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadAvatarImage from '@/components/common/UploadAvatarImage.vue'
+import UploadImage from '@/components/common/UploadImage.vue'
+import { baseCategory, brand } from '@/api/system/common.js'
+import { companyCreate, companyUpdateById } from '@/api/business/goods.js'
+export default {
+  name: 'OperaGoodsWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow, UploadAvatarImage, UploadImage },
+  data() {
+    return {
+      action: process.env.VUE_APP_API_PREFIX + '/public/upload',
+      name1: '',
+      name2: '',
+      // 琛ㄥ崟鏁版嵁
+      isUploading: false,
+      form: {
+        id: null,
+        name: '',
+        categoryId: '',
+        brandId: '',
+        zdPrice: '',
+        price: '',
+        imgurl: '',
+        imgfullurl: '',
+        multifileList: [],
+        baseGoodsParamList: [],
+      },
+      uploadData: {
+        folder: 'goods_img'
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+        name: [
+          { required: true, message: '涓嶈兘涓虹┖', trigger: 'blur' }
+        ],
+        categoryId: [
+          { required: true, message: '璇烽�夋嫨', trigger: 'change' }
+        ],
+        brandId: [
+          { required: true, message: '璇烽�夋嫨', trigger: 'change' }
+        ],
+        zdPrice: [
+          { required: true, message: '涓嶈兘涓虹┖', trigger: 'blur' }
+        ],
+        price: [
+          { required: true, message: '涓嶈兘涓虹┖', trigger: 'blur' }
+        ]
+      },
+      options: []
+    }
+  },
+  inject: ['categoryList', 'brandList'],
+  created() {
+    this.config({
+      api: '/business/goods',
+      'field.id': 'id'
+    })
+    // this.getbrand()
+    // this.getcategory()
+  },
+  methods: {
+    open(title, target) {
+      this.title = title
+      this.visible = true
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form.imgurl = ''
+          this.form.imgfullurl = ''
+          this.form.multifileList = []
+          this.form.baseGoodsParamList = []
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+        this.form.multifileList.forEach(item => {
+          item.url = item.filefullurl
+        })
+      })
+    },
+    priceCHANEG(val, type) {
+      if (!/^[1-9]+[0-9]*$/.test(val)) {
+        this.$message.warning('鍙兘杈撳叆姝f暣鏁�')
+        if (type === 1) {
+          this.form.zdPrice = ''
+        } else {
+          this.form.price = ''
+        }
+      }
+    },
+    categorySelect(v) {
+      this.categoryList().forEach(item => {
+        if (item.id === v) {
+          this.form.baseGoodsParamList = JSON.parse(JSON.stringify(item.baseCateParamList))
+          this.form.baseGoodsParamList.forEach(item => {
+            item.pramaId = item.id
+          })
+        }
+      })
+    },
+    uploadReverseSuccess(file) {
+      this.form.imgurl = file.imgurl;
+      this.form.imgfullurl = file.imgurlfull;
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-form-item__content {
+  .el-input {
+    width: 400px;
+  }
+}
+</style>
diff --git a/platform/src/components/business/OperaInsuranceApplyWindow.vue b/platform/src/components/business/OperaInsuranceApplyWindow.vue
deleted file mode 100644
index b61ea73..0000000
--- a/platform/src/components/business/OperaInsuranceApplyWindow.vue
+++ /dev/null
@@ -1,593 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="80%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="desc">
-            <div class="desc_item">
-                <div class="desc_item_label">
-                    <div class="desc_item_label_left">
-                        <span>鎶曚繚浼佷笟锛氬畨寰藉钩瀹変汉鍔涜祫婧愭湁闄愬叕鍙�</span>
-                        <span>淇濆崟鐘舵�侊細寰呭嚭鍗�</span>
-                        <span>鎻愪氦鏃堕棿锛�2023-09-11 00:00:00</span>
-                    </div>
-                    <div class="desc_item_label_right">
-                        <el-button type="primary" @click="$refs.InsuranceDetails.open('鎶曚繚璇︽儏鍗�')">瀵煎嚭璇﹀崟</el-button>
-                        <el-button type="primary" @click="visible2 = true">涓婁紶鎶曚繚鍗�</el-button>
-                        <el-button type="primary" @click="visible3 = true">涓婁紶淇濋櫓鍗�</el-button>
-                        <el-button type="primary" @click="visible5 = true">椹冲洖閫�鍥炵敵璇�</el-button>
-                        <el-button type="primary" @click="$refs.InsuranceDetails.open('鎶曚繚璇︽儏鍗�')">鎶曚繚瀹℃牳</el-button>
-                        <el-button type="danger" @click="visible1 = true">閫�鍥炴姇淇�</el-button>
-                        <el-button type="danger" @click="visible4 = true">淇敼淇濋櫓鍗�</el-button>
-                    </div>
-                </div>
-                <div class="desc_item_from">
-                    <el-table
-                        :data="tableData"
-                        border
-                        style="width: 100%">
-                        <el-table-column
-                            prop="date"
-                            label="淇濆崟鍙�">
-                        </el-table-column>
-                        <el-table-column
-                            prop="name"
-                            label="淇濋櫓鏂规"
-                            width="180">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="淇濋櫓鐢熸晥璧锋湡">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="淇濋櫓鐢熸晥姝㈡湡">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="鎶曚繚浜烘暟">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="鍦ㄤ繚鏃堕暱锛堝ぉ锛�">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="褰撳墠璐圭敤">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="鎬昏垂鐢�">
-                        </el-table-column>
-                    </el-table>
-                </div>
-                <div class="desc_item_cate">
-                    <el-tabs v-model="activeName" @tab-click="handleClick">
-                        <el-tab-pane label="鍦ㄤ繚浜哄憳" name="first"></el-tab-pane>
-                        <el-tab-pane label="鍔�/鍑忎繚璁板綍" name="second"></el-tab-pane>
-                        <el-tab-pane label="鎹㈠巶璁板綍" name="third"></el-tab-pane>
-                    </el-tabs>
-                </div>
-                <div class="desc_item_search">
-                    <el-form :inline="true" :model="formInline" class="demo-form-inline">
-                        <el-form-item label="鍦ㄤ繚鐘舵��" prop="region">
-                            <el-select v-model="formInline.region" placeholder="璇烽�夋嫨">
-                                <el-option label="淇濋殰涓�" value="1"></el-option>
-                                <el-option label="涓嶅湪淇�" value="2"></el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="娲鹃仯鍗曚綅" prop="region">
-                            <el-select v-model="formInline.region" placeholder="璇烽�夋嫨">
-                                <el-option label="淇濋殰涓�" value="1"></el-option>
-                                <el-option label="涓嶅湪淇�" value="2"></el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="鎵�灞炲伐绉�" prop="region">
-                            <el-select v-model="formInline.region" placeholder="璇烽�夋嫨">
-                                <el-option label="淇濋殰涓�" value="1"></el-option>
-                                <el-option label="涓嶅湪淇�" value="2"></el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="鍛樺伐濮撳悕" prop="user">
-                            <el-input v-model="formInline.user" placeholder="璇疯緭鍏�"></el-input>
-                        </el-form-item>
-                        <el-form-item label="淇濋櫓鐢熸晥璧锋湡" prop="user">
-                            <el-date-picker
-                                v-model="formInline.user"
-                                type="daterange"
-                                range-separator="鑷�"
-                                start-placeholder="寮�濮嬫棩鏈�"
-                                end-placeholder="缁撴潫鏃ユ湡">
-                            </el-date-picker>
-                        </el-form-item>
-                        <el-form-item label="淇濋櫓鐢熸晥璧锋湡" prop="user">
-                            <el-date-picker
-                                v-model="formInline.user"
-                                type="daterange"
-                                range-separator="鑷�"
-                                start-placeholder="寮�濮嬫棩鏈�"
-                                end-placeholder="缁撴潫鏃ユ湡">
-                            </el-date-picker>
-                        </el-form-item>
-                        <section>
-                            <el-button type="primary" @click="onSubmit">鏌ヨ</el-button>
-                            <el-button>閲嶇疆</el-button>
-                            <el-button type="primary">瀵煎嚭鍚嶅崟</el-button>
-                        </section>
-                    </el-form>
-                </div>
-                <div class="desc_item_from">
-                    <el-table
-                        :data="tableData"
-                        border
-                        style="width: 100%">
-                        <el-table-column label="搴忓彿">
-                            <template slot-scope="scope">
-                                <span>{{scope.$index + 1}}</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column
-                            prop="date"
-                            label="鍛樺伐濮撳悕">
-                        </el-table-column>
-                        <el-table-column
-                            prop="name"
-                            label="鎬у埆"
-                            width="180">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="韬唤璇佸彿">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="娲鹃仯鍗曚綅">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="鎵�灞炲伐绉�">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="淇濋櫓鐢熸晥璧锋湡">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="淇濋櫓鐢熸晥姝㈡湡">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="浜х敓璐圭敤锛堝厓锛�">
-                        </el-table-column>
-                    </el-table>
-                    <div class="desc_item_from_page">
-                        <el-pagination
-                            @size-change="handleSizeChange"
-                            @current-change="handleCurrentChange"
-                            :current-page="currentPage"
-                            :page-sizes="[100, 200, 300, 400]"
-                            :page-size="100"
-                            layout="total, sizes, prev, pager, next, jumper"
-                            :total="400">
-                        </el-pagination>
-                    </div>
-                </div>
-                <div class="desc_item_review">
-                    <div class="desc_item_review_label">瀹℃牳娴佺▼</div>
-                    <el-timeline :reverse="reverse">
-                        <el-timeline-item
-                            v-for="(activity, index) in activities"
-                            :key="index"
-                            :timestamp="activity.timestamp">
-                            {{activity.content}}
-                        </el-timeline-item>
-                    </el-timeline>
-                </div>
-            </div>
-        </div>
-        <InsuranceDetails ref="InsuranceDetails" @success="successEvent" />
-        <!--    閫�鍥炴姇淇�    -->
-        <el-dialog
-            title="閫�鍥炴姇淇�"
-            :visible.sync="visible1"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>濉啓閫�鍥炶鏄庯細</div>
-                    <div class="form_item_val">
-                        <textarea placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible1 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible1 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <!--    涓婁紶鎶曚繚鍗�    -->
-        <el-dialog
-            title="涓婁紶鎶曚繚鍗�"
-            :visible.sync="visible2"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label">涓婁紶鎶曚繚鍗曪細</div>
-                    <div class="form_item_val">
-                        <el-upload
-                            class="upload-demo"
-                            action="https://jsonplaceholder.typicode.com/posts/"
-                            :on-preview="handlePreview"
-                            :on-remove="handleRemove"
-                            :before-remove="beforeRemove"
-                            multiple
-                            :limit="1"
-                            :on-exceed="handleExceed"
-                            :file-list="fileList">
-                            <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
-                            <div slot="tip" class="el-upload__tip">鍙兘涓婁紶pdf鏂囦欢锛屼笖涓嶈秴杩�5mb</div>
-                        </el-upload>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible2 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible2 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <!--    涓婁紶淇濋櫓鍗�    -->
-        <el-dialog
-            title="涓婁紶淇濋櫓鍗�"
-            :visible.sync="visible3"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label">瀹㈡埛鏈熸湜淇濋櫓鐢熸晥璧锋湡锛�</div>
-                    <div class="form_item_val">2023-10-01 00:00:00</div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">淇濋櫓鐢熸晥璧锋湡鏄惁涓�鑷达細</div>
-                    <div class="form_item_val">
-                        <el-radio-group v-model="radio">
-                            <el-radio :label="0">涓庝繚鍗曚竴鑷�</el-radio>
-                            <el-radio :label="1">涓庝繚鍗曚笉涓�鑷�</el-radio>
-                        </el-radio-group>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濋櫓鐢熸晥璧锋湡锛�</div>
-                    <div class="form_item_val">
-                        <el-date-picker
-                            v-model="value1"
-                            type="date"
-                            placeholder="閫夋嫨鏃ユ湡">
-                        </el-date-picker>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">淇濋櫓鐢熸晥璧锋湡锛�</div>
-                    <div class="form_item_val">2023-10-01 00:00:00</div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濆崟鍙凤細</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">涓婁紶淇濋櫓鍗曪細</div>
-                    <div class="form_item_val">
-                        <el-upload
-                            class="upload-demo"
-                            action="https://jsonplaceholder.typicode.com/posts/"
-                            :on-preview="handlePreview"
-                            :on-remove="handleRemove"
-                            :before-remove="beforeRemove"
-                            multiple
-                            :limit="1"
-                            :on-exceed="handleExceed"
-                            :file-list="fileList">
-                            <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
-                            <div slot="tip" class="el-upload__tip">鍙兘涓婁紶pdf鏂囦欢锛屼笖涓嶈秴杩�5mb</div>
-                        </el-upload>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible3 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible3 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <!--    淇敼淇濋櫓鍗�    -->
-        <el-dialog
-            title="淇敼淇濋櫓鍗�"
-            :visible.sync="visible4"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濋櫓鐢熸晥璧锋湡锛�</div>
-                    <div class="form_item_val">
-                        <el-date-picker
-                            v-model="value1"
-                            type="date"
-                            placeholder="閫夋嫨鏃ユ湡">
-                        </el-date-picker>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濆崟鍙凤細</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>涓婁紶淇濋櫓鍗曪細</div>
-                    <div class="form_item_val">
-                        <el-upload
-                            class="upload-demo"
-                            action="https://jsonplaceholder.typicode.com/posts/"
-                            :on-preview="handlePreview"
-                            :on-remove="handleRemove"
-                            :before-remove="beforeRemove"
-                            multiple
-                            :limit="1"
-                            :on-exceed="handleExceed"
-                            :file-list="fileList">
-                            <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
-                            <div slot="tip" class="el-upload__tip">鍙兘涓婁紶pdf鏂囦欢锛屼笖涓嶈秴杩�5mb</div>
-                        </el-upload>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇敼鍘熷洜锛�</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible4 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible4 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <!--    椹冲洖閫�鍥炵敵璇�    -->
-        <el-dialog
-            title="椹冲洖閫�鍥炵敵璇�"
-            :visible.sync="visible5"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>濉啓璇存槑锛�</div>
-                    <div class="form_item_val">
-                        <textarea placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible5 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible5 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import InsuranceDetails from '@/components/business/InsuranceDetails'
-    export default {
-        name: 'OperaInsuranceApplyWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow, InsuranceDetails },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    editDate: ''
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                formInline: {
-                    user: '',
-                    region: ''
-                },
-                visible1: false,
-                visible2: false,
-                visible3: false,
-                visible4: false,
-                visible5: false,
-                reverse: true,
-                radio: 0,
-                fileList: [
-                    {name: 'food.pdf', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}
-                ],
-                activities: [{
-                    content: '娲诲姩鎸夋湡寮�濮�',
-                    timestamp: '2018-04-15'
-                }, {
-                    content: '閫氳繃瀹℃牳',
-                    timestamp: '2018-04-13'
-                }, {
-                    content: '鍒涘缓鎴愬姛',
-                    timestamp: '2018-04-11'
-                }],
-                tableData: [],
-                activeName: 'first',
-                currentPage: 1
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insuranceApply',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            handleRemove(file, fileList) {
-                console.log(file, fileList);
-            },
-            handlePreview(file) {
-                console.log(file);
-            },
-            handleExceed(files, fileList) {
-                this.$message.warning(`褰撳墠闄愬埗閫夋嫨 3 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶);
-            },
-            beforeRemove(file, fileList) {
-                return this.$confirm(`纭畾绉婚櫎 ${ file.name }锛焋);
-            },
-            successEvent() {
-
-            },
-            handleSizeChange(val) {
-                console.log(`姣忛〉 ${val} 鏉);
-            },
-            handleCurrentChange(val) {
-                console.log(`褰撳墠椤�: ${val}`);
-            },
-            handleClick(tab, event) {
-                console.log(tab, event);
-            },
-            onSubmit() {
-
-            }
-        }
-    }
-</script>
-<style>
-    .v-modal {
-        z-index: 2000 !important;
-    }
-</style>
-<style lang="scss" scoped>
-    .form {
-        width: 100%;
-        display: flex;
-        align-items: center;
-        flex-direction: column;
-        .form_span {
-            width: 100%;
-            display: flex;
-            align-items: start;
-            flex-direction: column;
-            margin-bottom: 20px;
-            span {
-                font-size: 14px;
-                &:nth-child(1) {
-                    color: black;
-                    margin-bottom: 5px;
-                }
-                &:nth-child(2) {
-                    color: #8c939d;
-                }
-            }
-        }
-        .form_item {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            margin-bottom: 20px;
-            &:last-child {
-                margin: 0 !important;
-            }
-            .form_item_label {
-                flex-shrink: 0;
-                width: 170px;
-                color: black;
-                font-size: 14px;
-                span {
-                    color: red;
-                    font-size: 14px;
-                }
-            }
-            .form_item_val {
-                flex: 1;
-                /*height: 40px;*/
-                margin-left: 20px;
-                textarea {
-                    width: 100%;
-                    height: 70px;
-                    border: 1px solid #cbcbcb;
-                    padding: 10px;
-                    outline: none;
-                    box-sizing: border-box;
-                }
-                input {
-                    width: 100%;
-                    height: 40px;
-                    outline: none;
-                    border-radius: 5px;
-                    border: 1px solid #cbcbcb;
-                    padding: 0 20px;
-                    box-sizing: border-box;
-                }
-            }
-        }
-    }
-    .desc {
-        width: 100%;
-        .desc_item {
-            width: 100%;
-            display: flex;
-            flex-direction: column;
-            .desc_item_label {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-                margin-bottom: 10px;
-                span {
-                    font-size: 14px;
-                    color: black;
-                    margin-right: 30px;
-                }
-            }
-            .desc_item_from {
-                width: 100%;
-                margin-bottom: 10px;
-                .desc_item_from_page {
-                    width: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: end;
-                    margin-top: 10px;
-                }
-            }
-            .desc_item_cate {
-                width: 100%;
-                margin-bottom: 10px;
-            }
-            .desc_item_search {
-                width: 100%;
-                margin-bottom: 20px;
-            }
-            .desc_item_review {
-                width: 100%;
-                .desc_item_review_label {
-                    font-size: 20px;
-                    color: black;
-                    font-weight: bold;
-                    margin-bottom: 15px;
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/OperaInsuranceDescWindow.vue b/platform/src/components/business/OperaInsuranceDescWindow.vue
deleted file mode 100644
index 9d65468..0000000
--- a/platform/src/components/business/OperaInsuranceDescWindow.vue
+++ /dev/null
@@ -1,111 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        submitText="淇敼"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="$refs.operaInsuranceWindow.open('缂栬緫淇濋櫓鍏徃', form)"
-    >
-        <div class="box">
-            <div class="box_name">
-                <span>淇濋櫓鍏徃锛歿{form.name}}</span>
-                <span>鏄惁鍚敤锛歿{form.status == 0 ? '鍚敤' : '绂佺敤'}}</span>
-            </div>
-            <el-table
-                :data="tableData"
-                border>
-                <el-table-column
-                    label="搴忓彿"
-                    align="center"
-                    width="80">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    prop="name"
-                    align="center"
-                    label="宸ョ鍚嶇О">
-                </el-table-column>
-            </el-table>
-        </div>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaInsuranceWindow ref="operaInsuranceWindow" @success="success"/>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import OperaInsuranceWindow from '@/components/business/OperaInsuranceWindow'
-    import { all } from '@/api/business/worktype'
-    export default {
-        name: 'OperaInsuranceDescWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow, OperaInsuranceWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    name: '',
-                    status: ''
-                },
-                tableData: []
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insurance',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            open (title, target) {
-                this.title = title
-                this.visible = true
-                // 鏂板缓
-                if (target == null) {
-                    this.$nextTick(() => {
-                        this.$refs.form.resetFields()
-                        this.form[this.configData['field.id']] = null
-                    })
-                    return
-                }
-                // 缂栬緫
-                this.$nextTick(() => {
-                    for (const key in this.form) {
-                        this.form[key] = target[key]
-                    }
-                    all({ insuranceId: this.form.id })
-                        .then(res => {
-                            let arr = []
-                            res.forEach(item => {
-                                arr.push({ name: item.name })
-                            })
-                            this.tableData = arr
-                        })
-                })
-            },
-            success() {
-                this.$emit('success')
-                this.visible = false
-            }
-        }
-    }
-</script>
-<style lang="scss" scoped>
-    .box {
-        width: 100%;
-        .box_name {
-            display: flex;
-            align-items: center;
-            margin-bottom: 10px;
-            span {
-                font-size: 16px;
-                color: black;
-                margin-right: 30px;
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/OperaInsuranceWindow.vue b/platform/src/components/business/OperaInsuranceWindow.vue
deleted file mode 100644
index ed719f6..0000000
--- a/platform/src/components/business/OperaInsuranceWindow.vue
+++ /dev/null
@@ -1,157 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <el-form :model="form" ref="form" :rules="rules">
-            <el-form-item label="淇濋櫓鍏徃" prop="name">
-                <el-input v-model="form.name" placeholder="骞冲畨淇濋櫓" v-trim/>
-            </el-form-item>
-            <div style="width: 100%; display: flex; align-items: center;margin-bottom: 10px;">
-                <el-button type="primary" @click="add">娣诲姞</el-button>
-                <el-button type="primary" @click="impor">瀵煎叆宸ョ</el-button>
-                <el-button type="text" @click="exprot">瀵煎叆妯$増xls</el-button>
-            </div>
-            <el-table
-                :data="form.worktypeList"
-                border
-                style="width: 100%; margin-bottom: 20px;">
-                <el-table-column
-                    label="搴忓彿"
-                    align="center"
-                    width="80">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    label="宸ョ鍚嶇О">
-                    <template slot-scope="{row}">
-                        <el-input v-model="row.name" placeholder="璇疯緭鍏�" v-trim/>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    label="鎿嶄綔"
-                    align="center"
-                    width="100">
-                    <template slot-scope="scope">
-                        <el-button type="text" size="small" style="color: red;" @click="dele(scope.$index)">鍒犻櫎</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-        </el-form>
-        <!--    涓婁紶宸ョ    -->
-        <input type="file" @change="getFile" style="opacity: 0;" ref="upload" accept=".xlsx" />
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import { importExcel, all } from '@/api/business/worktype'
-
-    export default {
-        name: 'OperaInsuranceWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    name: '',
-                    worktypeList: [
-                        { name: '' }
-                    ]
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                }
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insurance',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            open (title, target) {
-                this.title = title
-                this.visible = true
-                // 鏂板缓
-                if (target == null) {
-                    this.$nextTick(() => {
-                        this.$refs.form.resetFields()
-                        this.form[this.configData['field.id']] = null
-                    })
-                    return
-                }
-                // 缂栬緫
-                this.$nextTick(() => {
-                    for (const key in this.form) {
-                        this.form[key] = target[key]
-                    }
-                    all({ insuranceId: this.form.id })
-                        .then(res => {
-                            let arr = []
-                            res.forEach(item => {
-                                arr.push({ name: item.name })
-                            })
-                            this.form.worktypeList = arr
-                        })
-                })
-            },
-            // 瀵煎嚭妯℃澘
-            exprot() {
-                let a = document.createElement("a");
-                a.href = '/public/file/typeWork.xlsx';
-                a.download = '淇濋櫓鍏徃-宸ョ瀵煎叆妯$増.xlsx';
-                a.click();
-            },
-            // 瀵煎叆宸ョ妯℃澘
-            getFile(e) {
-                const formdate = new FormData()
-                formdate.append('file', e.target.files[0])
-                importExcel(formdate)
-                    .then(res => {
-                        res.forEach(item => {
-                            if (this.form.worktypeList.length === 0) {
-                                this.form.worktypeList.push({ name: item })
-                            } else {
-                                let next = true
-                                this.form.worktypeList.forEach(row => {
-                                    if (row.name === item) {
-                                        next = false
-                                    }
-                                })
-                                if (next) {
-                                    this.form.worktypeList.push({ name: item })
-                                }
-                            }
-                        })
-                    })
-                    .finally(() => {
-                        this.$refs.upload.value = null
-                    })
-            },
-            // 涓婁紶鏂囦欢
-            impor() {
-                this.$refs.upload.click()
-            },
-            add() {
-                this.form.worktypeList.push({ name: '' })
-            },
-            dele(index) {
-                if (this.form.worktypeList.length === 1) {
-                    this.$message.warning('鑷冲皯淇濈暀涓�椤瑰唴瀹�')
-                    return
-                }
-                this.form.worktypeList.splice(index, 1)
-            }
-        }
-    }
-</script>
diff --git a/platform/src/components/business/OperaMemberWindow.vue b/platform/src/components/business/OperaMemberWindow.vue
deleted file mode 100644
index acec779..0000000
--- a/platform/src/components/business/OperaMemberWindow.vue
+++ /dev/null
@@ -1,121 +0,0 @@
-<template>
-    <GlobalWindow
-            :title="title"
-            width="70%"
-            :visible.sync="visible"
-            :confirm-working="isWorking"
-            @confirm="confirm"
-    >
-        <div class="box">
-            <div class="box_label">
-                <div class="box_label_left">
-                    <span>濮撳悕锛氱帇鏌愭煇</span>
-                    <span>韬唤璇佸彿锛�340411190001010011</span>
-                    <span>鎶曚繚鐘舵�侊細淇濋殰涓�</span>
-                </div>
-                <el-button type="primary">瀵煎嚭璁板綍</el-button>
-            </div>
-            <el-table
-                :data="tableData"
-                border
-                style="width: 100%">
-                <el-table-column
-                    label="搴忓彿"
-                    align="center"
-                    width="80">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    prop="type"
-                    label="淇濋櫓鏂规">
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    prop="type"
-                    label="淇濆崟鍙�">
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    prop="type"
-                    label="鎵瑰崟鍙�">
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    prop="type"
-                    label="娲鹃仯鍗曚綅">
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    prop="type"
-                    label="鎵�灞炲伐绉�">
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    prop="type"
-                    label="淇濋櫓鐢熸晥璧锋湡">
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    prop="type"
-                    label="淇濋櫓鐢熸晥姝㈡湡">
-                </el-table-column>
-            </el-table>
-        </div>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    export default {
-        name: 'OperaMemberWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    worktypeId: ''
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                tableData: []
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/member',
-                'field.id': 'id'
-            })
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-    .box {
-        width: 100%;
-        .box_label {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            margin-top: 10px;
-            margin-bottom: 20px;
-            .box_label_left {
-                flex: 1;
-                display: flex;
-                align-items: center;
-                span {
-                    font-size: 15px;
-                    color: black;
-                    margin-right: 20px;
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/OperaPolicyListWindow.vue b/platform/src/components/business/OperaPolicyListWindow.vue
deleted file mode 100644
index f6b1098..0000000
--- a/platform/src/components/business/OperaPolicyListWindow.vue
+++ /dev/null
@@ -1,449 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="80%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="desc">
-            <div class="desc_item">
-                <div class="desc_item_label">
-                    <div class="desc_item_label_left">
-                        <span>鎶曚繚浼佷笟锛氬畨寰藉钩瀹変汉鍔涜祫婧愭湁闄愬叕鍙�</span>
-                        <span>淇濆崟鐘舵�侊細寰呭嚭鍗�</span>
-                        <span>鎻愪氦鏃堕棿锛�2023-09-11 00:00:00</span>
-                    </div>
-                    <div class="desc_item_label_right">
-                        <el-button type="primary" @click="$refs.policyListDetails.open('鎶曚繚璇︽儏鍗�')">瀵煎嚭璇﹀崟</el-button>
-                        <el-button type="primary">鏌ョ湅鎶曚繚鍗�</el-button>
-                        <el-button type="primary">鏌ョ湅淇濋櫓鍗�</el-button>
-                        <el-button type="danger" @click="visible4 = true">淇敼淇濋櫓鍗�</el-button>
-                    </div>
-                </div>
-                <div class="desc_item_from">
-                    <el-table
-                            :data="tableData"
-                            border
-                            style="width: 100%">
-                        <el-table-column
-                                prop="date"
-                                label="淇濆崟鍙�">
-                        </el-table-column>
-                        <el-table-column
-                                prop="name"
-                                label="淇濋櫓鏂规"
-                                width="180">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="淇濋櫓鐢熸晥璧锋湡">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="淇濋櫓鐢熸晥姝㈡湡">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="鎶曚繚浜烘暟">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="鍦ㄤ繚鏃堕暱锛堝ぉ锛�">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="褰撳墠璐圭敤">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="鎬昏垂鐢�">
-                        </el-table-column>
-                    </el-table>
-                </div>
-                <div class="desc_item_cate">
-                    <el-tabs v-model="activeName" @tab-click="handleClick">
-                        <el-tab-pane label="鍦ㄤ繚浜哄憳" name="first"></el-tab-pane>
-                        <el-tab-pane label="鍔�/鍑忎繚璁板綍" name="second"></el-tab-pane>
-                        <el-tab-pane label="鎹㈠巶璁板綍" name="third"></el-tab-pane>
-                    </el-tabs>
-                </div>
-                <div class="desc_item_search">
-                    <el-form :inline="true" :model="formInline" class="demo-form-inline">
-                        <el-form-item label="鍦ㄤ繚鐘舵��" prop="region">
-                            <el-select v-model="formInline.region" placeholder="璇烽�夋嫨">
-                                <el-option label="淇濋殰涓�" value="1"></el-option>
-                                <el-option label="涓嶅湪淇�" value="2"></el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="娲鹃仯鍗曚綅" prop="region">
-                            <el-select v-model="formInline.region" placeholder="璇烽�夋嫨">
-                                <el-option label="淇濋殰涓�" value="1"></el-option>
-                                <el-option label="涓嶅湪淇�" value="2"></el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="鎵�灞炲伐绉�" prop="region">
-                            <el-select v-model="formInline.region" placeholder="璇烽�夋嫨">
-                                <el-option label="淇濋殰涓�" value="1"></el-option>
-                                <el-option label="涓嶅湪淇�" value="2"></el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="鍛樺伐濮撳悕" prop="user">
-                            <el-input v-model="formInline.user" placeholder="璇疯緭鍏�"></el-input>
-                        </el-form-item>
-                        <el-form-item label="淇濋櫓鐢熸晥璧锋湡" prop="user">
-                            <el-date-picker
-                                    v-model="formInline.user"
-                                    type="daterange"
-                                    range-separator="鑷�"
-                                    start-placeholder="寮�濮嬫棩鏈�"
-                                    end-placeholder="缁撴潫鏃ユ湡">
-                            </el-date-picker>
-                        </el-form-item>
-                        <el-form-item label="淇濋櫓鐢熸晥璧锋湡" prop="user">
-                            <el-date-picker
-                                    v-model="formInline.user"
-                                    type="daterange"
-                                    range-separator="鑷�"
-                                    start-placeholder="寮�濮嬫棩鏈�"
-                                    end-placeholder="缁撴潫鏃ユ湡">
-                            </el-date-picker>
-                        </el-form-item>
-                        <section>
-                            <el-button type="primary" @click="onSubmit">鏌ヨ</el-button>
-                            <el-button>閲嶇疆</el-button>
-                            <el-button type="primary">瀵煎嚭鍚嶅崟</el-button>
-                        </section>
-                    </el-form>
-                </div>
-                <div class="desc_item_from">
-                    <el-table
-                            :data="tableData"
-                            border
-                            style="width: 100%">
-                        <el-table-column label="搴忓彿">
-                            <template slot-scope="scope">
-                                <span>{{scope.$index + 1}}</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column
-                                prop="date"
-                                label="鍛樺伐濮撳悕">
-                        </el-table-column>
-                        <el-table-column
-                                prop="name"
-                                label="鎬у埆"
-                                width="180">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="韬唤璇佸彿">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="娲鹃仯鍗曚綅">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="鎵�灞炲伐绉�">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="淇濋櫓鐢熸晥璧锋湡">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="淇濋櫓鐢熸晥姝㈡湡">
-                        </el-table-column>
-                        <el-table-column
-                                prop="address"
-                                label="浜х敓璐圭敤锛堝厓锛�">
-                        </el-table-column>
-                    </el-table>
-                    <div class="desc_item_from_page">
-                        <el-pagination
-                                @size-change="handleSizeChange"
-                                @current-change="handleCurrentChange"
-                                :current-page="currentPage"
-                                :page-sizes="[100, 200, 300, 400]"
-                                :page-size="100"
-                                layout="total, sizes, prev, pager, next, jumper"
-                                :total="400">
-                        </el-pagination>
-                    </div>
-                </div>
-                <div class="desc_item_review">
-                    <div class="desc_item_review_label">瀹℃牳娴佺▼</div>
-                    <el-timeline :reverse="reverse">
-                        <el-timeline-item
-                                v-for="(activity, index) in activities"
-                                :key="index"
-                                :timestamp="activity.timestamp">
-                            {{activity.content}}
-                        </el-timeline-item>
-                    </el-timeline>
-                </div>
-            </div>
-        </div>
-        <policyListDetails ref="policyListDetails" @success="successEvent" />
-        <!--    淇敼淇濋櫓鍗�    -->
-        <el-dialog
-                title="淇敼淇濋櫓鍗�"
-                :visible.sync="visible4"
-                :show-close="false"
-                :close-on-click-modal="false"
-                width="30%"
-                center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濋櫓鐢熸晥璧锋湡锛�</div>
-                    <div class="form_item_val">
-                        <el-date-picker
-                                v-model="value1"
-                                type="date"
-                                placeholder="閫夋嫨鏃ユ湡">
-                        </el-date-picker>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濆崟鍙凤細</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>涓婁紶淇濋櫓鍗曪細</div>
-                    <div class="form_item_val">
-                        <el-upload
-                                class="upload-demo"
-                                action="https://jsonplaceholder.typicode.com/posts/"
-                                :on-preview="handlePreview"
-                                :on-remove="handleRemove"
-                                :before-remove="beforeRemove"
-                                multiple
-                                :limit="1"
-                                :on-exceed="handleExceed"
-                                :file-list="fileList">
-                            <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
-                            <div slot="tip" class="el-upload__tip">鍙兘涓婁紶pdf鏂囦欢锛屼笖涓嶈秴杩�5mb</div>
-                        </el-upload>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇敼鍘熷洜锛�</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible4 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible4 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import policyListDetails from '@/components/business/policyListDetails'
-    export default {
-        name: 'OperaPolicyListWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow, policyListDetails },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    editDate: ''
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                formInline: {
-                    user: '',
-                    region: ''
-                },
-                visible1: false,
-                visible2: false,
-                visible3: false,
-                visible4: false,
-                visible5: false,
-                reverse: true,
-                radio: 0,
-                fileList: [
-                    {name: 'food.pdf', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}
-                ],
-                activities: [{
-                    content: '娲诲姩鎸夋湡寮�濮�',
-                    timestamp: '2018-04-15'
-                }, {
-                    content: '閫氳繃瀹℃牳',
-                    timestamp: '2018-04-13'
-                }, {
-                    content: '鍒涘缓鎴愬姛',
-                    timestamp: '2018-04-11'
-                }],
-                tableData: [],
-                activeName: 'first',
-                currentPage: 1
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insuranceApply',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            handleRemove(file, fileList) {
-                console.log(file, fileList);
-            },
-            handlePreview(file) {
-                console.log(file);
-            },
-            handleExceed(files, fileList) {
-                this.$message.warning(`褰撳墠闄愬埗閫夋嫨 3 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶);
-            },
-            beforeRemove(file, fileList) {
-                return this.$confirm(`纭畾绉婚櫎 ${ file.name }锛焋);
-            },
-            successEvent() {
-
-            },
-            handleSizeChange(val) {
-                console.log(`姣忛〉 ${val} 鏉);
-            },
-            handleCurrentChange(val) {
-                console.log(`褰撳墠椤�: ${val}`);
-            },
-            handleClick(tab, event) {
-                console.log(tab, event);
-            },
-            onSubmit() {
-
-            }
-        }
-    }
-</script>
-<style>
-    .v-modal {
-        z-index: 2000 !important;
-    }
-</style>
-<style lang="scss" scoped>
-    .form {
-        width: 100%;
-        display: flex;
-        align-items: center;
-        flex-direction: column;
-        .form_span {
-            width: 100%;
-            display: flex;
-            align-items: start;
-            flex-direction: column;
-            margin-bottom: 20px;
-            span {
-                font-size: 14px;
-                &:nth-child(1) {
-                    color: black;
-                    margin-bottom: 5px;
-                }
-                &:nth-child(2) {
-                    color: #8c939d;
-                }
-            }
-        }
-        .form_item {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            margin-bottom: 20px;
-            &:last-child {
-                margin: 0 !important;
-            }
-            .form_item_label {
-                flex-shrink: 0;
-                width: 170px;
-                color: black;
-                font-size: 14px;
-                span {
-                    color: red;
-                    font-size: 14px;
-                }
-            }
-            .form_item_val {
-                flex: 1;
-                /*height: 40px;*/
-                margin-left: 20px;
-                textarea {
-                    width: 100%;
-                    height: 70px;
-                    border: 1px solid #cbcbcb;
-                    padding: 10px;
-                    outline: none;
-                    box-sizing: border-box;
-                }
-                input {
-                    width: 100%;
-                    height: 40px;
-                    outline: none;
-                    border-radius: 5px;
-                    border: 1px solid #cbcbcb;
-                    padding: 0 20px;
-                    box-sizing: border-box;
-                }
-            }
-        }
-    }
-    .desc {
-        width: 100%;
-        .desc_item {
-            width: 100%;
-            display: flex;
-            flex-direction: column;
-            .desc_item_label {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-                margin-bottom: 10px;
-                span {
-                    font-size: 14px;
-                    color: black;
-                    margin-right: 30px;
-                }
-            }
-            .desc_item_from {
-                width: 100%;
-                margin-bottom: 10px;
-                .desc_item_from_page {
-                    width: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: end;
-                    margin-top: 10px;
-                }
-            }
-            .desc_item_cate {
-                width: 100%;
-                margin-bottom: 10px;
-            }
-            .desc_item_search {
-                width: 100%;
-                margin-bottom: 20px;
-            }
-            .desc_item_review {
-                width: 100%;
-                .desc_item_review_label {
-                    font-size: 20px;
-                    color: black;
-                    font-weight: bold;
-                    margin-bottom: 15px;
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/OperaSettleClaimsWindow.vue b/platform/src/components/business/OperaSettleClaimsWindow.vue
deleted file mode 100644
index 23a618d..0000000
--- a/platform/src/components/business/OperaSettleClaimsWindow.vue
+++ /dev/null
@@ -1,756 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="80%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="desc">
-            <div class="desc_label">
-                <div class="desc_label_left">
-                    <span class="desc_label_left_title">
-                        鎶ユ璇︽儏
-                    </span>
-                    <span class="desc_label_left_time">
-                        鎶ユ鏃ユ湡锛�2015-10-03 10:15:22
-                    </span>
-                    <span class="desc_label_left_code">
-                        鎶ユ鍙凤細214141241241
-                    </span>
-                </div>
-                <div class="desc_label_right">
-                    <el-button type="primary" @click="visible1 = true">娣诲姞鎶ユ鍙�</el-button>
-                    <el-button type="primary" @click="visible2 = true">鐞嗚禂澶勭悊</el-button>
-                    <el-button type="primary" @click="visible4 = true">缁撴鎻愪氦</el-button>
-                    <el-button type="danger" @click="visible3 = true">鎾ら攢鐢宠</el-button>
-                </div>
-            </div>
-            <div class="desc_list">
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        鍑洪櫓浜哄鍚嶏細
-                    </div>
-                    <div class="desc_list_item_val">
-                        鍚翠笁涓�
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        鍑洪櫓浜鸿韩浠借瘉鍙凤細
-                    </div>
-                    <div class="desc_list_item_val">
-                        320224403660011111
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        浜嬫晠鍙戠敓鏃堕棿锛�
-                    </div>
-                    <div class="desc_list_item_val">
-                        2015-10-02 10:15:22
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        鎵�灞炰繚鍗曞彿锛�
-                    </div>
-                    <div class="desc_list_item_val" style="cursor: pointer; color: rgba(39, 157, 255, 0.968627450980392);">
-                        11121624116241
-                        <el-button type="primary" style="margin-left: 10px;">鏌ョ湅淇濋櫓鍗�</el-button>
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        淇濋櫓鐢熸晥璧锋湡锛�
-                    </div>
-                    <div class="desc_list_item_val">
-                        2015-10-02 10:15:22
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        淇濋櫓鐢熸晥姝㈡湡锛�
-                    </div>
-                    <div class="desc_list_item_val">
-                        2015-10-02 10:15:22
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        娲鹃仯鍗曚綅锛�
-                    </div>
-                    <div class="desc_list_item_val">
-                        鑺滄箹鏍煎姏绮惧瘑鍒堕�犳湁闄愬叕鍙�
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        鎵�灞炲伐绉嶏細
-                    </div>
-                    <div class="desc_list_item_val">
-                        4绫绘満姊板姞宸�
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        灏辫瘖鍖荤枟鏈烘瀯锛�
-                    </div>
-                    <div class="desc_list_item_val">
-                        瀹夊窘鐪佷汉姘戝尰闄�
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        浜嬫晠绫诲瀷锛�
-                    </div>
-                    <div class="desc_list_item_val">
-                        宸ヤ綔鏈熼棿鍙椾激
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        鏄惁浣忛櫌锛�
-                    </div>
-                    <div class="desc_list_item_val">
-                        鍚�
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        鏄惁鏈夊尰鐤椾繚闄╋細
-                    </div>
-                    <div class="desc_list_item_val">
-                        鍚�
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        鍑洪櫓鍦板尯锛�
-                    </div>
-                    <div class="desc_list_item_val">
-                        瀹夊窘鐪佸悎鑲ュ競
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        鎶ユ浜哄鍚嶏細
-                    </div>
-                    <div class="desc_list_item_val">
-                        鐜嬫灄
-                    </div>
-                </div>
-                <div class="desc_list_item">
-                    <div class="desc_list_item_label">
-                        鎶ユ浜鸿仈绯绘柟寮忥細
-                    </div>
-                    <div class="desc_list_item_val">
-                        13355667788
-                    </div>
-                </div>
-                <div class="desc_list_item" style="width: 100%;">
-                    <div class="desc_list_item_label">
-                        浜嬫晠鎻忚堪锛�
-                    </div>
-                    <div class="desc_list_item_val">
-                        2021骞�01鏈�24鏃ュ噷鏅�03鐐瑰乏鍙筹紝鍛樺伐鍛ㄥ厜纾婂湪鑻忓窞宸ヤ笟鍥尯闀垮畯鍏夌數绉戞妧鏈夐檺鍏徃鍏夌數鐢熶骇閮ㄥ厜瀛﹁啘瑁佸垏璇捐溅闂达紝鐢ㄦ墜鍔ㄥ弶杞︽惉杩愬師鏉愭枡鏃讹紝鍘熸潗鏂欐帀钀界牳鍒板彸鑴氾紝鍑屾櫒3锛�30宸﹀彸鍏徃娲句笓杞﹂�佸線鑻忓窞宸ヤ笟鍥尯鏄熸箹鍖婚櫌灏辫瘖锛屼负鍛樺伐浼ゅ彛杩涜鍖呮墡姝㈣鍚庯紝鍑屾櫒05锛�45杞�佽嚦鑻忓窞鐟炲崕楠ㄧ鍖婚櫌杩涗竴姝ユ不鐤椼��
-                    </div>
-                </div>
-                <div class="desc_list_item" style="width: 100%;">
-                    <div class="desc_list_item_label">
-                        鎶ユ瑙嗛锛�
-                    </div>
-                    <div class="desc_list_item_videos">
-                        <div class="desc_list_item_imgs_video">
-                            <video src="blob:https://www.bilibili.com/f8718314-82c5-43d2-9b26-2c4d701b6bab"></video>
-                        </div>
-                        <div class="desc_list_item_imgs_video">
-                            <video src="blob:https://www.bilibili.com/f8718314-82c5-43d2-9b26-2c4d701b6bab"></video>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="desc_xian"></div>
-            <div class="desc_label">
-                <div class="desc_label_left">
-                    <span class="desc_label_left_title">
-                        鐞嗚禂璧勬枡
-                    </span>
-                    <span class="desc_label_left_time" style="color: black">
-                        璧勬枡瀹屾垚鏃ユ湡锛�2015-10-03 10:15:22
-                    </span>
-                </div>
-                <div class="desc_label_right">
-                    <el-button type="primary" @click="visible5 = true">澶囨敞鏍囩</el-button>
-                    <el-button type="primary" @click="submit">璧勬枡纭</el-button>
-                    <el-button type="primary">璧勬枡涓嬭浇</el-button>
-                </div>
-            </div>
-            <div class="desc_data">
-                <div class="desc_data_label">1. 鍛樺伐鍏崇郴璇佹槑璧勬枡</div>
-                <div class="desc_data_list">
-                    <div class="desc_data_list_item" v-for="(item, index) in 2" :key="index">
-                        <div class="desc_data_list_item_dele">鍒犻櫎</div>
-                        <div class="desc_data_list_item_img">
-                            <img src="@/assets/images/Galanz@2x.png" />
-                        </div>
-                        <div class="desc_data_list_item_info">
-                            <span>鑰冨嫟琛�.jpg</span>
-                            <span>鎿嶄綔鍛�-鐜嬫煇鏌�</span>
-                            <span>2023-05-22 10:10:11</span>
-                        </div>
-                    </div>
-                    <div class="desc_data_list_item">
-                        <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;">
-                            <i class="el-icon-plus"></i>
-                        </div>
-                        <div class="desc_data_list_item_upload">
-                            <el-button type="primary">涓婁紶</el-button>
-                            <el-button>鍙栨秷</el-button>
-                        </div>
-                    </div>
-                    <div class="desc_data_list_item1"></div>
-                    <div class="desc_data_list_item1"></div>
-                </div>
-            </div>
-            <div class="desc_data">
-                <div class="desc_data_label">2. 鍖荤枟璧勬枡</div>
-                <div class="desc_data_cate">
-                    <el-tabs v-model="activeName" @tab-click="handleClick">
-                        <el-tab-pane label="闂ㄨ瘖" name="first"></el-tab-pane>
-                        <el-tab-pane label="浣忛櫌璧勬枡" name="second"></el-tab-pane>
-                        <el-tab-pane label="浼ゆ畫" name="third"></el-tab-pane>
-                    </el-tabs>
-                </div>
-                <div class="desc_data_list">
-                    <div class="desc_data_list_item" v-for="(item, index) in 2" :key="index">
-                        <div class="desc_data_list_item_dele">鍒犻櫎</div>
-                        <div class="desc_data_list_item_img">
-                            <img src="@/assets/images/Galanz@2x.png" />
-                        </div>
-                        <div class="desc_data_list_item_info">
-                            <span>鑰冨嫟琛�.jpg</span>
-                            <span>鎿嶄綔鍛�-鐜嬫煇鏌�</span>
-                            <span>2023-05-22 10:10:11</span>
-                        </div>
-                    </div>
-                    <div class="desc_data_list_item">
-                        <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;">
-                            <i class="el-icon-plus"></i>
-                        </div>
-                        <div class="desc_data_list_item_upload">
-                            <el-button type="primary">涓婁紶</el-button>
-                            <el-button>鍙栨秷</el-button>
-                        </div>
-                    </div>
-                    <div class="desc_data_list_item1"></div>
-                    <div class="desc_data_list_item1"></div>
-                </div>
-            </div>
-            <div class="desc_data">
-                <div class="desc_data_label">3. 璧斾粯缁撴璧勬枡</div>
-                <div class="desc_data_list">
-                    <div class="desc_data_list_item" v-for="(item, index) in 2" :key="index">
-                        <div class="desc_data_list_item_dele">鍒犻櫎</div>
-                        <div class="desc_data_list_item_img">
-                            <img src="@/assets/images/Galanz@2x.png" />
-                        </div>
-                        <div class="desc_data_list_item_info">
-                            <span>鑰冨嫟琛�.jpg</span>
-                            <span>鎿嶄綔鍛�-鐜嬫煇鏌�</span>
-                            <span>2023-05-22 10:10:11</span>
-                        </div>
-                    </div>
-                    <div class="desc_data_list_item">
-                        <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;">
-                            <i class="el-icon-plus"></i>
-                        </div>
-                        <div class="desc_data_list_item_upload">
-                            <el-button type="primary">涓婁紶</el-button>
-                            <el-button>鍙栨秷</el-button>
-                        </div>
-                    </div>
-                    <div class="desc_data_list_item1"></div>
-                    <div class="desc_data_list_item1"></div>
-                </div>
-            </div>
-            <div class="desc_label">
-                <div class="desc_label_left">
-                    <span class="desc_label_left_title">
-                        妗堜欢杩涘害
-                    </span>
-                </div>
-            </div>
-            <div class="desc_times">
-                <el-timeline :reverse="reverse">
-                    <el-timeline-item
-                        v-for="(activity, index) in activities"
-                        :key="index"
-                        :timestamp="activity.timestamp">
-                        {{activity.content}}
-                    </el-timeline-item>
-                </el-timeline>
-            </div>
-        </div>
-        <el-dialog
-            title="娣诲姞鎶ユ鍙�"
-            :visible.sync="visible1"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label">
-                        <span>*</span>鎶ユ鍙凤細
-                    </div>
-                    <div class="form_item_val">
-                        <input type="text" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible1 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible1 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <el-dialog
-            title="鐞嗚禂澶勭悊"
-            :visible.sync="visible2"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label">
-                        <span>*</span>澶勭悊杩涘睍锛�
-                    </div>
-                    <div class="form_item_val">
-                        <textarea placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible2 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible2 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <el-dialog
-            title="鎾ら攢鐢宠"
-            :visible.sync="visible3"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label">
-                        <span>*</span>濉啓鎾ら攢璇存槑锛�
-                    </div>
-                    <div class="form_item_val">
-                        <textarea placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible3 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible3 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <el-dialog
-            title="鐞嗚禂缁撴"
-            :visible.sync="visible4"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label">
-                        <span>*</span>缁撴鍐呭锛�
-                    </div>
-                    <div class="form_item_val">
-                        <textarea placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">
-                        <span>*</span>鐞嗚禂璐圭敤锛�
-                    </div>
-                    <div class="form_item_val">
-                        <el-table
-                            :data="tableData"
-                            border
-                            style="width: 100%">
-                            <el-table-column
-                                prop="date"
-                                label="鍖荤枟鐞嗚禂">
-                            </el-table-column>
-                            <el-table-column
-                                prop="name"
-                                label="璇伐鐞嗚禂">
-                            </el-table-column>
-                            <el-table-column
-                                prop="address"
-                                label="浼ゆ畫鐞嗚禂">
-                            </el-table-column>
-                            <el-table-column
-                                prop="address"
-                                label="姝讳骸鐞嗚禂">
-                            </el-table-column>
-                            <el-table-column
-                                prop="address"
-                                label="鐞嗚禂鎬婚">
-                            </el-table-column>
-                        </el-table>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible4 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible4 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <el-dialog
-            title="澶囨敞鏍囩"
-            :visible.sync="visible5"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_span">
-                    <span>鐞嗚禂鍛�-鐜嬫灄  2023-11-11 10:33:12</span>
-                    <span>鏉庣璐� 鍙充腑鎸囪繙鑺傛寚楠ㄩ鎶樻墦鍖呭鐞�5000(鍚尰鐤楄宸� 浼�)鍏嶉壌瀹氬拰璁ゅ畾鍙互鍚�?</span>
-                </div>
-                <div class="form_span">
-                    <span>鐞嗚禂鍛�-鏉庢煇  2023-11-11 10:33:12</span>
-                    <span>鐞嗚禂璇曠潃鐢宠涓� 闇�鎻愪緵妫�鏌ユ姤鍛婂崟 鍘熶欢瀵勪繚鍙�</span>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">
-                        <span>*</span>濉啓鎾ら攢璇存槑锛�
-                    </div>
-                    <div class="form_item_val">
-                        <textarea placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible5 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible5 = false">娣� 鍔�</el-button>
-            </span>
-        </el-dialog>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    export default {
-        name: 'OperaSettleClaimsWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                activeName: 'first',
-                reverse: true,
-                activities: [
-                    {
-                        content: '鎻愪氦鎶ユ鐢宠\n' +
-                            '\n' +
-                            '\n' +
-                            '鎻愪氦鎰忚锛�-',
-                        timestamp: '鎿嶄綔鍛�-寮犱紵锛堝畨寰藉钩瀹変汉鍔涜祫婧愭湁闄愬叕鍙革級\n' +
-                            '\n' +
-                            '2023-09-11 00:00:00'
-                    }
-                ],
-                tableData: [],
-                visible1: false,
-                visible2: false,
-                visible3: false,
-                visible4: false,
-                visible5: false
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/settleClaims',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            handleClick(tab, event) {
-                console.log(tab, event);
-            },
-            submit() {
-                this.$confirm('鐞嗚禂鏉愭枡鏀堕泦瀹屾垚锛岃鍙婃椂鎻愪氦淇濋櫓鍏徃锛�', '璧勬枡鏀堕泦瀹屾垚', {
-                    confirmButtonText: '鎻愪氦',
-                    cancelButtonText: '鍙栨秷',
-                    type: 'warning'
-                }).then(() => {
-                    this.$message({
-                        type: 'success',
-                        message: '鎻愪氦鎴愬姛!'
-                    });
-                }).catch(() => {
-
-                });
-            }
-        }
-    }
-</script>
-<style>
-    .v-modal {
-        z-index: 2000 !important;
-    }
-</style>
-<style lang="scss" scoped>
-    .form {
-        width: 100%;
-        display: flex;
-        align-items: center;
-        flex-direction: column;
-        .form_span {
-            width: 100%;
-            display: flex;
-            align-items: start;
-            flex-direction: column;
-            margin-bottom: 20px;
-            span {
-                font-size: 14px;
-                &:nth-child(1) {
-                    color: black;
-                    margin-bottom: 5px;
-                }
-                &:nth-child(2) {
-                    color: #8c939d;
-                }
-            }
-        }
-        .form_item {
-            width: 100%;
-            display: flex;
-            align-items: start;
-            margin-bottom: 20px;
-            &:last-child {
-                margin: 0 !important;
-            }
-            .form_item_label {
-                flex-shrink: 0;
-                color: black;
-                font-size: 14px;
-                span {
-                    color: red;
-                    font-size: 14px;
-                }
-            }
-            .form_item_val {
-                flex: 1;
-                /*height: 40px;*/
-                margin-left: 20px;
-                textarea {
-                    width: 100%;
-                    height: 70px;
-                    border: 1px solid #cbcbcb;
-                    padding: 10px;
-                    outline: none;
-                    box-sizing: border-box;
-                }
-                input {
-                    width: 100%;
-                    height: 100%;
-                    outline: none;
-                    border-radius: 5px;
-                    border: 1px solid #cbcbcb;
-                    padding: 0 20px;
-                    box-sizing: border-box;
-                }
-            }
-        }
-    }
-    .desc {
-        width: 100%;
-        display: flex;
-        align-items: center;
-        flex-direction: column;
-        .desc_label {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            .desc_label_left {
-                flex: 1;
-                display: flex;
-                align-items: center;
-                .desc_label_left_title {
-                    font-size: 20px;
-                    font-weight: bold;
-                    color: black;
-                }
-                .desc_label_left_time {
-                    font-size: 14px;
-                    color: rgba(249, 86, 1, 0.996);
-                    margin-left: 10px;
-                }
-                .desc_label_left_code {
-                    font-size: 15px;
-                    color: black;
-                    margin-left: 30px;
-                }
-            }
-            .desc_label_right {
-                flex-shrink: 0;
-            }
-        }
-        .desc_list {
-            width: 100%;
-            margin-top: 20px;
-            display: flex;
-            align-items: center;
-            flex-wrap: wrap;
-            .desc_list_item {
-                width: 33.3%;
-                display: flex;
-                align-items: center;
-                margin-bottom: 10px;
-                .desc_list_item_label {
-                    width: 130px;
-                    flex-shrink: 0;
-                    font-size: 15px;
-                    color: black;
-                }
-                .desc_list_item_val {
-                    flex: 1;
-                    font-size: 15px;
-                    color: black;
-                }
-                .desc_list_item_videos {
-                    flex: 1;
-                    display: flex;
-                    align-items: center;
-                    flex-wrap: wrap;
-                    .desc_list_item_imgs_video {
-                        width: 150px;
-                        height: 150px;
-                        background: black;
-                        margin-right: 10px;
-                        video {
-                            width: 100%;
-                            height: 100%;
-                        }
-                    }
-                }
-            }
-        }
-        .desc_xian {
-            width: 100%;
-            height: 1px;
-            margin: 10px 0;
-            background: #ececec;
-        }
-        .desc_data {
-            width: 100%;
-            display: flex;
-            flex-direction: column;
-            margin-top: 20px;
-            .desc_data_label {
-                font-size: 16px;
-                color: black;
-                font-weight: 600;
-                margin-bottom: 20px;
-            }
-            .desc_data_cate {
-                width: 100%;
-                margin: 0 0 10px 0;
-            }
-            .desc_data_list {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                flex-wrap: wrap;
-                justify-content: space-between;
-                .desc_data_list_item1 {
-                    width: 24.5%;
-                }
-                .desc_data_list_item {
-                    width: 24.5%;
-                    padding: 10px;
-                    box-sizing: border-box;
-                    border: 1px solid #e2e2e2;
-                    display: flex;
-                    align-items: center;
-                    justify-content: space-between;
-                    position: relative;
-                    margin-bottom: 10px;
-                    .desc_data_list_item_dele {
-                        position: absolute;
-                        top: 10px;
-                        right: 10px;
-                        font-size: 14px;
-                        cursor: pointer;
-                        color: rgba(249, 86, 1, 0.996078431372549);
-                    }
-                    .desc_data_list_item_upload {
-                        flex: 1;
-                        height: 80px;
-                        display: flex;
-                        align-items: center;
-                        justify-content: center;
-                    }
-                    .desc_data_list_item_img {
-                        flex-shrink: 0;
-                        width: 80px;
-                        height: 80px;
-                        display: flex;
-                        align-items: center;
-                        justify-content: center;
-                        overflow: hidden;
-                        .el-icon-plus {
-                            font-size: 26px;
-                            color: #ffffff;
-                        }
-                        img {
-                            width: 100%;
-                            height: 100%;
-                        }
-                    }
-                    .desc_data_list_item_info {
-                        flex: 1;
-                        height: 80px;
-                        display: flex;
-                        flex-direction: column;
-                        justify-content: space-between;
-                        span {
-                            &:nth-child(1) {
-                                font-size: 14px;
-                                color: black;
-                            }
-                            &:nth-child(2) {
-                                font-size: 14px;
-                                color: #888888;
-                            }
-                            &:nth-child(3) {
-                                font-size: 14px;
-                                color: #888888;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        .desc_times {
-            width: 100%;
-            margin-top: 20px;
-        }
-    }
-</style>
diff --git a/platform/src/components/business/OperaSolutionsDescWindow.vue b/platform/src/components/business/OperaSolutionsDescWindow.vue
deleted file mode 100644
index adb5dfd..0000000
--- a/platform/src/components/business/OperaSolutionsDescWindow.vue
+++ /dev/null
@@ -1,240 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="50%"
-        submitText="淇敼"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="$refs.operaSolutionsWindow.open('缂栬緫鏂规', form)"
-    >
-        <div class="info">
-            <div class="info_list">
-                <div class="info_list_item">
-                    <div class="info_list_item_label">鏂规鍚嶇О锛�</div>
-                    <div class="info_list_item_val">{{form.name}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">淇濋櫓鍏徃锛�</div>
-                    <div class="info_list_item_val">{{form.insuranceName}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">鎵夸繚鍏徃锛�</div>
-                    <div class="info_list_item_val">{{form.companyName}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">鎶曚繚骞撮緞锛�</div>
-                    <div class="info_list_item_val">{{form.minAge}}鑷硔{form.maxAge}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">鎶曚繚绫诲瀷锛�</div>
-                    <div class="info_list_item_val">骞冲彴鎶曚繚</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">淇濋櫓璐圭敤锛�</div>
-                    <div class="info_list_item_val">
-                        {{form.price}}鍏�/浜�/
-                        <span v-if="form.timeUnit === 0">澶�</span>
-                        <span v-if="form.timeUnit === 1">鍗婃湀</span>
-                        <span v-if="form.timeUnit === 2">鏈�</span>
-                        <span v-if="form.timeUnit === 3">骞�</span>
-                    </div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">鎶曚繚鍛ㄦ湡锛�</div>
-                    <div class="info_list_item_val">
-                        {{form.insureCycle}}
-                        <span v-if="form.insureCycleUnit === 0">澶�</span>
-                        <span v-if="form.insureCycleUnit === 1">鍗婃湀</span>
-                        <span v-if="form.insureCycleUnit === 2">鏈�</span>
-                        <span v-if="form.insureCycleUnit === 3">骞�</span>
-                    </div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">鐢熸晥鏃堕棿锛�</div>
-                    <div class="info_list_item_val">{{form.validType === 0 ? '鏃ュ悗鐢熸晥' : '娆℃湀鐢熸晥'}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">鎶曚繚绫诲瀷锛�</div>
-                    <div class="info_list_item_val">{{form.type === 0 ? '鐩翠繚' : '濮旀墭鎶曚繚'}}</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">鎺ユ敹鏂囦欢閭锛�</div>
-                    <div class="info_list_item_val">{{form.email}}</div>
-                </div>
-            </div>
-            <el-table
-                :data="form.worktypeList"
-                border
-                style="width: 100%; margin-bottom: 20px;">
-                <el-table-column
-                    label="搴忓彿"
-                    align="center"
-                    width="80">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    prop="worktypeName"
-                    align="center"
-                    label="鎵�灞炲伐绉�">
-                </el-table-column>
-            </el-table>
-            <div class="info_agree">
-                <div class="info_agree_label">淇濋櫓澹版槑锛�</div>
-                <div class="info_agree_label">鐗瑰埆绾﹀畾锛�</div>
-                <div class="info_agree_val">
-                    {{form.specialAgreement}}
-                </div>
-            </div>
-        </div>
-        <!-- 淇敼 -->
-        <OperaSolutionsWindow ref="operaSolutionsWindow" @success="callback"/>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import OperaSolutionsWindow from '@/components/business/OperaSolutionsWindow'
-    import { solutionsId } from '@/api/business/solutions'
-    export default {
-        name: 'OperaSolutionsDescWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow, OperaSolutionsWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    name: '',
-                    companyName: '',
-                    insuranceId: '',
-                    validType: 0,
-                    type: 0,
-                    minAge: '',
-                    maxAge: '',
-                    price: '',
-                    timeUnit: '',
-                    insureCycle: '',
-                    insureCycleUnit: '',
-                    email: '',
-                    specialAgreement: '',
-                    specialInfo: '',
-                    ortherInfo: '',
-                    insuranceName: '',
-                    signKeyword: '',
-                    worktypeList: [],
-                    worktypeIdList: []
-                }
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/solutions',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            open (title, target) {
-                this.title = title
-                this.visible = true
-                this.$nextTick(() => {
-                    for (const key in this.form) {
-                        this.form[key] = target[key]
-                    }
-                    this.getDetails()
-                })
-            },
-            getDetails() {
-                solutionsId(this.form.id)
-                    .then(res => {
-                        for (const key in this.form) {
-                            this.form[key] = res[key]
-                        }
-                        this.form.worktypeIdList = res.worktypeList.map(item => {
-                            return {
-                                worktypeId: item.worktypeId
-                            }
-                        })
-                    })
-            },
-            callback() {
-                this.$emit('success')
-                this.visible = false
-            }
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-    .info {
-        width: 100%;
-        .info_agree {
-            width: 100%;
-            display: flex;
-            flex-direction: column;
-            margin-top: 20px;
-            .info_agree_label {
-                font-size: 14px;
-                font-weight: 500;
-                color: #000000;
-                margin-top: 5px;
-            }
-            .info_agree_val {
-                font-size: 14px;
-                font-weight: 500;
-                color: #000000;
-                margin-top: 5px;
-            }
-        }
-        .info_label {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            margin-bottom: 20px;
-            span {
-                font-size: 18px;
-                font-weight: 500;
-                color: #000000;
-            }
-        }
-        .info_fwb {
-            width: 100%;
-            margin-top: 20px;
-        }
-        .info_list {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            flex-wrap: wrap;
-            .info_list_item {
-                width: 50%;
-                display: flex;
-                align-items: start;
-                margin-bottom: 20px;
-                .info_list_item_label {
-                    width: 130px;
-                    flex-shrink: 0;
-                }
-                .info_list_item_val {
-                    flex: 1;
-                    display: flex;
-                    align-items: center;
-                    .image {
-                        width: 100px;
-                        height: 100px;
-                        display: flex;
-                        align-items: center;
-                        justify-content: center;
-                        overflow: hidden;
-                        img {
-                            width: 100%;
-                        }
-                    }
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/OperaSolutionsWindow.vue b/platform/src/components/business/OperaSolutionsWindow.vue
deleted file mode 100644
index fcdce95..0000000
--- a/platform/src/components/business/OperaSolutionsWindow.vue
+++ /dev/null
@@ -1,312 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <el-form :model="form" ref="form" :rules="rules">
-            <el-form-item label="鏂规鍚嶇О" prop="name">
-                <el-input v-model="form.name" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="淇濋櫓鍏徃" prop="insuranceId">
-                <el-select v-model="form.insuranceId" @change="getAllWorktype1" placeholder="璇烽�夋嫨">
-                    <el-option
-                        v-for="item in company"
-                        :key="item.id"
-                        :label="item.name"
-                        :value="item.id">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鎵夸繚鍏徃" prop="companyName">
-                <el-input v-model="form.companyName" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="鎶曚繚骞撮緞" prop="minAge">
-                <div style="display: flex; align-items: center;">
-                    <el-select v-model="form.minAge" style="flex: 1;" placeholder="璇烽�夋嫨">
-                        <el-option
-                            v-for="item in 60"
-                            :key="item"
-                            :label="item"
-                            :value="item">
-                        </el-option>
-                    </el-select>
-                    <span style="margin: 0 30px;">鑷�</span>
-                    <el-select v-model="form.maxAge" style="flex: 1;" placeholder="璇烽�夋嫨">
-                        <el-option
-                            v-for="item in 60"
-                            :key="item"
-                            :label="item"
-                            :value="item">
-                        </el-option>
-                    </el-select>
-                </div>
-            </el-form-item>
-            <el-form-item label="淇濋櫓璐圭敤" prop="price">
-                <div style="display: flex; align-items: center;">
-                    <el-input v-model="form.price" style="flex: 1;" placeholder="璇疯緭鍏�" v-trim/>
-                    <span style="margin: 0 30px;">鍏�/浜�</span>
-                    <el-select v-model="form.timeUnit" style="flex: 1;" placeholder="璇烽�夋嫨">
-                        <el-option label="澶�" :value="0"></el-option>
-                        <el-option label="鍗婃湀" :value="1"></el-option>
-                        <el-option label="鏈�" :value="2"></el-option>
-                        <el-option label="骞�" :value="3"></el-option>
-                    </el-select>
-                </div>
-            </el-form-item>
-            <el-form-item label="鎶曚繚鍛ㄦ湡" prop="insureCycle">
-                <div style="display: flex; align-items: center;">
-                    <el-input v-model="form.insureCycle" style="flex: 1;" placeholder="璇疯緭鍏�" v-trim/>
-                    <span style="margin: 0 30px;"></span>
-                    <el-select v-model="form.insureCycleUnit" style="flex: 1;" placeholder="璇烽�夋嫨">
-                        <el-option label="澶�" :value="0"></el-option>
-                        <el-option label="鍗婃湀" :value="1"></el-option>
-                        <el-option label="鏈�" :value="2"></el-option>
-                        <el-option label="骞�" :value="3"></el-option>
-                    </el-select>
-                </div>
-            </el-form-item>
-            <el-form-item label="鐢熸晥鏃堕棿" prop="validType">
-                <el-radio-group v-model="form.validType">
-                    <el-radio :label="0">鏃ュ悗鐢熸晥</el-radio>
-                    <el-radio :label="1">娆℃湀鐢熸晥</el-radio>
-                </el-radio-group>
-            </el-form-item>
-            <el-form-item label="鎶曚繚绫诲瀷" prop="type">
-                <el-radio-group v-model="form.type">
-                    <el-radio :label="0">鐩翠繚</el-radio>
-                    <el-radio :label="1">濮旀墭鎶曚繚</el-radio>
-                </el-radio-group>
-            </el-form-item>
-            <el-form-item label="鎺ユ敹鏂囦欢閭" prop="email">
-                <el-input v-model="form.email" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item label="鎶曚繚鍗曠绔犲叧閿瓧" prop="signKeyword">
-                <el-input v-model="form.signKeyword" placeholder="澶氫釜鑻辨枃閫楀彿闅斿紑" v-trim/>
-            </el-form-item>
-            <el-button type="primary" @click="add">娣诲姞宸ョ</el-button>
-            <el-table
-                :data="form.worktypeIdList"
-                border
-                style="width: 100%; margin-bottom: 20px;">
-                <el-table-column
-                    label="搴忓彿"
-                    align="center"
-                    width="80">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    label="鎵�灞炲伐绉�">
-                    <template slot-scope="{row}">
-                        <el-select filterable v-model="row.worktypeId" placeholder="璇烽�夋嫨">
-                            <el-option
-                                v-for="item in typeWork"
-                                :key="item.id"
-                                :label="item.name"
-                                :value="item.id">
-                            </el-option>
-                        </el-select>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    label="鎿嶄綔"
-                    align="center"
-                    width="100">
-                    <template slot-scope="scope">
-                        <el-button type="text" size="small" style="color: red;" @click="dele(scope.$index)">鍒犻櫎</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <el-form-item label="鐗瑰埆绾﹀畾" prop="specialAgreement">
-                <el-input type="textarea" v-model="form.specialAgreement" placeholder="璇疯緭鍏ョ壒鍒害瀹�" v-trim/>
-            </el-form-item>
-            <el-form-item label="鐗瑰埆璇存槑" prop="specialInfo">
-                <el-input type="textarea" v-model="form.specialInfo" placeholder="璇疯緭鍏ョ壒鍒鏄�" v-trim/>
-            </el-form-item>
-            <el-form-item label="鍏朵粬璇存槑" prop="ortherInfo">
-                <el-input type="textarea" v-model="form.ortherInfo" placeholder="璇疯緭鍏ュ叾浠栬鏄�" v-trim/>
-            </el-form-item>
-        </el-form>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import { all } from '@/api/business/insurance'
-    import { all as allWorktype } from '@/api/business/worktype'
-    import { solutionsId } from '@/api/business/solutions'
-    export default {
-        name: 'OperaSolutionsWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    name: '',
-                    companyName: '',
-                    insuranceId: '',
-                    validType: 0,
-                    type: 0,
-                    minAge: '',
-                    maxAge: '',
-                    price: '',
-                    timeUnit: '',
-                    insureCycle: '',
-                    insureCycleUnit: '',
-                    email: '',
-                    specialAgreement: '',
-                    specialInfo: '',
-                    ortherInfo: '',
-                    signKeyword: '',
-                    worktypeIdList: [{ worktypeId: '' }]
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                    name: [
-                        { required: true, message: '璇疯緭鍏ユ柟妗堝悕绉�' }
-                    ],
-                    insuranceId: [
-                        { required: true, message: '璇烽�夋嫨淇濋櫓鍏徃' }
-                    ],
-                    companyName: [
-                        { required: true, message: '璇疯緭鍏ユ壙淇濆叕鍙�' }
-                    ],
-                    minAge: [
-                        { required: true, message: '璇烽�夋嫨鎶曚繚骞撮緞' }
-                    ],
-                    price: [
-                        { required: true, message: '璇疯緭鍏ヤ繚闄╄垂鐢�' }
-                    ],
-                    insureCycle: [
-                        { required: true, message: '璇疯緭鍏ユ姇淇濆懆鏈�' }
-                    ],
-                    validType: [
-                        { required: true, message: '璇烽�夋嫨鐢熸晥鏃堕棿' }
-                    ],
-                    type: [
-                        { required: true, message: '璇烽�夋嫨鎶曚繚绫诲瀷' }
-                    ],
-                    signKeyword: [
-                        { required: true, message: '璇疯緭鍏ユ姇淇濆崟绛剧珷鍏抽敭瀛�' }
-                    ]
-                },
-                company: [],
-                typeWork: []
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/solutions',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            // 鍒囨崲鍏徃
-            getAllWorktype1() {
-                this.form.worktypeIdList = [{ worktypeId: '' }]
-                this.getAllWorktype()
-            },
-            // 纭鏂板缓/淇敼
-            confirm () {
-                let data = JSON.parse(JSON.stringify(this.form))
-                data.worktypeIdList = data.worktypeIdList.map(item => item.worktypeId)
-                this.$refs.form.validate((valid) => {
-                    if (!valid) {
-                        return
-                    }
-                    // 璋冪敤鏂板缓鎺ュ彛
-                    this.isWorking = true
-                    if (data.id == null || data.id === '') {
-                        this.api.create(data)
-                            .then(() => {
-                                this.visible = false
-                                this.$tip.apiSuccess('鏂板缓鎴愬姛')
-                                this.$emit('success')
-                            })
-                            .catch(e => {
-                                this.$tip.apiFailed(e)
-                            })
-                            .finally(() => {
-                                this.isWorking = false
-                            })
-                    } else {
-                        this.api.updateById(data)
-                            .then(() => {
-                                this.visible = false
-                                this.$tip.apiSuccess('淇敼鎴愬姛')
-                                this.$emit('success')
-                            })
-                            .catch(e => {
-                                this.$tip.apiFailed(e)
-                            })
-                            .finally(() => {
-                                this.isWorking = false
-                            })
-                    }
-                })
-            },
-            open (title, target) {
-                this.title = title
-                this.visible = true
-                this.form.worktypeIdList = [{ worktypeId: '' }]
-                this.allCompany()
-                // 鏂板缓
-                if (target == null) {
-                    this.$nextTick(() => {
-                        this.$refs.form.resetFields()
-                        this.form[this.configData['field.id']] = null
-                    })
-                    return
-                }
-                // 缂栬緫
-                this.$nextTick(() => {
-                    solutionsId(target.id)
-                        .then(res => {
-                            for (const key in this.form) {
-                                this.form[key] = res[key]
-                            }
-                            this.form.worktypeIdList = res.worktypeList.map(item => {
-                                return {
-                                    worktypeId: item.worktypeId
-                                }
-                            })
-                            this.getAllWorktype()
-                        })
-                })
-            },
-            // 鏌ヨ淇濋櫓鍏徃涓嬪叏閮ㄥ伐绉�
-            getAllWorktype() {
-                allWorktype({
-                    insuranceId: this.form.insuranceId
-                }).then(res => {
-                    this.typeWork = res
-                })
-            },
-            // 鏌ヨ鍏ㄩ儴淇濋櫓鍏徃
-            allCompany() {
-                all({ dataType: 2 })
-                    .then(res => {
-                        console.log(res)
-                        this.company = res
-                    })
-            },
-            add() {
-                this.form.worktypeIdList.push({ worktypeId: '' })
-            },
-            dele(index) {
-                if (this.form.worktypeIdList.length === 1) {
-                    this.$message.warning('鑷冲皯瑕佷繚鐣欎竴椤�')
-                    return
-                }
-                this.form.worktypeIdList.splice(index, 1)
-            }
-        }
-    }
-</script>
diff --git a/platform/src/components/business/OperaSwitchCourtWindow.vue b/platform/src/components/business/OperaSwitchCourtWindow.vue
deleted file mode 100644
index f4ee769..0000000
--- a/platform/src/components/business/OperaSwitchCourtWindow.vue
+++ /dev/null
@@ -1,469 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="80%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="desc">
-            <div class="desc_item">
-                <div class="desc_item_label">
-                    <div class="desc_item_label_left">
-                        <span>鎶曚繚浼佷笟锛氬畨寰藉钩瀹変汉鍔涜祫婧愭湁闄愬叕鍙�</span>
-                        <span>淇濆崟鐘舵�侊細寰呭嚭鍗�</span>
-                        <span>鎻愪氦鏃堕棿锛�2023-09-11 00:00:00</span>
-                    </div>
-                    <div class="desc_item_label_right">
-                        <el-button type="primary" @click="$refs.switchCourtDetaols.open('鎹㈠巶鐢宠鍗曡鎯�')">瀵煎嚭璇﹀崟</el-button>
-                        <el-button type="primary">鏌ョ湅鐢宠鍗�</el-button>
-                        <el-button type="primary" @click="visible3 = true">涓婁紶鎵瑰崟</el-button>
-                        <el-button type="danger" @click="visible1 = true">閫�鍥炴姇淇�</el-button>
-                        <el-button type="danger" @click="visible4 = true">淇敼鎵瑰崟</el-button>
-                    </div>
-                </div>
-                <div class="desc_item_from">
-                    <el-table
-                        :data="tableData"
-                        border
-                        style="width: 100%">
-                        <el-table-column
-                            prop="date"
-                            label="鎵瑰崟鍙�">
-                        </el-table-column>
-                        <el-table-column
-                            prop="name"
-                            label="鍏宠仈淇濆崟鍙�">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="淇濋櫓鏂规">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="淇濋櫓鐢熸晥姝㈡湡">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="淇濋櫓鐢熸晥姝㈡湡">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="鎵瑰崟鐢熸晥鏈�">
-                        </el-table-column>
-                    </el-table>
-                </div>
-                <div class="desc_item_from">
-                    <el-table
-                        :data="tableData"
-                        border
-                        style="width: 100%">
-                        <el-table-column label="搴忓彿">
-                            <template slot-scope="scope">
-                                <span>{{scope.$index + 1}}</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column
-                            prop="date"
-                            label="鍛樺伐濮撳悕">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="韬唤璇佸彿">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="鍘熸淳閬e崟浣�">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="鍘熸墍灞炲伐绉�">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="淇濋櫓鐢熸晥璧锋湡">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="淇濋櫓鐢熸晥姝㈡湡">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="鎵瑰崟鐢熸晥鏈�">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="鎹㈠巶鍚庢淳閬e崟浣�">
-                        </el-table-column>
-                        <el-table-column
-                            prop="address"
-                            label="鎹㈠巶鍚庢墍灞炲伐绉�">
-                        </el-table-column>
-                    </el-table>
-                    <div class="desc_item_from_page">
-                        <el-pagination
-                            @size-change="handleSizeChange"
-                            @current-change="handleCurrentChange"
-                            :current-page="currentPage"
-                            :page-sizes="[100, 200, 300, 400]"
-                            :page-size="100"
-                            layout="total, sizes, prev, pager, next, jumper"
-                            :total="400">
-                        </el-pagination>
-                    </div>
-                </div>
-                <div class="desc_item_review">
-                    <div class="desc_item_review_label">瀹℃牳娴佺▼</div>
-                    <el-timeline :reverse="reverse">
-                        <el-timeline-item
-                                v-for="(activity, index) in activities"
-                                :key="index"
-                                :timestamp="activity.timestamp">
-                            {{activity.content}}
-                        </el-timeline-item>
-                    </el-timeline>
-                </div>
-            </div>
-        </div>
-        <!--    閫�鍥炴姇淇�    -->
-        <el-dialog
-            title="閫�鍥炴姇淇�"
-            :visible.sync="visible1"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>濉啓閫�鍥炶鏄庯細</div>
-                    <div class="form_item_val">
-                        <el-input
-                            type="textarea"
-                            :rows="2"
-                            placeholder="璇疯緭鍏�">
-                        </el-input>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible1 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible1 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <!--    涓婁紶淇濋櫓鎵瑰崟    -->
-        <el-dialog
-            title="涓婁紶淇濋櫓鎵瑰崟"
-            :visible.sync="visible3"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label">瀹㈡埛鏈熸湜鎵瑰崟鐢熸晥鏈燂細</div>
-                    <div class="form_item_val">2023-10-01 00:00:00</div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">鎵瑰崟鐢熸晥璧锋湡鏄惁涓�鑷达細</div>
-                    <div class="form_item_val">
-                        <el-radio-group v-model="radio">
-                            <el-radio :label="0">涓庢壒鍗曚竴鑷�</el-radio>
-                            <el-radio :label="1">涓庢壒鍗曚笉涓�鑷�</el-radio>
-                        </el-radio-group>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>鎵瑰崟鐢熸晥鏈燂細</div>
-                    <div class="form_item_val">
-                        <el-date-picker
-                                v-model="value1"
-                                type="date"
-                                placeholder="閫夋嫨鏃ユ湡">
-                        </el-date-picker>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">鎵瑰崟鐢熸晥鏈燂細</div>
-                    <div class="form_item_val">2023-10-01 00:00:00</div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>鎵瑰崟鍙凤細</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">涓婁紶淇濋櫓鎵瑰崟锛�</div>
-                    <div class="form_item_val">
-                        <el-upload
-                                class="upload-demo"
-                                action="https://jsonplaceholder.typicode.com/posts/"
-                                :on-preview="handlePreview"
-                                :on-remove="handleRemove"
-                                :before-remove="beforeRemove"
-                                multiple
-                                :limit="1"
-                                :on-exceed="handleExceed"
-                                :file-list="fileList">
-                            <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
-                            <div slot="tip" class="el-upload__tip">鍙兘涓婁紶pdf鏂囦欢锛屼笖涓嶈秴杩�5mb</div>
-                        </el-upload>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible3 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible3 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <!--    淇敼淇濋櫓鍗�    -->
-        <el-dialog
-                title="淇敼淇濋櫓鍗�"
-                :visible.sync="visible4"
-                :show-close="false"
-                :close-on-click-modal="false"
-                width="30%"
-                center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濋櫓鐢熸晥鏈燂細</div>
-                    <div class="form_item_val">
-                        <el-date-picker
-                                style="width: 100%;"
-                                v-model="value1"
-                                type="date"
-                                placeholder="閫夋嫨鏃ユ湡">
-                        </el-date-picker>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濆崟鍙凤細</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>涓婁紶淇濋櫓鍗曪細</div>
-                    <div class="form_item_val">
-                        <el-upload
-                                class="upload-demo"
-                                action="https://jsonplaceholder.typicode.com/posts/"
-                                :on-preview="handlePreview"
-                                :on-remove="handleRemove"
-                                :before-remove="beforeRemove"
-                                multiple
-                                :limit="1"
-                                :on-exceed="handleExceed"
-                                :file-list="fileList">
-                            <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
-                            <div slot="tip" class="el-upload__tip">鍙兘涓婁紶pdf鏂囦欢锛屼笖涓嶈秴杩�5mb</div>
-                        </el-upload>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇敼鍘熷洜锛�</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible4 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible4 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <switchCourtDetaols ref="switchCourtDetaols" />
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import switchCourtDetaols from '@/components/business/switchCourtDetaols'
-    export default {
-        name: 'OperaSwitchCourtWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow, switchCourtDetaols },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    editDate: ''
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                formInline: {
-                    user: '',
-                    region: ''
-                },
-                visible1: false,
-                visible2: false,
-                visible3: false,
-                visible4: false,
-                visible5: false,
-                reverse: true,
-                radio: 0,
-                fileList: [
-                    {name: 'food.pdf', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}
-                ],
-                activities: [{
-                    content: '娲诲姩鎸夋湡寮�濮�',
-                    timestamp: '2018-04-15'
-                }, {
-                    content: '閫氳繃瀹℃牳',
-                    timestamp: '2018-04-13'
-                }, {
-                    content: '鍒涘缓鎴愬姛',
-                    timestamp: '2018-04-11'
-                }],
-                tableData: [],
-                currentPage: 1
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insuranceApply',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            handleRemove(file, fileList) {
-                console.log(file, fileList);
-            },
-            handlePreview(file) {
-                console.log(file);
-            },
-            handleExceed(files, fileList) {
-                this.$message.warning(`褰撳墠闄愬埗閫夋嫨 3 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶);
-            },
-            beforeRemove(file, fileList) {
-                return this.$confirm(`纭畾绉婚櫎 ${ file.name }锛焋);
-            },
-            successEvent() {
-
-            },
-            handleSizeChange(val) {
-                console.log(`姣忛〉 ${val} 鏉);
-            },
-            handleCurrentChange(val) {
-                console.log(`褰撳墠椤�: ${val}`);
-            },
-            onSubmit() {
-
-            }
-        }
-    }
-</script>
-<style>
-    .v-modal {
-        z-index: 2000 !important;
-    }
-</style>
-<style lang="scss" scoped>
-    .form {
-        width: 100%;
-        display: flex;
-        align-items: center;
-        flex-direction: column;
-        .form_span {
-            width: 100%;
-            display: flex;
-            align-items: start;
-            flex-direction: column;
-            margin-bottom: 20px;
-            span {
-                font-size: 14px;
-                &:nth-child(1) {
-                    color: black;
-                    margin-bottom: 5px;
-                }
-                &:nth-child(2) {
-                    color: #8c939d;
-                }
-            }
-        }
-        .form_item {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            margin-bottom: 20px;
-            &:last-child {
-                margin: 0 !important;
-            }
-            .form_item_label {
-                flex-shrink: 0;
-                width: 170px;
-                color: black;
-                font-size: 14px;
-                span {
-                    color: red;
-                    font-size: 14px;
-                }
-            }
-            .form_item_val {
-                flex: 1;
-                /*height: 40px;*/
-                margin-left: 20px;
-                textarea {
-                    width: 100%;
-                    height: 70px;
-                    border: 1px solid #cbcbcb;
-                    padding: 10px;
-                    outline: none;
-                    box-sizing: border-box;
-                }
-                input {
-                    width: 100%;
-                    height: 40px;
-                    outline: none;
-                    border-radius: 5px;
-                    border: 1px solid #cbcbcb;
-                    padding: 0 20px;
-                    box-sizing: border-box;
-                }
-            }
-        }
-    }
-    .desc {
-        width: 100%;
-        .desc_item {
-            width: 100%;
-            display: flex;
-            flex-direction: column;
-            .desc_item_label {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-                margin-bottom: 10px;
-                span {
-                    font-size: 14px;
-                    color: black;
-                    margin-right: 30px;
-                }
-            }
-            .desc_item_from {
-                width: 100%;
-                margin-bottom: 10px;
-                .desc_item_from_page {
-                    width: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: end;
-                    margin-top: 10px;
-                }
-            }
-            .desc_item_review {
-                width: 100%;
-                .desc_item_review_label {
-                    font-size: 20px;
-                    color: black;
-                    font-weight: bold;
-                    margin-bottom: 15px;
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/OperaTaxesWindow.vue b/platform/src/components/business/OperaTaxesWindow.vue
deleted file mode 100644
index f747b2b..0000000
--- a/platform/src/components/business/OperaTaxesWindow.vue
+++ /dev/null
@@ -1,190 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="50%"
-        submitText="杩斿洖淇敼"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="info">
-            <div class="info_label">
-                <span>浼佷笟璇︽儏锛堝凡鐢宠锛�</span>
-            </div>
-            <div class="info_list">
-                <div class="info_list_item">
-                    <div class="info_list_item_label">寮�绁ㄥ悕绉帮細</div>
-                    <div class="info_list_item_val">瀹夊窘鏍煎姏浜哄姏璧勬簮鏈夐檺鍏徃</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">绾崇◣浜鸿瘑鍒彿锛�</div>
-                    <div class="info_list_item_val">913418210000000000</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">寮�鎴疯锛�</div>
-                    <div class="info_list_item_val">瀹夊窘鍐滄潙鍟嗕笟閾惰鑲′唤鏈夐檺鍏徃鍚堣偉鏀</div>
-                </div>
-                <div class="info_list_item">
-                    <div class="info_list_item_label">璐﹀彿锛�</div>
-                    <div class="info_list_item_val">
-                        20010355666666600000000
-                    </div>
-                </div>
-                <div class="info_list_item" style="width: 100%;">
-                    <div class="info_list_item_label">鍦板潃銆佺數璇濓細</div>
-                    <div class="info_list_item_val">瀹夊窘鐪佸悎鑲ュ競缁忔祹鎶�鏈紑鍙戝尯鑾茶姳璺互涓溿�佺煶闂ㄨ矾浠ュ崡鑾茶姳璺�1锛�     0551-63450845</div>
-                </div>
-                <div class="info_list_item" style="width: 100%;">
-                    <div class="info_list_item_label">鎺ユ敹鏂瑰紡锛�</div>
-                    <div class="info_list_item_val">鐢靛瓙鍙戠エ</div>
-                </div>
-                <div class="info_list_item" style="width: 100%;">
-                    <div class="info_list_item_label">鎺ユ敹鍦板潃锛�</div>
-                    <div class="info_list_item_val">111122223333@qq.com</div>
-                </div>
-                <div class="info_list_item" style="width: 100%;">
-                    <div class="info_list_item_label">寮�绁ㄩ噾棰濓細</div>
-                    <div class="info_list_item_val" style="color:rgba(249, 86, 1, 0.996078431372549);">2000.00</div>
-                </div>
-            </div>
-            <el-table
-                :data="tableData"
-                border
-                show-summary
-                :summary-method="getSummaries"
-                style="width: 100%; margin-bottom: 20px;">
-                <el-table-column
-                    label="搴忓彿"
-                    align="center"
-                    width="80">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    prop="code"
-                    label="淇濋櫓鏂规">
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    prop="code"
-                    label="淇濆崟鍙�">
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    prop="code"
-                    label="鐢宠寮�绁ㄦ椂闂�">
-                </el-table-column>
-                <el-table-column
-                    align="center"
-                    prop="code"
-                    label="閲戦">
-                </el-table-column>
-            </el-table>
-        </div>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    export default {
-        name: 'OperaCompanyWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {}
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/taxes',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            getSummaries(param) {
-                const { columns, data } = param;
-                const sums = [];
-                columns.forEach((column, index) => {
-                    if (index === 0) {
-                        sums[index] = '鍚堣';
-                        return;
-                    } else {
-                        if (index == 9||index==10||index==11||index==12) {
-                            const values = data.map(item => Number(item[column.property]));
-                            if (!values.every(value => isNaN(value))) {
-                                sums[index] = values.reduce((prev, curr) => {
-                                    const value = Number(curr);
-                                    if (!isNaN(value)) {
-                                        return prev + curr;
-                                    } else {
-                                        return prev;
-                                    }
-                                }, 0);
-                            }
-                        }
-                    }
-                });
-                return sums;
-            }
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-    .info {
-        width: 100%;
-        .info_label {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            margin-bottom: 20px;
-            span {
-                font-size: 18px;
-                font-weight: 500;
-                color: #000000;
-            }
-        }
-        .info_list {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            flex-wrap: wrap;
-            .info_list_item {
-                width: 50%;
-                display: flex;
-                align-items: start;
-                margin-bottom: 20px;
-                .info_list_item_label {
-                    width: 150px;
-                    flex-shrink: 0;
-                }
-                .info_list_item_val {
-                    flex: 1;
-                    display: flex;
-                    align-items: center;
-                    .image {
-                        width: 100px;
-                        height: 100px;
-                        display: flex;
-                        align-items: center;
-                        justify-content: center;
-                        overflow: hidden;
-                        img {
-                            width: 100%;
-                        }
-                    }
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/applyChangeDetails.vue b/platform/src/components/business/applyChangeDetails.vue
deleted file mode 100644
index 1f9ab1c..0000000
--- a/platform/src/components/business/applyChangeDetails.vue
+++ /dev/null
@@ -1,249 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="50%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="box">
-            <div class="box_header">
-                <div class="box_header_item">
-                    <div class="box_header_item_label">鎶曚繚浼佷笟</div>
-                    <div class="box_header_item_val">瀹夊窘鏍煎姏鏈烘鍒堕�犲巶</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">淇濋櫓鏂规</div>
-                    <div class="box_header_item_val">骞冲畨淇濋櫓闆囦富璐d换闄〢鐗�</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">鍏宠仈淇濆崟鍙�</div>
-                    <div class="box_header_item_val">11121241241241</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">鎶曚繚浜烘暟</div>
-                    <div class="box_header_item_val">50</div>
-                </div>
-            </div>
-            <div class="box_table">
-                <div class="box_table_headText">鍔犱繚鍛樺伐</div>
-                <div class="box_table_head">
-                    <div class="box_table_head_item">搴忓彿</div>
-                    <div class="box_table_head_item">鍛樺伐濮撳悕</div>
-                    <div class="box_table_head_item">韬唤璇佸彿</div>
-                    <div class="box_table_head_item">娲鹃仯鍗曚綅</div>
-                    <div class="box_table_head_item">鎵�灞炲伐绉�</div>
-                    <div class="box_table_head_item">璐圭敤</div>
-                </div>
-                <div class="box_table_content" v-for="(item, index) in 3" :key="index">
-                    <div class="box_table_content_item">{{index + 1}}</div>
-                    <div class="box_table_content_item">鐜嬫煇鏌�</div>
-                    <div class="box_table_content_item">340411190001010011</div>
-                    <div class="box_table_content_item">瀹夊窘鏍煎姏鏈烘鍒堕�犲巶</div>
-                    <div class="box_table_content_item">4绫� 鏈烘鍔犲伐/鍒堕��</div>
-                    <div class="box_table_content_item">200</div>
-                </div>
-            </div>
-            <div class="box_table">
-                <div class="box_table_headText">鍑忎繚鍛樺伐</div>
-                <div class="box_table_head">
-                    <div class="box_table_head_item">搴忓彿</div>
-                    <div class="box_table_head_item">鍛樺伐濮撳悕</div>
-                    <div class="box_table_head_item">韬唤璇佸彿</div>
-                    <div class="box_table_head_item">娲鹃仯鍗曚綅</div>
-                    <div class="box_table_head_item">鎵�灞炲伐绉�</div>
-                    <div class="box_table_head_item">璐圭敤</div>
-                </div>
-                <div class="box_table_content" v-for="(item, index) in 3" :key="index">
-                    <div class="box_table_content_item">{{index + 1}}</div>
-                    <div class="box_table_content_item">鐜嬫煇鏌�</div>
-                    <div class="box_table_content_item">340411190001010011</div>
-                    <div class="box_table_content_item">瀹夊窘鏍煎姏鏈烘鍒堕�犲巶</div>
-                    <div class="box_table_content_item">4绫� 鏈烘鍔犲伐/鍒堕��</div>
-                    <div class="box_table_content_item">-200</div>
-                </div>
-            </div>
-            <div class="box_header">
-                <div class="box_header_item">
-                    <div class="box_header_item_label">鍔犱繚浜烘暟</div>
-                    <div class="box_header_item_val">2</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">鍑忎繚浜烘暟</div>
-                    <div class="box_header_item_val">1</div>
-                </div>
-                <div class="box_header_item" style="flex: 1;">
-                    <div class="box_header_item_label" style="flex: 0.333 !important;">璐圭敤鍙樻洿</div>
-                    <div class="box_header_item_val">100</div>
-                </div>
-            </div>
-        </div>
-        <template v-slot:footer>
-            <el-button type="primary">浼佷笟璇佷欢</el-button>
-            <el-button type="primary">瀵煎嚭璇﹀崟</el-button>
-            <el-button @click="visible = false">鍙栨秷</el-button>
-        </template>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    export default {
-        name: 'applyChangeDetails',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    editDate: ''
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                formInline: {
-                    user: '',
-                    region: ''
-                },
-                reverse: true,
-                activities: [{
-                    content: '娲诲姩鎸夋湡寮�濮�',
-                    timestamp: '2018-04-15'
-                }, {
-                    content: '閫氳繃瀹℃牳',
-                    timestamp: '2018-04-13'
-                }, {
-                    content: '鍒涘缓鎴愬姛',
-                    timestamp: '2018-04-11'
-                }],
-                tableData: [],
-                activeName: 'first',
-                currentPage: 1
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insuranceApply',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            handleSizeChange(val) {
-                console.log(`姣忛〉 ${val} 鏉);
-            },
-            handleCurrentChange(val) {
-                console.log(`褰撳墠椤�: ${val}`);
-            },
-            handleClick(tab, event) {
-                console.log(tab, event);
-            },
-            onSubmit() {
-
-            }
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-    .box {
-        width: 100%;
-        .box_header {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            flex-wrap: wrap;
-            border-top: 1px solid #b4bbc5;
-            border-left: 1px solid #b4bbc5;
-            .box_header_item {
-                width: 50%;
-                height: 50px;
-                display: flex;
-                align-items: center;
-                border-right: 1px solid #b4bbc5;
-                border-bottom: 1px solid #b4bbc5;
-                box-sizing: border-box;
-                .box_header_item_label {
-                    flex: 1;
-                    height: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    background: #f2f2f2;
-                    border-right: 1px solid #b4bbc5;
-                }
-                .box_header_item_val {
-                    flex: 1;
-                    height: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                }
-            }
-        }
-        .box_table {
-            width: 100%;
-            border-left: 1px solid #b4bbc5;
-            box-sizing: border-box;
-            .box_table_headText {
-                width: 100%;
-                height: 50px;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                background: #f2f2f2;
-                font-size: 14px;
-                color: black;
-                border-right: 1px solid #b4bbc5;
-                border-bottom: 1px solid #b4bbc5;
-            }
-            .box_table_head {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                .box_table_head_item {
-                    flex: 1;
-                    height: 50px;
-                    background: #f2f2f2;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    border-right: 1px solid #b4bbc5;
-                    border-bottom: 1px solid #b4bbc5;
-                    box-sizing: border-box;
-                    &:nth-child(1) {
-                        flex: 0.5;
-                    }
-                }
-            }
-            .box_table_content {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                .box_table_content_item {
-                    flex: 1;
-                    height: 50px;
-                    background: #ffffff;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    border-right: 1px solid #b4bbc5;
-                    border-bottom: 1px solid #b4bbc5;
-                    box-sizing: border-box;
-                    &:nth-child(1) {
-                        flex: 0.5;
-                    }
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/dispatchReview.vue b/platform/src/components/business/dispatchReview.vue
deleted file mode 100644
index 9d1ce17..0000000
--- a/platform/src/components/business/dispatchReview.vue
+++ /dev/null
@@ -1,163 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="50%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-    >
-        <div class="box">
-            <div class="box_label">淇濋櫓鏂规锛氬钩瀹変繚闄╅泧涓昏矗浠婚櫓B鐗�</div>
-            <el-table
-                :data="tableData"
-                border
-                style="width: 100%">
-                <el-table-column
-                    prop="date"
-                    label="鏃ユ湡">
-                </el-table-column>
-                <el-table-column
-                    prop="name"
-                    label="濮撳悕">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="鍦板潃">
-                </el-table-column>
-            </el-table>
-        </div>
-        <!--    椹冲洖閫�鍥炵敵璇�    -->
-        <el-dialog
-            title="瀹℃牳纭"
-            :visible.sync="visible5"
-            :show-close="false"
-            :close-on-click-modal="false"
-            width="30%"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>瀹℃牳璇存槑锛�</div>
-                    <div class="form_item_val">
-                        <el-input type="textarea" :rows="2" placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible5 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible5 = false">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-        <template v-slot:footer>
-            <el-button type="primary" @click="visible5 = true">瀹℃牳閫氳繃</el-button>
-            <el-button @click="visible5 = true">瀹℃牳閫�鍥�</el-button>
-        </template>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    export default {
-        name: 'dispatchReview',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    editDate: ''
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                tableData: [],
-                visible5: false
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insuranceApply',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-    .box {
-        width: 100%;
-        .box_label {
-            width: 100%;
-            color: black;
-            font-size: 14px;
-            margin-bottom: 15px;
-        }
-    }
-    .form {
-        width: 100%;
-        display: flex;
-        align-items: center;
-        flex-direction: column;
-        .form_span {
-            width: 100%;
-            display: flex;
-            align-items: start;
-            flex-direction: column;
-            margin-bottom: 20px;
-            span {
-                font-size: 14px;
-                &:nth-child(1) {
-                    color: black;
-                    margin-bottom: 5px;
-                }
-                &:nth-child(2) {
-                    color: #8c939d;
-                }
-            }
-        }
-        .form_item {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            margin-bottom: 20px;
-            &:last-child {
-                margin: 0 !important;
-            }
-            .form_item_label {
-                flex-shrink: 0;
-                width: 170px;
-                color: black;
-                font-size: 14px;
-                span {
-                    color: red;
-                    font-size: 14px;
-                }
-            }
-            .form_item_val {
-                flex: 1;
-                /*height: 40px;*/
-                margin-left: 20px;
-                textarea {
-                    width: 100%;
-                    height: 70px;
-                    border: 1px solid #cbcbcb;
-                    padding: 10px;
-                    outline: none;
-                    box-sizing: border-box;
-                }
-                input {
-                    width: 100%;
-                    height: 40px;
-                    outline: none;
-                    border-radius: 5px;
-                    border: 1px solid #cbcbcb;
-                    padding: 0 20px;
-                    box-sizing: border-box;
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/dispatchUnitReviewDetails.vue b/platform/src/components/business/dispatchUnitReviewDetails.vue
deleted file mode 100644
index e628141..0000000
--- a/platform/src/components/business/dispatchUnitReviewDetails.vue
+++ /dev/null
@@ -1,296 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="80%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="info">
-            <div class="info_head">
-                <span>鎵�灞炰紒涓氾細鑺滄箹鏍煎姏绮惧瘑鍒堕�犳湁闄愬叕鍙�</span>
-                <el-button type="primary" @click="visible5 = true">瀹℃牳</el-button>
-                <el-button type="primary" @click="$refs.dispatchReview.open('瀹℃牳宸ョ')">瀹℃牳宸ョ</el-button>
-            </div>
-            <div class="info_list">
-                <div class="info_list_item">娲鹃仯鍗曚綅锛氳姕婀栨牸鍔涚簿瀵嗗埗閫犳湁闄愬叕鍙�</div>
-                <div class="info_list_item">娲鹃仯鍗曚綅淇$敤浠g爜锛�913401000900000001</div>
-                <div class="info_list_item">娲鹃仯鍗曚綅鐘舵�侊細寰呭鏍�</div>
-                <div class="info_list_item">娲鹃仯鍗曚綅璇﹁堪锛氭棤</div>
-            </div>
-            <div class="info_x"></div>
-            <div class="info_form">
-                <div class="info_form_label">淇濋櫓鏂规锛氬钩瀹変繚闄╅泧涓昏矗浠婚櫓B鐗�</div>
-                <el-table
-                    :data="tableData"
-                    border
-                    style="width: 100%">
-                    <el-table-column
-                        prop="date"
-                        label="鏃ユ湡">
-                    </el-table-column>
-                    <el-table-column
-                        prop="name"
-                        label="濮撳悕">
-                    </el-table-column>
-                    <el-table-column
-                        prop="address"
-                        label="鍦板潃">
-                    </el-table-column>
-                </el-table>
-            </div>
-            <div class="info_form">
-                <div class="info_form_label">淇濋櫓鏂规锛氬钩瀹変繚闄╅泧涓昏矗浠婚櫓B鐗�</div>
-                <el-table
-                    :data="tableData"
-                    border
-                    style="width: 100%">
-                    <el-table-column
-                        prop="date"
-                        label="鏃ユ湡">
-                    </el-table-column>
-                    <el-table-column
-                        prop="name"
-                        label="濮撳悕">
-                    </el-table-column>
-                    <el-table-column
-                        prop="address"
-                        label="鍦板潃">
-                    </el-table-column>
-                </el-table>
-            </div>
-            <div class="desc_label">
-                <div class="desc_label_left">
-                    <span class="desc_label_left_title">
-                        妗堜欢杩涘害
-                    </span>
-                </div>
-            </div>
-            <div class="desc_times">
-                <el-timeline :reverse="reverse">
-                    <el-timeline-item
-                        v-for="(activity, index) in activities"
-                        :key="index"
-                        :timestamp="activity.timestamp">
-                        {{activity.content}}
-                    </el-timeline-item>
-                </el-timeline>
-            </div>
-            <!--    椹冲洖閫�鍥炵敵璇�    -->
-            <el-dialog
-                title="瀹℃牳纭"
-                :visible.sync="visible5"
-                :show-close="false"
-                :close-on-click-modal="false"
-                width="30%"
-                center>
-                <div class="form">
-                    <div class="form_item">
-                        <div class="form_item_label"><span>*</span>瀹℃牳璇存槑锛�</div>
-                        <div class="form_item_val">
-                            <el-input type="textarea" :rows="2" placeholder="璇疯緭鍏�"></el-input>
-                        </div>
-                    </div>
-                </div>
-                <span slot="footer" class="dialog-footer">
-                <el-button @click="visible5 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible5 = false">纭� 瀹�</el-button>
-            </span>
-            </el-dialog>
-            <!--      瀹℃牳      -->
-            <dispatchReview ref="dispatchReview" />
-        </div>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import dispatchReview from '@/components/business/dispatchReview'
-    export default {
-        name: 'dispatchUnitReviewDetails',
-        extends: BaseOpera,
-        components: { GlobalWindow, dispatchReview },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    editDate: ''
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                tableData: [],
-                visible5: false,
-                reverse: true,
-                activities: [{
-                    content: '娲诲姩鎸夋湡寮�濮�',
-                    timestamp: '2018-04-15'
-                }, {
-                    content: '閫氳繃瀹℃牳',
-                    timestamp: '2018-04-13'
-                }, {
-                    content: '鍒涘缓鎴愬姛',
-                    timestamp: '2018-04-11'
-                }],
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insuranceApply',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-
-        }
-    }
-</script>
-
-<style>
-    .v-modal {
-        z-index: 2000 !important;
-    }
-</style>
-
-<style lang="scss" scoped>
-    .info {
-        width: 100%;
-        .form {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            flex-direction: column;
-            .form_span {
-                width: 100%;
-                display: flex;
-                align-items: start;
-                flex-direction: column;
-                margin-bottom: 20px;
-                span {
-                    font-size: 14px;
-                    &:nth-child(1) {
-                        color: black;
-                        margin-bottom: 5px;
-                    }
-                    &:nth-child(2) {
-                        color: #8c939d;
-                    }
-                }
-            }
-            .form_item {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                margin-bottom: 20px;
-                &:last-child {
-                    margin: 0 !important;
-                }
-                .form_item_label {
-                    flex-shrink: 0;
-                    width: 170px;
-                    color: black;
-                    font-size: 14px;
-                    span {
-                        color: red;
-                        font-size: 14px;
-                    }
-                }
-                .form_item_val {
-                    flex: 1;
-                    /*height: 40px;*/
-                    margin-left: 20px;
-                    textarea {
-                        width: 100%;
-                        height: 70px;
-                        border: 1px solid #cbcbcb;
-                        padding: 10px;
-                        outline: none;
-                        box-sizing: border-box;
-                    }
-                    input {
-                        width: 100%;
-                        height: 40px;
-                        outline: none;
-                        border-radius: 5px;
-                        border: 1px solid #cbcbcb;
-                        padding: 0 20px;
-                        box-sizing: border-box;
-                    }
-                }
-            }
-        }
-        .info_head {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            span {
-                color: black;
-                font-size: 14px;
-            }
-        }
-        .info_list {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            flex-wrap: wrap;
-            margin-top: 15px;
-            .info_list_item {
-                width: 33.3%;
-                color: black;
-                font-size: 14px;
-                margin-bottom: 15px;
-            }
-        }
-        .info_x {
-            width: 100%;
-            height: 1px;
-            background: #eeeeee;
-            margin-bottom: 15px;
-        }
-        .info_form {
-            width: 100%;
-            margin-bottom: 15px;
-            .info_form_label {
-                color: black;
-                font-size: 14px;
-                margin-bottom: 15px;
-            }
-        }
-        .desc_label {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            .desc_label_left {
-                flex: 1;
-                display: flex;
-                align-items: center;
-                .desc_label_left_title {
-                    font-size: 20px;
-                    font-weight: bold;
-                    color: black;
-                }
-                .desc_label_left_time {
-                    font-size: 14px;
-                    color: rgba(249, 86, 1, 0.996);
-                    margin-left: 10px;
-                }
-                .desc_label_left_code {
-                    font-size: 15px;
-                    color: black;
-                    margin-left: 30px;
-                }
-            }
-            .desc_label_right {
-                flex-shrink: 0;
-            }
-        }
-        .desc_times {
-            width: 100%;
-            margin-top: 20px;
-        }
-    }
-</style>
diff --git a/platform/src/components/business/modification.vue b/platform/src/components/business/modification.vue
deleted file mode 100644
index 877a401..0000000
--- a/platform/src/components/business/modification.vue
+++ /dev/null
@@ -1,153 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="100%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <el-button type="primary" style="margin-bottom: 15px;" @click="add">娣诲姞</el-button>
-        <el-table
-            :data="form.solutionList"
-            border
-            style="width: 100%">
-            <el-table-column
-                label="搴忓彿"
-                align="center"
-                width="80">
-                <template slot-scope="scope">
-                    <span>{{scope.$index + 1}}</span>
-                </template>
-            </el-table-column>
-            <el-table-column
-                align="center"
-                label="淇濋櫓鏂规">
-                <template slot-scope="{row}">
-                    <el-select v-model="row.solutionBaseId" placeholder="璇烽�夋嫨">
-                        <el-option
-                            v-for="item in programme"
-                            :key="item.id"
-                            :label="item.name"
-                            :value="item.id">
-                        </el-option>
-                    </el-select>
-                </template>
-            </el-table-column>
-            <el-table-column
-                align="center"
-                label="鍔犲噺淇濆姛鑳�">
-                <template slot-scope="{row}">
-                    <el-checkbox :true-label="1" :false-label="0" v-model="row.canAdd">鍔犱繚</el-checkbox>
-                    <el-checkbox :true-label="1" :false-label="0" v-model="row.canReduce">鍑忎繚</el-checkbox>
-                </template>
-            </el-table-column>
-            <el-table-column
-                label="鎿嶄綔"
-                align="center"
-                width="100">
-                <template slot-scope="scope">
-                    <el-button type="text" size="small" style="color: red;" @click="dele(scope.$index)">鍒犻櫎</el-button>
-                </template>
-            </el-table-column>
-        </el-table>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import { all } from '@/api/business/solutions'
-    import { listForCompany } from '@/api/business/solutions'
-    import { updateSolutions } from '@/api/business/company'
-
-    export default {
-        name: 'modification',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    solutionList: [
-                        {
-                            solutionBaseId: '',
-                            canAdd: 0,
-                            canReduce: 0
-                        }
-                    ]
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                    solutionList: [
-                        { required: true, message: '璇疯緭鍏ュ叕鍙歌处鍙�' }
-                    ]
-                },
-                programme: []
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/company',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            confirm() {
-                this.isWorking = true
-                updateSolutions(this.form)
-                    .then(res => {
-                        this.visible = false
-                        this.$tip.apiSuccess('鏂板缓鎴愬姛')
-                        this.$emit('success')
-                    })
-                    .catch(e => {
-                        this.$tip.apiFailed(e)
-                    })
-                    .finally(() => {
-                        this.isWorking = false
-                    })
-            },
-            // 鑾峰彇鍏ㄩ儴鏂规
-            getAll() {
-                all({})
-                    .then(res => {
-                        this.programme = res
-                    })
-            },
-            open (title, target) {
-                var that = this;
-                this.title = title
-                for (const key in this.form) {
-                    this.form[key] = target[key]
-                }
-                this.getAll()
-                listForCompany({ companyId: target.id })
-                    .then(resa => {
-                        that.form.solutionList = resa.map(item => {
-                            return {
-                                solutionBaseId: item.solutionBaseId,
-                                canAdd: item.canAdd,
-                                canReduce: item.canReduce
-                            }
-                        })
-                        that.visible = true
-                    })
-            },
-            add() {
-                this.form.solutionList.push({
-                    solutionName: '',
-                    canAdd: '',
-                    canReduce: ''
-                })
-            },
-            dele(index) {
-                if (this.form.solutionList.length === 1) {
-                    this.$message.warning('鑷冲皯淇濈暀涓�椤�')
-                    return
-                }
-                this.form.solutionList.splice(index, 1)
-            }
-        }
-    }
-</script>
diff --git a/platform/src/components/business/policyListDetails.vue b/platform/src/components/business/policyListDetails.vue
deleted file mode 100644
index a4a5ed8..0000000
--- a/platform/src/components/business/policyListDetails.vue
+++ /dev/null
@@ -1,242 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="50%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="box">
-            <div class="box_header">
-                <div class="box_header_item">
-                    <div class="box_header_item_label">鎶曚繚浼佷笟</div>
-                    <div class="box_header_item_val">瀹夊窘鏍煎姏鏈烘鍒堕�犲巶</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">淇濋櫓鏂规</div>
-                    <div class="box_header_item_val">骞冲畨淇濋櫓闆囦富璐d换闄〢鐗�</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">淇濋櫓鐢熸晥璧锋湡</div>
-                    <div class="box_header_item_val">2023-09-11 00:00:00</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">淇濋櫓鐢熸晥姝㈡湡</div>
-                    <div class="box_header_item_val">2023-10-11 23:59:59</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">鎶曚繚浜烘暟</div>
-                    <div class="box_header_item_val">50</div>
-                </div>
-                <div class="box_header_item">
-                    <div class="box_header_item_label">鎬昏垂鐢�</div>
-                    <div class="box_header_item_val">15000</div>
-                </div>
-            </div>
-            <div class="box_table">
-                <div class="box_table_head">
-                    <div class="box_table_head_item">搴忓彿</div>
-                    <div class="box_table_head_item">鍛樺伐濮撳悕</div>
-                    <div class="box_table_head_item">韬唤璇佸彿</div>
-                    <div class="box_table_head_item">娲鹃仯鍗曚綅</div>
-                    <div class="box_table_head_item">鎵�灞炲伐绉�</div>
-                </div>
-                <div class="box_table_content" v-for="(item, index) in 6" :key="index">
-                    <div class="box_table_content_item">{{index + 1}}</div>
-                    <div class="box_table_content_item">鐜嬫煇鏌�</div>
-                    <div class="box_table_content_item">340411190001010011</div>
-                    <div class="box_table_content_item">瀹夊窘鏍煎姏鏈烘鍒堕�犲巶</div>
-                    <div class="box_table_content_item">4绫� 鏈烘鍔犲伐/鍒堕��</div>
-                </div>
-            </div>
-            <div class="box_footer">
-                <div class="box_footer_label">澶囨敞</div>
-                <div class="box_footer_val">
-                    <el-input placeholder="璇疯緭鍏�"></el-input>
-                </div>
-            </div>
-        </div>
-        <template v-slot:footer>
-            <el-button type="primary">浼佷笟璇佷欢</el-button>
-            <el-button type="primary">瀵煎嚭璇﹀崟</el-button>
-            <el-button @click="visible = false">鍙栨秷</el-button>
-        </template>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    export default {
-        name: 'policyListDetails',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    editDate: ''
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {
-                },
-                formInline: {
-                    user: '',
-                    region: ''
-                },
-                reverse: true,
-                activities: [{
-                    content: '娲诲姩鎸夋湡寮�濮�',
-                    timestamp: '2018-04-15'
-                }, {
-                    content: '閫氳繃瀹℃牳',
-                    timestamp: '2018-04-13'
-                }, {
-                    content: '鍒涘缓鎴愬姛',
-                    timestamp: '2018-04-11'
-                }],
-                tableData: [],
-                activeName: 'first',
-                currentPage: 1
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insuranceApply',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            handleSizeChange(val) {
-                console.log(`姣忛〉 ${val} 鏉);
-            },
-            handleCurrentChange(val) {
-                console.log(`褰撳墠椤�: ${val}`);
-            },
-            handleClick(tab, event) {
-                console.log(tab, event);
-            },
-            onSubmit() {
-
-            }
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-    .box {
-        width: 100%;
-        .box_header {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            flex-wrap: wrap;
-            border-top: 1px solid #b4bbc5;
-            border-left: 1px solid #b4bbc5;
-            .box_header_item {
-                width: 50%;
-                height: 50px;
-                display: flex;
-                align-items: center;
-                border-right: 1px solid #b4bbc5;
-                border-bottom: 1px solid #b4bbc5;
-                box-sizing: border-box;
-                .box_header_item_label {
-                    flex: 1;
-                    height: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    background: #f2f2f2;
-                    border-right: 1px solid #b4bbc5;
-                }
-                .box_header_item_val {
-                    flex: 1;
-                    height: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                }
-            }
-        }
-        .box_table {
-            width: 100%;
-            border-left: 1px solid #b4bbc5;
-            box-sizing: border-box;
-            .box_table_head {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                .box_table_head_item {
-                    flex: 1;
-                    height: 50px;
-                    background: #f2f2f2;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    border-right: 1px solid #b4bbc5;
-                    border-bottom: 1px solid #b4bbc5;
-                    box-sizing: border-box;
-                    &:nth-child(1) {
-                        flex: 0.5;
-                    }
-                }
-            }
-            .box_table_content {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                .box_table_content_item {
-                    flex: 1;
-                    height: 50px;
-                    background: #ffffff;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    border-right: 1px solid #b4bbc5;
-                    border-bottom: 1px solid #b4bbc5;
-                    box-sizing: border-box;
-                    &:nth-child(1) {
-                        flex: 0.5;
-                    }
-                }
-            }
-        }
-        .box_footer {
-            width: 100%;
-            height: 50px;
-            border-left: 1px solid #b4bbc5;
-            border-bottom: 1px solid #b4bbc5;
-            border-right: 1px solid #b4bbc5;
-            display: flex;
-            align-items: center;
-            .box_footer_label {
-                width: 200px;
-                height: 100%;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                font-size: 14px;
-                color: black;
-                background: #f2f2f2;
-            }
-            .box_footer_val /deep/ {
-                width: calc(100% - 200px);
-                height: 100%;
-                input {
-                    width: 100%;
-                    height: 50px;
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/business/selectProduct.vue b/platform/src/components/business/selectProduct.vue
new file mode 100644
index 0000000..d3702aa
--- /dev/null
+++ b/platform/src/components/business/selectProduct.vue
@@ -0,0 +1,119 @@
+<template>
+    <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+      <el-form :model="form" ref="form" :rules="rules">
+        <el-form-item label="鍟嗗搧绫诲埆" prop="categoryId">
+            <el-select v-model="form.categoryId" placeholder="璇烽�夋嫨">
+                <el-option
+                    v-for="item in categoryList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id">
+                </el-option>
+            </el-select>
+        </el-form-item>
+        <el-form-item label="鍟嗗搧鑼冨洿" prop="type">
+            <el-radio-group v-model="form.type">
+                <el-radio :label="0">鍏ㄩ儴</el-radio>
+                <el-radio :label="1">閮ㄥ垎</el-radio>
+            </el-radio-group>
+        </el-form-item>
+        <el-form-item label="鍔犱环绯绘暟" prop="rate">
+          <el-input v-model="form.rate" placeholder="骞冲彴閲囪喘浠�*鍔犱环绯绘暟锛屼綔涓哄弬鑰冨嚭鎵嬩环锛屽缓璁緭鍏ュぇ浜�1鐨勬暟瀛�" v-trim />
+        </el-form-item>
+      </el-form>
+      <!-- 閫夋嫨骞冲彴鍟嗗搧 -->
+      <selectProductItem ref="selectProductItem" @result="result" />
+    </GlobalWindow>
+  </template>
+    
+  <script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import selectProductItem from '@/components/business/selectProductItem'
+  import { baseCategoryList } from '@/api/business/category.js'
+  import { createPlat } from '@/api/business/goods'
+
+  export default {
+    name: 'OperaBrandWindow',
+    extends: BaseOpera,
+    components: { GlobalWindow, selectProductItem },
+    data() {
+      return {
+        categoryList: [],
+        // 琛ㄥ崟鏁版嵁
+        form: {
+          categoryId: '',
+          type: 0,
+          rate: ''
+        },
+        // 楠岃瘉瑙勫垯
+        rules: {
+            categoryId: [
+            { required: true, message: '鍟嗗搧绫诲埆涓嶈兘涓虹┖', trigger: 'blur' }
+          ],
+          type: [
+            { required: true, message: '鍟嗗搧鑼冨洿涓嶈兘涓虹┖', trigger: 'blur' }
+          ],
+          rate: [
+            { required: true, message: '鍔犱环绯绘暟涓嶈兘涓虹┖', trigger: 'blur' }
+          ]
+        }
+      }
+    },
+    created() {
+      this.config({
+        api: '/business/goods',
+        'field.id': 'id'
+      })
+    },
+    methods: {
+        result() {
+          // this.$emit('success')
+          this.$emit('result')
+          this.visible = false
+        },
+        confirm() {
+            this.$refs.form.validate((valid) => {
+                if (!valid) return
+                // 鏂板缓
+                if (this.form.type == 0) {
+                    this.isWorking = true
+                    createPlat({
+                        categoryId: this.form.categoryId,
+                        rate: this.form.rate,
+                        type: this.form.type
+                    }).then(res => {
+                        this.visible = false
+                        this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+                        // this.$emit('success')
+                        this.$emit('result')
+                    })
+                    .catch(e => {
+                        this.$tip.apiFailed(e)
+                    })
+                    .finally(() => {
+                        this.isWorking = false
+                    })
+                } else {
+                    this.$refs.selectProductItem.open('閫夋嫨骞冲彴鍟嗗搧', this.form)
+                }
+            })
+        },
+        /**
+         * 鎵撳紑绐楀彛
+         * @title 绐楀彛鏍囬
+         * @target 缂栬緫鐨勫璞�
+         */
+        open (title, target) {
+            this.title = title
+            this.visible = true
+            // 鑾峰彇鍒嗙被鍒楄〃
+            baseCategoryList({ type: 1 })
+              .then(res => {
+                this.categoryList = res
+              })
+        }
+    }
+  }
+  </script>
+    
\ No newline at end of file
diff --git a/platform/src/components/business/selectProductItem.vue b/platform/src/components/business/selectProductItem.vue
new file mode 100644
index 0000000..50edba6
--- /dev/null
+++ b/platform/src/components/business/selectProductItem.vue
@@ -0,0 +1,183 @@
+<template>
+    <GlobalWindow :title="title" width="70%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+        <div class="head">
+            <el-form :inline="true" :model="form" class="demo-form-inline">
+                <el-form-item label="鍟嗗搧鍚嶇О" prop="name">
+                    <el-input v-model="form.name" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�"></el-input>
+                </el-form-item>
+                <el-form-item label="绫诲埆" prop="categoryId">
+                    <el-select v-model="form.categoryId" disabled placeholder="璇烽�夋嫨">
+                        <el-option
+                            v-for="item in categoryList"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.id">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" @click="getList">鏌ヨ</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+        <div class="tab">
+            <el-table
+            :data="tableData"
+            stripe
+            border
+            @selection-change="handleSelectionChange">
+                <el-table-column type="selection" width="55"></el-table-column>
+                <el-table-column prop="id" label="鍟嗗搧ID" min-width="100px"></el-table-column>
+                <el-table-column prop="name" label="鍟嗗搧鍚嶇О/鍨嬪彿" show-overflow-tooltip min-width="200px">
+                    <template slot-scope="{row}">
+                    <div style="display: flex; align-items: center;">
+                        <div style="width: 70px; height: 70px; flex-shrink: 0;">
+                        <el-image
+                            v-if="row.imgurl"
+                            style="width: 70px; height: 70px"
+                            :src="row.fullImgUrl"
+                            fit="cover"></el-image>
+                        </div>
+                        {{ row.name }}
+                    </div>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="brandName" label="鍝佺墝" show-overflow-tooltip min-width="100px"></el-table-column>
+                <el-table-column prop="categoryName" label="绫诲埆" show-overflow-tooltip min-width="100px"></el-table-column>
+                <el-table-column prop="zdPrice" label="鎸囧浠凤紙鍏冿級" show-overflow-tooltip min-width="100px"></el-table-column>
+                <el-table-column prop="price" label="閲囪喘浠凤紙鍏冿級" show-overflow-tooltip min-width="100px"></el-table-column>
+                <el-table-column label="鍏ユ墜浠凤紙鍏冿級" show-overflow-tooltip min-width="100px">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.purchasePrice" placeholder="璇疯緭鍏�"></el-input>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :current-page="page"
+                :page-sizes="[10, 20, 30]"
+                :page-size="pageSize"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="total">
+            </el-pagination>
+        </div>
+    </GlobalWindow>
+</template>
+    
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { baseCategoryList } from '@/api/business/category.js'
+import { pageT } from '@/api/business/goods'
+import { createPlat } from '@/api/business/goods'
+
+export default {
+    name: 'OperaBrandWindow',
+    extends: BaseOpera,
+    components: { GlobalWindow },
+    data() {
+        return {
+            // 琛ㄥ崟鏁版嵁
+            form: {
+                categoryId: '',
+                type: 0,
+                rate: '',
+                name: '',
+                goodsParamList: []
+            },
+            pageSize: 10,
+            page: 1,
+            total: 0,
+            tableData: [],
+            categoryList: []
+        }
+    },
+    created() {
+        this.config({
+            api: '/business/anchor',
+            'field.id': 'id'
+        })
+    },
+    methods: {
+        getList() {
+            pageT({
+                capacity: this.pageSize,
+                model: {
+                    categoryId: this.form.categoryId,
+                    name: this.form.name
+                },
+                page: this.page
+            }).then(res => {
+                res.records.forEach(item => {
+                    item.purchasePrice = item.price * this.form.rate
+                })
+                this.tableData = res.records
+                this.total = res.total
+            })
+        },
+        handleCurrentChange(e) {
+            this.page = e
+            this.getList()
+        },
+        handleSizeChange(e) {
+            this.pageSize = e
+            this.getList()
+        },
+        handleSelectionChange(e) {
+            let arr = []
+            e.forEach(item => {
+                arr.push({ goodsId: item.id, price: item.purchasePrice })
+            })
+            this.form.goodsParamList = arr
+            console.log(arr)
+        },
+        confirm() {
+            // 璋冪敤鏂板缓鎺ュ彛
+            this.isWorking = true
+            createPlat({
+                categoryId: this.form.categoryId,
+                goodsParamList: this.form.goodsParamList,
+                rate: this.form.rate,
+                type: this.form.type
+            }).then(res => {
+                this.visible = false
+                this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+                // this.$emit('success')
+                this.$emit('result')
+            })
+            .catch(e => {
+                this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+                this.isWorking = false
+            })
+        },
+        /**
+         * 鎵撳紑绐楀彛
+         * @title 绐楀彛鏍囬
+         * @target 缂栬緫鐨勫璞�
+         */
+        open(title, target) {
+            this.title = title
+            this.visible = true
+            this.form.categoryId = target.categoryId
+            this.form.rate = Number(target.rate)
+            this.form.type = target.type
+            // 鑾峰彇鍒嗙被鍒楄〃
+            baseCategoryList({})
+                .then(res => {
+                    this.categoryList = res
+                })
+            this.getList()
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+    .head {
+        width: 100%;
+
+    }
+</style>
\ No newline at end of file
diff --git a/platform/src/components/business/switchCourtDetaols.vue b/platform/src/components/business/switchCourtDetaols.vue
deleted file mode 100644
index 4a54799..0000000
--- a/platform/src/components/business/switchCourtDetaols.vue
+++ /dev/null
@@ -1,236 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        width="70%"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <div class="box">
-            <el-table
-                :data="tableData"
-                border
-                style="width: 100%; margin-bottom: 15px;">
-                <el-table-column
-                    prop="date"
-                    label="鎵瑰崟鍙�">
-                </el-table-column>
-                <el-table-column
-                    prop="name"
-                    label="鍏宠仈淇濆崟鍙�">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="淇濋櫓鏂规">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="淇濋櫓鐢熸晥璧锋湡">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="淇濋櫓鐢熸晥姝㈡湡">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="鎵瑰崟鐢熸晥鏈�">
-                </el-table-column>
-            </el-table>
-            <el-table
-                :data="tableData"
-                border
-                style="width: 100%; margin-bottom: 15px;">
-                <el-table-column
-                    prop="date"
-                    label="搴忓彿">
-                </el-table-column>
-                <el-table-column
-                    prop="name"
-                    label="鍛樺伐濮撳悕">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="韬唤璇佸彿">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="鍘熸淳閬e崟浣�">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="鍘熸墍灞炲伐绉�">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="淇濋櫓鐢熸晥璧锋湡">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="鎹㈠巶鍚庢淳閬e崟浣�">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="鎹㈠巶鍚庢墍灞炲伐绉�">
-                </el-table-column>
-                <el-table-column
-                    prop="address"
-                    label="淇濋櫓鐢熸晥姝㈡湡">
-                </el-table-column>
-            </el-table>
-            <el-pagination
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-                :current-page="currentPage"
-                :page-sizes="[100, 200, 300, 400]"
-                :page-size="100"
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="400">
-            </el-pagination>
-        </div>
-        <template v-slot:footer>
-            <el-button type="primary">浼佷笟璇佷欢</el-button>
-            <el-button type="primary">瀵煎嚭璇﹀崟</el-button>
-            <el-button @click="visible = false">鍙栨秷</el-button>
-        </template>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    export default {
-        name: 'switchCourtDetaols',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null,
-                    editDate: ''
-                },
-                tableData: [],
-                currentPage: 1
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insuranceApply',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            handleSizeChange(val) {
-                console.log(`姣忛〉 ${val} 鏉);
-            },
-            handleCurrentChange(val) {
-                console.log(`褰撳墠椤�: ${val}`);
-            },
-            onSubmit() {
-
-            }
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-    .box {
-        width: 100%;
-        .box_header {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            flex-wrap: wrap;
-            border-top: 1px solid #b4bbc5;
-            border-left: 1px solid #b4bbc5;
-            .box_header_item {
-                width: 50%;
-                height: 50px;
-                display: flex;
-                align-items: center;
-                border-right: 1px solid #b4bbc5;
-                border-bottom: 1px solid #b4bbc5;
-                box-sizing: border-box;
-                .box_header_item_label {
-                    flex: 1;
-                    height: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    background: #f2f2f2;
-                    border-right: 1px solid #b4bbc5;
-                }
-                .box_header_item_val {
-                    flex: 1;
-                    height: 100%;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                }
-            }
-        }
-        .box_table {
-            width: 100%;
-            border-left: 1px solid #b4bbc5;
-            box-sizing: border-box;
-            .box_table_headText {
-                width: 100%;
-                height: 50px;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                background: #f2f2f2;
-                font-size: 14px;
-                color: black;
-                border-right: 1px solid #b4bbc5;
-                border-bottom: 1px solid #b4bbc5;
-            }
-            .box_table_head {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                .box_table_head_item {
-                    flex: 1;
-                    height: 50px;
-                    background: #f2f2f2;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    border-right: 1px solid #b4bbc5;
-                    border-bottom: 1px solid #b4bbc5;
-                    box-sizing: border-box;
-                    &:nth-child(1) {
-                        flex: 0.5;
-                    }
-                }
-            }
-            .box_table_content {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                .box_table_content_item {
-                    flex: 1;
-                    height: 50px;
-                    background: #ffffff;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    color: black;
-                    border-right: 1px solid #b4bbc5;
-                    border-bottom: 1px solid #b4bbc5;
-                    box-sizing: border-box;
-                    &:nth-child(1) {
-                        flex: 0.5;
-                    }
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/components/common/CommonHeader.vue b/platform/src/components/common/CommonHeader.vue
deleted file mode 100644
index 2e9798a..0000000
--- a/platform/src/components/common/CommonHeader.vue
+++ /dev/null
@@ -1,220 +0,0 @@
-<template>
-  <div class="common-header">
-    <div class="header">
-      <div class="logo">
-        <div>浜戞槗淇濆鎴锋湇鍔$郴缁�</div>
-        <!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> -->
-      </div>
-      <div class="user">
-        <el-dropdown v-if="isLogined" trigger="click">
-          <span class="el-dropdown-link">
-            <!-- <img v-if="userInfo != null" :src="userInfo.avatar == null ? `${require('@/assets/avatar/man.png')}` : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i> -->
-            <img v-if="userInfo != null" style="width: 30px !important;" src="@/assets/avatar/man.png" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i>
-          </span>
-          <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item @click.native="changePwd">淇敼瀵嗙爜</el-dropdown-item>
-            <el-dropdown-item @click.native="logout">閫�鍑虹櫥褰�</el-dropdown-item>
-          </el-dropdown-menu>
-        </el-dropdown>
-      </div>
-    </div>
-    <!-- 淇敼瀵嗙爜 -->
-    <GlobalAlertWindow
-      title="淇敼瀵嗙爜"
-      :visible.sync="visible.changePwd"
-      @confirm="confirmChangePwd"
-      @close="visible.changePwd = false"
-    >
-      <el-form :model="changePwdData.form" ref="changePwdDataForm" :rules="changePwdData.rules">
-        <el-form-item label="鍘熷瀵嗙爜" prop="oldPwd" required>
-          <el-input v-model="changePwdData.form.oldPwd" type="password" placeholder="璇疯緭鍏ュ師濮嬪瘑鐮�" maxlength="30" show-password></el-input>
-        </el-form-item>
-        <el-form-item label="鏂板瘑鐮�" prop="newPwd" required>
-          <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜" maxlength="30" show-password></el-input>
-        </el-form-item>
-        <el-form-item label="纭鏂板瘑鐮�" prop="confirmPwd" required>
-          <el-input v-model="changePwdData.form.confirmPwd" type="password" placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜" maxlength="30" show-password></el-input>
-        </el-form-item>
-      </el-form>
-    </GlobalAlertWindow>
-  </div>
-</template>
-
-<script>
-import { mapState, mapMutations } from 'vuex'
-import GlobalAlertWindow from './GlobalAlertWindow'
-import { logout, updatePwd } from '@/api/system/common'
-export default {
-  name: 'CommonHeader',
-  components: { GlobalAlertWindow },
-  props: {
-    isLogined: {
-      type: Boolean,
-      default: true
-    }
-  },
-  data () {
-    return {
-      visible: {
-        // 淇敼瀵嗙爜
-        changePwd: false
-      },
-      isWorking: {
-        // 淇敼瀵嗙爜
-        changePwd: false
-      },
-      username: 'bob', // 鐢ㄦ埛鍚�
-      // 淇敼瀵嗙爜寮规
-      changePwdData: {
-        form: {
-          oldPwd: '',
-          newPwd: '',
-          confirmPwd: ''
-        },
-        rules: {
-          oldPwd: [
-            { required: true, message: '璇疯緭鍏ュ師濮嬪瘑鐮�' }
-          ],
-          newPwd: [
-            { required: true, message: '璇疯緭鍏ユ柊瀵嗙爜' }
-          ],
-          confirmPwd: [
-            { required: true, message: '璇峰啀娆¤緭鍏ユ柊瀵嗙爜' }
-          ]
-        }
-      }
-    }
-  },
-  computed: {
-    ...mapState(['menuData', 'userInfo']),
-    title () {
-      return this.$route.meta.title
-    }
-  },
-  filters: {
-    // 灞曠ず鍚嶇О
-    displayName (userInfo) {
-      if (userInfo == null) {
-        return ''
-      }
-      if (userInfo.realname != null && userInfo.realname.trim().length > 0) {
-        return userInfo.realname
-      }
-      return userInfo.username
-    }
-  },
-  methods: {
-    ...mapMutations(['setUserInfo', 'switchCollapseMenu']),
-    // 淇敼瀵嗙爜
-    changePwd () {
-      this.visible.changePwd = true
-      this.$nextTick(() => {
-        this.$refs.changePwdDataForm.resetFields()
-      })
-    },
-    // 纭畾淇敼瀵嗙爜
-    confirmChangePwd () {
-      if (this.isWorking.changePwd) {
-        return
-      }
-      this.$refs.changePwdDataForm.validate((valid) => {
-        if (!valid) {
-          return
-        }
-        // 楠岃瘉涓ゆ瀵嗙爜杈撳叆鏄惁涓�鑷�
-        if (this.changePwdData.form.newPwd !== this.changePwdData.form.confirmPwd) {
-          this.$tip.warning('涓ゆ瀵嗙爜杈撳叆涓嶄竴鑷�')
-          return
-        }
-        // 鎵ц淇敼
-        this.isWorking.changePwd = true
-        updatePwd({
-          oldPwd: this.changePwdData.form.oldPwd,
-          newPwd: this.changePwdData.form.newPwd
-        })
-          .then(() => {
-            this.$tip.apiSuccess('淇敼鎴愬姛')
-            this.visible.changePwd = false
-          })
-          .catch(e => {
-            this.$tip.apiFailed(e)
-          })
-          .finally(() => {
-            this.isWorking.changePwd = false
-          })
-      })
-    },
-    // 閫�鍑虹櫥褰�
-    logout () {
-      logout()
-        .then(() => {
-          this.setUserInfo(null)
-          this.$router.push({ name: 'login' })
-        })
-        .catch(e => {
-          this.$tip.apiFailed(e)
-        })
-    }
-  }
-}
-</script>
-
-<style scoped lang="scss">
-@import "@/assets/style/variables.scss";
-.common-header {
-  background-color: #1457C7;
-}
-.header {
-  overflow: hidden;
-  // background: #fff;
-  height: 100%;
-  display: flex;
-  justify-content: space-between;
-
-  .logo {
-    background: url('../../assets/images/top_ic_chilun@2x.png') no-repeat;
-    box-sizing: border-box;
-    min-width: 280px;
-    height: 70px;
-    padding: 17px 30px;
-    // flex-shrink: 0;
-    line-height: 36px;
-    font-size: 22px;
-    font-weight: 600;
-    color: #fff;
-    // display: inline;
-    .title-en {
-      font-size: 11px;
-      font-weight: 500;
-      color: rgb(202, 214, 238);
-    }
-  }
-  .user {
-    width: 712px;
-    box-sizing: border-box;
-    height: 70px;
-    padding-right: 25px;
-    background: url('../../assets/images/top_ic_bolang@2x.png') no-repeat;
-    flex-shrink: 0;
-    text-align: right;
-    .el-dropdown {
-      top: 10px;
-      color: #fff;
-    }
-    img {
-      width: 32px;
-      position: relative;
-      top: 10px;
-      margin-right: 10px;
-    }
-  }
-}
-// 涓嬫媺鑿滃崟妗�
-.el-dropdown-menu {
-  width: 140px;
-  .el-dropdown-menu__item:hover {
-    background: #E3EDFB;
-    color: $primary-color;
-  }
-}
-</style>
diff --git a/platform/src/components/common/DepartmentSelect.vue b/platform/src/components/common/DepartmentSelect.vue
index 77d0b67..c356b20 100644
--- a/platform/src/components/common/DepartmentSelect.vue
+++ b/platform/src/components/common/DepartmentSelect.vue
@@ -36,6 +36,7 @@
     appendToBody: {
       default: false
     },
+    
     // 闇�琚帓闄ょ殑閮ㄩ棬ID
     excludeId: {}
   },
@@ -45,16 +46,21 @@
     }
   },
   watch: {
-    value () {
+    excludeId () {
+      console.log(this.type);
+      this.fetchData()
+    },
+    type() {
+      console.log(this.type);
       this.fetchData()
     }
   },
   methods: {
     // 鑾峰彇鎵�鏈夐儴闂�
     fetchData () {
+      console.log(this.type);
       fetchTree()
         .then(records => {
-          // debugger
           this.data = []
           this.__fillData(this.data, records)
         })
diff --git a/platform/src/components/common/GlobalAlertWindow.vue b/platform/src/components/common/GlobalAlertWindow.vue
index 53b0597..74d06aa 100644
--- a/platform/src/components/common/GlobalAlertWindow.vue
+++ b/platform/src/components/common/GlobalAlertWindow.vue
@@ -1,5 +1,7 @@
+
 <template>
   <el-dialog
+    top="10vh"
     class="global-window"
     title="title"
     :visible="visible"
diff --git a/platform/src/components/common/GlobalQuestionWindow.vue b/platform/src/components/common/GlobalQuestionWindow.vue
deleted file mode 100644
index 40b7797..0000000
--- a/platform/src/components/common/GlobalQuestionWindow.vue
+++ /dev/null
@@ -1,137 +0,0 @@
-<template>
-  <el-dialog
-    class="global-window"
-    title="title"
-    :visible="visible"
-    :with-header="true"
-    :top="top"
-    :width="width"
-    :close-on-press-escape="false"
-    :wrapper-closable="false"
-    :append-to-body="true"
-    @close="close"
-  >
-    <div slot="title" style="min-height: 10px;" class="window__header">
-      {{title}}
-    </div>
-    <div class="window__body">
-      <slot></slot>
-    </div>
-    <div v-if="withFooter" class="window__footer">
-      <slot name="footer">
-        <el-button @click="confirm" :loading="confirmWorking" type="primary">纭畾</el-button>
-        <el-button @click="close">杩斿洖</el-button>
-      </slot>
-    </div>
-  </el-dialog>
-</template>
-
-<script>
-export default {
-  name: 'GlobalQuestionWindow',
-  props: {
-    width: {
-      type: String,
-      default: '40%'
-    },
-    top: {
-      type: String,
-      default: '15vh'
-    },
-    // 鏄惁鍖呭惈搴曢儴鎿嶄綔
-    withFooter: {
-      type: Boolean,
-      default: true
-    },
-    // 纭鎸夐挳loading鐘舵��
-    confirmWorking: {
-      type: Boolean,
-      default: false
-    },
-    // 鏍囬
-    title: {
-      type: String,
-      default: ''
-    },
-    // 鏄惁灞曠ず
-    visible: {
-      type: Boolean,
-      required: true
-    }
-  },
-  methods: {
-    confirm () {
-      // console.log(this.title);
-      // debugger
-      this.$emit('confirm')
-    },
-    close () {
-      // console.log(this.title);
-      // debugger
-      this.$emit('update:visible', false)
-    }
-  }
-}
-</script>
-
-<style scoped lang="scss">
-@import "@/assets/style/variables.scss";
-// 杈撳叆妗嗛珮搴�
-$input-height: 32px;
-::v-deep .el-dialog__header {
-  background-color: #f7f7f7;
-  font-weight: 500;
-  color: #222;
-}
-::v-deep .el-dialog__body {
-  padding: 30px 20px 0;
-  box-sizing: border-box;
-}
-
-.global-window {
-  // top: 80px !important;
-  // left: 218px !important;
-  // 澶撮儴鏍囬
-  ::v-deep .el-drawer__header {
-    padding: 0 10px 0 0;
-    line-height: 40px;
-    border-bottom: 1px solid #eee;
-    text-align: center;
-    width: 100%;
-  }
-  // 涓讳綋
-  ::v-deep .el-dialog__body {
-    display: flex;
-    flex-direction: column;
-    position: absolute;
-    top: 40px;
-    bottom: 0;
-    width: 100%;
-    height: calc(90vh - 52px);
-    overflow: hidden;
-    background-color: #f7f7f7;
-    // 鍐呭
-    .window__body {
-      width: 100%;
-      height: 100%;
-      overflow-y: auto;
-      // 鏍囩
-      .el-form-item__label {
-        float: none;
-      }
-      // 鍏冪礌瀹藉害涓�100%
-      .el-form-item__content > *{
-        width: 100%;
-      }
-    }
-    // 灏鹃儴
-    .window__footer {
-      user-select: none;
-      border-top: 1px solid #eee;
-      height: 60px;
-      line-height: 60px;
-      text-align: center;
-    }
-  }
-}
-</style>
diff --git a/platform/src/components/common/GlobalRigthWindow.vue b/platform/src/components/common/GlobalRigthWindow.vue
deleted file mode 100644
index 1e01639..0000000
--- a/platform/src/components/common/GlobalRigthWindow.vue
+++ /dev/null
@@ -1,137 +0,0 @@
-<template>
-  <el-drawer
-    class="global-window"
-    title="title"
-    :visible="visible"
-    :with-header="true"
-    :size="width"
-    :close-on-press-escape="false"
-    :wrapper-closable="false"
-    :append-to-body="true"
-    :modal="false"
-    @close="close"
-  >
-    <div slot="title" class="window__header">
-      <span class="header__btn-back" @click="close"><i class="el-icon-arrow-left"></i></span>{{title}}
-      <!-- {{title}} -->
-    </div>
-    <div class="window__body">
-      <slot></slot>
-    </div>
-    <div v-if="withFooter" class="window__footer">
-      <slot name="footer">
-        <el-button @click="confirm" :loading="confirmWorking" type="primary">纭畾</el-button>
-        <el-button @click="close">杩斿洖</el-button>
-      </slot>
-    </div>
-  </el-drawer>
-</template>
-
-<script>
-export default {
-  name: 'GlobalWindow',
-  props: {
-    width: {
-      type: String,
-      default: '100%'
-    },
-    // 鏄惁鍖呭惈搴曢儴鎿嶄綔
-    withFooter: {
-      type: Boolean,
-      default: true
-    },
-    // 纭鎸夐挳loading鐘舵��
-    confirmWorking: {
-      type: Boolean,
-      default: false
-    },
-    // 鏍囬
-    title: {
-      type: String,
-      default: ''
-    },
-    // 鏄惁灞曠ず
-    visible: {
-      type: Boolean,
-      required: true
-    }
-  },
-  methods: {
-    confirm () {
-      this.$emit('confirm')
-    },
-    close () {
-      this.$emit('update:visible', false)
-    }
-  }
-}
-</script>
-
-<style scoped lang="scss">
-@import "@/assets/style/variables.scss";
-// 杈撳叆妗嗛珮搴�
-$input-height: 32px;
-.global-window {
-  top: 80px !important;
-  left: 218px !important;
-  // 澶撮儴鏍囬
-  ::v-deep .el-drawer__header {
-    padding: 0 10px 0 0;
-    line-height: 40px;
-    border-bottom: 1px solid #eee;
-    // text-align: center;
-    font-weight: 500;
-    color: #222;
-    // 杩斿洖鎸夐挳
-    .header__btn-back {
-      display: inline-block;
-      width: 30px;
-      background: $primary-color;
-      color: #fff;
-      text-align: center;
-      margin-right: 12px;
-      border-right: 1px solid #eee;
-    }
-    .el-drawer__close-btn:focus {
-      outline: none;
-    }
-  }
-  // 涓讳綋
-  ::v-deep .el-drawer__body {
-    display: flex;
-    flex-direction: column;
-    position: absolute;
-    top: 40px;
-    bottom: 0;
-    width: 100%;
-    overflow: hidden;
-    // background-color: #f7f7f7;
-    // 鍐呭
-    .window__body {
-      // width: 1100px;
-      // margin: 0 auto;
-      // background-color: #fff;
-      width: 100%;
-      height: 100%;
-      overflow-y: auto;
-      padding: 0;
-      // 鏍囩
-      .el-form-item__label {
-        float: none;
-      }
-      // 鍏冪礌瀹藉害涓�100%
-      .el-form-item__content > *{
-        width: 100%;
-      }
-    }
-    // 灏鹃儴
-    .window__footer {
-      user-select: none;
-      border-top: 1px solid #eee;
-      height: 60px;
-      line-height: 60px;
-      text-align: center;
-    }
-  }
-}
-</style>
diff --git a/platform/src/components/common/GlobalWindow.vue b/platform/src/components/common/GlobalWindow.vue
index 7967500..56150c5 100644
--- a/platform/src/components/common/GlobalWindow.vue
+++ b/platform/src/components/common/GlobalWindow.vue
@@ -8,12 +8,10 @@
     :close-on-press-escape="false"
     :wrapper-closable="false"
     :append-to-body="true"
-    :modal="false"
     @close="close"
   >
     <div slot="title" class="window__header">
       <span class="header__btn-back" @click="close"><i class="el-icon-arrow-left"></i></span>{{title}}
-      <!-- {{title}} -->
     </div>
     <div class="window__body">
       <slot></slot>
@@ -21,7 +19,7 @@
     <div v-if="withFooter" class="window__footer">
       <slot name="footer">
         <el-button @click="confirm" :loading="confirmWorking" type="primary">纭畾</el-button>
-        <el-button @click="close">杩斿洖</el-button>
+        <el-button @click="close">鍙栨秷</el-button>
       </slot>
     </div>
   </el-drawer>
@@ -33,7 +31,7 @@
   props: {
     width: {
       type: String,
-      default: '100%'
+      default: '36%'
     },
     // 鏄惁鍖呭惈搴曢儴鎿嶄綔
     withFooter: {
@@ -72,16 +70,11 @@
 // 杈撳叆妗嗛珮搴�
 $input-height: 32px;
 .global-window {
-  top: 80px !important;
-  left: 218px !important;
   // 澶撮儴鏍囬
-  ::v-deep .el-drawer__header {
+  /deep/ .el-drawer__header {
     padding: 0 10px 0 0;
     line-height: 40px;
     border-bottom: 1px solid #eee;
-    // text-align: center;
-    font-weight: 500;
-    color: #222;
     // 杩斿洖鎸夐挳
     .header__btn-back {
       display: inline-block;
@@ -97,7 +90,7 @@
     }
   }
   // 涓讳綋
-  ::v-deep .el-drawer__body {
+  /deep/ .el-drawer__body {
     display: flex;
     flex-direction: column;
     position: absolute;
@@ -105,24 +98,12 @@
     bottom: 0;
     width: 100%;
     overflow: hidden;
-    // background-color: #f7f7f7;
     // 鍐呭
     .window__body {
-      // width: 1100px;
-      // margin: 0 auto;
-      // background-color: #fff;
-      width: 100%;
       height: 100%;
       overflow-y: auto;
       padding: 12px 16px;
-      // 鏍囩
-      // .el-form-item__label {
-      //   float: none;
-      // }
-      // 鍏冪礌瀹藉害涓�100%
-      .el-form-item__content > *{
-        width: 100%;
-      }
+      
     }
     // 灏鹃儴
     .window__footer {
diff --git a/platform/src/components/common/Header.vue b/platform/src/components/common/Header.vue
index 1800c40..7fec636 100644
--- a/platform/src/components/common/Header.vue
+++ b/platform/src/components/common/Header.vue
@@ -6,25 +6,149 @@
         <i class="el-icon-s-fold" v-else @click="switchCollapseMenu(null)"></i>
         {{title}}
       </h2>
-      <tagsview class="tags"></tagsview>
+      <div class="user">
+        <el-dropdown trigger="click">
+          <span class="el-dropdown-link">
+            <img v-if="userInfo != null" :src="userInfo.avatar == null ? '@/assets/images/avatar/man.png' : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i>
+          </span>
+          <el-dropdown-menu slot="dropdown">
+            <el-dropdown-item @click.native="changePwd">淇敼瀵嗙爜</el-dropdown-item>
+            <el-dropdown-item @click.native="logout">閫�鍑虹櫥褰�</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+      </div>
     </div>
+    <!-- 淇敼瀵嗙爜 -->
+    <GlobalWindow
+      title="淇敼瀵嗙爜"
+      :visible.sync="visible.changePwd"
+      @confirm="confirmChangePwd"
+      @close="visible.changePwd = false"
+    >
+      <el-form :model="changePwdData.form" ref="changePwdDataForm" :rules="changePwdData.rules">
+        <el-form-item label="鍘熷瀵嗙爜" prop="oldPwd" required>
+          <el-input v-model="changePwdData.form.oldPwd" type="password" placeholder="璇疯緭鍏ュ師濮嬪瘑鐮�" maxlength="30" show-password></el-input>
+        </el-form-item>
+        <el-form-item label="鏂板瘑鐮�" prop="newPwd" required>
+          <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜" maxlength="30" show-password></el-input>
+        </el-form-item>
+        <el-form-item label="纭鏂板瘑鐮�" prop="confirmPwd" required>
+          <el-input v-model="changePwdData.form.confirmPwd" type="password" placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜" maxlength="30" show-password></el-input>
+        </el-form-item>
+      </el-form>
+    </GlobalWindow>
   </div>
 </template>
 
 <script>
 import { mapState, mapMutations } from 'vuex'
-import tagsview from "./tagsview.vue"
+import GlobalWindow from './GlobalWindow'
+import { logout, updatePwd } from '@/api/system/common'
 export default {
   name: 'Header',
-  components: { tagsview },
+  components: { GlobalWindow },
+  data () {
+    return {
+      visible: {
+        // 淇敼瀵嗙爜
+        changePwd: false
+      },
+      isWorking: {
+        // 淇敼瀵嗙爜
+        changePwd: false
+      },
+      username: 'bob', // 鐢ㄦ埛鍚�
+      // 淇敼瀵嗙爜寮规
+      changePwdData: {
+        form: {
+          oldPwd: '',
+          newPwd: '',
+          confirmPwd: ''
+        },
+        rules: {
+          oldPwd: [
+            { required: true, message: '璇疯緭鍏ュ師濮嬪瘑鐮�' }
+          ],
+          newPwd: [
+            { required: true, message: '璇疯緭鍏ユ柊瀵嗙爜' }
+          ],
+          confirmPwd: [
+            { required: true, message: '璇峰啀娆¤緭鍏ユ柊瀵嗙爜' }
+          ]
+        }
+      }
+    }
+  },
   computed: {
-    ...mapState(['menuData']),
+    ...mapState(['menuData', 'userInfo']),
     title () {
       return this.$route.meta.title
     }
   },
+  filters: {
+    // 灞曠ず鍚嶇О
+    displayName (userInfo) {
+      if (userInfo == null) {
+        return ''
+      }
+      if (userInfo.realname != null && userInfo.realname.trim().length > 0) {
+        return userInfo.realname
+      }
+      return userInfo.username
+    }
+  },
   methods: {
-    ...mapMutations(['switchCollapseMenu']),
+    ...mapMutations(['setUserInfo', 'switchCollapseMenu']),
+    // 淇敼瀵嗙爜
+    changePwd () {
+      this.visible.changePwd = true
+      this.$nextTick(() => {
+        this.$refs.changePwdDataForm.resetFields()
+      })
+    },
+    // 纭畾淇敼瀵嗙爜
+    confirmChangePwd () {
+      if (this.isWorking.changePwd) {
+        return
+      }
+      this.$refs.changePwdDataForm.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        // 楠岃瘉涓ゆ瀵嗙爜杈撳叆鏄惁涓�鑷�
+        if (this.changePwdData.form.newPwd !== this.changePwdData.form.confirmPwd) {
+          this.$tip.warning('涓ゆ瀵嗙爜杈撳叆涓嶄竴鑷�')
+          return
+        }
+        // 鎵ц淇敼
+        this.isWorking.changePwd = true
+        updatePwd({
+          oldPwd: this.changePwdData.form.oldPwd,
+          newPwd: this.changePwdData.form.newPwd
+        })
+          .then(() => {
+            this.$tip.apiSuccess('淇敼鎴愬姛')
+            this.visible.changePwd = false
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking.changePwd = false
+          })
+      })
+    },
+    // 閫�鍑虹櫥褰�
+    logout () {
+      logout()
+        .then(() => {
+          this.setUserInfo(null)
+          this.$router.push({ name: 'login' })
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+    }
   }
 }
 </script>
@@ -37,23 +161,47 @@
   background: #fff;
   height: 100%;
   display: flex;
-  overflow: hidden;
   h2 {
+    width: 50%;
     flex-shrink: 0;
-    line-height: 48px;
-    width: 200px;
+    line-height: $header-height;
     font-size: 19px;
+    font-weight: 600;
     color: #606263;
-    font-weight: normal;
     display: inline;
     & > i {
       font-size: 20px;
       margin-right: 12px;
     }
   }
+  .user {
+    width: 50%;
+    flex-shrink: 0;
+    text-align: right;
+    .el-dropdown-link {
+      height: 100%;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
+    .el-dropdown {
+      top: 2px;
+      height: 100%;
+    }
+    img {
+      width: 32px;
+      position: relative;
+      // top: 10px;
+      margin-right: 10px;
+    }
+  }
 }
-// .tags {
-//     padding-bottom: 16px;
-//   }
-
+// 涓嬫媺鑿滃崟妗�
+.el-dropdown-menu {
+  width: 140px;
+  .el-dropdown-menu__item:hover {
+    background: #E3EDFB;
+    color: $primary-color;
+  }
+}
 </style>
diff --git a/platform/src/components/common/ImportButton.vue b/platform/src/components/common/ImportButton.vue
index 04510be..117dc3d 100644
--- a/platform/src/components/common/ImportButton.vue
+++ b/platform/src/components/common/ImportButton.vue
@@ -1,7 +1,7 @@
 <template>
   <div class="import-button">
     <el-button type="primary" @click="$refs.importWindow.open(text)">{{text}}</el-button>
-    <ImportWindow :action="action" :template-path="templatePath" :template-name="templateName" ref="importWindow" @download="$emit('download')" @success="handleSuccess"/>
+    <ImportWindow :action="action" :template-path="templatePath" :template-name="templateName" ref="importWindow" @success="handleSuccess"/>
   </div>
 </template>
 
diff --git a/platform/src/components/common/ImportWindow.vue b/platform/src/components/common/ImportWindow.vue
index 8e05ddb..45f714e 100644
--- a/platform/src/components/common/ImportWindow.vue
+++ b/platform/src/components/common/ImportWindow.vue
@@ -102,7 +102,7 @@
      */
     confirm () {
       if (this.form.file == null) {
-        this.$tip.warning('璇烽�夋嫨鏂囦欢')
+        this.$message.warning('璇烽�夋嫨鏂囦欢')
         return
       }
       this.isWorking = true
@@ -114,12 +114,12 @@
         }
       })
         .then(() => {
-          this.$tip.success('瀵煎叆鎴愬姛')
+          this.$message.success('瀵煎叆鎴愬姛')
           this.visible = false
           this.$emit('success')
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+          this.$message.error(e)
         })
         .finally(() => {
           this.isWorking = false
@@ -137,10 +137,11 @@
     downloadTemplate () {
       const link = document.createElement('a')
       link.setAttribute('download', this.templateName) //涓嬭浇鐨勬枃浠跺悕
-      console.log(`${window.location.origin}${process.env.VUE_APP_CONTEXT_PATH}${this.templatePath}`);
+      // console.log(`window.location.origin`, window.location.origin);
+      // console.log(`process.env.VUE_APP_CONTEXT_PATH`, process.env.VUE_APP_CONTEXT_PATH);
+      // console.log(`this.templatePath`, this.templatePath);
       link.href = `${window.location.origin}${process.env.VUE_APP_CONTEXT_PATH}${this.templatePath}`  //鏂囦欢url
       link.click()
-      // this.$emit('download')
     },
     /**
      * 鏂囦欢涓婁紶鍓嶅瓨鍌ㄤ笂浼犵殑鏂囦欢
diff --git a/platform/src/components/common/Light.vue b/platform/src/components/common/Light.vue
index 433a66a..3e18a29 100644
--- a/platform/src/components/common/Light.vue
+++ b/platform/src/components/common/Light.vue
@@ -28,16 +28,13 @@
 $cycle-size01: 16px;
 $cycle-size02: 6px;
 $normal-color: #00CC99;
-$shadow-color: #00CCa9;
 $warn-color: #FFCC33;
-$warn-shadow-color: #FFCbe3;
 $danger-color: #FF3300;
-$dange-shadowr-color: #FF3310;
 @mixin light-status ($cycle-bg) {
   em {
     background: $cycle-bg;
     i {
-      background: mix($cycle-bg,  #000030, 0.5);
+      background: $cycle-bg - 30;
     }
   }
 }
@@ -82,44 +79,44 @@
 }
 @keyframes shine-normal {
   0% {
-    box-shadow: 0 0 5px $shadow-color;
+    box-shadow: 0 0 5px $normal-color + 10;
   }
   25% {
-    box-shadow: 0 0 10px $shadow-color;
+    box-shadow: 0 0 10px $normal-color + 10;
   }
   50% {
-    box-shadow: 0 0 15px $shadow-color;
+    box-shadow: 0 0 15px $normal-color + 10;
   }
   100% {
-    box-shadow: 0 0 20px $shadow-color;
+    box-shadow: 0 0 20px $normal-color + 10;
   }
 }
 @keyframes shine-warn {
   0% {
-    box-shadow: 0 0 5px $warn-shadow-color;
+    box-shadow: 0 0 5px $warn-color - 50;
   }
   25% {
-    box-shadow: 0 0 10px $warn-shadow-color;
+    box-shadow: 0 0 10px $warn-color - 50;
   }
   50% {
-    box-shadow: 0 0 15px $warn-shadow-color;
+    box-shadow: 0 0 15px $warn-color - 50;
   }
   100% {
-    box-shadow: 0 0 20px $warn-shadow-color;
+    box-shadow: 0 0 20px $warn-color - 50;
   }
 }
 @keyframes shine-danger {
   0% {
-    box-shadow: 0 0 5px $dange-shadowr-color;
+    box-shadow: 0 0 5px $danger-color + 10;
   }
   25% {
-    box-shadow: 0 0 10px $dange-shadowr-color;
+    box-shadow: 0 0 10px $danger-color + 10;
   }
   50% {
-    box-shadow: 0 0 15px $dange-shadowr-color;
+    box-shadow: 0 0 15px $danger-color + 10;
   }
   100% {
-    box-shadow: 0 0 20px $dange-shadowr-color;
+    box-shadow: 0 0 20px $danger-color + 10;
   }
 }
 </style>
diff --git a/platform/src/components/common/Menu.vue b/platform/src/components/common/Menu.vue
index b928666..6411793 100644
--- a/platform/src/components/common/Menu.vue
+++ b/platform/src/components/common/Menu.vue
@@ -1,5 +1,9 @@
 <template>
   <div class="menu" :class="{collapse: menuData.collapse}">
+    <div class="logo">
+      <div><img src="@/assets/logo.png"></div>
+      <h1 :class="{ hidden: menuData.collapse }">浜戞槗淇濆鎴锋湇鍔$郴缁�</h1>
+    </div>
     <scrollbar>
       <el-menu
         ref="menu"
@@ -9,7 +13,6 @@
         :collapse="menuData.collapse"
         :default-openeds="defaultOpeneds"
         :collapse-transition="false"
-        unique-opened
         @select="handleSelect"
       >
         <MenuItems v-for="menu in menuData.list" :key="menu.index" :menu="menu" :is-root-menu="true"/>
@@ -36,17 +39,12 @@
       const menuConfig = this.__getMenuConfig(path, 'url', this.menuData.list)
       if (menuConfig == null) {
         return null
-      } else {
-        this.$store.commit("pushtags", menuConfig)
       }
-      // console.log(menuConfig.index);
       return menuConfig.index
     },
     // 榛樿灞曞紑鐨勮彍鍗昳ndex
     defaultOpeneds () {
-      // return this.menuData.list.map(menu => menu.index)
-      
-      return [this.menuData.list[0].index]
+      return this.menuData.list.map(menu => menu.index)
     }
   },
   methods: {
@@ -66,9 +64,7 @@
       if (menuConfig.url == null || menuConfig.url.trim().length === 0) {
         return
       }
-      
       this.$router.push(menuConfig.url)
-      this.$store.commit("pushtags", menuConfig)
     },
     // 鑾峰彇鑿滃崟閰嶇疆
     __getMenuConfig (value, key, menus) {
@@ -95,6 +91,37 @@
   height: 100%;
   display: flex;
   flex-direction: column;
+  // LOGO
+  .logo {
+    height: 60px;
+    flex-shrink: 0;
+    line-height: 60px;
+    overflow: hidden;
+    display: flex;
+    background: $primary-color - 20;
+    padding: 0 16px;
+    & > div {
+      width: 32px;
+      flex-shrink: 0;
+      margin-right: 12px;
+      img {
+        width: 100%;
+        flex-shrink: 0;
+        vertical-align: middle;
+        position: relative;
+        top: -2px;
+      }
+    }
+    h1 {
+      font-size: 16px;
+      font-weight: 500;
+      transition: opacity ease .3s;
+      overflow: hidden;
+      &.hidden {
+        opacity: 0;
+      }
+    }
+  }
 }
 </style>
 <style lang="scss">
@@ -108,11 +135,11 @@
     background: $primary-color;
     // 閫変腑鐘舵��
     &.is-active {
-      background: $primary-color-sel !important;
+      background: $primary-color - 40 !important;
     }
     // 鎮诞
     &:hover {
-      background-color: $primary-color-hover;
+      background-color: $primary-color - 12;
     }
     &:focus {
       background: $primary-color;
@@ -125,13 +152,13 @@
     }
     &.is-active {
       .el-submenu__title{
-        background-color: $icon-background-color;
+        background-color: $primary-color - 20;
       }
       .el-menu .el-menu-item{
-        background-color: $icon-background-color;
+        background-color: $primary-color - 20;
         // 鎮诞
         &:hover {
-          background-color: $icon-background-color;
+          background-color: $primary-color - 30;
         }
       }
     }
diff --git a/platform/src/components/common/MenuSelect.vue b/platform/src/components/common/MenuSelect.vue
index ea5f26c..2b2785e 100644
--- a/platform/src/components/common/MenuSelect.vue
+++ b/platform/src/components/common/MenuSelect.vue
@@ -31,6 +31,10 @@
     appendToBody: {
       default: false
     },
+    type: {
+      type: String|Number,
+      default: 0
+    },
     // 闇�琚帓闄ょ殑閮ㄩ棬ID
     excludeId: {}
   },
@@ -47,7 +51,7 @@
   methods: {
     // 鑾峰彇鎵�鏈夎彍鍗�
     fetchData () {
-      fetchTree()
+      fetchTree({}, this.type)
         .then(records => {
           this.data = []
           this.__fillData(this.data, records)
diff --git a/platform/src/components/common/Pagination.vue b/platform/src/components/common/Pagination.vue
index 86ea4d2..975a875 100644
--- a/platform/src/components/common/Pagination.vue
+++ b/platform/src/components/common/Pagination.vue
@@ -2,7 +2,7 @@
   <div class="table-pagination">
     <el-pagination
       :current-page="pagination.pageIndex"
-      :page-sizes="pagination.pageSizes||[10, 20, 30, 40]"
+      :page-sizes="[10, 20, 30, 40]"
       :page-size="pagination.pageSize"
       layout="total, sizes, prev, pager, next, jumper"
       :total="pagination.total"
diff --git a/platform/src/components/common/PositionSelect.vue b/platform/src/components/common/PositionSelect.vue
index 7ff6b2b..dd8c279 100644
--- a/platform/src/components/common/PositionSelect.vue
+++ b/platform/src/components/common/PositionSelect.vue
@@ -93,7 +93,7 @@
 }
 .vue-treeselect {
   line-height: 30px;
-  ::deep .vue-treeselect__control {
+  /deep/ .vue-treeselect__control {
     height: 32px;
     .vue-treeselect__single-value {
       line-height: 30px;
diff --git a/platform/src/components/common/RichEditor.vue b/platform/src/components/common/RichEditor.vue
deleted file mode 100644
index 4ac38b2..0000000
--- a/platform/src/components/common/RichEditor.vue
+++ /dev/null
@@ -1,158 +0,0 @@
-<template>
-  <div style="border: 1px solid #ccc;">
-    <Toolbar
-      style="border-bottom: 1px solid #ccc"
-      :editor="editor"
-      :defaultConfig="toolbarConfig"
-      :mode="mode"
-    />
-    <Editor
-      style="height: 300px; overflow-y: hidden;"
-      :value="content.content"
-      :mode="mode"
-      :defaultConfig="editorConfig"
-      @onCreated="onCreated"
-      @onChange="onChange"
-      @input="html=$event"
-    />
-  </div>
-</template>
-
-<script>
-import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
-export default {
-  name: 'RichEditor',
-  components: { Editor, Toolbar },
-  props: {
-    content: {
-      type: Object,
-      default: () => {}
-    }
-  },
-  data() {
-    return {
-      editor: null,
-      html: '<p><br></p>',
-      toolbarConfig: {
-        toolbarKeys: [
-          "headerSelect",
-          "blockquote",
-          "|",
-          "bold",
-          "underline",
-          "italic",
-          {
-              "key": "group-more-style",
-              "title": "鏇村",
-              "iconSvg": "<svg viewBox=\"0 0 1024 1024\"><path d=\"M204.8 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z\"></path><path d=\"M505.6 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z\"></path><path d=\"M806.4 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z\"></path></svg>",
-              "menuKeys": [
-                  "through",
-                  "code",
-                  "sup",
-                  "sub",
-                  "clearStyle"
-              ]
-          },
-          "color",
-          "bgColor",
-          "|",
-          "fontSize",
-          "fontFamily",
-          "lineHeight",
-          "|",
-          "bulletedList",
-          "numberedList",
-          "todo",
-          {
-              "key": "group-justify",
-              "title": "瀵归綈",
-              "iconSvg": "<svg viewBox=\"0 0 1024 1024\"><path d=\"M768 793.6v102.4H51.2v-102.4h716.8z m204.8-230.4v102.4H51.2v-102.4h921.6z m-204.8-230.4v102.4H51.2v-102.4h716.8zM972.8 102.4v102.4H51.2V102.4h921.6z\"></path></svg>",
-              "menuKeys": [
-                  "justifyLeft",
-                  "justifyRight",
-                  "justifyCenter",
-                  "justifyJustify"
-              ]
-          },
-          {
-              "key": "group-indent",
-              "title": "缂╄繘",
-              "iconSvg": "<svg viewBox=\"0 0 1024 1024\"><path d=\"M0 64h1024v128H0z m384 192h640v128H384z m0 192h640v128H384z m0 192h640v128H384zM0 832h1024v128H0z m0-128V320l256 192z\"></path></svg>",
-              "menuKeys": [
-                  "indent",
-                  "delIndent"
-              ]
-          },
-          // "|",
-          "emotion",
-          "insertLink",
-          {
-              "key": "group-image",
-              "title": "鍥剧墖",
-              "iconSvg": "<svg viewBox=\"0 0 1024 1024\"><path d=\"M959.877 128l0.123 0.123v767.775l-0.123 0.122H64.102l-0.122-0.122V128.123l0.122-0.123h895.775zM960 64H64C28.795 64 0 92.795 0 128v768c0 35.205 28.795 64 64 64h896c35.205 0 64-28.795 64-64V128c0-35.205-28.795-64-64-64zM832 288.01c0 53.023-42.988 96.01-96.01 96.01s-96.01-42.987-96.01-96.01S682.967 192 735.99 192 832 234.988 832 288.01zM896 832H128V704l224.01-384 256 320h64l224.01-192z\"></path></svg>",
-              "menuKeys": [
-                  "insertImage",
-                  "uploadImage"
-              ]
-          },
-          "insertTable",
-          "codeBlock",
-          "divider",
-          "|",
-          "undo",
-          "redo",
-          "|",
-          "fullScreen"
-        ]
-      },
-      editorConfig: {
-        placeholder: '璇疯緭鍏ュ唴瀹�...',
-        MENU_CONF: {
-          uploadImage: {
-            // server: '/api/upload',
-            name: 'file',
-            server: process.env.VUE_APP_API_PREFIX + '/public/uploadLocal',
-            meta: {
-              folder: 'shop'
-            },
-            onBeforeUpload(file) {    // JS 璇硶
-              // file 閫変腑鐨勬枃浠讹紝鏍煎紡濡� { key: file }
-              // debugger
-              return file
-            },
-            onSuccess(file, res) {
-                console.log(`${file.name} 涓婁紶鎴愬姛`, res)
-            },
-            onError(file, err, res) {
-              console.log(`${file.name} 涓婁紶鍑洪敊`, err, res)
-            },
-          },
-
-        }
-      },
-      mode: 'default', // or 'simple'
-    }
-  },
-  beforeDestroy() {
-    const editor = this.editor
-    if (editor == null) return
-    editor.destroy() // 缁勪欢閿�姣佹椂锛屽強鏃堕攢姣佺紪杈戝櫒
-  },
-  methods: {
-    onCreated (editor) {
-      this.editor = Object.seal(editor)
-    },
-    onChange (editor) {
-      console.log(this.html);
-      // debugger
-      if (!this.html||this.content.content==this.html) {
-        return
-      }
-      this.$emit('edit', this.html)
-    },
-  },
-
-}
-</script>
-
-<style src="@wangeditor/editor/dist/css/style.css"></style>
diff --git a/platform/src/components/common/SearchFormCollapse.vue b/platform/src/components/common/SearchFormCollapse.vue
index 5e602b8..0c1dcbf 100644
--- a/platform/src/components/common/SearchFormCollapse.vue
+++ b/platform/src/components/common/SearchFormCollapse.vue
@@ -31,7 +31,7 @@
     height: 50px;
     overflow: hidden;
     padding-right: 250px;
-    ::v-deep section {
+    /deep/ section {
       position: absolute;
       top: 0;
       right: 100px;
diff --git a/platform/src/components/common/ShowRich.vue b/platform/src/components/common/ShowRich.vue
deleted file mode 100644
index 7a7c9d9..0000000
--- a/platform/src/components/common/ShowRich.vue
+++ /dev/null
@@ -1,42 +0,0 @@
-<template>
-  <GlobalAlertWindow
-    :title="title"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
-  >
-    <Editor v-if="form.content" v-model="form.content" :defaultConfig="{ readOnly : true }" />
-    <div slot="footer"></div>
-  </GlobalAlertWindow>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
-import { Editor } from '@wangeditor/editor-for-vue'
-export default {
-  name: 'ShowRich',
-  extends: BaseOpera,
-  components: { GlobalAlertWindow, Editor },
-  data () {
-    return {
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        content: ''
-      },
-      // 楠岃瘉瑙勫垯
-      rules: {
-      }
-    }
-  },
-  created () {
-    this.config({
-      api: '/business/areas',
-      'field.id': 'id'
-    })
-  },
-  methods: {
-   
-  },
-}
-</script>
diff --git a/platform/src/components/common/Tree.vue b/platform/src/components/common/Tree.vue
deleted file mode 100644
index 432a1a6..0000000
--- a/platform/src/components/common/Tree.vue
+++ /dev/null
@@ -1,135 +0,0 @@
-<template>
-    <div class="tree">
-        <div v-for="(item, index) of list" :key="index" @click.stop="clickIten(item)">
-            <div class="tree_item">
-                <i class="el-icon-caret-bottom" :class="{ 'activeColor': item[defaultProps.status] }" v-show="item[defaultProps.status] && item[defaultProps.children]"></i>
-                <i class="el-icon-caret-right color" v-show="item[defaultProps.children] && !item[defaultProps.status]"></i>
-                <div class="tree_item_label long-title-style" :title="item[defaultProps.name]" :class="{ 'activeColor': item[defaultProps.status] && !item[defaultProps.children] }">{{ item[defaultProps.name] }}</div>
-            </div>
-            <div class="tree_childern" v-show="item[defaultProps.status]">
-                <tree
-                  :list="item[defaultProps.children]"
-                  :defaultProps="defaultProps"
-                  @callback="callback"
-                />
-                 <!-- @callback="callback" -->
-            </div>
-        </div>
-    </div>
-</template>
-
-<script>
-// import Bus from '@/utils/eventBus'
-export default {
-  name: 'tree',
-  props: {
-    list: {
-      type: Array,
-      required: false,
-      default: () => []
-    },
-    defaultProps: {
-      type: Object,
-      require: false,
-      default: () => {
-        return {
-          name: 'name',
-          status: 'status',
-          children: 'children',
-          id: 'id'
-        }
-      }
-    }
-  },
-  data() {
-    return {
-      tempItem: {
-        id: null,
-        name: null
-      }
-    }
-  },
-  methods: {
-    // 鐐瑰嚮褰撳墠椤�
-    clickIten (item) {
-      item[this.defaultProps.status] = !item[this.defaultProps.status]
-      this.list.forEach(subItem => {
-        if ((subItem[this.defaultProps.id] !== item[this.defaultProps.id] && subItem[this.defaultProps.status]) || (this.list.length === 1 && subItem[this.defaultProps.status] === false)) {
-          subItem[this.defaultProps.status] = false
-          if (subItem[this.defaultProps.children]) {
-            this.recursion(subItem[this.defaultProps.children])
-          }
-        }
-      })
-      if (this.tempItem['id'] === item[this.defaultProps.id]) {
-        this.tempItem = {
-          id: null,
-          name: null
-        }
-      } else {
-        this.tempItem.id = item[this.defaultProps.id]
-        this.tempItem.name = item[this.defaultProps.name]
-      }
-    
-      this.$emit('callback', this.tempItem, item)
-    },
-    // 閫掑綊鏂规硶
-    recursion (children) {
-      children.forEach(item => {
-        item[this.defaultProps.status] = false
-        if (item[this.defaultProps.children]) {
-          this.recursion(item[this.defaultProps.children])
-        }
-      })
-    },
-    callback (data, item) {
-      if (this.tempItem.id === data.id) {
-        this.tempItem = {}
-      } else {
-        this.tempItem.id = data.id
-        this.tempItem.name = data.name
-      }
-      this.$emit('callback', this.tempItem, item)
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.tree {
-    /*width: 100%;*/
-    /*height: auto;*/
-    /*border-radius: 5px;*/
-    /*overflow: hidden;*/
-    /*border: 1px solid #eeeeee;*/
-    /*box-sizing: border-box;*/
-    .tree_childern {
-        margin-left: 20px;
-    }
-    .activeItem {
-        background: #F4F7FC;
-    }
-    .tree_item {
-        display: flex;
-        align-items: center;
-        height: 48px;
-        cursor: pointer;
-        padding-left: 10px;
-        .tree_item_label {
-            font-size: 14px;
-            font-weight: 400;
-            color: #333333;
-            white-space: nowrap;
-        }
-        i {
-            margin-right: 5px;
-        }
-        .color {
-            color: #999999 !important;
-        }
-        .activeColor {
-            color: #305ED5 !important;
-        }
-    }
-}
-</style>
diff --git a/platform/src/components/common/TreeSelect.vue b/platform/src/components/common/TreeSelect.vue
index d9cf2e6..fc2efdf 100644
--- a/platform/src/components/common/TreeSelect.vue
+++ b/platform/src/components/common/TreeSelect.vue
@@ -57,7 +57,7 @@
   }
   .vue-treeselect {
     line-height: 30px;
-    ::v-deep .vue-treeselect__control {
+    /deep/ .vue-treeselect__control {
       height: 32px;
       .vue-treeselect__single-value {
         line-height: 30px;
diff --git a/platform/src/components/common/UploadAvatarImage.vue b/platform/src/components/common/UploadAvatarImage.vue
index 6347a83..c19e154 100644
--- a/platform/src/components/common/UploadAvatarImage.vue
+++ b/platform/src/components/common/UploadAvatarImage.vue
@@ -1,8 +1,6 @@
 <template>
   <div>
     <el-upload
-      class="avatar-uploader"
-      accept=".png,.jpg"
       :style="customStyle"
       :action="uploadImgUrl"
       :data="uploadData"
@@ -17,7 +15,7 @@
       </div>
     </el-upload>
   </div>
-
+  
 </template>
 
 <script>
@@ -27,19 +25,25 @@
       type: Object,
       default: () => {}
     },
+    uploadData: Object,
     tipsLabel: '',
     customStyle: {
       type: String,
       default: 'width: 90px; height: 90px;'
-    },
-    uploadData: Object
+    }
   },
   data() {
     return {
-      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload'
+      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload',
+      // uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/uploadPicture',
+      // uploadData: {
+      //   folder: 'upload',
+      //   type: 'image'
+      // },
+      imgurlfull: ''
     }
   },
-
+  
   methods: {
     // 涓婁紶鍥剧墖
     handleAvatarSuccess(res, file) {
@@ -47,55 +51,46 @@
         let { data } = res
         this.file.imgurl = data.imgaddr;
         this.file.imgurlfull = data.url;
+        console.log(this.file);
         this.$message.success('涓婁紶鎴愬姛')
-        this.$emit('uploadSuccess', { imgurl: data.imgaddr, imgurlfull: data.url, name: data.originname })
+        this.$emit('uploadSuccess', { imgurl: data.imgaddr, imgurlfull: data.url })
       } else {
-        this.$tip.apiFailed('涓婁紶澶辫触')
+        this.$message.error('涓婁紶澶辫触')
       }
       this.$emit('uploadEnd')
     },
     uploadError() {
-      this.$tip.apiFailed('涓婁紶澶辫触')
+      this.$message.error('涓婁紶澶辫触')
       this.$emit('endUpload')
     },
     // // 鎷︽埅
     beforeAvatarUpload(file) {
       this.$emit('uploadBegin')
-      return true
-    }
-  }
+      return true;
+    },
+  },
 }
 </script>
 
 <style lang="scss" scoped>
 $image-width: 100px;
-.avatar-uploader {
-  width: $image-width;
-  height: $image-width;
-}
 ::v-deep .el-upload {
   border: 1px dashed #d9d9d9;
   border-radius: 6px;
   cursor: pointer;
   position: relative;
-  width: $image-width;
-  height: $image-width;
   overflow: hidden;
 }
 .avatar-uploader .el-upload:hover {
   border-color: #409EFF;
 }
 .avatar-uploader-icon {
-  line-height: 90px;
   font-size: 28px;
   color: #8c939d;
-  width: $image-width;
-  height: $image-width;
+  line-height: 90px;
   text-align: center;
 }
 .avatar {
-  width: $image-width;
-  height: $image-width;
   display: block;
 }
 .tips-style {
@@ -104,25 +99,6 @@
   font-weight: 400;
   color: #999999;
   line-height: 13px;
-}
-</style>
-<style lang="scss" scoped>
-::v-deep .el-upload--picture-card{
-  width: 90px !important;
-  height: 90px !important;
-}
-::v-deep .el-upload-list__item {
-  width: 90px !important;
-  height: 90px !important;
-}
-.icon {
-  -webkit-transform: translate(-50%,-50%);
-  -ms-transform: translate(-50%,-50%);
-  transform: translate(0%, -85%);
-}
-::v-deep .el-upload-list__item {
-  width: 90px !important;
-  height: 90px !important;
 }
 </style>
 
diff --git a/platform/src/components/common/UploadImage.vue b/platform/src/components/common/UploadImage.vue
index 67ccb8a..2327a37 100644
--- a/platform/src/components/common/UploadImage.vue
+++ b/platform/src/components/common/UploadImage.vue
@@ -59,7 +59,7 @@
   },
   data() {
     return {
-      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/uploadLocal',
+      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload',
       
       realList: [],
       srcList: [],
@@ -70,7 +70,6 @@
   watch: {
     fileList: {
       handler(val) {
-        console.log(val);
         if (val.length==0) {
           this.realList = []
           this.srcList = []
@@ -121,8 +120,8 @@
       this.showViewer = false
     },
     handleRemove(file) {
-      console.log(this.fileList);
-      let tempIndex = this.realList.findIndex(item => item.url === file.url)
+      console.log(file.url);
+      let tempIndex = this.fileList.findIndex(item => item.url === file.url)
       // debugger
       this.realList.splice(tempIndex, 1)
       this.fileList.splice(tempIndex, 1)
diff --git a/platform/src/components/common/myImage.vue b/platform/src/components/common/myImage.vue
deleted file mode 100644
index a159f20..0000000
--- a/platform/src/components/common/myImage.vue
+++ /dev/null
@@ -1,84 +0,0 @@
-<template>
-  <div>
-    {{ src }}
-    <img
-      class="el-upload-list__item-thumbnail"
-      :src="src" alt=""
-      :style="`width: ${width}px;height: ${height}px;`"
-      @click="handlePictureCardPreview()"
-    >
-    <el-image-viewer 
-      v-if="showViewer" 
-      :on-close="closeViewer"
-      :initialIndex="tempIndex"
-      :url-list="previewSrcList"
-      :z-index="3000"
-    />
-  </div>
-  
-</template>
-
-<script>
-import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
-export default {
-  components: {
-    ElImageViewer
-  },
-  props: {
-    src: {
-      type: String,
-      default: ''
-    },
-    width: {
-      type: Number,
-      default: 100
-    },
-    height: {
-      type: Number,
-      default: 100
-    },
-    previewSrcList: {
-      type: Array,
-      default: () => []
-    }
-  },
-  data() {
-    return {
-      tempIndex: 0,
-      showViewer: false,
-    }
-  },
-
-  methods: {
-    handlePictureCardPreview() {
-      console.log(this.src);
-      this.tempIndex = this.srcList.findIndex(item => item == this.src )
-      this.showViewer = true
-    },
-    closeViewer() {
-      this.showViewer = false
-    },
-  },
-}
-</script>
-
-<style lang="scss" scoped>
-::v-deep .el-upload--picture-card{
-  width: 90px !important;
-  height: 90px !important;
-}
-::v-deep .el-upload-list__item {
-  width: 90px !important;
-  height: 90px !important;
-}
-.icon {
-  -webkit-transform: translate(-50%,-50%);
-  -ms-transform: translate(-50%,-50%);
-  transform: translate(0%, -85%);
-}
-::v-deep .el-upload-list__item {
-  width: 90px !important;
-  height: 90px !important;
-}
-</style>
-
diff --git a/platform/src/components/common/tagsview.vue b/platform/src/components/common/tagsview.vue
deleted file mode 100644
index c5afffa..0000000
--- a/platform/src/components/common/tagsview.vue
+++ /dev/null
@@ -1,261 +0,0 @@
-<template>
-  <div class="tags-view-style" style="display:flex; overflow-x: scroll;">
-    <i class="el-icon-arrow-left btn" v-if="leftStatus" :class="leftStatus?'nor-btn':'ban-btn'" @click="scrollToStart()"></i>
-    <div id="tags-box" ref="tags">
-      <div
-        v-for="(item, index) in tags"
-        :key="index"
-        :id="'tags-box-' + index"
-        @contextmenu.prevent="openMenu(item,$event)"
-        :class="isActive(item.url,index)?'active':''"
-        class="tagsview"
-        @click="tagsmenu(item, index)"
-      >
-        {{ item.label }}
-        <!-- 杩欎釜鍦版柟涓�瀹氳click鍔犱釜stop闃绘锛屼笉鐒朵細鍥犱负浜嬩欢鍐掓场涓�鐩磋Е鍙戠埗鍏冪礌鐨勭偣鍑讳簨浠讹紝鏃犳硶璺宠浆鍙︿竴涓矾鐢� -->
-        <span v-if="tags.length > 1" class="el-icon-close tagsicon" @click.stop="handleClose(item,index)"></span>
-        <!-- <ul v-show="visible" class="contextmenu" :style="{left:left+'px',top:top+'px'}">
-          <li @click.stop="rightClose()">鍏抽棴</li>
-          <li @click.stop="cleartags($route.path)">鍏抽棴鍏朵粬</li>
-        </ul> -->
-      </div>
-    </div>
-    <i class="el-icon-arrow-right btn" v-if="rightStatus"  :class="rightStatus?'nor-btn':'ban-btn'" @click="scrollToEnd()"></i>
-  </div>
-</template>
-
-<script>
-//杩欎釜灏辨槸瀵煎叆vuex鐨勬暟鎹紝閰嶅悎涓嬮潰...map鐢�
-import { mapState, mapMutations } from "vuex";
-export default {
-  data() {
-    return {
-      //鍙抽敭鑿滃崟闅愯棌瀵瑰簲甯冨皵鍊�
-      visible: false,
-      //鍙抽敭鑿滃崟瀵瑰簲浣嶇疆
-      top: 0,
-      left: 0,
-      leftStatus: false,
-      rightStatus: false,
-    }
-  },
-  computed: {
-    //寮曞叆vuex涓璼tate涓殑tags鏁版嵁锛屼竴鏍穞his璋冪敤灏辫
-    ...mapState(["tags"]),
-  },
-  watch:{
-    //鐩戝惉鍙抽敭鑿滃崟鐨勫�兼槸鍚︿负true锛屽鏋滄槸灏卞垱寤哄叏灞�鐩戝惉鐐瑰嚮浜嬩欢锛岃Е鍙慶loseMenu浜嬩欢闅愯棌鑿滃崟锛屽鏋滄槸false灏卞垹闄ょ洃鍚�
-    visible(value) {
-      if (value) {
-        document.body.addEventListener('click', this.closeMenu)
-      } else {
-        document.body.removeEventListener('click', this.closeMenu)
-      }
-    },
-    $route(to,from){
-      this.tags.forEach((item, index) => {
-        if (item.url === to.path) {
-          let tagsDiv = document.getElementById('tags-box')
-          if (index) {
-            tagsDiv.scrollTo(index * 110, 0)
-          } else {
-            tagsDiv.scrollTo(0, 0)
-          }
-        }
-      })
-    }
-
-  },
-  mounted() {
-    this.$refs.tags.addEventListener('scroll', e => {
-      
-      if (this.$refs.tags.scrollLeft > 0) {
-        this.leftStatus = true
-      } else {
-        this.leftStatus = false
-      }
-      if (this.$refs.tags.scrollLeft + this.$refs.tags.clientWidth < this.$refs.tags.scrollWidth) {
-       this.rightStatus = true
-      } else {
-        this.rightStatus = false
-      }
-
-    }, false)
-  },
-  methods: {
-    //寮曞叆vuex涓璵utation鏂规硶锛屽彲浠ョ洿鎺his.xxx璋冪敤浠�
-    ...mapMutations(["closeTab", "cleartagsview"]),
-    //鐐瑰嚮鍙夊弶鍒犻櫎鐨勪簨浠�
-    rightClose() {
-      this.visible = false
-      if (this.tags.length == 1) {
-        return
-      }
-      let index = this.tags.indexOf(this.selectedTag)
-      this.handleClose(this.selectedTag, index)
-    },
-    handleClose(item, index) {
-      if (this.tags.length == 1) {
-        return
-      }
-      //鍏堟妸闀垮害淇濆瓨涓嬫潵鍚庨潰鐢ㄦ潵姣旇緝鍋氬垽鏂潯浠�
-      let length = this.tags.length - 1;
-      //vuex璋冩柟娉�,涓婇潰...map寮曞叆鐨剉uex鏂规硶锛屼笉浼氳繖绉嶆柟娉曠殑鐪媣ue瀹樼綉鏂囨。
-      this.closeTab(item);
-      // 濡傛灉鍏抽棴鐨勬爣绛句笉鏄綋鍓嶈矾鐢辩殑璇濓紝灏变笉璺宠浆
-      if (item.url !== this.$route.path) {
-        return;
-      }
-      // 鍒ゆ柇锛氬鏋渋ndex鍜宭ength鏄竴鏍风殑锛岄偅灏变唬琛ㄩ兘鏄竴鏍风殑闀垮害锛屽氨鏄渶鍚庝竴浣嶏紝閭e氨寰�宸﹁烦杞竴涓�
-      if (index === length) {
-        //鍐嶅垽鏂細濡傛灉length=0锛屼篃灏辨槸璇翠綘鍒犲畬浜嗘墍鏈夋爣绛�
-        if (length === 0) {
-          //閭d箞鍐嶅垽鏂細濡傛灉褰撳墠璺敱涓嶇瓑浜巌ndex锛屼篃灏辨槸鎴戦椤电殑璺敱
-          if (this.$route.path !== "/index") {
-            //閭d箞灏辫烦杞椤点�傝繖涓�姝ョ殑鎰忔�濇槸锛氬鏋滃垹闄ょ殑鏈�鍚庝竴涓爣绛句笉鏄椤靛氨缁熶竴璺宠浆棣栭〉锛屽鏋滀綘鍒犻櫎鐨勬渶鍚庝竴涓爣绛炬槸棣栭〉鏍囩锛屽凡缁忓湪杩欎釜棣栭〉璺敱涓婁簡锛屼綘杩樿烦涓粈涔堝憿銆傝繖涓嶉噸澶嶆搷浣滀簡鍚椼��
-            this.$router.push({ path: "/index" });
-          }
-        } else {
-          //閭d箞锛屽鏋滀笂闈㈢殑鏉′欢閮戒笉鎴愮珛锛屾病鏈塴ength=0.涔熷氨鏄浣犺繕鏈夊ソ鍑犱釜鏍囩锛屽苟涓斾綘鍒犻櫎鐨勬槸鏈�鍚庝竴浣嶆爣绛撅紝閭d箞灏卞線宸﹁竟鎸竴浣嶈烦杞矾鐢�
-          this.$router.push({ path: this.tags[index - 1].url });
-        }
-      } else {
-        // 濡傛灉浣犵偣鍑讳笉鏄渶鍚庝竴浣嶆爣绛撅紝鐐圭殑鍓嶉潰鐨勶紝閭e氨寰�鍙宠竟璺宠浆
-        this.$router.push({ path: this.tags[index].url });
-      }
-    },
-    //鐐瑰嚮璺宠浆璺敱
-    tagsmenu(item, index) {
-      console.log('tagsmenu');
-      //鍒ゆ柇锛氬綋鍓嶈矾鐢变笉绛変簬褰撳墠閫変腑椤圭殑url锛屼篃灏变唬琛ㄤ綘鐐瑰嚮鐨勪笉鏄幇鍦ㄩ�変腑鐨勬爣绛撅紝鏄彟涓�涓爣绛惧氨璺宠浆杩囧幓锛屽鏋滀綘鐐瑰嚮鐨勬槸鐜板湪宸茬粡閫変腑鐨勬爣绛惧氨涓嶇敤璺宠浆浜嗭紝鍥犱负浣犲凡缁忓湪杩欎釜璺敱浜嗚繕璺充粈涔堝憿銆�
-      if (this.$route.path !== item.url) {
-        //鐢╬ath鐨勮烦杞柟娉曟妸褰撳墠椤圭殑url褰撲綔鍦板潃璺宠浆銆�
-        this.$router.push({ path: item.url });
-        let tagsDiv = document.getElementById('tags-box')
-        if (index) {
-          tagsDiv.scrollTo(index * 110, 0)
-        }
-      }
-    },
-    //閫氳繃鍒ゆ柇璺敱涓�鑷磋繑鍥炲竷灏斿�兼坊鍔燾lass锛屾坊鍔犻珮浜晥鏋�
-    isActive(route, index) {
-      let res = route === this.$route.path
-      return res
-    },
-    scrollToStart() {
-
-      let tagsDiv = document.getElementById('tags-box')
-      tagsDiv.scrollTo(0, 0)
-    }, 
-    scrollToEnd() {
-      let tagsDiv = document.getElementById('tags-box')
-      tagsDiv.scrollTo(tagsDiv.scrollWidth, 0)
-    },
-    //鍙抽敭浜嬩欢锛屾樉绀哄彸閿彍鍗曪紝骞跺浐瀹氬ソ浣嶇疆銆�
-    openMenu(tag, e) {
-      this.visible = true
-      this.selectedTag = tag
-      const offsetLeft = this.$el.getBoundingClientRect().left
-      console.log(tag, e);
-      this.left = e.clientX - offsetLeft + 60  //鍙抽敭鑿滃崟璺濈宸﹁竟鐨勮窛绂�
-      this.top = e.clientY +20  //鍙抽敭鑿滃崟璺濈涓婇潰鐨勮窛绂�           杩欎袱涓彲浠ユ洿鏀癸紝鐪嬬湅鑷繁鐨勫彸閿彍鍗曞湪浠�涔堜綅缃紝鑷繁璋�
-    },
-    //闅愯棌鍙抽敭鑿滃崟
-    closeMenu() {
-      this.visible = false
-    },
-    //鍙抽敭鑿滃崟鍏抽棴鎵�鏈夐�夐」锛岃Е鍙憊uex涓殑鏂规硶锛屾妸褰撳墠璺敱褰撳弬鏁颁紶杩囧幓鐢ㄤ簬鍒ゆ柇
-    cleartags(val){
-      this.visible = false
-      this.cleartagsview(val)
-    }
-  },
-};
-</script>
-
-<style lang="scss" scoped>
-.btn {
-  font-size: 20px;
-  line-height: 48px;
-  height: 48px;
-}
-.nor-btn {
-  color: #666;
-  cursor: pointer;
-  &:hover {
-    color: #2E68EC;
-  }
-}
-
-.ban-btn {
-  color: #999;
-  cursor:not-allowed
-}
-
-#tags-box {
-  overflow-x: hidden;
-  white-space: nowrap;
-  flex: 1;
-  // width: 240px;
-  scrollbar-width: none; /* firefox */
-  -ms-overflow-style: none; /* IE 10+ */
-  &::-webkit-scrollbar {
-      display: none; /* Chrome Safari */
-    }
-}
-#tags-box::-webkit-scrollbar {
-    display: none; /* Chrome Safari */
-}
-//鏍囩瀵艰埅鏍峰紡
-.tagsview {
-  cursor: pointer;
-  // margin-left: 4px;
-  height: 48px;
-  line-height: 48px;
-  padding: 0 8px 0 24px;
-  // border: 1px solid #d8dce5;
-  // border-radius: 5px;
-  color: #000;
-  font-size: 14px;
-  display: inline-block;
-
-}
-//鍙夊彿榧犳爣缁忚繃鏍峰紡
-.tagsicon:hover{
-  color: #f56c6c;
-}
-//鏍囩楂樹寒
-.active{
-  color: #2E68EC;
-  border-bottom: 2px solid #2E68EC;
-}
-//鍙抽敭鑿滃崟鏍峰紡
-.contextmenu {
-  margin: 0;
-  background: #fff;
-  z-index: 100;
-  position: absolute;
-  list-style-type: none;
-  padding: 5px 0;
-  border-radius: 4px;
-  font-size: 12px;
-  font-weight: 400;
-  color: #333;
-  box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);
-  li {
-    margin: 0;
-    padding: 7px 16px;
-    cursor: pointer;
-    &:hover {
-      background: #eee;
-    }
-  }
-}
-.tags-view-style {
-  scrollbar-width: none; /* firefox */
-  -ms-overflow-style: none; /* IE 10+ */
-  &::-webkit-scrollbar {
-    display: none; /* Chrome Safari */
-  }
-}
-</style>
diff --git a/platform/src/components/system/menu/OperaMenuWindow.vue b/platform/src/components/system/menu/OperaMenuWindow.vue
index ce5645a..2cb4691 100644
--- a/platform/src/components/system/menu/OperaMenuWindow.vue
+++ b/platform/src/components/system/menu/OperaMenuWindow.vue
@@ -9,7 +9,7 @@
     <p class="tip" v-if="form.parent != null && form.id == null">涓� <em>{{parentName}}</em> 鏂板缓瀛愯彍鍗�</p>
     <el-form :model="form" ref="form" :rules="rules">
       <el-form-item label="涓婄骇鑿滃崟" prop="parentId">
-        <MenuSelect v-if="visible" v-model="form.parentId" placeholder="璇烽�夋嫨涓婄骇鑿滃崟" :exclude-id="excludeMenuId" clearable :inline="false"/>
+        <MenuSelect v-if="visible" v-model="form.parentId" :type="type" placeholder="璇烽�夋嫨涓婄骇鑿滃崟" :exclude-id="excludeMenuId" clearable :inline="false"/>
       </el-form-item>
       <el-form-item label="鑿滃崟鍚嶇О" prop="name" required>
         <el-input v-model="form.name" placeholder="璇疯緭鍏ヨ彍鍗曞悕绉�" v-trim maxlength="50"/>
@@ -40,6 +40,12 @@
   name: 'OperaMenuWindow',
   extends: BaseOpera,
   components: { MenuSelect, GlobalWindow },
+  props: {
+    type: {
+      type: String|Number,
+      default: 0
+    }
+  },
   data () {
     return {
       icons,
@@ -54,8 +60,8 @@
         name: '',
         path: '',
         icon: '',
-        remark: '',
-        type: ''
+        type: '',
+        remark: ''
       },
       // 楠岃瘉瑙勫垯
       rules: {
@@ -79,8 +85,8 @@
         this.excludeMenuId = null
         this.$nextTick(() => {
           this.$refs.form.resetFields()
+          this.form.type = this.type
           this.form.id = null
-          this.form.type = parent.type
           this.form.parentId = parent == null ? null : parent.id
           this.parentName = parent == null ? null : parent.name
         })
diff --git a/platform/src/components/system/role/MenuConfigWindow.vue b/platform/src/components/system/role/MenuConfigWindow.vue
index 21229fe..ea3f39f 100644
--- a/platform/src/components/system/role/MenuConfigWindow.vue
+++ b/platform/src/components/system/role/MenuConfigWindow.vue
@@ -45,8 +45,8 @@
     /**
      * @role 瑙掕壊瀵硅薄
      */
-    open (role) {
-      fetchMenuList({})
+    open (role, type=0) {
+      fetchMenuList({}, type)
         .then(records => {
           this.role = role
           this.menus = records
diff --git a/platform/src/components/system/role/OperaRoleWindow.vue b/platform/src/components/system/role/OperaRoleWindow.vue
index 03fce75..2c83918 100644
--- a/platform/src/components/system/role/OperaRoleWindow.vue
+++ b/platform/src/components/system/role/OperaRoleWindow.vue
@@ -35,7 +35,8 @@
         id: null,
         code: '',
         name: '',
-        remark: ''
+        remark: '',
+        type: '',
       },
       // 楠岃瘉瑙勫垯
       rules: {
@@ -49,13 +50,14 @@
     }
   },
   methods: {
-    open (title, target) {
+    open (title, target, type) {
       this.title = title
       this.visible = true
       // 鏂板缓
       if (target == null) {
         this.$nextTick(() => {
           this.$refs.form.resetFields()
+          this.form.type = type
           this.form[this.configData['field.id']] = null
         })
         return
@@ -66,6 +68,7 @@
         for (const key in this.form) {
           this.form[key] = target[key]
         }
+        this.form.type = type
       })
     },
     confirm () {
diff --git a/platform/src/components/system/role/PermissionConfigWindow.vue b/platform/src/components/system/role/PermissionConfigWindow.vue
index 17476a0..c03c258 100644
--- a/platform/src/components/system/role/PermissionConfigWindow.vue
+++ b/platform/src/components/system/role/PermissionConfigWindow.vue
@@ -26,7 +26,7 @@
 <script>
 import GlobalWindow from '@/components/common/GlobalWindow'
 import { createRolePermission } from '@/api/system/role'
-import { fetchAll } from '@/api/system/permission'
+import { fetchAll, fetchAllCom } from '@/api/system/permission'
 export default {
   name: 'PermissionConfigWindow',
   components: { GlobalWindow },
@@ -46,12 +46,14 @@
     /**
      * @role 瑙掕壊瀵硅薄
      */
-    open (role) {
+    open (role, type=0) {
+      debugger
       if (this.$refs.permissionTransfer) {
         this.$refs.permissionTransfer.clearQuery('left')
         this.$refs.permissionTransfer.clearQuery('right')
       }
-      fetchAll()
+      let action = type==0 ? fetchAll : fetchAllCom
+      action()
         .then(records => {
           this.role = role
           this.permissions = records
diff --git a/platform/src/components/system/user/OperaUserWindow.vue b/platform/src/components/system/user/OperaUserWindow.vue
index a64d417..c3ac6e7 100644
--- a/platform/src/components/system/user/OperaUserWindow.vue
+++ b/platform/src/components/system/user/OperaUserWindow.vue
@@ -7,24 +7,44 @@
     @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules">
-      <el-form-item label="璐﹀彿" prop="username" required>
-        <el-input v-model="form.username" placeholder="璇疯緭鍏�" v-trim maxlength="50"/>
+      <el-form-item label="鐢ㄦ埛鍚�" prop="username" required>
+        <el-input v-model="form.username" placeholder="璇疯緭鍏ョ敤鎴峰悕" v-trim maxlength="50"/>
       </el-form-item>
-      <el-form-item label="鍚嶇О" prop="realname" required>
-        <el-input v-model="form.realname" placeholder="璇疯緭鍏�" v-trim maxlength="50"/>
+      <el-form-item label="濮撳悕" prop="realname" required>
+        <el-input v-model="form.realname" placeholder="璇疯緭鍏ュ鍚�" v-trim maxlength="50"/>
       </el-form-item>
-      <el-form-item label="鑱旂郴鏂瑰紡" prop="mobile">
-        <el-input v-model="form.mobile" placeholder="璇疯緭鍏�" v-trim maxlength="11"/>
+      <el-form-item label="鎬у埆" prop="sex" required>
+        <el-radio-group v-model="form.sex">
+          <el-radio label="1">鐢�</el-radio>
+          <el-radio label="0">濂�</el-radio>
+        </el-radio-group>
       </el-form-item>
-      <el-form-item label="楠岃瘉鐮�" prop="captcha">
-        <div style="width: 100%; display: flex; align-items: center;">
-          <el-input v-model="form.captcha" maxlength="11" type="number" style="flex: 1;" placeholder="璇疯緭鍏�" v-trim/>
-          <el-button type="primary" style="flex-shrink: 0; margin-left: 15px;" @click="send" v-if="num === 0">鍙戦�侀獙璇佺爜</el-button>
-          <el-button type="primary" style="flex-shrink: 0; margin-left: 15px;" v-else>{{num}}s</el-button>
-        </div>
+      <!-- <el-form-item label="澶村儚" prop="avatar" required>
+        <el-radio-group v-model="form.avatar" class="form-item-avatar">
+          <el-radio label="https://dmtest.ahapp.net/preselectfile/man.png" border><img src="https://dmtest.ahapp.net/preselectfile/man.png" alt=""></el-radio>
+          <el-radio label="https://dmtest.ahapp.net/preselectfile/woman.png" border><img src="https://dmtest.ahapp.net/preselectfile/woman.png" alt=""></el-radio>
+        </el-radio-group>
+      </el-form-item> -->
+      <el-form-item v-if="form.id == null" label="鍒濆瀵嗙爜" prop="password" required>
+        <el-input v-model="form.password" type="password" placeholder="璇疯緭鍏ュ垵濮嬪瘑鐮�" maxlength="30" show-password/>
       </el-form-item>
-      <el-form-item label="鎶勯�佹枃浠堕偖绠�" prop="email">
-        <el-input v-model="form.email" placeholder="璇疯緭鍏�" v-trim />
+            <el-form-item label="鎵�灞為儴闂�" prop="departmentId" required>
+        <DepartmentSelect v-model="form.departmentId" placeholder="璇烽�夋嫨鐢ㄦ埛鎵�灞為儴闂�" :inline="false" clearable/>
+      </el-form-item>
+      <el-form-item label="宀椾綅" prop="positionId">
+        <PositionSelect v-model="form.positionIds" placeholder="璇烽�夋嫨鐢ㄦ埛鎵�鍦ㄥ矖浣�" :inline="false" :multiple="true" clearable/>
+      </el-form-item>
+      <el-form-item label="宸ュ彿" prop="empNo">
+        <el-input v-model="form.empNo" placeholder="璇疯緭鍏ュ伐鍙�" v-trim maxlength="50"/>
+      </el-form-item>
+      <el-form-item label="鎵嬫満鍙风爜" prop="mobile">
+        <el-input v-model="form.mobile" placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" v-trim maxlength="11"/>
+      </el-form-item>
+      <el-form-item label="閭" prop="email">
+        <el-input v-model="form.email" placeholder="璇疯緭鍏ラ偖绠�" v-trim maxlength="200"/>
+      </el-form-item>
+      <el-form-item label="鐢熸棩" prop="birthday">
+        <el-date-picker v-model="form.birthday" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨鐢ㄦ埛鐢熸棩"/>
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -36,7 +56,6 @@
 import DepartmentSelect from '@/components/common/DepartmentSelect'
 import PositionSelect from '@/components/common/PositionSelect'
 import { checkMobile, checkEmail } from '@/utils/form'
-import { sendSms } from '@/api/business/smsEmail'
 
 export default {
   name: 'OperaUserWindow',
@@ -49,12 +68,16 @@
         id: null,
         username: '', // 鐢ㄦ埛鍚�
         realname: '', // 濮撳悕
+        empNo: '', // 宸ュ彿
+        departmentId: null, //  鎵�灞為儴闂↖D
+        positionIds: [], //  鎵�灞炲矖浣岻D闆�
+        // avatar: '/avatar/man.png', // 澶村儚
+        password: '', // 瀵嗙爜
         mobile: '', // 鎵嬫満鍙风爜
-        email: '',
-        captcha: ''
+        email: '', // 閭
+        sex: '1', // 鎬у埆
+        birthday: '' // 鐢熸棩
       },
-      num: 0,
-      timer: null,
       // 楠岃瘉瑙勫垯
       rules: {
         username: [
@@ -63,36 +86,28 @@
         realname: [
           { required: true, message: '璇疯緭鍏ュ鍚�' }
         ],
+        password: [
+          { required: true, message: '璇疯緭鍏ュ瘑鐮�' }
+        ],
+        departmentId: [
+          { required: true, message: '璇烽�夋嫨閮ㄩ棬' }
+        ],
+        avatar: [
+          { required: true, message: '璇烽�夋嫨鐢ㄦ埛澶村儚' }
+        ],
+        sex: [
+          { required: true, message: '璇烽�夋嫨鐢ㄦ埛鎬у埆' }
+        ],
         mobile: [
           { required: true, validator: checkMobile }
         ],
         email: [
-          { required: true, message: '璇疯緭鍏ラ偖绠�' }
+          { validator: checkEmail }
         ]
       }
     }
   },
   methods: {
-    send() {
-      if (!this.form.mobile) {
-        this.$message.warning('璇疯緭鍏ユ墜鏈哄彿')
-        return
-      }
-      sendSms({ phone: this.form.mobile })
-        .then(res => {
-          this.num = 60
-          this.setTime()
-        })
-    },
-    setTime() {
-      this.timer = setInterval(() => {
-        this.num -= 1
-        if (this.num === 0) {
-          clearInterval(this.timer)
-          this.num = 0
-        }
-      }, 1000)
-    },
     /**
      * @title 绐楀彛鏍囬
      * @target 缂栬緫鐨勭敤鎴峰璞�
@@ -100,8 +115,6 @@
     open (title, target) {
       this.title = title
       this.visible = true
-      clearInterval(this.timer)
-      this.num = 0
       // 鏂板缓
       if (target == null) {
         this.$nextTick(() => {
diff --git a/platform/src/components/system/user/allocationEnterprises.vue b/platform/src/components/system/user/allocationEnterprises.vue
deleted file mode 100644
index 082c892..0000000
--- a/platform/src/components/system/user/allocationEnterprises.vue
+++ /dev/null
@@ -1,119 +0,0 @@
-<template>
-    <GlobalWindow
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        width="582px"
-        title="閰嶇疆鐢ㄦ埛瑙掕壊"
-        @confirm="confirm"
-    >
-        <p class="tip" v-if="user != null">涓虹敤鎴� <em>{{user.realname}}</em> 鍒嗛厤浼佷笟</p>
-        <el-transfer
-            v-if="company"
-            v-model="selectedIds"
-            :titles="['鏈垎閰嶄紒涓�', '宸插垎閰嶄紒涓�']"
-            :props="{
-                key: 'id',
-                label: 'name'
-            }"
-            :data="company">
-        </el-transfer>
-    </GlobalWindow>
-</template>
-
-<script>
-    import BasePage from '@/components/base/BasePage'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import { pageAll } from '@/api/business/company'
-    import { create } from '@/api/business/companyPermission'
-    export default {
-        name: 'allocationEnterprises',
-        extends: BasePage,
-        components: { GlobalWindow },
-        data () {
-            return {
-                visible: false,
-                isWorking: false,
-                // 鐢ㄦ埛
-                user: null,
-                // 浼佷笟鍒楄〃
-                company: null,
-                // 宸查�変腑鐨勮鑹睮D
-                selectedIds: []
-            }
-        },
-        methods: {
-            open (title, target) {
-                this.selectedIds = []
-                this.visible = true
-                this.title = title
-                this.user = target
-                pageAll({ userId: target.id })
-                    .then(res => {
-                        this.company = res.map(r => {
-                            return {
-                                name: r.name,
-                                id: r.id
-                            }
-                        })
-                        res.forEach(item => {
-                            if (item.hasPerimission === 1) {
-                                this.selectedIds.push(item.id)
-                            }
-                        })
-                    })
-            },
-            // 纭閫夋嫨瑙掕壊
-            confirm () {
-                if (this.isWorking) {
-                    return
-                }
-                this.isWorking = true
-                create({
-                    userId: this.user.id,
-                    companyIdList: this.selectedIds
-                })
-                    .then(() => {
-                        this.$tip.apiSuccess('瑙掕壊閰嶇疆鎴愬姛锛岀敤鎴烽噸鏂扮櫥褰曞悗鐢熸晥')
-                        this.visible = false
-                        this.$emit('success')
-                    })
-                    .catch(e => {
-                        this.$tip.apiFailed(e)
-                    })
-                    .finally(() => {
-                        this.isWorking = false
-                    })
-            },
-            // 鍏抽棴
-            close () {
-                this.$emit('update:visible', false)
-            }
-        }
-    }
-</script>
-
-<style scoped lang="scss">
-    @import "@/assets/style/variables.scss";
-    // 瑙掕壊閰嶇疆
-    .global-window {
-        .tip {
-            em {
-                font-style: normal;
-                color: $primary-color;
-                font-weight: bold;
-            }
-        }
-        .tip-warn {
-            margin: 4px 0 12px 0;
-            font-size: 12px;
-            color: #999;
-            i {
-                color: orange;
-                margin-right: 4px;
-                font-size: 14px;
-                position: relative;
-                top: 1px;
-            }
-        }
-    }
-</style>
diff --git a/platform/src/layouts/AppLayout.vue b/platform/src/layouts/AppLayout.vue
index c0aa936..476998f 100644
--- a/platform/src/layouts/AppLayout.vue
+++ b/platform/src/layouts/AppLayout.vue
@@ -1,49 +1,31 @@
 <template>
-  <div>
-    <CommonHeader />
-    <div style="height:10px; background: #fff"></div>
-    <el-container class="app-layout">
-      <el-aside :class="{collapse:menuData.collapse}">
-        <Menu/>
-      </el-aside>
-      <el-main>
-        <header>
-          <AppHeader/>
-        </header>
-        <div style="height:10px;"></div>
-        <main>
-          <transition name="fade">
-            <keep-alive>
-              <router-view></router-view>
-            </keep-alive>
-          </transition>
-        </main>
-      </el-main>
-    </el-container>
-
-  </div>
+  <el-container class="app-layout">
+    <el-aside :class="{collapse:menuData.collapse}">
+      <Menu/>
+    </el-aside>
+    <el-main>
+      <header>
+        <AppHeader/>
+      </header>
+      <main>
+        <transition name="fade">
+          <router-view></router-view>
+        </transition>
+      </main>
+    </el-main>
+  </el-container>
 </template>
 
 <script>
 import { mapState } from 'vuex'
 import Header from '@/components/common/Header'
-import CommonHeader from '@/components/common/CommonHeader'
 import Menu from '@/components/common/Menu'
 export default {
   name: 'DefaultLayout',
-  components: { AppHeader: Header, Menu, CommonHeader },
-  data() {
-    return {
-      isFinishData: false
-    }
-  },
+  components: { AppHeader: Header, Menu },
   computed: {
-    ...mapState(['menuData', 'userInfo'])
-  },
-
-  methods: {
-
-  },
+    ...mapState(['menuData'])
+  }
 }
 </script>
 
@@ -52,27 +34,17 @@
 .el-container {
   background: #F7F8F9;
   height: 100%;
-
   display: flex;
-  // overflow: hidden;
-  overflow: scroll;
+  overflow: hidden;
   // 宸﹁竟鑿滃崟
   .el-aside {
     width: $menu-width !important;
     flex-shrink: 0;
-    // height: 100%;
-    // height: 900px;
-    height: calc(100vh - 80px);
-    overflow-y: scroll;
-    overflow-x: hidden;
+    height: 100%;
+    overflow-y: auto;
     background: $primary-color;
     color: #fff;
     transition: width ease .3s;
-    scrollbar-width: none; /* firefox */
-    -ms-overflow-style: none; /* IE 10+ */
-    &::-webkit-scrollbar {
-      display: none; /* Chrome Safari */
-    }
     &.collapse {
       width: 64px !important;
     }
@@ -80,21 +52,14 @@
   // 鍙宠竟鍐呭
   .el-main {
     width: 100%;
-    // height: 100%;
-    height: calc(100vh - 90px);
+    height: 100%;
     padding: 0;
     position: relative;
     display: flex;
     flex-direction: column;
-    overflow-y: scroll;
-    overflow-x: hidden;
-    scrollbar-width: none; /* firefox */
-    -ms-overflow-style: none; /* IE 10+ */
-    &::-webkit-scrollbar {
-      display: none; /* Chrome Safari */
-    }
+    overflow: hidden;
     & > header {
-      height: 48px;
+      height: $header-height;
       flex-shrink: 0;
     }
     & > main {
@@ -115,34 +80,5 @@
   opacity: 0;
   transition: all .5s;
   position: absolute;
-}
-.comfirm {
-  position: absolute;
-  left: 0;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  background-color: rgba(0, 0, 0, 0.3);
-  z-index: 1000;
-  .container {
-    position: absolute;
-    left: 0;
-    top: 0;
-    right: 0;
-    bottom: 0;
-    margin: auto;
-    background-color: #fff;
-    width: 500px;
-    height: 120px;
-    padding: 30px;
-    box-sizing: border-box;
-    display: flex;
-    flex-direction: column;
-    justify-content: space-between;
-    .complete {
-      display: flex;
-      flex-direction: row-reverse;
-    }
-  }
 }
 </style>
diff --git a/platform/src/layouts/TableLayout.vue b/platform/src/layouts/TableLayout.vue
index 2a12773..d64e0ae 100644
--- a/platform/src/layouts/TableLayout.vue
+++ b/platform/src/layouts/TableLayout.vue
@@ -1,11 +1,11 @@
 <template>
   <div class="table-layout">
     <!-- 澶撮儴 -->
-<!--    <div v-if="withBreadcrumb" class="table-header">
+    <div v-if="withBreadcrumb" class="table-header">
       <el-breadcrumb separator="/">
         <el-breadcrumb-item v-for="path in paths" :key="path">{{path}}</el-breadcrumb-item>
       </el-breadcrumb>
-    </div>-->
+    </div>
     <Profile :roles="roles" :permissions="permissions">
       <!-- 鎼滅储琛ㄥ崟閮ㄥ垎 -->
       <div class="table-search-form">
diff --git a/platform/src/main.js b/platform/src/main.js
index ee5cfea..96b31bf 100644
--- a/platform/src/main.js
+++ b/platform/src/main.js
@@ -60,7 +60,7 @@
       if (storeMenus.length > 0 && this.homePage == null) {
         this.setHomePage(storeMenus[0])
       }
-      await fetchMenuTree()
+      await fetchMenuTree({ type: 0 })
         .then(menus => {
           // 娣诲姞鑿滃崟
           storeMenus.push.apply(storeMenus, menus)
diff --git a/platform/src/plugins/download.js b/platform/src/plugins/download.js
index f4c5876..87e98f0 100644
--- a/platform/src/plugins/download.js
+++ b/platform/src/plugins/download.js
@@ -2,11 +2,12 @@
 import message from './message'
 
 export default function (response, decode = true, mime = 'application/octet-stream') {
+  debugger
   // 褰撲笅杞芥帴鍙f病鏈夋垚鍔熻繑鍥炴祦骞朵笖鎺ュ彛杩斿洖鐨勬槸JSON鏃堕渶瑕佸鍝嶅簲娴佽繘琛岃В鏋愬苟鎻愮ず閿欒銆傦紙澶勭悊涓嬭浇鎺ュ彛鍑虹幇鏈煡寮傚父鐨勬儏鍐碉級
   if (response.headers['content-type'] === 'application/json') {
     const blob = new Blob([response.data])
     const fileReader = new FileReader()
-    fileReader.readAsText(blob, 'utf-8')
+    fileReader.readAsText(blob, 'UTF-8')
     fileReader.onload = function () {
       message.apiFailed(JSON.parse(fileReader.result))
     }
diff --git a/platform/src/plugins/messagebox.js b/platform/src/plugins/messagebox.js
index be2c47b..5d3d2ec 100644
--- a/platform/src/plugins/messagebox.js
+++ b/platform/src/plugins/messagebox.js
@@ -10,13 +10,6 @@
       type: 'warning'
     })
   },
-  resetConfirm (message) {
-    return MessageBox.confirm(message, '閲嶇疆鎻愰啋', {
-      confirmButtonText: '纭閲嶇疆',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning'
-    })
-  },
   // 绂佺敤浜屾纭
   disableConfirm (message) {
     return MessageBox.confirm(message, '绂佺敤鎻愰啋', {
@@ -29,30 +22,6 @@
   exportConfirm (message) {
     return MessageBox.confirm(message, '瀵煎嚭鎻愰啋', {
       confirmButtonText: '纭瀵煎嚭',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning'
-    })
-  },
-  // 瀹屽杽鎻愰啋
-  messageApprove (message) {
-    return MessageBox.confirm(message, '瀹℃牳鎻愰啋', {
-      confirmButtonText: '纭畾',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning'
-    })
-  },
-    // 闂嵎纭疄鎻愰啋
-  messageWaring (message, title, confirmText='纭畾', cancelText='鍙栨秷') {
-    return MessageBox.confirm(message, title, {
-      confirmButtonText: confirmText,
-      cancelButtonText: cancelText,
-      type: 'warning'
-    })
-  },
-  // 纭鏄惁鏈嶅姟璇ヤ紒涓�
-  cancelOrder (message) {
-    return MessageBox.confirm(message, '鍙栨秷鎻愮ず', {
-      confirmButtonText: '纭畾',
       cancelButtonText: '鍙栨秷',
       type: 'warning'
     })
diff --git a/platform/src/router/index.js b/platform/src/router/index.js
index cf320c3..a9d2ce8 100644
--- a/platform/src/router/index.js
+++ b/platform/src/router/index.js
@@ -3,7 +3,6 @@
 import AppLayout from '@/layouts/AppLayout'
 import { getUserInfo } from '@/api/system/common'
 const Login = () => import('@/views/login')
-
 const ErrorNoPermissions = () => import('@/views/no-permissions')
 const Error404 = () => import('@/views/not-found')
 
@@ -19,7 +18,6 @@
       path: '/login',
       component: Login
     },
-
     // 鏃犳潈闄�
     {
       name: 'no-permissions',
diff --git a/platform/src/store/index.js b/platform/src/store/index.js
index d2f4f72..3be2adb 100644
--- a/platform/src/store/index.js
+++ b/platform/src/store/index.js
@@ -13,11 +13,7 @@
     list: [],
     // 鏄惁鏀惰捣
     collapse: false
-  },
-  //tags鏁扮粍
-  tags:[],
-  //tagsview鏍囩鏄剧ず闅愯棌
-  isCollapse:false
+  }
 }
 
 const mutations = {
@@ -32,12 +28,8 @@
   },
   // 璁剧疆宸茬櫥褰曠殑鐢ㄦ埛淇℃伅
   setUserInfo: (state, data) => {
-    state.userInfo = {
-      ...state.userInfo,
-      ...data
-    }
+    state.userInfo = data
   },
-
   // 璁剧疆棣栭〉璺敱淇℃伅
   setHomePage (state, homePage) {
     state.homePage = homePage
@@ -45,37 +37,6 @@
   // 閲嶇疆鑿滃崟
   resetMenus: (state) => {
     state.menuData.list = []
-  },
-  //  tags
-  pushtags(state,val){
-    //濡傛灉绛変簬-1璇存槑tabs涓嶅瓨鍦ㄩ偅涔堟彃鍏ワ紝鍚﹀垯浠�涔堥兘涓嶅仛
-    //findindex鎵捐鏍囷紝寰幆鍒ゆ柇涓�涓嬶紝濡傛灉绛変簬閭d箞灏变唬琛ㄦ湁鐩稿悓鐨勶紝灏变笉蹇呮坊鍔狅紝濡傛灉鎵句笉鍒伴偅灏辨槸-1.灏辨坊鍔�
-    let result = state.tags.findIndex(item => item.label === val.label)
-    if (result === -1) {
-      state.tags.push({...val, keepAlive: false})
-    } else {
-      state.tags[result]= {...val, keepAlive: true}
-    }
-    // result === -1 ? state.tags.push(val) : (state.tags[result]==val)
-  },
-  //鍏抽棴鏍囩
-  closeTab(state, val) {
-    //鍚屼笂锛屾壘瑙掓爣锛岀劧鍚庣敤瑙掓爣鐨勪綅缃搴斿垹闄や竴浣嶃�俿plice锛氳繖鏄暟缁勭殑鍒犻櫎鏂规硶
-    let result = state.tags.findIndex(item => item.label === val.label)
-    state.tags.splice(result, 1)
-  },
-  //鍏抽棴鎵�鏈塼agsview鏍囩
-  cleartagsview(state,val){
-    //娓呯┖鏁扮粍
-    state.tags=[]
-    //璺宠浆鍒伴椤�,val鎺ュ彈浼犺繃鏉ョ殑褰撳墠璺敱
-    if(val !== "/index"){
-      router.push({path:"/index"})
-    }
-  },
-  //鏀瑰彉tagsview鏄剧ず闅愯棌
-  changeisshow(state){
-    state.isCollapse=!state.isCollapse
   }
 }
 const actions = {}
diff --git a/platform/src/utils/form.js b/platform/src/utils/form.js
index cf60c6f..e625827 100644
--- a/platform/src/utils/form.js
+++ b/platform/src/utils/form.js
@@ -1,15 +1,88 @@
-// 楠岃瘉鎵嬫満鍙风爜
-export function checkMobile (rule, value, callback) {
+
+export function checkMobile(rule, value, callback) {
   if (value == null || value.trim() === '') {
-    callback(new Error('鎵嬫満鍙风爜涓嶈兘涓虹┖'))
+    if (rule.required) {
+      callback(new Error('璇疯緭鍏ユ墜鏈哄彿'))
+    } else {
+      callback()
+    }
     return
   }
-  if (!/^1\d{10}$/.test(value)) {
-    callback(new Error('鎵嬫満鍙风爜鏍煎紡涓嶆纭�'))
+  let re = /^[0-9]{11}$/;
+  var result = re.test(value); 
+  if(!result) {
+    callback(new Error('璇疯緭鍏ユ纭殑鎵嬫満鍙�'))
+  } else {
+    callback()
+  }
+}
+
+export function checkPhone(rule, value, callback) {
+  //鎵嬫満鍙凤細13锛�14锛�15锛�17锛�18锛�19鍙锋
+  const phoneReg = /^1[3|4|5|7|8][0-9]{9}$/
+  //鍥鸿瘽锛氬尯鍙�(3-4浣�)-鍙风爜(7-9浣�)
+  const mobReg =  /(^[0-9]{3,4}-[0-9]{7,9}$)/
+  //婢抽棬鐢佃瘽鍙风爜: 28寮�澶达紝鍚庨潰璺�6浣嶆暟瀛楋紝鍖哄彿涓�853
+  const macaoMobReg = /^(853)?28\d{6}$/
+  //婢抽棬鎵嬫満鍙风爜锛�6寮�澶达紝鍚庨潰璺�7浣嶆暟瀛楋紝鍖哄彿涓�853
+  const macaoPhoneReg = /^(853)?6\d{7}$/
+  //鍚屾椂鏀寔鎵嬫満鍙风爜鍜岀數璇濆彿鐮�
+  const macaoReg = /^(853)?(?:28\d{6}|6\d{7})$/  
+  if (!value) {
+      callback(new Error('鐢佃瘽鍙风爜涓嶈兘涓虹┖'))
+  } else if (phoneReg.test(value)||mobReg.test(value)||macaoReg.test(value)) {
+      callback()
+  } else {
+      callback(new Error('璇疯緭鍏ユ纭數璇濆彿鐮�'))
+  }
+}
+
+export function loginNameRule (rule, value, callback) {
+  if (value == null || value.trim() === '') {
+    if (rule.required) {
+      callback(new Error('璇疯緭鍏ヨ处鍙�'))
+    } else {
+      callback()
+    }
+    return
+  }
+  let re =/^[\u4e00-\u9fa5a-zA-Z0-9]+$/
+  var result = re.test(value)
+  if(!result) {
+    callback(new Error('璇疯緭鍏ユ纭殑璐﹀彿'))
+  } else {
+    callback()
+  }
+}
+
+export function nameRule (rule, value, callback) {
+  if (value == null || value.trim() === '') {
+    if (rule.required) {
+      callback(new Error('璇疯緭鍏ュ悕瀛�'))
+    } else {
+      callback()
+    }
     return
   }
   callback()
 }
+export function creditCode (rule, value, callback) {
+  if (value == null || value.trim() === '') {
+    if (rule.required) {
+      callback(new Error('璇疯緭鍏ョぞ浼氫俊鐢ㄤ唬鐮�'))
+    } else {
+      callback()
+    }
+    return
+  }
+  let re = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/
+  var result = re.test(value)
+  if(!result) {
+    callback(new Error('璇疯緭鍏ユ纭殑绀句細淇$敤浠g爜'))
+  } else {
+    callback()
+  }
+}
 
 // 楠岃瘉閭
 export function checkEmail (rule, value, callback) {
diff --git a/platform/src/utils/request.js b/platform/src/utils/request.js
index 9821bd0..8416b58 100644
--- a/platform/src/utils/request.js
+++ b/platform/src/utils/request.js
@@ -3,11 +3,11 @@
 import pkg from '../../package'
 import { trim } from './util'
 import cache from '../plugins/cache'
-import { Message } from 'element-ui'
 
 axios.defaults.headers.common['Content-Type'] = 'application/json;charset=UTF-8'
 const axiosInstance = axios.create({
   baseURL: process.env.VUE_APP_API_PREFIX,
+  // baseURL: process.env.VUE_APP_API,
   // 璇锋眰瓒呮椂鏃堕棿
   timeout: 60000
 })
@@ -30,9 +30,9 @@
   // 璁剧疆鎿嶄綔骞冲彴
   config.headers['eva-platform'] = `pc-${pkg.version}`
   // 璁剧疆璁よ瘉澶�
-  const authToken = Cookies.get('eva-auth-token')
+  const authToken = Cookies.get('doumee-auth-token')
   if (authToken != null) {
-    config.headers['eva-auth-token'] = authToken
+    config.headers['doumee-auth-token'] = authToken
   }
   return config
 }, function (error) {
@@ -41,9 +41,6 @@
 
 // 鏂板缓鍝嶅簲鎷︽埅鍣�
 axiosInstance.interceptors.response.use((response) => {
-  
-  // console.log(response.status)
-  // debugger
   // 璇锋眰澶辫触
   if (response.status !== 200) {
     return Promise.reject(new Error('鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庡啀璇�'))
@@ -55,8 +52,7 @@
   // 鏈櫥褰�
   if (response.data.code === 401) {
     if (response.config.autoLogin !== false) {
-      location.reload()
-      // window.location.href = process.env.VUE_APP_ROUTER_MODE === 'history' ? '/login' : '/#/login'
+      window.location.href = process.env.VUE_APP_ROUTER_MODE === 'history' ? '/#/login' : '/login'
     }
     return Promise.reject(response.data)
   }
diff --git a/platform/src/views/business/anchor.vue b/platform/src/views/business/anchor.vue
new file mode 100644
index 0000000..bddb751
--- /dev/null
+++ b/platform/src/views/business/anchor.vue
@@ -0,0 +1,108 @@
+<template>
+  <TableLayout :permissions="['business:companyUser:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="浼佷笟鍚嶇О" prop="companyName">
+        <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ヤ紒涓氬悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <!-- <el-form-item label="浼佷笟绠�绉�" prop="shortName">
+        <el-input v-model="searchForm.shortName" placeholder="璇疯緭鍏ヤ紒涓氱畝绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item> -->
+      <el-form-item label="璐﹀彿淇℃伅" prop="keyWords">
+        <el-input v-model="searchForm.keyWords" placeholder="璇疯緭鍏ョ櫥褰曡处鍙�/濮撳悕" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨" @change="search">
+          <el-option label="鍚敤" :value="0"></el-option>
+          <el-option label="绂佺敤" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <el-table v-loading="isWorking.search" :data="tableData.list" border stripe
+        @selection-change="handleSelectionChange">
+        <!-- <el-table-column type="selection" width="55" align="center"></el-table-column> -->
+        <el-table-column prop="companyName" label="浼佷笟鍚嶇О" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="username" label="鐧诲綍璐﹀彿" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="realname" label="濮撳悕" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="mobile" label="鎵嬫満鍙�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="status" label="鐘舵��" min-width="100px" align="center">
+          <template slot-scope="{row}">
+            <!-- 0鍚敤 1绂佺敤 -->
+            <el-switch :disabled="!containPermissions(['business:companyUser:update'])" v-model="row.status"
+              :inactive-value="1" :active-value="0" @change="changeStatus(row)">
+            </el-switch>
+          </template>
+
+        </el-table-column>
+        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="140px" align="center"></el-table-column>
+      </el-table>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      </pagination>
+    </template>
+
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import { updateById } from '@/api/system/user'
+export default {
+  name: 'Company',
+  extends: BaseTable,
+  components: { TableLayout, Pagination },
+  data() {
+    return {
+      oepnValidDate: [],
+      // 鎼滅储
+      searchForm: {
+        companyName: '',
+        keyWords: '',
+        status: '',
+        type: 2
+      }
+    }
+  },
+  created() {
+    this.config({
+      module: '绯荤粺-浼佷笟淇℃伅琛�',
+      api: '/business/companyUser',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    selectOepnValidDate(v) {
+      [this.searchForm.oepnValidDateStart, this.searchForm.oepnValidDateEnd] = v
+    },
+    reset() {
+      // this.reset()
+      this.$refs.searchForm.resetFields()
+      this.searchForm.oepnValidDateStart = ''
+      this.searchForm.oepnValidDateEnd = ''
+      this.oepnValidDate = []
+      this.search()
+    },
+    changeStatus(row) {
+      updateById(row)
+        .then(() => {
+          this.$tip.apiSuccess('鏇存柊鎴愬姛')
+        })
+        .catch(err => {
+          this.$tip.apiFailed(err)
+        })
+        .finally(() => {
+          this.handlePageChange()
+        })
+    }
+  },
+}
+</script>
diff --git a/platform/src/views/business/applyChange.vue b/platform/src/views/business/applyChange.vue
deleted file mode 100644
index a2198db..0000000
--- a/platform/src/views/business/applyChange.vue
+++ /dev/null
@@ -1,126 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:applychange:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="淇濆崟鐘舵��" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @change="search">
-                    <el-option label="寰呯缃�" value="0"></el-option>
-                    <el-option label="宸茬绔� " value="1"></el-option>
-                    <el-option label="宸蹭笂浼犳壒鍗�" value="2"></el-option>
-                    <el-option label="閫�鍥炵敵璇�" value="3"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鎶曚繚浼佷笟" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="淇濋櫓鏂规" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鎻愪氦鏃ユ湡" prop="status">
-                <el-date-picker
-                    v-model="searchForm.status"
-                    type="daterange"
-                    range-separator="鑷�"
-                    start-placeholder="寮�濮嬫棩鏈�"
-                    end-placeholder="缁撴潫鏃ユ湡">
-                </el-date-picker>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-                <el-button @click="$refs.operaApplyChangeWindow.open('鍔犲噺淇濊鎯�')">鏌ョ湅璇︽儏</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column label="搴忓彿" width="80px">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="status" label="淇濆崟鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.status === 0">寰呯缃�</span>
-                        <span v-if="row.status === 1">宸茬绔�</span>
-                        <span v-if="row.status === 2">宸蹭笂浼犳壒鍗�</span>
-                        <span v-if="row.status === 3">閫�鍥炵敵璇�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="code" label="鎶曚繚浼佷笟" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="鍏宠仈淇濆崟鍙�" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="鍔犱繚浜烘暟锛堜汉锛�" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="鍑忎繚浜烘暟锛堜汉锛�" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="璐圭敤鍙樻洿" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="鎻愪氦鏃堕棿" min-width="100px"></el-table-column>
-<!--                v-if="containPermissions(['business:applychange:update', 'business:applychange:delete'])"-->
-                <el-table-column
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-<!--                        v-permissions="['business:applychange:update']"-->
-                        <el-button type="text" @click="$refs.operaApplyChangeWindow.open('鍔犲噺淇濊鎯�', row)" icon="el-icon-edit">鏌ョ湅璇︽儏</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaApplyChangeWindow ref="operaApplyChangeWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-    import BaseTable from '@/components/base/BaseTable'
-    import TableLayout from '@/layouts/TableLayout'
-    import Pagination from '@/components/common/Pagination'
-    import OperaApplyChangeWindow from '@/components/business/OperaApplyChangeWindow'
-    export default {
-        name: 'ApplyChange',
-        extends: BaseTable,
-        components: { TableLayout, Pagination, OperaApplyChangeWindow },
-        data () {
-            return {
-                // 鎼滅储
-                searchForm: {
-                    status: ''
-                }
-            }
-        },
-        created () {
-            this.config({
-                module: '鍔犲噺淇濇崲鍘傜敵璇蜂俊鎭〃',
-                api: '/business/applyChange',
-                'field.id': 'id',
-                'field.main': 'id'
-            })
-            this.search()
-        }
-    }
-</script>
diff --git a/platform/src/views/business/baseData.vue b/platform/src/views/business/baseData.vue
new file mode 100644
index 0000000..9d9d3e8
--- /dev/null
+++ b/platform/src/views/business/baseData.vue
@@ -0,0 +1,152 @@
+<template>
+  <TableLayout :permissions="['business:basedata:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
+      <el-form-item label="鍟嗗搧鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="浜笢sku" prop="sku">
+        <el-input v-model="searchForm.sku" placeholder="璇疯緭鍏ヤ含涓渟ku" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍝佺墝" prop="brand">
+        <el-input v-model="searchForm.brand" placeholder="璇疯緭鍏ュ搧鐗�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="绫诲埆" prop="category">
+        <el-input v-model="searchForm.category" placeholder="璇疯緭鍏ョ被鍒�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨">
+          <el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id">
+          </el-option>
+        </el-select>
+        <!-- <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" @keypress.enter.native="search"></el-input> -->
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:basedata:create', 'business:basedata:delete']">
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete"
+            v-permissions="['business:basedata:delete']">鎵归噺鍒犻櫎</el-button></li>
+      </ul>
+      <el-table v-loading="isWorking.search" :data="tableData.list" border stripe @selection-change="handleSelectionChange">
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="鍟嗗搧涓诲浘" min-width="80px">
+          <template slot-scope="{row}">
+              <div style="display: flex; align-items: center;">
+                <div style="width: 70px; height: 70px; flex-shrink: 0;">
+                  <el-image v-if="row.imgurl" style="width: 70px; height: 70px" :src="row.imgurl"
+                    :preview-src-list="[row.imgurl]" fit="cover"></el-image>
+                </div>
+              </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="name" label="鍟嗗搧鍚嶇О" min-width="150px">
+          <template slot-scope="{row}">
+            <a :href="`${row.url}`" target="_blank">{{ row.name }}</a>
+          </template>
+        </el-table-column>
+        <!--        <el-table-column prop="title" label="鏍囬" min-width="100px"></el-table-column>-->
+        <el-table-column prop="sku" label="浜笢sku" min-width="100px"></el-table-column>
+        <el-table-column prop="brand" label="鍝佺墝" min-width="120px"></el-table-column>
+        <el-table-column prop="category" label="绫诲埆" min-width="100px"></el-table-column>
+        <el-table-column prop="price" label="浠锋牸锛堝厓锛�" min-width="100px"></el-table-column>
+        <el-table-column prop="saleprice" label="閲囪喘浠锋牸锛堝厓锛�" min-width="100px"></el-table-column>
+        <el-table-column prop="haveStock" label="搴撳瓨鎯呭喌" min-width="100px"></el-table-column>
+        <el-table-column prop="bgImgs" label="澶у浘" min-width="80px">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="showImage(row.bgImgs)">鏌ョ湅澶у浘</el-button>
+            <!-- <div style="display: flex; align-items: center;">
+              <div style="width: 70px; height: 70px; flex-shrink: 0;">
+                <el-image v-if="row.bgImgs" style="width: 70px; height: 70px" :src="row.bgImgs"
+                  :preview-src-list="row.bgImgs" fit="cover"></el-image>
+              </div>
+            </div> -->
+          </template>
+        </el-table-column>
+        <el-table-column prop="status" label="澶勭悊鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            {{ row.status == 1 ? "宸插鐞�" : "鏈鐞�" }}
+          </template>
+        </el-table-column>
+        <el-table-column v-if="containPermissions(['business:basedata:update', 'business:basedata:delete'])" label="鎿嶄綔"
+          min-width="80" fixed="right">
+          <template slot-scope="{row}">
+            <!--
+            <el-button type="text" @click="$refs.operaBaseDataWindow.open('缂栬緫鍟嗗搧婧愭暟鎹俊鎭〃', row)" icon="el-icon-edit" v-permissions="['business:basedata:update']">缂栬緫</el-button>
+-->
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+              v-permissions="['business:basedata:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaBaseDataWindow ref="operaBaseDataWindow" @success="handlePageChange" />
+    <el-image-viewer 
+      v-if="showViewer" 
+      :on-close="closeViewer"
+      :initialIndex="0"
+      :url-list="srcList"
+      :z-index="3000"
+    />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaBaseDataWindow from '@/components/business/OperaBaseDataWindow'
+import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
+export default {
+  name: 'BaseData',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaBaseDataWindow, ElImageViewer },
+  data() {
+    return {
+      showViewer: false,
+      srcList: [],
+      // 鎼滅储
+      searchForm: {
+        name: '',
+        sku: '',
+        brand: '',
+        category: '',
+        status: null
+      },
+      statusList: [
+        { name: '鏈鐞�', id: 0 },
+        { name: '宸插鐞�', id: 1 }
+      ]
+    }
+  },
+  created() {
+    this.config({
+      module: '鍟嗗搧婧愭暟鎹俊鎭〃',
+      api: '/business/baseData',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    showImage(imgs) {
+      this.srcList = []
+      this.srcList = imgs
+      this.showViewer = true
+    },
+    closeViewer() {
+      this.showViewer = false
+    }
+    
+  },
+}
+</script>
diff --git a/platform/src/views/business/brand.vue b/platform/src/views/business/brand.vue
new file mode 100644
index 0000000..5392956
--- /dev/null
+++ b/platform/src/views/business/brand.vue
@@ -0,0 +1,93 @@
+<template>
+  <TableLayout :permissions="['business:brand:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鍝佺墝鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ搧鐗屽悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:brand:exportExcel']" @click="exportExcel">瀵煎嚭</el-button> -->
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:brand:create']">
+        <li><el-button type="primary" @click="$refs.operaBrandWindow.open('鏂板缓鍝佺墝')" icon="el-icon-plus"
+            v-permissions="['business:brand:create']">鏂板缓</el-button></li>
+      </ul>
+      <el-table v-loading="isWorking.search" :data="tableData.list" stripe border :header-cell-style="rowStyle"
+        :cell-style="rowStyle">
+        <el-table-column prop="name" label="鍝佺墝鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="imgfullurl" label="鍝佺墝鍥炬爣" min-width="100px">
+          <template slot-scope="{row}">
+            <el-image v-if="row.imgfullurl" style="width: 70px; height: 70px" :src="row.imgfullurl"
+              :preview-src-list="[row.imgfullurl]" fit="cover"></el-image>
+          </template>
+        </el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�(鍗囧簭)" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column v-if="containPermissions(['business:brand:update', 'business:brand:delete'])" label="鎿嶄綔"
+          min-width="120" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="edit(row)" icon="el-icon-edit"
+              v-permissions="['business:brand:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+              v-permissions="['business:brand:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaBrandWindow ref="operaBrandWindow" @success="handlePageChange" />
+  </TableLayout>
+</template>
+  
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaBrandWindow from '@/components/business/OperaBrandWindow'
+export default {
+  name: 'Brand',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaBrandWindow },
+  data() {
+    return {
+      // 鎼滅储
+      searchForm: {
+        name: '',
+        type: 1
+      }
+    }
+  },
+  created() {
+    this.config({
+      module: '鍝佺墝',
+      api: '/business/brand',
+      'field.id': 'id',
+      'field.main': 'name'
+    })
+    this.search()
+  },
+  methods: {
+    rowStyle() {
+      return "text-align:center";
+    },
+    edit(row) {
+      let obj = {
+        id: row.id,
+        name: row.name,
+        sortnum: row.sortnum,
+        imgurl: row.imgurl,
+        imgfullurl: row.imgfullurl
+      }
+      this.$refs.operaBrandWindow.open('缂栬緫鍝佺墝', obj)
+    }
+  }
+}
+</script>
+  
\ No newline at end of file
diff --git a/platform/src/views/business/category.vue b/platform/src/views/business/category.vue
new file mode 100644
index 0000000..f937c4c
--- /dev/null
+++ b/platform/src/views/business/category.vue
@@ -0,0 +1,120 @@
+<template>
+  <TableLayout :permissions="['business:category:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="绫诲埆鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ョ被鍒悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:category:exportExcel']" @click="exportExcel">瀵煎嚭</el-button> -->
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:category:create']">
+        <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓绫诲埆')" icon="el-icon-plus"
+            v-permissions="['business:category:create']">鏂板缓</el-button></li>
+      </ul>
+      <el-table v-loading="isWorking.search" :data="tableData.list" stripe border :header-cell-style="rowStyle"
+        :cell-style="rowStyle">
+        <el-table-column prop="imgurl" label="鍥炬爣" min-width="100px">
+          <template slot-scope="{row}">
+            <el-image v-if="row.imgurl" style="width: 70px; height: 70px" :src="row.imgfullurl"
+              :preview-src-list="[row.imgfullurl]" fit="cover"></el-image>
+          </template>
+        </el-table-column>
+        <el-table-column prop="name" label="绫诲埆鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="priceRate" label="鍔犱环绯绘暟" min-width="100px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�(鍗囧簭)" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column v-if="containPermissions(['business:category:update'])" prop="status" label="鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <el-switch v-model="row.status" @change="changeStatus(row)" :active-value="0" :inactive-value="1">
+            </el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])" label="鎿嶄綔"
+          min-width="120" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="edit(row.id)" v-permissions="['business:category:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange" />
+  </TableLayout>
+</template>
+  
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
+import { queryById, updateDisableById } from '@/api/business/category.js'
+export default {
+  name: 'Category',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaCategoryWindow },
+  data() {
+    return {
+      // 鎼滅储
+      searchForm: {
+        name: ''
+      }
+    }
+  },
+  created() {
+    this.config({
+      module: '绫诲埆',
+      api: '/business/category',
+      'field.id': 'id',
+      'field.main': 'name'
+    })
+    this.search()
+  },
+  methods: {
+    rowStyle() {
+      return "text-align:center";
+    },
+    changeStatus(item) {
+      updateDisableById({
+        id: item.id,
+        status: item.status
+      }).then(res => {
+        this.$tip.apiSuccess('鏇存柊鎴愬姛')
+      }).catch (err => {
+          this.$message.error(err)
+        })
+        .finally(() => {
+        this.handlePageChange()
+      })
+    },
+    edit(id) {
+      queryById(id)
+        .then(res => {
+          let obj = {
+            id,
+            name: res.name,
+            attrFirst: res.attrFirst,
+            attrFirstList: res.attrFirstList,
+            attrSecond: res.attrSecond,
+            attrSecondList: res.attrSecondList,
+            sortnum: res.sortnum,
+            paramList: res.paramList,
+            imgurl: res.imgurl,
+            budgetList: res.budgetList,
+            fileList: res.imgurl ? [{ url: res.prefixUrl + res.imgurl }] : []
+          }
+          this.$refs.operaCategoryWindow.open('缂栬緫绫诲埆', res)
+        })
+    }
+  }
+}
+</script>
+  
\ No newline at end of file
diff --git a/platform/src/views/business/company.vue b/platform/src/views/business/company.vue
index 51341f7..8db04cd 100644
--- a/platform/src/views/business/company.vue
+++ b/platform/src/views/business/company.vue
@@ -1,146 +1,153 @@
 <template>
-    <TableLayout :permissions="['business:company:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="浼佷笟鍚嶇О" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ヤ紒涓氬悕绉�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="鎵�灞炲晢鎴�" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ユ墍灞炲晢鎴�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="鎵�灞炵悊璧斿憳" prop="username">
-                <el-input v-model="searchForm.username" placeholder="璇疯緭鍏ユ墍灞炵悊璧斿憳" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:company:create']">
-                <li><el-button type="primary" @click="$refs.operaCompanyWindow.open('鏂板缓浼佷笟')" v-permissions="['business:company:create']">鏂板缓浼佷笟</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column prop="name" label="浼佷笟鍚嶇О" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="缁熶竴淇$敤浠g爜" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="娣诲姞鏃堕棿" min-width="100px"></el-table-column>
-                <el-table-column prop="phone" label="缁戝畾鎵嬫満鍙�" min-width="100px"></el-table-column>
-                <el-table-column label="鍚敤鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <el-switch
-                            @change="changeStatus($event, row)"
-                            v-model="row.status"
-                            active-color="#13ce66"
-                            inactive-color="#ff4949"
-                            :active-value="0"
-                            :inactive-value="1">
-                        </el-switch>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:company:update', 'business:company:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="$refs.OperaCompanyDescWindow.open('浼佷笟璇︽儏', row)"  v-permissions="['business:company:update']">鏌ョ湅璇︽儏</el-button>
-                        <el-button type="text" @click="edit(row)" v-permissions="['business:company:update']">淇敼</el-button>
-                        <el-button type="text" @click="$refs.operaCompanyWindow.open('缂栬緫浼佷笟淇℃伅琛�', row)" v-permissions="['business:company:update']">鐢靛瓙绛捐璇�</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaCompanyWindow ref="operaCompanyWindow" @success="handlePageChange" />
-        <!-- 璇︽儏 -->
-        <OperaCompanyDescWindow ref="OperaCompanyDescWindow" @success="handlePageChange" />
-    </TableLayout>
+  <TableLayout :permissions="['business:company:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="浼佷笟鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ヤ紒涓氬悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <!-- <el-form-item label="浼佷笟绠�绉�" prop="shortName">
+        <el-input v-model="searchForm.shortName" placeholder="璇疯緭鍏ヤ紒涓氱畝绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item> -->
+      <el-form-item label="鐧诲綍璐﹀彿" prop="managerUserName">
+        <el-input v-model="searchForm.managerUserName" placeholder="璇疯緭鍏ョ櫥褰曡处鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏈夋晥鏈�" prop="oepnValidDate">
+        <el-date-picker type="daterange" v-model="oepnValidDate" value-format="yyyy-MM-dd" start-placeholder="寮�濮嬫棩鏈�"
+          end-placeholder="缁撴潫鏃ユ湡" @change="selectOepnValidDate" />
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨" @change="search">
+          <el-option label="鍚敤" :value="0"></el-option>
+          <el-option label="绂佺敤" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:company:create']">
+        <li><el-button type="primary" @click="$refs.operaCompanyWindow.open('鏂板缓绯荤粺-浼佷笟淇℃伅琛�')"
+            v-permissions="['business:company:create']">鏂板缓</el-button></li>
+      </ul>
+      <el-table v-loading="isWorking.search" :data="tableData.list" border stripe
+        @selection-change="handleSelectionChange">
+        <!-- <el-table-column type="selection" width="55" align="center"></el-table-column> -->
+        <el-table-column prop="id" label="浼佷笟缂栧彿" fixed="left" min-width="80px" align="center"></el-table-column>
+        <el-table-column prop="name" label="浼佷笟鍚嶇О" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="managerUserName" label="鐧诲綍璐﹀彿" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="linkname" label="鑱旂郴浜�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="linkephone" label="鑱旂郴浜虹數璇�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="oepnValidDate" label="鏈夋晥鏈�" min-width="140px" align="center"></el-table-column>
+        <el-table-column prop="userNum" label="涓绘挱璐﹀彿闄愬埗" min-width="100px" align="center">
+          <template slot-scope="{row}">
+            {{ row.userNum || '涓嶉檺' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="anchorUserNum" label="涓绘挱鏁�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="empUserNum" label="鍛樺伐鏁�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="goodsNum" label="鍟嗗搧鏁�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="salesmanRealName" label="閿�鍞汉鍛�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="status" label="鐘舵��" min-width="100px" align="center">
+          <template slot-scope="{row}">
+            <!-- 0鍚敤 1绂佺敤 -->
+            <el-switch :disabled="!containPermissions(['business:company:update'])" v-model="row.status"
+              :inactive-value="1" :active-value="0" @change="changeStatus(row)">
+            </el-switch>
+          </template>
+
+        </el-table-column>
+        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="140px" align="center"></el-table-column>
+        <el-table-column v-if="containPermissions(['business:company:update', 'business:company:delete'])" label="鎿嶄綔"
+          min-width="160" align="center" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaCompanyWindow.open('缂栬緫浼佷笟', row)"
+              v-permissions="['business:company:update']">缂栬緫</el-button>
+            <el-button type="text" @click="$refs.operaCompanyValidDateWindow.open('璋冩暣鏈夋晥鏈�', row)"
+              v-permissions="['business:company:update']">璋冩暣鏈夋晥鏈�</el-button>
+            <el-button type="text" @click="deleteById(row)" style="color: red;" v-permissions="['business:company:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaCompanyWindow ref="operaCompanyWindow" @success="handlePageChange" />
+    <OperaCompanyValidDateWindow ref="operaCompanyValidDateWindow" @success="handlePageChange" />
+  </TableLayout>
 </template>
 
 <script>
-    import BaseTable from '@/components/base/BaseTable'
-    import TableLayout from '@/layouts/TableLayout'
-    import Pagination from '@/components/common/Pagination'
-    import OperaCompanyWindow from '@/components/business/OperaCompanyWindow'
-    import OperaCompanyDescWindow from '@/components/business/OperaCompanyDescWindow'
-    import { updateStatus, getById } from '@/api/business/company'
-    export default {
-        name: 'Company',
-        extends: BaseTable,
-        components: { TableLayout, Pagination, OperaCompanyWindow, OperaCompanyDescWindow },
-        data () {
-            return {
-                // 鎼滅储
-                searchForm: {
-                    name: '',
-                    username: ''
-                }
-            }
-        },
-        created () {
-            this.config({
-                module: '浼佷笟淇℃伅琛�',
-                api: '/business/company',
-                'field.id': 'id',
-                'field.main': 'id'
-            })
-            this.search()
-        },
-        methods: {
-            edit(row) {
-                getById(row.id)
-                    .then(res => {
-                        let form = res;
-                        form.type = 1
-                        form.file = {
-                            imgurl: '',
-                            imgurlfull: ''
-                        }
-                        form.file1 = {
-                            imgurl: '',
-                            imgurlfull: ''
-                        }
-                        form.file2 = {
-                            imgurl: '',
-                            imgurlfull: ''
-                        }
-                        form.file3 = {
-                            imgurl: '',
-                            imgurlfull: ''
-                        }
-                        form.file.imgurl = res.businessImg.fileurl
-                        form.file.imgurlfull = res.businessImg.fileurlFull
-                        form.file1.imgurl = res.idcardImgList[0].fileurl
-                        form.file1.imgurlfull = res.idcardImgList[0].fileurlFull
-                        form.file2.imgurl = res.idcardImgList[1].fileurl
-                        form.file2.imgurlfull = res.idcardImgList[1].fileurlFull
-                        form.file3.imgurl = res.signImg.fileurl
-                        form.file3.imgurlfull = res.signImg.fileurlFull
-                        this.$refs.operaCompanyWindow.open('缂栬緫浼佷笟', form)
-                    })
-            },
-            // 淇敼鐘舵��
-            changeStatus(status, row) {
-                updateStatus({ id: row.id, status })
-                    .then(res => {
-                        this.search()
-                    })
-                    .catch(err => {
-                        row.status = row.status === 0 ? 1 : 0
-                    })
-            }
-        }
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaCompanyWindow from '@/components/business/OperaCompanyWindow'
+import OperaCompanyValidDateWindow from '@/components/business/OperaCompanyValidDateWindow'
+import { updateById } from '@/api/business/company'
+export default {
+  name: 'Company',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaCompanyWindow, OperaCompanyValidDateWindow },
+  data() {
+    return {
+      oepnValidDate: [],
+      // 鎼滅储
+      searchForm: {
+        oepnValidDateStart: '',
+        oepnValidDateEnd: '',
+        managerUserName: '',
+        updateTime: '',
+        name: '',
+        shortName: '',
+        remark: '',
+        managerId: '',
+        linkname: '',
+        linkephone: '',
+        creditCode: '',
+        userNum: '',
+        oepnValidDate: '',
+        oepnType: '',
+        salesmanId: '',
+        status: ''
+      }
     }
+  },
+  created() {
+    this.config({
+      module: '绯荤粺-浼佷笟淇℃伅琛�',
+      api: '/business/company',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    selectOepnValidDate(v) {
+      [this.searchForm.oepnValidDateStart, this.searchForm.oepnValidDateEnd] = v
+    },
+    reset() {
+      // this.reset()
+      this.$refs.searchForm.resetFields()
+      this.searchForm.oepnValidDateStart = ''
+      this.searchForm.oepnValidDateEnd = ''
+      this.oepnValidDate = []
+      this.search()
+    },
+    changeStatus(row) {
+      updateById(row)
+        .then(() => {
+          this.$tip.apiSuccess('鏇存柊鎴愬姛')
+        })
+        .catch(err => {
+          this.$tip.apiFailed(err)
+        })
+        .finally(() => {
+          this.handlePageChange()
+        })
+    }
+  },
+}
 </script>
diff --git a/platform/src/views/business/companyUser.vue b/platform/src/views/business/companyUser.vue
new file mode 100644
index 0000000..a0b541d
--- /dev/null
+++ b/platform/src/views/business/companyUser.vue
@@ -0,0 +1,115 @@
+<template>
+  <TableLayout :permissions="['business:companyUser:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="浼佷笟鍚嶇О" prop="companyName">
+        <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ヤ紒涓氬悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <!-- <el-form-item label="浼佷笟绠�绉�" prop="shortName">
+        <el-input v-model="searchForm.shortName" placeholder="璇疯緭鍏ヤ紒涓氱畝绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item> -->
+      <el-form-item label="璐﹀彿淇℃伅" prop="keyWords">
+        <el-input v-model="searchForm.keyWords" placeholder="璇疯緭鍏ョ櫥褰曡处鍙�/濮撳悕" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨" @change="search">
+          <el-option label="鍚敤" :value="0"></el-option>
+          <el-option label="绂佺敤" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <el-table v-loading="isWorking.search" :data="tableData.list" border stripe
+        @selection-change="handleSelectionChange">
+        <!-- <el-table-column type="selection" width="55" align="center"></el-table-column> -->
+        <el-table-column prop="companyName" label="浼佷笟鍚嶇О" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="username" label="鐧诲綍璐﹀彿" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="realname" label="濮撳悕" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="mobile" label="鎵嬫満鍙�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="roleName" label="瑙掕壊" min-width="100px" align="center">
+          <template slot-scope="{row}">
+            <ul>
+              <li v-for="role in row.roles" :key="role.id">{{role.name}}</li>
+            </ul>
+          </template>
+        </el-table-column>
+        <el-table-column prop="status" label="鐘舵��" min-width="100px" align="center">
+          <template slot-scope="{row}">
+            <!-- 0鍚敤 1绂佺敤 -->
+            <el-switch :disabled="!containPermissions(['business:companyUser:update'])" v-model="row.status"
+              :inactive-value="1" :active-value="0" @change="changeStatus(row)">
+            </el-switch>
+          </template>
+
+        </el-table-column>
+        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="140px" align="center"></el-table-column>
+      </el-table>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      </pagination>
+    </template>
+
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import { updateById } from '@/api/system/user'
+export default {
+  name: 'Company',
+  extends: BaseTable,
+  components: { TableLayout, Pagination },
+  data() {
+    return {
+      oepnValidDate: [],
+      // 鎼滅储
+      searchForm: {
+        companyName: '',
+        keyWords: '',
+        status: '',
+        type: 1
+      }
+    }
+  },
+  created() {
+    this.config({
+      module: '绯荤粺-浼佷笟淇℃伅琛�',
+      api: '/business/companyUser',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    selectOepnValidDate(v) {
+      [this.searchForm.oepnValidDateStart, this.searchForm.oepnValidDateEnd] = v
+    },
+    reset() {
+      // this.reset()
+      this.$refs.searchForm.resetFields()
+      this.searchForm.oepnValidDateStart = ''
+      this.searchForm.oepnValidDateEnd = ''
+      this.oepnValidDate = []
+      this.search()
+    },
+    changeStatus(row) {
+      updateById(row)
+        .then(() => {
+          this.$tip.apiSuccess('鏇存柊鎴愬姛')
+        })
+        .catch(err => {
+          this.$tip.apiFailed(err)
+        })
+        .finally(() => {
+          this.handlePageChange()
+        })
+    }
+  },
+}
+</script>
diff --git a/platform/src/views/business/dispatchUnit.vue b/platform/src/views/business/dispatchUnit.vue
deleted file mode 100644
index ba4cdc2..0000000
--- a/platform/src/views/business/dispatchUnit.vue
+++ /dev/null
@@ -1,88 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:dispatchunit:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="鎵�灞炲晢鎴�" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ユ墍灞炲晢鎴�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="娲鹃仯鍗曚綅" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ユ淳閬e崟浣�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-<!--            <ul class="toolbar" v-permissions="['business:dispatchunit:create']">-->
-<!--                <li><el-button type="primary" @click="$refs.operaDispatchUnitWindow.open('娲鹃仯鍗曚綅璇︽儏')" icon="el-icon-plus" v-permissions="['business:dispatchunit:create']">鏂板缓</el-button></li>-->
-<!--            </ul>-->
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column label="搴忓彿" width="80px">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="companyId" label="鎵�灞炰紒涓�"></el-table-column>
-                <el-table-column prop="companyId" label="娲鹃仯鍗曚綅"></el-table-column>
-                <el-table-column prop="companyId" label="淇濋櫓鏂规"></el-table-column>
-                <el-table-column prop="unitStatus" label="浼佷笟鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.unitStatus === 0">寰呭鏍�</span>
-                        <span v-if="row.unitStatus === 1">瀹℃牳閫氳繃</span>
-                        <span v-if="row.unitStatus === 2">瀹℃牳涓嶉�氳繃</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="unitStatus" label="鎿嶄綔" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.unitStatus === 0">寰呭鏍�</span>
-                        <span v-if="row.unitStatus === 1">瀹℃牳閫氳繃</span>
-                        <span v-if="row.unitStatus === 2">瀹℃牳涓嶉�氳繃</span>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 璇︽儏 -->
-        <OperaDispatchUnitWindow ref="operaDispatchUnitWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-    import BaseTable from '@/components/base/BaseTable'
-    import TableLayout from '@/layouts/TableLayout'
-    import Pagination from '@/components/common/Pagination'
-    import OperaDispatchUnitWindow from '@/components/business/OperaDispatchUnitWindow'
-    export default {
-        name: 'DispatchUnit',
-        extends: BaseTable,
-        components: { TableLayout, Pagination, OperaDispatchUnitWindow },
-        data () {
-            return {
-                // 鎼滅储
-                searchForm: {
-                    name: ''
-                }
-            }
-        },
-        created () {
-            this.config({
-                module: '娲鹃仯鍗曚綅淇℃伅琛�',
-                api: '/business/dispatchUnit',
-                'field.id': 'id',
-                'field.main': 'id'
-            })
-            this.search()
-        }
-    }
-</script>
diff --git a/platform/src/views/business/dispatchUnitReview.vue b/platform/src/views/business/dispatchUnitReview.vue
deleted file mode 100644
index 081779a..0000000
--- a/platform/src/views/business/dispatchUnitReview.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:dispatchunit:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="鎵�灞炰紒涓�" prop="companyId">
-                <el-select v-model="searchForm.companyId" placeholder="璇烽�夋嫨" @change="search">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="娲鹃仯鍗曚綅" prop="name">
-                <el-select v-model="searchForm.name" placeholder="璇烽�夋嫨" @change="search">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-                <el-button @click="$refs.dispatchUnitReviewDetails.open('娲鹃仯鍗曚綅璇︽儏')">璇︽儏</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column label="搴忓彿" width="80px">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="companyId" label="鎵�灞炰紒涓�" min-width="100px"></el-table-column>
-                <el-table-column prop="name" label="娲鹃仯鍗曚綅" min-width="100px"></el-table-column>
-                <el-table-column label="娲鹃仯鍗曚綅鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.unitStatus === 0">寰呭鏍�</span>
-                        <span v-if="row.unitStatus === 1">瀹℃牳閫氳繃</span>
-                        <span v-if="row.unitStatus === 2">瀹℃牳涓嶉�氳繃</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="createDate" label="鎻愪氦鏃ユ湡" min-width="100px"></el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:dispatchunit:update', 'business:dispatchunit:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="$refs.operaDispatchUnitWindow.open('缂栬緫娲鹃仯鍗曚綅淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:dispatchunit:update']">鏌ョ湅璇︽儏</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <dispatchUnitReviewDetails ref="dispatchUnitReviewDetails" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-    import BaseTable from '@/components/base/BaseTable'
-    import TableLayout from '@/layouts/TableLayout'
-    import Pagination from '@/components/common/Pagination'
-    import dispatchUnitReviewDetails from '@/components/business/dispatchUnitReviewDetails'
-    export default {
-        name: 'dispatchUnitReview',
-        extends: BaseTable,
-        components: { TableLayout, Pagination, dispatchUnitReviewDetails },
-        data () {
-            return {
-                // 鎼滅储
-                searchForm: {
-                    name: '',
-                    companyId: ''
-                }
-            }
-        },
-        created () {
-            this.config({
-                module: '娲鹃仯鍗曚綅淇℃伅琛�',
-                api: '/business/dispatchUnit',
-                'field.id': 'id',
-                'field.main': 'id'
-            })
-            this.search()
-        }
-    }
-</script>
diff --git a/platform/src/views/business/fileRecord.vue b/platform/src/views/business/fileRecord.vue
new file mode 100644
index 0000000..f2160c6
--- /dev/null
+++ b/platform/src/views/business/fileRecord.vue
@@ -0,0 +1,119 @@
+<template>
+  <TableLayout :permissions="['business:filerecord:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      
+      <!-- <el-form-item label="鏂囦欢鍚�" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ユ枃浠跺悕" @keypress.enter.native="search"></el-input>
+      </el-form-item> -->
+      
+      <el-form-item label="鏂囦欢澶瑰悕绉�" prop="folder">
+        <el-input v-model="searchForm.folder" placeholder="璇疯緭鍏ユ枃浠跺す鍚嶇О" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+     
+      <el-form-item label="OSS鏂囦欢key" prop="keyval">
+        <el-input v-model="searchForm.keyval" placeholder="璇疯緭鍏SS鏂囦欢key" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨鐘舵��">
+          <el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item> 
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        border
+        stripe
+      >
+       <el-table-column type="index" :index="newIndex" label="搴忓彿" width="80px" align="center"></el-table-column>
+       <el-table-column prop="name" label="鏂囦欢" width="100px" align="center">
+        <template slot-scope="{row}">
+          <el-image v-if="row.url" style="width: 70px; height: 70px" :src="row.url"
+                  :preview-src-list="[row.url]" fit="cover"></el-image>
+        </template>
+       </el-table-column>
+        <el-table-column prop="folder" label="鏂囦欢澶瑰悕绉�" width="140px" align="center"></el-table-column>
+        <el-table-column prop="keyval" label="OSS鏂囦欢key" min-width="120px" align="center"></el-table-column>
+        <el-table-column prop="status" label="鐘舵��" width="100px" align="center">
+          <template slot-scope="{row}">
+            <!--  0鏈笂浼� 1宸蹭笂浼� 2涓婁紶澶辫触 -->
+            {{ row.status == 0 ? '鏈笂浼�' : row.status == 1 ? '宸蹭笂浼�' : '涓婁紶澶辫触' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" width="150px" align="center"></el-table-column>
+        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" width="150px" align="center"></el-table-column>
+<!--      
+        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
+        <el-table-column prop="info" label="澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="objId" label="鍏宠仈瀵硅薄缂栫爜" min-width="100px"></el-table-column>
+        <el-table-column prop="type" label="绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬" min-width="100px"></el-table-column> -->
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+export default {
+  name: 'FileRecord',
+  extends: BaseTable,
+  components: { TableLayout, Pagination },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        name: '',
+        info: '',
+        objId: '',
+        type: '',
+        folder: '',
+        status: '',
+        keyval: ''
+      },
+      statusList: [
+        // 0鏈笂浼� 1宸蹭笂浼� 2涓婁紶澶辫触
+        { name: '鏈笂浼�', id: 0 },
+        { name: '宸蹭笂浼�', id: 1 },
+        { name: '涓婁紶澶辫触', id: 2 }
+      ]
+    }
+  },
+  created () {
+    this.config({
+      module: '闄勪欢涓婁紶杩涘害琛�',
+      api: '/business/fileRecord',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    newIndex(index) {
+      return (this.tableData.pagination.pageIndex - 1) * 10 + index + 1
+    }
+  },
+}
+</script>
diff --git a/platform/src/views/business/goods.vue b/platform/src/views/business/goods.vue
new file mode 100644
index 0000000..dcc2e33
--- /dev/null
+++ b/platform/src/views/business/goods.vue
@@ -0,0 +1,227 @@
+
+<template>
+  <TableLayout :permissions="['business:basegoods:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鍟嗗搧鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍟嗗搧ID" prop="id">
+        <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ュ晢鍝両D" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="绫诲埆" prop="categoryId">
+        <el-select v-model="searchForm.categoryId" clearable placeholder="璇烽�夋嫨">
+          <el-option v-for="item in categoryList" :key="item.id" :label="item.name" :value="item.id">
+          </el-option>
+        </el-select>
+        <!-- <el-input v-model="searchForm.categoryId" placeholder="璇疯緭鍏ユ墍灞炲搧绫荤紪鐮�" @keypress.enter.native="search"></el-input> -->
+      </el-form-item>
+      <el-form-item label="鍝佺墝" prop="brandId">
+        <el-select v-model="searchForm.brandId" clearable placeholder="璇烽�夋嫨">
+          <el-option v-for="item in brandList" :key="item.id" :label="item.name" :value="item.id">
+          </el-option>
+        </el-select>
+        <!-- <el-input v-model="searchForm.brandId" placeholder="璇疯緭鍏ユ墍灞炲搧鐗岀紪鐮�" @keypress.enter.native="search"></el-input> -->
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨">
+          <el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id">
+          </el-option>
+        </el-select>
+        <!-- <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" @keypress.enter.native="search"></el-input> -->
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:basegoods:create', 'business:basegoods:delete']">
+        <li v-permissions="['business:basegoods:create']">
+          <el-button type="primary" @click="$refs.operaGoodsWindow.open('鏂板缓鍟嗗搧')" icon="el-icon-plus">鏂板缓</el-button>
+        </li>
+        <!-- <el-button type="primary" :loading="isWorking.export"
+          @click="$refs.selectProduct.open('閫夋嫨骞冲彴鍟嗗搧')">閫夋嫨骞冲彴鍟嗗搧</el-button> -->
+        <li v-permissions="['business:basegoods:exportExcel', 'business:goods:delete']">
+          <ImportButton text="瀵煎叆" template-name="goods_import_modle.xlsx"
+            template-path="/template/goods_import_modle.xlsx" action="/business/baseGoods/importExcel"
+            @success="search" />
+        </li>
+        <li>
+          <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(0)">鎵归噺涓婃灦</el-button>
+        </li>
+        <li>
+          <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(1)">鎵归噺涓嬫灦</el-button>
+        </li>
+        <li v-permissions="['business:goods:delete']">
+          <el-button type="danger" @click="deleteByIdInBatch">鎵归噺鍒犻櫎</el-button>
+        </li>
+      </ul>
+      <el-table v-loading="isWorking.search" :data="tableData.list" stripe border :header-cell-style="rowStyle"
+        :cell-style="rowStyle" @selection-change="handleSelectionChange">
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="id" label="鍟嗗搧ID" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="鍟嗗搧鍚嶇О/鍨嬪彿" min-width="200px">
+          <template slot-scope="{row}">
+            <div style="display: flex; align-items: center;">
+              <div style="width: 70px; height: 70px; flex-shrink: 0;">
+                <el-image v-if="row.imgurl" style="width: 70px; height: 70px" :src="row.fullImgUrl"
+                  :preview-src-list="[row.fullImgUrl]" fit="cover"></el-image>
+              </div>
+              <span style="margin-left: 15px">{{ row.name }}</span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="brandName" label="鍝佺墝" min-width="100px"></el-table-column>
+        <el-table-column prop="categoryName" label="绫诲埆" min-width="100px"></el-table-column>
+        <el-table-column prop="zdPrice" label="鎸囧浠凤紙鍏冿級" min-width="100px"></el-table-column>
+        <el-table-column prop="jdPrice" label="閲囪喘浠�(鍏�)" min-width="100px"></el-table-column>
+        <el-table-column prop="price" label="閿�鍞环(鍏�)" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="status" v-if="containPermissions(['business:basegoods:update'])" label="鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <el-switch v-model="row.status" @change="changeStatus(row)" active-color="#13ce66" inactive-color="#ff4949"
+              :active-value="0" :inactive-value="1">
+            </el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="containPermissions(['business:basegoods:update', 'business:basegoods:delete'])" label="鎿嶄綔"
+          min-width="120" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="edit(row.id)" icon="el-icon-edit"
+              v-permissions="['business:basegoods:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+              v-permissions="['business:basegoods:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaGoodsWindow ref="operaGoodsWindow" @success="handlePageChange" />
+    <!-- 閫夋嫨骞冲彴鍟嗗搧 -->
+    <selectProduct ref="selectProduct" @success="handlePageChange" @result="search" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaGoodsWindow from '@/components/business/OperaGoodsWindow'
+import selectProduct from '@/components/business/selectProduct'
+import ImportButton from '@/components/common/ImportButton'
+import { brand, baseCategory } from '@/api/system/common.js'
+import { updateStatus, queryById, exportDoc } from '@/api/business/goods.js'
+export default {
+  name: 'Goods',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaGoodsWindow, selectProduct, ImportButton },
+  data() {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        name: '',
+        status: '',
+        categoryId: '',
+        brandId: ''
+      },
+      ids: '',
+      idList: [],
+      categoryList: [],
+      brandList: [],
+      statusList: [
+        { name: '鍚敤', id: 0 },
+        { name: '绂佺敤', id: 1 }
+      ]
+    }
+  },
+  provide() {
+    return {
+      brandList: () => this.brandList,
+      categoryList: () => this.categoryList
+    }
+  },
+  created() {
+    this.config({
+      module: '鍟嗗搧',
+      api: '/business/goods',
+      'field.id': 'id',
+      'field.main': 'name'
+    })
+    this.search()
+    this.getbrand()
+    this.getcategory()
+  },
+  methods: {
+    // handleSelectionChange(e) {
+    //   let arr = e.map(item => item.id)
+    //   this.ids = arr.join(',')
+    //   this.idList = arr;
+    // },
+    // 鎵归噺涓婁笅鏋�
+    bulkOperation(type) {
+      if (this.tableData.selectedRows.length === 0) {
+        this.$tip.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�')
+        return
+      }
+      let idList = this.tableData.selectedRows.map(item => item.id)
+      updateStatus({
+        idList,
+        status: type
+      }).then(res => {
+        this.$tip.apiSuccess('鎿嶄綔鎴愬姛');
+        // this.$message.success({ message:res.message })
+        this.handlePageChange()
+      })
+    },
+    downloadFile() {
+      exportDoc({})
+        .then(response => {
+          this.download(response)
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+    },
+    rowStyle() {
+      return "text-align:center";
+    },
+    edit(id) {
+      queryById(id)
+        .then(res => {
+          this.$refs.operaGoodsWindow.open('缂栬緫鍟嗗搧', res)
+        })
+    },
+    changeStatus(item) {
+      updateStatus({
+        idList: [item.id],
+        status: item.status
+      }).then(res => {
+        this.$tip.apiSuccess('鏇存柊鎴愬姛')
+      })
+        .catch (err => {
+          this.$message.error(err)
+        } )
+      .finally(() => {
+        this.handlePageChange()
+      })
+    },
+    getbrand() {
+      brand({ type: 1 })
+        .then(res => {
+          this.brandList = res
+        })
+    },
+    getcategory() {
+      baseCategory({})
+        .then(res => {
+          this.categoryList = res
+        })
+    }
+  }
+}
+</script>
diff --git a/platform/src/views/business/insurance.vue b/platform/src/views/business/insurance.vue
deleted file mode 100644
index fd66933..0000000
--- a/platform/src/views/business/insurance.vue
+++ /dev/null
@@ -1,109 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:insurance:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="淇濋櫓鍏徃" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-<!--                <el-button type="primary" :loading="isWorking.export" v-permissions="['business:insurance:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>-->
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:insurance:create']">
-                <li><el-button type="primary" @click="$refs.operaInsuranceWindow.open('鏂板淇濋櫓鍏徃')" v-permissions="['business:insurance:create']">鏂板淇濋櫓鍏徃</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column label="搴忓彿" width="80px">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="name" label="淇濋櫓鍏徃" min-width="100px"></el-table-column>
-                <el-table-column label="鍚敤鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <el-switch
-                            @change="changeStatus($event, row)"
-                            v-model="row.status"
-                            active-color="#13ce66"
-                            inactive-color="#ff4949"
-                            :active-value="0"
-                            :inactive-value="1">
-                        </el-switch>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:insurance:update', 'business:insurance:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="$refs.OperaInsuranceDescWindow.open('淇濋櫓鍏徃璇︽儏', row)" icon="el-icon-edit" v-permissions="['business:insurance:update']">鏌ョ湅璇︽儏</el-button>
-                        <el-button type="text" @click="$refs.operaInsuranceWindow.open('淇敼淇濋櫓鍏徃', row)" icon="el-icon-edit" v-permissions="['business:insurance:update']">淇敼</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaInsuranceWindow ref="operaInsuranceWindow" @success="handlePageChange"/>
-        <!-- 璇︽儏 -->
-        <OperaInsuranceDescWindow ref="OperaInsuranceDescWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-    import BaseTable from '@/components/base/BaseTable'
-    import TableLayout from '@/layouts/TableLayout'
-    import Pagination from '@/components/common/Pagination'
-    import OperaInsuranceWindow from '@/components/business/OperaInsuranceWindow'
-    import OperaInsuranceDescWindow from '@/components/business/OperaInsuranceDescWindow'
-    import { updateStatus } from '@/api/business/insurance'
-    export default {
-        name: 'Insurance',
-        extends: BaseTable,
-        components: { TableLayout, Pagination, OperaInsuranceWindow, OperaInsuranceDescWindow },
-        data () {
-            return {
-                // 鎼滅储
-                searchForm: {
-                    name: ''
-                }
-            }
-        },
-        created () {
-            this.config({
-                module: '淇濋櫓鍏徃淇℃伅琛�',
-                api: '/business/insurance',
-                'field.id': 'id',
-                'field.main': 'id'
-            })
-            this.search()
-        },
-        methods: {
-            // 淇敼鐘舵��
-            changeStatus(status, row) {
-                updateStatus({ id: row.id, status })
-                    .then(res => {
-                        this.search()
-                    })
-                    .catch(err => {
-                        row.status = row.status === 0 ? 1 : 0
-                    })
-            }
-        }
-    }
-</script>
diff --git a/platform/src/views/business/insuranceApply.vue b/platform/src/views/business/insuranceApply.vue
deleted file mode 100644
index b51a383..0000000
--- a/platform/src/views/business/insuranceApply.vue
+++ /dev/null
@@ -1,143 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:insuranceapply:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="淇濆崟鐘舵��" prop="status">
-                <el-select v-model="searchForm.statusCollect" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option label="寰呭鎵�" value="0"></el-option>
-                    <el-option label="寰呭嚭鍗�" value="1"></el-option>
-                    <el-option label="淇濋殰涓�" value="2"></el-option>
-                    <el-option label="宸茶繃鏈�" value="3"></el-option>
-                    <el-option label="宸查��鍥�" value="4"></el-option>
-                    <el-option label="閫�鍥炵敵璇蜂腑" value="5"></el-option>
-                    <el-option label="宸插叧闂�" value="6"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鎶曚繚浼佷笟" prop="companyId">
-                <el-select v-model="searchForm.companyId" placeholder="璇烽�夋嫨" @change="search">
-                    <el-option
-                        v-for="item in companyList"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="淇濋櫓鏂规" prop="solutionId">
-                <el-select v-model="searchForm.solutionId" placeholder="璇烽�夋嫨" @change="search">
-                    <el-option
-                        v-for="item in solutionList"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鎻愪氦鏃ユ湡" prop="createDate">
-                <el-date-picker
-                    v-model="searchForm.createDate"
-                    @change="search"
-                    type="daterange"
-                    range-separator="鑷�"
-                    value-format="yyyy-MM-dd"
-                    start-placeholder="寮�濮嬫棩鏈�"
-                    end-placeholder="缁撴潫鏃ユ湡">
-                </el-date-picker>
-<!--                <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"/>-->
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-                <el-button @click="$refs.operaInsuranceApplyWindow.open('鎶曚繚璇︽儏')">鎶曚繚璇︽儏</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column label="搴忓彿" width="80px">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="status" label="鎶曚繚鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.statusCollect === 0">寰呭鏍�</span>
-                        <span v-if="row.statusCollect === 1">寰呭嚭鍗�</span>
-                        <span v-if="row.statusCollect === 2">淇濋殰涓�</span>
-                        <span v-if="row.statusCollect === 3">宸茶繃鏈�</span>
-                        <span v-if="row.statusCollect === 4">宸查��鍥�</span>
-                        <span v-if="row.statusCollect === 5">閫�鍥炵敵璇蜂腑</span>
-                        <span v-if="row.statusCollect === 6">宸插叧闂�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="companyName" label="鎶曚繚浼佷笟" min-width="100px"></el-table-column>
-                <el-table-column prop="solutionsName" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
-                <el-table-column prop="insureNum" label="鎶曚繚浜烘暟" min-width="100px"></el-table-column>
-                <el-table-column prop="fee" label="鎬昏垂鐢紙鍏冿級" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="鎻愪氦鏃堕棿" min-width="100px"></el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:insuranceapply:update', 'business:insuranceapply:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="$refs.operaInsuranceApplyWindow.open('缂栬緫鎶曚繚鐢宠淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:insuranceapply:update']">鏌ョ湅璇︽儏</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaInsuranceApplyWindow ref="operaInsuranceApplyWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaInsuranceApplyWindow from '@/components/business/OperaInsuranceApplyWindow'
-export default {
-    name: 'InsuranceApply',
-    extends: BaseTable,
-    components: { TableLayout, Pagination, OperaInsuranceApplyWindow },
-    data () {
-        return {
-            // 鎼滅储
-            searchForm: {
-                createDate: '',
-                solutionId: '',
-                companyId: '',
-              statusCollect: ''
-            },
-          solutionList:[],
-          companyList:[]
-        }
-    },
-    created () {
-        this.config({
-            module: '鎶曚繚鐢宠淇℃伅琛�',
-            api: '/business/insuranceApply',
-            'field.id': 'id',
-            'field.main': 'id'
-        })
-        this.search()
-        this.loadSelectList()
-    },
-  methods (){
-    loadSelectList(){
-
-    }
-  }
-}
-</script>
diff --git a/platform/src/views/business/member.vue b/platform/src/views/business/member.vue
deleted file mode 100644
index ee96024..0000000
--- a/platform/src/views/business/member.vue
+++ /dev/null
@@ -1,122 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:member:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="鍛樺伐濮撳悕" prop="duId">
-                <el-input v-model="searchForm.duId" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="韬唤璇佸彿" prop="duId">
-                <el-input v-model="searchForm.duId" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="淇濋櫓鏂规" prop="duId">
-                <el-select v-model="searchForm.duId" placeholder="璇烽�夋嫨">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="淇濋櫓鐘舵��" prop="duId">
-                <el-select v-model="searchForm.duId" placeholder="璇烽�夋嫨">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="娲鹃仯鍗曚綅" prop="duId">
-                <el-select v-model="searchForm.duId" placeholder="璇烽�夋嫨">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:member:create']">
-                <li><el-button type="primary" @click="$refs.operaMemberWindow.open('鎶曚繚璁板綍')">瀵煎叆浜哄憳鍚嶅崟</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column label="搴忓彿" width="80px">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="companyId" label="淇濋櫓鐘舵��" min-width="100px"></el-table-column>
-                <el-table-column prop="companyId" label="鎵�灞炰紒涓�" min-width="100px"></el-table-column>
-                <el-table-column prop="companyId" label="鍛樺伐濮撳悕" min-width="100px"></el-table-column>
-                <el-table-column label="鎬у埆" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.sex === 0">鐢�</span>
-                        <span v-else>濂�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="companyId" label="骞撮緞" min-width="100px"></el-table-column>
-                <el-table-column prop="companyId" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
-                <el-table-column prop="duId" label="娲鹃仯鍗曚綅" min-width="100px"></el-table-column>
-                <el-table-column prop="worktypeId" label="鎵�灞炲伐绉�" min-width="100px"></el-table-column>
-                <el-table-column prop="startTime" label="瀹為檯淇濋櫓鐢熸晥璧锋湡" min-width="100px"></el-table-column>
-                <el-table-column prop="endTime" label="瀹為檯淇濋櫓鐢熸晥姝㈡湡" min-width="100px"></el-table-column>
-                <el-table-column label="鎿嶄綔" min-width="100px">
-                    <template slot-scope="{row}">
-                        <el-button type="text">鎶曚繚璁板綍</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaMemberWindow ref="operaMemberWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-    import BaseTable from '@/components/base/BaseTable'
-    import TableLayout from '@/layouts/TableLayout'
-    import Pagination from '@/components/common/Pagination'
-    import OperaMemberWindow from '@/components/business/OperaMemberWindow'
-    export default {
-        name: 'Member',
-        extends: BaseTable,
-        components: { TableLayout, Pagination, OperaMemberWindow },
-        data () {
-            return {
-                // 鎼滅储
-                searchForm: {
-                    duId: ''
-                },
-                options: []
-            }
-        },
-        created () {
-            this.config({
-                module: '鐢ㄥ伐淇℃伅琛�',
-                api: '/business/member',
-                'field.id': 'id',
-                'field.main': 'id'
-            })
-            this.search()
-        }
-    }
-</script>
diff --git a/platform/src/views/business/policyList.vue b/platform/src/views/business/policyList.vue
deleted file mode 100644
index 625b55f..0000000
--- a/platform/src/views/business/policyList.vue
+++ /dev/null
@@ -1,122 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:insuranceapply:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="淇濆崟鍙�" prop="status">
-                <el-input v-model="searchForm.status" placeholder="璇疯緭鍏�"></el-input>
-            </el-form-item>
-            <el-form-item label="淇濋櫓鏂规" prop="solutionId">
-                <el-select v-model="searchForm.solutionId" placeholder="璇烽�夋嫨" @change="search">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鐘舵��" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option label="淇濋殰涓�" value="5"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鎶曚繚浼佷笟" prop="companyId">
-                <el-select v-model="searchForm.companyId" placeholder="璇烽�夋嫨" @change="search">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-                <el-button @click="$refs.OperaPolicyListWindow.open('鎶曚繚璇︽儏')">鎶曚繚璇︽儏</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column label="搴忓彿" width="80px">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="status" label="鎶曚繚鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.status === 0">寰呭鏍�</span>
-                        <span v-if="row.status === 3">寰呭嚭鍗�</span>
-                        <span v-if="row.status === 5">淇濋殰涓�</span>
-                        <span v-if="row.status === 8">宸茶繃鏈�</span>
-                        <span v-if="row.status === 7">宸查��鍥�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="companyId" label="鎶曚繚浼佷笟" min-width="100px"></el-table-column>
-                <el-table-column prop="solutionId" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
-                <el-table-column prop="solutionId" label="淇濆崟鍙�" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="鎶曚繚浜烘暟" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="鍦ㄤ繚鏃堕暱锛堝ぉ锛�" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="浜х敓璐圭敤锛堝厓锛�" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="鎬昏垂鐢紙鍏冿級" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="淇濋櫓鐢熸晥璧锋湡" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="淇濋櫓鐢熸晥姝㈡湡" min-width="100px"></el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:insuranceapply:update', 'business:insuranceapply:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="$refs.operaInsuranceApplyWindow.open('缂栬緫鎶曚繚鐢宠淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:insuranceapply:update']">鏌ョ湅璇︽儏</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaPolicyListWindow ref="OperaPolicyListWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-    import BaseTable from '@/components/base/BaseTable'
-    import TableLayout from '@/layouts/TableLayout'
-    import Pagination from '@/components/common/Pagination'
-    import OperaPolicyListWindow from '@/components/business/OperaPolicyListWindow'
-    export default {
-        name: 'policyList',
-        extends: BaseTable,
-        components: { TableLayout, Pagination, OperaPolicyListWindow },
-        data () {
-            return {
-                // 鎼滅储
-                searchForm: {
-                    createDate: '',
-                    solutionId: '',
-                    companyId: '',
-                    status: ''
-                }
-            }
-        },
-        created () {
-            this.config({
-                module: '鎶曚繚鐢宠淇℃伅琛�',
-                api: '/business/insuranceApply',
-                'field.id': 'id',
-                'field.main': 'id'
-            })
-            this.search()
-        }
-    }
-</script>
diff --git a/platform/src/views/business/role.vue b/platform/src/views/business/role.vue
new file mode 100644
index 0000000..9adc347
--- /dev/null
+++ b/platform/src/views/business/role.vue
@@ -0,0 +1,107 @@
+<template>
+  <TableLayout :permissions="['system:role:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="瑙掕壊缂栫爜" prop="code">
+        <el-input v-model="searchForm.code" v-trim placeholder="璇疯緭鍏ヨ鑹茬紪鐮�" @keypress.enter.native="search"/>
+      </el-form-item>
+      <el-form-item label="瑙掕壊鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" v-trim placeholder="璇疯緭鍏ヨ鑹插悕绉�" @keypress.enter.native="search"/>
+      </el-form-item>
+      <section>
+        <el-button type="primary" icon="el-icon-search" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['system:role:create', 'system:role:delete']">
+        <li v-permissions="['system:role:create']"><el-button type="primary" @click="$refs.operaRoleWindow.open('鏂板缓瑙掕壊', null, 1)" icon="el-icon-plus">鏂板缓</el-button></li>
+        <li v-permissions="['system:role:delete']"><el-button @click="deleteByIdInBatch" icon="el-icon-delete">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        :default-sort = "{prop: 'createTime', order: 'descending'}"
+        stripe
+        border
+        @selection-change="handleSelectionChange"
+        @sort-change="handleSortChange"
+      >
+        <el-table-column type="selection" fixed="left" width="55"></el-table-column>
+        <el-table-column prop="code" label="瑙掕壊缂栫爜" fixed="left" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="name" label="瑙掕壊鍚嶇О" fixed="left" min-width="100px"  align="center"></el-table-column>
+        <el-table-column prop="remark" label="瑙掕壊澶囨敞" min-width="120px"  align="center"></el-table-column>
+        <el-table-column prop="createUser" label="鍒涘缓浜�" min-width="100px"  align="center">
+          <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template>
+        </el-table-column>
+        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="140px"  align="center"></el-table-column>
+        <el-table-column prop="updateUser" label="鏇存柊浜�" min-width="100px"  align="center">
+          <template slot-scope="{row}">{{row.updateUserInfo == null ? '' : row.updateUserInfo.username}}</template>
+        </el-table-column>
+        <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="140px"  align="center"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['system:role:update', 'system:role:createRolePermission', 'system:role:createRoleMenu', 'system:role:delete'])"
+          label="鎿嶄綔"
+          min-width="270"
+          align="center"
+          fixed="right"
+        >
+          <template v-if="isAdmin || (row.code !== adminCode && userInfo.roles.findIndex(code => code === row.code) === -1)" slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaRoleWindow.open('缂栬緫瑙掕壊', row, 1)" icon="el-icon-edit" v-permissions="['system:role:update']">缂栬緫</el-button>
+            <el-button type="text" @click="$refs.permissionConfigWindow.open(row,1)" v-permissions="['system:role:createRolePermission']">閰嶇疆鏉冮檺</el-button>
+            <el-button type="text" @click="$refs.menuConfigWindow.open(row, 1)" icon="el-icon-menu" v-permissions="['system:role:createRoleMenu']">鎺堟潈鑿滃崟</el-button>
+            <el-button v-if="!row.fixed" type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:role:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaRoleWindow ref="operaRoleWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
+    <!-- 閰嶇疆鏉冮檺 -->
+    <PermissionConfigWindow ref="permissionConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
+    <!-- 鎺堟潈鑿滃崟 -->
+    <MenuConfigWindow ref="menuConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
+  </TableLayout>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import TableLayout from '@/layouts/TableLayout'
+import BaseTable from '@/components/base/BaseTable'
+import OperaRoleWindow from '@/components/system/role/OperaRoleWindow'
+import PermissionConfigWindow from '@/components/system/role/PermissionConfigWindow'
+import MenuConfigWindow from '@/components/system/role/MenuConfigWindow'
+export default {
+  name: 'SystemRole',
+  extends: BaseTable,
+  components: { MenuConfigWindow, PermissionConfigWindow, OperaRoleWindow, TableLayout, Pagination },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        code: '',
+        name: '',
+        remark: '',
+        type: 1
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '瑙掕壊',
+      api: '/system/role',
+      sorts: [{
+        property: 'role.CREATE_TIME',
+        direction: 'DESC'
+      }]
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/platform/src/views/business/settleClaims.vue b/platform/src/views/business/settleClaims.vue
deleted file mode 100644
index ae53fde..0000000
--- a/platform/src/views/business/settleClaims.vue
+++ /dev/null
@@ -1,132 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:settleclaims:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="鍛樺伐濮撳悕" prop="informantName">
-                <el-input v-model="searchForm.informantName" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="鎶ユ鍗曚綅" prop="companyId">
-                <el-select v-model="searchForm.companyId" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="淇濋櫓鏂规" prop="solutionId">
-                <el-select v-model="searchForm.solutionId" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="妗堜欢鐘舵��" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option label="澶勭悊涓�" value="0"></el-option>
-                    <el-option label="宸叉挙妗�" value="1"></el-option>
-                    <el-option label="宸茬粨妗�" value="2"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="娲鹃仯鍗曚綅" prop="duId">
-                <el-select v-model="searchForm.duId" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-                <el-button @click="$refs.operaSettleClaimsWindow.open('鎶ユ璇︽儏')">璇︽儏</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column label="搴忓彿" width="80px">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="reportNum" label="鎶ユ鍙�" min-width="100px"></el-table-column>
-                <el-table-column prop="companyId" label="鎶ユ浼佷笟" min-width="100px"></el-table-column>
-                <el-table-column prop="companyId" label="鍑洪櫓浜�" min-width="100px"></el-table-column>
-                <el-table-column prop="solutionId" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
-                <el-table-column prop="duId" label="娲鹃仯鍗曚綅" min-width="100px"></el-table-column>
-                <el-table-column prop="worktypeId" label="鎵�灞炲伐绉�" min-width="100px"></el-table-column>
-                <el-table-column prop="worktypeId" label="淇濋櫓鐢熸晥璧锋湡" min-width="100px"></el-table-column>
-                <el-table-column prop="create_date" label="鎶ユ鏃堕棿" min-width="100px"></el-table-column>
-                <el-table-column prop="status" label="妗堜欢鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.status === 0 || row.status === 2">澶勭悊涓�</span>
-                        <span v-if="row.status === 1">宸叉挙妗�</span>
-                        <span v-if="row.status === 3">宸茬粨妗�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:settleclaims:update', 'business:settleclaims:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="$refs.operaSettleClaimsWindow.open('缂栬緫鐞嗚禂鐢宠琛�', row)" icon="el-icon-edit" v-permissions="['business:settleclaims:update']">鏌ョ湅璇︽儏</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaSettleClaimsWindow ref="operaSettleClaimsWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-    import BaseTable from '@/components/base/BaseTable'
-    import TableLayout from '@/layouts/TableLayout'
-    import Pagination from '@/components/common/Pagination'
-    import OperaSettleClaimsWindow from '@/components/business/OperaSettleClaimsWindow'
-    export default {
-        name: 'SettleClaims',
-        extends: BaseTable,
-        components: { TableLayout, Pagination, OperaSettleClaimsWindow },
-        data () {
-            return {
-                // 鎼滅储
-                searchForm: {
-                    solutionId: '',
-                    companyId: '',
-                    duId: '',
-                    status: '',
-                    informantName: ''
-                }
-            }
-        },
-        created () {
-            this.config({
-                module: '鐞嗚禂鐢宠琛�',
-                api: '/business/settleClaims',
-                'field.id': 'id',
-                'field.main': 'id'
-            })
-            this.search()
-        }
-    }
-</script>
diff --git a/platform/src/views/business/solutions.vue b/platform/src/views/business/solutions.vue
deleted file mode 100644
index a35ea9e..0000000
--- a/platform/src/views/business/solutions.vue
+++ /dev/null
@@ -1,136 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:solutions:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="淇濋櫓鏂规" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="鍚敤鐘舵��" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option label="鍚敤" value="0"></el-option>
-                    <el-option label="绂佺敤" value="1"></el-option>
-                </el-select>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:solutions:create']">
-                <li><el-button type="primary" @click="$refs.operaSolutionsWindow.open('鏂板缓淇濋櫓鏂规')" v-permissions="['business:solutions:create']">娣诲姞鏂规</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column label="搴忓彿" width="80px">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="name" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
-                <el-table-column prop="insuranceName" label="淇濋櫓鍏徃" min-width="100px"></el-table-column>
-                <el-table-column label="鎶曚繚骞撮緞" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span>{{row.minAge}}鑷硔{row.maxAge}}宀�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="鎶曚繚鐢熸晥鏃ユ湡" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.validType === 0">鏃ュ悗鐢熸晥</span>
-                        <span v-if="row.validType === 1">娆℃湀鐢熸晥</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="淇濋櫓璐圭敤" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span>{{row.price}}鍏�/浜�/</span>
-                        <span v-if="row.timeUnit === 0">澶�</span>
-                        <span v-if="row.timeUnit === 1">鍗婃湀</span>
-                        <span v-if="row.timeUnit === 2">鏈�</span>
-                        <span v-if="row.timeUnit === 3">骞�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="status" label="鍚敤鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <el-switch
-                            @change="changeStatus($event, row)"
-                            v-model="row.status"
-                            active-color="#13ce66"
-                            inactive-color="#ff4949"
-                            :active-value="0"
-                            :inactive-value="1">
-                        </el-switch>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:solutions:update', 'business:solutions:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="$refs.OperaSolutionsDescWindow.open('鏂规璇︽儏', { id: row.id })" icon="el-icon-edit" v-permissions="['business:solutions:update']">鏌ョ湅璇︽儏</el-button>
-                        <el-button type="text" @click="$refs.operaSolutionsWindow.open('缂栬緫淇濋櫓鏂规', { id: row.id })" icon="el-icon-edit" v-permissions="['business:solutions:update']">淇敼</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 淇敼 -->
-        <OperaSolutionsWindow ref="operaSolutionsWindow" @success="handlePageChange"/>
-        <!-- 璇︽儏 -->
-        <OperaSolutionsDescWindow ref="OperaSolutionsDescWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-    import BaseTable from '@/components/base/BaseTable'
-    import TableLayout from '@/layouts/TableLayout'
-    import Pagination from '@/components/common/Pagination'
-    import OperaSolutionsWindow from '@/components/business/OperaSolutionsWindow'
-    import OperaSolutionsDescWindow from '@/components/business/OperaSolutionsDescWindow'
-    import { updateStatus } from '@/api/business/solutions'
-    export default {
-        name: 'Solutions',
-        extends: BaseTable,
-        components: { TableLayout, Pagination, OperaSolutionsWindow, OperaSolutionsDescWindow },
-        data () {
-            return {
-                // 鎼滅储
-                searchForm: {
-                    name: '',
-                    status: ''
-                }
-            }
-        },
-        created () {
-            this.config({
-                module: '淇濋櫓鏂规淇℃伅琛�',
-                api: '/business/solutions',
-                'field.id': 'id',
-                'field.main': 'id'
-            })
-            this.search()
-        },
-        methods: {
-            // 淇敼鐘舵��
-            changeStatus(status, row) {
-                updateStatus({ id: row.id, status })
-                    .then(res => {
-                        this.search()
-                    })
-                    .catch(err => {
-                        row.status = row.status === 0 ? 1 : 0
-                    })
-            }
-        }
-    }
-</script>
diff --git a/platform/src/views/business/switchCourt.vue b/platform/src/views/business/switchCourt.vue
deleted file mode 100644
index 2ee2b31..0000000
--- a/platform/src/views/business/switchCourt.vue
+++ /dev/null
@@ -1,126 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:applychange:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="淇濆崟鐘舵��" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @change="search">
-                    <el-option label="寰呯缃�" value="0"></el-option>
-                    <el-option label="宸茬绔� " value="1"></el-option>
-                    <el-option label="宸蹭笂浼犳壒鍗�" value="2"></el-option>
-                    <el-option label="閫�鍥炵敵璇�" value="3"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鎶曚繚浼佷笟" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="淇濋櫓鏂规" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鎻愪氦鏃ユ湡" prop="status">
-                <el-date-picker
-                    v-model="searchForm.status"
-                    type="daterange"
-                    range-separator="鑷�"
-                    start-placeholder="寮�濮嬫棩鏈�"
-                    end-placeholder="缁撴潫鏃ユ湡">
-                </el-date-picker>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-                <el-button @click="$refs.operaApplyChangeWindow.open('鍔犲噺淇濊鎯�')">鏌ョ湅璇︽儏</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <el-table
-                    v-loading="isWorking.search"
-                    :data="tableData.list"
-                    stripe
-            >
-                <el-table-column label="搴忓彿" width="80px">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="status" label="淇濆崟鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.status === 0">寰呯缃�</span>
-                        <span v-if="row.status === 1">宸茬绔�</span>
-                        <span v-if="row.status === 2">宸蹭笂浼犳壒鍗�</span>
-                        <span v-if="row.status === 3">閫�鍥炵敵璇�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="code" label="鎶曚繚浼佷笟" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="鍏宠仈淇濆崟鍙�" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="鍔犱繚浜烘暟锛堜汉锛�" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="鍑忎繚浜烘暟锛堜汉锛�" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="璐圭敤鍙樻洿" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="鎻愪氦鏃堕棿" min-width="100px"></el-table-column>
-                <!--                v-if="containPermissions(['business:applychange:update', 'business:applychange:delete'])"-->
-                <el-table-column
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <!--                        v-permissions="['business:applychange:update']"-->
-                        <el-button type="text" @click="$refs.operaApplyChangeWindow.open('鍔犲噺淇濊鎯�', row)" icon="el-icon-edit">鏌ョ湅璇︽儏</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaSwitchCourtWindow ref="operaApplyChangeWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-    import BaseTable from '@/components/base/BaseTable'
-    import TableLayout from '@/layouts/TableLayout'
-    import Pagination from '@/components/common/Pagination'
-    import OperaSwitchCourtWindow from '@/components/business/OperaSwitchCourtWindow'
-    export default {
-        name: 'switchCourt',
-        extends: BaseTable,
-        components: { TableLayout, Pagination, OperaSwitchCourtWindow },
-        data () {
-            return {
-                // 鎼滅储
-                searchForm: {
-                    status: ''
-                }
-            }
-        },
-        created () {
-            this.config({
-                module: '鍔犲噺淇濇崲鍘傜敵璇蜂俊鎭〃',
-                api: '/business/applyChange',
-                'field.id': 'id',
-                'field.main': 'id'
-            })
-            this.search()
-        }
-    }
-</script>
diff --git a/platform/src/views/business/taxes.vue b/platform/src/views/business/taxes.vue
deleted file mode 100644
index 79d6e85..0000000
--- a/platform/src/views/business/taxes.vue
+++ /dev/null
@@ -1,193 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:taxes:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="寮�绁ㄧ姸鎬�" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option label="寰呭鐞�" value="0"></el-option>
-                    <el-option label="宸插紑绁�" value="1"></el-option>
-                    <el-option label="骞冲彴鎾ゅ洖" value="2"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鐢宠鏃ユ湡" prop="status">
-                <el-date-picker
-                    v-model="searchForm.status"
-                    type="daterange"
-                    range-separator="鑷�"
-                    start-placeholder="寮�濮嬫棩鏈�"
-                    end-placeholder="缁撴潫鏃ユ湡">
-                </el-date-picker>
-            </el-form-item>
-            <el-form-item label="鐢宠寮�绁ㄤ紒涓�" prop="companyId">
-                <el-select v-model="searchForm.companyId" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column label="搴忓彿" width="80px">
-                    <template slot-scope="scope">
-                        <span>{{scope.$index + 1}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="寮�绁ㄧ姸鎬�" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.status === 0">寰呭鐞�</span>
-                        <span v-if="row.status === 1">宸插紑绁�</span>
-                        <span v-if="row.status === 2">骞冲彴鎾ゅ洖</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="companyId" label="鐢宠浼佷笟" min-width="100px"></el-table-column>
-                <el-table-column prop="companyId" label="鐢宠寮�绁ㄦ椂闂�" min-width="100px"></el-table-column>
-                <el-table-column prop="companyId" label="鐢宠浜�" min-width="100px"></el-table-column>
-                <el-table-column prop="price" label="寮�绁ㄩ噾棰濓紙鍏冿級" min-width="100px"></el-table-column>
-                <el-table-column label="鎶曚繚绫诲瀷" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.applyType === 0">濮旀墭寮�绁�</span>
-                        <span v-if="row.applyType === 1">鐩翠繚</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="type" label="鎺ユ敹鏂瑰紡" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.type === 0">鐢靛瓙鍙戠エ</span>
-                        <span v-if="row.type === 1">绾歌川鍙戠エ</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="鎿嶄綔" min-width="100px">
-                    <template slot-scope="{row}">
-                        <el-button type="text">涓婁紶鍙戠エ</el-button>
-                        <el-button type="text">鐢宠璇︽儏</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <el-dialog
-            title="涓婁紶鍙戠エ"
-            :visible.sync="visible"
-            width="500px"
-            :show-close="false"
-            :close-on-click-modal="false"
-            center>
-            <div class="form">
-                <div class="form_item">
-                    <div class="form_item_label">鍙戠エ鍙凤細</div>
-                    <div class="form_item_val">
-                        <input type="text" placeholder="璇疯緭鍏�" />
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">涓婁紶鍙戠エ锛�</div>
-                    <div class="form_item_val">
-                        <el-upload
-                            action="https://jsonplaceholder.typicode.com/posts/"
-                            list-type="picture-card"
-                            :on-remove="handleRemove">
-                            <i class="el-icon-plus"></i>
-                        </el-upload>
-                    </div>
-                </div>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="visible = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="visible = false">鎻� 浜�</el-button>
-            </span>
-        </el-dialog>
-        <OperaTaxesWindow ref="OperaTaxesWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-    import BaseTable from '@/components/base/BaseTable'
-    import TableLayout from '@/layouts/TableLayout'
-    import Pagination from '@/components/common/Pagination'
-    import OperaTaxesWindow from '@/components/business/OperaTaxesWindow'
-    export default {
-        name: 'Taxes',
-        extends: BaseTable,
-        components: { TableLayout, Pagination, OperaTaxesWindow },
-        data () {
-            return {
-                // 鎼滅储
-                searchForm: {
-                    status: '',
-                    companyId: ''
-                },
-                visible: false
-            }
-        },
-        created () {
-            this.config({
-                module: '鍙戠エ淇℃伅琛�',
-                api: '/business/taxes',
-                'field.id': 'id',
-                'field.main': 'id'
-            })
-            this.search()
-        },
-        methods: {
-            handleRemove(file, fileList) {
-                console.log(file, fileList);
-            }
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-    .form {
-        width: 100%;
-        display: flex;
-        flex-direction: column;
-        .form_item {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            margin-bottom: 20px;
-            &:last-child {
-                margin-bottom: 0 !important;
-            }
-            .form_item_label {
-                width: 100px;
-                flex-shrink: 0;
-                font-size: 14px;
-                color: black;
-            }
-            .form_item_val {
-                flex: 1;
-                min-height: 35px;
-                display: flex;
-                align-items: center;
-                input {
-                    width: 100%;
-                    height: 100%;
-                    font-size: 14px;
-                    color: black;
-                    padding: 5px 10px;
-                    outline: none;
-                    box-sizing: border-box;
-                    border: 1px solid #ececec;
-                }
-            }
-        }
-    }
-</style>
diff --git a/platform/src/views/login.vue b/platform/src/views/login.vue
index 03d6539..765944c 100644
--- a/platform/src/views/login.vue
+++ b/platform/src/views/login.vue
@@ -1,7 +1,7 @@
 <template>
   <div class="wrap">
     <div class="introduce">
-      <h2>棰勯�夋竻鍗曟煡璇㈢郴缁�</h2>
+      <h2>浜戞槗淇濆鎴锋湇鍔$郴缁�</h2>
     </div>
     <div class="login">
       <h1>绯荤粺鐧诲綍&nbsp;/&nbsp;LOGIN IN</h1>
diff --git a/platform/src/views/system/menu.vue b/platform/src/views/system/menu.vue
index 466808d..16296f7 100644
--- a/platform/src/views/system/menu.vue
+++ b/platform/src/views/system/menu.vue
@@ -1,10 +1,9 @@
-<script src="../../api/system/dictData.js"></script>
 <template>
   <TableLayout class="menu-layout" :permissions="['system:menu:query']">
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:menu:create', 'system:menu:delete', 'system:menu:sort']">
-        <li><el-button type="primary" @click="$refs.operaMenuWindow.open('鏂板缓涓�绾ц彍鍗�', { type: '0' })" icon="el-icon-plus" v-permissions="['system:menu:create']">鏂板缓</el-button></li>
+        <li><el-button type="primary" @click="$refs.operaMenuWindow.open('鏂板缓骞冲彴涓�绾ц彍鍗�')" icon="el-icon-plus" v-permissions="['system:menu:create']">鏂板缓</el-button></li>
         <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:menu:delete']">鍒犻櫎</el-button></li>
         <li><el-button @click="sort('top')" :loading="isWorking.sort" icon="el-icon-sort-up" v-permissions="['system:menu:sort']">涓婄Щ</el-button></li>
         <li><el-button @click="sort('bottom')" :loading="isWorking.sort" icon="el-icon-sort-down" v-permissions="['system:menu:sort']">涓嬬Щ</el-button></li>
@@ -16,7 +15,7 @@
         :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
         row-key="id"
         stripe
-        :default-expand-all="false"
+        default-expand-all
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55" fixed="left"></el-table-column>
@@ -49,8 +48,8 @@
           fixed="right"
         >
           <template slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="$refs.operaMenuWindow.open('缂栬緫鑿滃崟', { ...row, type: 0 })" v-permissions="['system:menu:update']">缂栬緫</el-button>
-            <el-button type="text" icon="el-icon-plus" @click="$refs.operaMenuWindow.open('鏂板缓瀛愯彍鍗�', null, {...row, type: 0})" v-permissions="['system:menu:create']">鏂板缓瀛愯彍鍗�</el-button>
+            <el-button type="text" icon="el-icon-edit" @click="$refs.operaMenuWindow.open('缂栬緫骞冲彴鑿滃崟', row)" v-permissions="['system:menu:update']">缂栬緫</el-button>
+            <el-button type="text" icon="el-icon-plus" @click="$refs.operaMenuWindow.open('鏂板缓骞冲彴瀛愯彍鍗�', null, row)" v-permissions="['system:menu:create']">鏂板缓瀛愯彍鍗�</el-button>
             <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:menu:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
@@ -82,7 +81,7 @@
     // 鏌ヨ鏁版嵁
     handlePageChange () {
       this.isWorking.search = true
-      fetchTree()
+      fetchTree({}, 0)
         .then(records => {
           this.tableData.list = records
         })
diff --git a/platform/src/views/system/menuCom.vue b/platform/src/views/system/menuCom.vue
index 8481f79..f6d5792 100644
--- a/platform/src/views/system/menuCom.vue
+++ b/platform/src/views/system/menuCom.vue
@@ -1,231 +1,231 @@
 <template>
-    <TableLayout class="menu-layout" :permissions="['system:menu:query']">
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['system:menu:create', 'system:menu:delete', 'system:menu:sort']">
-                <li><el-button type="primary" @click="$refs.operaMenuWindow.open('鏂板缓涓�绾ц彍鍗�')" icon="el-icon-plus" v-permissions="['system:menu:create']">鏂板缓</el-button></li>
-                <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:menu:delete']">鍒犻櫎</el-button></li>
-                <li><el-button @click="sort('top')" :loading="isWorking.sort" icon="el-icon-sort-up" v-permissions="['system:menu:sort']">涓婄Щ</el-button></li>
-                <li><el-button @click="sort('bottom')" :loading="isWorking.sort" icon="el-icon-sort-down" v-permissions="['system:menu:sort']">涓嬬Щ</el-button></li>
-            </ul>
-            <el-table
-                ref="table"
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
-                row-key="id"
-                stripe
-                :default-expand-all="false"
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column type="selection" width="55" fixed="left"></el-table-column>
-                <el-table-column prop="name" label="鑿滃崟鍚嶇О"  fixed="left" min-width="160px"></el-table-column>
-                <el-table-column prop="icon" label="鍥炬爣" min-width="80px" class-name="table-column-icon">
-                    <template slot-scope="{row}">
-                        <i v-if="row.icon != null && row.icon !== ''" :class="{[row.icon]: true}"></i>
-                        <template v-else>鏈缃�</template>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="path" label="璁块棶璺緞" min-width="140px"></el-table-column>
-                <el-table-column prop="remark" label="澶囨敞" min-width="120px"></el-table-column>
-                <el-table-column prop="createUser" label="鍒涘缓浜�" min-width="100px">
-                    <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template>
-                </el-table-column>
-                <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="140px"></el-table-column>
-                <el-table-column prop="updateUser" label="鏇存柊浜�" min-width="100px">
-                    <template slot-scope="{row}">{{row.updateUserInfo == null ? '' : row.updateUserInfo.username}}</template>
-                </el-table-column>
-                <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="140px"></el-table-column>
-                <el-table-column prop="disabled" label="鏄惁鍚敤" min-width="80px">
-                    <template slot-scope="{row}">
-                        <el-switch v-model="row.disabled" :active-value="false" :inactive-value="true" @change="switchDisabled(row)"/>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                        v-if="containPermissions(['system:menu:update', 'system:menu:create', 'system:menu:delete'])"
-                        label="鎿嶄綔"
-                        min-width="220"
-                        fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" icon="el-icon-edit" @click="$refs.operaMenuWindow.open('缂栬緫鑿滃崟', row)" v-permissions="['system:menu:update']">缂栬緫</el-button>
-                        <el-button type="text" icon="el-icon-plus" @click="$refs.operaMenuWindow.open('鏂板缓瀛愯彍鍗�', null, row)" v-permissions="['system:menu:create']">鏂板缓瀛愯彍鍗�</el-button>
-                        <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:menu:delete']">鍒犻櫎</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaMenuWindow ref="operaMenuWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
-    </TableLayout>
+  <TableLayout class="menu-layout" :permissions="['system:menu:query']">
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['system:menu:create', 'system:menu:delete', 'system:menu:sort']">
+        <li><el-button type="primary" @click="$refs.operaMenuWindow.open('鏂板缓浼佷笟涓�绾ц彍鍗�')" icon="el-icon-plus" v-permissions="['system:menu:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:menu:delete']">鍒犻櫎</el-button></li>
+        <li><el-button @click="sort('top')" :loading="isWorking.sort" icon="el-icon-sort-up" v-permissions="['system:menu:sort']">涓婄Щ</el-button></li>
+        <li><el-button @click="sort('bottom')" :loading="isWorking.sort" icon="el-icon-sort-down" v-permissions="['system:menu:sort']">涓嬬Щ</el-button></li>
+      </ul>
+      <el-table
+        ref="table"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+        row-key="id"
+        stripe
+        default-expand-all
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55" fixed="left"></el-table-column>
+        <el-table-column prop="name" label="鑿滃崟鍚嶇О"  fixed="left" min-width="160px"></el-table-column>
+        <el-table-column prop="icon" label="鍥炬爣" min-width="80px" class-name="table-column-icon">
+          <template slot-scope="{row}">
+            <i v-if="row.icon != null && row.icon !== ''" :class="{[row.icon]: true}"></i>
+            <template v-else>鏈缃�</template>
+          </template>
+        </el-table-column>
+        <el-table-column prop="path" label="璁块棶璺緞" min-width="140px"></el-table-column>
+        <el-table-column prop="remark" label="澶囨敞" min-width="120px"></el-table-column>
+        <el-table-column prop="createUser" label="鍒涘缓浜�" min-width="100px">
+          <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template>
+        </el-table-column>
+        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="140px"></el-table-column>
+        <el-table-column prop="updateUser" label="鏇存柊浜�" min-width="100px">
+          <template slot-scope="{row}">{{row.updateUserInfo == null ? '' : row.updateUserInfo.username}}</template>
+        </el-table-column>
+        <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="140px"></el-table-column>
+        <el-table-column prop="disabled" label="鏄惁鍚敤" min-width="80px">
+          <template slot-scope="{row}">
+            <el-switch v-model="row.disabled" :active-value="false" :inactive-value="true" @change="switchDisabled(row)"/>
+          </template>
+        </el-table-column>
+        <el-table-column
+          v-if="containPermissions(['system:menu:update', 'system:menu:create', 'system:menu:delete'])"
+          label="鎿嶄綔"
+          min-width="220"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" icon="el-icon-edit" @click="$refs.operaMenuWindow.open('缂栬緫浼佷笟鑿滃崟', row)" v-permissions="['system:menu:update']">缂栬緫</el-button>
+            <el-button type="text" icon="el-icon-plus" @click="$refs.operaMenuWindow.open('鏂板缓浼佷笟瀛愯彍鍗�', null, row)" v-permissions="['system:menu:create']">鏂板缓瀛愯彍鍗�</el-button>
+            <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:menu:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaMenuWindow ref="operaMenuWindow" type="1" @success="handlePageChange(tableData.pagination.pageIndex)"/>
+  </TableLayout>
 </template>
 
 <script>
-    import TableLayout from '@/layouts/TableLayout'
-    import BaseTable from '@/components/base/BaseTable'
-    import OperaMenuWindow from '@/components/system/menu/OperaMenuWindow'
-    import { fetchTree, updateStatus, sort } from '@/api/system/menu'
-    export default {
-        name: 'SystemMenu',
-        extends: BaseTable,
-        components: { OperaMenuWindow, TableLayout },
-        data () {
-            return {
-                // 鏄惁姝e湪澶勭悊涓�
-                isWorking: {
-                    sort: false
-                }
-            }
-        },
-        methods: {
-            // 鏌ヨ鏁版嵁
-            handlePageChange () {
-                this.isWorking.search = true
-                fetchTree(1)
-                    .then(records => {
-                        this.tableData.list = records
-                    })
-                    .catch(e => {
-                        this.$tip.apiFailed(e)
-                    })
-                    .finally(() => {
-                        this.isWorking.search = false
-                    })
-            },
-            // 鎺掑簭
-            sort (direction) {
-                if (this.isWorking.sort) {
-                    return
-                }
-                if (this.tableData.selectedRows.length === 0) {
-                    this.$tip.warning('璇烽�夋嫨涓�鏉℃暟鎹�')
-                    return
-                }
-                if (this.tableData.selectedRows.length > 1) {
-                    this.$tip.warning('鎺掑簭鏃朵粎鍏佽閫夋嫨涓�鏉℃暟鎹�')
-                    return
-                }
-                const menuId = this.tableData.selectedRows[0].id
-                // 鎵惧埌鑿滃崟鑼冨洿
-                let menuPool
-                for (const rootMenu of this.tableData.list) {
-                    const parent = this.__findParent(menuId, rootMenu)
-                    if (parent != null) {
-                        menuPool = parent.children
-                    }
-                }
-                menuPool = menuPool || this.tableData.list
-                const menuIndex = menuPool.findIndex(menu => menu.id === menuId)
-                // 涓婄Щ鏍¢獙
-                if (direction === 'top' && menuIndex === 0) {
-                    this.$tip.warning('鑿滃崟宸插埌椤堕儴')
-                    return
-                }
-                // 涓嬬Щ鏍¢獙
-                if (direction === 'bottom' && menuIndex === menuPool.length - 1) {
-                    this.$tip.warning('鑿滃崟宸插埌搴曢儴')
-                    return
-                }
-                this.isWorking.sort = true
-                sort({
-                    id: this.tableData.selectedRows[0].id,
-                    direction
-                })
-                    .then(() => {
-                        if (direction === 'top') {
-                            menuPool.splice(menuIndex, 0, menuPool.splice(menuIndex - 1, 1)[0])
-                        } else {
-                            menuPool.splice(menuIndex, 0, menuPool.splice(menuIndex + 1, 1)[0])
-                        }
-                    })
-                    .catch(e => {
-                        this.$tip.apiFailed(e)
-                    })
-                    .finally(() => {
-                        this.isWorking.sort = false
-                    })
-            },
-            // 鍚敤/绂佺敤鑿滃崟
-            switchDisabled (row) {
-                if (!row.disabled) {
-                    this.__updateMenuStatus(row)
-                    return
-                }
-                this.$dialog.disableConfirm(`纭绂佺敤 ${row.name} 鑿滃崟鍚楋紵`)
-                    .then(() => {
-                        this.__updateMenuStatus(row)
-                    }).catch(() => {
-                    row.disabled = !row.disabled
-                })
-            },
-            // 鏌ヨ鐖惰妭鐐�
-            __findParent (id, parent) {
-                if (parent.children === 0) {
-                    return
-                }
-                for (const menu of parent.children) {
-                    if (menu.id === id) {
-                        return parent
-                    }
-                    if (menu.children.length > 0) {
-                        const m = this.__findParent(id, menu)
-                        if (m != null) {
-                            return m
-                        }
-                    }
-                }
-                return null
-            },
-            // 淇敼鑿滃崟鐘舵��
-            __updateMenuStatus (row) {
-                updateStatus({
-                    id: row.id,
-                    parentId: row.parentId,
-                    disabled: row.disabled
-                })
-                    .then(() => {
-                        this.$tip.apiSuccess('淇敼鎴愬姛')
-                    })
-                    .catch(e => {
-                        row.disabled = !row.disabled
-                        this.$tip.apiFailed(e)
-                    })
-            }
-        },
-        created () {
-            this.config({
-                module: '鑿滃崟',
-                api: '/system/menu'
-            })
-            this.search()
-        }
+import TableLayout from '@/layouts/TableLayout'
+import BaseTable from '@/components/base/BaseTable'
+import OperaMenuWindow from '@/components/system/menu/OperaMenuWindow'
+import { fetchTree, updateStatus, sort } from '@/api/system/menu'
+export default {
+  name: 'SystemMenu',
+  extends: BaseTable,
+  components: { OperaMenuWindow, TableLayout },
+  data () {
+    return {
+      // 鏄惁姝e湪澶勭悊涓�
+      isWorking: {
+        sort: false
+      }
     }
+  },
+  methods: {
+    // 鏌ヨ鏁版嵁
+    handlePageChange () {
+      this.isWorking.search = true
+      fetchTree({}, 1)
+        .then(records => {
+          this.tableData.list = records
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+          this.isWorking.search = false
+        })
+    },
+    // 鎺掑簭
+    sort (direction) {
+      if (this.isWorking.sort) {
+        return
+      }
+      if (this.tableData.selectedRows.length === 0) {
+        this.$tip.warning('璇烽�夋嫨涓�鏉℃暟鎹�')
+        return
+      }
+      if (this.tableData.selectedRows.length > 1) {
+        this.$tip.warning('鎺掑簭鏃朵粎鍏佽閫夋嫨涓�鏉℃暟鎹�')
+        return
+      }
+      const menuId = this.tableData.selectedRows[0].id
+      // 鎵惧埌鑿滃崟鑼冨洿
+      let menuPool
+      for (const rootMenu of this.tableData.list) {
+        const parent = this.__findParent(menuId, rootMenu)
+        if (parent != null) {
+          menuPool = parent.children
+        }
+      }
+      menuPool = menuPool || this.tableData.list
+      const menuIndex = menuPool.findIndex(menu => menu.id === menuId)
+      // 涓婄Щ鏍¢獙
+      if (direction === 'top' && menuIndex === 0) {
+        this.$tip.warning('鑿滃崟宸插埌椤堕儴')
+        return
+      }
+      // 涓嬬Щ鏍¢獙
+      if (direction === 'bottom' && menuIndex === menuPool.length - 1) {
+        this.$tip.warning('鑿滃崟宸插埌搴曢儴')
+        return
+      }
+      this.isWorking.sort = true
+      sort({
+        id: this.tableData.selectedRows[0].id,
+        direction
+      })
+        .then(() => {
+          if (direction === 'top') {
+            menuPool.splice(menuIndex, 0, menuPool.splice(menuIndex - 1, 1)[0])
+          } else {
+            menuPool.splice(menuIndex, 0, menuPool.splice(menuIndex + 1, 1)[0])
+          }
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+          this.isWorking.sort = false
+        })
+    },
+    // 鍚敤/绂佺敤鑿滃崟
+    switchDisabled (row) {
+      if (!row.disabled) {
+        this.__updateMenuStatus(row)
+        return
+      }
+      this.$dialog.disableConfirm(`纭绂佺敤 ${row.name} 鑿滃崟鍚楋紵`)
+        .then(() => {
+          this.__updateMenuStatus(row)
+        }).catch(() => {
+          row.disabled = !row.disabled
+        })
+    },
+    // 鏌ヨ鐖惰妭鐐�
+    __findParent (id, parent) {
+      if (parent.children === 0) {
+        return
+      }
+      for (const menu of parent.children) {
+        if (menu.id === id) {
+          return parent
+        }
+        if (menu.children.length > 0) {
+          const m = this.__findParent(id, menu)
+          if (m != null) {
+            return m
+          }
+        }
+      }
+      return null
+    },
+    // 淇敼鑿滃崟鐘舵��
+    __updateMenuStatus (row) {
+      updateStatus({
+        id: row.id,
+        parentId: row.parentId,
+        disabled: row.disabled
+      })
+        .then(() => {
+          this.$tip.apiSuccess('淇敼鎴愬姛')
+        })
+        .catch(e => {
+          row.disabled = !row.disabled
+          this.$tip.apiFailed(e)
+        })
+    }
+  },
+  created () {
+    this.config({
+      module: '鑿滃崟',
+      api: '/system/menu'
+    })
+    this.search()
+  }
+}
 </script>
 
 <style lang="scss" scoped>
-    @import "@/assets/style/variables.scss";
-    .menu-layout {
-        /deep/ .table-content {
-            margin-top: 0;
-        }
-    }
-    // 鍥炬爣鍒�
-    .table-column-icon {
-        // element-ui鍥炬爣
-        i {
-            background-color: $primary-color;
-            opacity: 0.72;
-            font-size: 20px;
-            color: #fff;
-            padding: 4px;
-            border-radius: 50%;
-        }
-        // 鑷畾涔夊浘鏍�
-        [class^="eva-icon-"] {
-            width: 20px;
-            height: 20px;
-            background-size: 16px;
-            vertical-align: middle;
-        }
-    }
+@import "@/assets/style/variables.scss";
+.menu-layout {
+  /deep/ .table-content {
+    margin-top: 0;
+  }
+}
+// 鍥炬爣鍒�
+.table-column-icon {
+  // element-ui鍥炬爣
+  i {
+    background-color: $primary-color;
+    opacity: 0.72;
+    font-size: 20px;
+    color: #fff;
+    padding: 4px;
+    border-radius: 50%;
+  }
+  // 鑷畾涔夊浘鏍�
+  [class^="eva-icon-"] {
+    width: 20px;
+    height: 20px;
+    background-size: 16px;
+    vertical-align: middle;
+  }
+}
 </style>
diff --git a/platform/src/views/system/role.vue b/platform/src/views/system/role.vue
index 91cf09e..f913359 100644
--- a/platform/src/views/system/role.vue
+++ b/platform/src/views/system/role.vue
@@ -16,7 +16,7 @@
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:role:create', 'system:role:delete']">
-        <li v-permissions="['system:role:create']"><el-button type="primary" @click="$refs.operaRoleWindow.open('鏂板缓瑙掕壊')" icon="el-icon-plus">鏂板缓</el-button></li>
+        <li v-permissions="['system:role:create']"><el-button type="primary" @click="$refs.operaRoleWindow.open('鏂板缓瑙掕壊', null, 0)" icon="el-icon-plus">鏂板缓</el-button></li>
         <li v-permissions="['system:role:delete']"><el-button @click="deleteByIdInBatch" icon="el-icon-delete">鍒犻櫎</el-button></li>
       </ul>
       <el-table
@@ -24,31 +24,33 @@
         :data="tableData.list"
         :default-sort = "{prop: 'createTime', order: 'descending'}"
         stripe
+        border
         @selection-change="handleSelectionChange"
         @sort-change="handleSortChange"
       >
         <el-table-column type="selection" fixed="left" width="55"></el-table-column>
-        <el-table-column prop="code" label="瑙掕壊缂栫爜" fixed="left" min-width="100px"></el-table-column>
-        <el-table-column prop="name" label="瑙掕壊鍚嶇О" fixed="left" min-width="100px"></el-table-column>
-        <el-table-column prop="remark" label="瑙掕壊澶囨敞" min-width="120px"></el-table-column>
-        <el-table-column prop="createUser" label="鍒涘缓浜�" min-width="100px">
+        <el-table-column prop="code" label="瑙掕壊缂栫爜" fixed="left" min-width="100px"  align="center"></el-table-column>
+        <el-table-column prop="name" label="瑙掕壊鍚嶇О" fixed="left" min-width="100px"  align="center"></el-table-column>
+        <el-table-column prop="remark" label="瑙掕壊澶囨敞" min-width="120px"  align="center"></el-table-column>
+        <el-table-column prop="createUser" label="鍒涘缓浜�" min-width="100px"  align="center">
           <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template>
         </el-table-column>
-        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="140px" sortable="custom" sort-by="role.CREATE_TIME"></el-table-column>
-        <el-table-column prop="updateUser" label="鏇存柊浜�" min-width="100px">
+        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="140px"  align="center"></el-table-column>
+        <el-table-column prop="updateUser" label="鏇存柊浜�" min-width="100px"  align="center">
           <template slot-scope="{row}">{{row.updateUserInfo == null ? '' : row.updateUserInfo.username}}</template>
         </el-table-column>
-        <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="140px"></el-table-column>
+        <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="140px"  align="center"></el-table-column>
         <el-table-column
           v-if="containPermissions(['system:role:update', 'system:role:createRolePermission', 'system:role:createRoleMenu', 'system:role:delete'])"
           label="鎿嶄綔"
           min-width="270"
+          align="center"
           fixed="right"
         >
           <template v-if="isAdmin || (row.code !== adminCode && userInfo.roles.findIndex(code => code === row.code) === -1)" slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaRoleWindow.open('缂栬緫瑙掕壊', row)" icon="el-icon-edit" v-permissions="['system:role:update']">缂栬緫</el-button>
-            <el-button type="text" @click="$refs.permissionConfigWindow.open(row)" v-permissions="['system:role:createRolePermission']">閰嶇疆鏉冮檺</el-button>
-            <el-button type="text" @click="$refs.menuConfigWindow.open(row)" icon="el-icon-menu" v-permissions="['system:role:createRoleMenu']">鎺堟潈鑿滃崟</el-button>
+            <el-button type="text" @click="$refs.operaRoleWindow.open('缂栬緫瑙掕壊', row, 0)" icon="el-icon-edit" v-permissions="['system:role:update']">缂栬緫</el-button>
+            <el-button type="text" @click="$refs.permissionConfigWindow.open(row, 0)" v-permissions="['system:role:createRolePermission']">閰嶇疆鏉冮檺</el-button>
+            <el-button type="text" @click="$refs.menuConfigWindow.open(row, 0)" icon="el-icon-menu" v-permissions="['system:role:createRoleMenu']">鎺堟潈鑿滃崟</el-button>
             <el-button v-if="!row.fixed" type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:role:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
@@ -85,7 +87,8 @@
       searchForm: {
         code: '',
         name: '',
-        remark: ''
+        remark: '',
+        type: 0
       }
     }
   },
diff --git a/platform/src/views/system/user.vue b/platform/src/views/system/user.vue
index 6ebbe61..532e469 100644
--- a/platform/src/views/system/user.vue
+++ b/platform/src/views/system/user.vue
@@ -2,21 +2,21 @@
   <TableLayout :permissions="['system:user:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
-<!--      <el-form-item label="鐢ㄦ埛鍚�" prop="username">-->
-<!--        <el-input v-model="searchForm.username" v-trim placeholder="璇疯緭鍏ョ敤鎴峰悕" @keypress.enter.native="search"/>-->
-<!--      </el-form-item>-->
-      <el-form-item label="濮撳悕" prop="realname">
-        <el-input v-model="searchForm.realname" v-trim placeholder="璇疯緭鍏�" @keypress.enter.native="search"/>
+      <el-form-item label="鐢ㄦ埛鍚�" prop="username">
+        <el-input v-model="searchForm.username" v-trim placeholder="璇疯緭鍏ョ敤鎴峰悕" @keypress.enter.native="search"/>
       </el-form-item>
-<!--      <el-form-item label="鎵嬫満鍙风爜" prop="mobile">-->
-<!--        <el-input v-model="searchForm.mobile" v-trim placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" @keypress.enter.native="search"/>-->
-<!--      </el-form-item>-->
-<!--            <el-form-item label="鎵�灞為儴闂�" prop="rootDeptId">-->
-<!--        <DepartmentSelect v-model="searchForm.rootDeptId" placeholder="璇烽�夋嫨鎵�灞為儴闂�" clearable/>-->
-<!--      </el-form-item>-->
-<!--      <el-form-item label="宀椾綅" prop="positionId">-->
-<!--        <PositionSelect v-model="searchForm.positionId" placeholder="璇烽�夋嫨宀椾綅" clearable/>-->
-<!--      </el-form-item>-->
+      <el-form-item label="濮撳悕" prop="realname">
+        <el-input v-model="searchForm.realname" v-trim placeholder="璇疯緭鍏ュ鍚�" @keypress.enter.native="search"/>
+      </el-form-item>
+      <el-form-item label="鎵嬫満鍙风爜" prop="mobile">
+        <el-input v-model="searchForm.mobile" v-trim placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" @keypress.enter.native="search"/>
+      </el-form-item>
+            <el-form-item label="鎵�灞為儴闂�" prop="rootDeptId">
+        <DepartmentSelect v-model="searchForm.rootDeptId" placeholder="璇烽�夋嫨鎵�灞為儴闂�" clearable/>
+      </el-form-item>
+      <el-form-item label="宀椾綅" prop="positionId">
+        <PositionSelect v-model="searchForm.positionId" placeholder="璇烽�夋嫨宀椾綅" clearable/>
+      </el-form-item>
       <section>
         <el-button type="primary" icon="el-icon-search" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
@@ -25,44 +25,60 @@
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']">
-        <li v-permissions="['system:user:create']"><el-button type="primary" @click="$refs.operaUserWindow.open('鏂板璐﹀彿')">鏂板璐﹀彿</el-button></li>
-<!--        <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">鍒犻櫎</el-button></li>-->
+        <li v-permissions="['system:user:create']"><el-button icon="el-icon-plus" type="primary" @click="$refs.operaUserWindow.open('鏂板缓鐢ㄦ埛')">鏂板缓</el-button></li>
+        <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">鍒犻櫎</el-button></li>
       </ul>
-<!--      @selection-change="handleSelectionChange"-->
       <el-table
         v-loading="isWorking.search"
         :data="tableData.list"
         :default-sort = "{prop: 'createTime', order: 'descending'}"
         stripe
+        border
+        @selection-change="handleSelectionChange"
         @sort-change="handleSortChange"
       >
-        <el-table-column label="搴忓彿" width="80px">
-          <template slot-scope="scope">
-            <span>{{scope.$index + 1}}</span>
+        <el-table-column type="selection" width="55"></el-table-column>
+        <!-- <el-table-column prop="avatar" label="澶村儚" width="80px" class-name="table-column-avatar" fixed="left">
+          <template slot-scope="{row}">
+            <img :src="row.avatar == null ? '/static/avatar/man.png' : row.avatar">
           </template>
+        </el-table-column> -->
+        <el-table-column prop="realname" label="濮撳悕" min-width="100px" fixed="left"></el-table-column>
+        <el-table-column prop="username" label="鐢ㄦ埛鍚�" min-width="120px"></el-table-column>
+        <el-table-column prop="empNo" label="宸ュ彿" sortable="custom" sort-by="EMP_NO" min-width="80px"></el-table-column>
+        <el-table-column prop="department" label="閮ㄩ棬" min-width="120px">
+          <template slot-scope="{row}">{{row.department == null ? '' : row.department.name}}</template>
         </el-table-column>
-        <el-table-column prop="username" label="璐﹀彿" min-width="120px"></el-table-column>
-        <el-table-column prop="realname" label="濮撳悕" min-width="100px"></el-table-column>
-        <el-table-column prop="mobile" label="鑱旂郴鏂瑰紡" min-width="100px"></el-table-column>
-        <el-table-column prop="roles" label="瑙掕壊" min-width="160px" class-name="table-column-strings">
+        <el-table-column prop="position" label="宀椾綅" min-width="160px" class-name="table-column-strings">
           <template slot-scope="{row}">
             <ul>
-              <li v-for="role in row.roles" :key="role.id">{{role.name}}</li>
+              <li v-for="position in row.positions" :key="position.id">{{position.name}}</li>
             </ul>
           </template>
         </el-table-column>
-        <el-table-column label="鍚敤鐘舵��" min-width="100px">
+        <el-table-column prop="sex" label="鎬у埆" sortable="custom" sort-by="SEX" min-width="80px">
           <template slot-scope="{row}">
-            <el-switch
-              @change="changeStatus($event, row)"
-              v-model="row.status"
-              active-color="#13ce66"
-              inactive-color="#ff4949"
-              :active-value="0"
-              :inactive-value="1">
-            </el-switch>
+            {{row.sex | sex}}
           </template>
         </el-table-column>
+        <el-table-column prop="mobile" label="鎵嬫満鍙风爜" min-width="100px"></el-table-column>
+        <el-table-column prop="email" label="閭" min-width="180px"></el-table-column>
+        <el-table-column prop="birthday" label="鐢熸棩" sortable="custom" sort-by="BIRTHDAY" min-width="100px"></el-table-column>
+        <el-table-column prop="roles" label="瑙掕壊" min-width="160px" class-name="table-column-strings">
+          <template slot-scope="{row}">
+          <ul>
+            <li v-for="role in row.roles" :key="role.id">{{role.name}}</li>
+          </ul>
+        </template>
+        </el-table-column>
+        <el-table-column prop="createUser" label="鍒涘缓浜�" min-width="100px">
+          <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template>
+        </el-table-column>
+        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" sortable="custom" sort-by="CREATE_TIME" min-width="140px"></el-table-column>
+        <el-table-column prop="updateUser" label="鏇存柊浜�" min-width="100px">
+          <template slot-scope="{row}">{{row.updateUserInfo == null ? '' : row.updateUserInfo.username}}</template>
+        </el-table-column>
+        <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" sortable="custom" sort-by="UPDATE_TIME" min-width="140px"></el-table-column>
         <el-table-column
           v-if="containPermissions(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])"
           label="鎿嶄綔"
@@ -71,10 +87,9 @@
         >
           <template v-if="isAdmin || (row.id !== userInfo.id && row.roles.findIndex(r => r.code === adminCode) === -1)" slot-scope="{row}">
             <el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('缂栬緫鐢ㄦ埛', row)" v-permissions="['system:user:update']">缂栬緫</el-button>
-            <el-button type="text" @click="$refs.allocationEnterprises.open('鍒嗛厤浼佷笟', row)">鍒嗛厤浼佷笟</el-button>
             <el-button type="text" icon="el-icon-s-custom" @click="$refs.roleConfigWindow.open(row)" v-permissions="['system:user:createUserRole']">閰嶇疆瑙掕壊</el-button>
             <el-button type="text" @click="$refs.resetPwdWindow.open(row)" v-permissions="['system:user:resetPwd']">閲嶇疆瀵嗙爜</el-button>
-<!--            <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">鍒犻櫎</el-button>-->
+            <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -90,8 +105,6 @@
     <RoleConfigWindow ref="roleConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
     <!-- 閲嶇疆瀵嗙爜 -->
     <ResetPwdWindow ref="resetPwdWindow"/>
-    <!--  鍒嗛厤浼佷笟  -->
-    <allocationEnterprises ref="allocationEnterprises" @success="handlePageChange(tableData.pagination.pageIndex)"/>
   </TableLayout>
 </template>
 
@@ -100,21 +113,20 @@
 import TableLayout from '@/layouts/TableLayout'
 import BaseTable from '@/components/base/BaseTable'
 import OperaUserWindow from '@/components/system/user/OperaUserWindow'
-import allocationEnterprises from '@/components/system/user/allocationEnterprises'
 import RoleConfigWindow from '@/components/system/user/RoleConfigWindow'
 import ResetPwdWindow from '@/components/system/user/ResetPwdWindow'
 import DepartmentSelect from '@/components/common/DepartmentSelect'
 import PositionSelect from '@/components/common/PositionSelect'
-import { updUserStatus } from '@/api/system/user'
 
 export default {
   name: 'SystemUser',
   extends: BaseTable,
-  components: { allocationEnterprises, PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination },
+  components: { PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination },
   data () {
     return {
       // 鎼滅储
       searchForm: {
+        type:0,
         username: '', // 鍚嶅瓧
         realname: '', // 濮撳悕
         rootDeptId: null, // 閮ㄩ棬ID
@@ -134,18 +146,6 @@
       }]
     })
     this.search()
-  },
-  methods: {
-    changeStatus(status, row) {
-      updUserStatus({
-        id: row.id,
-        status
-      }).then(res => {
-        this.search()
-      }).catch(err => {
-        row.status = row.status === 0 ? 1 : 0
-      })
-    }
   }
 }
 </script>
diff --git a/platform/vue.config.js b/platform/vue.config.js
index 8ce251f..6b5f23a 100644
--- a/platform/vue.config.js
+++ b/platform/vue.config.js
@@ -1,12 +1,24 @@
-// 璇︾粏閰嶇疆璇峰弬鑰僪ttps://cli.vuejs.org/zh/config/#vue-config-js
-// const outputDir = process.env.VUE_APP_CONTEXT_PATH.substring(1, process.env.VUE_APP_CONTEXT_PATH.length - 1)
-// const outputDir = process.env.VUE_APP_CONTEXT_PATH.substring(1, process.env.VUE_APP_CONTEXT_PATH.length)
+
+const outputDir = process.env.VUE_APP_CONTEXT_PATH.substring(1, process.env.VUE_APP_CONTEXT_PATH.length)
+// const proxyMiddleware = require('http-proxy-middleware');
 module.exports = {
   publicPath: './',
-  outputDir: 'dest',
+  outputDir: outputDir || 'web',
   assetsDir: 'static',
   lintOnSave: false,
   devServer: {
+    // before(app) {
+    //   app.use(
+    //     [process.env.VUE_APP_API_PREFIX],
+    //     proxyMiddleware({
+    //       target: process.env.VUE_APP_API,
+    //       changeOrigin: true,
+    //       pathRewrite: {
+    //         [`^${[process.env.VUE_APP_API_PREFIX]}`]: ''
+    //       }
+    //     })
+    //   );
+    // },
     host: '0.0.0.0',
     port: 10086,
     proxy: {

--
Gitblit v1.9.3