Ver código fonte

公共头部

luohailiang 2 anos atrás
pai
commit
e95b03c37e
9 arquivos alterados com 325 adições e 384 exclusões
  1. 1 0
      index.html
  2. 4 2
      package.json
  3. 75 355
      pnpm-lock.yaml
  4. 42 0
      public/config.js
  5. 100 20
      src/components/NavHeader/index.vue
  6. 6 4
      src/main.ts
  7. 89 0
      src/store/index.ts
  8. 6 0
      src/styles/main.css
  9. 2 3
      vite.config.ts

+ 1 - 0
index.html

@@ -20,6 +20,7 @@
         document.documentElement.classList.toggle('dark', true)
     })()
   </script> -->
+  <script src="/config.js"></script>
   <script type="module" src="/src/main.ts"></script>
 </body>
 </html>

+ 4 - 2
package.json

@@ -15,6 +15,7 @@
   "dependencies": {
     "@vueuse/core": "^9.13.0",
     "element-plus": "^2.3.2",
+    "pinia": "^2.0.34",
     "sass": "^1.62.0",
     "vue": "^3.2.47",
     "vue-router": "^4.1.6"
@@ -35,14 +36,15 @@
     "simple-git-hooks": "^2.8.1",
     "taze": "^0.9.1",
     "typescript": "^5.0.2",
-    "unocss": "^0.50.6",
     "unplugin-auto-import": "^0.15.2",
     "unplugin-vue-components": "^0.24.1",
     "unplugin-vue-macros": "^1.11.2",
     "vite": "^4.2.1",
     "vite-plugin-pages": "^0.29.0",
+    "vite-plugin-windicss": "^1.8.10",
     "vitest": "^0.29.8",
-    "vue-tsc": "^1.2.0"
+    "vue-tsc": "^1.2.0",
+    "windicss": "^3.5.6"
   },
   "simple-git-hooks": {
     "pre-commit": "pnpm lint-staged"

+ 75 - 355
pnpm-lock.yaml

@@ -14,25 +14,28 @@ specifiers:
   husky: ^8.0.0
   jsdom: ^21.1.1
   lint-staged: ^13.2.0
+  pinia: ^2.0.34
   pnpm: ^8.1.0
   sass: ^1.62.0
   simple-git-hooks: ^2.8.1
   taze: ^0.9.1
   typescript: ^5.0.2
-  unocss: ^0.50.6
   unplugin-auto-import: ^0.15.2
   unplugin-vue-components: ^0.24.1
   unplugin-vue-macros: ^1.11.2
   vite: ^4.2.1
   vite-plugin-pages: ^0.29.0
+  vite-plugin-windicss: ^1.8.10
   vitest: ^0.29.8
   vue: ^3.2.47
   vue-router: ^4.1.6
   vue-tsc: ^1.2.0
+  windicss: ^3.5.6
 
 dependencies:
   '@vueuse/core': 9.13.0_vue@3.2.47
   element-plus: 2.3.3_vue@3.2.47
+  pinia: 2.0.34_dtjfskxukdxv24psui2m5c75zy
   sass: 1.62.0
   vue: 3.2.47
   vue-router: 4.1.6_vue@3.2.47
@@ -53,25 +56,18 @@ devDependencies:
   simple-git-hooks: 2.8.1
   taze: 0.9.1
   typescript: 5.0.4
-  unocss: 0.50.8_vite@4.2.1
   unplugin-auto-import: 0.15.2_@vueuse+core@9.13.0
   unplugin-vue-components: 0.24.1_vue@3.2.47
   unplugin-vue-macros: 1.11.2_aeurc5btel4k37vmechrre3xm4
   vite: 4.2.1_g772r5w5ng27elj5pzc7q7vnhy
   vite-plugin-pages: 0.29.0_vite@4.2.1
+  vite-plugin-windicss: 1.8.10_vite@4.2.1
   vitest: 0.29.8_jsdom@21.1.1+sass@1.62.0
   vue-tsc: 1.2.0_typescript@5.0.4
+  windicss: 3.5.6
 
 packages:
 
-  /@ampproject/remapping/2.2.1:
-    resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
-    engines: {node: '>=6.0.0'}
-    dependencies:
-      '@jridgewell/gen-mapping': 0.3.3
-      '@jridgewell/trace-mapping': 0.3.18
-    dev: true
-
   /@antfu/eslint-config-basic/0.38.4_kg5ltndpmug6vo5yp3l4yfbwx4:
     resolution: {integrity: sha512-QcJ/84eVa7mJD2PEbHw1r7dRg7pHNOvTvkHud+iFYxkDjzcuFMiHFZ7JCYLnuA1NKzeUmczdLFFrHnASxtpV3g==}
     peerDependencies:
@@ -168,13 +164,6 @@ packages:
       - typescript
     dev: true
 
-  /@antfu/install-pkg/0.1.1:
-    resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==}
-    dependencies:
-      execa: 5.1.1
-      find-up: 5.0.0
-    dev: true
-
   /@antfu/ni/0.20.0:
     resolution: {integrity: sha512-mBgAuq2b0daSA/14LMyjEjaInD7/Zd7KVXZge7bQPKmtQJFqy9/pWBml6DMkMreeHQEomMtIbbeqReNJ/74kjA==}
     hasBin: true
