zhangjie 5 өдөр өмнө
parent
commit
98096aac54
72 өөрчлөгдсөн 2854 нэмэгдсэн , 329 устгасан
  1. 3 7
      config/vite.config.base.ts
  2. 3 3
      package.json
  3. 197 109
      pnpm-lock.yaml
  4. BIN
      src/assets/images/bg-arrow.png
  5. BIN
      src/assets/images/bg-guide.png
  6. BIN
      src/assets/images/login-back.png
  7. BIN
      src/assets/images/login-theme.png
  8. 3 1
      src/assets/style/base.scss
  9. 0 0
      src/assets/style/element-custom.scss
  10. 1655 0
      src/assets/style/element-var.scss
  11. 12 0
      src/assets/style/element.scss
  12. 0 0
      src/assets/style/home.scss
  13. 0 6
      src/assets/style/index.less
  14. 6 0
      src/assets/style/index.scss
  15. 26 30
      src/assets/style/pages.scss
  16. 0 0
      src/assets/style/reset.scss
  17. 0 90
      src/assets/style/var.less
  18. 49 0
      src/assets/style/var.scss
  19. 5 0
      src/assets/svgs/icon-ai.svg
  20. 12 0
      src/assets/svgs/icon-arrow-right.svg
  21. 17 0
      src/assets/svgs/icon-arrow.svg
  22. 12 0
      src/assets/svgs/icon-data-check.svg
  23. 12 0
      src/assets/svgs/icon-exam-manage.svg
  24. 6 6
      src/assets/svgs/icon-home.svg
  25. 8 0
      src/assets/svgs/icon-init.svg
  26. 12 0
      src/assets/svgs/icon-issue.svg
  27. 12 0
      src/assets/svgs/icon-jump.svg
  28. 12 0
      src/assets/svgs/icon-log.svg
  29. 7 0
      src/assets/svgs/icon-logo.svg
  30. 3 3
      src/assets/svgs/icon-logout.svg
  31. 7 0
      src/assets/svgs/icon-mark-manage-s.svg
  32. 7 0
      src/assets/svgs/icon-mark-manage.svg
  33. 12 0
      src/assets/svgs/icon-menu.svg
  34. 12 0
      src/assets/svgs/icon-notice.svg
  35. 12 0
      src/assets/svgs/icon-reject-manage.svg
  36. 12 0
      src/assets/svgs/icon-review-s.svg
  37. 12 0
      src/assets/svgs/icon-scan-progress.svg
  38. 15 0
      src/assets/svgs/icon-score-export-s.svg
  39. 12 0
      src/assets/svgs/icon-score-query.svg
  40. 12 0
      src/assets/svgs/icon-score-review.svg
  41. 14 0
      src/assets/svgs/icon-score-view-s.svg
  42. 35 0
      src/assets/svgs/icon-score.svg
  43. 7 0
      src/assets/svgs/icon-setting.svg
  44. 12 0
      src/assets/svgs/icon-student-manage.svg
  45. 12 0
      src/assets/svgs/icon-subject-analysis.svg
  46. 12 0
      src/assets/svgs/icon-subject-manage.svg
  47. 12 0
      src/assets/svgs/icon-user-manage.svg
  48. 3 7
      src/assets/svgs/icon-user.svg
  49. 12 0
      src/assets/svgs/icon-view.svg
  50. 14 0
      src/assets/svgs/icon-warning.svg
  51. 1 1
      src/components/chart/index.vue
  52. 1 1
      src/components/file-upload/index.vue
  53. 1 1
      src/components/import-dialog/index.vue
  54. 4 3
      src/components/select-exam/index.vue
  55. 78 20
      src/components/svg-icon/index.vue
  56. 1 1
      src/components/upload-button/index.vue
  57. 1 1
      src/layout/default-layout.vue
  58. 2 2
      src/main.ts
  59. 10 0
      src/router/routes/modules/base.ts
  60. 3 3
      src/router/routes/modules/login.ts
  61. 380 0
      src/views/HomeGuide.vue
  62. 1 1
      src/views/admin/auth-manage/AuthManage.vue
  63. 1 1
      src/views/admin/school-manage/SchoolManage.vue
  64. 15 5
      src/views/login/ResetInfo.vue
  65. 0 0
      src/views/login/ResetPwd.vue
  66. 16 5
      src/views/login/SwitchExam.vue
  67. 13 15
      src/views/login/home.vue
  68. 4 3
      src/views/login/login.vue
  69. 1 1
      src/views/mark/MarkProgress.vue
  70. 1 1
      src/views/mark/ScoreCurve.vue
  71. 1 1
      src/views/review/ScoreReviewStatistics.vue
  72. 1 1
      src/views/system/not-found/index.vue

+ 3 - 7
config/vite.config.base.ts

@@ -41,13 +41,9 @@ export default defineConfig({
   },
   css: {
     preprocessorOptions: {
-      less: {
-        modifyVars: {
-          hack: `true; @import (reference) "${resolve(
-            'src/assets/style/var.less'
-          )}";`,
-        },
-        javascriptEnabled: true,
+      scss: {
+        api: 'modern-compiler',
+        additionalData: `@use "@/assets/style/var.scss" as *;`,
       },
     },
   },

+ 3 - 3
package.json

@@ -23,7 +23,7 @@
       "prettier --write",
       "eslint --fix"
     ],
-    "*.{less,css}": [
+    "*.{scss,css}": [
       "prettier --write"
     ]
   },
@@ -69,13 +69,13 @@
     "eslint-plugin-prettier": "^4.2.1",
     "eslint-plugin-vue": "^9.6.0",
     "husky": "^9.1.7",
-    "less": "^4.1.3",
     "lint-staged": "^13.0.3",
     "mockjs": "^1.1.0",
     "postcss-html": "^1.5.0",
     "prettier": "^2.7.1",
     "rollup": "^3.9.1",
     "rollup-plugin-visualizer": "^5.8.2",
+    "sass": "^1.89.2",
     "typescript": "^4.8.4",
     "unplugin-auto-import": "^19.3.0",
     "unplugin-vue-components": "^0.24.1",
@@ -94,4 +94,4 @@
     "rollup": "^2.56.3",
     "gifsicle": "5.2.0"
   }
-}
+}

+ 197 - 109
pnpm-lock.yaml

@@ -35,7 +35,6 @@ specifiers:
   eslint-plugin-vue: ^9.6.0
   husky: ^9.1.7
   js-md5: ^0.8.3
-  less: ^4.1.3
   lint-staged: ^13.0.3
   lodash: ^4.17.21
   mitt: ^3.0.0
@@ -48,6 +47,7 @@ specifiers:
   query-string: ^8.0.3
   rollup: ^2.56.3
   rollup-plugin-visualizer: ^5.8.2
+  sass: ^1.89.2
   typescript: ^4.8.4
   unplugin-auto-import: ^19.3.0
   unplugin-vue-components: ^0.24.1
@@ -104,17 +104,17 @@ devDependencies:
   eslint-plugin-prettier: 4.2.1_l5k3x6vt4o46v5v3huajal7yxq
   eslint-plugin-vue: 9.33.0_eslint@8.57.1
   husky: 9.1.7
-  less: 4.3.0
   lint-staged: 13.3.0
   mockjs: 1.1.0
   postcss-html: 1.8.0
   prettier: 2.8.8
   rollup: 2.79.2
   rollup-plugin-visualizer: 5.14.0_rollup@2.79.2
+  sass: 1.89.2
   typescript: 4.9.5
   unplugin-auto-import: 19.3.0_@vueuse+core@9.13.0
   unplugin-vue-components: 0.24.1_rollup@2.79.2+vue@3.5.16
-  vite: 3.2.11_less@4.3.0
+  vite: 3.2.11_sass@1.89.2
   vite-plugin-compression: 0.5.1_vite@3.2.11
   vite-plugin-eslint: 1.8.1_eslint@8.57.1+vite@3.2.11
   vite-plugin-imagemin: 0.6.1_vite@3.2.11
@@ -525,6 +525,155 @@ packages:
     engines: {node: '>=12.4.0'}
     dev: true
 
+  /@parcel/watcher-android-arm64/2.5.1:
+    resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-darwin-arm64/2.5.1:
+    resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-darwin-x64/2.5.1:
+    resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-freebsd-x64/2.5.1:
+    resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-linux-arm-glibc/2.5.1:
+    resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm]
+    os: [linux]
+    libc: [glibc]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-linux-arm-musl/2.5.1:
+    resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm]
+    os: [linux]
+    libc: [musl]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-linux-arm64-glibc/2.5.1:
+    resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [linux]
+    libc: [glibc]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-linux-arm64-musl/2.5.1:
+    resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [linux]
+    libc: [musl]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-linux-x64-glibc/2.5.1:
+    resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [linux]
+    libc: [glibc]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-linux-x64-musl/2.5.1:
+    resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [linux]
+    libc: [musl]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-win32-arm64/2.5.1:
+    resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-win32-ia32/2.5.1:
+    resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-win32-x64/2.5.1:
+    resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher/2.5.1:
+    resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
+    engines: {node: '>= 10.0.0'}
+    requiresBuild: true
+    dependencies:
+      detect-libc: 1.0.3
+      is-glob: 4.0.3
+      micromatch: 4.0.8
+      node-addon-api: 7.1.1
+    optionalDependencies:
+      '@parcel/watcher-android-arm64': 2.5.1
+      '@parcel/watcher-darwin-arm64': 2.5.1
+      '@parcel/watcher-darwin-x64': 2.5.1
+      '@parcel/watcher-freebsd-x64': 2.5.1
+      '@parcel/watcher-linux-arm-glibc': 2.5.1
+      '@parcel/watcher-linux-arm-musl': 2.5.1
+      '@parcel/watcher-linux-arm64-glibc': 2.5.1
+      '@parcel/watcher-linux-arm64-musl': 2.5.1
+      '@parcel/watcher-linux-x64-glibc': 2.5.1
+      '@parcel/watcher-linux-x64-musl': 2.5.1
+      '@parcel/watcher-win32-arm64': 2.5.1
+      '@parcel/watcher-win32-ia32': 2.5.1
+      '@parcel/watcher-win32-x64': 2.5.1
+    dev: true
+    optional: true
+
   /@rollup/plugin-inject/5.0.5_rollup@2.79.2:
     resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==}
     engines: {node: '>=14.0.0'}
@@ -1035,7 +1184,7 @@ packages:
       vite: ^3.0.0
       vue: ^3.2.25
     dependencies:
-      vite: 3.2.11_less@4.3.0
+      vite: 3.2.11_sass@1.89.2
       vue: 3.5.16_typescript@4.9.5
     dev: true
 
@@ -1651,6 +1800,13 @@ packages:
       fsevents: 2.3.3
     dev: true
 
+  /chokidar/4.0.3:
+    resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+    engines: {node: '>= 14.16.0'}
+    dependencies:
+      readdirp: 4.1.2
+    dev: true
+
   /cli-cursor/4.0.0:
     resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -1796,12 +1952,6 @@ packages:
       split2: 3.2.2
     dev: true
 
-  /copy-anything/2.0.6:
-    resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
-    dependencies:
-      is-what: 3.14.1
-    dev: true
-
   /core-util-is/1.0.3:
     resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
     dev: true
@@ -2127,6 +2277,13 @@ packages:
     engines: {node: '>=0.4.0'}
     dev: false
 
+  /detect-libc/1.0.3:
+    resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
+    engines: {node: '>=0.10'}
+    hasBin: true
+    dev: true
+    optional: true
+
   /diff/4.0.2:
     resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
     engines: {node: '>=0.3.1'}
@@ -2315,15 +2472,6 @@ packages:
     resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
     engines: {node: '>=0.12'}
 
-  /errno/0.1.8:
-    resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
-    hasBin: true
-    requiresBuild: true
-    dependencies:
-      prr: 1.0.1
-    dev: true
-    optional: true
-
   /error-ex/1.3.2:
     resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
     dependencies:
@@ -3886,14 +4034,6 @@ packages:
     hasBin: true
     dev: true
 
-  /iconv-lite/0.6.3:
-    resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
-    engines: {node: '>=0.10.0'}
-    dependencies:
-      safer-buffer: 2.1.2
-    dev: true
-    optional: true
-
   /ieee754/1.2.1:
     resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
     dev: true
@@ -3903,14 +4043,6 @@ packages:
     engines: {node: '>= 4'}
     dev: true
 
-  /image-size/0.5.5:
-    resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
-    engines: {node: '>=0.10.0'}
-    hasBin: true
-    requiresBuild: true
-    dev: true
-    optional: true
-
   /imagemin-gifsicle/7.0.0:
     resolution: {integrity: sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA==}
     engines: {node: '>=10'}
@@ -3988,6 +4120,10 @@ packages:
       replace-ext: 1.0.1
     dev: true
 
+  /immutable/5.1.3:
+    resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==}
+    dev: true
+
   /import-fresh/3.3.1:
     resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
     engines: {node: '>=6'}
@@ -4355,10 +4491,6 @@ packages:
       get-intrinsic: 1.3.0
     dev: true
 
-  /is-what/3.14.1:
-    resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
-    dev: true
-
   /is-wsl/2.2.0:
     resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
     engines: {node: '>=8'}
@@ -4492,24 +4624,6 @@ packages:
     engines: {node: '>=0.10.0'}
     dev: true
 
-  /less/4.3.0:
-    resolution: {integrity: sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==}
-    engines: {node: '>=14'}
-    hasBin: true
-    dependencies:
-      copy-anything: 2.0.6
-      parse-node-version: 1.0.1
-      tslib: 2.8.1
-    optionalDependencies:
-      errno: 0.1.8
-      graceful-fs: 4.2.11
-      image-size: 0.5.5
-      make-dir: 2.1.0
-      mime: 1.6.0
-      needle: 3.3.1
-      source-map: 0.6.1
-    dev: true
-
   /levn/0.4.1:
     resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
     engines: {node: '>= 0.8.0'}
@@ -4741,16 +4855,6 @@ packages:
       pify: 3.0.0
     dev: true
 
-  /make-dir/2.1.0:
-    resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
-    engines: {node: '>=6'}
-    requiresBuild: true
-    dependencies:
-      pify: 4.0.1
-      semver: 5.7.2
-    dev: true
-    optional: true
-
   /make-dir/3.1.0:
     resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
     engines: {node: '>=8'}
@@ -4859,14 +4963,6 @@ packages:
       mime-db: 1.52.0
     dev: false
 
-  /mime/1.6.0:
-    resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
-    engines: {node: '>=4'}
-    hasBin: true
-    requiresBuild: true
-    dev: true
-    optional: true
-
   /mimic-fn/2.1.0:
     resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
     engines: {node: '>=6'}
@@ -4981,21 +5077,15 @@ packages:
     resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
     dev: true
 
-  /needle/3.3.1:
-    resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==}
-    engines: {node: '>= 4.4.x'}
-    hasBin: true
-    requiresBuild: true
-    dependencies:
-      iconv-lite: 0.6.3
-      sax: 1.4.1
-    dev: true
-    optional: true
-
   /nice-try/1.0.5:
     resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
     dev: true
 
+  /node-addon-api/7.1.1:
+    resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
+    dev: true
+    optional: true
+
   /normalize-package-data/2.5.0:
     resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
     dependencies:
@@ -5339,11 +5429,6 @@ packages:
       lines-and-columns: 1.2.4
     dev: true
 
-  /parse-node-version/1.0.1:
-    resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
-    engines: {node: '>= 0.10'}
-    dev: true
-
   /path-browserify/1.0.1:
     resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
     dev: true
@@ -5588,11 +5673,6 @@ packages:
     resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
     dev: false
 
-  /prr/1.0.1:
-    resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
-    dev: true
-    optional: true
-
   /pseudomap/1.0.2:
     resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
     dev: true
@@ -5704,6 +5784,11 @@ packages:
       picomatch: 2.3.1
     dev: true
 
+  /readdirp/4.1.2:
+    resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
+    engines: {node: '>= 14.18.0'}
+    dev: true
+
   /redent/1.0.0:
     resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==}
     engines: {node: '>=0.10.0'}
@@ -5908,15 +5993,17 @@ packages:
       is-regex: 1.2.1
     dev: true
 
-  /safer-buffer/2.1.2:
-    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
-    dev: true
-    optional: true
-
-  /sax/1.4.1:
-    resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
+  /sass/1.89.2:
+    resolution: {integrity: sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==}
+    engines: {node: '>=14.0.0'}
+    hasBin: true
+    dependencies:
+      chokidar: 4.0.3
+      immutable: 5.1.3
+      source-map-js: 1.2.1
+    optionalDependencies:
+      '@parcel/watcher': 2.5.1
     dev: true
-    optional: true
 
   /scule/1.3.0:
     resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
@@ -6502,6 +6589,7 @@ packages:
   /tslib/2.8.1:
     resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
     dev: true
+    optional: true
 
   /tsutils/3.21.0_typescript@4.9.5:
     resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
@@ -6810,7 +6898,7 @@ packages:
       chalk: 4.1.2
       debug: 4.4.1
       fs-extra: 10.1.0
-      vite: 3.2.11_less@4.3.0
+      vite: 3.2.11_sass@1.89.2
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -6825,7 +6913,7 @@ packages:
       '@types/eslint': 8.56.12
       eslint: 8.57.1
       rollup: 2.79.2
-      vite: 3.2.11_less@4.3.0
+      vite: 3.2.11_sass@1.89.2
     dev: true
 
   /vite-plugin-imagemin/0.6.1_vite@3.2.11:
@@ -6856,7 +6944,7 @@ packages:
       imagemin-webp: 6.1.0
       jpegtran-bin: 6.0.1
       pathe: 0.2.0
-      vite: 3.2.11_less@4.3.0
+      vite: 3.2.11_sass@1.89.2
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -6868,7 +6956,7 @@ packages:
       svgo: 2.8.0
     dev: true
 
-  /vite/3.2.11_less@4.3.0:
+  /vite/3.2.11_sass@1.89.2:
     resolution: {integrity: sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==}
     engines: {node: ^14.18.0 || >=16.0.0}
     hasBin: true
@@ -6894,10 +6982,10 @@ packages:
         optional: true
     dependencies:
       esbuild: 0.15.18
-      less: 4.3.0
       postcss: 8.5.4
       resolve: 1.22.10
       rollup: 2.79.2
+      sass: 1.89.2
     optionalDependencies:
       fsevents: 2.3.3
     dev: true

BIN
src/assets/images/bg-arrow.png


BIN
src/assets/images/bg-guide.png


BIN
src/assets/images/login-back.png


BIN
src/assets/images/login-theme.png


+ 3 - 1
src/assets/style/base.less → src/assets/style/base.scss

