浏览代码

mark-header md

zhangjie 1 年之前
父节点
当前提交
c60632adc0
共有 39 个文件被更改,包括 1339 次插入703 次删除
  1. 4 0
      .env.development
  2. 548 309
      pnpm-lock.yaml
  3. 12 0
      src/assets/icons/form-大小.svg
  4. 12 0
      src/assets/icons/icon-back.svg
  5. 12 0
      src/assets/icons/icon-group.svg
  6. 12 0
      src/assets/icons/icon-left-menu.svg
  7. 12 0
      src/assets/icons/icon-problems.svg
  8. 12 0
      src/assets/icons/icon-right-menu.svg
  9. 12 0
      src/assets/icons/icon-times.svg
  10. 12 0
      src/assets/icons/icon-track-mode.svg
  11. 12 0
      src/assets/icons/icon-user.svg
  12. 17 0
      src/assets/icons/icon-上一页-无法选择.svg
  13. 17 0
      src/assets/icons/icon-下一页.svg
  14. 12 0
      src/assets/icons/icon-下拉.svg
  15. 13 0
      src/assets/icons/icon-全卷.svg
  16. 12 0
      src/assets/icons/icon-叉.svg
  17. 12 0
      src/assets/icons/icon-向上.svg
  18. 12 0
      src/assets/icons/icon-向下.svg
  19. 12 0
      src/assets/icons/icon-圈取.svg
  20. 12 0
      src/assets/icons/icon-实际大小.svg
  21. 12 0
      src/assets/icons/icon-对.svg
  22. 12 0
      src/assets/icons/icon-快捷键.svg
  23. 12 0
      src/assets/icons/icon-总数.svg
  24. 11 0
      src/assets/icons/icon-拖动.svg
  25. 12 0
      src/assets/icons/icon-放大.svg
  26. 11 0
      src/assets/icons/icon-文本.svg
  27. 12 0
      src/assets/icons/icon-清除.svg
  28. 12 0
      src/assets/icons/icon-缩小.svg
  29. 12 0
      src/assets/icons/icon-缩略图.svg
  30. 12 0
      src/assets/icons/icon-问题试卷.svg
  31. 12 0
      src/assets/icons/icon-页面放大.svg
  32. 12 0
      src/assets/icons/icon-页面缩小.svg
  33. 19 19
      src/devLoginParams.ts
  34. 1 6
      src/features/mark/Mark.vue
  35. 267 365
      src/features/mark/MarkHeader.vue
  36. 1 0
      src/main.ts
  37. 1 1
      src/router/index.ts
  38. 125 0
      src/styles/page.less
  39. 4 3
      vite.config.ts

+ 4 - 0
.env.development

@@ -0,0 +1,4 @@
+VITE_ENV_TYPE=development
+VITE_HTTP_PROXY=Y
+VITE_APP_PROXY_URL=http://192.168.10.224
+# VITE_APP_PROXY_URL="http://192.168.11.103:8090";

+ 548 - 309
pnpm-lock.yaml

@@ -9,6 +9,7 @@ specifiers:
   '@typescript-eslint/parser': ^5.30.7
   '@vitejs/plugin-vue': ^3.0.1
   '@vue/runtime-core': ^3.2.37
+  animate.css: ^4.1.1
   ant-design-vue: ^3.2.10
   autoprefixer: ^10.4.7
   axios: ^0.26.1
@@ -19,6 +20,7 @@ specifiers:
   eslint: ^8.20.0
   eslint-config-prettier: ^8.5.0
   eslint-plugin-vue: ^9.2.0
+  less: ^4.1.3
   lodash-es: ^4.17.21
   mitt: ^3.0.0
   moment: ^2.29.4
@@ -38,6 +40,7 @@ specifiers:
 
 dependencies:
   '@ant-design/icons-vue': 6.1.0_vue@3.2.37
+  animate.css: registry.npmmirror.com/animate.css/4.1.1
   ant-design-vue: 3.2.10_vue@3.2.37
   axios: 0.26.1
   axios-progress-bar: 1.2.0_axios@0.26.1
@@ -47,14 +50,14 @@ dependencies:
   mitt: 3.0.0
   moment: 2.29.4
   pinia: 2.0.16_j6bzmzd4ujpabbp5objtwxyjp4
-  tailwindcss: 3.1.6
+  tailwindcss: 3.1.6_postcss@8.4.14
   ua-parser-js: 1.0.2
   viewerjs: 1.10.5
   vue: 3.2.37
   vue-router: 4.1.2_vue@3.2.37
 
 optionalDependencies:
-  cypress: 10.3.1
+  cypress: registry.npmmirror.com/cypress/10.3.1
 
 devDependencies:
   '@types/lodash-es': 4.17.6
@@ -68,11 +71,12 @@ devDependencies:
   eslint: 8.20.0
   eslint-config-prettier: 8.5.0_eslint@8.20.0
   eslint-plugin-vue: 9.2.0_eslint@8.20.0
+  less: registry.npmmirror.com/less/4.2.0
   postcss: 8.4.14
   prettier: 2.7.1
   typescript: 4.7.4
   unplugin-vue-components: 0.21.1_vite@3.0.2+vue@3.2.37
-  vite: 3.0.2
+  vite: 3.0.2_less@4.2.0
   vue-eslint-parser: 9.0.3_eslint@8.20.0
   vue-tsc: 0.38.8_typescript@4.7.4
 
@@ -127,13 +131,6 @@ packages:
       '@babel/helper-validator-identifier': 7.18.6
       to-fast-properties: 2.0.0
 
-  /@colors/colors/1.5.0:
-    resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
-    engines: {node: '>=0.1.90'}
-    requiresBuild: true
-    dev: false
-    optional: true
-
   /@ctrl/tinycolor/3.4.1:
     resolution: {integrity: sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==}
     engines: {node: '>=10'}
@@ -275,14 +272,6 @@ packages:
     resolution: {integrity: sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==}
     dev: true
 
-  /@types/yauzl/2.10.0:
-    resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
-    requiresBuild: true
-    dependencies:
-      '@types/node': 18.0.6
-    dev: false
-    optional: true
-
   /@typescript-eslint/eslint-plugin/5.30.7_6wltbjakwuqm7awqswigmiuhd4:
     resolution: {integrity: sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -416,7 +405,7 @@ packages:
       vite: ^3.0.0
       vue: ^3.2.25
     dependencies:
-      vite: 3.0.2
+      vite: 3.0.2_less@4.2.0
       vue: 3.2.37
     dev: true
 
@@ -456,7 +445,7 @@ packages:
       '@babel/parser': 7.18.9
       '@vue/shared': 3.2.37
       estree-walker: 2.0.2
-      source-map: 0.6.1
+      source-map: registry.npmmirror.com/source-map/0.6.1
 
   /@vue/compiler-dom/3.2.37:
     resolution: {integrity: sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==}
@@ -660,7 +649,7 @@ packages:
   /asn1/0.2.6:
     resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}
     dependencies:
-      safer-buffer: 2.1.2
+      safer-buffer: registry.npmmirror.com/safer-buffer/2.1.2
     dev: false
     optional: true
 
@@ -870,7 +859,7 @@ packages:
       normalize-path: 3.0.0
       readdirp: 3.6.0
     optionalDependencies:
-      fsevents: 2.3.2
+      fsevents: registry.npmmirror.com/fsevents/2.3.2
 
   /ci-info/3.3.2:
     resolution: {integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==}
@@ -897,7 +886,7 @@ packages:
     dependencies:
       string-width: 4.2.3
     optionalDependencies:
-      '@colors/colors': 1.5.0
+      '@colors/colors': registry.npmmirror.com/@colors/colors/1.5.0
     dev: false
     optional: true
 
@@ -981,57 +970,6 @@ packages:
     resolution: {integrity: sha512-olUrKbiSxWNMyFY2h2hIaCkV7xhkesRKCO0lp/SyBN4PlKmCkOuPCd58SWpPFrd9kUlzXxF2sTPyuykDE+O9Hg==}
     dev: false
 
-  /cypress/10.3.1:
-    resolution: {integrity: sha512-As9HrExjAgpgjCnbiQCuPdw5sWKx5HUJcK2EOKziu642akwufr/GUeqL5UnCPYXTyyibvEdWT/pSC2qnGW/e5w==}
-    engines: {node: '>=12.0.0'}
-    hasBin: true
-    requiresBuild: true
-    dependencies:
-      '@cypress/request': 2.88.10
-      '@cypress/xvfb': 1.2.4_supports-color@8.1.1
-      '@types/node': 14.18.22
-      '@types/sinonjs__fake-timers': 8.1.1
-      '@types/sizzle': 2.3.3
-      arch: 2.2.0
-      blob-util: 2.0.2
-      bluebird: 3.7.2
-      buffer: 5.7.1
-      cachedir: 2.3.0
-      chalk: 4.1.2
-      check-more-types: 2.24.0
-      cli-cursor: 3.1.0
-      cli-table3: 0.6.2
-      commander: 5.1.0
-      common-tags: 1.8.2
-      dayjs: 1.11.3
-      debug: 4.3.4_supports-color@8.1.1
-      enquirer: 2.3.6
-      eventemitter2: 6.4.6
-      execa: 4.1.0
-      executable: 4.1.1
-      extract-zip: 2.0.1_supports-color@8.1.1
-      figures: 3.2.0
-      fs-extra: 9.1.0
-      getos: 3.2.1
-      is-ci: 3.0.1
-      is-installed-globally: 0.4.0
-      lazy-ass: 1.6.0
-      listr2: 3.14.0_enquirer@2.3.6
-      lodash: 4.17.21
-      log-symbols: 4.1.0
-      minimist: 1.2.6
-      ospath: 1.2.2
-      pretty-bytes: 5.6.0
-      proxy-from-env: 1.0.0
-      request-progress: 3.0.0
-      semver: 7.3.7
-      supports-color: 8.1.1
-      tmp: 0.2.1
-      untildify: 4.0.0
-      yauzl: 2.10.0
-    dev: false
-    optional: true
-
   /dashdash/1.14.1:
     resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==}
     engines: {node: '>=0.10'}
@@ -1052,7 +990,7 @@ packages:
       supports-color:
         optional: true
     dependencies:
-      ms: 2.1.2
+      ms: registry.npmmirror.com/ms/2.1.2
       supports-color: 8.1.1
     dev: false
     optional: true
@@ -1141,7 +1079,7 @@ packages:
     resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
     dependencies:
       jsbn: 0.1.1
-      safer-buffer: 2.1.2
+      safer-buffer: registry.npmmirror.com/safer-buffer/2.1.2
     dev: false
     optional: true
 
@@ -1169,212 +1107,32 @@ packages:
     dev: false
     optional: true
 
