Merge branch 'master' of https://gitee.com/youlaiorg/vue3-element-admin
This commit is contained in:
@@ -388,6 +388,32 @@ export default defineMock([
|
|||||||
params: null,
|
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,
|
||||||
|
},
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import DictAPI, { type DictItemOption } from "@/api/system/dict.api";
|
|||||||
export const useDictStore = defineStore("dict", () => {
|
export const useDictStore = defineStore("dict", () => {
|
||||||
// 字典数据缓存
|
// 字典数据缓存
|
||||||
const dictCache = useStorage<Record<string, DictItemOption[]>>("dict_cache", {});
|
const dictCache = useStorage<Record<string, DictItemOption[]>>("dict_cache", {});
|
||||||
|
|
||||||
// 请求队列(防止重复请求)
|
// 请求队列(防止重复请求)
|
||||||
const requestQueue: Record<string, Promise<void>> = {};
|
const requestQueue: Record<string, Promise<void>> = {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 缓存字典数据
|
* 缓存字典数据
|
||||||
* @param dictCode 字典编码
|
* @param dictCode 字典编码
|
||||||
@@ -14,6 +16,7 @@ export const useDictStore = defineStore("dict", () => {
|
|||||||
const cacheDictItems = (dictCode: string, data: DictItemOption[]) => {
|
const cacheDictItems = (dictCode: string, data: DictItemOption[]) => {
|
||||||
dictCache.value[dictCode] = data;
|
dictCache.value[dictCode] = data;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加载字典数据(如果缓存中没有则请求)
|
* 加载字典数据(如果缓存中没有则请求)
|
||||||
* @param dictCode 字典编码
|
* @param dictCode 字典编码
|
||||||
@@ -29,6 +32,7 @@ export const useDictStore = defineStore("dict", () => {
|
|||||||
}
|
}
|
||||||
await requestQueue[dictCode];
|
await requestQueue[dictCode];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取字典项列表
|
* 获取字典项列表
|
||||||
* @param dictCode 字典编码
|
* @param dictCode 字典编码
|
||||||
@@ -37,12 +41,14 @@ export const useDictStore = defineStore("dict", () => {
|
|||||||
const getDictItems = (dictCode: string): DictItemOption[] => {
|
const getDictItems = (dictCode: string): DictItemOption[] => {
|
||||||
return dictCache.value[dictCode] || [];
|
return dictCache.value[dictCode] || [];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清空字典缓存
|
* 清空字典缓存
|
||||||
*/
|
*/
|
||||||
const clearDictCache = () => {
|
const clearDictCache = () => {
|
||||||
dictCache.value = {};
|
dictCache.value = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
loadDictItems,
|
loadDictItems,
|
||||||
getDictItems,
|
getDictItems,
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ export const useUserStore = defineStore("user", () => {
|
|||||||
clearToken();
|
clearToken();
|
||||||
usePermissionStoreHook().resetRouter();
|
usePermissionStoreHook().resetRouter();
|
||||||
useDictStoreHook().clearDictCache();
|
useDictStoreHook().clearDictCache();
|
||||||
|
userInfo.value = {} as UserInfo;
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
1
src/types/components.d.ts
vendored
1
src/types/components.d.ts
vendored
@@ -36,6 +36,7 @@ declare module "vue" {
|
|||||||
ElIcon: (typeof import("element-plus/es"))["ElIcon"];
|
ElIcon: (typeof import("element-plus/es"))["ElIcon"];
|
||||||
ElImage: (typeof import("element-plus/es"))["ElImage"];
|
ElImage: (typeof import("element-plus/es"))["ElImage"];
|
||||||
ElInput: (typeof import("element-plus/es"))["ElInput"];
|
ElInput: (typeof import("element-plus/es"))["ElInput"];
|
||||||
|
ElInputTag: (typeof import("element-plus/es"))["ElInputTag"];
|
||||||
ElInputNumber: (typeof import("element-plus/es"))["ElInputNumber"];
|
ElInputNumber: (typeof import("element-plus/es"))["ElInputNumber"];
|
||||||
ElLink: (typeof import("element-plus/es"))["ElLink"];
|
ElLink: (typeof import("element-plus/es"))["ElLink"];
|
||||||
ElMenu: (typeof import("element-plus/es"))["ElMenu"];
|
ElMenu: (typeof import("element-plus/es"))["ElMenu"];
|
||||||
|
|||||||
@@ -94,7 +94,8 @@ export default defineConfig(({ mode }: ConfigEnv) => {
|
|||||||
"pinia",
|
"pinia",
|
||||||
"axios",
|
"axios",
|
||||||
"@vueuse/core",
|
"@vueuse/core",
|
||||||
"sortablejs",
|
"codemirror-editor-vue3",
|
||||||
|
"default-passive-events",
|
||||||
"exceljs",
|
"exceljs",
|
||||||
"path-to-regexp",
|
"path-to-regexp",
|
||||||
"echarts/core",
|
"echarts/core",
|
||||||
@@ -103,8 +104,10 @@ export default defineConfig(({ mode }: ConfigEnv) => {
|
|||||||
"echarts/components",
|
"echarts/components",
|
||||||
"vue-i18n",
|
"vue-i18n",
|
||||||
"nprogress",
|
"nprogress",
|
||||||
|
"sortablejs",
|
||||||
"qs",
|
"qs",
|
||||||
"path-browserify",
|
"path-browserify",
|
||||||
|
"@stomp/stompjs",
|
||||||
"@element-plus/icons-vue",
|
"@element-plus/icons-vue",
|
||||||
"element-plus/es",
|
"element-plus/es",
|
||||||
"element-plus/es/locale/lang/en",
|
"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-viewer/style/index",
|
||||||
"element-plus/es/components/image/style/index",
|
"element-plus/es/components/image/style/index",
|
||||||
"element-plus/es/components/input-number/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/input/style/index",
|
||||||
"element-plus/es/components/link/style/index",
|
"element-plus/es/components/link/style/index",
|
||||||
"element-plus/es/components/loading/style/index",
|
"element-plus/es/components/loading/style/index",
|
||||||
|
|||||||
Reference in New Issue
Block a user