@@ -29,7 +29,9 @@
   }
 
   &-head {
-    .box-justify;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
     min-height: 30px;
     margin: -10px 0 10px -10px;
     color: var(--app-main-text-color);

+ 0 - 0
src/assets/style/element-custom.less → src/assets/style/element-custom.scss


+ 1655 - 0
src/assets/style/element-var.scss

@@ -0,0 +1,1655 @@
+/* Element Chalk Variables */
+@use 'sass:math';
+@use 'sass:map';
+@use 'sass:color';
+
+@use '../mixins/function.scss' as *;
+
+// Special comment for theme configurator
+// type|skipAutoTranslation|Category|Order
+// skipAutoTranslation 1
+
+// types
+$types: primary, success, warning, danger, error, info;
+
+// Color
+$colors: () !default;
+$colors: map.deep-merge(
+  (
+    'white': #ffffff,
+    'black': #000000,
+    'primary': (
+      'base': #409eff,
+    ),
+    'success': (
+      'base': #67c23a,
+    ),
+    'warning': (
+      'base': #e6a23c,
+    ),
+    'danger': (
+      'base': #f56c6c,
+    ),
+    'error': (
+      'base': #f56c6c,
+    ),
+    'info': (
+      'base': #909399,
+    ),
+  ),
+  $colors
+);
+
+$color-white: map.get($colors, 'white') !default;
+$color-black: map.get($colors, 'black') !default;
+$color-primary: map.get($colors, 'primary', 'base') !default;
+$color-success: map.get($colors, 'success', 'base') !default;
+$color-warning: map.get($colors, 'warning', 'base') !default;
+$color-danger: map.get($colors, 'danger', 'base') !default;
+$color-error: map.get($colors, 'error', 'base') !default;
+$color-info: map.get($colors, 'info', 'base') !default;
+
+// https://sass-lang.com/documentation/values/maps#immutability
+// mix colors with white/black to generate light/dark level
+@mixin set-color-mix-level(
+  $type,
+  $number,
+  $mode: 'light',
+  $mix-color: $color-white
+) {
+  $colors: map.deep-merge(
+    (
+      $type: (
+        '#{$mode}-#{$number}':
+          color.mix(
+            $mix-color,
+            map.get($colors, $type, 'base'),
+            math.percentage(math.div($number, 10))
+          ),
+      ),
+    ),
+    $colors
+  ) !global;
+}
+
+// $colors.primary.light-i
+// --el-color-primary-light-i
+// 10% 53a8ff
+// 20% 66b1ff
+// 30% 79bbff
+// 40% 8cc5ff
+// 50% a0cfff
+// 60% b3d8ff
+// 70% c6e2ff
+// 80% d9ecff
+// 90% ecf5ff
+@each $type in $types {
+  @for $i from 1 through 9 {
+    @include set-color-mix-level($type, $i, 'light', $color-white);
+  }
+}
+
+// --el-color-primary-dark-2
+@each $type in $types {
+  @include set-color-mix-level($type, 2, 'dark', $color-black);
+}
+
+$text-color: () !default;
+$text-color: map.merge(
+  (
+    'primary': #303133,
+    'regular': #606266,
+    'secondary': #909399,
+    'placeholder': #a8abb2,
+    'disabled': #c0c4cc,
+  ),
+  $text-color
+);
+
+$border-color: () !default;
+$border-color: map.merge(
+  (
+    '': #dcdfe6,
+    'light': #e4e7ed,
+    'lighter': #ebeef5,
+    'extra-light': #f2f6fc,
+    'dark': #d4d7de,
+    'darker': #cdd0d6,
+  ),
+  $border-color
+);
+
+$fill-color: () !default;
+$fill-color: map.merge(
+  (
+    '': #f0f2f5,
+    'light': #f5f7fa,
+    'lighter': #fafafa,
+    'extra-light': #fafcff,
+    'dark': #ebedf0,
+    'darker': #e6e8eb,
+    'blank': #ffffff,
+  ),
+  $fill-color
+);
+
+// Background
+$bg-color: () !default;
+$bg-color: map.merge(
+  (
+    '': #ffffff,
+    'page': #f2f3f5,
+    'overlay': #ffffff,
+  ),
+  $bg-color
+);
+
+// Border
+$border-width: 1px !default;
+$border-style: solid !default;
+$border-color-hover: getCssVar('text-color', 'disabled') !default;
+
+$border-radius: () !default;
+$border-radius: map.merge(
+  (
+    'base': 4px,
+    'small': 2px,
+    'round': 20px,
+    'circle': 100%,
+  ),
+  $border-radius
+);
+
+// Box-shadow
+$box-shadow: () !default;
+$box-shadow: map.merge(
+  (
+    '': (
+      0px 12px 32px 4px rgba(0, 0, 0, 0.04),
+      0px 8px 20px rgba(0, 0, 0, 0.08),
+    ),
+    'light': (
+      0px 0px 12px rgba(0, 0, 0, 0.12),
+    ),
+    'lighter': (
+      0px 0px 6px rgba(0, 0, 0, 0.12),
+    ),
+    'dark': (
+      0px 16px 48px 16px rgba(0, 0, 0, 0.08),
+      0px 12px 32px rgba(0, 0, 0, 0.12),
+      0px 8px 16px -8px rgba(0, 0, 0, 0.16),
+    ),
+  ),
+  $box-shadow
+);
+
+// Typography
+$font-family: () !default;
+$font-family: map.merge(
+  (
+    // default family
+    '':
+      "'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif"
+  ),
+  $font-family
+);
+
+$font-size: () !default;
+$font-size: map.merge(
+  (
+    'extra-large': 20px,
+    'large': 18px,
+    'medium': 16px,
+    'base': 14px,
+    'small': 13px,
+    'extra-small': 12px,
+  ),
+  $font-size
+);
+
+// zIndex
+$z-index: () !default;
+$z-index: map.merge(
+  (
+    'normal': 1,
+    'top': 1000,
+    'popper': 2000,
+  ),
+  $z-index
+);
+
+// Disable default
+$disabled: () !default;
+$disabled: map.merge(
+  (
+    'bg-color': getCssVar('fill-color', 'light'),
+    'text-color': getCssVar('text-color', 'placeholder'),
+    'border-color': getCssVar('border-color', 'light'),
+  ),
+  $disabled
+);
+
+$common-component-size: () !default;
+$common-component-size: map.merge(
+  (
+    'large': 40px,
+    'default': 32px,
+    'small': 24px,
+  ),
+  $common-component-size
+);
+
+// overlay
+$overlay-color: () !default;
+$overlay-color: map.merge(
+  (
+    '': rgba(0, 0, 0, 0.8),
+    'light': rgba(0, 0, 0, 0.7),
+    'lighter': rgba(0, 0, 0, 0.5),
+  ),
+  $overlay-color
+);
+
+// mask
+$mask-color: () !default;
+$mask-color: map.merge(
+  (
+    '': rgba(255, 255, 255, 0.9),
+    'extra-light': rgba(255, 255, 255, 0.3),
+  ),
+  $mask-color
+);
+
+// Components
+// ---
+// Checkbox
+// css3 var in packages/theme-chalk/src/checkbox.scss
+$checkbox: () !default;
+$checkbox: map.merge(
+  (
+    'font-size': 14px,
+    'font-weight': getCssVar('font-weight-primary'),
+    'text-color': getCssVar('text-color-regular'),
+    'input-height': 14px,
+    'input-width': 14px,
+    'border-radius': getCssVar('border-radius-small'),
+    'bg-color': getCssVar('fill-color', 'blank'),
+    'input-border': getCssVar('border'),
+    'disabled-border-color': getCssVar('border-color'),
+    'disabled-input-fill': getCssVar('fill-color', 'light'),
+    'disabled-icon-color': getCssVar('text-color-placeholder'),
+    'disabled-checked-input-fill': getCssVar('border-color-extra-light'),
+    'disabled-checked-input-border-color': getCssVar('border-color'),
+    'disabled-checked-icon-color': getCssVar('text-color-placeholder'),
+    'checked-text-color': getCssVar('color-primary'),
+    'checked-input-border-color': getCssVar('color-primary'),
+    'checked-bg-color': getCssVar('color-primary'),
+    'checked-icon-color': getCssVar('color', 'white'),
+    'input-border-color-hover': getCssVar('color-primary'),
+  ),
+  $checkbox
+);
+
+$checkbox-button: () !default;
+$checkbox-button: map.merge(
+  (
+    'checked-bg-color': getCssVar('color-primary'),
+    'checked-text-color': getCssVar('color-white'),
+    'checked-border-color': getCssVar('color-primary'),
+  ),
+  $checkbox-button
+);
+
+$checkbox-bordered-padding-left: () !default;
+$checkbox-bordered-padding-left: map.merge(
+  (
+    'large': 12px,
+    'default': 10px,
+    'small': 8px,
+  ),
+  $checkbox-bordered-padding-left
+);
+
+$checkbox-bordered-padding-right: () !default;
+$checkbox-bordered-padding-right: map.merge(
+  (
+    'large': 20px,
+    'default': 16px,
+    'small': 12px,
+  ),
+  $checkbox-bordered-padding-right
+);
+
+// Radio
+/// fontSize||Font|1
+$radio: () !default;
+$radio: map.merge(
+  (
+    'font-size': getCssVar('font-size-base'),
+    'text-color': getCssVar('text-color-regular'),
+    'font-weight': getCssVar('font-weight-primary'),
+    'input-height': 14px,
+    'input-width': 14px,
+    'input-border-radius': getCssVar('border-radius-circle'),
+    'input-bg-color': getCssVar('fill-color', 'blank'),
+    'input-border': getCssVar('border'),
+    'input-border-color': getCssVar('border-color'),
+    'input-border-color-hover': getCssVar('color-primary'),
+  ),
+  $radio
+);
+
+$radio-height: () !default;
+$radio-height: map.merge($common-component-size, $radio-height);
+
+$radio-button: () !default;
+$radio-button: map.merge(
+  (
+    'checked-bg-color': getCssVar('color-primary'),
+    'checked-text-color': getCssVar('color-white'),
+    'checked-border-color': getCssVar('color-primary'),
+    'disabled-checked-fill': getCssVar('border-color-extra-light'),
+  ),
+  $radio-button
+);
+
+$radio-disabled: () !default;
+$radio-disabled: map.merge(
+  (
+    'input-border-color': getCssVar('disabled-border-color'),
+    'input-fill': getCssVar('disabled-bg-color'),
+    'icon-color': getCssVar('disabled-bg-color'),
+    'checked-input-border-color': getCssVar('disabled-border-color'),
+    'checked-input-fill': getCssVar('disabled-bg-color'),
+    'checked-icon-color': getCssVar('text-color-placeholder'),
+  ),
+  $radio-disabled
+);
+
+$radio-checked: () !default;
+$radio-checked: map.merge(
+  (
+    'text-color': getCssVar('color-primary'),
+    'input-border-color': getCssVar('color-primary'),
+    'icon-color': getCssVar('color-primary'),
+  ),
+  $radio-checked
+);
+
+$radio-bordered-input-height: () !default;
+$radio-bordered-input-height: map.merge(
+  (
+    'large': 14px,
+    'default': 12px,
+    'small': 12px,
+  ),
+  $radio-bordered-input-height
+);
+
+$radio-bordered-input-width: () !default;
+$radio-bordered-input-width: map.merge(
+  (
+    'large': 14px,
+    'default': 12px,
+    'small': 12px,
+  ),
+  $radio-bordered-input-width
+);
+
+// Select
+$select: () !default;
+$select: map.merge(
+  (
+    'border-color-hover': getCssVar('border-color-hover'),
+    'disabled-color': getCssVar('disabled-text-color'),
+    'disabled-border': getCssVar('disabled-border-color'),
+    'font-size': getCssVar('font-size-base'),
+    'close-hover-color': getCssVar('text-color-secondary'),
+    'input-color': getCssVar('text-color-placeholder'),
+    'multiple-input-color': getCssVar('text-color-regular'),
+    'input-focus-border-color': getCssVar('color-primary'),
+    'input-font-size': 14px,
+    'width': 100%,
+  ),
+  $select
+);
+
+$select-option: () !default;
+$select-option: map.merge(
+  (
+    'text-color': getCssVar('text-color-regular'),
+    'disabled-color': getCssVar('text-color-placeholder'),
+    'height': 34px,
+    'hover-background': getCssVar('fill-color', 'light'),
+    'selected-text-color': getCssVar('color-primary'),
+  ),
+  $select-option
+);
+
+$select-group: () !default;
+$select-group: map.merge(
+  (
+    'text-color': getCssVar('color-info'),
+    'height': 34px,
+    'font-size': 12px,
+  ),
+  $select-group
+);
+
+$select-dropdown: () !default;
+$select-dropdown: map.merge(
+  (
+    'bg-color': getCssVar('bg-color', 'overlay'),
+    'shadow': getCssVar('box-shadow-light'),
+    'empty-color': getCssVar('text-color-secondary'),
+    'max-height': 274px,
+    'padding': 6px 0,
+    'empty-padding': 10px 0,
+    'header-padding': 10px,
+    'footer-padding': 10px,
+    'border': 1px solid getCssVar('border-color-light'),
+  ),
+  $select-dropdown
+);
+
+$select-wrapper-padding: () !default;
+$select-wrapper-padding: map.merge(
+  (
+    'large': 8px 16px,
+    'default': 4px 12px,
+    'small': 2px 8px,
+  ),
+  $select-wrapper-padding
+);
+
+$select-near-margin-left: () !default;
+$select-near-margin-left: map.merge(
+  (
+    'large': -8px,
+    'default': -8px,
+    'small': -6px,
+  ),
+  $select-near-margin-left
+);
+
+$select-item-gap: () !default;
+$select-item-gap: map.merge(
+  (
+    'large': 6px,
+    'default': 6px,
+    'small': 4px,
+  ),
+  $select-item-gap
+);
+
+// the same height of el-tag
+$select-item-height: () !default;
+$select-item-height: map.merge(
+  (
+    'large': 24px,
+    'default': 24px,
+    'small': 20px,
+  ),
+  $select-item-height
+);
+
+// Alert
+// css3 var in packages/theme-chalk/src/alert.scss
+$alert: () !default;
+$alert: map.merge(
+  (
+    'padding': 8px 16px,
+    'border-radius-base': getCssVar('border-radius-base'),
+    'title-font-size': 14px,
+    'title-with-description-font-size': 16px,
+    'description-font-size': 14px,
+    'close-font-size': 16px,
+    'close-customed-font-size': 14px,
+    'icon-size': 16px,
+    'icon-large-size': 28px,
+  ),
+  $alert
+);
+
+// MessageBox
+// css3 var in packages/theme-chalk/src/message-box.scss
+$messagebox: () !default;
+$messagebox: map.merge(
+  (
+    'title-color': getCssVar('text-color-primary'),
+    'width': 420px,
+    'border-radius': 4px,
+    'box-shadow': getCssVar('box-shadow'),
+    'font-size': getCssVar('font-size-large'),
+    'content-font-size': getCssVar('font-size-base'),
+    'content-color': getCssVar('text-color-regular'),
+    'error-font-size': 12px,
+    'padding-primary': 12px,
+    'font-line-height': getCssVar('font-line-height-primary'),
+  ),
+  $messagebox
+);
+
+// Message
+// css3 var in packages/theme-chalk/src/message.scss
+$message: () !default;
+$message: map.merge(
+  (
+    'bg-color': getCssVar('color', 'info', 'light-9'),
+    'border-color': getCssVar('border-color-lighter'),
+    'padding': 11px 15px,
+    'close-size': 16px,
+    'close-icon-color': getCssVar('text-color-placeholder'),
+    'close-hover-color': getCssVar('text-color-secondary'),
+  ),
+  $message
+);
+
+// Notification
+// css3 var in packages/theme-chalk/src/notification.scss
+$notification: () !default;
+$notification: map.merge(
+  (
+    'width': 330px,
+    'padding': 14px 26px 14px 13px,
+    'radius': 8px,
+    'shadow': getCssVar('box-shadow-light'),
+    'border-color': getCssVar('border-color-lighter'),
+    'icon-size': 24px,
+    'close-font-size':
+      var(
+        #{getCssVarName('message-close-size')},
+        map.get($message, 'close-size')
+      ),
+    'group-margin-left': 13px,
+    'group-margin-right': 8px,
+    'content-font-size': getCssVar('font-size-base'),
+    'content-color': getCssVar('text-color-regular'),
+    'title-font-size': 16px,
+    'title-color': getCssVar('text-color-primary'),
+    'close-color': getCssVar('text-color-secondary'),
+    'close-hover-color': getCssVar('text-color-regular'),
+  ),
+  $notification
+);
+
+// Input
+// css3 var in packages/theme-chalk/src/input.scss
+$input: () !default;
+$input: map.merge(
+  (
+    'text-color': getCssVar('text-color-regular'),
+    'border': getCssVar('border'),
+    'hover-border': getCssVar('border-color-hover'),
+    'focus-border': getCssVar('color-primary'),
+    'transparent-border': 0 0 0 1px transparent inset,
+    'border-color': getCssVar('border-color'),
+    'border-radius': getCssVar('border-radius-base'),
+    'bg-color': getCssVar('fill-color', 'blank'),
+    'icon-color': getCssVar('text-color-placeholder'),
+    'placeholder-color': getCssVar('text-color-placeholder'),
+    'hover-border-color': getCssVar('border-color-hover'),
+    'clear-hover-color': getCssVar('text-color-secondary'),
+    'focus-border-color': getCssVar('color-primary'),
+    'width': 100%,
+  ),
+  $input
+);
+
+$input-disabled: () !default;
+$input-disabled: map.merge(
+  (
+    'fill': getCssVar('disabled-bg-color'),
+    'border': getCssVar('disabled-border-color'),
+    'text-color': getCssVar('disabled-text-color'),
+    'placeholder-color': getCssVar('text-color-placeholder'),
+  ),
+  $input-disabled
+);
+
+$input-font-size: () !default;
+$input-font-size: map.merge(
+  (
+    'large': 14px,
+    'default': 14px,
+    'small': 12px,
+  ),
+  $input-font-size
+);
+
+$input-height: () !default;
+$input-height: map.merge($common-component-size, $input-height);
+
+$input-line-height: () !default;
+$input-line-height: map.merge($common-component-size, $input-line-height);
+
+$input-number-width: () !default;
+$input-number-width: map.merge(
+  (
+    'large': 180px,
+    'default': 150px,
+    'small': 120px,
+  ),
+  $input-number-width
+);
+
+$input-padding-horizontal: () !default;
+$input-padding-horizontal: map.merge(
+  (
+    'large': 16px,
+    'default': 12px,
+    'small': 8px,
+  ),
+  $input-padding-horizontal
+);
+
+// Cascader
+// css3 var in packages/theme-chalk/src/cascader.scss
+$cascader: () !default;
+$cascader: map.merge(
+  (
+    'menu-text-color': getCssVar('text-color-regular'),
+    'menu-selected-text-color': getCssVar('color-primary'),
+    'menu-fill': getCssVar('bg-color', 'overlay'),
+    'menu-font-size': getCssVar('font-size-base'),
+    'menu-radius': getCssVar('border-radius-base'),
+    'menu-border': solid 1px getCssVar('border-color-light'),
+    'menu-shadow': getCssVar('box-shadow-light'),
+    'node-background-hover': getCssVar('fill-color', 'light'),
+    'node-color-disabled': getCssVar('text-color-placeholder'),
+    'color-empty': getCssVar('text-color-placeholder'),
+    'tag-background': getCssVar('fill-color'),
+  ),
+  $cascader
+);
+
+$cascader-item-gap: () !default;
+$cascader-item-gap: map.merge(
+  (
+    'large': 6px,
+    'default': 6px,
+    'small': 4px,
+  ),
+  $cascader-item-gap
+);
+
+$cascader-wrapper-padding: () !default;
+$cascader-wrapper-padding: map.merge(
+  (
+    'large': 8px,
+    'default': 4px,
+    'small': 2px,
+  ),
+  $cascader-wrapper-padding
+);
+
+$cascader-item-height: () !default;
+$cascader-item-height: map.merge(
+  (
+    'large': 24px,
+    'default': 24px,
+    'small': 20px,
+  ),
+  $cascader-item-height
+);
+
+$cascader-search-input-margin-left: () !default;
+$cascader-search-input-margin-left: map.merge(
+  (
+    'large': 7px,
+    'default': 7px,
+    'small': 5px,
+  ),
+  $cascader-search-input-margin-left
+);
+
+//statistic
+// css3 var in packages/theme-chalk/src/statistic.scss
+$statistic: () !default;
+$statistic: map.merge(
+  (
+    'title-font-weight': 400,
+    'title-font-size': getCssVar('font-size', 'extra-small'),
+    'title-color': getCssVar('text-color', 'regular'),
+    'content-font-weight': 400,
+    'content-font-size': getCssVar('font-size', 'extra-large'),
+    'content-color': getCssVar('text-color', 'primary'),
+  ),
+  $statistic
+);
+// Button
+// css3 var in packages/theme-chalk/src/button.scss
+$button: () !default;
+$button: map.merge(
+  (
+    'font-weight': getCssVar('font-weight-primary'),
+    'border-color': getCssVar('border-color'),
+    'bg-color': getCssVar('fill-color', 'blank'),
+    'text-color': getCssVar('text-color', 'regular'),
+    'disabled-text-color': getCssVar('disabled-text-color'),
+    'disabled-bg-color': getCssVar('fill-color', 'blank'),
+    'disabled-border-color': getCssVar('border-color-light'),
+    'divide-border-color': rgba($color-white, 0.5),
+    'hover-text-color': getCssVar('color-primary'),
+    'hover-bg-color': getCssVar('color-primary', 'light-9'),
+    'hover-border-color': getCssVar('color-primary-light-7'),
+    'active-text-color': getCssVar('button-hover-text-color'),
+    'active-border-color': getCssVar('color-primary'),
+    'active-bg-color': getCssVar('button', 'hover-bg-color'),
+    'outline-color': getCssVar('color-primary', 'light-5'),
+    'hover-link-text-color': getCssVar('text-color', 'secondary'),
+    'active-color': getCssVar('text-color', 'primary'),
+  ),
+  $button
+);
+
+$button-border-width: $border-width !default;
+
+// need mix, so do not use css var
+$button-hover-tint-percent: 20%;
+$button-active-shade-percent: 10%;
+
+$button-border-color: () !default;
+$button-bg-color: () !default;
+$button-text-color: () !default;
+
+@each $type in $types {
+  $button-border-color: map.merge(
+    (
+      $type: map.get($colors, $type, 'base'),
+    ),
+    $button-border-color
+  ) !global;
+
+  $button-bg-color: map.merge(
+    (
+      $type: map.get($colors, $type, 'base'),
+    ),
+    $button-bg-color
+  ) !global;
+}
+
+$button-font-size: () !default;
+$button-font-size: map.merge(
+  (
+    'large': getCssVar('font-size', 'base'),
+    'default': getCssVar('font-size', 'base'),
+    'small': 12px,
+  ),
+  $button-font-size
+);
+
+$button-border-radius: () !default;
+$button-border-radius: map.merge(
+  (
+    'large': getCssVar('border-radius', 'base'),
+    'default': getCssVar('border-radius', 'base'),
+    'small': calc(#{getCssVar('border-radius', 'base')} - 1px),
+  ),
+  $button-border-radius
+);
+
+$button-padding-vertical: () !default;
+$button-padding-vertical: map.merge(
+  (
+    'large': 13px,
+    'default': 9px,
+    'small': 6px,
+  ),
+  $button-padding-vertical
+);
+
+$button-padding-horizontal: () !default;
+$button-padding-horizontal: map.merge(
+  (
+    'large': 20px,
+    'default': 16px,
+    'small': 12px,
+  ),
+  $button-padding-horizontal
+);
+
+// Switch
+// css3 var in packages/theme-chalk/src/switch.scss
+$switch: () !default;
+$switch: map.merge(
+  (
+    'on-color': getCssVar('color-primary'),
+    'off-color': getCssVar('border-color'),
+  ),
+  $switch
+);
+
+// Dialog
+// css3 var in packages/theme-chalk/src/dialog.scss
+$dialog: () !default;
+$dialog: map.merge(
+  (
+    'width': 50%,
+    'margin-top': 15vh,
+    'bg-color': getCssVar('bg-color'),
+    'box-shadow': getCssVar('box-shadow'),
+    'title-font-size': getCssVar('font-size-large'),
+    'content-font-size': 14px,
+    'font-line-height': getCssVar('font-line-height-primary'),
+    'padding-primary': 16px,
+    'border-radius': getCssVar('border-radius-base'),
+  ),
+  $dialog
+);
+
+// Tour
+// css3 var in packages/theme-chalk/src/tour.scss
+$tour: () !default;
+$tour: map.merge(
+  (
+    'width': 520px,
+    'padding-primary': 12px,
+    'font-line-height': getCssVar('font-line-height-primary'),
+    'title-font-size': 16px,
+    'title-text-color': getCssVar('text-color-primary'),
+    'title-font-weight': 400,
+    'close-color': getCssVar('color-info'),
+    'font-size': 14px,
+    'color': getCssVar('text-color-primary'),
+    'bg-color': getCssVar('bg-color'),
+    'border-radius': 4px,
+  ),
+  $tour
+);
+
+// Anchor
+// css3 var in packages/theme-chalk/src/anchor.scss
+$anchor: () !default;
+$anchor: map.merge(
+  (
+    'bg-color': getCssVar('bg-color'),
+    'padding-indent': 14px,
+    'line-height': 22px,
+    'font-size': 12px,
+    'color': getCssVar('text-color-secondary'),
+    'active-color': getCssVar('color-primary'),
+    'marker-bg-color': getCssVar('color-primary'),
+  ),
+  $anchor
+);
+
+// Segmented
+// css3 var in packages/theme-chalk/src/segmented.scss
+$segmented: () !default;
+$segmented: map.merge(
+  (
+    'color': getCssVar('text-color', 'regular'),
+    'bg-color': getCssVar('fill-color', 'light'),
+    'padding': 2px,
+    'item-selected-color': getCssVar('color-white'),
+    'item-selected-bg-color': getCssVar('color-primary'),
+    'item-selected-disabled-bg-color': getCssVar('color-primary', 'light-5'),
+    'item-hover-color': getCssVar('text-color', 'primary'),
+    'item-hover-bg-color': getCssVar('fill-color', 'dark'),
+    'item-active-bg-color': getCssVar('fill-color', 'darker'),
+    'item-disabled-color': getCssVar('text-color', 'placeholder'),
+  ),
+  $segmented
+);
+
+// Mention
+// css3 var in packages/theme-chalk/src/mention.scss
+$mention: () !default;
+$mention: map.merge(
+  (
+    'font-size': getCssVar('font-size-base'),
+    'bg-color': getCssVar('bg-color', 'overlay'),
+    'shadow': getCssVar('box-shadow-light'),
+    'border': 1px solid getCssVar('border-color-light'),
+    'option-color': getCssVar('text-color-regular'),
+    'option-height': 34px,
+    'option-min-width': 100px,
+    'option-hover-background': getCssVar('fill-color', 'light'),
+    'option-selected-color': getCssVar('color-primary'),
+    'option-disabled-color': getCssVar('text-color-placeholder'),
+    'option-loading-color': getCssVar('text-color-secondary'),
+    'option-loading-padding': 10px 0,
+    'max-height': 174px,
+    'padding': 6px 0,
+    'header-padding': 10px,
+    'footer-padding': 10px,
+  ),
+  $mention
+);
+
+// InputTag
+// css3 var in packages/theme-chalk/src/input-tag.scss
+$input-tag: () !default;
+$input-tag: map.merge(
+  (
+    'border-color-hover': getCssVar('border-color-hover'),
+    'placeholder-color': getCssVar('text-color-placeholder'),
+    'disabled-color': getCssVar('disabled-text-color'),
+    'disabled-border': getCssVar('disabled-border-color'),
+    'font-size': getCssVar('font-size-base'),
+    'close-hover-color': getCssVar('text-color-secondary'),
+    'text-color': getCssVar('text-color-regular'),
+    'input-focus-border-color': getCssVar('color-primary'),
+    'width': 100%,
+  ),
+  $input-tag
+);
+
+$input-tag-padding: () !default;
+$input-tag-padding: map.merge(
+  (
+    'large': 8px,
+    'default': 4px,
+    'small': 2px,
+  ),
+  $input-tag-padding
+);
+
+$input-tag-inner-padding: () !default;
+$input-tag-inner-padding: map.merge(
+  (
+    'large': 8px,
+    'default': 8px,
+    'small': 6px,
+  ),
+  $input-tag-inner-padding
+);
+
+$input-tag-gap: () !default;
+$input-tag-gap: map.merge(
+  (
+    'large': 6px,
+    'default': 6px,
+    'small': 4px,
+  ),
+  $input-tag-gap
+);
+
+// Table
+// css3 var in packages/theme-chalk/src/table.scss
+$table: () !default;
+$table: map.merge(
+  (
+    'border-color': getCssVar('border-color-lighter'),
+    'border': 1px solid getCssVar('table-border-color'),
+    'text-color': getCssVar('text-color-regular'),
+    'header-text-color': getCssVar('text-color-secondary'),
+    'row-hover-bg-color': getCssVar('fill-color', 'light'),
+    'current-row-bg-color': getCssVar('color-primary-light-9'),
+    'header-bg-color': getCssVar('bg-color'),
+    'fixed-box-shadow': getCssVar('box-shadow', 'light'),
+    'bg-color': getCssVar('fill-color', 'blank'),
+    'tr-bg-color': getCssVar('bg-color'),
+    'expanded-cell-bg-color': getCssVar('fill-color', 'blank'),
+    'fixed-left-column': inset 10px 0 10px -10px rgb(0 0 0 / 15%),
+    'fixed-right-column': inset -10px 0 10px -10px rgb(0 0 0 / 15%),
+    'index': getCssVar('index-normal'),
+  ),
+  $table
+);
+
+$table-font-size: () !default;
+$table-font-size: map.merge(
+  (
+    'large': getCssVar('font-size', 'base'),
+    'default': getCssVar('font-size', 'base'),
+    'small': getCssVar('font-size', 'extra-small'),
+  ),
+  $table-font-size
+);
+
+$table-padding: () !default;
+$table-padding: map.merge(
+  (
+    'large': 12px 0,
+    'default': 8px 0,
+    'small': 4px 0,
+  ),
+  $table-padding
+);
+
+$table-cell-padding: () !default;
+$table-cell-padding: map.merge(
+  (
+    'large': 0 16px,
+    'default': 0 12px,
+    'small': 0 8px,
+  ),
+  $table-cell-padding
+);
+
+// Pagination
+// css3 var in packages/theme-chalk/src/pagination.scss
+$pagination: () !default;
+$pagination: map.merge(
+  (
+    'font-size': 14px,
+    'bg-color': getCssVar('fill-color', 'blank'),
+    'text-color': getCssVar('text-color-primary'),
+    'border-radius': 2px,
+    'button-color': getCssVar('text-color-primary'),
+    'button-width': 32px,
+    'button-height': 32px,
+    'button-disabled-color': getCssVar('text-color-placeholder'),
+    'button-disabled-bg-color': getCssVar('fill-color', 'blank'),
+    'button-bg-color': getCssVar('fill-color'),
+    'hover-color': getCssVar('color-primary'),
+    'font-size-small': 12px,
+    'button-width-small': 24px,
+    'button-height-small': 24px,
+    'button-width-large': 40px,
+    'button-height-large': 40px,
+    'item-gap': 16px,
+  ),
+  $pagination
+);
+
+// Popup
+// css3 var in packages/theme-chalk/src/popup.scss
+$popup: () !default;
+$popup: map.merge(
+  (
+    'modal-bg-color': getCssVar('color-black'),
+    'modal-opacity': 0.5,
+  ),
+  $popup
+);
+
+// Popover
+// css3 var in packages/theme-chalk/src/popover.scss
+$popover: () !default;
+$popover: map.merge(
+  (
+    'bg-color': getCssVar('bg-color', 'overlay'),
+    'font-size': getCssVar('font-size-base'),
+    'border-color': getCssVar('border-color-lighter'),
+    'padding': 12px,
+    'padding-large': 18px 20px,
+    'title-font-size': 16px,
+    'title-text-color': getCssVar('text-color-primary'),
+    'border-radius': 4px,
+  ),
+  $popover
+);
+
+// popper
+// Pay attention to the difference between 'popper' and 'popover'
+$popper: () !default;
+$popper: map.merge(
+  (
+    'border-radius': var(#{getCssVarName('popover-border-radius')}, 4px),
+  ),
+  $popper
+);
+
+// skeleton
+$skeleton: () !default;
+$skeleton: map.merge(
+  (
+    'color': getCssVar('fill-color'),
+    'to-color': getCssVar('fill-color', 'darker'),
+  ),
+  $skeleton
+);
+
+// Tag
+// css3 var in packages/theme-chalk/src/tag.scss
+$tag: () !default;
+$tag: map.merge(
+  (
+    'font-size': 12px,
+    'border-radius': 4px,
+    'border-radius-rounded': 9999px,
+  ),
+  $tag
+);
+
+$tag-height: () !default;
+$tag-height: map.merge(
+  (
+    'large': 32px,
+    'default': 24px,
+    'small': 20px,
+  ),
+  $tag-height
+);
+
+$tag-padding: () !default;
+$tag-padding: map.merge(
+  (
+    'large': 12px,
+    'default': 10px,
+    'small': 8px,
+  ),
+  $tag-padding
+);
+
+$tag-icon-size: () !default;
+$tag-icon-size: map.merge(
+  (
+    'large': 16px,
+    'default': 14px,
+    'small': 12px,
+  ),
+  $tag-icon-size
+);
+
+// Text
+// css3 var in packages/theme-chalk/src/text.scss
+$text: () !default;
+$text: map.merge(
+  (
+    'font-size': getCssVar('font-size', 'base'),
+    'color': getCssVar('text-color', 'regular'),
+  ),
+  $text
+);
+
+$text-font-size: () !default;
+$text-font-size: map.merge(
+  (
+    'large': getCssVar('font-size', 'medium'),
+    'default': getCssVar('font-size', 'base'),
+    'small': getCssVar('font-size', 'extra-small'),
+  ),
+  $text-font-size
+);
+
+// Tree
+// css3 var in packages/theme-chalk/src/tree.scss
+$tree: () !default;
+$tree: map.merge(
+  (
+    'node-content-height': 26px,
+    'node-hover-bg-color': getCssVar('fill-color', 'light'),
+    'text-color': getCssVar('text-color-regular'),
+    'expand-icon-color': getCssVar('text-color-placeholder'),
+  ),
+  $tree
+);
+
+// Dropdown
+$dropdown: () !default;
+$dropdown: map.merge(
+  (
+    'menu-box-shadow': getCssVar('box-shadow-light'),
+    'menuItem-hover-fill': getCssVar('color-primary-light-9'),
+    'menuItem-hover-color': getCssVar('color-primary'),
+    'menu-index': 10,
+  ),
+  $dropdown
+);
+
+// drawer
+$drawer: () !default;
+$drawer: map.merge(
+  (
+    'bg-color':
+      var(#{getCssVarName('dialog', 'bg-color')}, #{getCssVar('bg-color')}),
+    'padding-primary': var(#{getCssVarName('dialog', 'padding-primary')}, 20px),
+  ),
+  $drawer
+);
+
+// Badge
+// css3 var in packages/theme-chalk/src/badge.scss
+$badge: () !default;
+$badge: map.merge(
+  (
+    'bg-color': getCssVar('color-danger'),
+    'radius': 10px,
+    'font-size': 12px,
+    'padding': 6px,
+    'size': 18px,
+  ),
+  $badge
+);
+
+// Card
+$card: () !default;
+$card: map.merge(
+  (
+    'border-color': getCssVar('border-color', 'light'),
+    'border-radius': 4px,
+    'padding': 20px,
+    'bg-color': getCssVar('fill-color', 'blank'),
+  ),
+  $card
+);
+
+// Slider
+// css3 var in packages/theme-chalk/src/slider.scss
+$slider: () !default;
+$slider: map.merge(
+  (
+    'main-bg-color': getCssVar('color-primary'),
+    'runway-bg-color': getCssVar('border-color-light'),
+    'stop-bg-color': getCssVar('color-white'),
+    'disabled-color': getCssVar('text-color-placeholder'),
+    'border-radius': 3px,
+    'height': 6px,
+    'button-size': 20px,
+    'button-wrapper-size': 36px,
+    'button-wrapper-offset': -15px,
+  ),
+  $slider
+);
+
+// Menu
+// css3 var in packages/theme-chalk/src/menu.scss
+$menu: () !default;
+$menu: map.merge(
+  (
+    'active-color': getCssVar('color-primary'),
+    'text-color': getCssVar('text-color-primary'),
+    'hover-text-color': getCssVar('color-primary'),
+    'bg-color': getCssVar('fill-color', 'blank'),
+    'hover-bg-color': getCssVar('color-primary-light-9'),
+    'item-height': 56px,
+    'sub-item-height': calc(#{getCssVar('menu-item-height')} - 6px),
+    'horizontal-height': 60px,
+    'horizontal-sub-item-height': 36px,
+    'item-font-size': getCssVar('font-size-base'),
+    'item-hover-fill': getCssVar('color-primary-light-9'),
+    'border-color': getCssVar('border-color'),
+    'base-level-padding': 20px,
+    'level-padding': 20px,
+    'icon-width': 24px,
+  ),
+  $menu
+);
+
+// Rate
+$rate: () !default;
+$rate: map.merge(
+  (
+    'height': 20px,
+    'font-size': getCssVar('font-size-base'),
+    'icon-size': 18px,
+    'icon-margin': 6px,
+    // seems not be used, to be removed
+    // 'icon-color': getCssVar('text-color-placeholder),
+    'void-color': getCssVar('border-color', 'darker'),
+    'fill-color': #f7ba2a,
+    'disabled-void-color': getCssVar('fill-color'),
+    'text-color': getCssVar('text-color', 'primary'),
+  ),
+  $rate
+);
+
+// DatePicker
+// css3 var packages/theme-chalk/src/date-picker/var.scss
+$datepicker: () !default;
+$datepicker: map.merge(
+  (
+    'text-color': getCssVar('text-color-regular'),
+    'off-text-color': getCssVar('text-color-placeholder'),
+    'header-text-color': getCssVar('text-color-regular'),
+    'icon-color': getCssVar('text-color-primary'),
+    'border-color': getCssVar('disabled-border-color'),
+    'inner-border-color': getCssVar('border-color-light'),
+    'inrange-bg-color': getCssVar('border-color-extra-light'),
+    'inrange-hover-bg-color': getCssVar('border-color-extra-light'),
+    'active-color': getCssVar('color-primary'),
+    'hover-text-color': getCssVar('color-primary'),
+  ),
+  $datepicker
+);
+
+$date-editor: () !default;
+$date-editor: map.merge(
+  (
+    'width': 220px,
+    'monthrange-width': 300px,
+    'daterange-width': 350px,
+    'datetimerange-width': 400px,
+  ),
+  $date-editor
+);
+
+// Loading
+// css3 var in packages/theme-chalk/src/loading.scss
+$loading: () !default;
+$loading: map.merge(
+  (
+    'spinner-size': 42px,
+    'fullscreen-spinner-size': 50px,
+  ),
+  $loading
+);
+
+// Scrollbar
+// css3 var in packages/theme-chalk/src/scrollbar.scss
+$scrollbar: () !default;
+$scrollbar: map.merge(
+  (
+    'opacity': 0.3,
+    'bg-color': getCssVar('text-color-secondary'),
+    'hover-opacity': 0.5,
+    'hover-bg-color': getCssVar('text-color-secondary'),
+  ),
+  $scrollbar
+);
+
+// Carousel
+// css3 var in packages/theme-chalk/src/carousel.scss
+$carousel: () !default;
+$carousel: map.merge(
+  (
+    'arrow-font-size': 12px,
+    'arrow-size': 36px,
+    'arrow-background': rgba(31, 45, 61, 0.11),
+    'arrow-hover-background': rgba(31, 45, 61, 0.23),
+    'indicator-width': 30px,
+    'indicator-height': 2px,
+    'indicator-padding-horizontal': 4px,
+    'indicator-padding-vertical': 12px,
+    'indicator-out-color': getCssVar('border-color-hover'),
+  ),
+  $carousel
+);
+
+// Collapse
+// css3 var in packages/theme-chalk/src/collapse.scss
+$collapse: () !default;
+$collapse: map.merge(
+  (
+    'border-color': getCssVar('border-color-lighter'),
+    'header-height': 48px,
+    'header-bg-color': getCssVar('fill-color', 'blank'),
+    'header-text-color': getCssVar('text-color-primary'),
+    'header-font-size': 13px,
+    'content-bg-color': getCssVar('fill-color', 'blank'),
+    'content-font-size': 13px,
+    'content-text-color': getCssVar('text-color-primary'),
+  ),
+  $collapse
+);
+
+// Transfer
+// css3 var in packages/theme-chalk/src/transfer.scss
+$transfer: () !default;
+$transfer: map.merge(
+  (
+    'border-color': getCssVar('border-color-lighter'),
+    'border-radius': getCssVar('border-radius-base'),
+    'panel-width': 200px,
+    'panel-header-height': 40px,
+    'panel-header-bg-color': getCssVar('fill-color', 'light'),
+    'panel-footer-height': 40px,
+    'panel-body-height': 278px,
+    'item-height': 30px,
+    'filter-height': 32px,
+  ),
+  $transfer
+);
+
+// Timeline
+// css3 var in packages/theme-chalk/src/timeline-item.scss
+$timeline: () !default;
+$timeline: map.merge(
+  (
+    'node-size-normal': 12px,
+    'node-size-large': 14px,
+    'node-color': getCssVar('border-color-light'),
+  ),
+  $timeline
+);
+
+// Tabs
+// css3 var in packages/theme-chalk/src/tabs.scss
+$tabs: () !default;
+$tabs: map.merge(
+  (
+    'header-height': 40px,
+  ),
+  $tabs
+);
+
+// Backtop
+// css3 var in packages/theme-chalk/src/backtop.scss
+$backtop: () !default;
+$backtop: map.merge(
+  (
+    'bg-color': getCssVar('bg-color', 'overlay'),
+    'text-color': getCssVar('color-primary'),
+    'hover-bg-color': getCssVar('border-color-extra-light'),
+  ),
+  $backtop
+);
+
+// Link
+// css3 var in packages/theme-chalk/src/link.scss
+$link: () !default;
+$link: map.merge(
+  (
+    'font-size': getCssVar('font-size-base'),
+    'font-weight': getCssVar('font-weight-primary'),
+    'text-color': getCssVar('text-color-regular'),
+    'hover-text-color': getCssVar('color-primary'),
+    'disabled-text-color': getCssVar('text-color-placeholder'),
+  ),
+  $link
+);
+
+$link-text-color: () !default;
+
+@each $type in $types {
+  $link-text-color: map.merge(
+    $link-text-color,
+    (
+      $type: map.get($colors, $type, 'base'),
+    )
+  ) !global;
+}
+
+// Calendar
+// css3 var in packages/theme-chalk/src/calendar.scss
+$calendar: () !default;
+$calendar: map.merge(
+  (
+    'border':
+      var(
+        #{getCssVarName('table-border')},
+        1px solid #{getCssVar('border-color-lighter')}
+      ),
+    'header-border-bottom': getCssVar('calendar-border'),
+    'selected-bg-color': getCssVar('color', 'primary', 'light-9'),
+    'cell-width': 85px,
+  ),
+  $calendar
+);
+
+// Form
+// css3 var in packages/theme-chalk/src/form.scss
+$form: () !default;
+$form: map.merge(
+  (
+    'label-font-size': getCssVar('font-size-base'),
+    'inline-content-width': 220px,
+  ),
+  $form
+);
+
+// Avatar
+// css3 var in packages/theme-chalk/src/avatar.scss
+$avatar: () !default;
+$avatar: map.merge(
+  (
+    'text-color': getCssVar('color-white'),
+    'bg-color': getCssVar('text-color', 'disabled'),
+    'text-size': 14px,
+    'icon-size': 18px,
+    'border-radius': getCssVar('border-radius-base'),
+  ),
+  $avatar
+);
+
+$avatar-size: () !default;
+$avatar-size: map.merge(
+  (
+    'large': 56px,
+    'default': 40px,
+    'small': 24px,
+  ),
+  $avatar-size
+);
+
+// Empty
+// css3 var in packages/theme-chalk/src/empty.scss
+$empty: () !default;
+$empty: map.merge(
+  (
+    'padding': 40px 0,
+    'image-width': 160px,
+    'description-margin-top': 20px,
+    'bottom-margin-top': 20px,
+    'fill-color-0': getCssVar('color-white'),
+    'fill-color-1': #fcfcfd,
+    'fill-color-2': #f8f9fb,
+    'fill-color-3': #f7f8fc,
+    'fill-color-4': #eeeff3,
+    'fill-color-5': #edeef2,
+    'fill-color-6': #e9ebef,
+    'fill-color-7': #e5e7e9,
+    'fill-color-8': #e0e3e9,
+    'fill-color-9': #d5d7de,
+  ),
+  $empty
+);
+
+// Descriptions
+// css3 var in packages/theme-chalk/src/descriptions.scss
+$descriptions: () !default;
+$descriptions: map.merge(
+  (
+    'table-border': 1px solid getCssVar('border-color-lighter'),
+    'item-bordered-label-background': getCssVar('fill-color', 'light'),
+  ),
+  $descriptions
+);
+
+// Result
+// css3 var in packages/theme-chalk/src/result.scss
+$result: () !default;
+$result: map.merge(
+  (
+    'padding': 40px 30px,
+    'icon-font-size': 64px,
+    'title-font-size': 20px,
+    'title-margin-top': 20px,
+    'subtitle-margin-top': 10px,
+    'extra-margin-top': 30px,
+  ),
+  $result
+);
+
+// Upload
+// css3 var in packages/theme-chalk/src/upload.scss
+$upload: () !default;
+$upload: map.merge(
+  (
+    'dragger-padding-horizontal': 40px,
+    'dragger-padding-vertical': 10px,
+  ),
+  $upload
+);
+
+// transition
+$transition: () !default;
+$transition: map.merge(
+  (
+    'all': all getCssVar('transition-duration')
+      getCssVar('transition-function-ease-in-out-bezier'),
+    'fade': opacity getCssVar('transition-duration')
+      getCssVar('transition-function-fast-bezier'),
+    'md-fade': (
+      transform getCssVar('transition-duration')
+        getCssVar('transition-function-fast-bezier'),
+      opacity getCssVar('transition-duration')
+        getCssVar('transition-function-fast-bezier'),
+    ),
+    'fade-linear': opacity getCssVar('transition-duration-fast') linear,
+    'border': border-color getCssVar('transition-duration-fast')
+      getCssVar('transition-function-ease-in-out-bezier'),
+    'box-shadow': box-shadow getCssVar('transition-duration-fast')
+      getCssVar('transition-function-ease-in-out-bezier'),
+    'color': color getCssVar('transition-duration-fast')
+      getCssVar('transition-function-ease-in-out-bezier'),
+  ),
+  $transition
+);
+
+$transition-duration: () !default;
+$transition-duration: map.merge(
+  (
+    '': 0.3s,
+    'fast': 0.2s,
+  ),
+  $transition-duration
+);
+
+$transition-function: () !default;
+$transition-function: map.merge(
+  (
+    'ease-in-out-bezier': cubic-bezier(0.645, 0.045, 0.355, 1),
+    'fast-bezier': cubic-bezier(0.23, 1, 0.32, 1),
+  ),
+  $transition-function
+);
+
+// header
+$header: () !default;
+$header: map.merge(
+  (
+    'padding': 0 20px,
+    'height': 60px,
+  ),
+  $header
+);
+// main
+$main: () !default;
+$main: map.merge(
+  (
+    'padding': 20px,
+  ),
+  $main
+);
+// footer
+$footer: () !default;
+$footer: map.merge(
+  (
+    'padding': 0 20px,
+    'height': 60px,
+  ),
+  $footer
+);
+
+// Break-point
+$sm: 768px !default;
+$md: 992px !default;
+$lg: 1200px !default;
+$xl: 1920px !default;
+
+$breakpoints: (
+  'xs': '(max-width: #{$sm - 1})',
+  'sm': '(min-width: #{$sm})',
+  'md': '(min-width: #{$md})',
+  'lg': '(min-width: #{$lg})',
+  'xl': '(min-width: #{$xl})',
+) !default;
+
+$breakpoints-spec: (
+  'xs-only': '(max-width: #{$sm - 1})',
+  'sm-and-up': '(min-width: #{$sm})',
+  'sm-only': '(min-width: #{$sm}) and (max-width: #{$md - 1})',
+  'sm-and-down': '(max-width: #{$md - 1})',
+  'md-and-up': '(min-width: #{$md})',
+  'md-only': '(min-width: #{$md}) and (max-width: #{$lg - 1})',
+  'md-and-down': '(max-width: #{$lg - 1})',
+  'lg-and-up': '(min-width: #{$lg})',
+  'lg-only': '(min-width: #{$lg}) and (max-width: #{$xl - 1})',
+  'lg-and-down': '(max-width: #{$xl - 1})',
+  'xl-only': '(min-width: #{$xl})',
+) !default;

+ 12 - 0
src/assets/style/element.scss

@@ -0,0 +1,12 @@
+/* just override what you need */
+@forward 'element-plus/theme-chalk/src/common/var.scss' with (
+  $colors: (
+    'primary': (
+      'base': #0673f9,
+    ),
+  )
+);
+
+// If you just import on demand, you can ignore the following content.
+// 如果你想导入所有样式:
+// @use 'element-plus/theme-chalk/src/index.scss' as *;

+ 0 - 0
src/assets/style/home.less → src/assets/style/home.scss


+ 0 - 6
src/assets/style/index.less

@@ -1,6 +0,0 @@
-@import url('./var.less');
-@import url('./reset.less');
-@import url('./element-custom.less');
-@import url('./base.less');
-@import url('./home.less');
-@import url('./pages.less');

+ 6 - 0
src/assets/style/index.scss

@@ -0,0 +1,6 @@
+@use './var.scss';
+@use './reset.scss';
+@use './element-custom.scss';
+@use './base.scss';
+@use './home.scss';
+@use './pages.scss';

+ 26 - 30
src/assets/style/pages.less → src/assets/style/pages.scss

@@ -10,13 +10,16 @@
   background-image: url(assets/images/login-back.png);
   background-repeat: no-repeat;
   background-size: cover;
+
+  min-width: 800px;
+  min-height: 500px;
 }
 
 .login-footer {
   position: absolute;
-  bottom: 0;
+  bottom: 26px;
   width: 100%;
-  padding: 10px;
+  padding: 0 10px;
   color: var(--color-text-gray);
   text-align: center;
 
@@ -37,44 +40,39 @@
   height: 500px;
   transform: translate(-50%, -50%);
   overflow: hidden;
-  border-radius: 30px;
+  border-radius: 16px;
   background-color: #fff;
   backdrop-filter: blur(10px);
 }
 .login-theme {
   width: 400px;
   height: 100%;
-  border-radius: 30px 0 0 30px;
+  padding: 40px;
+  border-radius: 16px 0 0 16px;
   background-image: url(assets/images/login-theme.png);
   background-size: 100% 100%;
   float: left;
   position: relative;
+  color: #05174e;
 
   > h2 {
-    position: absolute;
-    top: 192px;
-    left: 35px;
-    font-weight: bold;
-    font-size: 42px;
-    color: #ffffff;
-    line-height: 56px;
-    font-style: normal;
-  }
-
-  .login-webinfo {
-    position: absolute;
-    bottom: 48px;
-    left: 35px;
+    height: 44px;
+    line-height: 44px;
+    font-weight: 900;
+    font-size: 36px;
 
-    font-weight: 400;
-    font-size: 14px;
-    color: #e5e5e5;
-    line-height: 22px;
-
-    a:hover {
-      opacity: 0.8;
+    span {
+      font-size: 40px;
+      color: #0077ff;
     }
   }
+
+  > p {
+    margin-top: 6px;
+    height: 28px;
+    line-height: 28px;
+    font-size: 20px;
+  }
 }
 .login-body {
   margin-left: 400px;
@@ -116,11 +114,9 @@
   }
 }
 .login-form {
-  .login-submit-btn {
-    width: 100%;
-    height: 48px;
-    border-radius: 24px;
-    font-size: 18px;
+  .submit-btn {
+    border-radius: 6px;
+    box-shadow: 0px 4px 10px #7fc3ff;
   }
 }
 

+ 0 - 0
src/assets/style/reset.less → src/assets/style/reset.scss


+ 0 - 90
src/assets/style/var.less

@@ -1,90 +0,0 @@
-body {
-  /* color -------------------> */
-  --color-text-dark: #262626;
-  --color-text-dark-1: #595959;
-  --color-text-gray: #8c8c8c;
-  --color-text-gray-1: #aaa;
-  --color-text-gray-2: #bfbfbf;
-  --color-text-gray-3: #d3d5e0;
-  --color-text-gray-4: #e0e1eb;
-  --color-border: #e5e5e5;
-  --color-border-bold: #d5d5d5;
-  --color-background: #f2f3f5;
-  --form-color-border: #d9d9d9;
-
-  /* status */
-  --color-primary: #165dff;
-  --color-primary-light: #e8f3ff;
-  --color-success: #00b42a;
-  --color-success-light: #32cf8a;
-  --color-warning: #ff9427;
-  --color-danger: #fe5d4e;
-  --color-cyan: #2abcff;
-  --color-cyan-light: #5fc9fa;
-  --color-blue: #3491fa;
-  --color-blue-dark: #172666;
-  --color-purple: #9877ff;
-  --color-white: #fff;
-  --color-dark: #262626;
-  --color-transparent: transparent;
-
-  /* shadow */
-  --shadow-light: 0 0 1px rgba(0 0 0 0.15);
-
-  /* size -------------------> */
-  --font-size-base: 14px;
-  --font-size-medium: 16px;
-  --font-size-large: 18px;
-  --border-radius: 8px;
-  --border-radius-large: 12px;
-  --border-radius-huge: 20px;
-
-  /* font-family */
-  --font-family: SourceHanSansCN, 'Helvetica Neue', Helvetica, 'PingFang SC',
-    'Hiragino Sans GB', 'Microsoft YaHei', Arial, sans-serif;
-
-  // arco
-  --border-radius-small: 4px;
-  --color-text-1: --color-text-dark-1;
-}
-
-// 自定义var
-@input-color-border: var(--form-color-border);
-@input-color-border_disabled: var(--form-color-border);
-@input-color-border_hover: var(--form-color-border);
-@input-color-border_error: var(--form-color-border);
-@input-color-border_error_hover: var(--form-color-border);
-
-@input-color-bg: var(--color-transparent);
-@input-color-bg_hover: var(--color-transparent);
-@input-color-bg_focus: var(--color-transparent);
-
-@input-color-bg_error: var(--color-transparent);
-@input-color-bg_error_hover: var(--color-transparent);
-
-@form-color-bg_error: var(--color-transparent);
-@form-color-bg_error_hover: var(--color-transparent);
-@form-color-bg_error_focus: var(--color-transparent);
-@form-color-bg_warning: var(--color-transparent);
-@form-color-bg_warning_hover: var(--color-transparent);
-@form-color-bg_warning_focus: var(--color-transparent);
-@form-color-bg_success: var(--color-transparent);
-@form-color-bg_success_hover: var(--color-transparent);
-@form-color-bg_success_focus: var(--color-transparent);
-
-@form-color-border_validating: var(--form-color-border);
-@form-color-border_validating_hover: var(--color-primary-6);
-@form-color-border_error: rgb(var(--danger-6));
-@form-color-border_error_hover: rgb(var(--danger-6));
-@form-color-border_success: rgb(var(--success-6));
-@form-color-border_success_hover: rgb(var(--success-6));
-@form-color-border_warning: rgb(var(--warning-6));
-@form-color-border_warning_hover: rgb(var(--warning-6));
-
-@picker-color-border: var(--form-color-border);
-@picker-color-border_hover: var(--form-color-border);
-@picker-color-border_disabled: var(--color-border);
-@picker-color-border_error: rgb(var(--danger-6));
-@picker-color-border_error_hover: rgb(var(--danger-6));
-@picker-color-bg: var(--color-transparent);
-@picker-color-bg_hover: var(--color-transparent);

+ 49 - 0
src/assets/style/var.scss

@@ -0,0 +1,49 @@
+body {
+  /* color -------------------> */
+  --color-text-dark: #262626;
+  --color-text-dark-1: #595959;
+  --color-text-gray: #8c8c8c;
+  --color-text-gray-1: #aaa;
+  --color-text-gray-2: #bfbfbf;
+  --color-text-gray-3: #d3d5e0;
+  --color-text-gray-4: #e0e1eb;
+  --color-border: #e5e5e5;
+  --color-border-bold: #d5d5d5;
+  --color-background: #f2f3f5;
+  --form-color-border: #d9d9d9;
+
+  /* status */
+  --color-primary: #0673f9;
+  --color-primary-light: #e8f3ff;
+  --color-success: #00b42a;
+  --color-success-light: #32cf8a;
+  --color-warning: #ff9427;
+  --color-danger: #fe5d4e;
+  --color-cyan: #0077ff;
+  --color-cyan-light: #5fc9fa;
+  --color-blue: #3491fa;
+  --color-blue-dark: #172666;
+  --color-purple: #9877ff;
+  --color-white: #fff;
+  --color-dark: #262626;
+  --color-transparent: transparent;
+
+  /* shadow */
+  --shadow-light: 0 0 1px rgba(0 0 0 0.15);
+
+  /* size -------------------> */
+  --font-size-base: 14px;
+  --font-size-medium: 16px;
+  --font-size-large: 18px;
+  --border-radius: 8px;
+  --border-radius-large: 12px;
+  --border-radius-huge: 20px;
+
+  /* font-family */
+  --font-family: SourceHanSansCN, 'Helvetica Neue', Helvetica, 'PingFang SC',
+    'Hiragino Sans GB', 'Microsoft YaHei', Arial, sans-serif;
+
+  // arco
+  --border-radius-small: 4px;
+  --color-text-1: --color-text-dark-1;
+}

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 5 - 0
src/assets/svgs/icon-ai.svg


+ 12 - 0
src/assets/svgs/icon-arrow-right.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="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-497, -184)">
+            <g id="icon-进入" transform="translate(497, 184)">
+                <rect id="caret-right-small-(Background)" fill-opacity="0" fill="#FFFFFF" x="0" y="0" width="16" height="16"></rect>
+                <polygon id="right" fill-opacity="0.9" fill="#000201" transform="translate(8.25, 8) scale(-1, -1) rotate(90) translate(-8.25, -8)" points="5.25 5.75 8.25 10.25 11.25 5.75"></polygon>
+            </g>
+        </g>
+    </g>
+</svg>

+ 17 - 0
src/assets/svgs/icon-arrow.svg

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="22px" height="84px" viewBox="0 0 22 84" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>image-下箭头</title>
+    <defs>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
+            <stop stop-color="#0072FF" offset="0%"></stop>
+            <stop stop-color="#00A6FC" offset="100%"></stop>
+        </linearGradient>
+    </defs>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-1203, -415)" fill="url(#linearGradient-1)">
+            <g id="image-下箭头" transform="translate(1214, 457) scale(-1, 1) rotate(-180) translate(-1214, -457)translate(1203, 415)">
+                <path d="M10.8533333,-1.02338721e-13 L22,18.3737379 L15.313,18.373 L15.3133037,84 L6.9696,84 L6.969,18.373 L0,18.3737379 L10.8533333,-1.02338721e-13 Z" id="形状结合" fill-rule="nonzero"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-data-check.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-数据检查-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -587)" fill="#B8CADE">
+            <g id="icon-数据检查-off" transform="translate(24, 587)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M5.2609375,9.15625 L10.7390625,9.15625 L12.065625,6.84375 L3.934375,6.84375 L5.2609375,9.15625 Z M13.7515625,2.40625 L2.2484375,2.40625 C1.865625,2.40625 1.6265625,2.8234375 1.81875,3.15625 L3.359375,5.84375 L12.640625,5.84375 L14.1828125,3.15625 C14.3734375,2.8234375 14.134375,2.40625 13.7515625,2.40625 Z M5.453125,13.09375 C5.453125,13.3703125 5.675,13.59375 5.95,13.59375 L10.05,13.59375 C10.325,13.59375 10.546875,13.3703125 10.546875,13.09375 L10.546875,10.15625 L5.453125,10.15625 L5.453125,13.09375 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-exam-manage.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-考试管理-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -167)" fill="#B8CADE">
+            <g id="icon-考试管理-off" transform="translate(24, 167)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M13.75,1.75 L2.25,1.75 C1.9734375,1.75 1.75,1.9734375 1.75,2.25 L1.75,13.75 C1.75,14.0265625 1.9734375,14.25 2.25,14.25 L13.75,14.25 C14.0265625,14.25 14.25,14.0265625 14.25,13.75 L14.25,2.25 C14.25,1.9734375 14.0265625,1.75 13.75,1.75 Z M5.9375,10.875 C5.5921875,10.875 5.3125,10.5953125 5.3125,10.25 C5.3125,9.9046875 5.5921875,9.625 5.9375,9.625 C6.2828125,9.625 6.5625,9.9046875 6.5625,10.25 C6.5625,10.5953125 6.2828125,10.875 5.9375,10.875 Z M5.9375,8.625 C5.5921875,8.625 5.3125,8.3453125 5.3125,8 C5.3125,7.6546875 5.5921875,7.375 5.9375,7.375 C6.2828125,7.375 6.5625,7.6546875 6.5625,8 C6.5625,8.3453125 6.2828125,8.625 5.9375,8.625 Z M5.9375,6.375 C5.5921875,6.375 5.3125,6.0953125 5.3125,5.75 C5.3125,5.4046875 5.5921875,5.125 5.9375,5.125 C6.2828125,5.125 6.5625,5.4046875 6.5625,5.75 C6.5625,6.0953125 6.2828125,6.375 5.9375,6.375 Z M10.6875,10.625 C10.6875,10.69375 10.63125,10.75 10.5625,10.75 L7.6875,10.75 C7.61875,10.75 7.5625,10.69375 7.5625,10.625 L7.5625,9.875 C7.5625,9.80625 7.61875,9.75 7.6875,9.75 L10.5625,9.75 C10.63125,9.75 10.6875,9.80625 10.6875,9.875 L10.6875,10.625 Z M10.6875,8.375 C10.6875,8.44375 10.63125,8.5 10.5625,8.5 L7.6875,8.5 C7.61875,8.5 7.5625,8.44375 7.5625,8.375 L7.5625,7.625 C7.5625,7.55625 7.61875,7.5 7.6875,7.5 L10.5625,7.5 C10.63125,7.5 10.6875,7.55625 10.6875,7.625 L10.6875,8.375 Z M10.6875,6.125 C10.6875,6.19375 10.63125,6.25 10.5625,6.25 L7.6875,6.25 C7.61875,6.25 7.5625,6.19375 7.5625,6.125 L7.5625,5.375 C7.5625,5.30625 7.61875,5.25 7.6875,5.25 L10.5625,5.25 C10.63125,5.25 10.6875,5.30625 10.6875,5.375 L10.6875,6.125 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 6 - 6
src/assets/svgs/icon-home.svg

@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<svg 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>
+<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="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="02.01-授权管理-授权管理" transform="translate(-236, -75)">
-            <g id="icon-主页" transform="translate(236, 75)">
-                <rect id="home-(Background)" opacity="0" x="0" y="0" width="16" height="16"></rect>
-                <path d="M6.00003767,12.0000153 L10.0000381,12.0000153 L10.0000381,11.0000153 L6.00003767,11.0000153 L6.00003767,12.0000153 Z M14.8535919,8.14646196 L14.1464844,8.85356855 L13.0000381,7.70712233 L13.0000381,13.5000153 C13.0000381,14.0523 12.5523229,14.5000153 12.0000381,14.5000153 L4.00003779,14.5000153 C3.44775304,14.5000153 3.00003779,14.0523 3.00003779,13.5000153 L3.00003779,7.70712185 L3.00003779,7.70712185 L1.8535912,8.85356855 L1.14648438,8.14646196 L7.64648428,1.64646111 C7.84174641,1.45119895 8.1583289,1.45119892 8.35359106,1.64646106 C8.35359107,1.64646106 8.35359108,1.64646107 8.35359109,1.64646108 L14.8535919,8.14646196 L14.8535919,8.14646196 Z M12.0000381,6.70712233 L12.0000381,13.5000153 L4.00003767,13.5000153 L4.00003767,6.70712185 L8.00003767,2.70712197 L12.0000381,6.70712233 Z" id="home" fill-opacity="0.9"></path>
+        <g id="02.01-主页导览" transform="translate(-24, -83)">
+            <g id="icon-主页导览-白" transform="translate(24, 83)">
+                <rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M14.7890625,7.890625 L8.353125,1.459375 C8.1578125,1.2640625 7.8421875,1.2640625 7.646875,1.459375 L1.2109375,7.890625 C1.0234375,8.078125 0.9171875,8.3328125 0.9171875,8.5984375 C0.9171875,9.15 1.365625,9.5984375 1.9171875,9.5984375 L2.5953125,9.5984375 L2.5953125,14.1875 C2.5953125,14.4640625 2.81875,14.6875 3.0953125,14.6875 L7,14.6875 L7,11.1875 L8.75,11.1875 L8.75,14.6875 L12.9046875,14.6875 C13.18125,14.6875 13.4046875,14.4640625 13.4046875,14.1875 L13.4046875,9.5984375 L14.0828125,9.5984375 C14.3484375,9.5984375 14.603125,9.49375 14.790625,9.3046875 C15.1796875,8.9140625 15.1796875,8.28125 14.7890625,7.890625 L14.7890625,7.890625 Z" id="路径" fill="#FFFFFF"></path>
             </g>
         </g>
     </g>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 8 - 0
src/assets/svgs/icon-init.svg


+ 12 - 0
src/assets/svgs/icon-issue.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-问题试卷-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -419)" fill="#B8CADE">
+            <g id="icon-问题试卷-off" transform="translate(24, 419)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M8,1 C4.134375,1 1,4.134375 1,8 C1,11.865625 4.134375,15 8,15 C11.865625,15 15,11.865625 15,8 C15,4.134375 11.865625,1 8,1 Z M8,12.0625 C7.6546875,12.0625 7.375,11.7828125 7.375,11.4375 C7.375,11.0921875 7.6546875,10.8125 8,10.8125 C8.3453125,10.8125 8.625,11.0921875 8.625,11.4375 C8.625,11.7828125 8.3453125,12.0625 8,12.0625 Z M8.9828125,8.6328125 C8.69375,8.74375 8.5,9.025 8.5,9.3328125 L8.5,9.6875 C8.5,9.75625 8.44375,9.8125 8.375,9.8125 L7.625,9.8125 C7.55625,9.8125 7.5,9.75625 7.5,9.6875 L7.5,9.3515625 C7.5,8.990625 7.6046875,8.634375 7.8109375,8.3375 C8.0125,8.046875 8.29375,7.825 8.625,7.6984375 C9.15625,7.49375 9.5,7.0484375 9.5,6.5625 C9.5,5.8734375 8.8265625,5.3125 8,5.3125 C7.1734375,5.3125 6.5,5.8734375 6.5,6.5625 L6.5,6.68125 C6.5,6.75 6.44375,6.80625 6.375,6.80625 L5.625,6.80625 C5.55625,6.80625 5.5,6.75 5.5,6.68125 L5.5,6.5625 C5.5,5.9484375 5.76875,5.375 6.25625,4.9484375 C6.725,4.5375 7.34375,4.3125 8,4.3125 C8.65625,4.3125 9.275,4.5390625 9.74375,4.9484375 C10.23125,5.375 10.5,5.9484375 10.5,6.5625 C10.5,7.465625 9.9046875,8.278125 8.9828125,8.6328125 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-jump.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="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-160, -777)" fill="#000000">
+            <g id="icon-跳转" transform="translate(160, 777)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M13.75,1.75 L2.25,1.75 C1.9734375,1.75 1.75,1.9734375 1.75,2.25 L1.75,13.75 C1.75,14.0265625 1.9734375,14.25 2.25,14.25 L7.875,14.25 C7.94375,14.25 8,14.19375 8,14.125 L8,13.25 C8,13.18125 7.94375,13.125 7.875,13.125 L2.875,13.125 L2.875,2.875 L13.125,2.875 L13.125,7.875 C13.125,7.94375 13.18125,8 13.25,8 L14.125,8 C14.19375,8 14.25,7.94375 14.25,7.875 L14.25,2.25 C14.25,1.9734375 14.0265625,1.75 13.75,1.75 Z M10.2078125,9.365625 L11.0234375,8.55 C11.096875,8.4765625 11.053125,8.35 10.95,8.3375 L8.146875,8.009375 C8.0671875,8 7.9984375,8.0671875 8.0078125,8.1484375 L8.3359375,10.9515625 C8.3484375,11.0546875 8.475,11.0984375 8.5484375,11.025 L9.3671875,10.20625 L13.3703125,14.209375 C13.41875,14.2578125 13.4984375,14.2578125 13.546875,14.209375 L14.209375,13.546875 C14.2578125,13.4984375 14.2578125,13.41875 14.209375,13.3703125 L10.2078125,9.365625 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-log.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-操作日志-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -629)" fill="#B8CADE">
+            <g id="icon-操作日志-off" transform="translate(24, 629)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M13.353125,4.5109375 C13.446875,4.6046875 13.5,4.73125 13.5,4.8640625 L13.5,14.5 C13.5,14.7765625 13.2765625,15 13,15 L3,15 C2.7234375,15 2.5,14.7765625 2.5,14.5 L2.5,1.5 C2.5,1.2234375 2.7234375,1 3,1 L9.6359375,1 C9.76875,1 9.896875,1.053125 9.990625,1.146875 L13.353125,4.5109375 Z M12.346875,5.09375 L9.40625,2.153125 L9.40625,5.09375 L12.346875,5.09375 Z M5,7.53125 C4.93096441,7.53125 4.875,7.58721441 4.875,7.65625 L4.875,8.40625 C4.875,8.47528559 4.93096441,8.53125 5,8.53125 L11,8.53125 C11.0690356,8.53125 11.125,8.47528559 11.125,8.40625 L11.125,7.65625 C11.125,7.58721441 11.0690356,7.53125 11,7.53125 L5,7.53125 Z M5,9.65625 C4.93096441,9.65625 4.875,9.71221441 4.875,9.78125 L4.875,10.53125 C4.875,10.6002856 4.93096441,10.65625 5,10.65625 L7.875,10.65625 C7.94403559,10.65625 8,10.6002856 8,10.53125 L8,9.78125 C8,9.71221441 7.94403559,9.65625 7.875,9.65625 L5,9.65625 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 7 - 0
src/assets/svgs/icon-logo.svg


+ 3 - 3
src/assets/svgs/icon-logout.svg

@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<svg viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<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="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="02.01-授权管理-授权管理" transform="translate(-1398, -19)">
+        <g id="02.01-主页导览" transform="translate(-1398, -19)">
             <g id="icon-退出" transform="translate(1398, 19)">
                 <rect id="logout-(Background)" opacity="0" x="0" y="0" width="18" height="18"></rect>
-                <path d="M10.6871798,2.25 C10.9978269,2.25 11.2496609,2.5018425 11.2496609,2.8125 L11.2496609,5.625 L10.1246986,5.625 L10.1246986,3.375 L2.24996233,3.375 L2.24996233,14.625 L10.1246986,14.625 L10.1246986,12.375 L11.2496609,12.375 L11.2496609,15.1875 C11.2496609,15.4981125 10.9978269,15.75 10.6871798,15.75 L1.68748116,15.75 C1.37683407,15.75 1.125,15.4981125 1.125,15.1875 L1.125,2.8125 C1.125,2.5018425 1.37683407,2.25 1.68748116,2.25 Z M13.4309636,5.11551 L16.9177359,8.60237858 C17.1374522,8.82205308 17.1374522,9.17821692 16.9177359,9.39789142 L13.4309636,12.88476 L12.6354625,12.0892472 L15.1620308,9.56265292 L6.74974414,9.56263042 L6.74974414,8.43759458 L15.1620308,8.43761708 L12.6354625,5.91103409 L13.4309636,5.11551 Z" id="logout" fill="#595959"></path>
+                <path d="M10.6871798,2.25 C10.9978269,2.25 11.2496609,2.5018425 11.2496609,2.8125 L11.2496609,5.625 L10.1246986,5.625 L10.1246986,3.375 L2.24996233,3.375 L2.24996233,14.625 L10.1246986,14.625 L10.1246986,12.375 L11.2496609,12.375 L11.2496609,15.1875 C11.2496609,15.4981125 10.9978269,15.75 10.6871798,15.75 L1.68748116,15.75 C1.37683407,15.75 1.125,15.4981125 1.125,15.1875 L1.125,2.8125 C1.125,2.5018425 1.37683407,2.25 1.68748116,2.25 Z M13.4309636,5.11551 L16.9177359,8.60237858 C17.1374522,8.82205308 17.1374522,9.17821692 16.9177359,9.39789142 L13.4309636,12.88476 L12.6354625,12.0892472 L15.1620308,9.56265292 L6.74974414,9.56263042 L6.74974414,8.43759458 L15.1620308,8.43761708 L12.6354625,5.91103409 L13.4309636,5.11551 Z" id="logout" fill="#262626" fill-rule="evenodd"></path>
             </g>
         </g>
     </g>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 7 - 0
src/assets/svgs/icon-mark-manage-s.svg


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 7 - 0
src/assets/svgs/icon-mark-manage.svg


+ 12 - 0
src/assets/svgs/icon-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="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-224, -19)">
+            <g id="icon-导航栏收起" transform="translate(224, 19)">
+                <rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="18" height="18"></rect>
+                <path d="M7.171875,7.76953125 L15.609375,7.76953125 C15.6867188,7.76953125 15.75,7.70625 15.75,7.62890625 L15.75,6.64453125 C15.75,6.5671875 15.6867188,6.50390625 15.609375,6.50390625 L7.171875,6.50390625 C7.09453125,6.50390625 7.03125,6.5671875 7.03125,6.64453125 L7.03125,7.62890625 C7.03125,7.70625 7.09453125,7.76953125 7.171875,7.76953125 Z M7.03125,11.3554688 C7.03125,11.4328125 7.09453125,11.4960938 7.171875,11.4960938 L15.609375,11.4960938 C15.6867188,11.4960938 15.75,11.4328125 15.75,11.3554688 L15.75,10.3710938 C15.75,10.29375 15.6867188,10.2304688 15.609375,10.2304688 L7.171875,10.2304688 C7.09453125,10.2304688 7.03125,10.29375 7.03125,10.3710938 L7.03125,11.3554688 Z M15.890625,2.8125 L2.109375,2.8125 C2.03203125,2.8125 1.96875,2.87578125 1.96875,2.953125 L1.96875,3.9375 C1.96875,4.01484375 2.03203125,4.078125 2.109375,4.078125 L15.890625,4.078125 C15.9679688,4.078125 16.03125,4.01484375 16.03125,3.9375 L16.03125,2.953125 C16.03125,2.87578125 15.9679688,2.8125 15.890625,2.8125 Z M15.890625,13.921875 L2.109375,13.921875 C2.03203125,13.921875 1.96875,13.9851563 1.96875,14.0625 L1.96875,15.046875 C1.96875,15.1242188 2.03203125,15.1875 2.109375,15.1875 L15.890625,15.1875 C15.9679688,15.1875 16.03125,15.1242188 16.03125,15.046875 L16.03125,14.0625 C16.03125,13.9851563 15.9679688,13.921875 15.890625,13.921875 Z M2.02851563,9.12128906 L4.77597656,11.2851563 C4.87792969,11.3660156 5.02910156,11.2939453 5.02910156,11.1638672 L5.02910156,6.83613281 C5.02910156,6.70605469 4.8796875,6.63398438 4.77597656,6.71484375 L2.02851563,8.87871094 C1.94941406,8.94023438 1.94941406,9.05976563 2.02851563,9.12128906 Z" id="形状" fill="#9B9FB0"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-notice.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="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-1364, -19)">
+            <g id="icon-提醒" transform="translate(1364, 19)">
+                <rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="18" height="18"></rect>
+                <path d="M14.34375,13.5 L13.921875,13.5 L13.921875,7.5234375 C13.921875,5.04316406 12.0884766,2.99355469 9.703125,2.65253906 L9.703125,1.96875 C9.703125,1.58027344 9.38847656,1.265625 9,1.265625 C8.61152344,1.265625 8.296875,1.58027344 8.296875,1.96875 L8.296875,2.65253906 C5.91152344,2.99355469 4.078125,5.04316406 4.078125,7.5234375 L4.078125,13.5 L3.65625,13.5 C3.34511719,13.5 3.09375,13.7513672 3.09375,14.0625 L3.09375,14.625 C3.09375,14.7023438 3.15703125,14.765625 3.234375,14.765625 L7.03125,14.765625 C7.03125,15.8519531 7.91367187,16.734375 9,16.734375 C10.0863281,16.734375 10.96875,15.8519531 10.96875,14.765625 L14.765625,14.765625 C14.8429687,14.765625 14.90625,14.7023438 14.90625,14.625 L14.90625,14.0625 C14.90625,13.7513672 14.6548828,13.5 14.34375,13.5 Z M9,15.609375 C8.53417969,15.609375 8.15625,15.2314453 8.15625,14.765625 L9.84375,14.765625 C9.84375,15.2314453 9.46582031,15.609375 9,15.609375 Z M5.34375,13.5 L5.34375,7.5234375 C5.34375,6.54609375 5.7234375,5.62851562 6.41425781,4.93769531 C7.10507812,4.246875 8.02265625,3.8671875 9,3.8671875 C9.97734375,3.8671875 10.8949219,4.246875 11.5857422,4.93769531 C12.2765625,5.62851562 12.65625,6.54609375 12.65625,7.5234375 L12.65625,13.5 L5.34375,13.5 Z" id="形状" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-reject-manage.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-打回试卷-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -377)" fill="#B8CADE">
+            <g id="icon-打回试卷-off" transform="translate(24, 377)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M8,1 C4.134375,1 1,4.134375 1,8 C1,11.865625 4.134375,15 8,15 C11.865625,15 15,11.865625 15,8 C15,4.134375 11.865625,1 8,1 Z M7.5,4.625 C7.5,4.55625 7.55625,4.5 7.625,4.5 L8.375,4.5 C8.44375,4.5 8.5,4.55625 8.5,4.625 L8.5,8.875 C8.5,8.94375 8.44375,9 8.375,9 L7.625,9 C7.55625,9 7.5,8.94375 7.5,8.875 L7.5,4.625 Z M8,11.5 C7.5859375,11.5 7.25,11.1640625 7.25,10.75 C7.25,10.3359375 7.5859375,10 8,10 C8.4140625,10 8.75,10.3359375 8.75,10.75 C8.75,11.1640625 8.4140625,11.5 8,11.5 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-review-s.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="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-1127, -535)">
+            <g id="icon-复核处理" transform="translate(1127, 535)">
+                <path d="M16,0 L16,14.3977619 C16,15.2812802 15.2837669,15.9975132 14.4002487,15.9975132 L8.96109417,15.9975132 C8.43098322,15.9975132 8.00124338,15.5677734 8.00124338,15.0376624 C8.00124338,14.5075515 8.43098322,14.0778117 8.96109417,14.0778117 L14.0802984,14.0778117 L14.0802984,1.91970159 L1.92218835,1.91970159 L1.92218835,8.95860741 C1.92218835,9.48871837 1.49244851,9.91845821 0.962337554,9.91845821 C0.432226598,9.91845821 0.0024867595,9.48871837 0.0024867595,8.95860741 L0.0024867595,0 C0.0024867595,0.716233064 0.718719824,0 1.60223808,0 L14.4002487,0 C15.2837669,0 16,0.716233064 16,1.59975132" id="形状" fill="#0673F9" fill-rule="nonzero"></path>
+                <path d="M8.04043729,9.8792643 C7.86033549,9.69853606 7.61568873,9.59695116 7.36054297,9.59695116 C7.10539722,9.59695116 6.86075046,9.69853606 6.68064866,9.8792643 L2.88203914,13.6778738 L1.64143199,12.4388664 C1.39852915,12.1959636 1.04449054,12.1010992 0.712679077,12.1900078 C0.380867616,12.2789164 0.121693362,12.5380907 0.0327847525,12.8699021 C-0.0561238571,13.2017136 0.0387405108,13.5557522 0.281643366,13.798655 L2.20134495,15.7183566 C2.38144676,15.8990849 2.62609351,16.0006698 2.88123927,16.0006698 C3.13638502,16.0006698 3.38103178,15.8990849 3.56113358,15.7183566 L8.04043729,11.2390529 C8.22116553,11.0589511 8.32275043,10.8143044 8.32275043,10.5591586 C8.32275043,10.3040129 8.22116553,10.0593661 8.04043729,9.8792643" id="路径" fill="#FF8463" fill-rule="nonzero"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-scan-progress.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-扫描进度-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -251)" fill="#B8CADE">
+            <g id="icon-扫描进度-off" transform="translate(24, 251)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M13.4859375,8.1015625 L7.8984375,8.1015625 L7.8984375,2.5140625 C7.8984375,2.4453125 7.8421875,2.3890625 7.7734375,2.3890625 L7.3671875,2.3890625 C6.525,2.3890625 5.70625,2.5546875 4.9375,2.8796875 C4.1953125,3.19375 3.5265625,3.64375 2.953125,4.2171875 C2.3796875,4.790625 1.9296875,5.4578125 1.615625,6.2015625 C1.290625,6.971875 1.125,7.7890625 1.125,8.6328125 C1.125,9.4765625 1.290625,10.2921875 1.615625,11.0625 C1.9296875,11.8046875 2.3796875,12.4734375 2.953125,13.046875 C3.5265625,13.6203125 4.19375,14.0703125 4.9375,14.384375 C5.7078125,14.7109375 6.5265625,14.8765625 7.36875,14.8765625 C8.2109375,14.8765625 9.0296875,14.7109375 9.7984375,14.3859375 C10.540625,14.071875 11.209375,13.621875 11.7828125,13.0484375 C12.35625,12.475 12.80625,11.8078125 13.1203125,11.0640625 C13.446875,10.29375 13.6125,9.475 13.6125,8.6328125 L13.6125,8.2265625 C13.6109375,8.1578125 13.5546875,8.1015625 13.4859375,8.1015625 Z M14.859375,7.234375 L14.81875,6.79375 C14.6859375,5.35625 14.0484375,4 13.0203125,2.9765625 C11.99375,1.95 10.6359375,1.3140625 9.19375,1.18125 L8.7515625,1.140625 C8.678125,1.134375 8.615625,1.190625 8.615625,1.2640625 L8.615625,7.259375 C8.615625,7.328125 8.671875,7.384375 8.740625,7.384375 L14.734375,7.36875 C14.8078125,7.3671875 14.865625,7.30625 14.859375,7.234375 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 15 - 0
src/assets/svgs/icon-score-export-s.svg