-  /esbuild-android-64/0.14.49:
-    resolution: {integrity: sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [android]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-android-arm64/0.14.49:
-    resolution: {integrity: sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [android]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-darwin-64/0.14.49:
-    resolution: {integrity: sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [darwin]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-darwin-arm64/0.14.49:
-    resolution: {integrity: sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [darwin]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-freebsd-64/0.14.49:
-    resolution: {integrity: sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [freebsd]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-freebsd-arm64/0.14.49:
-    resolution: {integrity: sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [freebsd]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-linux-32/0.14.49:
-    resolution: {integrity: sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-linux-64/0.14.49:
-    resolution: {integrity: sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-linux-arm/0.14.49:
-    resolution: {integrity: sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==}
-    engines: {node: '>=12'}
-    cpu: [arm]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-linux-arm64/0.14.49:
-    resolution: {integrity: sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-linux-mips64le/0.14.49:
-    resolution: {integrity: sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==}
-    engines: {node: '>=12'}
-    cpu: [mips64el]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-linux-ppc64le/0.14.49:
-    resolution: {integrity: sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==}
-    engines: {node: '>=12'}
-    cpu: [ppc64]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-linux-riscv64/0.14.49:
-    resolution: {integrity: sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==}
-    engines: {node: '>=12'}
-    cpu: [riscv64]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-linux-s390x/0.14.49:
-    resolution: {integrity: sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==}
-    engines: {node: '>=12'}
-    cpu: [s390x]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-netbsd-64/0.14.49:
-    resolution: {integrity: sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [netbsd]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-openbsd-64/0.14.49:
-    resolution: {integrity: sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [openbsd]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-sunos-64/0.14.49:
-    resolution: {integrity: sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [sunos]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-windows-32/0.14.49:
-    resolution: {integrity: sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
-    os: [win32]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-windows-64/0.14.49:
-    resolution: {integrity: sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [win32]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /esbuild-windows-arm64/0.14.49:
-    resolution: {integrity: sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [win32]
-    requiresBuild: true
-    dev: true
-    optional: true
-
   /esbuild/0.14.49:
     resolution: {integrity: sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==}
     engines: {node: '>=12'}
     hasBin: true
     requiresBuild: true
     optionalDependencies:
-      esbuild-android-64: 0.14.49
-      esbuild-android-arm64: 0.14.49
-      esbuild-darwin-64: 0.14.49
-      esbuild-darwin-arm64: 0.14.49
-      esbuild-freebsd-64: 0.14.49
-      esbuild-freebsd-arm64: 0.14.49
-      esbuild-linux-32: 0.14.49
-      esbuild-linux-64: 0.14.49
-      esbuild-linux-arm: 0.14.49
-      esbuild-linux-arm64: 0.14.49
-      esbuild-linux-mips64le: 0.14.49
-      esbuild-linux-ppc64le: 0.14.49
-      esbuild-linux-riscv64: 0.14.49
-      esbuild-linux-s390x: 0.14.49
-      esbuild-netbsd-64: 0.14.49
-      esbuild-openbsd-64: 0.14.49
-      esbuild-sunos-64: 0.14.49
-      esbuild-windows-32: 0.14.49
-      esbuild-windows-64: 0.14.49
-      esbuild-windows-arm64: 0.14.49
+      esbuild-android-64: registry.npmmirror.com/esbuild-android-64/0.14.49
+      esbuild-android-arm64: registry.npmmirror.com/esbuild-android-arm64/0.14.49
+      esbuild-darwin-64: registry.npmmirror.com/esbuild-darwin-64/0.14.49
+      esbuild-darwin-arm64: registry.npmmirror.com/esbuild-darwin-arm64/0.14.49
+      esbuild-freebsd-64: registry.npmmirror.com/esbuild-freebsd-64/0.14.49
+      esbuild-freebsd-arm64: registry.npmmirror.com/esbuild-freebsd-arm64/0.14.49
+      esbuild-linux-32: registry.npmmirror.com/esbuild-linux-32/0.14.49
+      esbuild-linux-64: registry.npmmirror.com/esbuild-linux-64/0.14.49
+      esbuild-linux-arm: registry.npmmirror.com/esbuild-linux-arm/0.14.49
+      esbuild-linux-arm64: registry.npmmirror.com/esbuild-linux-arm64/0.14.49
+      esbuild-linux-mips64le: registry.npmmirror.com/esbuild-linux-mips64le/0.14.49
+      esbuild-linux-ppc64le: registry.npmmirror.com/esbuild-linux-ppc64le/0.14.49
+      esbuild-linux-riscv64: registry.npmmirror.com/esbuild-linux-riscv64/0.14.49
+      esbuild-linux-s390x: registry.npmmirror.com/esbuild-linux-s390x/0.14.49
+      esbuild-netbsd-64: registry.npmmirror.com/esbuild-netbsd-64/0.14.49
+      esbuild-openbsd-64: registry.npmmirror.com/esbuild-openbsd-64/0.14.49
+      esbuild-sunos-64: registry.npmmirror.com/esbuild-sunos-64/0.14.49
+      esbuild-windows-32: registry.npmmirror.com/esbuild-windows-32/0.14.49
+      esbuild-windows-64: registry.npmmirror.com/esbuild-windows-64/0.14.49
+      esbuild-windows-arm64: registry.npmmirror.com/esbuild-windows-arm64/0.14.49
     dev: true
 
   /escalade/3.1.1:
@@ -1584,7 +1342,7 @@ packages:
       get-stream: 5.2.0
       yauzl: 2.10.0
     optionalDependencies:
-      '@types/yauzl': 2.10.0
+      '@types/yauzl': registry.npmmirror.com/@types/yauzl/2.10.0
     transitivePeerDependencies:
       - supports-color
     dev: false
@@ -1697,7 +1455,7 @@ packages:
     engines: {node: '>=10'}
     dependencies:
       at-least-node: 1.0.0
-      graceful-fs: 4.2.10
+      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.10
       jsonfile: 6.1.0
       universalify: 2.0.0
     dev: false
@@ -1706,13 +1464,6 @@ packages:
   /fs.realpath/1.0.0:
     resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
 
-  /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
-
   /function-bind/1.1.1:
     resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
 
@@ -1791,11 +1542,6 @@ packages:
       slash: 3.0.0
     dev: true
 
-  /graceful-fs/4.2.10:
-    resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
-    dev: false
-    optional: true
-
   /has-flag/4.0.0:
     resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
     engines: {node: '>=8'}
@@ -1994,7 +1740,7 @@ packages:
     dependencies:
       universalify: 2.0.0
     optionalDependencies:
-      graceful-fs: 4.2.10
+      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.10
     dev: false
     optional: true
 
@@ -2305,6 +2051,7 @@ packages:
     resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
     engines: {node: '>=0.10.0'}
     dev: false
+    optional: true
 
   /pinia/2.0.16_j6bzmzd4ujpabbp5objtwxyjp4:
     resolution: {integrity: sha512-9/LMVO+/epny1NBfC77vnps4g3JRezxhhoF1xLUk8mZkUIxVnwfEAIRiAX8mYBTD/KCwZqnDMqXc8w3eU0FQGg==}
@@ -2447,7 +2194,7 @@ packages:
   /read-cache/1.0.0:
     resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
     dependencies:
-      pify: 2.3.0
+      pify: registry.npmmirror.com/pify/2.3.0
     dev: false
 
   /readdirp/3.6.0:
@@ -2518,7 +2265,7 @@ packages:
     engines: {node: '>=10.0.0'}
     hasBin: true
     optionalDependencies:
-      fsevents: 2.3.2
+      fsevents: registry.npmmirror.com/fsevents/2.3.2
     dev: true
 
   /run-parallel/1.2.0:
@@ -2529,7 +2276,7 @@ packages:
   /rxjs/7.5.6:
     resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==}
     dependencies:
-      tslib: 2.4.0
+      tslib: registry.npmmirror.com/tslib/2.4.0
     dev: false
     optional: true
 
@@ -2538,11 +2285,6 @@ packages:
     dev: false
     optional: true
 
-  /safer-buffer/2.1.2:
-    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
-    dev: false
-    optional: true
-
   /scroll-into-view-if-needed/2.2.29:
     resolution: {integrity: sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==}
     dependencies:
@@ -2623,7 +2365,7 @@ packages:
       ecc-jsbn: 0.1.2
       getpass: 0.1.7
       jsbn: 0.1.1
-      safer-buffer: 2.1.2
+      safer-buffer: registry.npmmirror.com/safer-buffer/2.1.2
       tweetnacl: 0.14.5
     dev: false
     optional: true
@@ -2673,10 +2415,12 @@ packages:
     resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
     engines: {node: '>= 0.4'}
 
-  /tailwindcss/3.1.6:
+  /tailwindcss/3.1.6_postcss@8.4.14:
     resolution: {integrity: sha512-7skAOY56erZAFQssT1xkpk+kWt2NrO45kORlxFPXUt3CiGsVPhH1smuH5XoDH6sGPXLyBv+zgCKA2HWBsgCytg==}
     engines: {node: '>=12.13.0'}
     hasBin: true
+    peerDependencies:
+      postcss: ^8.0.9
     dependencies:
       arg: 5.0.2
       chokidar: 3.5.3
@@ -2749,11 +2493,6 @@ packages:
     resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
     dev: true
 
-  /tslib/2.4.0:
-    resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
-    dev: false
-    optional: true
-
   /tsutils/3.21.0_typescript@4.7.4:
     resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
     engines: {node: '>= 6'}
@@ -2857,7 +2596,7 @@ packages:
     dependencies:
       acorn: 8.7.1
       chokidar: 3.5.3
-      vite: 3.0.2
+      vite: 3.0.2_less@4.2.0
       webpack-sources: 3.2.3
       webpack-virtual-modules: 0.4.4
     dev: true
@@ -2912,7 +2651,7 @@ packages:
     resolution: {integrity: sha512-QwKrmXlSfKg5x4y74F/jicpHIRqBMMfHXyboOxHDi5n4XAaejjpalphPq4/HW6venQAoMiD57HpVwBk0JvqpSA==}
     dev: false
 
-  /vite/3.0.2:
+  /vite/3.0.2_less@4.2.0:
     resolution: {integrity: sha512-TAqydxW/w0U5AoL5AsD9DApTvGb2iNbGs3sN4u2VdT1GFkQVUfgUldt+t08TZgi23uIauh1TUOQJALduo9GXqw==}
     engines: {node: ^14.18.0 || >=16.0.0}
     hasBin: true
@@ -2932,11 +2671,12 @@ packages:
         optional: true
     dependencies:
       esbuild: 0.14.49
+      less: registry.npmmirror.com/less/4.2.0
       postcss: 8.4.14
       resolve: 1.22.1
       rollup: 2.77.0
     optionalDependencies:
-      fsevents: 2.3.2
+      fsevents: registry.npmmirror.com/fsevents/2.3.2
     dev: true
 
   /vue-demi/0.13.5_vue@3.2.37:
@@ -3085,3 +2825,502 @@ packages:
       fd-slicer: 1.1.0
     dev: false
     optional: true
+
+  registry.npmmirror.com/@colors/colors/1.5.0:
+    resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@colors/colors/-/colors-1.5.0.tgz}
+    name: '@colors/colors'
+    version: 1.5.0
+    engines: {node: '>=0.1.90'}
+    requiresBuild: true
+    dev: false
+    optional: true
+
+  registry.npmmirror.com/@types/yauzl/2.10.0:
+    resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/yauzl/-/yauzl-2.10.0.tgz}
+    name: '@types/yauzl'
+    version: 2.10.0
+    requiresBuild: true
+    dependencies:
+      '@types/node': 18.0.6
+    dev: false
+    optional: true
+
+  registry.npmmirror.com/animate.css/4.1.1:
+    resolution: {integrity: sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/animate.css/-/animate.css-4.1.1.tgz}
+    name: animate.css
+    version: 4.1.1
+    dev: false
+
+  registry.npmmirror.com/copy-anything/2.0.6:
+    resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz}
+    name: copy-anything
+    version: 2.0.6
+    dependencies:
+      is-what: registry.npmmirror.com/is-what/3.14.1
+    dev: true
+
+  registry.npmmirror.com/cypress/10.3.1:
+    resolution: {integrity: sha512-As9HrExjAgpgjCnbiQCuPdw5sWKx5HUJcK2EOKziu642akwufr/GUeqL5UnCPYXTyyibvEdWT/pSC2qnGW/e5w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cypress/-/cypress-10.3.1.tgz}
+    name: cypress
+    version: 10.3.1
+    engines: {node: '>=12.0.0'}
+    hasBin: true
+    requiresBuild: true
+    dependencies:
+      '@cypress/request': 2.88.10
+      '@cypress/xvfb': 1.2.4_supports-color@8.1.1
+      '@types/node': 14.18.22
+      '@types/sinonjs__fake-timers': 8.1.1
+      '@types/sizzle': 2.3.3
+      arch: 2.2.0
+      blob-util: 2.0.2
+      bluebird: 3.7.2
+      buffer: 5.7.1
+      cachedir: 2.3.0
+      chalk: 4.1.2
+      check-more-types: 2.24.0
+      cli-cursor: 3.1.0
+      cli-table3: 0.6.2
+      commander: 5.1.0
+      common-tags: 1.8.2
+      dayjs: 1.11.3
+      debug: 4.3.4_supports-color@8.1.1
+      enquirer: 2.3.6
+      eventemitter2: 6.4.6
+      execa: 4.1.0
+      executable: 4.1.1
+      extract-zip: 2.0.1_supports-color@8.1.1
+      figures: 3.2.0
+      fs-extra: 9.1.0
+      getos: 3.2.1
+      is-ci: 3.0.1
+      is-installed-globally: 0.4.0
+      lazy-ass: 1.6.0
+      listr2: 3.14.0_enquirer@2.3.6
+      lodash: 4.17.21
+      log-symbols: 4.1.0
+      minimist: 1.2.6
+      ospath: 1.2.2
+      pretty-bytes: 5.6.0
+      proxy-from-env: 1.0.0
+      request-progress: 3.0.0
+      semver: 7.3.7
+      supports-color: 8.1.1
+      tmp: 0.2.1
+      untildify: 4.0.0
+      yauzl: 2.10.0
+    dev: false
+    optional: true
+
+  registry.npmmirror.com/debug/3.2.7:
+    resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz}
+    name: debug
+    version: 3.2.7
+    peerDependencies:
+      supports-color: '*'
+    peerDependenciesMeta:
+      supports-color:
+        optional: true
+    dependencies:
+      ms: registry.npmmirror.com/ms/2.1.2
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/errno/0.1.8:
+    resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz}
+    name: errno
+    version: 0.1.8
+    hasBin: true
+    requiresBuild: true
+    dependencies:
+      prr: registry.npmmirror.com/prr/1.0.1
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-android-64/0.14.49:
+    resolution: {integrity: sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz}
+    name: esbuild-android-64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-android-arm64/0.14.49:
+    resolution: {integrity: sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz}
+    name: esbuild-android-arm64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-darwin-64/0.14.49:
+    resolution: {integrity: sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz}
+    name: esbuild-darwin-64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-darwin-arm64/0.14.49:
+    resolution: {integrity: sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz}
+    name: esbuild-darwin-arm64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-freebsd-64/0.14.49:
+    resolution: {integrity: sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz}
+    name: esbuild-freebsd-64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-freebsd-arm64/0.14.49:
+    resolution: {integrity: sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz}
+    name: esbuild-freebsd-arm64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-linux-32/0.14.49:
+    resolution: {integrity: sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz}
+    name: esbuild-linux-32
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [ia32]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-linux-64/0.14.49:
+    resolution: {integrity: sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz}
+    name: esbuild-linux-64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-linux-arm/0.14.49:
+    resolution: {integrity: sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz}
+    name: esbuild-linux-arm
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [arm]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-linux-arm64/0.14.49:
+    resolution: {integrity: sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz}
+    name: esbuild-linux-arm64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-linux-mips64le/0.14.49:
+    resolution: {integrity: sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz}
+    name: esbuild-linux-mips64le
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [mips64el]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-linux-ppc64le/0.14.49:
+    resolution: {integrity: sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz}
+    name: esbuild-linux-ppc64le
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [ppc64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-linux-riscv64/0.14.49:
+    resolution: {integrity: sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz}
+    name: esbuild-linux-riscv64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [riscv64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-linux-s390x/0.14.49:
+    resolution: {integrity: sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz}
+    name: esbuild-linux-s390x
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [s390x]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-netbsd-64/0.14.49:
+    resolution: {integrity: sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz}
+    name: esbuild-netbsd-64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [netbsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-openbsd-64/0.14.49:
+    resolution: {integrity: sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz}
+    name: esbuild-openbsd-64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [openbsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-sunos-64/0.14.49:
+    resolution: {integrity: sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz}
+    name: esbuild-sunos-64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [sunos]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-windows-32/0.14.49:
+    resolution: {integrity: sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz}
+    name: esbuild-windows-32
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-windows-64/0.14.49:
+    resolution: {integrity: sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz}
+    name: esbuild-windows-64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/esbuild-windows-arm64/0.14.49:
+    resolution: {integrity: sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz}
+    name: esbuild-windows-arm64
+    version: 0.14.49
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    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/graceful-fs/4.2.10:
+    resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz}
+    name: graceful-fs
+    version: 4.2.10
+    optional: true
+
+  registry.npmmirror.com/iconv-lite/0.6.3:
+    resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz}
+    name: iconv-lite
+    version: 0.6.3
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      safer-buffer: registry.npmmirror.com/safer-buffer/2.1.2
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/image-size/0.5.5:
+    resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz}
+    name: image-size
+    version: 0.5.5
+    engines: {node: '>=0.10.0'}
+    hasBin: true
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/is-what/3.14.1:
+    resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz}
+    name: is-what
+    version: 3.14.1
+    dev: true
+
+  registry.npmmirror.com/less/4.2.0:
+    resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/less/-/less-4.2.0.tgz}
+    name: less
+    version: 4.2.0
+    engines: {node: '>=6'}
+    hasBin: true
+    dependencies:
+      copy-anything: registry.npmmirror.com/copy-anything/2.0.6
+      parse-node-version: registry.npmmirror.com/parse-node-version/1.0.1
+      tslib: registry.npmmirror.com/tslib/2.4.0
+    optionalDependencies:
+      errno: registry.npmmirror.com/errno/0.1.8
+      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.10
+      image-size: registry.npmmirror.com/image-size/0.5.5
+      make-dir: registry.npmmirror.com/make-dir/2.1.0
+      mime: registry.npmmirror.com/mime/1.6.0
+      needle: registry.npmmirror.com/needle/3.2.0
+      source-map: registry.npmmirror.com/source-map/0.6.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  registry.npmmirror.com/make-dir/2.1.0:
+    resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz}
+    name: make-dir
+    version: 2.1.0
+    engines: {node: '>=6'}
+    requiresBuild: true
+    dependencies:
+      pify: registry.npmmirror.com/pify/4.0.1
+      semver: registry.npmmirror.com/semver/5.7.2
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/mime/1.6.0:
+    resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz}
+    name: mime
+    version: 1.6.0
+    engines: {node: '>=4'}
+    hasBin: true
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/ms/2.1.2:
+    resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz}
+    name: ms
+    version: 2.1.2
+    optional: true
+
+  registry.npmmirror.com/needle/3.2.0:
+    resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/needle/-/needle-3.2.0.tgz}
+    name: needle
+    version: 3.2.0
+    engines: {node: '>= 4.4.x'}
+    hasBin: true
+    requiresBuild: true
+    dependencies:
+      debug: registry.npmmirror.com/debug/3.2.7
+      iconv-lite: registry.npmmirror.com/iconv-lite/0.6.3
+      sax: registry.npmmirror.com/sax/1.3.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/parse-node-version/1.0.1:
+    resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz}
+    name: parse-node-version
+    version: 1.0.1
+    engines: {node: '>= 0.10'}
+    dev: true
+
+  registry.npmmirror.com/pify/2.3.0:
+    resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz}
+    name: pify
+    version: 2.3.0
+    engines: {node: '>=0.10.0'}
+    dev: false
+
+  registry.npmmirror.com/pify/4.0.1:
+    resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz}
+    name: pify
+    version: 4.0.1
+    engines: {node: '>=6'}
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/prr/1.0.1:
+    resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz}
+    name: prr
+    version: 1.0.1
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/safer-buffer/2.1.2:
+    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz}
+    name: safer-buffer
+    version: 2.1.2
+    optional: true
+
+  registry.npmmirror.com/sax/1.3.0:
+    resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz}
+    name: sax
+    version: 1.3.0
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/semver/5.7.2:
+    resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz}
+    name: semver
+    version: 5.7.2
+    hasBin: true
+    dev: true
+    optional: true
+
+  registry.npmmirror.com/source-map/0.6.1:
+    resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz}
+    name: source-map
+    version: 0.6.1
+    engines: {node: '>=0.10.0'}
+
+  registry.npmmirror.com/tslib/2.4.0:
+    resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz}
+    name: tslib
+    version: 2.4.0