@@ -519,53 +508,10 @@ packages:
     resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
     dev: true
 
-  /@iconify/utils/2.1.5:
-    resolution: {integrity: sha512-6MvDI+I6QMvXn5rK9KQGdpEE4mmLTcuQdLZEiX5N+uZB+vc4Yw9K1OtnOgkl8mp4d9X0UrILREyZgF1NUwUt+Q==}
-    dependencies:
-      '@antfu/install-pkg': 0.1.1
-      '@antfu/utils': 0.7.2
-      '@iconify/types': 2.0.0
-      debug: 4.3.4
-      kolorist: 1.7.0
-      local-pkg: 0.4.3
-    transitivePeerDependencies:
-      - supports-color
-    dev: true
-
-  /@jridgewell/gen-mapping/0.3.3:
-    resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
-    engines: {node: '>=6.0.0'}
-    dependencies:
-      '@jridgewell/set-array': 1.1.2
-      '@jridgewell/sourcemap-codec': 1.4.15
-      '@jridgewell/trace-mapping': 0.3.18
-    dev: true
-
-  /@jridgewell/resolve-uri/3.1.0:
-    resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
-    engines: {node: '>=6.0.0'}
-    dev: true
-
-  /@jridgewell/set-array/1.1.2:
-    resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
-    engines: {node: '>=6.0.0'}
-    dev: true
-
-  /@jridgewell/sourcemap-codec/1.4.14:
-    resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
-    dev: true
-
   /@jridgewell/sourcemap-codec/1.4.15:
     resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
     dev: true
 
-  /@jridgewell/trace-mapping/0.3.18:
-    resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
-    dependencies:
-      '@jridgewell/resolve-uri': 3.1.0
-      '@jridgewell/sourcemap-codec': 1.4.14
-    dev: true
-
   /@nodelib/fs.scandir/2.1.5:
     resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
     engines: {node: '>= 8'}
@@ -923,186 +869,10 @@ packages:
       eslint-visitor-keys: 3.4.0
     dev: true
 