@@ -0,0 +1,15 @@
+<?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="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-669, -535)">
+            <g id="编组-3" transform="translate(661, 527)">
+                <g id="icon-成绩导出" transform="translate(8, 8)" fill-rule="nonzero">
+                    <path d="M1.60000195,14.399998 C1.16000216,14.399998 0.783202337,14.2434647 0.469602486,13.9303981 C0.156002635,13.6173315 -0.00053062351,13.2405315 1.3513361e-06,12.7999983 L1.3513361e-06,1.59999978 C1.3513361e-06,1.15999984 0.156802635,0.78346656 0.470402486,0.470399936 C0.784002336,0.157333312 1.16053549,0.000533333261 1.60000195,0 L12.7999966,0 C13.2399964,0 13.6167962,0.156799979 13.9303961,0.470399936 C14.2439959,0.783999893 14.4005292,1.16053318 14.3999972,1.59999978 L14.3999972,6.95999905 C14.1466626,6.83999907 13.8866628,6.73679908 13.6199962,6.65039909 C13.3533297,6.5639991 13.0799965,6.50053245 12.7999966,6.45999912 L12.7999966,1.59999978 L1.60000195,1.59999978 L1.60000195,12.7999983 L6.43999964,12.7999983 C6.47999963,13.0933315 6.54346626,13.3733315 6.63039955,13.6399981 C6.71733285,13.9066648 6.8205328,14.1599981 6.93999941,14.399998 L1.60000195,14.399998 Z M1.60000195,11.9999984 L1.60000195,12.7999983 L1.60000195,1.59999978 L1.60000195,6.45999912 L1.60000195,6.39999913 L1.60000195,11.9999984 Z M3.20000119,11.1999985 L6.45999964,11.1999985 C6.49999962,10.9199985 6.56346625,10.6466652 6.65039954,10.3799986 C6.73733284,10.113332 6.83386612,9.85333199 6.93999941,9.59999869 L3.20000119,9.59999869 L3.20000119,11.1999985 Z M3.20000119,7.99999891 L8.07999886,7.99999891 C8.50666533,7.59999896 8.98319843,7.26666568 9.50959818,6.99999905 C10.0359979,6.73333241 10.5994643,6.55333244 11.2000012,6.45999912 L11.2000012,6.39999913 L3.20000119,6.39999913 L3.20000119,7.99999891 Z M3.20000119,4.79999935 L11.2000012,4.79999935 L11.2000012,3.19999956 L3.20000119,3.19999956 L3.20000119,4.79999935 Z" id="形状" fill="#0673F9"></path>
+                    <path d="M11.9999984,15.9999989 C10.8933309,15.9999989 9.95013131,15.6098645 9.17039835,14.829598 C8.39066538,14.0493314 8.00053224,13.1061315 7.99999836,11.9999989 C7.99946557,10.8938652 8.38959872,9.95066531 9.17039835,9.17039875 C9.95119797,8.39013219 10.8943975,7.99999891 11.9999984,7.99999891 C13.1055965,7.99999891 14.0490627,8.39013219 14.8303957,9.17039875 C15.6117286,9.95066531 16.0015951,10.8938652 15.9999984,11.9999989 C15.9983951,13.1061315 15.6082619,14.0495981 14.8295957,14.830398 C14.0509294,15.6111979 13.1077298,16.0010645 11.9999984,15.9999989" id="路径" fill="#FF8463"></path>
+                    <polygon id="路径" fill="#FFFFFF" points="10.5599977 13.9999981 12.7999966 11.7599984 12.7999966 13.5999981 13.5999962 13.5999981 13.5999962 10.3999986 10.3999978 10.3999986 10.3999978 11.1999985 12.2399969 11.1999985 9.99999795 13.4399982"></polygon>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-score-query.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-成绩查询-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -503)" fill="#B8CADE">
+            <g id="icon-成绩查询-off" transform="translate(24, 503)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M13.5453125,2.6546875 L8.2359375,0.8453125 C8.171875,0.8234375 8.0859375,0.8125 8,0.8125 C7.9140625,0.8125 7.828125,0.8234375 7.7640625,0.8453125 L2.4546875,2.6546875 C2.325,2.6984375 2.21875,2.8484375 2.21875,2.9859375 L2.21875,10.5234375 C2.21875,10.6609375 2.3078125,10.8421875 2.415625,10.928125 L7.8015625,15.125 C7.85625,15.1671875 7.9265625,15.1890625 7.9984375,15.1890625 C8.0703125,15.1890625 8.1421875,15.1671875 8.1953125,15.125 L13.58125,10.928125 C13.6890625,10.84375 13.7781922,10.6625 13.7781922,10.5234375 L13.7781922,2.9859375 C13.78125,2.8484375 13.675,2.7 13.5453125,2.6546875 Z M9.79375,8.65625 C9.0359375,9.4140625 7.871875,9.51875 7.003125,8.9703125 L5.7921875,10.18125 C5.74375,10.2296875 5.6640625,10.2296875 5.615625,10.18125 L5.084375,9.65 C5.0359375,9.6015625 5.0359375,9.521875 5.084375,9.4734375 L6.2953125,8.2625 C5.746875,7.3921875 5.8515625,6.2296875 6.609375,5.471875 C7.4890625,4.5921875 8.9140625,4.5921875 9.79375,5.471875 C10.6734375,6.3515625 10.6734375,7.7765625 9.79375,8.65625 Z M7.31648437,7.94890625 C7.63262915,8.2652542 8.09355442,8.38886237 8.52556638,8.27315061 C8.95757834,8.15743884 9.29501355,7.81999469 9.41071388,7.38797967 C9.5264142,6.95596464 9.40279382,6.49504265 9.0864375,6.17890625 C8.77029272,5.8625583 8.30936746,5.73895013 7.8773555,5.85466189 C7.44534354,5.97037366 7.10790832,6.30781781 6.992208,6.73983283 C6.87650767,7.17184786 7.00012805,7.63276985 7.31648437,7.94890625 L7.31648437,7.94890625 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-score-review.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-成绩复核-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -461)" fill="#B8CADE">
+            <g id="icon-成绩复核-off" transform="translate(24, 461)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M13,1 L4.625,1 C4.55625,1 4.5,1.05625 4.5,1.125 L4.5,2 C4.5,2.06875 4.55625,2.125 4.625,2.125 L12.375,2.125 L12.375,12.875 C12.375,12.94375 12.43125,13 12.5,13 L13.375,13 C13.44375,13 13.5,12.94375 13.5,12.875 L13.5,1.5 C13.5,1.2234375 13.2765625,1 13,1 Z M11,3 L3,3 C2.7234375,3 2.5,3.2234375 2.5,3.5 L2.5,11.7921875 C2.5,11.925 2.553125,12.0515625 2.646875,12.1453125 L5.3546875,14.853125 C5.3890625,14.8875 5.428125,14.915625 5.4703125,14.9390625 L5.4703125,14.96875 L5.5359375,14.96875 C5.590625,14.9890625 5.6484375,15 5.7078125,15 L11,15 C11.2765625,15 11.5,14.7765625 11.5,14.5 L11.5,3.5 C11.5,3.2234375 11.2765625,3 11,3 Z M5.96875,14 L5.965625,14 L3.625,11.659375 L3.625,11.65625 L5.96875,11.65625 L5.96875,14 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 14 - 0
src/assets/svgs/icon-score-view-s.svg

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="15px" height="16px" viewBox="0 0 15 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-成绩复查</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-340, -535)">
+            <g id="编组-4" transform="translate(331, 527)">
+                <g id="icon-成绩复查" transform="translate(9, 8)">
+                    <path d="M1.66965174,15.1256338 C1.21049751,15.1256338 0.817572803,14.9612126 0.490877612,14.6323701 C0.164182421,14.3035276 0.00055655058,13.9077402 0,13.4450078 L0,1.68062598 C0,1.21845383 0.163625871,0.822946521 0.490877612,0.494104038 C0.818129353,0.165261555 1.21105406,0.000560208659 1.66965174,0 L7.51343284,0 L12.5223881,5.04187793 L12.5223881,7.21126761 L10.8527363,7.21126761 L10.8527363,5.88219092 L6.67860697,5.88219092 L6.67860697,1.68062598 L1.66965174,1.68062598 L1.66965174,13.4450078 L6.67860697,13.4450078 L6.67860697,15.1256338 L1.66965174,15.1256338 Z" id="路径" fill="#0673F9"></path>
+                    <path d="M15,12.056338 C15,9.87831366 13.2458919,8.11267606 11.0820896,8.11267606 C8.91828735,8.11267606 7.1641791,9.87831366 7.1641791,12.056338 C7.1641791,14.2343625 8.91828735,16 11.0820896,16 C13.2458919,16 15,14.2343625 15,12.056338 Z M10.5223881,13.5814083 L13.0410448,11.0464789 L12.6450557,10.6478873 L10.5223881,12.7847889 L9.51856346,11.7746479 L9.12313433,12.1726761 L10.5223881,13.5814083 Z" id="check-circle-filled" fill="#FF8463"></path>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 35 - 0
src/assets/svgs/icon-score.svg

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="30px" height="30px" viewBox="0 0 30 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-试卷总分</title>
+    <defs>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
+            <stop stop-color="#C5E3FF" offset="0%"></stop>
+            <stop stop-color="#509EFF" offset="100%"></stop>
+        </linearGradient>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-2">
+            <stop stop-color="#CFE0FE" offset="0%"></stop>
+            <stop stop-color="#FFFFFF" offset="100%"></stop>
+        </linearGradient>
+        <path d="M14.1890625,5.5171875 L10.221875,4.940625 L8.4484375,1.3453125 C8.4,1.246875 8.3203125,1.1671875 8.221875,1.11875 C7.975,0.996875 7.675,1.0984375 7.5515625,1.3453125 L5.778125,4.940625 L1.8109375,5.5171875 C1.7015625,5.5328125 1.6015625,5.584375 1.525,5.6625 C1.3328125,5.8609375 1.3359375,6.1765625 1.534375,6.3703125 L4.4046875,9.16875 L3.7265625,13.1203125 C3.7078125,13.228125 3.725,13.340625 3.7765625,13.4375 C3.9046875,13.68125 4.2078125,13.7765625 4.4515625,13.646875 L8,11.78125 L11.5484375,13.646875 C11.6453125,13.6984375 11.7578125,13.715625 11.865625,13.696875 C12.1375,13.65 12.3203125,13.3921875 12.2734375,13.1203125 L11.5953125,9.16875 L14.465625,6.3703125 C14.54375,6.29375 14.5953125,6.19375 14.6109375,6.084375 C14.653125,5.8109375 14.4625,5.5578125 14.1890625,5.5171875 Z" id="path-3"></path>
+        <filter x="-56.7%" y="-59.3%" width="213.3%" height="218.7%" filterUnits="objectBoundingBox" id="filter-4">
+            <feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+            <feGaussianBlur stdDeviation="2.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+            <feColorMatrix values="0 0 0 0 0.560724418   0 0 0 0 0.71321525   0 0 0 0 0.999009284  0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+        </filter>
+    </defs>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="06.02-全卷预览" transform="translate(-1197, -119)">
+            <g id="icon-试卷总分" transform="translate(1197, 119)">
+                <rect id="矩形-2" stroke="url(#linearGradient-1)" fill="#0673F9" x="0.5" y="0.5" width="29" height="29" rx="6"></rect>
+                <circle id="椭圆形-2" stroke="#82ADFF" fill="url(#linearGradient-2)" cx="15" cy="15" r="11"></circle>
+                <g id="star-filled" transform="translate(7, 7)">
+                    <rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                    <g id="路径">
+                        <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
+                        <use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-3"></use>
+                    </g>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 7 - 0
src/assets/svgs/icon-setting.svg