+ 12 - 0
src/assets/icons/form-大小.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>form-大小</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-196, -70)">
+            <g id="form-大小" transform="translate(196, 70)">
+                <path d="M6,12 C9.3137085,12 12,9.3137085 12,6 C12,2.6862915 9.3137085,0 6,0 C2.6862915,0 0,2.6862915 0,6 C0,9.3137085 2.6862915,12 6,12 Z" id="Ellipse" fill="#165DFF"></path>
+                <circle id="Ellipse" fill="#FFFFFF" cx="6" cy="6" r="4.66666667"></circle>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-back.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-返回</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1306, -19)">
+            <g id="icon-返回" transform="translate(1306, 19)">
+                <rect id="rollback-(Background)" opacity="0" x="0" y="0" width="18" height="18"></rect>
+                <path d="M6.58533248,3.7727901 L5.78983757,2.97729492 L2.93314325,5.833989 C2.73788107,6.02925111 2.73788105,6.3458336 2.93314319,6.54109575 C2.9331432,6.54109576 2.93314321,6.54109577 2.93314325,6.54109575 L5.78983757,9.39778984 L5.78983757,9.39778984 L6.58533248,8.60229492 L4.73307994,6.75004238 L11.2500848,6.75004238 C13.1140462,6.75004238 14.6250848,8.26108092 14.6250848,10.1250424 C14.6250848,11.9890038 13.1140462,13.5000429 11.2500848,13.5000429 L5.62508503,13.5000429 L5.62508503,14.6250429 L11.2500848,14.6250429 C13.735366,14.6250429 15.7500848,12.6103236 15.7500848,10.1250424 C15.7500848,7.63976115 13.735366,5.62504238 11.2500848,5.62504238 L4.73307994,5.62504238 L6.58533248,3.7727901 Z" id="rollback" fill="#FFFFFF"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-group.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-分组</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1090, -19)">
+            <g id="icon-分组" transform="translate(1090, 19)">
+                <rect id="server-(Background)" opacity="0" x="0" y="0" width="18" height="18"></rect>
+                <path d="M4.5,5.90625 L4.5,4.78125 L7.875,4.78125 L7.875,5.90625 L4.5,5.90625 Z M2.25027466,2.25 L15.7502747,2.25 C16.0608755,2.25 16.312691,2.50174687 16.3127747,2.81234745 L16.3138433,7.87486696 C16.3139956,8.18558693 16.0620632,8.43751985 15.7513433,8.43751985 L2.25134318,8.43751985 C1.94074261,8.43751985 1.68892707,8.18577307 1.68884282,7.8751722 L1.68777466,2.81265282 C1.68777466,2.50193305 1.93955489,2.25 2.25027466,2.25 Z M2.81292728,3.375 L15.187927,3.375 L15.1886909,7.31251985 L2.81369023,7.31251985 L2.81292728,3.375 Z M7.87512177,13.21875 L7.87512177,12.09375 L4.50012204,12.09375 L4.50012204,13.21875 L7.87512177,13.21875 Z M2.25149533,9.56251556 L15.7514956,9.56251556 C16.0621555,9.56251556 16.3139956,9.81435567 16.3139956,10.1250156 L16.3139956,15.1875 C16.3139956,15.4981599 16.0621555,15.75 15.7514956,15.75 L2.25149573,15.75 C1.94083558,15.75 1.68899536,15.4981599 1.68899536,15.1875 L1.68899536,10.1250156 C1.68899536,9.81435513 1.94083521,9.56251556 2.25149533,9.56251556 Z M2.81399533,10.6875156 L15.1889956,10.6875156 L15.1889956,14.625 L2.81399533,14.625 L2.81399533,10.6875156 Z" id="server" fill="#FFFFFF"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-left-menu.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-左侧展开</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-19, -19)">
+            <g id="icon-左侧展开" transform="translate(19, 19)">
+                <rect id="menu-fold-(Background)" opacity="0" x="0" y="0" width="18" height="18"></rect>
+                <path d="M15.7487673,4.50000992 L15.7500612,3.37501063 L2.25074482,3.35948181 L2.24945068,4.48448101 L15.7487673,4.50000992 Z M15.7494142,9.56251019 L15.7494142,8.43751019 L8.43759763,8.43751019 L8.43759763,9.56251019 L15.7494142,9.56251019 Z M15.7487673,14.6250107 L15.7500612,13.5000107 L2.25074482,13.4844818 L2.24945068,14.6094818 L15.7487673,14.6250107 Z M6.71259767,9.44221151 L3.15009738,12.1140865 C2.77927692,12.392201 2.25009745,12.1276118 2.25009747,11.6640864 L2.2500977,6.32033587 C2.25009773,5.85681045 2.77927719,5.59222099 3.15009771,5.87033629 L6.71259794,8.54221129 C7.01259792,8.76721162 7.01259738,9.21721119 6.71259767,9.44221151 Z M5.43759754,8.9922114 L3.3750975,10.5390864 L3.37509763,7.44533587 L5.43759754,8.9922114 Z" id="menu-fold" fill="#FFFFFF"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-problems.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-试卷数量</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-197, -19)">
+            <g id="icon-试卷数量" transform="translate(197, 19)">
+                <rect id="help-circle-(Background)" opacity="0" x="0" y="0" width="18" height="18"></rect>
+                <path d="M8.99329609,12.3749979 C9.36608881,12.3749979 9.66829598,12.6772056 9.66829598,13.0499983 C9.66829598,13.4227899 9.36608881,13.7249976 8.99329609,13.7249976 C8.6205039,13.7249976 8.31829619,13.4227899 8.31829619,13.0499983 C8.31829619,12.6772056 8.6205039,12.3749979 8.99329609,12.3749979 Z M6.26522613,7.23498952 L7.39022613,7.23498952 C7.39022613,6.35146183 8.10982364,5.63186431 8.99335134,5.63186431 C9.8768785,5.63186431 10.5964766,6.35146183 10.5964766,7.23498952 C10.5964766,7.83995533 10.096427,8.44658732 9.44375646,8.71173549 L9.44088221,8.71291244 C8.84513998,8.95877391 8.43090606,9.54464132 8.43090606,10.2290611 L8.43090606,11.2499979 L9.55590606,11.2499979 L9.55590606,10.2290611 C9.55590606,10.0105609 9.68563056,9.82947689 9.86890697,9.75330859 C10.7996507,9.37449753 11.7214766,8.43603122 11.7214766,7.23498952 C11.7214766,5.73014152 10.4981993,4.50686404 8.99335134,4.50686404 C7.48850334,4.50686404 6.26522613,5.73014152 6.26522613,7.23498952 Z M8.99341089,1.125 C4.64416847,1.125 1.1184082,4.65075517 1.1184082,8.99999785 C1.1184082,13.3492405 4.64416364,16.875 8.99340606,16.875 C13.3426487,16.875 16.8684082,13.3492448 16.8684082,9.00000268 C16.8684082,4.65075999 13.342653,1.125 8.99341089,1.125 Z M8.99341035,2.25 C5.26548851,2.24999879 2.24340928,5.27207628 2.2434082,8.99999839 C2.243407,12.7279208 5.26548421,15.7499989 8.99340659,15.75 C12.7213279,15.7500011 15.7434071,12.727924 15.7434082,9.00000215 C15.7434093,5.27208057 12.7213322,2.25000107 8.99341035,2.25 Z" id="Union" fill="#FFFFFF"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-right-menu.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-右侧展开</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1403, -19)">
+            <g id="icon-右侧展开" transform="translate(1403, 19)">
+                <rect id="app-(Background)" opacity="0" x="0" y="0" width="18" height="18"></rect>
+                <path d="M9.28125,5.34375 C9.28125,7.20771092 10.7922891,8.71875 12.65625,8.71875 C14.5202115,8.71875 16.03125,7.20771092 16.03125,5.34375 C16.03125,3.47978908 14.5202115,1.96875 12.65625,1.96875 C10.7922891,1.96875 9.28125,3.47978908 9.28125,5.34375 Z M12.65625,7.59375 C13.8988906,7.59375 14.90625,6.58639061 14.90625,5.34375 C14.90625,4.10110952 13.8988906,3.09375 12.65625,3.09375 C11.4136094,3.09375 10.40625,4.10110952 10.40625,5.34375 C10.40625,6.58639061 11.4136094,7.59375 12.65625,7.59375 Z M3.375,2.25 L7.3125,2.25 C7.93382031,2.25 8.4375,2.75367969 8.4375,3.375 L8.4375,7.3125 C8.4375,7.93382031 7.93382031,8.4375 7.3125,8.4375 L3.375,8.4375 C2.75367969,8.4375 2.25,7.93382031 2.25,7.3125 L2.25,3.375 C2.25,2.75367969 2.75367969,2.25 3.375,2.25 Z M7.3125,3.375 L7.3125,7.3125 L3.375,7.3125 L3.375,3.375 L7.3125,3.375 Z M3.375,9.5625 L7.3125,9.5625 C7.93382031,9.5625 8.4375,10.0661797 8.4375,10.6875 L8.4375,14.625 C8.4375,15.2463198 7.93382031,15.75 7.3125,15.75 L3.375,15.75 C2.75367969,15.75 2.25,15.2463198 2.25,14.625 L2.25,10.6875 C2.25,10.0661797 2.75367969,9.5625 3.375,9.5625 Z M7.3125,10.6875 L7.3125,14.625 L3.375,14.625 L3.375,10.6875 L7.3125,10.6875 Z M10.6875,9.5625 L14.625,9.5625 C15.2463198,9.5625 15.75,10.0661797 15.75,10.6875 L15.75,14.625 C15.75,15.2463198 15.2463198,15.75 14.625,15.75 L10.6875,15.75 C10.0661797,15.75 9.5625,15.2463198 9.5625,14.625 L9.5625,10.6875 C9.5625,10.0661797 10.0661797,9.5625 10.6875,9.5625 Z M10.6875,10.6875 L14.625,10.6875 L14.625,14.625 L10.6875,14.625 L10.6875,10.6875 Z" id="app" fill="#FFFFFF"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-times.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-时间段</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-822, -19)">
+            <g id="icon-时间段" transform="translate(822, 19)">
+                <rect id="time-(Background)" opacity="0" x="0" y="0" width="18" height="18"></rect>
+                <path d="M8.4375,9.43754017 L11.2502747,12.375 L12.0457706,11.579504 L9.5625,8.97155035 L9.5625,4.5 L8.4375,4.5 L8.4375,9.43754017 Z M9,16.875 C4.65075758,16.875 1.125,13.3492427 1.125,9 C1.125,4.65075758 4.65075758,1.125 9,1.125 C13.3492427,1.125 16.875,4.65075758 16.875,9 C16.875,13.3492427 13.3492427,16.875 9,16.875 Z M9,15.75 C5.27207789,15.75 2.25,12.7279218 2.25,9 C2.25,5.27207789 5.27207789,2.25 9,2.25 C12.7279218,2.25 15.75,5.27207789 15.75,9 C15.75,12.7279218 12.7279218,15.75 9,15.75 Z" id="time" fill="#FFFFFF"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-track-mode.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-模式</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-954, -19)">
+            <g id="icon-模式" transform="translate(954, 19)">
+                <rect id="app-(Background)" opacity="0" x="0" y="0" width="18" height="18"></rect>
+                <path d="M9.28125,5.34375 C9.28125,7.20771092 10.7922891,8.71875 12.65625,8.71875 C14.5202115,8.71875 16.03125,7.20771092 16.03125,5.34375 C16.03125,3.47978908 14.5202115,1.96875 12.65625,1.96875 C10.7922891,1.96875 9.28125,3.47978908 9.28125,5.34375 Z M12.65625,7.59375 C13.8988906,7.59375 14.90625,6.58639061 14.90625,5.34375 C14.90625,4.10110952 13.8988906,3.09375 12.65625,3.09375 C11.4136094,3.09375 10.40625,4.10110952 10.40625,5.34375 C10.40625,6.58639061 11.4136094,7.59375 12.65625,7.59375 Z M3.375,2.25 L7.3125,2.25 C7.93382031,2.25 8.4375,2.75367969 8.4375,3.375 L8.4375,7.3125 C8.4375,7.93382031 7.93382031,8.4375 7.3125,8.4375 L3.375,8.4375 C2.75367969,8.4375 2.25,7.93382031 2.25,7.3125 L2.25,3.375 C2.25,2.75367969 2.75367969,2.25 3.375,2.25 Z M7.3125,3.375 L7.3125,7.3125 L3.375,7.3125 L3.375,3.375 L7.3125,3.375 Z M3.375,9.5625 L7.3125,9.5625 C7.93382031,9.5625 8.4375,10.0661797 8.4375,10.6875 L8.4375,14.625 C8.4375,15.2463198 7.93382031,15.75 7.3125,15.75 L3.375,15.75 C2.75367969,15.75 2.25,15.2463198 2.25,14.625 L2.25,10.6875 C2.25,10.0661797 2.75367969,9.5625 3.375,9.5625 Z M7.3125,10.6875 L7.3125,14.625 L3.375,14.625 L3.375,10.6875 L7.3125,10.6875 Z M10.6875,9.5625 L14.625,9.5625 C15.2463198,9.5625 15.75,10.0661797 15.75,10.6875 L15.75,14.625 C15.75,15.2463198 15.2463198,15.75 14.625,15.75 L10.6875,15.75 C10.0661797,15.75 9.5625,15.2463198 9.5625,14.625 L9.5625,10.6875 C9.5625,10.0661797 10.0661797,9.5625 10.6875,9.5625 Z M10.6875,10.6875 L14.625,10.6875 L14.625,14.625 L10.6875,14.625 L10.6875,10.6875 Z" id="app" fill="#FFFFFF"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-user.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-用户名</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1204, -19)">
+            <g id="user-circle" transform="translate(1204, 19)">
+                <rect id="user-circle-(Background)" opacity="0" x="0" y="0" width="18" height="18"></rect>
+                <path d="M12.1274997,6.9975003 C12.1274997,5.27022958 10.7272707,3.87000006 9,3.87000006 C7.27272928,3.87000006 5.8725003,5.27022958 5.8725003,6.9975003 C5.8725003,8.72477049 7.27272928,10.125 9,10.125 C10.7272707,10.125 12.1274997,8.72477049 12.1274997,6.9975003 Z M11.0024997,6.9975003 C11.0024997,5.89154935 10.1059499,4.99500006 9,4.99500006 C7.89404958,4.99500006 6.9975003,5.89154989 6.9975003,6.9975003 C6.9975003,8.10345018 7.89404958,9 9,9 C10.1059499,9 11.0024997,8.10345018 11.0024997,6.9975003 Z M16.875,9 C16.875,4.65075758 13.3492427,1.125 9,1.125 C4.65075758,1.125 1.125,4.65075758 1.125,9 C1.125,13.3492427 4.65075758,16.875 9,16.875 C13.3492427,16.875 16.875,13.3492427 16.875,9 Z M15.75,9 C15.75,5.27207789 12.7279218,2.25 9,2.25 C5.27207789,2.25 2.25,5.27207789 2.25,9 C2.25,10.3833622 2.66614406,11.6695286 3.38007635,12.7401431 C5.09084049,11.7860674 6.99121428,11.25 8.99997264,11.25 C11.0087471,11.25 12.9091351,11.7860749 14.6199092,12.7401645 C15.3338499,11.6695458 15.75,10.3833718 15.75,9 Z M8.99997264,12.375 C7.25942659,12.375 5.60305819,12.8223131 4.09134051,13.6333358 C5.32198843,14.9366437 7.06600928,15.75 9,15.75 C10.9339811,15.75 12.6779941,14.9366523 13.908641,13.6333551 C12.3969147,12.8223206 10.7405316,12.375 8.99997264,12.375 Z" fill-opacity="0.9" fill="#FFFFFF"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 17 - 0
src/assets/icons/icon-上一页-无法选择.svg

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-上一页-无法选择</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-101, -772)">
+            <g id="icon-上一页-无法选择" transform="translate(101, 772)">
+                <g id="1.Base基础/1.Button按钮/按钮背景/1.Fill/Gray中性/Transparent/矩形" opacity="0">
+                    <rect id="按钮背景" x="0" y="0" width="32" height="32"></rect>
+                </g>
+                <g id="1.Base基础/3.Icon图标/操作/search" transform="translate(8, 8)">
+                    <polygon id="矩形" opacity="0" transform="translate(8, 8) scale(-1, -1) rotate(-90) translate(-8, -8)" points="16.0000003 3.49691106e-07 16.0000003 16.0000003 3.49691049e-07 16.0000003 3.49691049e-07 3.49691106e-07"></polygon>
+                    <polygon id="路径-4-(Stroke)" fill="#BFBFBF" transform="translate(7.7702, 8) scale(-1, -1) rotate(-90) translate(-7.7702, -8)" points="4.22981599 5.31059633 7.7701967 8.85097681 11.3105772 5.31059633 12.2298162 6.22983514 7.7701967 10.6894544 3.31057718 6.22983514"></polygon>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 17 - 0
src/assets/icons/icon-下一页.svg

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-下一页</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-280, -772)">
+            <g id="icon-下一页" transform="translate(280, 772)">
+                <g id="1.Base基础/1.Button按钮/按钮背景/1.Fill/Gray中性/Transparent/矩形" opacity="0">
+                    <rect id="按钮背景" x="0" y="0" width="32" height="32"></rect>
+                </g>
+                <g id="1.Base基础/3.Icon图标/操作/search" transform="translate(8, 8)">
+                    <polygon id="矩形" opacity="0" transform="translate(8, 8) scale(-1, -1) rotate(90) translate(-8, -8)" points="16.0000003 3.49691106e-07 16.0000003 16.0000003 3.49691106e-07 16.0000003 3.49691106e-07 3.49691106e-07"></polygon>
+                    <polygon id="路径-4-(Stroke)" fill="#262626" transform="translate(8.2298, 8) scale(-1, -1) rotate(90) translate(-8.2298, -8)" points="4.68942359 5.31054674 8.22980431 8.85092722 11.7701848 5.31054674 12.6894238 6.22978555 8.22980431 10.6894048 3.77018478 6.22978555"></polygon>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-下拉.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-下拉</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-56, -171)">
+            <g id="icon-下拉" transform="translate(56, 171)">
+                <polygon id="矩形" opacity="0" points="16 0 16 16 0 16 0 0"></polygon>
+                <polygon id="路径-4-(Stroke)" fill="#8C8C8C" points="4.45961356 5.54040527 7.99999428 9.08078575 11.5403748 5.54040527 12.4596138 6.45964408 7.99999428 10.9192634 3.54037476 6.45964408"></polygon>
+            </g>
+        </g>
+    </g>
+</svg>

