Просмотр исходного кода

Merge branch 'dev' of http://192.168.1.41:3000/outaozhen/cldV2react into dev

outaozhen 4 лет назад
Родитель
Сommit
e8a656ff88

+ 1 - 1
.prettierrc.js

@@ -9,7 +9,7 @@ module.exports = {
   trailingComma: 'none',
   trailingComma: 'none',
   bracketSpacing: true,
   bracketSpacing: true,
   arrowParens: 'avoid',
   arrowParens: 'avoid',
-  printWidth: 120,
+  printWidth: 110,
   tabWidth: 2,
   tabWidth: 2,
   singleQuote: true,
   singleQuote: true,
   quoteProps: 'as-needed',
   quoteProps: 'as-needed',

+ 11 - 11
config/routes.js

@@ -70,13 +70,13 @@ export default [
         component: './Customer/Business',
         component: './Customer/Business',
         access: 'authRouteFilter',
         access: 'authRouteFilter',
         validatePerm: true
         validatePerm: true
-      },
-      {
-        path: '/customer/test',
-        name: 'test',
-        icon: 'icon-usd-circle',
-        component: './Customer/Test'
       }
       }
+      // {
+      //   path: '/customer/test',
+      //   name: 'test',
+      //   icon: 'icon-usd-circle',
+      //   component: './Customer/Test'
+      // }
     ]
     ]
   },
   },
   {
   {
@@ -210,12 +210,12 @@ export default [
             component: './Statistic/Product/InvoiceTrends',
             component: './Statistic/Product/InvoiceTrends',
             access: 'authRouteFilter',
             access: 'authRouteFilter',
             validatePerm: true
             validatePerm: true
-          },
-          {
-            path: 'customer-additions',
-            name: 'customer-additions',
-            component: './Statistic/Product/CustomerAdditions'
           }
           }
+          // {
+          //   path: 'customer-additions',
+          //   name: 'customer-additions',
+          //   component: './Statistic/Product/CustomerAdditions'
+          // }
         ]
         ]
       }
       }
     ]
     ]

+ 111 - 290
pnpm-lock.yaml

@@ -7,7 +7,6 @@ specifiers:
   '@ant-design/pro-form': 1.42.1
   '@ant-design/pro-form': 1.42.1
   '@ant-design/pro-layout': 6.19.3
   '@ant-design/pro-layout': 6.19.3
   '@ant-design/pro-table': 2.60.0
   '@ant-design/pro-table': 2.60.0
-  '@arco-design/web-react': 2.26.2
   '@babel/plugin-proposal-class-properties': ^7.16.7
   '@babel/plugin-proposal-class-properties': ^7.16.7
   '@babel/plugin-proposal-decorators': ^7.17.2
   '@babel/plugin-proposal-decorators': ^7.17.2
   '@babel/plugin-proposal-optional-chaining': ^7.13.12
   '@babel/plugin-proposal-optional-chaining': ^7.13.12
@@ -78,7 +77,6 @@ dependencies:
   '@ant-design/pro-form': registry.npmmirror.com/@ant-design/pro-form/1.42.1_d2e6cd6486096bf4658597cbfae6749a
   '@ant-design/pro-form': registry.npmmirror.com/@ant-design/pro-form/1.42.1_d2e6cd6486096bf4658597cbfae6749a
   '@ant-design/pro-layout': registry.npmmirror.com/@ant-design/pro-layout/6.19.3_d2e6cd6486096bf4658597cbfae6749a
   '@ant-design/pro-layout': registry.npmmirror.com/@ant-design/pro-layout/6.19.3_d2e6cd6486096bf4658597cbfae6749a
   '@ant-design/pro-table': registry.npmmirror.com/@ant-design/pro-table/2.60.0_d2e6cd6486096bf4658597cbfae6749a
   '@ant-design/pro-table': registry.npmmirror.com/@ant-design/pro-table/2.60.0_d2e6cd6486096bf4658597cbfae6749a
-  '@arco-design/web-react': registry.npmmirror.com/@arco-design/web-react/2.26.2_4275f64df03ab8d9a2f5448ceed6be16
   '@icon-park/react': registry.npmmirror.com/@icon-park/react/1.3.5_react-dom@17.0.2+react@17.0.2
   '@icon-park/react': registry.npmmirror.com/@icon-park/react/1.3.5_react-dom@17.0.2+react@17.0.2
   '@umijs/route-utils': registry.npmmirror.com/@umijs/route-utils/1.0.37
   '@umijs/route-utils': registry.npmmirror.com/@umijs/route-utils/1.0.37
   ahooks: registry.npmmirror.com/ahooks/2.10.14_react@17.0.2
   ahooks: registry.npmmirror.com/ahooks/2.10.14_react@17.0.2
@@ -148,6 +146,83 @@ devDependencies:
 
 
 packages:
 packages:
 
 
+  /@types/yauzl/2.9.2:
+    resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==}
+    requiresBuild: true
+    dependencies:
+      '@types/node': registry.npmmirror.com/@types/node/17.0.18
+    dev: true
+    optional: true
+
+  /bindings/1.5.0:
+    resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+    requiresBuild: true
+    dependencies:
+      file-uri-to-path: 1.0.0
+    dev: true
+    optional: true
+
+  /file-uri-to-path/1.0.0:
+    resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /fsevents/1.2.13:
+    resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==}
+    engines: {node: '>= 4.0'}
+    os: [darwin]
+    deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
+    requiresBuild: true
+    dependencies:
+      bindings: 1.5.0
+      nan: 2.15.0
+    dev: true
+    optional: true
+
+  /fsevents/2.3.2:
+    resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+    os: [darwin]
+    requiresBuild: true
+    optional: true
+
+  /graceful-fs/4.2.9:
+    resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==}
+    dev: true
+
+  /nan/2.15.0:
+    resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==}
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /node-notifier/8.0.2:
+    resolution: {integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==}
+    requiresBuild: true
+    dependencies:
+      growly: registry.npmmirror.com/growly/1.3.0
+      is-wsl: registry.npmmirror.com/is-wsl/2.2.0
+      semver: registry.npmmirror.com/semver/7.3.5
+      shellwords: registry.npmmirror.com/shellwords/0.1.1
+      uuid: registry.npmmirror.com/uuid/8.3.2
+      which: registry.npmmirror.com/which/2.0.2
+    dev: true
+    optional: true
+
+  /source-map/0.6.1:
+    resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+    engines: {node: '>=0.10.0'}
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /uglify-to-browserify/1.0.2:
+    resolution: {integrity: sha1-bgkk1r2mta/jSeOabWMoUKD4grc=}
+    requiresBuild: true
+    dev: false
+    optional: true
+
   registry.nlark.com/@nodelib/fs.scandir/2.1.5:
   registry.nlark.com/@nodelib/fs.scandir/2.1.5:
     resolution: {integrity: sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.5.tgz}
     resolution: {integrity: sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.5.tgz}
     name: '@nodelib/fs.scandir'
     name: '@nodelib/fs.scandir'
@@ -388,14 +463,6 @@ packages:
     version: 1.1.1
     version: 1.1.1
     dev: true
     dev: true
 
 
-  registry.nlark.com/file-uri-to-path/1.0.0:
-    resolution: {integrity: sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz}
-    name: file-uri-to-path
-    version: 1.0.0
-    requiresBuild: true
-    dev: true
-    optional: true
-
   registry.nlark.com/forwarded/0.2.0:
   registry.nlark.com/forwarded/0.2.0:
     resolution: {integrity: sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz}
     resolution: {integrity: sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz}
     name: forwarded
     name: forwarded
@@ -1848,41 +1915,6 @@ packages:
       - supports-color
       - supports-color
     dev: false
     dev: false
 
 
-  registry.npmmirror.com/@arco-design/color/0.4.0:
-    resolution: {integrity: sha512-s7p9MSwJgHeL8DwcATaXvWT3m2SigKpxx4JA1BGPHL4gfvaQsmQfrLBDpjOJFJuJ2jG2dMt3R3P8Pm9E65q18g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@arco-design/color/-/color-0.4.0.tgz}
-    name: '@arco-design/color'
-    version: 0.4.0
-    dependencies:
-      color: registry.npmmirror.com/color/3.2.1
-    dev: false
-
-  registry.npmmirror.com/@arco-design/web-react/2.26.2_4275f64df03ab8d9a2f5448ceed6be16:
-    resolution: {integrity: sha512-Zfz7O/fb+rWTDT44cHuPb1JguVgsDEZ+x1aLnb1Rw3/aAcm+oke8rG5VutVBkSUHlZReEHyUM7KIX1PlthzTYw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@arco-design/web-react/-/web-react-2.26.2.tgz}
-    id: registry.npmmirror.com/@arco-design/web-react/2.26.2
-    name: '@arco-design/web-react'
-    version: 2.26.2
-    peerDependencies:
-      react: '>=16'
-      react-dom: '>=16'
-    dependencies:
-      '@arco-design/color': registry.npmmirror.com/@arco-design/color/0.4.0
-      '@babel/runtime': registry.npmmirror.com/@babel/runtime/7.17.2
-      b-tween: registry.npmmirror.com/b-tween/0.3.3
-      b-validate: registry.npmmirror.com/b-validate/1.3.4
-      dayjs: registry.npmmirror.com/dayjs/1.10.7
-      lodash: registry.npmmirror.com/lodash/4.17.21
-      number-precision: registry.npmmirror.com/number-precision/1.5.2
-      react: registry.npmmirror.com/react/17.0.2
-      react-dom: registry.npmmirror.com/react-dom/17.0.2_react@17.0.2
-      react-focus-lock: registry.npmmirror.com/react-focus-lock/2.8.1_c39f7e1b843c19489d8bd8e68fdd3314
-      react-transition-group: registry.npmmirror.com/react-transition-group/4.4.2_react-dom@17.0.2+react@17.0.2
-      resize-observer-polyfill: registry.npmmirror.com/resize-observer-polyfill/1.5.1
-      scroll-into-view-if-needed: registry.npmmirror.com/scroll-into-view-if-needed/2.2.20
-      shallowequal: registry.npmmirror.com/shallowequal/1.1.0
-    transitivePeerDependencies:
-      - '@types/react'
-    dev: false
-
   registry.npmmirror.com/@babel/code-frame/7.12.11:
   registry.npmmirror.com/@babel/code-frame/7.12.11:
     resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.12.11.tgz}
     resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.12.11.tgz}
     name: '@babel/code-frame'
     name: '@babel/code-frame'
@@ -5001,7 +5033,7 @@ packages:
       ansi-escapes: registry.npmmirror.com/ansi-escapes/4.3.2
       ansi-escapes: registry.npmmirror.com/ansi-escapes/4.3.2
       chalk: registry.npmmirror.com/chalk/4.1.2
       chalk: registry.npmmirror.com/chalk/4.1.2
       exit: registry.npmmirror.com/exit/0.1.2
       exit: registry.npmmirror.com/exit/0.1.2
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       jest-changed-files: registry.npmmirror.com/jest-changed-files/26.6.2
       jest-changed-files: registry.npmmirror.com/jest-changed-files/26.6.2
       jest-config: registry.npmmirror.com/jest-config/26.6.3
       jest-config: registry.npmmirror.com/jest-config/26.6.3
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
@@ -5105,7 +5137,7 @@ packages:
       collect-v8-coverage: registry.npmmirror.com/collect-v8-coverage/1.0.1
       collect-v8-coverage: registry.npmmirror.com/collect-v8-coverage/1.0.1
       exit: registry.npmmirror.com/exit/0.1.2
       exit: registry.npmmirror.com/exit/0.1.2
       glob: registry.npmmirror.com/glob/7.2.0
       glob: registry.npmmirror.com/glob/7.2.0
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       istanbul-lib-coverage: registry.npmmirror.com/istanbul-lib-coverage/3.2.0
       istanbul-lib-coverage: registry.npmmirror.com/istanbul-lib-coverage/3.2.0
       istanbul-lib-instrument: registry.npmmirror.com/istanbul-lib-instrument/4.0.3
       istanbul-lib-instrument: registry.npmmirror.com/istanbul-lib-instrument/4.0.3
       istanbul-lib-report: registry.npmmirror.com/istanbul-lib-report/3.0.0
       istanbul-lib-report: registry.npmmirror.com/istanbul-lib-report/3.0.0
@@ -5121,7 +5153,7 @@ packages:
       terminal-link: registry.npmmirror.com/terminal-link/2.1.1
       terminal-link: registry.npmmirror.com/terminal-link/2.1.1
       v8-to-istanbul: registry.npmmirror.com/v8-to-istanbul/7.1.2
       v8-to-istanbul: registry.npmmirror.com/v8-to-istanbul/7.1.2
     optionalDependencies:
     optionalDependencies:
-      node-notifier: registry.npmmirror.com/node-notifier/8.0.2
+      node-notifier: 8.0.2
     transitivePeerDependencies:
     transitivePeerDependencies:
       - supports-color
       - supports-color
     dev: true
     dev: true
@@ -5133,7 +5165,7 @@ packages:
     engines: {node: '>= 6'}
     engines: {node: '>= 6'}
     dependencies:
     dependencies:
       callsites: registry.npmmirror.com/callsites/3.1.0
       callsites: registry.npmmirror.com/callsites/3.1.0
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       source-map: registry.npmmirror.com/source-map/0.6.1
       source-map: registry.npmmirror.com/source-map/0.6.1
     dev: true
     dev: true
 
 