+ 12 - 0
src/assets/svgs/icon-student-manage.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-考生管理-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -209)" fill="#B8CADE">
+            <g id="icon-考生管理-off" transform="translate(24, 209)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M5.828125,6.421875 C5.3828125,6.421875 5.0203125,6.7859375 5.0203125,7.234375 C5.0203125,7.6828125 5.3828125,8.046875 5.828125,8.046875 C6.2734375,8.046875 6.6359375,7.6828125 6.6359375,7.234375 C6.6359375,6.7859375 6.2734375,6.421875 5.828125,6.421875 Z M14.5,2.5 L1.5,2.5 C1.2234375,2.5 1,2.7234375 1,3 L1,13 C1,13.2765625 1.2234375,13.5 1.5,13.5 L14.5,13.5 C14.7765625,13.5 15,13.2765625 15,13 L15,3 C15,2.7234375 14.7765625,2.5 14.5,2.5 Z M9.5,6.5625 C9.5,6.49375 9.515625,6.4375 9.5359375,6.4375 L11.4640625,6.4375 C11.484375,6.4375 11.5,6.49375 11.5,6.5625 L11.5,7.3125 C11.5,7.38125 11.484375,7.4375 11.4640625,7.4375 L9.5359375,7.4375 C9.515625,7.4375 9.5,7.38125 9.5,7.3125 L9.5,6.5625 Z M8.15625,10.515625 L7.4703125,10.515625 C7.4046875,10.515625 7.3515625,10.4640625 7.346875,10.3984375 C7.2875,9.609375 6.628125,8.984375 5.828125,8.984375 C5.028125,8.984375 4.36875,9.609375 4.309375,10.3984375 C4.3046875,10.4640625 4.2515625,10.515625 4.1859375,10.515625 L3.5,10.515625 C3.428125,10.515625 3.371875,10.45625 3.375,10.384375 C3.41875,9.5515625 3.875,8.8265625 4.540625,8.4140625 C4.2578125,8.103125 4.0859375,7.6890625 4.0859375,7.234375 C4.0859375,6.2671875 4.865625,5.484375 5.8265625,5.484375 C6.7875,5.484375 7.5671875,6.2671875 7.5671875,7.234375 C7.5671875,7.6890625 7.3953125,8.1015625 7.1125,8.4140625 C7.7796875,8.828125 8.234375,9.5515625 8.278125,10.384375 C8.284375,10.45625 8.228125,10.515625 8.15625,10.515625 Z M12.5140625,9.6875 L9.6109375,9.6875 C9.55,9.6875 9.5,9.63125 9.5,9.5625 L9.5,8.8125 C9.5,8.74375 9.55,8.6875 9.6109375,8.6875 L12.5125,8.6875 C12.5734375,8.6875 12.6234375,8.74375 12.6234375,8.8125 L12.6234375,9.5625 L12.625,9.5625 C12.625,9.63125 12.575,9.6875 12.5140625,9.6875 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-subject-analysis.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-科目分析-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -545)" fill="#B8CADE">
+            <g id="icon-科目分析-off" transform="translate(24, 545)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M13.875,12.375 L3.125,12.375 L3.125,2.625 C3.125,2.55625 3.06875,2.5 3,2.5 L2.125,2.5 C2.05625,2.5 2,2.55625 2,2.625 L2,13.375 C2,13.44375 2.05625,13.5 2.125,13.5 L13.875,13.5 C13.94375,13.5 14,13.44375 14,13.375 L14,12.5 C14,12.43125 13.94375,12.375 13.875,12.375 Z M4.25,11.375 L12.625,11.375 C12.69375,11.375 12.75,11.31875 12.75,11.25 L12.75,4.4375 C12.75,4.325 12.6140625,4.2703125 12.5359375,4.3484375 L9.25,7.634375 L7.290625,5.696875 C7.2421875,5.6484375 7.1625,5.6484375 7.1140625,5.696875 L4.1609375,8.659375 C4.1375,8.6828125 4.125,8.7140625 4.125,8.746875 L4.125,11.25 C4.125,11.31875 4.18125,11.375 4.25,11.375 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-subject-manage.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-科目管理-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -293)" fill="#B8CADE">
+            <g id="icon-科目管理-off" transform="translate(24, 293)">
+                <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M13,1 L3,1 C2.7234375,1 2.5,1.2234375 2.5,1.5 L2.5,9.765625 C2.5,9.75625 2.50625,9.75 2.515625,9.75 L5.9421875,9.75 L6.0234375,10.1359375 C6.2125,11.0703125 7.04375,11.75 8,11.75 C8.95625,11.75 9.7875,11.0703125 9.975,10.1359375 L10.05625,9.75 L13.484375,9.75 C13.49375,9.75 13.5,9.75625 13.5,9.765625 L13.5,1.5 C13.5,1.2234375 13.2765625,1 13,1 Z M11.125,7.703125 C11.125,7.771875 11.06875,7.828125 11,7.828125 L5,7.828125 C4.93125,7.828125 4.875,7.771875 4.875,7.703125 L4.875,6.953125 C4.875,6.884375 4.93125,6.828125 5,6.828125 L11,6.828125 C11.06875,6.828125 11.125,6.884375 11.125,6.953125 L11.125,7.703125 Z M11.125,5.203125 C11.125,5.271875 11.06875,5.328125 11,5.328125 L5,5.328125 C4.93125,5.328125 4.875,5.271875 4.875,5.203125 L4.875,4.453125 C4.875,4.384375 4.93125,4.328125 5,4.328125 L11,4.328125 C11.06875,4.328125 11.125,4.384375 11.125,4.453125 L11.125,5.203125 Z M13.484375,10.734375 L10.8453125,10.734375 C10.6640625,11.246875 10.3453125,11.7078125 9.921875,12.0578125 C9.3828125,12.5046875 8.7,12.75 8,12.75 C7.3,12.75 6.6171875,12.503125 6.078125,12.0578125 C5.6546875,11.7078125 5.3359375,11.246875 5.1546875,10.734375 L2.515625,10.734375 C2.50625,10.734375 2.5,10.728125 2.5,10.71875 L2.5,14.5 C2.5,14.7765625 2.7234375,15 3,15 L13,15 C13.2765625,15 13.5,14.7765625 13.5,14.5 L13.5,10.71875 C13.5,10.728125 13.49375,10.734375 13.484375,10.734375 Z" id="形状"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/icon-user-manage.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-用户管理-off</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-24, -125)">
+            <g id="icon-用户管理-off" transform="translate(24, 125)">
+                <polygon id="Rectangle-4117" opacity="0" transform="translate(8, 8) rotate(0) translate(-8, -8)" points="2.79752863e-06 2.79752865e-06 16.0000085 2.79752865e-06 16.0000085 16.0000085 2.79752863e-06 16.0000085"></polygon>
+                <path d="M8.00000613,8.50000054 C6.06701101,8.50000054 4.50000613,6.93299923 4.50000613,5.00000054 C4.50000613,3.06700411 6.06701101,1.50000054 8.00000613,1.50000054 C9.9330059,1.50000054 11.5000061,3.06700411 11.5000061,5.00000054 C11.5000061,6.93299923 9.9330059,8.50000054 8.00000613,8.50000054 Z M14.5000061,11.7246326 L14.5000061,14.0000005 C14.5000061,14.2761472 14.2761528,14.5000005 14.0000061,14.5000005 L2.00000613,14.5000005 C1.72386513,14.5000005 1.50000613,14.2761472 1.50000613,14.0000005 L1.50000613,11.7246326 C1.50000613,11.3546603 1.70302213,11.01223 2.03687054,10.8527785 C3.84941006,9.98707938 5.86651665,9.50000054 8.00000613,9.50000054 C10.1335007,9.50000054 12.1506075,9.98707938 13.9631473,10.8527785 C14.2969954,11.01223 14.5000061,11.3546603 14.5000061,11.7246326 Z" id="Union" fill="#B8CADE"></path>
+            </g>
+        </g>
+    </g>
+</svg>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 3 - 7
src/assets/svgs/icon-user.svg