-  /@unocss/astro/0.50.8_vite@4.2.1:
-    resolution: {integrity: sha512-kphNlr0PWGzvkCgKx7RaZWQ45khieCCt9OffUnxbRRft+jodsVXIwzHn+bOhGtIKpEpZiOzxRzTYjfW/R6XnTw==}
-    dependencies:
-      '@unocss/core': 0.50.8
-      '@unocss/reset': 0.50.8
-      '@unocss/vite': 0.50.8_vite@4.2.1
-    transitivePeerDependencies:
-      - rollup
-      - vite
-    dev: true
-
-  /@unocss/cli/0.50.8:
-    resolution: {integrity: sha512-LBLt8oxGQSfTubOreXs8L7cxHvuYt4wA1MZ45jf4GT/C4moS8cqL7QFX66+MN/cNwvojqXSXQ2HtRJ1IZojfgA==}
-    engines: {node: '>=14'}
-    hasBin: true
-    dependencies:
-      '@ampproject/remapping': 2.2.1
-      '@rollup/pluginutils': 5.0.2
-      '@unocss/config': 0.50.8
-      '@unocss/core': 0.50.8
-      '@unocss/preset-uno': 0.50.8
-      cac: 6.7.14
-      chokidar: 3.5.3
-      colorette: 2.0.19
-      consola: 2.15.3
-      fast-glob: 3.2.12
-      magic-string: 0.30.0
-      pathe: 1.1.0
-      perfect-debounce: 0.1.3
-    transitivePeerDependencies:
-      - rollup
-    dev: true
-
-  /@unocss/config/0.50.8:
-    resolution: {integrity: sha512-+Hzl99klLiIq7Lcc5EirTSfBqUH+5NOCmEkXXWcYKYyAk3BLnBU9Fk76P7HxchDwQ5zdwpC4Cq++LQlqbAw/Uw==}
-    engines: {node: '>=14'}
-    dependencies:
-      '@unocss/core': 0.50.8
-      unconfig: 0.3.7
-    dev: true
-
-  /@unocss/core/0.50.8:
-    resolution: {integrity: sha512-rWmyeNE0Na8dJPDynLVar0X22qMHFNhO+/F2FZDpG4tubTavXJJo9uvhZr/D381kiWxt+XZ38y6EAD4UMdBqMA==}
-    dev: true
-
-  /@unocss/inspector/0.50.8:
-    resolution: {integrity: sha512-M963+B9iYGDI7m8KONppJ9EvrDowKWnzzmMLGf+D+qEXmXdnSztMZxEnOdg/caYyHJMw+4jlftyYRZB0VXnAGA==}
-    dependencies:
-      gzip-size: 6.0.0
-      sirv: 2.0.2
-    dev: true
-
-  /@unocss/postcss/0.50.8:
-    resolution: {integrity: sha512-UbFD+25EkmBonZggKuQdunAU+1O6O83NcnMqSalhn4vhsr4yHeD4P+Omr+CnBcuOxkP4h2JYHzfzdpe4DZxKYg==}
-    engines: {node: '>=14'}
-    dependencies:
-      '@unocss/config': 0.50.8
-      '@unocss/core': 0.50.8
-      css-tree: 2.3.1
-      fast-glob: 3.2.12
-      magic-string: 0.30.0
-      postcss: 8.4.21
-    dev: true
-
-  /@unocss/preset-attributify/0.50.8:
-    resolution: {integrity: sha512-aSL+I8OSjnom4RpvUcxIRjYETFhW5n51TA56yB9+ex78z5/EhIzOSS5PytGxJWj4hKUY5W9cZ7sCuUs0eaQ6VA==}
-    dependencies:
-      '@unocss/core': 0.50.8
-    dev: true
-
-  /@unocss/preset-icons/0.50.8:
-    resolution: {integrity: sha512-tQ05aP7ZRRP39+egB16gFMK6fkEdS8ob4rJeqUG6vEXiiAFWVbotI/NbHQapqk3wRthmyI3d9rUtxClJ2micvw==}
-    dependencies:
-      '@iconify/utils': 2.1.5
-      '@unocss/core': 0.50.8
-      ofetch: 1.0.1
-    transitivePeerDependencies:
-      - supports-color
-    dev: true
-
-  /@unocss/preset-mini/0.50.8:
-    resolution: {integrity: sha512-/4sbOdyaqJMvFkw1xzo2+h6bZJHw6WCYw1mF+f0ydHzj8ruvwaj9ClDDOweW5cdrk3wzDzRZ6NPRahKqLwv6/Q==}
-    dependencies:
-      '@unocss/core': 0.50.8
-    dev: true
-
-  /@unocss/preset-tagify/0.50.8:
-    resolution: {integrity: sha512-CNm9wEmDGEsCvBgWTBOPhH5ts5iobQh5mBeZyH2uCKuQNX+Vc21tXLX78bCk2V4yJ7mpqUWokDNqgTaNhTZjnw==}
-    dependencies:
-      '@unocss/core': 0.50.8
-    dev: true
-
-  /@unocss/preset-typography/0.50.8:
-    resolution: {integrity: sha512-jraHusTmbJq9UHgQ43ifzVJobTyoJLuGzeGqBzgLNac+V4BltzqHghup6obA09asQio7xe+crFkTV4IXWNK1lA==}
-    dependencies:
-      '@unocss/core': 0.50.8
-      '@unocss/preset-mini': 0.50.8
-    dev: true
-
-  /@unocss/preset-uno/0.50.8:
-    resolution: {integrity: sha512-BVgGpv+G9dauX6oRuno8ATOx6bjykiTGuy9NWZCG+/0vux0wplylQm/nSWYsEZZoxRwGOaAoNx93TeOPoofrXQ==}
-    dependencies:
-      '@unocss/core': 0.50.8
-      '@unocss/preset-mini': 0.50.8
-      '@unocss/preset-wind': 0.50.8
-    dev: true
-
-  /@unocss/preset-web-fonts/0.50.8:
-    resolution: {integrity: sha512-diGJVTC3W2lovRL9hlV7h4mdzKjoyJD1rlLai2QMZP/+UCsEwDcL9JFF0lZTlEN5GtcbgvcyPRZKB1/ituvjdg==}
-    dependencies:
-      '@unocss/core': 0.50.8
-      ofetch: 1.0.1
-    dev: true
-
-  /@unocss/preset-wind/0.50.8:
-    resolution: {integrity: sha512-lF6MAJm2HVF8GJoBIIus1cpZL1ybisj8fl3KYEzVUFUWCwmNnxG4rr+CGnck3bDRYk2zmEvTwX+cISTCwq2u1Q==}
-    dependencies:
-      '@unocss/core': 0.50.8
-      '@unocss/preset-mini': 0.50.8
-    dev: true
-
   /@unocss/reset/0.50.8:
     resolution: {integrity: sha512-2WoM6O9VyuHDPAnvCXr7LBJQ8ZRHDnuQAFsL1dWXp561Iq2l9whdNtPuMcozLGJGUUrFfVBXIrHY4sfxxScgWg==}
     dev: true
 