@@ -5144,7 +5176,7 @@ packages:
     engines: {node: '>= 10.14.2'}
     engines: {node: '>= 10.14.2'}
     dependencies:
     dependencies:
       callsites: registry.npmmirror.com/callsites/3.1.0
       callsites: registry.npmmirror.com/callsites/3.1.0
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       source-map: registry.npmmirror.com/source-map/0.6.1
       source-map: registry.npmmirror.com/source-map/0.6.1
     dev: true
     dev: true
 
 
@@ -5178,7 +5210,7 @@ packages:
     engines: {node: '>= 10.14.2'}
     engines: {node: '>= 10.14.2'}
     dependencies:
     dependencies:
       '@jest/test-result': registry.npmmirror.com/@jest/test-result/26.6.2
       '@jest/test-result': registry.npmmirror.com/@jest/test-result/26.6.2
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
       jest-runner: registry.npmmirror.com/jest-runner/26.6.3
       jest-runner: registry.npmmirror.com/jest-runner/26.6.3
       jest-runtime: registry.npmmirror.com/jest-runtime/26.6.3
       jest-runtime: registry.npmmirror.com/jest-runtime/26.6.3
@@ -5202,7 +5234,7 @@ packages:
       chalk: registry.npmmirror.com/chalk/2.4.2
       chalk: registry.npmmirror.com/chalk/2.4.2
       convert-source-map: registry.npmmirror.com/convert-source-map/1.8.0
       convert-source-map: registry.npmmirror.com/convert-source-map/1.8.0
       fast-json-stable-stringify: registry.npmmirror.com/fast-json-stable-stringify/2.1.0
       fast-json-stable-stringify: registry.npmmirror.com/fast-json-stable-stringify/2.1.0
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       jest-haste-map: registry.npmmirror.com/jest-haste-map/24.9.0
       jest-haste-map: registry.npmmirror.com/jest-haste-map/24.9.0
       jest-regex-util: registry.npmmirror.com/jest-regex-util/24.9.0
       jest-regex-util: registry.npmmirror.com/jest-regex-util/24.9.0
       jest-util: registry.npmmirror.com/jest-util/24.9.0
       jest-util: registry.npmmirror.com/jest-util/24.9.0
@@ -5228,7 +5260,7 @@ packages:
       chalk: registry.npmmirror.com/chalk/4.1.2
       chalk: registry.npmmirror.com/chalk/4.1.2
       convert-source-map: registry.npmmirror.com/convert-source-map/1.8.0
       convert-source-map: registry.npmmirror.com/convert-source-map/1.8.0
       fast-json-stable-stringify: registry.npmmirror.com/fast-json-stable-stringify/2.1.0
       fast-json-stable-stringify: registry.npmmirror.com/fast-json-stable-stringify/2.1.0
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
       jest-regex-util: registry.npmmirror.com/jest-regex-util/26.0.0
       jest-regex-util: registry.npmmirror.com/jest-regex-util/26.0.0
       jest-util: registry.npmmirror.com/jest-util/26.6.2
       jest-util: registry.npmmirror.com/jest-util/26.6.2
@@ -6042,16 +6074,6 @@ packages:
       '@types/yargs-parser': registry.npmmirror.com/@types/yargs-parser/20.2.1
       '@types/yargs-parser': registry.npmmirror.com/@types/yargs-parser/20.2.1
     dev: true
     dev: true
 
 
-  registry.npmmirror.com/@types/yauzl/2.9.2:
-    resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/yauzl/-/yauzl-2.9.2.tgz}
-    name: '@types/yauzl'
-    version: 2.9.2
-    requiresBuild: true
-    dependencies:
-      '@types/node': registry.npmmirror.com/@types/node/17.0.18
-    dev: true
-    optional: true
-
   registry.npmmirror.com/@typescript-eslint/eslint-plugin/5.15.0_39008ab451aed7e12174fadc21405fee:
   registry.npmmirror.com/@typescript-eslint/eslint-plugin/5.15.0_39008ab451aed7e12174fadc21405fee:
     resolution: {integrity: sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz}
     resolution: {integrity: sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz}
     id: registry.npmmirror.com/@typescript-eslint/eslint-plugin/5.15.0
     id: registry.npmmirror.com/@typescript-eslint/eslint-plugin/5.15.0
@@ -7858,20 +7880,6 @@ packages:
     version: 1.11.0
     version: 1.11.0
     dev: true
     dev: true
 
 
-  registry.npmmirror.com/b-tween/0.3.3:
-    resolution: {integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/b-tween/-/b-tween-0.3.3.tgz}
-    name: b-tween
-    version: 0.3.3
-    dev: false
-
-  registry.npmmirror.com/b-validate/1.3.4:
-    resolution: {integrity: sha512-7Bj+KFUcxk6c+qc3HiCR20qMOlHJmb7NSrVAS1amryVUT+7GTNqCp2Qk4XZP8XD3MBfZSqon/XlxNhHnxyB8ng==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/b-validate/-/b-validate-1.3.4.tgz}
-    name: b-validate
-    version: 1.3.4
-    dependencies:
-      lodash.isequal: registry.npmmirror.com/lodash.isequal/4.5.0
-    dev: false
-
   registry.npmmirror.com/babel-eslint/10.1.0_eslint@7.32.0:
   registry.npmmirror.com/babel-eslint/10.1.0_eslint@7.32.0:
     resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz}
     resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz}
     id: registry.npmmirror.com/babel-eslint/10.1.0
     id: registry.npmmirror.com/babel-eslint/10.1.0
@@ -7909,7 +7917,7 @@ packages:
       babel-plugin-istanbul: registry.npmmirror.com/babel-plugin-istanbul/6.1.1
       babel-plugin-istanbul: registry.npmmirror.com/babel-plugin-istanbul/6.1.1
       babel-preset-jest: registry.npmmirror.com/babel-preset-jest/26.6.2_@babel+core@7.12.10
       babel-preset-jest: registry.npmmirror.com/babel-preset-jest/26.6.2_@babel+core@7.12.10
       chalk: registry.npmmirror.com/chalk/4.1.2
       chalk: registry.npmmirror.com/chalk/4.1.2
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       slash: registry.npmmirror.com/slash/3.0.0
       slash: registry.npmmirror.com/slash/3.0.0
     transitivePeerDependencies:
     transitivePeerDependencies:
       - supports-color
       - supports-color
@@ -8184,16 +8192,6 @@ packages:
     version: 2.2.0
     version: 2.2.0
     engines: {node: '>=8'}
     engines: {node: '>=8'}
 
 
-  registry.npmmirror.com/bindings/1.5.0:
-    resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz}
-    name: bindings
-    version: 1.5.0
-    requiresBuild: true
-    dependencies:
-      file-uri-to-path: registry.nlark.com/file-uri-to-path/1.0.0
-    dev: true
-    optional: true
-
   registry.npmmirror.com/bl/4.1.0:
   registry.npmmirror.com/bl/4.1.0:
     resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz}
     resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz}
     name: bl
     name: bl
@@ -8696,7 +8694,7 @@ packages:
       normalize-path: registry.npmmirror.com/normalize-path/3.0.0
       normalize-path: registry.npmmirror.com/normalize-path/3.0.0
       readdirp: registry.npmmirror.com/readdirp/3.5.0
       readdirp: registry.npmmirror.com/readdirp/3.5.0
     optionalDependencies:
     optionalDependencies:
-      fsevents: registry.npmmirror.com/fsevents/2.3.2
+      fsevents: 2.3.2
 
 
   registry.npmmirror.com/chokidar/3.5.3:
   registry.npmmirror.com/chokidar/3.5.3:
     resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz}
     resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz}
@@ -8712,7 +8710,7 @@ packages:
       normalize-path: registry.npmmirror.com/normalize-path/3.0.0
       normalize-path: registry.npmmirror.com/normalize-path/3.0.0
       readdirp: registry.npmmirror.com/readdirp/3.6.0
       readdirp: registry.npmmirror.com/readdirp/3.6.0
     optionalDependencies:
     optionalDependencies:
-      fsevents: registry.npmmirror.com/fsevents/2.3.2
+      fsevents: 2.3.2
     dev: true
     dev: true
 
 
   registry.npmmirror.com/chownr/1.1.4:
   registry.npmmirror.com/chownr/1.1.4:
@@ -9066,12 +9064,6 @@ packages:
       webpack-sources: registry.npmmirror.com/webpack-sources/1.4.3
       webpack-sources: registry.npmmirror.com/webpack-sources/1.4.3
     dev: true
     dev: true
 
 
-  registry.npmmirror.com/compute-scroll-into-view/1.0.11:
-    resolution: {integrity: sha512-uUnglJowSe0IPmWOdDtrlHXof5CTIJitfJEyITHBW6zDVOGu9Pjk5puaLM73SLcwak0L4hEjO7Td88/a6P5i7A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.11.tgz}
-    name: compute-scroll-into-view
-    version: 1.0.11
-    dev: false
-
   registry.npmmirror.com/compute-scroll-into-view/1.0.17:
   registry.npmmirror.com/compute-scroll-into-view/1.0.17:
     resolution: {integrity: sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz}
     resolution: {integrity: sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz}
     name: compute-scroll-into-view
     name: compute-scroll-into-view
@@ -9914,12 +9906,6 @@ packages:
     engines: {node: '>=8'}
     engines: {node: '>=8'}
     dev: true
     dev: true
 
 
-  registry.npmmirror.com/detect-node-es/1.1.0:
-    resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/detect-node-es/-/detect-node-es-1.1.0.tgz}
-    name: detect-node-es
-    version: 1.1.0
-    dev: false
-
   registry.npmmirror.com/devtools-protocol/0.0.818844:
   registry.npmmirror.com/devtools-protocol/0.0.818844:
     resolution: {integrity: sha1-0ZRyeOyFtT5MjKWY9geij6eFup4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/devtools-protocol/download/devtools-protocol-0.0.818844.tgz}
     resolution: {integrity: sha1-0ZRyeOyFtT5MjKWY9geij6eFup4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/devtools-protocol/download/devtools-protocol-0.0.818844.tgz}
     name: devtools-protocol
     name: devtools-protocol
@@ -9988,15 +9974,6 @@ packages:
     name: dom-align
     name: dom-align
     version: 1.12.2
     version: 1.12.2
 
 
-  registry.npmmirror.com/dom-helpers/5.2.1:
-    resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dom-helpers/-/dom-helpers-5.2.1.tgz}
-    name: dom-helpers
-    version: 5.2.1
-    dependencies:
-      '@babel/runtime': registry.npmmirror.com/@babel/runtime/7.17.2
-      csstype: registry.npmmirror.com/csstype/3.0.10
-    dev: false
-
   registry.npmmirror.com/dom-serializer/0.2.2:
   registry.npmmirror.com/dom-serializer/0.2.2:
     resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz}
     resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz}
     name: dom-serializer
     name: dom-serializer
@@ -10467,7 +10444,7 @@ packages:
       esutils: registry.npmmirror.com/esutils/2.0.3
       esutils: registry.npmmirror.com/esutils/2.0.3
       optionator: registry.npmmirror.com/optionator/0.8.3
       optionator: registry.npmmirror.com/optionator/0.8.3
     optionalDependencies:
     optionalDependencies:
-      source-map: registry.npmmirror.com/source-map/0.6.1
+      source-map: 0.6.1
     dev: true
     dev: true
 
 
   registry.npmmirror.com/escodegen/2.0.0:
   registry.npmmirror.com/escodegen/2.0.0:
@@ -10482,7 +10459,7 @@ packages:
       esutils: registry.npmmirror.com/esutils/2.0.3
       esutils: registry.npmmirror.com/esutils/2.0.3
       optionator: registry.npmmirror.com/optionator/0.8.3
       optionator: registry.npmmirror.com/optionator/0.8.3
     optionalDependencies:
     optionalDependencies:
-      source-map: registry.npmmirror.com/source-map/0.6.1
+      source-map: 0.6.1
     dev: true
     dev: true
 
 
   registry.npmmirror.com/eslint-ast-utils/1.1.0:
   registry.npmmirror.com/eslint-ast-utils/1.1.0:
@@ -11200,7 +11177,7 @@ packages:
       get-stream: registry.npmmirror.com/get-stream/5.2.0
       get-stream: registry.npmmirror.com/get-stream/5.2.0
       yauzl: registry.npmmirror.com/yauzl/2.10.0
       yauzl: registry.npmmirror.com/yauzl/2.10.0
     optionalDependencies:
     optionalDependencies:
-      '@types/yauzl': registry.npmmirror.com/@types/yauzl/2.9.2
+      '@types/yauzl': 2.9.2
     transitivePeerDependencies:
     transitivePeerDependencies:
       - supports-color
       - supports-color
     dev: true
     dev: true
@@ -11491,15 +11468,6 @@ packages:
       uglify-js: registry.npmmirror.com/uglify-js/2.8.29
       uglify-js: registry.npmmirror.com/uglify-js/2.8.29
     dev: false
     dev: false
 
 