+ 12 - 0
src/assets/svgs/icon-view.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="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="06.01-科目评卷管理" transform="translate(-1318, -144)">
+            <g id="icon-全卷预览" transform="translate(1318, 144)">
+                <rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M10.75,4.875 L10.75,4.125 C10.75,4.05625 10.69375,4 10.625,4 L4.625,4 C4.55625,4 4.5,4.05625 4.5,4.125 L4.5,4.875 C4.5,4.94375 4.55625,5 4.625,5 L10.625,5 C10.69375,5 10.75,4.94375 10.75,4.875 Z M4.625,6.25 C4.55625,6.25 4.5,6.30625 4.5,6.375 L4.5,7.125 C4.5,7.19375 4.55625,7.25 4.625,7.25 L7.5,7.25 C7.56875,7.25 7.625,7.19375 7.625,7.125 L7.625,6.375 C7.625,6.30625 7.56875,6.25 7.5,6.25 L4.625,6.25 Z M6.875,13.3125 L3.25,13.3125 L3.25,2.3125 L12,2.3125 L12,7.6875 C12,7.75625 12.05625,7.8125 12.125,7.8125 L13,7.8125 C13.06875,7.8125 13.125,7.75625 13.125,7.6875 L13.125,1.6875 C13.125,1.4109375 12.9015625,1.1875 12.625,1.1875 L2.625,1.1875 C2.3484375,1.1875 2.125,1.4109375 2.125,1.6875 L2.125,13.9375 C2.125,14.2140625 2.3484375,14.4375 2.625,14.4375 L6.875,14.4375 C6.94375,14.4375 7,14.38125 7,14.3125 L7,13.4375 C7,13.36875 6.94375,13.3125 6.875,13.3125 Z M13.8390625,14.1171875 L12.38125,12.659375 C12.7296875,12.1984375 12.9375,11.6234375 12.9375,11 C12.9375,9.48125 11.70625,8.25 10.1875,8.25 C8.66875,8.25 7.4375,9.48125 7.4375,11 C7.4375,12.51875 8.66875,13.75 10.1875,13.75 C10.746875,13.75 11.265625,13.5828125 11.7,13.296875 L13.1796875,14.7765625 C13.2046875,14.8015625 13.2359375,14.8125 13.2671875,14.8125 C13.2984375,14.8125 13.33125,14.8 13.3546875,14.7765625 L13.8390625,14.2921875 C13.8875,14.24375 13.8875,14.165625 13.8390625,14.1171875 Z M10.1875,12.75 C9.2203125,12.75 8.4375,11.9671875 8.4375,11 C8.4375,10.0328125 9.2203125,9.25 10.1875,9.25 C11.1546875,9.25 11.9375,10.0328125 11.9375,11 C11.9375,11.9671875 11.1546875,12.75 10.1875,12.75 Z" id="形状" fill="#262626"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 14 - 0
src/assets/svgs/icon-warning.svg

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="14px" height="16px" viewBox="0 0 14 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-异常卷处理</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="02.01-主页导览" transform="translate(-1128, -137)">
+            <g id="编组-10" transform="translate(1119, 129)">
+                <g id="icon-异常卷处理" transform="translate(9, 8)" fill-rule="nonzero">
+                    <path d="M10.2765957,4.33027523 L10.2765957,3.44954128 C10.2765957,3.36880734 10.2095745,3.30275229 10.1276596,3.30275229 L2.9787234,3.30275229 C2.89680851,3.30275229 2.82978723,3.36880734 2.82978723,3.44954128 L2.82978723,4.33027523 C2.82978723,4.41100917 2.89680851,4.47706422 2.9787234,4.47706422 L10.1276596,4.47706422 C10.2095745,4.47706422 10.2765957,4.41100917 10.2765957,4.33027523 M2.9787234,5.94495413 C2.89680851,5.94495413 2.82978723,6.01100917 2.82978723,6.09174312 L2.82978723,6.97247706 C2.82978723,7.05321101 2.89680851,7.11926606 2.9787234,7.11926606 L6.40425532,7.11926606 C6.48617021,7.11926606 6.55319149,7.05321101 6.55319149,6.97247706 L6.55319149,6.09174312 C6.55319149,6.01100917 6.48617021,5.94495413 6.40425532,5.94495413 L2.9787234,5.94495413 Z M5.65957447,14.2385321 L1.34042553,14.2385321 L1.34042553,1.32110092 L11.7659574,1.32110092 L11.7659574,7.63302752 C11.7659574,7.71376147 11.8329787,7.77981651 11.9148936,7.77981651 L12.9574468,7.77981651 C13.0393617,7.77981651 13.106383,7.71376147 13.106383,7.63302752 L13.106383,0.587155963 C13.106383,0.262385321 12.8401596,0 12.5106383,0 L0.595744681,0 C0.266223404,0 0,0.262385321 0,0.587155963 L0,14.9724771 C0,15.2972477 0.266223404,15.559633 0.595744681,15.559633 L5.65957447,15.559633 C5.74148936,15.559633 5.80851064,15.493578 5.80851064,15.412844 L5.80851064,14.3853211 C5.80851064,14.3045872 5.74148936,14.2385321 5.65957447,14.2385321" id="形状" fill="#0673F9"></path>
+                    <path d="M9.9787234,8.0733945 C12.199734,8.0733945 14,9.84770642 14,12.0366972 C14,14.2256881 12.199734,16 9.9787234,16 C7.75771277,16 5.95744681,14.2256881 5.95744681,12.0366972 C5.95744681,9.84770642 7.75771277,8.0733945 9.9787234,8.0733945 Z M9.9787234,12.9174312 C9.6497027,12.9174312 9.38297872,13.1803099 9.38297872,13.5045872 C9.38297872,13.8288644 9.6497027,14.0917431 9.9787234,14.0917431 C10.3077441,14.0917431 10.5744681,13.8288644 10.5744681,13.5045872 C10.5744681,13.1803099 10.3077441,12.9174312 9.9787234,12.9174312 Z M10.3510638,9.98165138 L9.60638298,9.98165138 C9.52446809,9.98165138 9.45744681,10.0477064 9.45744681,10.1284404 L9.45744681,12.1834862 C9.45744681,12.2642202 9.52446809,12.3302752 9.60638298,12.3302752 L10.3510638,12.3302752 C10.4329787,12.3302752 10.5,12.2642202 10.5,12.1834862 L10.5,10.1284404 C10.5,10.0477064 10.4329787,9.98165138 10.3510638,9.98165138 Z" id="形状结合" fill="#FF8463"></path>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 1 - 1
src/components/chart/index.vue