-  /@unocss/scope/0.50.8:
-    resolution: {integrity: sha512-QA4G9JYK8jrnU02qi1WBi45S+V0HKNUY0u6h5drYqRkcUho2YrpcfMagYi1A5XGg5ykmtP9e6vx1D9lij+JGnQ==}
-    dev: true
-
-  /@unocss/transformer-attributify-jsx-babel/0.50.8:
-    resolution: {integrity: sha512-Eyt0irFRspHpngj+mDbREuVoqJ49csIhcls6NqerqrZKAI4/jYGNLFy99jyM1ry2L3sHwLP7rbT7AoFrWuLnvA==}
-    dependencies:
-      '@unocss/core': 0.50.8
-    dev: true
-
-  /@unocss/transformer-attributify-jsx/0.50.8:
-    resolution: {integrity: sha512-Ht2SfxWbkkFgZQE8KEicmOvxk2INQccuiH4gdyycj3y1tkOXU+Xm1QFruJT7+BPHr0QJp257nA0XmQD/Bhd1kA==}
-    dependencies:
-      '@unocss/core': 0.50.8
-    dev: true
-
-  /@unocss/transformer-compile-class/0.50.8:
-    resolution: {integrity: sha512-2himb5VinZcx7d72nauoqLGk4niC0sFFK/09lmJxFj1jnZqqYBMS48V0PyUypabA5W+bHQ1TJwqcv95wMHIIzA==}
-    dependencies:
-      '@unocss/core': 0.50.8
-    dev: true
-
-  /@unocss/transformer-directives/0.50.8:
-    resolution: {integrity: sha512-x/OdR5lK7Gy1Y4r6cOLG2LccWGWDyflz9cDv4DkZKg7pQShcjNFZ3UMAO+74fJO6Jvhvl9iDYpeTZo8009wr7A==}
-    dependencies:
-      '@unocss/core': 0.50.8
-      css-tree: 2.3.1
-    dev: true
-
-  /@unocss/transformer-variant-group/0.50.8:
-    resolution: {integrity: sha512-UjDsa3K3Bv11u3q8BYZ4ZrdMhlu937hiQct6sXzFIQcSnOwqOokr/h6V/8aB3hFiPWX/yQuIIQnQJjYTVWZYxw==}
-    dependencies:
-      '@unocss/core': 0.50.8
-    dev: true
-
-  /@unocss/vite/0.50.8_vite@4.2.1:
-    resolution: {integrity: sha512-pHk7D0jHAlBUKSp0y0dMuKesLSSv1O0fTNewUAz1NUpISTno3zizuKSpRs8OzCFInta6QeAVSaWe8K69PcfFog==}
-    peerDependencies:
-      vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0
-    dependencies:
-      '@ampproject/remapping': 2.2.1
-      '@rollup/pluginutils': 5.0.2
-      '@unocss/config': 0.50.8
-      '@unocss/core': 0.50.8
-      '@unocss/inspector': 0.50.8
-      '@unocss/scope': 0.50.8
-      '@unocss/transformer-directives': 0.50.8
-      chokidar: 3.5.3
-      fast-glob: 3.2.12
-      magic-string: 0.30.0
-      vite: 4.2.1_g772r5w5ng27elj5pzc7q7vnhy
-    transitivePeerDependencies:
-      - rollup
-    dev: true
-
   /@vitejs/plugin-vue/4.1.0_vite@4.2.1+vue@3.2.47:
     resolution: {integrity: sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==}
     engines: {node: ^14.18.0 || >=16.0.0}
@@ -1694,6 +1464,30 @@ packages:
       - '@vue/composition-api'
       - vue
 
+  /@windicss/config/1.8.10:
+    resolution: {integrity: sha512-O9SsC110b1Ik3YYa4Ck/0TWuCo7YFfA9KDrwD5sAeqscT5COIGK1HszdCT3oh0MJFej2wNrvpfyW9h6yQaW6PA==}
+    dependencies:
+      debug: 4.3.4
+      jiti: 1.18.2
+      windicss: 3.5.6
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /@windicss/plugin-utils/1.8.10:
+    resolution: {integrity: sha512-Phqk5OW1w+Mv+ry6t7BzAeDq3aMhbI94gR49j9vQCufFfDGCHndhhjtMK0sBv+NPJUsIAIh6qayb1iwBCXUGrw==}
+    dependencies:
+      '@antfu/utils': 0.7.2
+      '@windicss/config': 1.8.10
+      debug: 4.3.4
+      fast-glob: 3.2.12
+      magic-string: 0.27.0
+      micromatch: 4.0.5
+      windicss: 3.5.6
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
   /abab/2.0.6:
     resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
     dev: true
@@ -2168,10 +1962,6 @@ packages:
       proto-list: 1.2.4
     dev: true
 
-  /consola/2.15.3:
-    resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==}
-    dev: true
-
   /console-control-strings/1.1.0:
     resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
     dev: true
@@ -2185,14 +1975,6 @@ packages:
       which: 2.0.2
     dev: true
 
-  /css-tree/2.3.1:
-    resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
-    engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
-    dependencies:
-      mdn-data: 2.0.30
-      source-map-js: 1.0.2
-    dev: true
-
   /cssesc/3.0.0:
     resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
     engines: {node: '>=4'}
@@ -2312,10 +2094,6 @@ packages:
     engines: {node: '>= 0.8'}
     dev: true
 
-  /destr/1.2.2:
-    resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==}
-    dev: true
-
   /detect-indent/7.0.1:
     resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==}
     engines: {node: '>=12.20'}
@@ -2381,10 +2159,6 @@ packages:
       domhandler: 5.0.3
     dev: true
 
-  /duplexer/0.1.2:
-    resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
-    dev: true
-
   /eastasianwidth/0.2.0:
     resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
     dev: true
@@ -3020,21 +2794,6 @@ packages:
     engines: {node: '>=0.10.0'}
     dev: true
 
-  /execa/5.1.1:
-    resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
-    engines: {node: '>=10'}
-    dependencies:
-      cross-spawn: 7.0.3
-      get-stream: 6.0.1
-      human-signals: 2.1.0
-      is-stream: 2.0.1
-      merge-stream: 2.0.0
-      npm-run-path: 4.0.1
-      onetime: 5.1.2
-      signal-exit: 3.0.7
-      strip-final-newline: 2.0.0
-    dev: true
-
   /execa/7.1.1:
     resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==}
     engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
@@ -3308,13 +3067,6 @@ packages:
     resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
     dev: true
 
-  /gzip-size/6.0.0:
-    resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
-    engines: {node: '>=10'}
-    dependencies:
-      duplexer: 0.1.2
-    dev: true
-
   /has-bigints/1.0.2:
     resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
     dev: true
@@ -3420,11 +3172,6 @@ packages:
       - supports-color
     dev: true
 