-  registry.npmmirror.com/focus-lock/0.10.2:
-    resolution: {integrity: sha512-DSaI/UHZ/02sg1P616aIWgToQcrKKBmcCvomDZ1PZvcJFj350PnWhSJxJ76T3e5/GbtQEARIACtbrdlrF9C5kA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/focus-lock/-/focus-lock-0.10.2.tgz}
-    name: focus-lock
-    version: 0.10.2
-    engines: {node: '>=10'}
-    dependencies:
-      tslib: registry.npmmirror.com/tslib/2.3.1
-    dev: false
-
   registry.npmmirror.com/for-each/0.3.3:
   registry.npmmirror.com/for-each/0.3.3:
     resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz}
     resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz}
     name: for-each
     name: for-each
@@ -11588,29 +11556,6 @@ packages:
     name: fs.realpath
     name: fs.realpath
     version: 1.0.0
     version: 1.0.0
 
 
-  registry.npmmirror.com/fsevents/1.2.13:
-    resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz}
-    name: fsevents
-    version: 1.2.13
-    engines: {node: '>= 4.0'}
-    os: [darwin]
-    deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
-    requiresBuild: true
-    dependencies:
-      bindings: registry.npmmirror.com/bindings/1.5.0
-      nan: registry.npmmirror.com/nan/2.15.0
-    dev: true
-    optional: true
-
-  registry.npmmirror.com/fsevents/2.3.2:
-    resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz}
-    name: fsevents
-    version: 2.3.2
-    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
-    os: [darwin]
-    requiresBuild: true
-    optional: true
-
   registry.npmmirror.com/function-bind/1.1.1:
   registry.npmmirror.com/function-bind/1.1.1:
     resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz}
     resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz}
     name: function-bind
     name: function-bind
@@ -13225,7 +13170,7 @@ packages:
       '@jest/types': registry.npmmirror.com/@jest/types/26.6.2
       '@jest/types': registry.npmmirror.com/@jest/types/26.6.2
       chalk: registry.npmmirror.com/chalk/4.1.2
       chalk: registry.npmmirror.com/chalk/4.1.2
       exit: registry.npmmirror.com/exit/0.1.2
       exit: registry.npmmirror.com/exit/0.1.2
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       import-local: registry.npmmirror.com/import-local/3.1.0
       import-local: registry.npmmirror.com/import-local/3.1.0
       is-ci: registry.npmmirror.com/is-ci/2.0.0
       is-ci: registry.npmmirror.com/is-ci/2.0.0
       jest-config: registry.npmmirror.com/jest-config/26.6.3
       jest-config: registry.npmmirror.com/jest-config/26.6.3
@@ -13259,7 +13204,7 @@ packages:
       chalk: registry.npmmirror.com/chalk/4.1.2
       chalk: registry.npmmirror.com/chalk/4.1.2
       deepmerge: registry.npmmirror.com/deepmerge/4.2.2
       deepmerge: registry.npmmirror.com/deepmerge/4.2.2
       glob: registry.npmmirror.com/glob/7.2.0
       glob: registry.npmmirror.com/glob/7.2.0
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       jest-environment-jsdom: registry.npmmirror.com/jest-environment-jsdom/26.6.2
       jest-environment-jsdom: registry.npmmirror.com/jest-environment-jsdom/26.6.2
       jest-environment-node: registry.npmmirror.com/jest-environment-node/26.6.2
       jest-environment-node: registry.npmmirror.com/jest-environment-node/26.6.2
       jest-get-type: registry.npmmirror.com/jest-get-type/26.3.0
       jest-get-type: registry.npmmirror.com/jest-get-type/26.3.0
@@ -13376,7 +13321,7 @@ packages:
       '@jest/types': registry.npmmirror.com/@jest/types/24.9.0
       '@jest/types': registry.npmmirror.com/@jest/types/24.9.0
       anymatch: registry.npmmirror.com/anymatch/2.0.0
       anymatch: registry.npmmirror.com/anymatch/2.0.0
       fb-watchman: registry.npmmirror.com/fb-watchman/2.0.1
       fb-watchman: registry.npmmirror.com/fb-watchman/2.0.1
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       invariant: registry.npmmirror.com/invariant/2.2.4
       invariant: registry.npmmirror.com/invariant/2.2.4
       jest-serializer: registry.npmmirror.com/jest-serializer/24.9.0
       jest-serializer: registry.npmmirror.com/jest-serializer/24.9.0
       jest-util: registry.npmmirror.com/jest-util/24.9.0
       jest-util: registry.npmmirror.com/jest-util/24.9.0
@@ -13385,7 +13330,7 @@ packages:
       sane: registry.npmmirror.com/sane/4.1.0
       sane: registry.npmmirror.com/sane/4.1.0
       walker: registry.npmmirror.com/walker/1.0.8
       walker: registry.npmmirror.com/walker/1.0.8
     optionalDependencies:
     optionalDependencies:
-      fsevents: registry.npmmirror.com/fsevents/1.2.13
+      fsevents: 1.2.13
     dev: true
     dev: true
 
 
   registry.npmmirror.com/jest-haste-map/26.6.2:
   registry.npmmirror.com/jest-haste-map/26.6.2:
@@ -13399,7 +13344,7 @@ packages:
       '@types/node': registry.npmmirror.com/@types/node/17.0.18
       '@types/node': registry.npmmirror.com/@types/node/17.0.18
       anymatch: registry.npmmirror.com/anymatch/3.1.2
       anymatch: registry.npmmirror.com/anymatch/3.1.2
       fb-watchman: registry.npmmirror.com/fb-watchman/2.0.1
       fb-watchman: registry.npmmirror.com/fb-watchman/2.0.1
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       jest-regex-util: registry.npmmirror.com/jest-regex-util/26.0.0
       jest-regex-util: registry.npmmirror.com/jest-regex-util/26.0.0
       jest-serializer: registry.npmmirror.com/jest-serializer/26.6.2
       jest-serializer: registry.npmmirror.com/jest-serializer/26.6.2
       jest-util: registry.npmmirror.com/jest-util/26.6.2
       jest-util: registry.npmmirror.com/jest-util/26.6.2
@@ -13408,7 +13353,7 @@ packages:
       sane: registry.npmmirror.com/sane/4.1.0
       sane: registry.npmmirror.com/sane/4.1.0
       walker: registry.npmmirror.com/walker/1.0.8
       walker: registry.npmmirror.com/walker/1.0.8
     optionalDependencies:
     optionalDependencies:
-      fsevents: registry.npmmirror.com/fsevents/2.3.2
+      fsevents: 2.3.2
     dev: true
     dev: true
 
 
   registry.npmmirror.com/jest-jasmine2/26.6.3:
   registry.npmmirror.com/jest-jasmine2/26.6.3:
@@ -13491,7 +13436,7 @@ packages:
       '@jest/types': registry.npmmirror.com/@jest/types/26.6.2
       '@jest/types': registry.npmmirror.com/@jest/types/26.6.2
       '@types/stack-utils': registry.npmmirror.com/@types/stack-utils/2.0.1
       '@types/stack-utils': registry.npmmirror.com/@types/stack-utils/2.0.1
       chalk: registry.npmmirror.com/chalk/4.1.2
       chalk: registry.npmmirror.com/chalk/4.1.2
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       micromatch: registry.npmmirror.com/micromatch/4.0.4
       micromatch: registry.npmmirror.com/micromatch/4.0.4
       pretty-format: registry.npmmirror.com/pretty-format/26.6.2
       pretty-format: registry.npmmirror.com/pretty-format/26.6.2
       slash: registry.npmmirror.com/slash/3.0.0
       slash: registry.npmmirror.com/slash/3.0.0
@@ -13565,7 +13510,7 @@ packages:
     dependencies:
     dependencies:
       '@jest/types': registry.npmmirror.com/@jest/types/26.6.2
       '@jest/types': registry.npmmirror.com/@jest/types/26.6.2
       chalk: registry.npmmirror.com/chalk/4.1.2
       chalk: registry.npmmirror.com/chalk/4.1.2
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       jest-pnp-resolver: registry.npmmirror.com/jest-pnp-resolver/1.2.2_jest-resolve@26.6.2
       jest-pnp-resolver: registry.npmmirror.com/jest-pnp-resolver/1.2.2_jest-resolve@26.6.2
       jest-util: registry.npmmirror.com/jest-util/26.6.2
       jest-util: registry.npmmirror.com/jest-util/26.6.2
       read-pkg-up: registry.npmmirror.com/read-pkg-up/7.0.1
       read-pkg-up: registry.npmmirror.com/read-pkg-up/7.0.1
@@ -13587,7 +13532,7 @@ packages:
       chalk: registry.npmmirror.com/chalk/4.1.2
       chalk: registry.npmmirror.com/chalk/4.1.2
       emittery: registry.npmmirror.com/emittery/0.7.2
       emittery: registry.npmmirror.com/emittery/0.7.2
       exit: registry.npmmirror.com/exit/0.1.2
       exit: registry.npmmirror.com/exit/0.1.2
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       jest-config: registry.npmmirror.com/jest-config/26.6.3
       jest-config: registry.npmmirror.com/jest-config/26.6.3
       jest-docblock: registry.npmmirror.com/jest-docblock/26.0.0
       jest-docblock: registry.npmmirror.com/jest-docblock/26.0.0
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
@@ -13628,7 +13573,7 @@ packages:
       collect-v8-coverage: registry.npmmirror.com/collect-v8-coverage/1.0.1
       collect-v8-coverage: registry.npmmirror.com/collect-v8-coverage/1.0.1
       exit: registry.npmmirror.com/exit/0.1.2
       exit: registry.npmmirror.com/exit/0.1.2
       glob: registry.npmmirror.com/glob/7.2.0
       glob: registry.npmmirror.com/glob/7.2.0
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       jest-config: registry.npmmirror.com/jest-config/26.6.3
       jest-config: registry.npmmirror.com/jest-config/26.6.3
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
       jest-message-util: registry.npmmirror.com/jest-message-util/26.6.2
       jest-message-util: registry.npmmirror.com/jest-message-util/26.6.2
@@ -13663,7 +13608,7 @@ packages:
     engines: {node: '>= 10.14.2'}
     engines: {node: '>= 10.14.2'}
     dependencies:
     dependencies:
       '@types/node': registry.npmmirror.com/@types/node/17.0.18
       '@types/node': registry.npmmirror.com/@types/node/17.0.18
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
     dev: true
     dev: true
 
 
   registry.npmmirror.com/jest-snapshot/26.6.2:
   registry.npmmirror.com/jest-snapshot/26.6.2:
@@ -13678,7 +13623,7 @@ packages:
       '@types/prettier': registry.npmmirror.com/@types/prettier/2.4.4
       '@types/prettier': registry.npmmirror.com/@types/prettier/2.4.4
       chalk: registry.npmmirror.com/chalk/4.1.2
       chalk: registry.npmmirror.com/chalk/4.1.2
       expect: registry.npmmirror.com/expect/26.6.2
       expect: registry.npmmirror.com/expect/26.6.2
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       jest-diff: registry.npmmirror.com/jest-diff/26.6.2
       jest-diff: registry.npmmirror.com/jest-diff/26.6.2
       jest-get-type: registry.npmmirror.com/jest-get-type/26.3.0
       jest-get-type: registry.npmmirror.com/jest-get-type/26.3.0
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
       jest-haste-map: registry.npmmirror.com/jest-haste-map/26.6.2
@@ -13703,7 +13648,7 @@ packages:
       '@jest/types': registry.npmmirror.com/@jest/types/24.9.0
       '@jest/types': registry.npmmirror.com/@jest/types/24.9.0
       callsites: registry.npmmirror.com/callsites/3.1.0
       callsites: registry.npmmirror.com/callsites/3.1.0
       chalk: registry.npmmirror.com/chalk/2.4.2
       chalk: registry.npmmirror.com/chalk/2.4.2
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       is-ci: registry.npmmirror.com/is-ci/2.0.0
       is-ci: registry.npmmirror.com/is-ci/2.0.0
       mkdirp: registry.npmmirror.com/mkdirp/0.5.5
       mkdirp: registry.npmmirror.com/mkdirp/0.5.5
       slash: registry.npmmirror.com/slash/2.0.0
       slash: registry.npmmirror.com/slash/2.0.0
@@ -13719,7 +13664,7 @@ packages:
       '@jest/types': registry.npmmirror.com/@jest/types/26.6.2
       '@jest/types': registry.npmmirror.com/@jest/types/26.6.2
       '@types/node': registry.npmmirror.com/@types/node/17.0.18
       '@types/node': registry.npmmirror.com/@types/node/17.0.18
       chalk: registry.npmmirror.com/chalk/4.1.2
       chalk: registry.npmmirror.com/chalk/4.1.2
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       is-ci: registry.npmmirror.com/is-ci/2.0.0
       is-ci: registry.npmmirror.com/is-ci/2.0.0
       micromatch: registry.npmmirror.com/micromatch/4.0.4
       micromatch: registry.npmmirror.com/micromatch/4.0.4
     dev: true
     dev: true
@@ -14039,7 +13984,7 @@ packages:
     name: jsonfile
     name: jsonfile
     version: 4.0.0
     version: 4.0.0
     optionalDependencies:
     optionalDependencies:
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
     dev: true
     dev: true
 
 
   registry.npmmirror.com/jsprim/1.4.2:
   registry.npmmirror.com/jsprim/1.4.2:
