From cdfe1e581e27c7662c13f2f5fccc708f8569db76 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Mon, 31 Mar 2025 14:46:16 +0800 Subject: [PATCH 1/5] =?UTF-8?q?style:=20:lipstick:=20=E5=AD=97=E5=85=B8?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=AE=A1=E7=90=86=E4=BB=A3=E7=A0=81=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/dict.store.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/store/modules/dict.store.ts b/src/store/modules/dict.store.ts index 0e1dea10..e053ed94 100644 --- a/src/store/modules/dict.store.ts +++ b/src/store/modules/dict.store.ts @@ -4,8 +4,10 @@ import DictAPI, { type DictItemOption } from "@/api/system/dict.api"; export const useDictStore = defineStore("dict", () => { // 字典数据缓存 const dictCache = useStorage>("dict_cache", {}); + // 请求队列(防止重复请求) const requestQueue: Record> = {}; + /** * 缓存字典数据 * @param dictCode 字典编码 @@ -14,6 +16,7 @@ export const useDictStore = defineStore("dict", () => { const cacheDictItems = (dictCode: string, data: DictItemOption[]) => { dictCache.value[dictCode] = data; }; + /** * 加载字典数据(如果缓存中没有则请求) * @param dictCode 字典编码 @@ -29,6 +32,7 @@ export const useDictStore = defineStore("dict", () => { } await requestQueue[dictCode]; }; + /** * 获取字典项列表 * @param dictCode 字典编码 @@ -37,12 +41,14 @@ export const useDictStore = defineStore("dict", () => { const getDictItems = (dictCode: string): DictItemOption[] => { return dictCache.value[dictCode] || []; }; + /** * 清空字典缓存 */ const clearDictCache = () => { dictCache.value = {}; }; + return { loadDictItems, getDictItems, From 2bc86b3964a28cad882071ee6425dce80fe1335d Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Mon, 31 Mar 2025 14:47:47 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20:bug:=20=E6=B3=A8=E9=94=80=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=B8=85=E7=A9=BA=E7=94=A8=E6=88=B7=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/user.store.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/store/modules/user.store.ts b/src/store/modules/user.store.ts index eec6decf..d4de3587 100644 --- a/src/store/modules/user.store.ts +++ b/src/store/modules/user.store.ts @@ -97,6 +97,7 @@ export const useUserStore = defineStore("user", () => { clearToken(); usePermissionStoreHook().resetRouter(); useDictStoreHook().clearDictCache(); + userInfo.value = {} as UserInfo; resolve(); }); } From d60a2459b28eb21ff45728ba6d88b90742571720 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Mon, 31 Mar 2025 14:58:53 +0800 Subject: [PATCH 3/5] =?UTF-8?q?perf:=20:zap:=20=E6=B7=BB=E5=8A=A0=20ElInpu?= =?UTF-8?q?tTag=20=E8=87=B3=E6=8C=89=E9=9C=80=E5=AF=BC=E5=85=A5=E5=A3=B0?= =?UTF-8?q?=E6=98=8E=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/types/components.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/components.d.ts b/src/types/components.d.ts index ca45a035..f1a615a6 100644 --- a/src/types/components.d.ts +++ b/src/types/components.d.ts @@ -36,6 +36,7 @@ declare module "vue" { ElIcon: (typeof import("element-plus/es"))["ElIcon"]; ElImage: (typeof import("element-plus/es"))["ElImage"]; ElInput: (typeof import("element-plus/es"))["ElInput"]; + ElInputTag: (typeof import("element-plus/es"))["ElInputTag"]; ElInputNumber: (typeof import("element-plus/es"))["ElInputNumber"]; ElLink: (typeof import("element-plus/es"))["ElLink"]; ElMenu: (typeof import("element-plus/es"))["ElMenu"]; From 43a8e6bc795ce3254313f74bcfaf6ad25d181e0f Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Mon, 31 Mar 2025 15:00:38 +0800 Subject: [PATCH 4/5] =?UTF-8?q?perf:=20:zap:=20=E6=B7=BB=E5=8A=A0=20input-?= =?UTF-8?q?tag=20=E7=BB=84=E4=BB=B6=E8=87=B3=E9=A2=84=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vite.config.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/vite.config.ts b/vite.config.ts index a44f96d3..c40347f3 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -94,7 +94,8 @@ export default defineConfig(({ mode }: ConfigEnv) => { "pinia", "axios", "@vueuse/core", - "sortablejs", + "codemirror-editor-vue3", + "default-passive-events", "exceljs", "path-to-regexp", "echarts/core", @@ -103,8 +104,10 @@ export default defineConfig(({ mode }: ConfigEnv) => { "echarts/components", "vue-i18n", "nprogress", + "sortablejs", "qs", "path-browserify", + "@stomp/stompjs", "@element-plus/icons-vue", "element-plus/es", "element-plus/es/locale/lang/en", @@ -139,6 +142,7 @@ export default defineConfig(({ mode }: ConfigEnv) => { "element-plus/es/components/image-viewer/style/index", "element-plus/es/components/image/style/index", "element-plus/es/components/input-number/style/index", + "element-plus/es/components/input-tag/style/index", "element-plus/es/components/input/style/index", "element-plus/es/components/link/style/index", "element-plus/es/components/loading/style/index", From 738e7eed69fe9cc00f4f97944b7cfe9a6fad092b Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Mon, 31 Mar 2025 17:24:43 +0800 Subject: [PATCH 5/5] =?UTF-8?q?chore:=20:hammer:=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=8B=96=E6=8B=BD=E7=BB=84=E4=BB=B6=E5=92=8C=E6=BB=9A=E5=8A=A8?= =?UTF-8?q?=E6=96=87=E6=9C=AC=E6=BC=94=E7=A4=BA=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mock/menu.mock.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/mock/menu.mock.ts b/mock/menu.mock.ts index 2f2550d1..02d72db0 100644 --- a/mock/menu.mock.ts +++ b/mock/menu.mock.ts @@ -388,6 +388,32 @@ export default defineMock([ params: null, }, }, + { + path: "drag", + component: "demo/drag", + name: "Drag", + meta: { + title: "拖拽组件", + icon: "", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "text-scroll", + component: "demo/text-scroll", + name: "TextScroll", + meta: { + title: "滚动文本", + icon: "", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, ], }, {