-  /human-signals/2.1.0:
-    resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
-    engines: {node: '>=10.17.0'}
-    dev: true
-
   /human-signals/4.3.1:
     resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
     engines: {node: '>=14.18.0'}
@@ -3674,11 +3421,6 @@ packages:
       call-bind: 1.0.2
     dev: true
 
-  /is-stream/2.0.1:
-    resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
-    engines: {node: '>=8'}
-    dev: true
-
   /is-stream/3.0.0:
     resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -4036,6 +3778,13 @@ packages:
     dependencies:
       sourcemap-codec: 1.4.8
 
+  /magic-string/0.27.0:
+    resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
+    engines: {node: '>=12'}
+    dependencies:
+      '@jridgewell/sourcemap-codec': 1.4.15
+    dev: true
+
   /magic-string/0.30.0:
     resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==}
     engines: {node: '>=12'}
@@ -4084,10 +3833,6 @@ packages:
     resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==}
     dev: true
 
-  /mdn-data/2.0.30:
-    resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
-    dev: true
-
   /memoize-one/6.0.0:
     resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
     dev: false
@@ -4304,10 +4049,6 @@ packages:
     engines: {node: '>= 0.6'}
     dev: true
 
-  /node-fetch-native/1.1.0:
-    resolution: {integrity: sha512-nl5goFCig93JZ9FIV8GHT9xpNqXbxQUzkOmKIMKmncsBH9jhg7qKex8hirpymkBFmNQ114chEEG5lS4wgK2I+Q==}
-    dev: true
-
   /node-gyp/9.3.1:
     resolution: {integrity: sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==}
     engines: {node: ^12.13 || ^14.13 || >=16}
@@ -4452,13 +4193,6 @@ packages:
       - supports-color
     dev: true
 
-  /npm-run-path/4.0.1:
-    resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
-    engines: {node: '>=8'}
-    dependencies:
-      path-key: 3.1.1
-    dev: true
-
   /npm-run-path/5.1.0:
     resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -4522,14 +4256,6 @@ packages:
       es-abstract: 1.21.2
     dev: true
 
-  /ofetch/1.0.1:
-    resolution: {integrity: sha512-icBz2JYfEpt+wZz1FRoGcrMigjNKjzvufE26m9+yUiacRQRHwnNlGRPiDnW4op7WX/MR6aniwS8xw8jyVelF2g==}
-    dependencies:
-      destr: 1.2.2
-      node-fetch-native: 1.1.0
-      ufo: 1.1.1
-    dev: true
-
   /once/1.4.0:
     resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
     dependencies:
@@ -4736,10 +4462,6 @@ packages:
     resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
     dev: true
 
-  /perfect-debounce/0.1.3:
-    resolution: {integrity: sha512-NOT9AcKiDGpnV/HBhI22Str++XWcErO/bALvHCuhv33owZW/CjH8KAFLZDCmu3727sihe0wTxpDhyGc6M8qacQ==}
-    dev: true
-
   /picocolors/1.0.0:
     resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
 
@@ -4753,6 +4475,24 @@ packages:
     hasBin: true
     dev: true
 
+  /pinia/2.0.34_dtjfskxukdxv24psui2m5c75zy:
+    resolution: {integrity: sha512-cgOoGUiyqX0SSgX8XelK9+Ri4XA2/YyNtgjogwfzIx1g7iZTaZPxm7/bZYMCLU2qHRiHhxG7SuQO0eBacFNc2Q==}
+    peerDependencies:
+      '@vue/composition-api': ^1.4.0
+      typescript: '>=4.4.4'
+      vue: ^2.6.14 || ^3.2.0
+    peerDependenciesMeta:
+      '@vue/composition-api':
+        optional: true
+      typescript:
+        optional: true
+    dependencies:
+      '@vue/devtools-api': 6.5.0
+      typescript: 5.0.4
+      vue: 3.2.47
+      vue-demi: 0.13.11_vue@3.2.47
+    dev: false
+
   /pkg-types/1.0.2:
     resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==}
     dependencies:
@@ -5332,11 +5072,6 @@ packages:
     engines: {node: '>=4'}
     dev: true
 
-  /strip-final-newline/2.0.0:
-    resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
-    engines: {node: '>=6'}
-    dev: true
-
   /strip-final-newline/3.0.0:
     resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
     engines: {node: '>=12'}
@@ -5544,7 +5279,6 @@ packages:
     resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==}
     engines: {node: '>=12.20'}
     hasBin: true
-    dev: true
 
   /ufo/1.1.1:
     resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==}
@@ -5610,40 +5344,6 @@ packages:
     engines: {node: '>= 4.0.0'}
     dev: true
 