@@ -14264,7 +14209,7 @@ packages:
     version: 4.0.0
     version: 4.0.0
     engines: {node: '>=4'}
     engines: {node: '>=4'}
     dependencies:
     dependencies:
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       parse-json: registry.npmmirror.com/parse-json/4.0.0
       parse-json: registry.npmmirror.com/parse-json/4.0.0
       pify: registry.npmmirror.com/pify/3.0.0
       pify: registry.npmmirror.com/pify/3.0.0
       strip-bom: registry.npmmirror.com/strip-bom/3.0.0
       strip-bom: registry.npmmirror.com/strip-bom/3.0.0
@@ -15423,14 +15368,6 @@ packages:
       thenify-all: registry.npmmirror.com/thenify-all/1.6.0
       thenify-all: registry.npmmirror.com/thenify-all/1.6.0
     dev: true
     dev: true
 
 
-  registry.npmmirror.com/nan/2.15.0:
-    resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nan/-/nan-2.15.0.tgz}
-    name: nan
-    version: 2.15.0
-    requiresBuild: true
-    dev: true
-    optional: true
-
   registry.npmmirror.com/nano-css/5.3.4_react-dom@17.0.2+react@17.0.2:
   registry.npmmirror.com/nano-css/5.3.4_react-dom@17.0.2+react@17.0.2:
     resolution: {integrity: sha512-wfcviJB6NOxDIDfr7RFn/GlaN7I/Bhe4d39ZRCJ3xvZX60LVe2qZ+rDqM49nm4YT81gAjzS+ZklhKP/Gnfnubg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nano-css/-/nano-css-5.3.4.tgz}
     resolution: {integrity: sha512-wfcviJB6NOxDIDfr7RFn/GlaN7I/Bhe4d39ZRCJ3xvZX60LVe2qZ+rDqM49nm4YT81gAjzS+ZklhKP/Gnfnubg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nano-css/-/nano-css-5.3.4.tgz}
     id: registry.npmmirror.com/nano-css/5.3.4
     id: registry.npmmirror.com/nano-css/5.3.4
@@ -15558,21 +15495,6 @@ packages:
     version: 0.4.0
     version: 0.4.0
     dev: true
     dev: true
 
 
-  registry.npmmirror.com/node-notifier/8.0.2:
-    resolution: {integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/node-notifier/-/node-notifier-8.0.2.tgz}
-    name: node-notifier
-    version: 8.0.2
-    requiresBuild: true
-    dependencies:
-      growly: registry.npmmirror.com/growly/1.3.0
-      is-wsl: registry.npmmirror.com/is-wsl/2.2.0
-      semver: registry.npmmirror.com/semver/7.3.5
-      shellwords: registry.npmmirror.com/shellwords/0.1.1
-      uuid: registry.npmmirror.com/uuid/8.3.2
-      which: registry.npmmirror.com/which/2.0.2
-    dev: true
-    optional: true
-
   registry.npmmirror.com/node-releases/2.0.2:
   registry.npmmirror.com/node-releases/2.0.2:
     resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/node-releases/-/node-releases-2.0.2.tgz}
     resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/node-releases/-/node-releases-2.0.2.tgz}
     name: node-releases
     name: node-releases
@@ -15688,12 +15610,6 @@ packages:
     name: num2fraction
     name: num2fraction
     version: 1.2.2
     version: 1.2.2
 
 
-  registry.npmmirror.com/number-precision/1.5.2:
-    resolution: {integrity: sha512-q7C1ZW3FyjsJ+IpGB6ykX8OWWa5+6M+hEY0zXBlzq1Sq1IPY9GeI3CQ9b2i6CMIYoeSuFhop2Av/OhCxClXqag==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/number-precision/-/number-precision-1.5.2.tgz}
-    name: number-precision
-    version: 1.5.2
-    dev: false
-
   registry.npmmirror.com/nwsapi/2.2.0:
   registry.npmmirror.com/nwsapi/2.2.0:
     resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.0.tgz}
     resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.0.tgz}
     name: nwsapi
     name: nwsapi
@@ -18029,18 +17945,6 @@ packages:
       react: registry.npmmirror.com/react/17.0.2
       react: registry.npmmirror.com/react/17.0.2
       react-dom: registry.npmmirror.com/react-dom/17.0.2_react@17.0.2
       react-dom: registry.npmmirror.com/react-dom/17.0.2_react@17.0.2
 
 
-  registry.npmmirror.com/react-clientside-effect/1.2.5_react@17.0.2:
-    resolution: {integrity: sha512-2bL8qFW1TGBHozGGbVeyvnggRpMjibeZM2536AKNENLECutp2yfs44IL8Hmpn8qjFQ2K7A9PnYf3vc7aQq/cPA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-clientside-effect/-/react-clientside-effect-1.2.5.tgz}
-    id: registry.npmmirror.com/react-clientside-effect/1.2.5
-    name: react-clientside-effect
-    version: 1.2.5
-    peerDependencies:
-      react: ^15.3.0 || ^16.0.0 || ^17.0.0
-    dependencies:
-      '@babel/runtime': registry.npmmirror.com/@babel/runtime/7.17.2
-      react: registry.npmmirror.com/react/17.0.2
-    dev: false
-
   registry.npmmirror.com/react-color/2.17.1_react@17.0.2:
   registry.npmmirror.com/react-color/2.17.1_react@17.0.2:
     resolution: {integrity: sha512-S+I6TkUKJaqfALLkAIfiCZ/MANQyy7dKkf7g9ZU5GTUy2rf8c2Rx62otyvADAviWR+6HRkzdf2vL1Qvz9goCLQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-color/-/react-color-2.17.1.tgz}
     resolution: {integrity: sha512-S+I6TkUKJaqfALLkAIfiCZ/MANQyy7dKkf7g9ZU5GTUy2rf8c2Rx62otyvADAviWR+6HRkzdf2vL1Qvz9goCLQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-color/-/react-color-2.17.1.tgz}
     id: registry.npmmirror.com/react-color/2.17.1
     id: registry.npmmirror.com/react-color/2.17.1
@@ -18166,25 +18070,6 @@ packages:
     version: 3.2.0
     version: 3.2.0
     dev: true
     dev: true
 
 
-  registry.npmmirror.com/react-focus-lock/2.8.1_c39f7e1b843c19489d8bd8e68fdd3314:
-    resolution: {integrity: sha512-4kb9I7JIiBm0EJ+CsIBQ+T1t5qtmwPRbFGYFQ0t2q2qIpbFbYTHDjnjJVFB7oMBtXityEOQehblJPjqSIf3Amg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-focus-lock/-/react-focus-lock-2.8.1.tgz}
-    id: registry.npmmirror.com/react-focus-lock/2.8.1
-    name: react-focus-lock
-    version: 2.8.1
-    peerDependencies:
-      react: ^16.8.0 || ^17.0.0 || ^18.0.0
-    dependencies:
-      '@babel/runtime': registry.npmmirror.com/@babel/runtime/7.17.2
-      focus-lock: registry.npmmirror.com/focus-lock/0.10.2
-      prop-types: registry.npmmirror.com/prop-types/15.8.1
-      react: registry.npmmirror.com/react/17.0.2
-      react-clientside-effect: registry.npmmirror.com/react-clientside-effect/1.2.5_react@17.0.2
-      use-callback-ref: registry.npmmirror.com/use-callback-ref/1.2.5_c39f7e1b843c19489d8bd8e68fdd3314
-      use-sidecar: registry.npmmirror.com/use-sidecar/1.0.5_react@17.0.2
-    transitivePeerDependencies:
-      - '@types/react'
-    dev: false
-
   registry.npmmirror.com/react-helmet/6.1.0_react@17.0.2:
   registry.npmmirror.com/react-helmet/6.1.0_react@17.0.2:
     resolution: {integrity: sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-helmet/-/react-helmet-6.1.0.tgz}
     resolution: {integrity: sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-helmet/-/react-helmet-6.1.0.tgz}
     id: registry.npmmirror.com/react-helmet/6.1.0
     id: registry.npmmirror.com/react-helmet/6.1.0
@@ -18482,23 +18367,6 @@ packages:
       react-dom: registry.npmmirror.com/react-dom/17.0.2_react@17.0.2
       react-dom: registry.npmmirror.com/react-dom/17.0.2_react@17.0.2
     dev: false
     dev: false
 
 
-  registry.npmmirror.com/react-transition-group/4.4.2_react-dom@17.0.2+react@17.0.2:
-    resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-transition-group/-/react-transition-group-4.4.2.tgz}
-    id: registry.npmmirror.com/react-transition-group/4.4.2
-    name: react-transition-group
-    version: 4.4.2
-    peerDependencies:
-      react: '>=16.6.0'
-      react-dom: '>=16.6.0'
-    dependencies:
-      '@babel/runtime': registry.npmmirror.com/@babel/runtime/7.17.2
-      dom-helpers: registry.npmmirror.com/dom-helpers/5.2.1
-      loose-envify: registry.npmmirror.com/loose-envify/1.4.0
-      prop-types: registry.npmmirror.com/prop-types/15.8.1
-      react: registry.npmmirror.com/react/17.0.2
-      react-dom: registry.npmmirror.com/react-dom/17.0.2_react@17.0.2
-    dev: false
-
   registry.npmmirror.com/react-tween-state/0.1.5:
   registry.npmmirror.com/react-tween-state/0.1.5:
     resolution: {integrity: sha512-sJQpjsdn0wjlDIUpfpb7jQGnOG8hAEW2e8k0KPA+xmf5KFa6Xat2JldbmxBhaqP0S/uIXhVE5ymKyH/b9X8nYA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-tween-state/-/react-tween-state-0.1.5.tgz}
     resolution: {integrity: sha512-sJQpjsdn0wjlDIUpfpb7jQGnOG8hAEW2e8k0KPA+xmf5KFa6Xat2JldbmxBhaqP0S/uIXhVE5ymKyH/b9X8nYA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-tween-state/-/react-tween-state-0.1.5.tgz}
     name: react-tween-state
     name: react-tween-state
@@ -19330,7 +19198,7 @@ packages:
     engines: {node: '>=10.0.0'}
     engines: {node: '>=10.0.0'}
     hasBin: true
     hasBin: true
     optionalDependencies:
     optionalDependencies:
-      fsevents: registry.npmmirror.com/fsevents/2.3.2
+      fsevents: 2.3.2
     dev: true
     dev: true
 
 
   registry.npmmirror.com/rsvp/4.8.5:
   registry.npmmirror.com/rsvp/4.8.5:
@@ -19513,14 +19381,6 @@ packages:
     engines: {node: '>=0.10.0'}
     engines: {node: '>=0.10.0'}
     dev: false
     dev: false
 
 
-  registry.npmmirror.com/scroll-into-view-if-needed/2.2.20:
-    resolution: {integrity: sha512-P9kYMrhi9f6dvWwTGpO5I3HgjSU/8Mts7xL3lkoH5xlewK7O9Obdc5WmMCzppln7bCVGNmf3qfoZXrpCeyNJXw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.20.tgz}
-    name: scroll-into-view-if-needed
-    version: 2.2.20
-    dependencies:
-      compute-scroll-into-view: registry.npmmirror.com/compute-scroll-into-view/1.0.11
-    dev: false
-
   registry.npmmirror.com/scroll-into-view-if-needed/2.2.29:
   registry.npmmirror.com/scroll-into-view-if-needed/2.2.29:
     resolution: {integrity: sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz}
     resolution: {integrity: sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz}
     name: scroll-into-view-if-needed
     name: scroll-into-view-if-needed
@@ -21375,16 +21235,8 @@ packages:
       source-map: registry.npmmirror.com/source-map/0.5.7
       source-map: registry.npmmirror.com/source-map/0.5.7
       yargs: registry.npmmirror.com/yargs/3.10.0
       yargs: registry.npmmirror.com/yargs/3.10.0
     optionalDependencies:
     optionalDependencies:
-      uglify-to-browserify: registry.npmmirror.com/uglify-to-browserify/1.0.2
-    dev: false
-
-  registry.npmmirror.com/uglify-to-browserify/1.0.2:
-    resolution: {integrity: sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz}
-    name: uglify-to-browserify
-    version: 1.0.2
-    requiresBuild: true
+      uglify-to-browserify: 1.0.2
     dev: false
     dev: false
-    optional: true
 
 
   registry.npmmirror.com/umi-plugin-antd-icon-config/2.0.4_a8fdaf7d7d8ae9699a1d59394c79305e:
   registry.npmmirror.com/umi-plugin-antd-icon-config/2.0.4_a8fdaf7d7d8ae9699a1d59394c79305e:
     resolution: {integrity: sha512-3OqH5KFiuVzhr8UwLO+KZHzHySAqgDBLQUTh8YrehHSs3wgNDYKt0Tk3DIx8SGA6+46bspaK4iIOpTIS7f7RXw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/umi-plugin-antd-icon-config/-/umi-plugin-antd-icon-config-2.0.4.tgz}
     resolution: {integrity: sha512-3OqH5KFiuVzhr8UwLO+KZHzHySAqgDBLQUTh8YrehHSs3wgNDYKt0Tk3DIx8SGA6+46bspaK4iIOpTIS7f7RXw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/umi-plugin-antd-icon-config/-/umi-plugin-antd-icon-config-2.0.4.tgz}