+ 13 - 0
src/assets/icons/icon-全卷.svg

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-全卷</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-22, -66)">
+            <g id="root.list" transform="translate(22, 66)">
+                <rect id="root.list-(Background)" opacity="0" x="0" y="0" width="20" height="20"></rect>
+                <rect id="矩形" opacity="0" x="0" y="0" width="20" height="20"></rect>
+                <path d="M18.125,16.25 C18.125,16.9403563 17.5653553,17.5 16.875,17.5 L3.125,17.5 C2.43464403,17.5 1.875,16.9403563 1.875,16.25 L1.875,3.5 C1.875,2.94771525 2.32271525,2.5 2.875,2.5 L17.125,2.5 C17.6772847,2.5 18.125,2.94771525 18.125,3.5 L18.125,16.25 L18.125,16.25 Z M3.125,3.75 L3.125,16.25 L16.875,16.25 L16.875,3.75 L3.125,3.75 Z M5,5.625 L5,6.875 L15,6.875 L15,5.625 L5,5.625 Z M5,8.75 L5,10 L12.5,10 L12.5,8.75 L5,8.75 Z" id="root-list" fill-opacity="0.9" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-叉.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-叉</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1161, -341)">
+            <g id="icon-叉" transform="translate(1161, 341)">
+                <path d="M14,3 L14,11 C14,12.6568542 12.6568542,14 11,14 L3,14 C1.34314575,14 1.01453063e-16,12.6568542 0,11 L0,3 C-2.02906125e-16,1.34314575 1.34314575,2.02906125e-16 3,0 L11,0 C12.6568542,-3.04359188e-16 14,1.34314575 14,3 Z" id="矩形" opacity="0"></path>
+                <polygon id="Vector-(Stroke)" fill="#262626" points="3.50423908 4.30860642 4.30857304 3.50427246 6.99999833 6.19569796 9.69142342 3.50427246 10.4957576 4.30860642 7.80433208 7.00003171 10.4957576 9.69145679 9.69142342 10.495791 6.99999833 7.80436546 4.30857304 10.495791 3.50423908 9.69145679 6.19566458 7.00003171"></polygon>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-向上.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-向上</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1171, -300)">
+            <g id="icon-向上" transform="translate(1171, 300)">
+                <polygon id="矩形" opacity="0" transform="translate(7, 7) rotate(-180) translate(-7, -7)" points="14.0000007 5.24536643e-07 14.0000007 14.0000005 6.99382197e-07 14.0000005 6.99382197e-07 5.24536643e-07"></polygon>
+                <polygon id="路径-4-(Stroke)" fill="#262626" transform="translate(7, 6.7989) rotate(-180) translate(-7, -6.7989)" points="3.902172 4.44564553 7.00000513 7.54347845 10.097838 4.44564553 10.9021722 5.24997948 7.00000513 9.15214636 3.09783804 5.24997948"></polygon>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-向下.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-向下</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1351, -300)">
+            <g id="icon-向下" transform="translate(1358, 307) scale(1, -1) translate(-1358, -307)translate(1351, 300)">
+                <polygon id="矩形" opacity="0" transform="translate(7, 7) rotate(-180) translate(-7, -7)" points="14.0000007 5.24536636e-07 14.0000007 14.0000005 6.99382197e-07 14.0000005 6.99382197e-07 5.24536636e-07"></polygon>
+                <polygon id="路径-4-(Stroke)" fill="#262626" transform="translate(7, 6.7989) rotate(-180) translate(-7, -6.7989)" points="3.902172 4.44564553 7.00000513 7.54347845 10.097838 4.44564553 10.9021722 5.24997948 7.00000513 9.15214636 3.09783804 5.24997948"></polygon>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-圈取.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-圈取</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1201, -341)">
+            <g id="icon-圈取" transform="translate(1201, 341)">
+                <rect id="caret-right-small-(Background)" opacity="0" x="0" y="0" width="14" height="14"></rect>
+                <path d="M7,10.0625 C5.308625,10.0625 3.9375,8.691375 3.9375,7 C3.9375,5.308625 5.308625,3.9375 7,3.9375 C8.691375,3.9375 10.0625,5.308625 10.0625,7 C10.0625,8.691375 8.691375,10.0625 7,10.0625 Z M7,11.375 C9.416225,11.375 11.375,9.416225 11.375,7 C11.375,4.5837575 9.416225,2.625 7,2.625 C4.5837575,2.625 2.625,4.5837575 2.625,7 C2.625,9.416225 4.5837575,11.375 7,11.375 Z" id="round" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-实际大小.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-实际大小</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1398, -66)">
+            <g id="icon-实际大小" transform="translate(1398, 66)">
+                <rect id="refresh-(Background)" opacity="0" x="0" y="0" width="20" height="20"></rect>
+                <path d="M16.5667963,9.99835432 L17.7684665,9.99835432 C17.7684676,5.68454087 14.2904955,2.1875 10.0001973,2.1875 C7.20476925,2.1875 4.75420587,3.67214173 3.38588081,5.90001553 L3.38588066,3.30314882 L2.1875,3.30314882 L2.1875,7.31117201 C2.18749993,7.58731438 2.41135756,7.81117201 2.68749993,7.81117201 C2.68749996,7.81117201 2.68749998,7.81117201 2.6875,7.81117194 L6.67094857,7.81117141 L6.67094857,7.81117141 L6.67094857,6.60622239 L4.3630679,6.60622269 C5.51132694,4.67763171 7.60864824,3.38916878 10.0001973,3.3891695 C13.620646,3.3891705 16.5667974,6.34200245 16.5667963,9.99835432 Z M3.43359232,9.99828875 C3.43359132,13.6546409 6.37974262,16.6075325 10.0001931,16.6075337 C12.3917405,16.6075337 14.4890612,15.3190733 15.6373203,13.3904815 L13.3290517,13.3904815 L13.3290517,12.1855319 L17.3125,12.1855319 C17.5886424,12.1855319 17.8125,12.4093895 17.8125,12.6855319 L17.8125,16.6935551 L17.8125,16.6935551 L16.61412,16.6935551 L16.61412,14.0973198 C15.2457199,16.3248417 12.7953565,17.8092039 10.0001925,17.8092039 C5.7098943,17.8092039 2.23192039,14.3121037 2.23192278,9.99828875 L3.43359232,9.99828875 Z" id="refresh" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-对.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-对</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1121, -341)">
+            <g id="icon-对" transform="translate(1121, 341)">
+                <polygon id="Rectangle-4117" opacity="0" transform="translate(7, 7) rotate(-180) translate(-7, -7)" points="7.86805041e-07 4.37113885e-07 14.0000008 4.37113885e-07 14.0000008 14.0000004 7.86805041e-07 14.0000004"></polygon>
+                <polygon id="Rectangle-4403-(Stroke)" fill="#262626" points="11.0743037 3.23649737 11.8786379 4.04083138 5.62947488 10.2899924 1.72753269 6.38805169 2.53186654 5.58371752 5.62947488 8.68132493"></polygon>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-快捷键.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-快捷键</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-306, -66)">
+            <g id="icon-快捷键" transform="translate(306, 66)">
+                <rect id="矩形" x="0" y="0" width="20" height="20"></rect>
+                <path d="M17.4038462,3.75 C18.1473064,3.75 18.75,4.37182674 18.75,5.13888889 L18.75,14.8611111 C18.75,15.6281733 18.1473064,16.25 17.4038462,16.25 L2.59615385,16.25 C1.85269361,16.25 1.25,15.6281733 1.25,14.8611111 L1.25,5.13888889 C1.25,4.37182674 1.85269361,3.75 2.59615385,3.75 L17.4038462,3.75 Z M17.5,5 L2.5,5 L2.5,15 L17.5,15 L17.5,5 Z M13.125,11.875 L13.125,13.125 L6.875,13.125 L6.875,11.875 L13.125,11.875 Z M9.375,9.375 L9.375,10.625 L8.125,10.625 L8.125,9.375 L9.375,9.375 Z M6.875,9.375 L6.875,10.625 L5.625,10.625 L5.625,9.375 L6.875,9.375 Z M11.875,9.375 L11.875,10.625 L10.625,10.625 L10.625,9.375 L11.875,9.375 Z M14.375,9.375 L14.375,10.625 L13.125,10.625 L13.125,9.375 L14.375,9.375 Z M8.125,6.875 L8.125,8.125 L6.875,8.125 L6.875,6.875 L8.125,6.875 Z M5.625,6.875 L5.625,8.125 L4.375,8.125 L4.375,6.875 L5.625,6.875 Z M10.625,6.875 L10.625,8.125 L9.375,8.125 L9.375,6.875 L10.625,6.875 Z M13.125,6.875 L13.125,8.125 L11.875,8.125 L11.875,6.875 L13.125,6.875 Z M15.625,6.875 L15.625,8.125 L14.375,8.125 L14.375,6.875 L15.625,6.875 Z" id="形状结合" fill="#262626" fill-rule="nonzero"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-总数.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-总数</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1128, -150)">
+            <g id="icon-总数" transform="translate(1128, 150)">
+                <rect id="star-filled-(Background)" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M7.59285438,1.930845 C7.75791438,1.596385 8.23484438,1.596385 8.39991438,1.930845 L10.2005944,5.579395 L14.2269944,6.164465 C14.5960944,6.218095 14.7434944,6.671685 14.4763944,6.932025 L11.5627944,9.772015 L12.2505944,13.782105 C12.3136944,14.149805 11.9277944,14.430105 11.5976944,14.256505 L7.99638438,12.363205 L4.39505438,14.256505 C4.06492438,14.430105 3.67907438,14.149805 3.74212438,13.782105 L4.42992438,9.772015 L1.51638438,6.932025 C1.24930438,6.671685 1.39668438,6.218095 1.76578438,6.164465 L5.79218438,5.579395 L7.59285438,1.930845 Z" id="路径" fill="#FFBD2D"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 11 - 0
src/assets/icons/icon-拖动.svg

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-拖动</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1261, -300)" fill="#262626">
+            <g id="icon-拖动" transform="translate(1268, 307) rotate(-270) translate(-1268, -307)translate(1261, 300)">
+                <path d="M3.5,1.75 C3.5,2.23324913 3.89175087,2.625 4.375,2.625 C4.85824913,2.625 5.25,2.23324913 5.25,1.75 C5.25,1.26675087 4.85824913,0.875 4.375,0.875 C3.89175087,0.875 3.5,1.26675087 3.5,1.75 Z M8.75,1.75 C8.75,2.23324913 9.14175087,2.625 9.625,2.625 C10.1082491,2.625 10.5,2.23324913 10.5,1.75 C10.5,1.26675087 10.1082491,0.875 9.625,0.875 C9.14175087,0.875 8.75,1.26675087 8.75,1.75 Z M4.375,4.375 C4.85824913,4.375 5.25,4.76675087 5.25,5.25 C5.25,5.73324913 4.85824913,6.125 4.375,6.125 C3.89175087,6.125 3.5,5.73324913 3.5,5.25 C3.5,4.76675087 3.89175087,4.375 4.375,4.375 Z M8.75,5.25 C8.75,5.73324913 9.14175087,6.125 9.625,6.125 C10.1082491,6.125 10.5,5.73324913 10.5,5.25 C10.5,4.76675087 10.1082491,4.375 9.625,4.375 C9.14175087,4.375 8.75,4.76675087 8.75,5.25 Z M4.375,7.875 C4.85824913,7.875 5.25,8.26675045 5.25,8.75 C5.25,9.23324955 4.85824913,9.625 4.375,9.625 C3.89175087,9.625 3.5,9.23324955 3.5,8.75 C3.5,8.26675045 3.89175087,7.875 4.375,7.875 Z M3.5,12.25 C3.5,12.7332495 3.89175087,13.125 4.375,13.125 C4.85824913,13.125 5.25,12.7332495 5.25,12.25 C5.25,11.7667505 4.85824913,11.375 4.375,11.375 C3.89175087,11.375 3.5,11.7667505 3.5,12.25 Z M9.625,7.875 C10.1082491,7.875 10.5,8.26675045 10.5,8.75 C10.5,9.23324955 10.1082491,9.625 9.625,9.625 C9.14175087,9.625 8.75,9.23324955 8.75,8.75 C8.75,8.26675045 9.14175087,7.875 9.625,7.875 Z M8.75,12.25 C8.75,12.7332495 9.14175087,13.125 9.625,13.125 C10.1082491,13.125 10.5,12.7332495 10.5,12.25 C10.5,11.7667505 10.1082491,11.375 9.625,11.375 C9.14175087,11.375 8.75,11.7667505 8.75,12.25 Z" id="Union"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-放大.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-放大</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1222, -66)">
+            <g id="icon-放大" transform="translate(1222, 66)">
+                <rect id="zoom-in-(Background)" opacity="0" x="0" y="0" width="20" height="20"></rect>
+                <path d="M7.5,11.25 L8.75,11.25 L8.75,8.75 L11.25,8.75 L11.25,7.5 L8.75,7.5 L8.75,5 L7.5,5 L7.5,7.5 L5,7.5 L5,8.75 L7.5,8.75 L7.5,11.25 Z M8.14279675,14.0980291 C4.85377729,14.0980291 2.1875,11.4317662 2.1875,8.14276457 C2.1875,4.85376269 4.85377729,2.1875 8.14279675,2.1875 C11.4318162,2.1875 14.0980935,4.85376269 14.0980935,8.14276457 C14.0980935,9.56215262 13.6015236,10.865562 12.7726316,11.8887472 L17.1867585,16.3028502 L16.3028789,17.1867371 L11.8887401,12.7726233 C10.8655584,13.6014819 9.56216514,14.0980291 8.14279675,14.0980291 Z M8.14279675,12.8480291 C5.54412663,12.8480291 3.4375,10.7414043 3.4375,8.14276457 C3.4375,5.54412514 5.54412663,3.4375 8.14279675,3.4375 C10.7414669,3.4375 12.8480935,5.54412514 12.8480935,8.14276457 C12.8480935,10.7414043 10.7414669,12.8480291 8.14279675,12.8480291 Z" id="zoom-in" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 11 - 0
src/assets/icons/icon-文本.svg

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="20px" viewBox="0 0 16 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-文本</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" font-family="PingFangSC-Medium, PingFang SC" font-size="12" font-weight="400" line-spacing="20">
+        <g id="01-评卷" transform="translate(-1240, -338)" fill="#262626">
+            <text id="icon-文本">
+                <tspan x="1242" y="351">文</tspan>
+            </text>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-清除.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-清除</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1281, -341)">
+            <g id="icon-清除" transform="translate(1281, 341)">
+                <rect id="delete-(Background)" opacity="0" x="0" y="0" width="14" height="14"></rect>
+                <path d="M5.25,5.25 L6.125,5.25 L6.125,10.5 L5.25,10.5 L5.25,5.25 Z M7.875,10.5 L8.75,10.5 L8.75,5.25 L7.875,5.25 L7.875,10.5 Z M12.25,2.625 L12.25,3.5 L11.375,3.5 L11.375,12.25 C11.375,12.7332495 10.9832487,13.125 10.5,13.125 L3.5,13.125 C3.01675066,13.125 2.625,12.7332487 2.625,12.25 L2.625,3.5 L1.75,3.5 L1.75,2.625 L4.8125,2.625 L4.81249979,1.57500064 C4.81249979,1.18840141 5.12590066,0.875 5.51250017,0.875 L8.48749983,0.875 C8.87409914,0.875 9.1875,1.18840063 9.1875,1.57500011 L9.1875,2.625 L12.25,2.625 Z M5.6875,1.75000063 L8.31249958,1.75000031 L8.3125,2.625 L5.6875,2.625 L5.6875,1.75000063 Z M3.5,12.25 L10.5,12.25 L10.5,3.5 L3.5,3.5 L3.5,12.25 Z" id="delete" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-缩小.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-缩小</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1266, -66)">
+            <g id="icon-缩小" transform="translate(1266, 66)">
+                <rect id="zoom-out-(Background)" opacity="0" x="0" y="0" width="20" height="20"></rect>
+                <path d="M5,8.75 L5,7.5 L11.25,7.5 L11.25,8.75 L5,8.75 Z M8.14279675,14.0980291 C4.85377729,14.0980291 2.1875,11.4317662 2.1875,8.14276457 C2.1875,4.85376269 4.85377729,2.1875 8.14279675,2.1875 C11.4318162,2.1875 14.0980935,4.85376269 14.0980935,8.14276457 C14.0980935,9.56215262 13.6015236,10.865562 12.7726316,11.8887472 L17.1867585,16.3028502 L16.3028789,17.1867371 L11.8887401,12.7726233 C10.8655584,13.6014819 9.56216514,14.0980291 8.14279675,14.0980291 Z M8.14279675,12.8480291 C5.54412663,12.8480291 3.4375,10.7414043 3.4375,8.14276457 C3.4375,5.54412514 5.54412663,3.4375 8.14279675,3.4375 C10.7414669,3.4375 12.8480935,5.54412514 12.8480935,8.14276457 C12.8480935,10.7414043 10.7414669,12.8480291 8.14279675,12.8480291 Z" id="zoom-out" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-缩略图.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-缩略图</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-66, -66)">
+            <g id="icon-缩略图" transform="translate(66, 66)">
+                <rect id="image-(Background)" opacity="0" x="0" y="0" width="20" height="20"></rect>
+                <path d="M15,7.5 C15,6.11928821 13.8807118,5 12.5,5 C11.1192882,5 10,6.11928821 10,7.5 C10,8.88071179 11.1192882,10 12.5,10 C13.8807118,10 15,8.88071179 15,7.5 Z M13.75,7.5 C13.75,6.8096441 13.1903553,6.25 12.5,6.25 C11.8096441,6.25 11.25,6.8096441 11.25,7.5 C11.25,8.1903559 11.8096441,8.75 12.5,8.75 C13.1903553,8.75 13.75,8.1903559 13.75,7.5 Z M3.7499997,17.5 L16.25,17.5 C16.9403553,17.5 17.5,16.9403577 17.5,16.2500024 L17.5,3.75000194 C17.5,3.05964664 16.9403589,2.5 16.2500024,2.5 L3.75000194,2.5 C3.05964604,2.5 2.5,3.05964351 2.5,3.75 L2.5,16.25 C2.5,16.9403553 3.05964381,17.5 3.7499997,17.5 Z M3.75000015,16.25 L12.866118,16.2500012 L7.5,10.8838832 L3.7500003,14.6338832 L3.75000015,16.25 Z M7.5,9.11611676 L14.6338868,16.2500024 L16.25,16.2500024 L16.2500024,3.75000179 L3.75000179,3.75000015 L3.7500006,12.8661156 L7.5,9.11611676 Z" id="image" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-问题试卷.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-问题试卷</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-110, -66)">
+            <g id="icon-问题试卷" transform="translate(110, 66)">
+                <rect id="file-unknown-(Background)" opacity="0" x="0" y="0" width="20" height="20"></rect>
+                <path d="M10.9827,1.25 C11.3183625,1.25 11.639925,1.385 11.875,1.6246125 L16.417625,6.255 C16.646875,6.4887 16.775375,6.8030125 16.775375,7.1303875 L16.775375,9.375 L15.525375,9.375 L15.525375,7.5159375 L10.52545,7.5159375 L10.52545,2.5 L4.375,2.5 L4.375,17.5 L11.25,17.5 L11.25,18.75 L4.369175,18.75 C3.7750625,18.75 3.125,18.328375 3.125,17.597625 L3.125,2.4023875 C3.125,1.6715875 3.7750625,1.25 4.369175,1.25 L10.9827,1.25 Z M14.27525,17.25 C14.689375,17.25 15.02525,17.58575 15.02525,18 C15.02525,18.41425 14.689375,18.75 14.27525,18.75 C13.861,18.75 13.52525,18.41425 13.52525,18 C13.52525,17.58575 13.861,17.25 14.27525,17.25 Z M14.275375,10.5258125 C15.61375,10.5258125 16.775375,11.552225 16.775375,12.90275 C16.775375,13.98925 15.894875,14.789625 15.072375,15.102625 C14.952,15.149375 14.900375,15.243625 14.900375,15.324875 L14.900375,16.150875 L13.650375,16.150875 L13.650375,15.324875 C13.650375,14.675625 14.069875,14.1495 14.62375,13.935875 C15.17525,13.7265 15.525375,13.277 15.525375,12.90275 C15.525375,12.32115 15.00475,11.7758125 14.275375,11.7758125 C13.546,11.7758125 13.025375,12.32115 13.025375,12.90275 L11.77535,12.90275 C11.77535,11.552225 12.936875,10.5258125 14.275375,10.5258125 Z M11.77545,3.3080625 L11.77545,6.2659375 L14.67725,6.2659375 L11.77545,3.3080625 Z" id="形状结合" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-页面放大.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-页面放大</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1310, -66)">
+            <g id="icon-页面放大" transform="translate(1310, 66)">
+                <rect id="fullsreen-(Background)" opacity="0" x="0" y="0" width="20" height="20"></rect>
+                <path d="M4.37499993,8.7499994 L3.125,8.7499994 L3.125,3.625 C3.125,3.34885763 3.34885763,3.125 3.625,3.125 L8.7500006,3.125 L8.7500006,3.125 L8.7500006,4.37499993 L5.25887981,4.37499993 L9.19194281,8.30807626 L8.30805779,9.19195831 L4.37499993,5.25888711 L4.37499993,8.7499994 Z M15.625,11.25 L16.875,11.25 L16.875,16.375 C16.875,16.6511424 16.6511424,16.875 16.375,16.875 L11.25,16.875 L11.25,16.875 L11.2499994,15.625 L14.7411215,15.625 L10.8080572,11.6919154 L11.6919428,10.8080345 L15.625,14.7411108 L15.625,11.25 Z" id="fullsreen" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icons/icon-页面缩小.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-页面缩小</title>
+    <g id="页面-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="01-评卷" transform="translate(-1354, -66)">
+            <g id="icon-页面缩小" transform="translate(1364, 76) scale(1, -1) translate(-1364, -76)translate(1354, 66)">
+                <rect id="fullscreen-exit-(Background)" opacity="0" x="0" y="0" width="20" height="20"></rect>
+                <path d="M8.12504768,3.75004731 L9.37504768,3.75004724 L9.37504768,8.87504649 C9.37504763,9.15118885 9.15119004,9.37504646 8.87504768,9.37504654 L3.75004753,9.37504709 L3.75004753,9.37504709 L3.75004746,8.12504709 L7.24116445,8.12504649 L2.68310547,3.56698908 L3.56698863,2.68310547 L8.12504768,7.24116355 L8.12504768,3.75004731 Z M11.8750477,16.2500465 L10.6250477,16.2500465 L10.6250477,11.1250471 C10.6250477,10.8489047 10.8489053,10.6250471 11.1250477,10.6250471 L16.2500477,10.6250471 L16.2500477,10.6250471 L16.2500477,11.8750465 L12.7589309,11.8750465 L17.3169887,16.4331043 L16.4331055,17.3169875 L11.8750477,12.7589297 L11.8750477,16.2500465 Z" id="fullscreen-exit" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 19 - 19
src/devLoginParams.ts