-  /unocss/0.50.8_vite@4.2.1:
-    resolution: {integrity: sha512-3yqKkSm/SKCKxFolXNR12Mi64lr4PW95LSHKZ/a9Yzlf2PT1NirAn8/uJ8KoJJBNR2YWobtkLi4UplFz/8IAYA==}
-    engines: {node: '>=14'}
-    peerDependencies:
-      '@unocss/webpack': 0.50.8
-    peerDependenciesMeta:
-      '@unocss/webpack':
-        optional: true
-    dependencies:
-      '@unocss/astro': 0.50.8_vite@4.2.1
-      '@unocss/cli': 0.50.8
-      '@unocss/core': 0.50.8
-      '@unocss/postcss': 0.50.8
-      '@unocss/preset-attributify': 0.50.8
-      '@unocss/preset-icons': 0.50.8
-      '@unocss/preset-mini': 0.50.8
-      '@unocss/preset-tagify': 0.50.8
-      '@unocss/preset-typography': 0.50.8
-      '@unocss/preset-uno': 0.50.8
-      '@unocss/preset-web-fonts': 0.50.8
-      '@unocss/preset-wind': 0.50.8
-      '@unocss/reset': 0.50.8
-      '@unocss/transformer-attributify-jsx': 0.50.8
-      '@unocss/transformer-attributify-jsx-babel': 0.50.8
-      '@unocss/transformer-compile-class': 0.50.8
-      '@unocss/transformer-directives': 0.50.8
-      '@unocss/transformer-variant-group': 0.50.8
-      '@unocss/vite': 0.50.8_vite@4.2.1
-    transitivePeerDependencies:
-      - rollup
-      - supports-color
-      - vite
-    dev: true
-
   /unplugin-auto-import/0.15.2_@vueuse+core@9.13.0:
     resolution: {integrity: sha512-Wivfu+xccgvEZG8QtZcIvt6napfX9wyOFqM//7FHOtev8+k+dp3ykiqsEl6TODgHmqTTBeQX4Ah1JvRgUNjlkg==}
     engines: {node: '>=14'}
@@ -5851,6 +5551,20 @@ packages:
       - supports-color
     dev: true
 
+  /vite-plugin-windicss/1.8.10_vite@4.2.1:
+    resolution: {integrity: sha512-scywsuzo46lcTBohspmF0WiwhWEte6p+OUVrX4yr7VMRvLHMHVfLtJReyD5pppjijG7YOwVsZn7XBWWZtF658Q==}
+    peerDependencies:
+      vite: ^2.0.1 || ^3.0.0 || ^4.0.0
+    dependencies:
+      '@windicss/plugin-utils': 1.8.10
+      debug: 4.3.4
+      kolorist: 1.7.0
+      vite: 4.2.1_g772r5w5ng27elj5pzc7q7vnhy
+      windicss: 3.5.6
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
   /vite/4.2.1_g772r5w5ng27elj5pzc7q7vnhy:
     resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==}
     engines: {node: ^14.18.0 || >=16.0.0}
@@ -6118,6 +5832,12 @@ packages:
       string-width: 4.2.3
     dev: true
 
+  /windicss/3.5.6:
+    resolution: {integrity: sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA==}
+    engines: {node: '>= 12'}
+    hasBin: true
+    dev: true
+
   /word-wrap/1.2.3:
     resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
     engines: {node: '>=0.10.0'}

+ 42 - 0
public/config.js

@@ -0,0 +1,42 @@
+// 本地开发环境
+const local = {
+  // web_pc: 'https://tyyx.bozedu.top/',
+  // web_mobile: 'https://tyyxm.bozedu.top/',
+  web_pc: 'https://yzy.dev.bozedu.net/',
+  qqyxt: 'https://qqyxt.dev.bozedu.net/',
+  yzy: 'https://yzy.dev.bozedu.net/',
+  api:'https://openapi.dev.bozedu.net/',
+  uc: 'https://uc.dev.bozedu.net/',
+  origin: window.location.origin,
+}
+
+// 测试服环境
+const development = {
+  web_pc: 'https://yzy.dev.bozedu.net/',
+  origin: window.location.origin,
+  qqyxt: 'https://qqyxt.dev.bozedu.net/',
+  yzy: 'https://yzy.dev.bozedu.net/',
+  api:'https://openapi.dev.bozedu.net/',
+  uc: 'https://uc.dev.bozedu.net/',
+}
+
+// // 正式服环境
+const production = {
+  web_pc: 'https://yzy.bozedu.net/',
+  origin: window.location.origin,
+  qqyxt: 'https://qqyxt.bozedu.net/',
+  yzy: 'https://yzy.bozedu.net/',
+  api:'https://openapi.bozedu.net/',
+  uc: 'https://uc.bozedu.net/',
+}
+
+function isWhich() {
+  if (window.location.href.startsWith(development.web_pc)) {
+    return development
+  } else if (window.location.href.startsWith(production.web_pc)) {
+    return production
+  } else {
+    return local
+  }
+}
+window.GLOBAL_CONFIG = isWhich()

+ 100 - 20
src/components/NavHeader/index.vue

@@ -1,35 +1,61 @@
 <script setup lang='ts'>
 const router = useRouter()
+let link = window.GLOBAL_CONFIG;
+import { user } from '~/store/index'
+function loginOut() {
+  window.localStorage.clear();
+  window.location.href = link.qqyxt;
+}
 </script>
 
 <template>
   <div class="main-header">
     <div class="header-nav">
-       <div class="width-1200px m-a flex justify-between items-center">
-         <a href="https://yzy.bozedu.net/webapps/page/home.html">
+       <div class="w-1200px m-auto flex justify-between items-center">
+         <a :href="link.yzy +'webapps/page/home.html'">
            <img src="/images/logo.png" class="logo" alt="">
            <img src="/images/title.png" class="logo-title" alt="">
          </a>
          <div class="flex">