@@ -21729,23 +21581,6 @@ packages:
       querystring: registry.npmmirror.com/querystring/0.2.0
       querystring: registry.npmmirror.com/querystring/0.2.0
     dev: false
     dev: false
 
 
-  registry.npmmirror.com/use-callback-ref/1.2.5_c39f7e1b843c19489d8bd8e68fdd3314:
-    resolution: {integrity: sha512-gN3vgMISAgacF7sqsLPByqoePooY3n2emTH59Ur5d/M8eg4WTWu1xp8i8DHjohftIyEx0S08RiYxbffr4j8Peg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/use-callback-ref/-/use-callback-ref-1.2.5.tgz}
-    id: registry.npmmirror.com/use-callback-ref/1.2.5
-    name: use-callback-ref
-    version: 1.2.5
-    engines: {node: '>=8.5.0'}
-    peerDependencies:
-      '@types/react': ^16.8.0 || ^17.0.0
-      react: ^16.8.0 || ^17.0.0
-    peerDependenciesMeta:
-      '@types/react':
-        optional: true
-    dependencies:
-      '@types/react': registry.npmmirror.com/@types/react/16.14.23
-      react: registry.npmmirror.com/react/17.0.2
-    dev: false
-
   registry.npmmirror.com/use-json-comparison/1.0.6_react@17.0.2:
   registry.npmmirror.com/use-json-comparison/1.0.6_react@17.0.2:
     resolution: {integrity: sha512-xPadt5yMRbEmVfOSGFSMqjjICrq7nLbfSH3rYIXsrtcuFX7PmbYDN/ku8ObBn3v8o/yZelO1OxUS5+5TI3+fUw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/use-json-comparison/-/use-json-comparison-1.0.6.tgz}
     resolution: {integrity: sha512-xPadt5yMRbEmVfOSGFSMqjjICrq7nLbfSH3rYIXsrtcuFX7PmbYDN/ku8ObBn3v8o/yZelO1OxUS5+5TI3+fUw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/use-json-comparison/-/use-json-comparison-1.0.6.tgz}
     id: registry.npmmirror.com/use-json-comparison/1.0.6
     id: registry.npmmirror.com/use-json-comparison/1.0.6
@@ -21768,20 +21603,6 @@ packages:
       react: registry.npmmirror.com/react/17.0.2
       react: registry.npmmirror.com/react/17.0.2
     dev: false
     dev: false
 
 
-  registry.npmmirror.com/use-sidecar/1.0.5_react@17.0.2:
-    resolution: {integrity: sha512-k9jnrjYNwN6xYLj1iaGhonDghfvmeTmYjAiGvOr7clwKfPjMXJf4/HOr7oT5tJwYafgp2tG2l3eZEOfoELiMcA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/use-sidecar/-/use-sidecar-1.0.5.tgz}
-    id: registry.npmmirror.com/use-sidecar/1.0.5
-    name: use-sidecar
-    version: 1.0.5
-    engines: {node: '>=8.5.0'}
-    peerDependencies:
-      react: ^16.8.0 || ^17.0.0
-    dependencies:
-      detect-node-es: registry.npmmirror.com/detect-node-es/1.1.0
-      react: registry.npmmirror.com/react/17.0.2
-      tslib: registry.npmmirror.com/tslib/1.14.1
-    dev: false
-
   registry.npmmirror.com/use-subscription/1.5.1_react@16.14.0:
   registry.npmmirror.com/use-subscription/1.5.1_react@16.14.0:
     resolution: {integrity: sha1-c1ARB/AvrYTG3VeWW+sLdcaMQtE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/use-subscription/download/use-subscription-1.5.1.tgz}
     resolution: {integrity: sha1-c1ARB/AvrYTG3VeWW+sLdcaMQtE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/use-subscription/download/use-subscription-1.5.1.tgz}
     id: registry.npmmirror.com/use-subscription/1.5.1
     id: registry.npmmirror.com/use-subscription/1.5.1
@@ -21993,7 +21814,7 @@ packages:
     version: 3.0.0
     version: 3.0.0
     engines: {node: '>=4'}
     engines: {node: '>=4'}
     dependencies:
     dependencies:
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       pify: registry.npmmirror.com/pify/2.3.0
       pify: registry.npmmirror.com/pify/2.3.0
       strip-bom-buf: registry.npmmirror.com/strip-bom-buf/1.0.0
       strip-bom-buf: registry.npmmirror.com/strip-bom-buf/1.0.0
       strip-bom-stream: registry.npmmirror.com/strip-bom-stream/2.0.0
       strip-bom-stream: registry.npmmirror.com/strip-bom-stream/2.0.0
@@ -22406,7 +22227,7 @@ packages:
     name: write-file-atomic
     name: write-file-atomic
     version: 2.4.1
     version: 2.4.1
     dependencies:
     dependencies:
-      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
+      graceful-fs: 4.2.9
       imurmurhash: registry.npmmirror.com/imurmurhash/0.1.4
       imurmurhash: registry.npmmirror.com/imurmurhash/0.1.4
       signal-exit: registry.npmmirror.com/signal-exit/3.0.7
       signal-exit: registry.npmmirror.com/signal-exit/3.0.7
     dev: true
     dev: true

+ 2 - 1
src/components/EditableForm/src/components/ChangeSelect.jsx