@@ -9,17 +9,17 @@
 // export const markerId="419";
 
 /** 244 评卷员 */
-// export const LOGIN_CONFIG = {
-//   isAdmin: false,
-//   forceChange: true,
-//   loginName: "1-339-5-1",
-//   // loginName: "liuyang",
-//   password: "123456",
-//   examId: "1",
-//   markerId: "147",
-//   // markerId: "482",
-//   // markerId: "483",
-// };
+export const LOGIN_CONFIG = {
+  isAdmin: false,
+  forceChange: true,
+  loginName: "1-339-5-1",
+  // loginName: "liuyang",
+  password: "123456",
+  examId: "1",
+  markerId: "147",
+  // markerId: "482",
+  // markerId: "483",
+};
 // export const LOGIN_CONFIG = {
 //   isAdmin: false,
 //   forceChange: true,
@@ -67,14 +67,14 @@
 //   // markerId: "483",
 // };
 /** 224 管理员 */
-export const LOGIN_CONFIG = {
-  isAdmin: true,
-  forceChange: true,
-  loginName: "admin-test",
-  password: "123456",
-  examId: "1",
-  markerId: null,
-};
+// export const LOGIN_CONFIG = {
+//   isAdmin: true,
+//   forceChange: true,
+//   loginName: "admin-test",
+//   password: "123456",
+//   examId: "1",
+//   markerId: null,
+// };
 // export const LOGIN_CONFIG = {
 //   isAdmin: true,
 //   forceChange: true,