-           <a href="#" class="nav-item">亲亲云学堂</a>
-           <a href="#" class="nav-item">精准教学首页</a>
+           <a :href="link.qqyxt" class="nav-item leading-50px">亲亲云学堂</a>
+           <a :href="link.yzy +'webapps/page/home.html'" class="nav-item leading-50px">精准教学首页</a>
            <div class="nav-item">
-             <span class="display-inline-block v-mid">试题库</span>
+             <span class="inline-block align-middle leading-50px">试题库</span>
              <img src="/images/triangle.png" class="triangle" alt="">
+             <div class="child-nav">
+               <a :href="link.yzy +'/webapps/page/task.html?mold=issue&sort=chapter'">章节试题</a>
+               <a :href="link.yzy + '/webapps/page/task.html?mold=issue&sort=knowledge'">知识点试题</a>
+               <a :href="link.yzy + '/webapps/page/zlzj.html'">智能选题</a>
+             </div>
            </div>
            <div class="nav-item">
-             <span class="display-inline-block v-mid">考试阅卷</span>
+             <span class="inline-block align-middle leading-50px">考试阅卷</span>
              <img src="/images/triangle.png" class="triangle" alt="">
+             <div class="child-nav">
+               <a :href="link.yzy+'/webapps/page/exam.html?mold=manage'">组卷管理</a>
+               <a :href="link.yzy + '/webapps/page/exam.html?mold=online&sort=one&pid=total'">考试管理</a>
+               <a :href="link.yzy + '/webapps/page/marking-process-list.html'">阅卷流程</a>
+             </div>
            </div>
+           <a :href="link.yzy + '/webapps/page/paper_library.html'" class="nav-item leading-50px">试卷库</a>
            <div class="nav-item">
-             试卷库
-           </div>
-           <div class="nav-item">
-             <span class="display-inline-block v-mid">VIP题库</span>
+             <span class="inline-block align-middle leading-50px">VIP题库</span>
              <img src="/images/triangle.png" class="triangle" alt="">
+             <div class="child-nav">
+               <a :href="link.yzy + '/webapps/page/vip_task.html?mold=vip&sort=chapter'">章节试题</a>
+               <a :href="link.yzy + '/webapps/page/vip_task.html?mold=vip&sort=knowledge'">知识点试题</a>
+             </div>
            </div>
-           <div class="nav-item">
-             命题要求
+           <a :href="link.yzy + '/webapps/page/propRequireList.html'" class="nav-item leading-50px">命题要求</a>
+           <div class="header-user relative">
+             <img class="inline-block align-middle w-30px h-30px border-radius-50" :src="user.user_avatar.big" alt="">
+             <span class="inline-block align-middle ml-8px text-12px text-white leading-50px">{{user.user_realname}}</span>
+             <img src="/images/triangle.png" class="triangle" alt="">
+             <div class="child-nav">
+               <a :href="link.yzy + '/webapps/page/glzx.html'">管理中心</a>
+               <a :href="link.yzy + '/webapps/page/grzx.html'">个人中心</a>
+               <a href="javascript:;" @click="loginOut">退出登录</a>
+             </div>
            </div>
          </div>
        </div>
@@ -38,6 +64,16 @@ const router = useRouter()
 
 </template>
 <style lang="scss">
+@keyframes navShow {
+  from {
+    height: 0;
+    opacity: 0;
+  }
+  to {
+    opacity: 1;
+    height: 100%;
+  }
+}
 .main-header{
   position: relative;
   width: 100%;
@@ -64,10 +100,11 @@ const router = useRouter()
   margin-left: 10px
 }
 .nav-item{
+  position: relative;
   width: 110px;
   height: 50px;
   font-size: 16px;
-  line-height: 50px;
+  //line-height: 50px;
   color: #fff;
   text-align: center;
   cursor: pointer;
@@ -75,13 +112,56 @@ const router = useRouter()
   &.selected{
     background: rgba(0,0,0,.2);
   }
-  .triangle {
-    width: 9px;
-    height: 5.5px;
-    display: inline-block;
-    vertical-align: middle;
-    position: relative;
-    left: 10px;
+  &:hover{
+    .child-nav{
+      display: block;
+      animation: navShow .2s ease-in-out;
+    }
+  }
+
+}
+.child-nav{
+  display: none;
+  position: absolute;
+  left: 0;
+  top: 50px;
+  width: 118px;
+  background: #fff;
+  border: solid #0048e5 1px;
+  border-top: 0;
+  box-shadow: 0 0 5px #ccc;
+  border-radius: 0 0 5px 5px;
+  a{
+    display: block;
+    font-size: 14px;
+    text-align: left;
+    line-height: 40px;
+    padding-left: 20px;
+    color: #303133;
+    &:hover{
+      color: #0048e5;
+    }
+  }
+}
+.triangle {
+  width: 9px;
+  height: 5.5px;
+  display: inline-block;
+  vertical-align: middle;
+  position: relative;
+  margin-left: 8px;
+}
+.header-user{
+  min-width: 100px;
+  font-size: 14px;
+  text-align: center;
+  cursor: pointer;
+  padding: 0 8px;
+  &:hover{
+    background: rgba(0,0,0,.2);
+    .child-nav{
+      display: block;
+    }
   }
 }
 </style>

+ 6 - 4
src/main.ts

@@ -2,15 +2,17 @@ import { createApp } from 'vue'
 import { createRouter, createWebHistory } from 'vue-router'
 import routes from 'virtual:generated-pages'
 import App from './App.vue'
-
-import '@unocss/reset/tailwind.css'
+import 'virtual:windi.css'
 import './styles/main.css'
-import 'uno.css'
-
+import 'element-plus/es/components/message/style/css'
+import 'element-plus/es/components/message-box/style/css'
 const app = createApp(App)
 const router = createRouter({
   history: createWebHistory(import.meta.env.BASE_URL),
   routes,
 })
+import { createPinia } from 'pinia'
+const store = createPinia()
+app.use(store)
 app.use(router)
 app.mount('#app')

+ 89 - 0
src/store/index.ts

@@ -0,0 +1,89 @@
+// 以下代码在build时自动移除,无需手动注释
+// #ifdef DEV
+// import './user/tmp'
+// #endif
+// import type { User } from './user/index.d'
+
+let obj = {
+  "user_id": "244521",
+  "user_name": "lwadmin",
+  "email": "lwadmin@bozedu.net",
+  "lastlogintime": "2023-04-13 16:27:42",
+  "regdate": "2021-08-18 17:08:49",
+  "status": "0",
+  "user_role_id": "72",
+  "user_role_name": "学校管理员",
+  "user_avatar": {
+    "big": "https://openapi.dev.bozedu.net/template/default/static/img/avatar_teacher_big.png",
+    "middle": "https://openapi.dev.bozedu.net/template/default/static/img/avatar_teacher_middle.png",
+    "small": "https://openapi.dev.bozedu.net/template/default/static/img/avatar_teacher_small.png"
+  },
+  "user_no": {"no_title": "学号", "no": ""},
+  "token": "0036PlXjuFCm7ynYhfQD4PTygChdt85Cy85yHL1QzTyNEP1McOL9j1fhEhr4ZxcXfREXvnqSqRx7mqFt5bedpJ_a7DoM",
+  "user_realname": "李文校管dev",
+  "user_phone": "",
+  "idcard": "",
+  "gender": "0",
+  "gender_char": "保密",
+  "qq": "",
+  "nationality": "",
+  "intro": "",
+  "address": "",
+  "education": "",
+  "area_info": {
+    "area_id1": "10",
+    "area_id2": "166",
+    "area_id3": "2074",
+    "area_id4": "14296",
+    "area_id1_char": "江苏省",
+    "area_id2_char": "苏州市",
+    "area_id3_char": "相城区",
+    "area_id4_char": "元和街道",
+    "area_code1": "320000000000",
+    "area_code2": "320500000000",
+    "area_code3": "320507000000",
+    "area_code4": "",
+    "area_code_dist": "320507000000"
+  },
+  "sm_info": {
+    "sm_id": "267",
+    "adminid": "155033",
+    "sm_name": "博智测试学校",
+    "is_org": "0",
+    "up_org": "381",
+    "area_id1": "10",
+    "area_id2": "166",
+    "area_id3": "2074",
+    "area_id4": "14296",
+    "major_mode": "1",
+    "powers": {"vip_shiti": "0", "vip_sucai": "1", "vip_aicheck": "1"}
+  },
+  "cm_info": [],
+  "first_cm_id": "",
+  "first_cm_name": "",
+  "renke_grade": [],
+  "renke_subject": {},
+  "related_desc": "暂无任课",
+  "bind3rd": {"wechat": "0"},
+  "my_org": [],
+  "org_info": {
+    "org": null,
+    "org_id": null,
+    "telephone": "",
+    "telephone_short": "",
+    "is_org": "1",
+    "up_org": null,
+    "up_org_name": null,
+    "up_org_info": {"sm_id": "", "sm_name": ""}
+  }
+}
+
+// export const user = ref<User>(JSON.parse(sessionStorage.getItem('userInfo') ?? '{}'))
+export const user = ref<User>(JSON.parse(sessionStorage.getItem('userInfo') ?? JSON.stringify(obj)))
+
+watch(
+  () => user.value,
+  (val) => {
+    sessionStorage.setItem('userInfo', JSON.stringify(val))
+  },
+)

+ 6 - 0
src/styles/main.css

@@ -15,3 +15,9 @@ html.dark {
 .width-1200px{
   width: 1200px;
 }
+.border-radius-50{
+  border-radius: 50%;
+}
+.font-size-12{
+  font-size: 12px;
+}

+ 2 - 3
vite.config.ts

@@ -3,11 +3,11 @@
 import path from 'node:path'
 import { defineConfig } from 'vite'
 import Vue from '@vitejs/plugin-vue'
+import WindiCss from 'vite-plugin-windicss'
 import Pages from 'vite-plugin-pages'
 import Components from 'unplugin-vue-components/vite'
 import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
 import AutoImport from 'unplugin-auto-import/vite'
-import UnoCSS from 'unocss/vite'
 import VueMacros from 'unplugin-vue-macros/vite'
 
 export default defineConfig({
@@ -24,7 +24,7 @@ export default defineConfig({
         }),
       },
     }),
-
+    WindiCss(),
     // https://github.com/hannoeru/vite-plugin-pages
     Pages(),
 
@@ -52,7 +52,6 @@ export default defineConfig({
 
     // https://github.com/antfu/unocss
     // see unocss.config.ts for config
-    UnoCSS(),
   ],
 
   // https://github.com/vitest-dev/vitest