@@ -18,8 +18,9 @@ const ChangeSelect = props => {
   const [selectedObj, setSelectedObj] = useState({ value: extraDefaultValue, label: '' })
   const [selectedObj, setSelectedObj] = useState({ value: extraDefaultValue, label: '' })
 
 
   const handleOnChange = (value, option) => {
   const handleOnChange = (value, option) => {
+    // TODO: value在Select是多选模式的情况下,只选一个下拉项 value是个string 并非数组
     let local = ''
     let local = ''
-    if (Array.isArray(value)) {
+    if (mode === 'multiple' && Array.isArray(value)) {
       local = options.reduce((prev, curr) => {
       local = options.reduce((prev, curr) => {
         if (value.includes(curr.value)) {
         if (value.includes(curr.value)) {
           return `${prev}${prev ? ',' : ''}${curr.label}`
           return `${prev}${prev ? ',' : ''}${curr.label}`

+ 12 - 22
src/pages/Customer/Business/components/BusinessDetail/index.jsx

@@ -12,15 +12,7 @@ import './index.less'
 
 
 const Detail = props => {
 const Detail = props => {
   const { initialState } = useModel('@@initialState')
   const { initialState } = useModel('@@initialState')
-  const {
-    visible,
-    onClose,
-    dispatch,
-    updateKey = 'business',
-    refresh,
-    dataId,
-    orderIds = []
-  } = props
+  const { visible, onClose, dispatch, updateKey = 'business', refresh, dataId, orderIds = [] } = props
   const shouldUpdate = refresh[dataId ?? updateKey] || false
   const shouldUpdate = refresh[dataId ?? updateKey] || false
   const [state, setState] = useState({
   const [state, setState] = useState({
     loading: false,
     loading: false,
@@ -75,7 +67,12 @@ const Detail = props => {
   }, [visible])
   }, [visible])
 
 
   return (
   return (
-    <Drawer visible={visible} onClose={onClose} className="zh-drawer">
+    <Drawer
+      visible={visible}
+      onClose={onClose}
+      className="zh-drawer"
+      contentWrapperStyle={{ width: 'unset' }}
+      getContainer={false}>
       <Spin spinning={state.loading}>
       <Spin spinning={state.loading}>
         <div className="sheet-box">
         <div className="sheet-box">
           <Row>
           <Row>
@@ -87,9 +84,7 @@ const Detail = props => {
                       fill={flipConsts.disableUpBtn ? '#BDBDBE' : '#886ab5'}
                       fill={flipConsts.disableUpBtn ? '#BDBDBE' : '#886ab5'}
                       size="20"
                       size="20"
                       onClick={() => flipFn(FlipOverEnum.UP)}
                       onClick={() => flipFn(FlipOverEnum.UP)}
-                      className={[
-                        flipConsts.disableUpBtn ? 'cursor-not-allowed' : 'cursor-pointer'
-                      ].join(' ')}
+                      className={[flipConsts.disableUpBtn ? 'cursor-not-allowed' : 'cursor-pointer'].join(' ')}
                     />
                     />
                   </Tooltip>
                   </Tooltip>
                   <Tooltip title="下一条记录">
                   <Tooltip title="下一条记录">
@@ -97,10 +92,9 @@ const Detail = props => {
                       fill={flipConsts.disableDownBtn ? '#BDBDBE' : '#886ab5'}
                       fill={flipConsts.disableDownBtn ? '#BDBDBE' : '#886ab5'}
                       size="20"
                       size="20"
                       onClick={() => flipFn(FlipOverEnum.DOWN)}
                       onClick={() => flipFn(FlipOverEnum.DOWN)}
-                      className={[
-                        flipConsts.disableDownBtn ? 'cursor-not-allowed' : 'cursor-pointer',
-                        'ml-1'
-                      ].join(' ')}
+                      className={[flipConsts.disableDownBtn ? 'cursor-not-allowed' : 'cursor-pointer', 'ml-1'].join(
+                        ' '
+                      )}
                     />
                     />
                   </Tooltip>
                   </Tooltip>
                 </div>
                 </div>
@@ -115,11 +109,7 @@ const Detail = props => {
               </div>
               </div>
             </Col>
             </Col>
             <Col span={14} className="sheet-box-right">
             <Col span={14} className="sheet-box-right">
-              <TabList
-                businessId={state.business.id}
-                clientList={state.linkClient.client}
-                isOwner={isOwner}
-              />
+              <TabList businessId={state.business.id} clientList={state.linkClient.client} isOwner={isOwner} />
               <LowerList log={state.log} serviceLog={state.serviceLog} />
               <LowerList log={state.log} serviceLog={state.serviceLog} />
             </Col>
             </Col>
           </Row>
           </Row>

+ 14 - 31
src/pages/Customer/Client/components/ClientDetail/index.jsx

@@ -10,15 +10,7 @@ import { Up, Down } from '@icon-park/react'
 import { FlipOverEnum, useFlipOver } from '@/hooks/web/useFlipOver'
 import { FlipOverEnum, useFlipOver } from '@/hooks/web/useFlipOver'
 
 
 const ClientDetail = props => {
 const ClientDetail = props => {
-  const {
-    refresh,
-    visible,
-    dispatch,
-    updateKey = 'client',
-    dataId,
-    orderIds = [],
-    ...resetDrawerProps
-  } = props
+  const { refresh, visible, dispatch, updateKey = 'client', dataId, orderIds = [], ...resetDrawerProps } = props
   const shouldUpdate = refresh?.[dataId ?? updateKey] || false
   const shouldUpdate = refresh?.[dataId ?? updateKey] || false
   const [state, setState] = useState({
   const [state, setState] = useState({
     loading: false,
     loading: false,
@@ -59,18 +51,16 @@ const ClientDetail = props => {
   }, [visible])
   }, [visible])
 
 
   return (
   return (
-    <Drawer {...resetDrawerProps} visible={visible} className="zh-drawer">
+    <Drawer
+      {...resetDrawerProps}
+      visible={visible}
+      className="zh-drawer"
+      contentWrapperStyle={{ width: 'unset' }}
+      getContainer={false}>
       <Spin spinning={state.loading}>
       <Spin spinning={state.loading}>
         <div className="sheet-box">
         <div className="sheet-box">
           <Row>
           <Row>
-            <Col
-              span={9}
-              // sm={{ span: 24 }}
-              // md={{ span: 24 }}
-              // lg={{ span: 9 }}
-              // xl={{ span: 9 }}
-              className="sheet-box-left"
-            >
+            <Col span={9} className="sheet-box-left">
               {orderIds.length ? (
               {orderIds.length ? (
                 <div className="mb-3">
                 <div className="mb-3">
                   <Tooltip title="上一条记录">
                   <Tooltip title="上一条记录">
@@ -78,9 +68,7 @@ const ClientDetail = props => {
                       fill={flipConsts.disableUpBtn ? '#BDBDBE' : '#886ab5'}
                       fill={flipConsts.disableUpBtn ? '#BDBDBE' : '#886ab5'}
                       size="20"
                       size="20"
                       onClick={() => flipFn(FlipOverEnum.UP)}
                       onClick={() => flipFn(FlipOverEnum.UP)}
-                      className={[
-                        flipConsts.disableUpBtn ? 'cursor-not-allowed' : 'cursor-pointer'
-                      ].join(' ')}
+                      className={[flipConsts.disableUpBtn ? 'cursor-not-allowed' : 'cursor-pointer'].join(' ')}
                     />
                     />
                   </Tooltip>
                   </Tooltip>
                   <Tooltip title="下一条记录">
                   <Tooltip title="下一条记录">
@@ -88,19 +76,15 @@ const ClientDetail = props => {
                       fill={flipConsts.disableDownBtn ? '#BDBDBE' : '#886ab5'}
                       fill={flipConsts.disableDownBtn ? '#BDBDBE' : '#886ab5'}
                       size="20"
                       size="20"
                       onClick={() => flipFn(FlipOverEnum.DOWN)}
                       onClick={() => flipFn(FlipOverEnum.DOWN)}
-                      className={[
-                        flipConsts.disableDownBtn ? 'cursor-not-allowed' : 'cursor-pointer',
-                        'ml-1'
-                      ].join(' ')}
+                      className={[flipConsts.disableDownBtn ? 'cursor-not-allowed' : 'cursor-pointer', 'ml-1'].join(
+                        ' '
+                      )}
                     />
                     />
                   </Tooltip>
                   </Tooltip>
                 </div>
                 </div>
               ) : null}
               ) : null}
               <div className="sheet-left-panel pr-4">
               <div className="sheet-left-panel pr-4">
-                <ClientForm
-                  client={state.client}
-                  updatePayload={{ main: updateKey, target: dataId }}
-                />
+                <ClientForm client={state.client} updatePayload={{ main: updateKey, target: dataId }} />
               </div>
               </div>
             </Col>
             </Col>
             <Col
             <Col
@@ -109,8 +93,7 @@ const ClientDetail = props => {
               // md={{ span: 24 }}
               // md={{ span: 24 }}
               // lg={{ span: 15 }}
               // lg={{ span: 15 }}
               // xl={{ span: 15 }}
               // xl={{ span: 15 }}
-              className="sheet-box-right"
-            >
+              className="sheet-box-right">
               <ClientTabList
               <ClientTabList
                 clientId={state.client.id}
                 clientId={state.client.id}
                 software={state.software}
                 software={state.software}

+ 14 - 19
src/pages/Customer/Company/components/CompanyDetail/SyncClient.jsx

@@ -5,7 +5,6 @@ import { Button, Checkbox, message, Modal, Table } from 'antd'
 import { useState, useMemo } from 'react'
 import { useState, useMemo } from 'react'
 import { useDispatch } from 'umi'
 import { useDispatch } from 'umi'
 import { VList } from 'virtuallist-antd'
 import { VList } from 'virtuallist-antd'
-import styles from './index.less'
 
 
 const SyncClient = ({ customer, client, actionPayload }) => {
 const SyncClient = ({ customer, client, actionPayload }) => {
   const dispatch = useDispatch()
   const dispatch = useDispatch()
@@ -97,8 +96,7 @@ const SyncClient = ({ customer, client, actionPayload }) => {
         ghost
         ghost
         type="primary"
         type="primary"
         loading={loading}
         loading={loading}
-        onClick={() => setState({ ...state, visible: true, loading: true })}
-      >
+        onClick={() => setState({ ...state, visible: true, loading: true })}>
         <Copy theme="two-tone" fill={['#333', '#886ab5']} />
         <Copy theme="two-tone" fill={['#333', '#886ab5']} />
         <span className="ml-1">同步地址信息</span>
         <span className="ml-1">同步地址信息</span>
       </Button>
       </Button>
@@ -108,8 +106,7 @@ const SyncClient = ({ customer, client, actionPayload }) => {
         // getContainer={false}
         // getContainer={false}
         visible={visible}
         visible={visible}
         onCancel={() => setState({ ...state, visible: false, loading: false })}
         onCancel={() => setState({ ...state, visible: false, loading: false })}
-        onOk={handleOnConfirm}
-      >
+        onOk={handleOnConfirm}>
         <div className="rounded-3 p-4 mb-2 pt-0">
         <div className="rounded-3 p-4 mb-2 pt-0">
           <Checkbox.Group defaultValue={checkValues} onChange={e => setState({ ...state, checkValues: e })}>
           <Checkbox.Group defaultValue={checkValues} onChange={e => setState({ ...state, checkValues: e })}>
             <div className="flex flex-nowrap">
             <div className="flex flex-nowrap">
@@ -144,20 +141,18 @@ const SyncClient = ({ customer, client, actionPayload }) => {
             </div>
             </div>
           </Checkbox.Group>
           </Checkbox.Group>
         </div>
         </div>
-        <div className={styles.tableSyncClient}>
-          <Table
-            rowKey="id"
-            size="small"
-            columns={columns}
-            dataSource={client}
-            pagination={false}
-            scroll={{ y: 400 }}
-            components={vList}
-            rowSelection={{
-              onChange: selectedRowKeys => setState({ ...state, selectedKeys: selectedRowKeys })
-            }}
-          />
-        </div>
+        <Table
+          rowKey="id"
+          size="small"
+          columns={columns}
+          dataSource={client}
+          pagination={false}
+          scroll={{ y: 400 }}
+          components={vList}
+          rowSelection={{
+            onChange: selectedRowKeys => setState({ ...state, selectedKeys: selectedRowKeys })
+          }}
+        />
       </Modal>
       </Modal>
     </>
     </>
   )
   )

+ 16 - 12
src/pages/Customer/Company/components/CompanyDetail/TabList.jsx

@@ -1,6 +1,5 @@
 import React, { useMemo, useRef, useState } from 'react'
 import React, { useMemo, useRef, useState } from 'react'
 import { Tabs, message, Dropdown, Menu, Typography, Button, Table } from 'antd'
 import { Tabs, message, Dropdown, Menu, Typography, Button, Table } from 'antd'
-import styles from './index.less'
 import { apiAddClient, apiAddCustomerService, updateClient } from '@/services/customer'
 import { apiAddClient, apiAddCustomerService, updateClient } from '@/services/customer'
 import { formatValues } from '@/components/LazyCascader'
 import { formatValues } from '@/components/LazyCascader'
 import consts from '@/consts'
 import consts from '@/consts'
@@ -88,20 +87,24 @@ const CompanyTabList = ({ initData, customerId, client, software, customer, busi
     {
     {
       title: '姓名',
       title: '姓名',
       dataIndex: 'clientName',
       dataIndex: 'clientName',
+      width: 100,
       render: (clientName, record) => (
       render: (clientName, record) => (
         <div className="text-primary hover:text-[#967bbd] line-clamp-1">
         <div className="text-primary hover:text-[#967bbd] line-clamp-1">
-          <span onClick={() => dispatchModal('D_CLIENT_DETAIL', { dataId: record.id })} className="cursor-pointer ">
+          <span
+            onClick={() => dispatchModal('D_CLIENT_DETAIL', { dataId: record.id })}
+            className="cursor-pointer "
+          >
             {clientName}
             {clientName}
           </span>
           </span>
         </div>
         </div>
       )
       )
     },
     },
-    {
-      title: '昵称',
-      dataIndex: 'niceName',
-      width: 110,
-      ellipsis: true
-    },
+    // {
+    //   title: '昵称',
+    //   dataIndex: 'niceName',
+    //   width: 110,
+    //   ellipsis: true
+    // },
     {
     {
       title: '手机',
       title: '手机',
       dataIndex: 'telephone',
       dataIndex: 'telephone',
@@ -123,9 +126,10 @@ const CompanyTabList = ({ initData, customerId, client, software, customer, busi
       render: (clientName, record) => (
       render: (clientName, record) => (
         <span
         <span
           onClick={() => dispatchModal('D_LOCK_DETAIL', { dataId: record.id })}
           onClick={() => dispatchModal('D_LOCK_DETAIL', { dataId: record.id })}
-          className={['cursor-pointer hover:text-hex-967bbd', record.preserveStatus === 3 ? null : 'text-primary'].join(
-            ' '
-          )}
+          className={[
+            'cursor-pointer hover:text-hex-967bbd',
+            record.preserveStatus === 3 ? null : 'text-primary'
+          ].join(' ')}
         >
         >
           {record.preserveStatus === 3 ? (
           {record.preserveStatus === 3 ? (
             <Text delete type="secondary">
             <Text delete type="secondary">
@@ -290,7 +294,7 @@ const CompanyTabList = ({ initData, customerId, client, software, customer, busi
       <div className="pl-15px">
       <div className="pl-15px">
         <Tabs>
         <Tabs>
           <TabPane tab={<span>客户{renderBadge(client.total, true)}</span>} key="1">
           <TabPane tab={<span>客户{renderBadge(client.total, true)}</span>} key="1">
-            <div className={['sheet-right-panel', styles.tableCont].join(' ')}>
+            <div className="sheet-right-panel">
               <Table
               <Table
                 rowKey="id"
                 rowKey="id"
                 size="small"
                 size="small"

+ 15 - 33
src/pages/Customer/Company/components/CompanyDetail/index.jsx

@@ -10,15 +10,7 @@ import { Up, Down } from '@icon-park/react'
 import { FlipOverEnum, useFlipOver } from '@/hooks/web/useFlipOver'
 import { FlipOverEnum, useFlipOver } from '@/hooks/web/useFlipOver'
 
 
 const CompanyDetail = props => {
 const CompanyDetail = props => {
-  const {
-    visible,
-    dispatch,
-    updateKey = 'company',
-    dataId,
-    orderIds = [],
-    refresh,
-    ...resetDrawerProps
-  } = props
+  const { visible, dispatch, updateKey = 'company', dataId, orderIds = [], refresh, ...resetDrawerProps } = props
   const shouldUpdate = refresh?.[dataId ?? updateKey] || false
   const shouldUpdate = refresh?.[dataId ?? updateKey] || false
   const [state, setState] = useState({
   const [state, setState] = useState({
     loading: false,
     loading: false,
@@ -32,14 +24,7 @@ const CompanyDetail = props => {
   const initData = async (id = dataId) => {
   const initData = async (id = dataId) => {
     setState({ ...state, loading: true })
     setState({ ...state, loading: true })
     const {
     const {
-      data: {
-        customer = {},
-        log = [],
-        serviceLog = [],
-        software = {},
-        client = {},
-        business = {}
-      } = {},
+      data: { customer = {}, log = [], serviceLog = [], software = {}, client = {}, business = {} } = {},
       code = -1
       code = -1
     } = await apiCompanyDetail(id)
     } = await apiCompanyDetail(id)
     if (code === consts.RET_CODE.SUCCESS) {
     if (code === consts.RET_CODE.SUCCESS) {
@@ -63,7 +48,12 @@ const CompanyDetail = props => {
     visible && initData(dataId)
     visible && initData(dataId)
   }, [visible])
   }, [visible])
   return (
   return (
-    <Drawer {...resetDrawerProps} visible={visible} className="zh-drawer">
+    <Drawer
+      {...resetDrawerProps}
+      visible={visible}
+      className="zh-drawer"
+      contentWrapperStyle={{ width: 'unset' }}
+      getContainer={() => document.getElementById('root')}>
       <Spin spinning={state.loading}>
       <Spin spinning={state.loading}>
         <div className="sheet-box">
         <div className="sheet-box">
           <Row>
           <Row>
@@ -73,8 +63,7 @@ const CompanyDetail = props => {
               // md={{ span: 24 }}
               // md={{ span: 24 }}
               // lg={{ span: 9 }}
               // lg={{ span: 9 }}
               // xl={{ span: 9 }}
               // xl={{ span: 9 }}
-              className="sheet-box-left"
-            >
+              className="sheet-box-left">
               {orderIds.length ? (
               {orderIds.length ? (
                 <div className="mb-3">
                 <div className="mb-3">
                   <Tooltip title="上一条记录">
                   <Tooltip title="上一条记录">
@@ -82,9 +71,7 @@ const CompanyDetail = props => {
                       fill={flipConsts.disableUpBtn ? '#BDBDBE' : '#886ab5'}
                       fill={flipConsts.disableUpBtn ? '#BDBDBE' : '#886ab5'}
                       size="20"
                       size="20"
                       onClick={() => flipFn(FlipOverEnum.UP)}
                       onClick={() => flipFn(FlipOverEnum.UP)}
-                      className={[
-                        flipConsts.disableUpBtn ? 'cursor-not-allowed' : 'cursor-pointer'
-                      ].join(' ')}
+                      className={[flipConsts.disableUpBtn ? 'cursor-not-allowed' : 'cursor-pointer'].join(' ')}
                     />
                     />
                   </Tooltip>
                   </Tooltip>
                   <Tooltip title="下一条记录">
                   <Tooltip title="下一条记录">
@@ -92,20 +79,16 @@ const CompanyDetail = props => {
                       fill={flipConsts.disableDownBtn ? '#BDBDBE' : '#886ab5'}
                       fill={flipConsts.disableDownBtn ? '#BDBDBE' : '#886ab5'}
                       size="20"
                       size="20"
                       onClick={() => flipFn(FlipOverEnum.DOWN)}
                       onClick={() => flipFn(FlipOverEnum.DOWN)}
-                      className={[
-                        flipConsts.disableDownBtn ? 'cursor-not-allowed' : 'cursor-pointer',
-                        'ml-1'
-                      ].join(' ')}
+                      className={[flipConsts.disableDownBtn ? 'cursor-not-allowed' : 'cursor-pointer', 'ml-1'].join(
+                        ' '
+                      )}
                     />
                     />
                   </Tooltip>
                   </Tooltip>
                 </div>
                 </div>
               ) : null}
               ) : null}
 
 
               <div className="sheet-left-panel pr-4">
               <div className="sheet-left-panel pr-4">
-                <CompanyForm
-                  customer={state.customer}
-                  updatePayload={{ main: updateKey, target: dataId }}
-                />
+                <CompanyForm customer={state.customer} updatePayload={{ main: updateKey, target: dataId }} />
               </div>
               </div>
             </Col>
             </Col>
             <Col
             <Col
@@ -115,8 +98,7 @@ const CompanyDetail = props => {
               // lg={{ span: 15 }}
               // lg={{ span: 15 }}
               // xl={{ span: 15 }}
               // xl={{ span: 15 }}
               flex={{ flexDirection: 'column' }}
               flex={{ flexDirection: 'column' }}
-              className="sheet-box-right"
-            >
+              className="sheet-box-right">
               <CompanyTabList
               <CompanyTabList
                 updatePayload={{ main: updateKey, target: dataId }}
                 updatePayload={{ main: updateKey, target: dataId }}
                 initData={initData}
                 initData={initData}

+ 0 - 33
src/pages/Customer/Company/components/CompanyDetail/index.less

@@ -1,33 +0,0 @@
-.tableCont {
-  // :global(.arco-table-th-item) {
-  //   padding: 0;
-  // }
-  // :global(.arco-table-col-has-sorter .arco-table-cell-with-sorter) {
-  //   padding: 0;
-  // }
-  // :global(.arco-table .arco-table-td) {
-  //   padding: 12px 8px;
-  //   background-color: #fafafa;
-  // }
-  // :global(.arco-table-tr:hover) {
-  //   background-color: #fafafa !important;
-  // }
-  // :global(.arco-checkbox-indeterminate .arco-checkbox-mask) {
-  //   background-color: #886ab5;
-  // }
-  // :global(.arco-checkbox-checked .arco-checkbox-mask) {
-  //   background-color: #886ab5;
-  // }
-  // :global(.arco-table thead > .arco-table-tr > .arco-table-th) {
-  //   padding: 12px 8px;
-  // }
-}
-
-.tableSyncClient {
-  // :global(.arco-checkbox-indeterminate .arco-checkbox-mask) {
-  //   background-color: #886ab5;
-  // }
-  // :global(.arco-checkbox-checked .arco-checkbox-mask) {
-  //   background-color: #886ab5;
-  // }
-}

+ 35 - 33
src/pages/Customer/Company/components/ConnectCompany/index.less

@@ -1,42 +1,44 @@
 .inputSearch {
 .inputSearch {
   width: 95%;
   width: 95%;
 }
 }
-
-.modalContent {
-  max-height: 63vh;
-  padding: 0;
-  overflow-y: auto;
-  :global(.ant-transfer-operation > .ant-btn) {
-    height: 20rem;
-    padding: 0 5px;
-  }
-  :global(.ant-transfer-operation > .ant-btn-sm > .anticon) {
-    display: none;
-  }
-  :global(.ant-transfer-operation > .ant-btn-sm > span:last-of-type) {
-    margin: 0;
-    -webkit-writing-mode: vertical-rl;
-    writing-mode: vertical-rl;
-  }
-  .card {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    padding: 1rem;
-    word-wrap: break-word;
-    background-color: #ffffff;
-    background-clip: border-box;
-    border: 1px solid rgba(0, 0, 0, 0.08);
-    border-radius: 4px;
-    box-shadow: 0 0 13px 0 rgba(74, 53, 107, 0.08);
-    &:not(:last-of-type) {
-      margin-bottom: 1rem;
+.modalContainer {
+  // height: 63vh;
+  .modalContent {
+    max-height: 63vh;
+    padding: 0;
+    overflow-y: auto;
+    :global(.ant-transfer-operation > .ant-btn) {
+      height: 20rem;
+      padding: 0 5px;
+    }
+    :global(.ant-transfer-operation > .ant-btn-sm > .anticon) {
+      display: none;
+    }
+    :global(.ant-transfer-operation > .ant-btn-sm > span:last-of-type) {
+      margin: 0;
+      -webkit-writing-mode: vertical-rl;
+      writing-mode: vertical-rl;
+    }
+    .card {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 1rem;
+      word-wrap: break-word;
+      background-color: #ffffff;
+      background-clip: border-box;
+      border: 1px solid rgba(0, 0, 0, 0.08);
+      border-radius: 4px;
+      box-shadow: 0 0 13px 0 rgba(74, 53, 107, 0.08);
+      &:not(:last-of-type) {
+        margin-bottom: 1rem;
+      }
     }
     }
   }
   }
-}
 
 
-.modalFooter {
-  padding: 1rem 1rem 0 1rem;
+  .modalFooter {
+    padding: 1rem 1rem 0 1rem;
+  }
 }
 }
 
 
 .removeTreeSwitcher {
 .removeTreeSwitcher {

+ 7 - 5
src/pages/Hr/Employee/components/EmployeeDetail/index.jsx

@@ -41,15 +41,17 @@ const EmployeeDetail = props => {
     visible && initData(dataId)
     visible && initData(dataId)
   }, [visible])
   }, [visible])
   return (
   return (
-    <Drawer visible={visible} onClose={onClose} className="zh-drawer">
+    <Drawer
+      visible={visible}
+      onClose={onClose}
+      className="zh-drawer"
+      contentWrapperStyle={{ width: 'unset' }}
+      getContainer={false}>
       <div className="sheet-box">
       <div className="sheet-box">
         <Row>
         <Row>
           <Col span={12} className="sheet-box-left">
           <Col span={12} className="sheet-box-left">
             <div className="sheet-left-panel pr-4">
             <div className="sheet-left-panel pr-4">
-              <EmployeeForm
-                staff={state.staff}
-                actionPayload={{ main: updateKey, target: dataId }}
-              />
+              <EmployeeForm staff={state.staff} actionPayload={{ main: updateKey, target: dataId }} />
             </div>
             </div>
           </Col>
           </Col>
           <Col span={12} className="sheet-box-right">
           <Col span={12} className="sheet-box-right">

+ 2 - 3
src/pages/Hr/Notification/components/MessageDetail.jsx

@@ -8,7 +8,7 @@ const MessageDetail = props => {
   const intl = useIntl()
   const intl = useIntl()
   if (!id) return null
   if (!id) return null
   return (
   return (
-    <Drawer {...otherProps} className="zh-drawer">
+    <Drawer {...otherProps} className="zh-drawer" contentWrapperStyle={{ width: 'unset' }} getContainer={false}>
       <div className="px-5 vditor-reset h-full">
       <div className="px-5 vditor-reset h-full">
         <div className="max-h-20vh">
         <div className="max-h-20vh">
           <span className="pt-5 block">
           <span className="pt-5 block">
@@ -22,8 +22,7 @@ const MessageDetail = props => {
           className={[
           className={[
             'overflow-y-auto max-h-80vh py-3 px-4 bg-hex-f9f9f9 rounded-md boxShadow',
             'overflow-y-auto max-h-80vh py-3 px-4 bg-hex-f9f9f9 rounded-md boxShadow',
             styles.NotificationCont
             styles.NotificationCont
-          ].join(' ')}
-        >
+          ].join(' ')}>
           <Typography.Paragraph>
           <Typography.Paragraph>
             <MarkDown>{content}</MarkDown>
             <MarkDown>{content}</MarkDown>
           </Typography.Paragraph>
           </Typography.Paragraph>

+ 6 - 1
src/pages/Product/Cloud/components/Detail/index.jsx

@@ -85,7 +85,12 @@ const CloudDetail = props => {
   }, [visible])
   }, [visible])
 
 
   return (
   return (
-    <Drawer {...resetDrawerProps} visible={visible} className="zh-drawer">
+    <Drawer
+      {...resetDrawerProps}
+      visible={visible}
+      className="zh-drawer"
+      contentWrapperStyle={{ width: 'unset' }}
+      getContainer={false}>
       <Spin spinning={state.loading}>
       <Spin spinning={state.loading}>
         <div className="sheet-box">
         <div className="sheet-box">
           <Row>
           <Row>

+ 3 - 11
src/pages/Product/Lock/LockStore/components/LockDetail/OpreateLock.jsx

@@ -226,10 +226,7 @@ const OpreateLock = props => {
 
 
   const handleListScroll = () => {
   const handleListScroll = () => {
     // 未滚动到底部
     // 未滚动到底部
-    if (
-      scrollRef.current.scrollHeight - scrollRef.current.clientHeight <=
-      scrollRef.current.scrollTop
-    ) {
+    if (scrollRef.current.scrollHeight - scrollRef.current.clientHeight <= scrollRef.current.scrollTop) {
       // 已到底部
       // 已到底部
       if (state.current * state.pageSize > state.total) {
       if (state.current * state.pageSize > state.total) {
         setState({ ...state, noMore: true })
         setState({ ...state, noMore: true })
@@ -283,13 +280,8 @@ const OpreateLock = props => {
         </div>
         </div>
       ) : null}
       ) : null}
       {type === lockTypeEnum.CHANGE || type === lockTypeEnum.SALE ? (
       {type === lockTypeEnum.CHANGE || type === lockTypeEnum.SALE ? (
-        <div
-          className={styles.modalContainer}
-          ref={scrollRef}
-          onScroll={handleListScroll}
-          style={{ paddingBottom: 0 }}
-        >
-          <div className={styles.modalContent}>
+        <div className={styles.modalContainer} style={{ paddingBottom: 0 }}>
+          <div className={styles.modalContent} ref={scrollRef} onScroll={handleListScroll}>
             <Spin spinning={state.loading}>
             <Spin spinning={state.loading}>
               {type === lockTypeEnum.SALE &&
               {type === lockTypeEnum.SALE &&
                 state.client.map((item, index) => (
                 state.client.map((item, index) => (

+ 14 - 25
src/pages/Product/Lock/LockStore/components/LockDetail/index.jsx

@@ -10,15 +10,7 @@ import { Down, Up } from '@icon-park/react'
 import { FlipOverEnum, useFlipOver } from '@/hooks/web/useFlipOver'
 import { FlipOverEnum, useFlipOver } from '@/hooks/web/useFlipOver'
 
 
 const LockDetail = props => {
 const LockDetail = props => {
-  const {
-    visible,
-    dispatch,
-    dataId,
-    refresh,
-    orderIds = [],
-    updateKey = 'software',
-    ...resetDrawerProps
-  } = props
+  const { visible, dispatch, dataId, refresh, orderIds = [], updateKey = 'software', ...resetDrawerProps } = props
   const shouldUpdate = refresh?.[dataId ?? updateKey] || false
   const shouldUpdate = refresh?.[dataId ?? updateKey] || false
   const [state, setState] = useState({
   const [state, setState] = useState({
     loading: false,
     loading: false,
@@ -30,10 +22,8 @@ const LockDetail = props => {
 
 
   const initData = async id => {
   const initData = async id => {
     setState({ ...state, loading: true })
     setState({ ...state, loading: true })
-    const {
-      data: { longle = {}, log = [], longleLog = [] } = { longle: {}, longleLog: [] },
-      code = -1
-    } = await apiSoftwareDetail({ id })
+    const { data: { longle = {}, log = [], longleLog = [] } = { longle: {}, longleLog: [] }, code = -1 } =
+      await apiSoftwareDetail({ id })
     if (code === consts.RET_CODE.SUCCESS) {
     if (code === consts.RET_CODE.SUCCESS) {
       if (shouldUpdate) {
       if (shouldUpdate) {
         dispatch({
         dispatch({
@@ -61,7 +51,12 @@ const LockDetail = props => {
   const { flipFn, flipConsts } = useFlipOver(initData, dataId, orderIds)
   const { flipFn, flipConsts } = useFlipOver(initData, dataId, orderIds)
 
 
   return (
   return (
-    <Drawer {...resetDrawerProps} visible={visible} className="zh-drawer">
+    <Drawer
+      {...resetDrawerProps}
+      visible={visible}
+      className="zh-drawer"
+      contentWrapperStyle={{ width: 'unset' }}
+      getContainer={false}>
       <Spin spinning={state.loading}>
       <Spin spinning={state.loading}>
         <div className="sheet-box">
         <div className="sheet-box">
           <Row>
           <Row>
@@ -73,9 +68,7 @@ const LockDetail = props => {
                       fill={flipConsts.disableUpBtn ? '#BDBDBE' : '#886ab5'}
                       fill={flipConsts.disableUpBtn ? '#BDBDBE' : '#886ab5'}
                       size="20"
                       size="20"
                       onClick={() => flipFn(FlipOverEnum.UP)}
                       onClick={() => flipFn(FlipOverEnum.UP)}
-                      className={[
-                        flipConsts.disableUpBtn ? 'cursor-not-allowed' : 'cursor-pointer'
-                      ].join(' ')}
+                      className={[flipConsts.disableUpBtn ? 'cursor-not-allowed' : 'cursor-pointer'].join(' ')}
                     />
                     />
                   </Tooltip>
                   </Tooltip>
                   <Tooltip title="下一条记录">
                   <Tooltip title="下一条记录">
@@ -83,19 +76,15 @@ const LockDetail = props => {
                       fill={flipConsts.disableDownBtn ? '#BDBDBE' : '#886ab5'}
                       fill={flipConsts.disableDownBtn ? '#BDBDBE' : '#886ab5'}
                       size="20"
                       size="20"
                       onClick={() => flipFn(FlipOverEnum.DOWN)}
                       onClick={() => flipFn(FlipOverEnum.DOWN)}
-                      className={[
-                        flipConsts.disableDownBtn ? 'cursor-not-allowed' : 'cursor-pointer',
-                        'ml-1'
-                      ].join(' ')}
+                      className={[flipConsts.disableDownBtn ? 'cursor-not-allowed' : 'cursor-pointer', 'ml-1'].join(
+                        ' '
+                      )}
                     />
                     />
                   </Tooltip>
                   </Tooltip>
                 </div>
                 </div>
               ) : null}
               ) : null}
               <div className="sheet-left-panel pr-4">
               <div className="sheet-left-panel pr-4">
-                <LockForm
-                  longle={state.longle}
-                  actionPayload={{ main: updateKey, target: dataId }}
-                />
+                <LockForm longle={state.longle} actionPayload={{ main: updateKey, target: dataId }} />
               </div>
               </div>
             </Col>
             </Col>
             <Col span={15} className="sheet-box-right">
             <Col span={15} className="sheet-box-right">

+ 6 - 1
src/pages/Product/Lock/LockStore/components/SoftwareDetail/index.jsx

@@ -27,7 +27,12 @@ const SoftwareDetail = props => {
     visible && initData(dataId)
     visible && initData(dataId)
   }, [visible])
   }, [visible])
   return (
   return (
-    <Drawer {...resetDrawerProps} visible={visible} className="zh-drawer">
+    <Drawer
+      {...resetDrawerProps}
+      visible={visible}
+      className="zh-drawer"
+      contentWrapperStyle={{ width: 'unset' }}
+      getContainer={false}>
       <Spin spinning={state.loading}>
       <Spin spinning={state.loading}>
         <div className="sheet-box">
         <div className="sheet-box">
           <Row>
           <Row>

+ 7 - 3
src/pages/Product/Road/Enterprise/components/Detail/index.jsx

@@ -100,7 +100,12 @@ const EnterpriseDetail = props => {
     visible && initData(dataId)
     visible && initData(dataId)
   }, [visible])
   }, [visible])
   return (
   return (
-    <Drawer {...resetDrawerProps} visible={visible} className="zh-drawer">
+    <Drawer
+      {...resetDrawerProps}
+      visible={visible}
+      className="zh-drawer"
+      contentWrapperStyle={{ width: 'unset' }}
+      getContainer={false}>
       <Spin spinning={state.loading}>
       <Spin spinning={state.loading}>
         <div className="sheet-box">
         <div className="sheet-box">
           <Row>
           <Row>
@@ -118,8 +123,7 @@ const EnterpriseDetail = props => {
                           type="primary"
                           type="primary"
                           ghost
                           ghost
                           size="small"
                           size="small"
-                          onClick={() => pricingUnLinkCompany(state.company.cld?.customerId)}
-                        >
+                          onClick={() => pricingUnLinkCompany(state.company.cld?.customerId)}>
                           <LinkInterrupt size="14" />
                           <LinkInterrupt size="14" />
                           <span className="ml-5px">移除CLD单位信息</span>
                           <span className="ml-5px">移除CLD单位信息</span>
                         </Button>
                         </Button>

+ 6 - 1
src/pages/Product/Road/Personal/components/Detail/index.jsx

@@ -93,7 +93,12 @@ const PersonalDetail = props => {
     visible && initData(dataId)
     visible && initData(dataId)
   }, [visible])
   }, [visible])
   return (
   return (
-    <Drawer {...resetDrawerProps} visible={visible} className="zh-drawer">
+    <Drawer
+      {...resetDrawerProps}
+      visible={visible}
+      className="zh-drawer"
+      contentWrapperStyle={{ width: 'unset' }}
+      getContainer={false}>
       <Spin spinning={state.loading}>
       <Spin spinning={state.loading}>
         <div className="sheet-box">
         <div className="sheet-box">
           <Row>
           <Row>

+ 60 - 37
src/pages/Workbench/Dashboard/index.jsx

@@ -170,7 +170,12 @@ const Dashboard = ({ dispatch, departments = [] }) => {
         type: 'staff/fetchDepartments'
         type: 'staff/fetchDepartments'
       })
       })
     }
     }
-  }, [state.params.businessGroupId, state.params.dataPermission, state.params.cyclical, state.params.staffIds])
+  }, [
+    state.params.businessGroupId,
+    state.params.dataPermission,
+    state.params.cyclical,
+    state.params.staffIds
+  ])
 
 
   const columns = [
   const columns = [
     {
     {
@@ -183,7 +188,8 @@ const Dashboard = ({ dispatch, departments = [] }) => {
       render: (name, record) => (
       render: (name, record) => (
         <span
         <span
           onClick={() => handleReminderList(record.type, '7day')}
           onClick={() => handleReminderList(record.type, '7day')}
-          className="text-primary cursor-pointer hover:text-hex-967bbd">
+          className="text-primary cursor-pointer hover:text-hex-967bbd"
+        >
           {name}
           {name}
         </span>
         </span>
       )
       )
@@ -194,7 +200,8 @@ const Dashboard = ({ dispatch, departments = [] }) => {
       render: (name, record) => (
       render: (name, record) => (
         <span
         <span
           onClick={() => handleReminderList(record.type, '15day')}
           onClick={() => handleReminderList(record.type, '15day')}
-          className="text-primary cursor-pointer hover:text-hex-967bbd">
+          className="text-primary cursor-pointer hover:text-hex-967bbd"
+        >
           {name}
           {name}
         </span>
         </span>
       )
       )
@@ -205,7 +212,8 @@ const Dashboard = ({ dispatch, departments = [] }) => {
       render: (name, record) => (
       render: (name, record) => (
         <span
         <span
           onClick={() => handleReminderList(record.type, '30day')}
           onClick={() => handleReminderList(record.type, '30day')}
-          className="text-primary cursor-pointer hover:text-hex-967bbd">
+          className="text-primary cursor-pointer hover:text-hex-967bbd"
+        >
           {name}
           {name}
         </span>
         </span>
       )
       )
@@ -216,7 +224,8 @@ const Dashboard = ({ dispatch, departments = [] }) => {
       render: (name, record) => (
       render: (name, record) => (
         <span
         <span
           onClick={() => handleReminderList(record.type, '3month')}
           onClick={() => handleReminderList(record.type, '3month')}
-          className="text-primary cursor-pointer hover:text-hex-967bbd">
+          className="text-primary cursor-pointer hover:text-hex-967bbd"
+        >
           {name}
           {name}
         </span>
         </span>
       )
       )
@@ -227,7 +236,8 @@ const Dashboard = ({ dispatch, departments = [] }) => {
       render: (name, record) => (
       render: (name, record) => (
         <span
         <span
           onClick={() => handleReminderList(record.type, '9month')}
           onClick={() => handleReminderList(record.type, '9month')}
-          className="text-primary cursor-pointer hover:text-hex-967bbd">
+          className="text-primary cursor-pointer hover:text-hex-967bbd"
+        >
           {name}
           {name}
         </span>
         </span>
       )
       )
@@ -240,7 +250,8 @@ const Dashboard = ({ dispatch, departments = [] }) => {
       render: (_, record) => (
       render: (_, record) => (
         <span
         <span
           onClick={() => handleReminderList(record.type, 'expiry')}
           onClick={() => handleReminderList(record.type, 'expiry')}
-          className="text-primary cursor-pointer hover:text-hex-967bbd">
+          className="text-primary cursor-pointer hover:text-hex-967bbd"
+        >
           {record.remind.expiry}
           {record.remind.expiry}
         </span>
         </span>
       )
       )
@@ -251,7 +262,8 @@ const Dashboard = ({ dispatch, departments = [] }) => {
       render: (_, record) => (
       render: (_, record) => (
         <span
         <span
           onClick={() => handleReminderList(record.type, 'unexpired')}
           onClick={() => handleReminderList(record.type, 'unexpired')}
-          className="text-primary cursor-pointer hover:text-hex-967bbd">
+          className="text-primary cursor-pointer hover:text-hex-967bbd"
+        >
           {record.remind.unexpired}
           {record.remind.unexpired}
         </span>
         </span>
       )
       )
@@ -286,7 +298,7 @@ const Dashboard = ({ dispatch, departments = [] }) => {
   return (
   return (
     <div className={styles.dashboard}>
     <div className={styles.dashboard}>
       <div>
       <div>
-        {/* <div className="shadow-card">
+        <div className="shadow-card">
           <ProTable
           <ProTable
             bordered
             bordered
             loading={state.loading}
             loading={state.loading}
@@ -302,26 +314,26 @@ const Dashboard = ({ dispatch, departments = [] }) => {
             )}
             )}
             pagination={false}
             pagination={false}
           />
           />
-        </div> */}
-        <Row gutter={[8, 8]}>
+        </div>
+        {/* <Row gutter={[8, 8]}>
           <Col xs={24} sm={24} md={24} lg={18} xl={18}>
           <Col xs={24} sm={24} md={24} lg={18} xl={18}>
-            <div className="shadow-card">
-              <ProTable
-                bordered
-                loading={state.loading}
-                rowKey={record => record.type + Date.now()}
-                columns={columns}
-                dataSource={state.reminderData}
-                search={false}
-                toolBarRender={false}
-                tableRender={(_, dom) => (
-                  <Card bodyStyle={{ padding: state.loading ? '24px' : 0 }} loading={state.loading}>
-                    {dom}
-                  </Card>
-                )}
-                pagination={false}
-              />
-            </div>
+          <div className="shadow-card">
+            <ProTable
+              bordered
+              loading={state.loading}
+              rowKey={record => record.type + Date.now()}
+              columns={columns}
+              dataSource={state.reminderData}
+              search={false}
+              toolBarRender={false}
+              tableRender={(_, dom) => (
+                <Card bodyStyle={{ padding: state.loading ? '24px' : 0 }} loading={state.loading}>
+                  {dom}
+                </Card>
+              )}
+              pagination={false}
+            />
+          </div>
           </Col>
           </Col>
           <Col xs={24} sm={24} md={24} lg={6} xl={6}>
           <Col xs={24} sm={24} md={24} lg={6} xl={6}>
             <div className="shadow-card">
             <div className="shadow-card">
@@ -342,7 +354,7 @@ const Dashboard = ({ dispatch, departments = [] }) => {
               />
               />
             </div>
             </div>
           </Col>
           </Col>
-        </Row>
+        </Row> */}
       </div>
       </div>
 
 
       <div className="mt-4 flex flex-row ">
       <div className="mt-4 flex flex-row ">
@@ -397,7 +409,8 @@ const Dashboard = ({ dispatch, departments = [] }) => {
                     'relative',
                     'relative',
                     'cursor-pointer',
                     'cursor-pointer',
                     state.selectId === item.id ? styles.imgBg : styles.paddingBg
                     state.selectId === item.id ? styles.imgBg : styles.paddingBg
-                  ].join(' ')}>
+                  ].join(' ')}
+                >
                   <img
                   <img
                     className="w-full max-w-30px h-30px border rounded-30px"
                     className="w-full max-w-30px h-30px border rounded-30px"
                     src={
                     src={
@@ -432,8 +445,11 @@ const Dashboard = ({ dispatch, departments = [] }) => {
                       <span
                       <span
                         className={[
                         className={[
                           'text-xl',
                           'text-xl',
-                          state.clientChainRatio.percentage.startsWith('-') ? 'text-green-500' : 'text-red-500'
-                        ].join(' ')}>
+                          state.clientChainRatio.percentage.startsWith('-')
+                            ? 'text-green-500'
+                            : 'text-red-500'
+                        ].join(' ')}
+                      >
                         {state.clientChainRatio.percentage}
                         {state.clientChainRatio.percentage}
                       </span>
                       </span>
                     </div>
                     </div>
@@ -463,8 +479,11 @@ const Dashboard = ({ dispatch, departments = [] }) => {
                       <span
                       <span
                         className={[
                         className={[
                           'text-xl',
                           'text-xl',
-                          state.customerChainRatio.percentage.startsWith('-') ? 'text-green-500' : 'text-red-500'
-                        ].join(' ')}>
+                          state.customerChainRatio.percentage.startsWith('-')
+                            ? 'text-green-500'
+                            : 'text-red-500'
+                        ].join(' ')}
+                      >
                         {state.customerChainRatio.percentage}
                         {state.customerChainRatio.percentage}
                       </span>
                       </span>
                     </div>
                     </div>
@@ -533,8 +552,11 @@ const Dashboard = ({ dispatch, departments = [] }) => {
                       <span
                       <span
                         className={[
                         className={[
                           'text-xl',
                           'text-xl',
-                          state.serviceLogChainRatio.percentage.startsWith('-') ? 'text-green-500' : 'text-red-500'
-                        ].join(' ')}>
+                          state.serviceLogChainRatio.percentage.startsWith('-')
+                            ? 'text-green-500'
+                            : 'text-red-500'
+                        ].join(' ')}
+                      >
                         {state.serviceLogChainRatio.percentage}
                         {state.serviceLogChainRatio.percentage}
                       </span>
                       </span>
                     </div>
                     </div>
@@ -566,7 +588,8 @@ const Dashboard = ({ dispatch, departments = [] }) => {
               title="数据汇总"
               title="数据汇总"
               className="shadow-card"
               className="shadow-card"
               bodyStyle={{ padding: state.loading ? '24px' : 0 }}
               bodyStyle={{ padding: state.loading ? '24px' : 0 }}
-              loading={state.loading}>
+              loading={state.loading}
+            >
               <ul>
               <ul>
                 <li className="px-12px py-16px border-b-1">
                 <li className="px-12px py-16px border-b-1">
                   新增客户<b className="px-1">{state.aggregation.clientCount}</b>个,服务
                   新增客户<b className="px-1">{state.aggregation.clientCount}</b>个,服务