+ 1 - 6
src/features/mark/Mark.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="my-container">
+  <div class="mark">
     <mark-header :showTotalScore="store.isMultiMedia" />
     <div class="tw-flex tw-gap-1">
       <mark-history showSearch showOrder :getHistory="getHistoryTask" />
@@ -492,11 +492,6 @@ const saveTaskToServer = async () => {
 </style>
 
 <style scoped>
-.my-container {
-  width: 100%;
-  overflow: clip;
-}
-
 .status-spin {
   position: absolute;
   top: 0;

+ 267 - 365
src/features/mark/MarkHeader.vue

@@ -1,149 +1,123 @@
 <template>
-  <div
-    v-if="store.setting && store.setting.subject.name"
-    class="tw-flex tw-gap-2 tw-justify-between tw-items-center header-container"
-  >
-    <a-tooltip>
-      <template #title>回评</template>
-      <div
-        class="tw-flex tw-place-content-center tw-cursor-pointer tw-relative menu"
-        :class="[store.historyOpen && 'menu-toggled']"
-        @click="store.toggleHistory"
-      >
-        <span class="tw-inline-flex tw-place-content-center">
-          <img
-            src="./images/left-menu.svg"
-            :class="[store.historyOpen && 'svg-red']"
-          />
-        </span>
-        <div v-if="store.historyOpen" class="triangle"></div>
-      </div>
-    </a-tooltip>
-    <div style="max-width: 12%; margin-left: -20px">
-      <a
-        class="tw-text-white tw-block tw-overflow-ellipsis tw-overflow-hidden tw-whitespace-nowrap header-big-text"
-        :title="store.setting.subject.name"
-        href="/mark/subject-select"
-        @dragstart.prevent
-      >
-        {{
-          `${store.setting.subject.code ?? ""}-${
-            store.setting.subject.name ?? ""
-          }`
-        }}
-      </a>
-    </div>
-    <div class="tw-flex" style="margin: 0 -20px 0 -40px">
+  <div v-if="store.setting && store.setting.subject.name" class="mark-header">
+    <div class="mark-header-part">
       <a-tooltip>
-        <template #title>
-          问题卷{{ store.status.problemCount }}
-          <br />
-          待仲裁{{ store.status.arbitrateCount }}
-        </template>
-        <img
-          src="./images/problems.svg"
-          :class="questionMarkShouldChange && 'question-mark-animation'"
-          @mouseover="questionMarkShouldChange = false"
-        />
+        <template #title>回评</template>
+        <div
+          :class="['header-menu', { 'is-toggled': store.historyOpen }]"
+          @click="store.toggleHistory"
+        >
+          <img class="header-icon" src="@/assets/icons/icon-left-menu.svg" />
+        </div>
       </a-tooltip>
-    </div>
-    <!-- <div v-if="store.setting.statusValue === 'TRIAL'">试评</div> -->
-    <div class="tw-flex tw-gap-1">
-      <div style="min-width: 105px">
-        <span class="header-small-text">编号</span>
-        <span class="highlight-text">
-          {{ store.currentTask?.secretNumber ?? "-" }}
-        </span>
-      </div>
-      <div
-        v-if="
-          store.currentTask &&
-          store.currentTask.objectiveScore !== null &&
-          !!store.setting?.showObjectiveScore
-        "
-      >
-        <span class="header-small-text">客观分</span>
-        <span class="highlight-text">
-          {{ store.currentTask.objectiveScore }}
-        </span>
-      </div>
-      <div
-        v-if="
-          props.showTotalScore &&
-          store.currentTask &&
-          store.currentTask.objectiveScore !== null
-        "
-        style="margin-left: 0.5em"
-      >
-        <span class="header-small-text">成绩</span>
-        <span
-          class="highlight-text"
-          style="margin-left: 0.2em; margin-top: 0.1em"
+      <div class="header-subject">
+        <a
+          :title="store.setting.subject.name"
+          href="/mark/subject-select"
+          @dragstart.prevent
         >
           {{
-            parseFloat(
-              (
-                ((Math.max(store.currentTask.objectiveScore || 0, 0) * 100 +
-                  Math.max(store.currentTask.markResult?.markerScore || 0, 0) *
-                    100) |
-                  0) /
-                100
-              ).toFixed(2)
-            )
+            `${store.setting.subject.code ?? ""}-${
+              store.setting.subject.name ?? ""
+            }`
           }}
-        </span>
+        </a>
       </div>
-    </div>
-    <div
-      v-show="store.status.totalCount"
-      class="tw-flex tw-gap-2 tw-items-center"
-    >
-      <span style="display: inline-flex; height: 16px; min-width: 55px">
-        <span class="header-small-text">已评</span>
-        <transition-group name="count-animation" tag="span">
-          <span
-            :key="store.status.personCount || 0"
-            class="highlight-text"
-            style="display: block"
-          >
-            {{ store.status.personCount }}
+      <div class="header-programs">
+        <a-tooltip color="#fff">
+          <template #title>
+            问题卷{{ store.status.problemCount }}
+            <br />
+            待仲裁{{ store.status.arbitrateCount }}
+          </template>
+          <img
+            class="header-icon"
+            src="@/assets/icons/icon-problems.svg"
+            @mouseover="questionMarkShouldChange = false"
+          />
+        </a-tooltip>
+      </div>
+      <!-- <div v-if="store.setting.statusValue === 'TRIAL'">试评</div> -->
+      <div class="header-secret">
+        <div class="header-noun">
+          <span>编号:</span>
+          <span>
+            {{ store.currentTask?.secretNumber ?? "-" }}
           </span>
-        </transition-group>
-      </span>
-      <span v-if="store.setting.topCount">
-        <span class="header-small-text">分配</span>
-        <span class="highlight-text">{{ store.setting.topCount ?? "-" }}</span>
-      </span>
-      <span style="display: inline-flex; height: 16px; min-width: 55px">
-        <span class="header-small-text">未评</span>
-        <transition-group name="count-animation" tag="span">
-          <span
-            :key="todoCount || 0"
-            class="highlight-text"
-            style="display: block"
-          >
-            {{ todoCount }}
+        </div>
+        <div
+          v-if="
+            store.currentTask &&
+            store.currentTask.objectiveScore !== null &&
+            !!store.setting?.showObjectiveScore
+          "
+          class="header-noun"
+        >
+          <span>客观分:</span>
+          <span>
+            {{ store.currentTask.objectiveScore }}
           </span>
-        </transition-group>
-      </span>
-      <span style="display: inline-flex; height: 16px; min-width: 60px">
-        <span class="header-small-text">进度</span>
-        <transition-group name="count-animation" tag="span">
-          <span
-            :key="progress || '-'"
-            class="highlight-text"
-            style="display: block"
-          >
-            {{ progress }}%
+        </div>
+        <div
+          v-if="
+            props.showTotalScore &&
+            store.currentTask &&
+            store.currentTask.objectiveScore !== null
+          "
+          class="header-noun"
+        >
+          <span>成绩:</span>
+          <span>
+            {{
+              parseFloat(
+                (
+                  ((Math.max(store.currentTask.objectiveScore || 0, 0) * 100 +
+                    Math.max(
+                      store.currentTask.markResult?.markerScore || 0,
+                      0
+                    ) *
+                      100) |
+                    0) /
+                  100
+                ).toFixed(2)
+              )
+            }}
           </span>
-        </transition-group>
-      </span>
+        </div>
+      </div>
+      <div v-show="store.status.totalCount" class="header-total">
+        <span class="header-noun">
+          <span>已评:</span>
+          <transition-group name="count-animation" tag="span">
+            <span :key="store.status.personCount || 0">
+              {{ store.status.personCount }}
+            </span>
+          </transition-group>
+        </span>
+        <span v-if="store.setting.topCount" class="header-noun">
+          <span>分配:</span>
+          <span>{{ store.setting.topCount ?? "-" }}</span>
+        </span>
+        <span class="header-noun">
+          <span>未评:</span>
+          <transition-group name="count-animation" tag="span">
+            <span :key="todoCount || 0">
+              {{ todoCount }}
+            </span>
+          </transition-group>
+        </span>
+        <span class="header-noun">
+          <span>进度:</span>
+          <transition-group name="count-animation" tag="span">
+            <span :key="progress || '-'"> {{ progress }}% </span>
+          </transition-group>
+        </span>
+      </div>
     </div>
-    <div class="tw-flex tw-place-items-center">
+
+    <div class="mark-header-part">
       <a-tooltip>
         <template #title>
-          评卷时间段
-          <br />
           {{
             store.setting.startTime > 0
               ? $filters.datetimeFilter(store.setting.startTime)
@@ -156,15 +130,14 @@
               : "-"
           }}
         </template>
-        <img
-          src="./images/time.png"
-          style="width: 16px; height: 16px"
-          class="svg-red-hover"
-        />
+        <div class="header-text-btn">
+          <img
+            class="header-icon"
+            src="@/assets/icons/icon-times.svg"
+          />评卷时间段
+        </div>
       </a-tooltip>
-    </div>
-    <div class="tw-flex">
-      <a-dropdown class="header-bg-color">
+      <a-dropdown>
         <template v-if="!store.setting.forceMode" #overlay>
           <a-menu>
             <a-menu-item key="1" @click="toggleSettingMode">
@@ -172,200 +145,170 @@
             </a-menu-item>
           </a-menu>
         </template>
-        <a-button
-          style="
-            color: rgba(255, 255, 255, 0.5);
-            border: none;
-            display: flex;
-            align-items: center;
-          "
-        >
-          <img
-            src="./images/trackmode.png"
-            style="
-              width: 11px;
-              height: 12px;
-              display: inline;
-              margin-right: 2px;
-            "
-          />
+
+        <div class="header-text-btn">
+          <img src="@/assets/icons/icon-track-mode.svg" class="header-icon" />
           {{ modeName }}
-          <div v-if="!store.setting.forceMode" class="dropdown-triangle"></div>
-        </a-button>
+          <CaretDownOutlined v-if="!store.setting.forceMode" class="a-icon" />
+        </div>
       </a-dropdown>
-    </div>
-    <a-popover
-      v-if="!store.isScanImage"
-      title="小助手"
-      trigger="hover"
-      class="tw-cursor-pointer"
-    >
-      <template #content>
-        <table class="assistant-table">
-          <tr v-if="store.setting.statusValue !== 'TRIAL'">
-            <td>问题卷</td>
-            <td>
-              <a-button @click="openProblemModal">选择问题类型</a-button>
-            </td>
-          </tr>
-        </table>
-      </template>
-      <div class="tw-flex tw-items-center">
-        <img
-          src="./images/assistant.png"
-          style="width: 10px; height: 12px; margin-right: 2px"
-        />
-        <span>小助手</span>
-        <div class="dropdown-triangle"></div>
-      </div>
-    </a-popover>
-    <a-popover
-      v-if="store.isScanImage"
-      trigger="hover"
-      class="tw-cursor-pointer"
-    >
-      <template #content>
-        <table class="assistant-table">
-          <tr v-if="store.setting.subject.paperUrl">
-            <td>试卷</td>
-            <td>
-              <a-switch
-                v-model:checked="store.setting.uiSetting['paper.modal']"
-              />
-            </td>
-          </tr>
-          <tr v-if="store.setting.subject.answerUrl">
-            <td>答案</td>
-            <td>
-              <a-switch
-                v-model:checked="store.setting.uiSetting['answer.modal']"
-              />
-            </td>
-          </tr>
-          <tr>
-            <td>全卷</td>
-            <td>
-              <a-switch v-model:checked="store.allPaperModal" />
-            </td>
-          </tr>
-          <tr v-if="store.setting.sheetView">
-            <td>原图</td>
-            <td>
-              <a-switch v-model:checked="store.sheetViewModal" />
-            </td>
-          </tr>
-          <tr>
-            <td>缩略图</td>
-            <td>
-              <a-switch
-                v-model:checked="store.setting.uiSetting['minimap.modal']"
-              />
-            </td>
-          </tr>
-          <tr>
-            <td>特殊标记</td>
-            <td>
-              <a-switch
-                v-model:checked="store.setting.uiSetting['specialTag.modal']"
-              />
-            </td>
-          </tr>
-          <tr v-if="store.setting.statusValue !== 'TRIAL'">
-            <td>问题卷</td>
-            <td>
-              <a-button
-                type="text"
-                style="
-                  color: var(--app-primary-button-bg-color);
-                  margin-right: -15px;
-                  height: 25px;
-                "
-                @click="openProblemModal"
-              >
-                选择问题类型
-              </a-button>
-            </td>
-          </tr>
-          <tr v-if="store.isScanImage">
-            <td>分数/标记大小</td>
-            <td>
-              <a-slider
-                v-model:value="store.setting.uiSetting['score.fontSize.scale']"
-                :min="0.5"
-                :step="0.1"
-                :max="2"
-                style="margin: 0"
-              />
-            </td>
-          </tr>
-          <tr v-if="store.isScanImage">
-            <td>快捷键</td>
-            <td>
-              <a-switch
-                v-model:checked="store.setting.uiSetting['shortCut.modal']"
-              />
-            </td>
-          </tr>
-        </table>
-      </template>
-      <div class="tw-flex tw-items-center assistant-text">
-        <img
-          src="./images/assistant.png"
-          style="width: 10px; height: 12px; margin-right: 2px"
-        />
-        <span>小助手</span>
-        <div class="dropdown-triangle"></div>
-      </div>
-    </a-popover>
-    <div
-      class="tw-flex tw-place-content-center tw-cursor-pointer tw-items-center"
-      style="max-width: 8%"
-      :title="store.setting.groupTitle + '-' + store.setting.groupNumber"
-      @click="openSwitchGroupModal"
-    >
-      <img
-        src="./images/group.png"
-        style="width: 10px; height: 12px; margin-right: 2px"
-      />
-      <div class="tw-overflow-ellipsis tw-overflow-hidden tw-whitespace-nowrap">
-        {{ "分组:" + store.setting.groupNumber }}
-      </div>
-      <div v-if="store.groups.length > 1" class="dropdown-triangle"></div>
-    </div>
-    <div class="tw-flex tw-gap-4">
-      <div
-        class="tw-flex tw-place-items-center tw-cursor-pointer"
-        @click="openProfileModal"
+      <!-- 
+      <a-popover
+        v-if="!store.isScanImage"
+        title="小助手"
+        trigger="hover"
+        class="tw-cursor-pointer"
       >
-        <!-- <UserOutlined /> -->
-        {{ store.setting.userName }}
-      </div>
+        <template #content>
+          <table class="assistant-table">
+            <tr v-if="store.setting.statusValue !== 'TRIAL'">
+              <td>问题卷</td>
+              <td>
+                <a-button @click="openProblemModal">选择问题类型</a-button>
+              </td>
+            </tr>
+          </table>
+        </template>
+        <div class="header-text-btn">
+          <img
+            src="./images/assistant.png"
+            style="width: 10px; height: 12px; margin-right: 2px"
+          />
+          <span>小助手</span>
+          <div class="dropdown-triangle"></div>
+        </div>
+      </a-popover>
+      <a-popover
+        v-if="store.isScanImage"
+        trigger="hover"
+        class="tw-cursor-pointer"
+      >
+        <template #content>
+          <table class="assistant-table">
+            <tr v-if="store.setting.subject.paperUrl">
+              <td>试卷</td>
+              <td>
+                <a-switch
+                  v-model:checked="store.setting.uiSetting['paper.modal']"
+                />
+              </td>
+            </tr>
+            <tr v-if="store.setting.subject.answerUrl">
+              <td>答案</td>
+              <td>
+                <a-switch
+                  v-model:checked="store.setting.uiSetting['answer.modal']"
+                />
+              </td>
+            </tr>
+            <tr>
+              <td>全卷</td>
+              <td>
+                <a-switch v-model:checked="store.allPaperModal" />
+              </td>
+            </tr>
+            <tr v-if="store.setting.sheetView">
+              <td>原图</td>
+              <td>
+                <a-switch v-model:checked="store.sheetViewModal" />
+              </td>
+            </tr>
+            <tr>
+              <td>缩略图</td>
+              <td>
+                <a-switch
+                  v-model:checked="store.setting.uiSetting['minimap.modal']"
+                />
+              </td>
+            </tr>
+            <tr>
+              <td>特殊标记</td>
+              <td>
+                <a-switch
+                  v-model:checked="store.setting.uiSetting['specialTag.modal']"
+                />
+              </td>
+            </tr>
+            <tr v-if="store.setting.statusValue !== 'TRIAL'">
+              <td>问题卷</td>
+              <td>
+                <a-button
+                  type="text"
+                  style="
+                    color: var(--app-primary-button-bg-color);
+                    margin-right: -15px;
+                    height: 25px;
+                  "
+                  @click="openProblemModal"
+                >
+                  选择问题类型
+                </a-button>
+              </td>
+            </tr>
+            <tr v-if="store.isScanImage">
+              <td>分数/标记大小</td>
+              <td>
+                <a-slider
+                  v-model:value="
+                    store.setting.uiSetting['score.fontSize.scale']
+                  "
+                  :min="0.5"
+                  :step="0.1"
+                  :max="2"
+                  style="margin: 0"
+                />
+              </td>
+            </tr>
+            <tr v-if="store.isScanImage">
+              <td>快捷键</td>
+              <td>
+                <a-switch
+                  v-model:checked="store.setting.uiSetting['shortCut.modal']"
+                />
+              </td>
+            </tr>
+          </table>
+        </template>
+        <div class="tw-flex tw-items-center assistant-text">
+          <img
+            src="./images/assistant.png"
+            style="width: 10px; height: 12px; margin-right: 2px"
+          />
+          <span>小助手</span>
+          <div class="dropdown-triangle"></div>
+        </div>
+      </a-popover>
+      -->
       <div
-        class="tw-flex tw-place-items-center tw-cursor-pointer"
-        @click="logout"
+        class="header-text-btn"
+        :title="store.setting.groupTitle + '-' + store.setting.groupNumber"
+        @click="openSwitchGroupModal"
       >
-        <!-- <PoweroffOutlined /> -->
-        退出
+        <img class="header-icon" src="@/assets/icons/icon-group.svg" />{{
+          "分组:" + store.setting.groupNumber
+        }}
+        <CaretDownOutlined v-if="store.groups.length > 1" class="a-icon" />
       </div>
-      <a-tooltip placement="bottomRight" :overlayStyle="{ width: '58px' }">
+
+      <div class="header-text-btn" @click="openProfileModal">
+        <img class="header-icon" src="@/assets/icons/icon-user.svg" />{{
+          store.setting.userName
+        }}
+      </div>
+      <div class="header-text-btn header-logout" @click="logout">
+        <img class="header-icon" src="@/assets/icons/icon-back.svg" />返回
+      </div>
+
+      <a-tooltip placement="bottomRight">
         <template #title>弹出给分板</template>
         <div
-          class="tw-flex tw-place-content-center tw-cursor-pointer menu"
           :class="[
-            store.isScoreBoardVisible && store.currentTask && 'menu-toggled',
+            'header-menu',
+            { 'is-toggled': store.isScoreBoardVisible && store.currentTask },
           ]"
           @click="store.toggleScoreBoard"
         >
-          <span class="tw-inline-flex tw-place-content-center tw-relative">
-            <img
-              src="./images/right-menu.svg"
-              :class="[store.isScoreBoardVisible && 'svg-red']"
-            />
-          </span>
-          <div
-            v-if="store.isScoreBoardVisible && store.currentTask"
-            class="triangle"
-          ></div>
+          <img src="@/assets/icons/icon-right-menu.svg" class="header-icon" />
         </div>
       </a-tooltip>
     </div>
@@ -384,6 +327,7 @@ import MarkSwitchGroupDialog from "./MarkSwitchGroupDialog.vue";
 import MarkProblemDialog from "./MarkProblemDialog.vue";
 import { isNumber } from "lodash-es";
 import { Modal } from "ant-design-vue";
+import { CaretDownOutlined, CaretUpOutlined } from "@ant-design/icons-vue";
 
 const props = defineProps<{ showTotalScore?: boolean }>();
 
@@ -487,48 +431,6 @@ watch(
   background-color: var(--header-bg-color);
 }
 
-.header-container {
-  position: relative;
-  height: 56px;
-  line-height: 16px;
-
-  background-color: var(--header-bg-color);
-  color: rgba(255, 255, 255, 0.5);
-}
-
-.menu {
-  width: 56px;
-  height: 56px;
-  padding: 20px;
-}
-
-.menu:hover,
-.menu-toggled {
-  background-color: rgba(255, 255, 255, 0.2);
-}
-
-.header-container span {
-  vertical-align: middle;
-}
-
-.header-big-text {
-  font-size: 20px;
-  line-height: 30px;
-}
-
-.header-small-text {
-  font-size: var(--app-secondary-font-size);
-}
-
-.highlight-text {
-  color: white;
-  font-size: var(--app-title-font-size);
-}
-
-.header-bg-color.ant-btn:hover {
-  background-color: var(--app-ant-select-bg-override-color) !important;
-}
-
 .assistant-table {
   z-index: 5500;
   border-collapse: separate;

+ 1 - 0
src/main.ts

@@ -6,6 +6,7 @@ if (!validUA) {
   location.href = "about:blank";
 }
 import "./styles/global.css";
+import "./styles/page.less";
 import { createApp } from "vue";
 import { createPinia } from "pinia";
 import { initMarkStore } from "@/store/store";

+ 1 - 1
src/router/index.ts

@@ -2,7 +2,7 @@ import { createRouter, createWebHistory } from "vue-router";
 import Mark from "@/features/mark/Mark.vue";
 
 const routes = [
-  { path: "/", component: Mark },
+  { path: "/", redirect: { name: "Mark" } },
   { path: "/mark", component: Mark, name: "Mark" },
   {
     // 整卷批量复核

+ 125 - 0
src/styles/page.less

@@ -0,0 +1,125 @@
+// mark
+.mark {
+  width: 100%;
+  overflow: clip;
+
+  .header-icon {
+    opacity: 0.5;
+    cursor: pointer;
+
+    &:hover {
+      opacity: 0.8;
+    }
+  }
+
+  .mark-header {
+    position: relative;
+    height: 56px;
+    line-height: 20px;
+    background-color: var(--header-bg-color);
+    color: rgba(255, 255, 255, 0.5);
+
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+
+    &-part {
+      &:first-child {
+        flex-grow: 2;
+        display: flex;
+        justify-content: left;
+        align-items: center;
+      }
+      &:last-child {
+        flex-grow: 0;
+        flex-shrink: 0;
+
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+      }
+    }
+  }
+  .header-menu {
+    width: 56px;
+    padding: 19px;
+    cursor: pointer;
+
+    &:hover,
+    &.is-toggled {
+      background-color: rgba(62, 64, 87, 1);
+
+      .header-icon {
+        opacity: 0.8;
+      }
+    }
+  }
+  .header-subject {
+    min-width: 160px;
+    max-width: 300px;
+    height: 18px;
+    line-height: 18px;
+    font-size: 14px;
+
+    > a {
+      display: block;
+      color: #fff;
+      overflow: hidden;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      text-align: center;
+
+      &:hover {
+        color: var(--app-primary-button-bg-color);
+      }
+    }
+  }
+  .header-programs {
+    padding: 0 24px 0 16px;
+    border-right: 1px solid #8c8d9b;
+  }
+  .header-secret {
+    padding: 0 12px;
+    border-right: 1px solid #8c8d9b;
+  }
+  .header-total {
+    padding: 0 12px;
+  }
+  .header-noun {
+    display: inline-block;
+    vertical-align: middle;
+    padding: 0 12px;
+    color: #fff;
+    > span:first-child {
+      color: #8c8d9b;
+    }
+  }
+  .header-text-btn {
+    height: 32px;
+    line-height: 32px;
+    border-radius: 4px;
+    padding: 0 16px;
+    color: #fff;
+    cursor: pointer;
+
+    &:hover {
+      background: #3e4057;
+    }
+
+    .header-icon {
+      display: inline;
+      margin-right: 5px;
+      margin-top: -2px;
+      opacity: 0.8;
+    }
+    .a-icon {
+      font-size: 12px;
+      vertical-align: 1px;
+    }
+  }
+  .header-logout {
+    &:hover {
+      background: transparent;
+    }
+  }
+}

+ 4 - 3
vite.config.ts

@@ -1,10 +1,11 @@
-import { defineConfig, normalizePath, Plugin } from "vite";
+import { defineConfig, normalizePath, Plugin, loadEnv } from "vite";
 import vue from "@vitejs/plugin-vue";
 import ViteComponents from "unplugin-vue-components/vite";
 import { AntDesignVueResolver } from "unplugin-vue-components/resolvers";
 
-const SERVER_URL = "http://192.168.10.224";
-// const SERVER_URL = "http://192.168.11.103:8090";
+const viteEnv = loadEnv("development", process.cwd());
+const SERVER_URL = viteEnv.VITE_APP_PROXY_URL;
+console.log("SERVER_URL:", SERVER_URL);
 
 const path = require("path");