diff --git a/.env b/.env index a720f73..ac23070 100644 --- a/.env +++ b/.env @@ -5,24 +5,23 @@ VITE_TITLE = 绝弹管理系统 # 网站副标题 VITE_SUBTITLE = 快速开发web应用的模板工具 -# API接口前缀 +# API接口前缀:参见 axios 的 baseURL VITE_API_PREFIX = http://127.0.0.1:3030/ -# API文档地址 备注:需为符合 OPENAPI 规范的json文件 +# API文档地址:需返回符合 OPENAPI 规范的json内容 VITE_API_SWAGGER = http://127.0.0.1:3030/openapi.json # ===================================================================================== # 开发设置 # ===================================================================================== -# API代理地址(开发环境) -VITE_API_PROXY_URL = /api -# 端口号(开发环境) -VITE_PORT = 3020 -# 主机地址(开发环境) +# 主机 VITE_HOST = 0.0.0.0 +# 端口 +VITE_PORT = 3020 +# API代理地址 +VITE_PROXY = /api # ===================================================================================== # 构建设置 # ===================================================================================== -# 构建时加载的文件后缀. -# 例如:设置为todo则会首先尝试加载index.todo.vue文件,不存在时再加载index.vue文件 +# 构建时加载的文件后缀: 设为mp时会优先加载index.mp.vue文件,否则回退至index.vue文件 VITE_EXTENSION = todo \ No newline at end of file diff --git a/package.json b/package.json index bd78322..39b6fdf 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "lodash-es": "^4.17.21", "nprogress": "^0.2.0", "numeral": "^2.0.6", - "pinia": "^2.0.33", + "pinia": "^2.1.6", "pinia-plugin-persistedstate": "^3.2.0", "plop": "^3.1.2", "release-it": "^15.10.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 676a0d6..245d9ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,11 +44,11 @@ devDependencies: specifier: ^2.0.6 version: 2.0.6 pinia: - specifier: ^2.0.33 - version: 2.1.4(typescript@4.9.5)(vue@3.3.4) + specifier: ^2.1.6 + version: 2.1.6(typescript@4.9.5)(vue@3.3.4) pinia-plugin-persistedstate: specifier: ^3.2.0 - version: 3.2.0(pinia@2.1.4) + version: 3.2.0(pinia@2.1.6) plop: specifier: ^3.1.2 version: 3.1.2 @@ -81,7 +81,7 @@ devDependencies: version: 4.4.2(less@4.1.3) vite-plugin-mock: specifier: ^3.0.0 - version: 3.0.0(esbuild@0.18.11)(mockjs@1.1.0)(vite@4.4.2) + version: 3.0.0(vite@4.4.2) vite-plugin-pages: specifier: ^0.28.0 version: 0.28.0(vite@4.4.2) @@ -90,7 +90,7 @@ devDependencies: version: 2.0.0(vite@4.4.2) vitepress: specifier: 1.0.0-beta.1 - version: 1.0.0-beta.1(@algolia/client-search@4.18.0)(axios@1.4.0)(less@4.1.3)(nprogress@0.2.0)(search-insights@2.7.0) + version: 1.0.0-beta.1(axios@1.4.0)(less@4.1.3)(nprogress@0.2.0) vue: specifier: ^3.3.4 version: 3.3.4 @@ -103,47 +103,44 @@ devDependencies: packages: - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0): + /@algolia/autocomplete-core@1.9.3(algoliasearch@4.18.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(algoliasearch@4.18.0) + '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.18.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: true - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(algoliasearch@4.18.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0) - search-insights: 2.7.0 + '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.18.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: true - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0): + /@algolia/autocomplete-preset-algolia@1.9.3(algoliasearch@4.18.0): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0) - '@algolia/client-search': 4.18.0 + '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.18.0) algoliasearch: 4.18.0 dev: true - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0): + /@algolia/autocomplete-shared@1.9.3(algoliasearch@4.18.0): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/client-search': 4.18.0 algoliasearch: 4.18.0 dev: true @@ -594,10 +591,10 @@ packages: resolution: {integrity: sha512-2Pu9HDg/uP/IT10rbQ+4OrTQuxIWdKVUEdcw9/w7kZJv9NeHS6skJx1xuRiFyoGKwAzcHXnLp7csE99sj+O1YA==} dev: true - /@docsearch/js@3.5.1(@algolia/client-search@4.18.0)(search-insights@2.7.0): + /@docsearch/js@3.5.1: resolution: {integrity: sha512-EXi8de5njxgP6TV3N9ytnGRLG9zmBNTEZjR4VzwPcpPLbZxxTLG2gaFyJyKiFVQxHW/DPlMrDJA3qoRRGEkgZw==} dependencies: - '@docsearch/react': 3.5.1(@algolia/client-search@4.18.0)(search-insights@2.7.0) + '@docsearch/react': 3.5.1 preact: 10.15.1 transitivePeerDependencies: - '@algolia/client-search' @@ -607,7 +604,7 @@ packages: - search-insights dev: true - /@docsearch/react@3.5.1(@algolia/client-search@4.18.0)(search-insights@2.7.0): + /@docsearch/react@3.5.1: resolution: {integrity: sha512-t5mEODdLzZq4PTFAm/dvqcvZFdPDMdfPE5rJS5SC8OUq9mPzxEy6b+9THIqNM9P0ocCb4UC5jqBrxKclnuIbzQ==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -621,8 +618,8 @@ packages: react-dom: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0) + '@algolia/autocomplete-core': 1.9.3(algoliasearch@4.18.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(algoliasearch@4.18.0) '@docsearch/css': 3.5.1 algoliasearch: 4.18.0 transitivePeerDependencies: @@ -2317,13 +2314,12 @@ packages: run-applescript: 5.0.0 dev: true - /bundle-require@4.0.1(esbuild@0.18.11): + /bundle-require@4.0.1: resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' dependencies: - esbuild: 0.18.11 load-tsconfig: 0.2.5 dev: true @@ -2604,11 +2600,6 @@ packages: delayed-stream: 1.0.0 dev: true - /commander@11.0.0: - resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} - engines: {node: '>=16'} - dev: true - /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: @@ -5144,13 +5135,6 @@ packages: ufo: 1.1.0 dev: true - /mockjs@1.1.0: - resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} - hasBin: true - dependencies: - commander: 11.0.0 - dev: true - /modify-values@1.0.1: resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} engines: {node: '>=0.10.0'} @@ -5836,16 +5820,16 @@ packages: dev: true optional: true - /pinia-plugin-persistedstate@3.2.0(pinia@2.1.4): + /pinia-plugin-persistedstate@3.2.0(pinia@2.1.6): resolution: {integrity: sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==} peerDependencies: pinia: ^2.0.0 dependencies: - pinia: 2.1.4(typescript@4.9.5)(vue@3.3.4) + pinia: 2.1.6(typescript@4.9.5)(vue@3.3.4) dev: true - /pinia@2.1.4(typescript@4.9.5)(vue@3.3.4): - resolution: {integrity: sha512-vYlnDu+Y/FXxv1ABo1vhjC+IbqvzUdiUC3sfDRrRyY2CQSrqqaa+iiHmqtARFxJVqWQMCJfXx1PBvFs9aJVLXQ==} + /pinia@2.1.6(typescript@4.9.5)(vue@3.3.4): + resolution: {integrity: sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==} peerDependencies: '@vue/composition-api': ^1.4.0 typescript: '>=4.4.4' @@ -6304,11 +6288,6 @@ packages: resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==} dev: true - /search-insights@2.7.0: - resolution: {integrity: sha512-GLbVaGgzYEKMvuJbHRhLi1qoBFnjXZGZ6l4LxOYPCp4lI2jDRB3jPU9/XNhMwv6kvnA9slTreq6pvK+b3o3aqg==} - engines: {node: '>=8.16.0'} - dev: true - /semver-diff@4.0.0: resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} engines: {node: '>=12'} @@ -7187,7 +7166,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-mock@3.0.0(esbuild@0.18.11)(mockjs@1.1.0)(vite@4.4.2): + /vite-plugin-mock@3.0.0(vite@4.4.2): resolution: {integrity: sha512-Ibwlga2CSgkoFHFtPW3T/l0fwsGVz9Ss5i7HauBQDyDFfMKgbQXh9wKDLksLZHyai9rkDanxJtIcxbD0bUHCfw==} engines: {node: '>=16.0.0'} peerDependencies: @@ -7195,12 +7174,11 @@ packages: vite: '>=4.0.0' dependencies: '@types/mockjs': 1.0.7 - bundle-require: 4.0.1(esbuild@0.18.11) + bundle-require: 4.0.1 chokidar: 3.5.3 connect: 3.7.0 debug: 4.3.4 fast-glob: 3.2.12 - mockjs: 1.1.0 path-to-regexp: 6.2.1 picocolors: 1.0.0 vite: 4.4.2(less@4.1.3) @@ -7283,12 +7261,12 @@ packages: fsevents: 2.3.2 dev: true - /vitepress@1.0.0-beta.1(@algolia/client-search@4.18.0)(axios@1.4.0)(less@4.1.3)(nprogress@0.2.0)(search-insights@2.7.0): + /vitepress@1.0.0-beta.1(axios@1.4.0)(less@4.1.3)(nprogress@0.2.0): resolution: {integrity: sha512-V2yyCwQ+v9fh7rbnGDLp8M7vHa9sLElexXf/JHtBOsOwv7ed9wt1QI4WUagYgKR3TeoJT9v2s6f0UaQSne0EvQ==} hasBin: true dependencies: '@docsearch/css': 3.5.1 - '@docsearch/js': 3.5.1(@algolia/client-search@4.18.0)(search-insights@2.7.0) + '@docsearch/js': 3.5.1 '@vitejs/plugin-vue': 4.2.3(vite@4.4.2)(vue@3.3.4) '@vue/devtools-api': 6.5.0 '@vueuse/core': 10.2.1(vue@3.3.4) diff --git a/src/api/instance/api.ts b/src/api/instance/api.ts index f47f45e..779fb49 100644 --- a/src/api/instance/api.ts +++ b/src/api/instance/api.ts @@ -1,6 +1,6 @@ +import { IToastOptions, toast } from "@/components"; +import { store, useUserStore } from "@/store"; import { Api } from "../service/Api"; -import { toast, IToastOptions } from "@/components"; -import { useUserStore, store } from "@/store"; const userStore = useUserStore(store); diff --git a/src/api/service/Api.ts b/src/api/service/Api.ts index d12429f..e78b1c6 100644 --- a/src/api/service/Api.ts +++ b/src/api/service/Api.ts @@ -164,6 +164,8 @@ export interface AuthUserDto { } export interface LoginedUserVo { + /** 用户ID */ + id: number; /** * 访问令牌 * @example "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MjIsInVzZXJuYW1lIjoianVldGFuIiwiaWF0IjoxNjkxMTM5MjI3LCJleHAiOjE2OTExOTkyMjd9.6z7f-xfsHABbsyg401o2boKeqNQ1epPDYfEdavIcfYc" diff --git a/src/pages/_app/index.vue b/src/pages/_app/index.vue index c06e89d..5ed49d7 100644 --- a/src/pages/_app/index.vue +++ b/src/pages/_app/index.vue @@ -22,10 +22,10 @@ - + - {{ userStore.name }} + {{ userStore.nickname }} @@ -115,6 +115,7 @@ const userButtons = [ icon: "icon-park-outline-logout", text: "退出登录", onClick: async () => { + userStore.clearUser() Message.loading({ content: '提示: 正在退出,请稍后...', duration: 2000, diff --git a/src/pages/_login/index.vue b/src/pages/_login/index.vue index 11c46d2..d3fdd7a 100644 --- a/src/pages/_login/index.vue +++ b/src/pages/_login/index.vue @@ -13,7 +13,7 @@