@@ -38,4 +38,4 @@
   });
 </script>
 
-<style scoped lang="less"></style>
+<style scoped lang="scss"></style>

+ 1 - 1
src/components/file-upload/index.vue

@@ -210,7 +210,7 @@
   defineExpose({ setAttachmentName });
 </script>
 
-<style lang="less">
+<style lang="scss">
   .file-upload {
     display: flex;
     justify-content: space-between;

+ 1 - 1
src/components/import-dialog/index.vue

@@ -323,7 +323,7 @@
   }
 </script>
 
-<style lang="less">
+<style lang="scss">
   .import-box {
     .import-temp {
       display: flex;

+ 4 - 3
src/components/select-exam/index.vue

@@ -1,9 +1,9 @@
 <template>
   <el-select
     v-model="selected"
-    :placeholder="placeholder"
-    :clearable="clearable"
-    :disabled="disabled"
+    :placeholder="props.placeholder"
+    :clearable="props.clearable"
+    :disabled="props.disabled"
     filterable
     default-first-option
     v-bind="attrs"
@@ -25,6 +25,7 @@
   defineOptions({
     name: 'SelectExam',
   });
+
   type ValueType = number | Array<number> | null;
 
   const props = withDefaults(

+ 78 - 20
src/components/svg-icon/index.vue

@@ -5,21 +5,50 @@
 <script setup lang="ts">
   import { snakeToHump } from '@/utils/utils';
   import { computed } from 'vue';
-  import IconHome from '../../assets/svgs/icon-home.svg?component';
-  import IconLogout from '../../assets/svgs/icon-logout.svg?component';
-  import IconOrg from '../../assets/svgs/icon-org.svg?component';
-  import IconSystem from '../../assets/svgs/icon-system.svg?component';
-  import IconUser from '../../assets/svgs/icon-user.svg?component';
-  import IconImport from '../../assets/svgs/icon-import.svg?component';
   import IconAdd from '../../assets/svgs/icon-add.svg?component';
-  import IconDelete from '../../assets/svgs/icon-delete.svg?component';
+  import IconAi from '../../assets/svgs/icon-ai.svg?component';
   import IconApply from '../../assets/svgs/icon-apply.svg?component';
+  import IconArrowRight from '../../assets/svgs/icon-arrow-right.svg?component';
+  import IconArrow from '../../assets/svgs/icon-arrow.svg?component';
   import IconAssign from '../../assets/svgs/icon-assign.svg?component';
-  import IconPrint from '../../assets/svgs/icon-print.svg?component';
+  import IconBase from '../../assets/svgs/icon-base.svg?component';
+  import IconDataCheck from '../../assets/svgs/icon-data-check.svg?component';
+  import IconDelete from '../../assets/svgs/icon-delete.svg?component';
+  import IconError from '../../assets/svgs/icon-error.svg?component';
+  import IconExamManage from '../../assets/svgs/icon-exam-manage.svg?component';
   import IconFile from '../../assets/svgs/icon-file.svg?component';
+  import IconHome from '../../assets/svgs/icon-home.svg?component';
+  import IconImport from '../../assets/svgs/icon-import.svg?component';
+  import IconInit from '../../assets/svgs/icon-init.svg?component';
+  import IconIssue from '../../assets/svgs/icon-issue.svg?component';
+  import IconJump from '../../assets/svgs/icon-jump.svg?component';
+  import IconLog from '../../assets/svgs/icon-log.svg?component';
+  import IconLogo from '../../assets/svgs/icon-logo.svg?component';
+  import IconLogout from '../../assets/svgs/icon-logout.svg?component';
+  import IconMarkManageS from '../../assets/svgs/icon-mark-manage-s.svg?component';
+  import IconMarkManage from '../../assets/svgs/icon-mark-manage.svg?component';
+  import IconMenu from '../../assets/svgs/icon-menu.svg?component';
+  import IconNotice from '../../assets/svgs/icon-notice.svg?component';
+  import IconOrg from '../../assets/svgs/icon-org.svg?component';
+  import IconPrint from '../../assets/svgs/icon-print.svg?component';
+  import IconRejectManage from '../../assets/svgs/icon-reject-manage.svg?component';
+  import IconReviewS from '../../assets/svgs/icon-review-s.svg?component';
+  import IconScanProgress from '../../assets/svgs/icon-scan-progress.svg?component';
+  import IconScoreExportS from '../../assets/svgs/icon-score-export-s.svg?component';
+  import IconScoreQuery from '../../assets/svgs/icon-score-query.svg?component';
+  import IconScoreReview from '../../assets/svgs/icon-score-review.svg?component';
+  import IconScoreViewS from '../../assets/svgs/icon-score-view-s.svg?component';
+  import IconScore from '../../assets/svgs/icon-score.svg?component';
+  import IconSetting from '../../assets/svgs/icon-setting.svg?component';
+  import IconStudentManage from '../../assets/svgs/icon-student-manage.svg?component';
+  import IconSubjectAnalysis from '../../assets/svgs/icon-subject-analysis.svg?component';
+  import IconSubjectManage from '../../assets/svgs/icon-subject-manage.svg?component';
   import IconSuccess from '../../assets/svgs/icon-success.svg?component';
-  import IconError from '../../assets/svgs/icon-error.svg?component';
-  import IconBase from '../../assets/svgs/icon-base.svg?component';
+  import IconSystem from '../../assets/svgs/icon-system.svg?component';
+  import IconUserManage from '../../assets/svgs/icon-user-manage.svg?component';
+  import IconUser from '../../assets/svgs/icon-user.svg?component';
+  import IconView from '../../assets/svgs/icon-view.svg?component';
+  import IconWarning from '../../assets/svgs/icon-warning.svg?component';
 
   defineOptions({
     name: 'SvgIcon',
@@ -36,21 +65,50 @@
   );
 
   const icons = {
-    IconHome,
-    IconLogout,
-    IconOrg,
-    IconSystem,
-    IconUser,
-    IconImport,
     IconAdd,
-    IconDelete,
+    IconAi,
     IconApply,
+    IconArrowRight,
+    IconArrow,
     IconAssign,
-    IconPrint,
+    IconBase,
+    IconDataCheck,
+    IconDelete,
+    IconError,
+    IconExamManage,
     IconFile,
+    IconHome,
+    IconImport,
+    IconInit,
+    IconIssue,
+    IconJump,
+    IconLog,
+    IconLogo,
+    IconLogout,
+    IconMarkManageS,
+    IconMarkManage,
+    IconMenu,
+    IconNotice,
+    IconOrg,
+    IconPrint,
+    IconRejectManage,
+    IconReviewS,
+    IconScanProgress,
+    IconScoreExportS,
+    IconScoreQuery,
+    IconScoreReview,
+    IconScoreViewS,
+    IconScore,
+    IconSetting,
+    IconStudentManage,
+    IconSubjectAnalysis,
+    IconSubjectManage,
     IconSuccess,
-    IconError,
-    IconBase,
+    IconSystem,
+    IconUserManage,
+    IconUser,
+    IconView,
+    IconWarning,
   };
 
   const iconName = snakeToHump(props.name) as keyof typeof icons;

+ 1 - 1
src/components/upload-button/index.vue

@@ -185,7 +185,7 @@
   }
 </script>
 
-<style lang="less">
+<style lang="scss">
   .file-upload {
     display: flex;
     justify-content: space-between;

+ 1 - 1
src/layout/default-layout.vue

@@ -93,7 +93,7 @@
   import { useAppStore, useUserStore } from '@/store';
   import { ElMessageBox } from 'element-plus';
 
-  import ResetPwd from '@/views/login/login/ResetPwd.vue';
+  import ResetPwd from '@/views/login/ResetPwd.vue';
   import Footer from '@/components/footer/index.vue';
 
   defineOptions({

+ 2 - 2
src/main.ts

@@ -4,8 +4,8 @@ import router from './router';
 import store from './store';
 // import './mock';
 import App from './App.vue';
-import 'element-plus/dist/index.css';
-import '@/assets/style/index.less';
+import '@/assets/style/element.scss';
+import '@/assets/style/index.scss';
 import '@/api/interceptor';
 
 const app = createApp(App);

+ 10 - 0
src/router/routes/modules/base.ts

@@ -9,6 +9,16 @@ const BASE: AppRouteRecordRaw = {
     requiresAuth: true,
   },
   children: [
+    // 主页导览
+    {
+      path: '/home-guide',
+      name: 'HomeGuide',
+      component: () => import('@/views/HomeGuide.vue'),
+      meta: {
+        title: '主页导览',
+        requiresAuth: true,
+      },
+    },
     {
       path: '/user-manage',
       name: 'UserManage',

+ 3 - 3
src/router/routes/modules/login.ts

@@ -7,7 +7,7 @@ const routes: AppRouteRecordRaw = {
     {
       path: '/login',
       name: 'Login',
-      component: () => import('@/views/login/login/index.vue'),
+      component: () => import('@/views/login/login.vue'),
       meta: {
         title: '登录',
         requiresAuth: false,
@@ -16,7 +16,7 @@ const routes: AppRouteRecordRaw = {
     {
       path: '/switch-exam',
       name: 'SwitchExam',
-      component: () => import('@/views/login/login/SwitchExam.vue'),
+      component: () => import('@/views/login/SwitchExam.vue'),
       meta: {
         title: '切换考试',
         requiresAuth: true,
@@ -25,7 +25,7 @@ const routes: AppRouteRecordRaw = {
     {
       path: '/reset-info',
       name: 'ResetInfo',
-      component: () => import('@/views/login/login/ResetInfo.vue'),
+      component: () => import('@/views/login/ResetInfo.vue'),
       meta: {
         title: '修改个人信息',
         requiresAuth: true,

+ 380 - 0
src/views/HomeGuide.vue

@@ -0,0 +1,380 @@
+<template>
+  <div class="home-guide">
+    <div class="guide-container">
+      <!-- 第一行 -->
+      <div class="guide-row">
+        <div class="guide-card">
+          <div class="card-header">
+            <svg-icon name="icon-system" class="card-icon" />
+            <h3 class="card-title">系统初始化</h3>
+          </div>
+          <div class="card-content">
+            <div class="menu-item">
+              <span>考试设置</span>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="menu-item">
+              <span>考生导入</span>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="menu-item highlight">
+              <span>考生:</span>
+              <span class="number orange">124490</span>
+              <span>科目:</span>
+              <span class="number orange">98</span>
+            </div>
+            <div class="menu-item">
+              <span>试卷结构设置</span>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="menu-item">
+              <span>用户账号设置</span>
+              <div class="arrow-right"></div>
+            </div>
+          </div>
+        </div>
+
+        <div class="guide-card">
+          <div class="card-header">
+            <svg-icon name="icon-file" class="card-icon" />
+            <h3 class="card-title">评卷管理</h3>
+          </div>
+          <div class="card-content">
+            <div class="menu-item">
+              <span>评卷进度</span>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="menu-item with-submenu">
+              <div class="main-item">
+                <div class="radio-dot active"></div>
+                <span>评卷过程管理</span>
+              </div>
+              <div class="submenu">
+                <div class="submenu-item">
+                  <span>分组设置修改</span>
+                  <div class="arrow-right"></div>
+                </div>
+                <div class="submenu-item">
+                  <span>已评任务查看</span>
+                  <div class="arrow-right"></div>
+                </div>
+              </div>
+            </div>
+            <div class="menu-item">
+              <div class="radio-dot"></div>
+              <span>数据分析</span>
+              <div class="submenu-single">
+                <span>科目分析</span>
+                <div class="arrow-right"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+
+        <div class="guide-card">
+          <div class="card-header">
+            <svg-icon name="icon-apply" class="card-icon" />
+            <h3 class="card-title">异常卷处理</h3>
+          </div>
+          <div class="card-content">
+            <div class="menu-item">
+              <span>打回卷处理</span>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="menu-item">
+              <span>问题卷处理</span>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="menu-item">
+              <span>仲裁卷处理</span>
+              <div class="arrow-right"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <!-- 连接箭头 -->
+      <div class="connection-arrows">
+        <div class="arrow-down"></div>
+        <div class="arrow-down"></div>
+        <div class="arrow-down"></div>
+      </div>
+
+      <!-- 第二行 -->
+      <div class="guide-row">
+        <div class="guide-card">
+          <div class="card-header">
+            <svg-icon name="icon-success" class="card-icon" />
+            <h3 class="card-title">成绩复查</h3>
+          </div>
+          <div class="card-content">
+            <div class="menu-item">
+              <span>关闭考试</span>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="menu-item">
+              <span>导入待复查考生</span>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="menu-item">
+              <span>进入复核</span>
+              <div class="arrow-right"></div>
+            </div>
+          </div>
+        </div>
+
+        <div class="guide-card">
+          <div class="card-header">
+            <svg-icon name="icon-file" class="card-icon" />
+            <h3 class="card-title">成绩导出</h3>
+          </div>
+          <div class="card-content">
+            <div class="process-step">
+              <div class="step-number">1</div>
+              <span>数据检查 - 人工确认</span>
+              <div class="status-icon success"></div>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="process-step">
+              <div class="step-number">2</div>
+              <span>检查科目进度100%且关闭</span>
+              <div class="status-icon success"></div>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="process-step">
+              <div class="step-number">3</div>
+              <span>缺考考生导入</span>
+              <div class="status-icon success"></div>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="menu-item">
+              <span>成绩导出</span>
+              <div class="arrow-right"></div>
+            </div>
+          </div>
+        </div>
+
+        <div class="guide-card">
+          <div class="card-header">
+            <svg-icon name="icon-apply" class="card-icon" />
+            <h3 class="card-title">复核处理</h3>
+          </div>
+          <div class="card-content">
+            <div class="menu-item">
+              <span>任务复核</span>
+              <div class="arrow-right"></div>
+            </div>
+            <div class="menu-item">
+              <span>全卷复核</span>
+              <div class="arrow-right"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+  import { defineOptions } from 'vue';
+
+  defineOptions({
+    name: 'HomeGuide',
+  });
+</script>
+
+<style scoped lang="scss">
+  .home-guide {
+    padding: 20px;
+    background-color: var(--color-background);
+    min-height: 100vh;
+  }
+
+  .guide-container {
+    max-width: 1200px;
+    margin: 0 auto;
+  }
+
+  .guide-row {
+    display: flex;
+    gap: 20px;
+    margin-bottom: 20px;
+    justify-content: center;
+  }
+
+  .guide-card {
+    background: var(--color-white);
+    border-radius: 8px;
+    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+    padding: 20px;
+    width: 320px;
+    min-height: 280px;
+  }
+
+  .card-header {
+    display: flex;
+    align-items: center;
+    margin-bottom: 20px;
+    padding-bottom: 15px;
+    border-bottom: 1px solid var(--color-border);
+  }
+
+  .card-icon {
+    font-size: 24px;
+    margin-right: 10px;
+    color: var(--color-primary);
+  }
+
+  .card-title {
+    font-size: 18px;
+    font-weight: 600;
+    color: var(--color-text-dark);
+    margin: 0;
+  }
+
+  .card-content {
+    display: flex;
+    flex-direction: column;
+    gap: 12px;
+  }
+
+  .menu-item {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 8px 0;
+    font-size: 14px;
+    color: var(--color-text-dark-1);
+
+    &.highlight {
+      background-color: #f8f9fa;
+      padding: 8px 12px;
+      border-radius: 4px;
+
+      .number {
+        font-weight: 600;
+
+        &.orange {
+          color: var(--color-warning);
+        }
+      }
+    }
+  }
+
+  .with-submenu {
+    flex-direction: column;
+    align-items: flex-start;
+
+    .main-item {
+      display: flex;
+      align-items: center;
+      width: 100%;
+      margin-bottom: 8px;
+    }
+
+    .submenu {
+      margin-left: 20px;
+      width: calc(100% - 20px);
+
+      .submenu-item {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        padding: 4px 0;
+        font-size: 13px;
+        color: var(--color-text-gray);
+      }
+    }
+  }
+
+  .submenu-single {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-left: 20px;
+    font-size: 13px;
+    color: var(--color-text-gray);
+  }
+
+  .radio-dot {
+    width: 8px;
+    height: 8px;
+    border-radius: 50%;
+    border: 2px solid var(--color-border);
+    margin-right: 8px;
+
+    &.active {
+      background-color: var(--color-primary);
+      border-color: var(--color-primary);
+    }
+  }
+
+  .arrow-right {
+    width: 0;
+    height: 0;
+    border-left: 6px solid var(--color-text-gray-1);
+    border-top: 4px solid transparent;
+    border-bottom: 4px solid transparent;
+  }
+
+  .process-step {
+    display: flex;
+    align-items: center;
+    gap: 8px;
+    padding: 6px 0;
+    font-size: 13px;
+    color: var(--color-text-dark-1);
+
+    .step-number {
+      width: 20px;
+      height: 20px;
+      border-radius: 50%;
+      background-color: var(--color-primary);
+      color: white;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      font-size: 12px;
+      font-weight: 600;
+      flex-shrink: 0;
+    }
+
+    .status-icon {
+      width: 16px;
+      height: 16px;
+      border-radius: 50%;
+      flex-shrink: 0;
+
+      &.success {
+        background-color: var(--color-success);
+      }
+    }
+  }
+
+  .connection-arrows {
+    display: flex;
+    justify-content: center;
+    gap: 340px;
+    margin: 10px 0;
+
+    .arrow-down {
+      width: 0;
+      height: 0;
+      border-left: 8px solid transparent;
+      border-right: 8px solid transparent;
+      border-top: 12px solid var(--color-primary);
+    }
+  }
+
+  /* 响应式设计 */
+  @media (max-width: 1024px) {
+    .guide-row {
+      flex-direction: column;
+      align-items: center;
+    }
+
+    .connection-arrows {
+      display: none;
+    }
+  }
+</style>

+ 1 - 1
src/views/admin/auth-manage/AuthManage.vue

@@ -214,7 +214,7 @@
   };
 </script>
 
-<style scoped lang="less">
+<style scoped lang="scss">
   .info-descriptions {
     margin-top: 20px;
     :deep(.el-descriptions__label) {

+ 1 - 1
src/views/admin/school-manage/SchoolManage.vue

@@ -78,7 +78,7 @@
         <el-input :value="curRow.name" readonly disabled />
       </el-form-item>
       <el-form-item label="考试" prop="exam">
-        <select-exam v-model="importExamId" size="large" />
+        <SelectExam v-model="importExamId" size="large" />
       </el-form-item>
     </el-form>
   </ImportDialog>

+ 15 - 5
src/views/login/login/ResetInfo.vue → src/views/login/ResetInfo.vue

@@ -1,6 +1,7 @@
 <template>
   <div class="login-title">
-    <h1>首次登录,请完善资料</h1>
+    <h1>首次登录</h1>
+    <p>请完善资料</p>
   </div>
   <div class="login-form">
     <el-form
@@ -28,7 +29,7 @@
         <el-input
           v-model.trim="formData.newPassword"
           type="password"
-          placeholder="输入新密码"
+          placeholder="输入6位以上新密码"
           show-password
           clearable
         />
@@ -37,17 +38,26 @@
         <el-input
           v-model.trim="formData.confirmPassword"
           type="password"
-          placeholder="再次输入密码"
+          placeholder="再次输入密码"
           show-password
           clearable
         />
       </el-form-item>
 
       <el-form-item>
-        <el-button type="primary" :loading="loading" @click="submit"
+        <el-button
+          class="submit-btn"
+          type="primary"
+          :loading="loading"
+          style="width: 100%"
+          @click="submit"
           >确认</el-button
         >
-        <el-button @click="goBack">回退</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" style="width: 100%" link @click="goBack"
+          >回退</el-button
+        >
       </el-form-item>
     </el-form>
   </div>

+ 0 - 0
src/views/login/login/ResetPwd.vue → src/views/login/ResetPwd.vue


+ 16 - 5
src/views/login/login/SwitchExam.vue → src/views/login/SwitchExam.vue

@@ -8,10 +8,11 @@
       ref="formRef"
       :model="formData"
       :rules="rules"
+      size="large"
       label-position="top"
     >
-      <el-form-item label="" prop="exam">
-        <select-exam
+      <el-form-item prop="exam">
+        <SelectExam
           v-model="formData.examId"
           size="large"
           @change="onExamChange"
@@ -19,8 +20,18 @@
       </el-form-item>
 
       <el-form-item>
-        <el-button type="primary" @click="handleSubmit">确认</el-button>
-        <el-button @click="handleGoBack">回退</el-button>
+        <el-button
+          class="submit-btn"
+          type="primary"
+          style="width: 100%"
+          @click="handleSubmit"
+          >确认</el-button
+        >
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" style="width: 100%" link @click="handleGoBack"
+          >回退</el-button
+        >
       </el-form-item>
     </el-form>
   </div>
@@ -41,7 +52,7 @@
   });
 
   const rules: FormRules = {
-    exam: [
+    examId: [
       {
         required: true,
         message: '请选择考试',

+ 13 - 15
src/views/login/home.vue

@@ -2,21 +2,8 @@
   <div class="login-home">
     <div class="login login-box">
       <div class="login-theme">
-        <h2>
-          欢迎登录 <br />
-          高校考试管理平台
-        </h2>
-
-        <p class="login-webinfo">
-          <a href="http://www.qmth.com.cn" target="_blank"
-            >Copyright © 2024 启明泰和</a
-          >
-          <br />
-          <a href="https://beian.miit.gov.cn/" target="_blank">
-            鄂ICP备12000033号-3</a
-          >
-          <span v-if="appStore.version"> v{{ appStore.version }}</span>
-        </p>
+        <h2> 云阅卷 <span>2.0</span> </h2>
+        <p>全新升级</p>
       </div>
       <div class="login-body">
         <div>
@@ -24,6 +11,17 @@
         </div>
       </div>
     </div>
+
+    <p class="login-footer">
+      <a href="http://www.qmth.com.cn" target="_blank"
+        >Copyright © 2024 启明泰和
+      </a>
+      <span>v2.0</span>
+      <span v-if="appStore.version"> build{{ appStore.version }}</span>
+      <a href="https://beian.miit.gov.cn/" target="_blank">
+        鄂ICP备12000033号-3</a
+      >
+    </p>
   </div>
 </template>
 

+ 4 - 3
src/views/login/login/index.vue → src/views/login/login.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="login-title">
-    <h1>输入信息</h1>
+    <h1>登录账号</h1>
     <p>请输入账号与密码</p>
   </div>
   <div class="login-form" @keyup.enter="submit">
@@ -14,7 +14,7 @@
       <el-form-item prop="account">
         <el-input
           v-model.trim="formData.account"
-          placeholder="请输入账号"
+          placeholder="请输入登录账号"
           clearable
         >
         </el-input>
@@ -23,7 +23,7 @@
         <el-input
           v-model.trim="formData.password"
           type="password"
-          placeholder="请输入密码"
+          placeholder="请输入登录密码"
           show-password
           clearable
         >
@@ -32,6 +32,7 @@
 
       <el-form-item>
         <el-button
+          class="submit-btn"
           type="primary"
           :loading="loading"
           style="width: 100%"

+ 1 - 1
src/views/mark/MarkProgress.vue

@@ -289,7 +289,7 @@
   });
 </script>
 
-<style scoped lang="less">
+<style scoped lang="scss">
   .chart-container {
     display: flex;
     justify-content: space-around;

+ 1 - 1
src/views/mark/ScoreCurve.vue

@@ -187,7 +187,7 @@
   });
 </script>
 
-<style scoped lang="less">
+<style scoped lang="scss">
   .score-curve-page {
     .page-header {
       display: flex;

+ 1 - 1
src/views/review/ScoreReviewStatistics.vue

@@ -244,7 +244,7 @@
   });
 </script>
 
-<style scoped lang="less">
+<style scoped lang="scss">
   .chart-container {
     display: flex;
     justify-content: space-around;

+ 1 - 1
src/views/system/not-found/index.vue

@@ -22,7 +22,7 @@
   };
 </script>
 
-<style scoped lang="less">
+<style scoped lang="scss">
   .content {
     // padding-top: 100px;
     position: absolute;

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно