feat: dict store
parent
91e1ee7ae4
commit
358d03c5b5
|
@ -0,0 +1,49 @@
|
||||||
|
import { requestClient } from '#/api/request';
|
||||||
|
|
||||||
|
export type DictDataVO = {
|
||||||
|
colorType: string;
|
||||||
|
createTime: Date;
|
||||||
|
cssClass: string;
|
||||||
|
dictType: string;
|
||||||
|
id: number | undefined;
|
||||||
|
label: string;
|
||||||
|
remark: string;
|
||||||
|
sort: number | undefined;
|
||||||
|
status: number;
|
||||||
|
value: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 查询字典数据(精简)列表
|
||||||
|
export function getSimpleDictDataList() {
|
||||||
|
return requestClient.get('/system/dict-data/simple-list');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询字典数据列表
|
||||||
|
export function getDictDataPage(params: any) {
|
||||||
|
return requestClient.get('/system/dict-data/page', params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询字典数据详情
|
||||||
|
export function getDictData(id: number) {
|
||||||
|
return requestClient.get(`/system/dict-data/get?id=${id}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增字典数据
|
||||||
|
export function createDictData(data: DictDataVO) {
|
||||||
|
return requestClient.post('/system/dict-data/create', data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改字典数据
|
||||||
|
export function updateDictData(data: DictDataVO) {
|
||||||
|
return requestClient.put('/system/dict-data/update', data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除字典数据
|
||||||
|
export function deleteDictData(id: number) {
|
||||||
|
return requestClient.delete(`/system/dict-data/delete?id=${id}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出字典类型数据
|
||||||
|
export function exportDictData(params: any) {
|
||||||
|
return requestClient.download('/system/dict-data/export', params);
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
import { requestClient } from '#/api/request';
|
||||||
|
|
||||||
|
export type DictTypeVO = {
|
||||||
|
createTime: Date;
|
||||||
|
id: number | undefined;
|
||||||
|
name: string;
|
||||||
|
remark: string;
|
||||||
|
status: number;
|
||||||
|
type: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 查询字典(精简)列表
|
||||||
|
export function getSimpleDictTypeList() {
|
||||||
|
return requestClient.get('/system/dict-type/list-all-simple');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询字典列表
|
||||||
|
export function getDictTypePage(params: any) {
|
||||||
|
return requestClient.get('/system/dict-type/page', params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询字典详情
|
||||||
|
export function getDictType(id: number) {
|
||||||
|
return requestClient.get(`/system/dict-type/get?id=${id}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增字典
|
||||||
|
export function createDictType(data: DictTypeVO) {
|
||||||
|
return requestClient.post('/system/dict-type/create', data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改字典
|
||||||
|
export function updateDictType(data: DictTypeVO) {
|
||||||
|
return requestClient.put('/system/dict-type/update', data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除字典
|
||||||
|
export function deleteDictType(id: number) {
|
||||||
|
return requestClient.delete(`/system/dict-type/delete?id=${id}`);
|
||||||
|
}
|
||||||
|
// 导出字典类型
|
||||||
|
export function exportDictType(params: any) {
|
||||||
|
return requestClient.download('/system/dict-type/export', params);
|
||||||
|
}
|
|
@ -0,0 +1,83 @@
|
||||||
|
import { StorageManager } from '@vben/utils';
|
||||||
|
|
||||||
|
import { acceptHMRUpdate, defineStore } from 'pinia';
|
||||||
|
|
||||||
|
import { getSimpleDictDataList } from '#/api/system/dict/dict.data';
|
||||||
|
|
||||||
|
const DICT_STORAGE_KEY = 'DICT_STORAGE__';
|
||||||
|
|
||||||
|
interface DictValueType {
|
||||||
|
value: any;
|
||||||
|
label: string;
|
||||||
|
colorType?: string;
|
||||||
|
cssClass?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
// interface DictTypeType {
|
||||||
|
// dictType: string;
|
||||||
|
// dictValue: DictValueType[];
|
||||||
|
// }
|
||||||
|
|
||||||
|
interface DictState {
|
||||||
|
dictMap: Map<string, DictValueType[]>;
|
||||||
|
isSetDict: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
const storage = new StorageManager({
|
||||||
|
prefix: import.meta.env.VITE_APP_NAMESPACE,
|
||||||
|
storageType: 'sessionStorage',
|
||||||
|
});
|
||||||
|
|
||||||
|
export const useDictStore = defineStore('dict', {
|
||||||
|
actions: {
|
||||||
|
async setDictMap() {
|
||||||
|
try {
|
||||||
|
const dataRes = await getSimpleDictDataList();
|
||||||
|
|
||||||
|
const dictDataMap = new Map<string, DictValueType[]>();
|
||||||
|
|
||||||
|
dataRes.forEach((item: any) => {
|
||||||
|
let dictTypeArray = dictDataMap.get(item.dictType);
|
||||||
|
if (!dictTypeArray) {
|
||||||
|
dictTypeArray = [];
|
||||||
|
}
|
||||||
|
dictTypeArray.push({
|
||||||
|
value: item.value,
|
||||||
|
label: item.label,
|
||||||
|
colorType: item.colorType,
|
||||||
|
cssClass: item.cssClass,
|
||||||
|
});
|
||||||
|
dictDataMap.set(item.dictType, dictTypeArray);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.dictMap = dictDataMap;
|
||||||
|
this.isSetDict = true;
|
||||||
|
|
||||||
|
// 将字典数据存储到 sessionStorage 中
|
||||||
|
storage.setItem(DICT_STORAGE_KEY, dictDataMap, 60);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Failed to set dictionary values:', error);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
getters: {
|
||||||
|
getDictMap: (state) => state.dictMap,
|
||||||
|
getDictData: (state) => (dictType: string) => {
|
||||||
|
return state.dictMap.get(dictType);
|
||||||
|
},
|
||||||
|
getDictOptions: (state) => (dictType: string) => {
|
||||||
|
return state.dictMap.get(dictType);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
persist: [{ pick: ['dictMap', 'isSetDict'] }],
|
||||||
|
state: (): DictState => ({
|
||||||
|
dictMap: new Map<string, DictValueType[]>(),
|
||||||
|
isSetDict: false,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
// 解决热更新问题
|
||||||
|
const hot = import.meta.hot;
|
||||||
|
if (hot) {
|
||||||
|
hot.accept(acceptHMRUpdate(useDictStore, hot));
|
||||||
|
}
|
|
@ -1 +1,2 @@
|
||||||
export * from './auth';
|
export * from './auth';
|
||||||
|
export * from './dict';
|
||||||
|
|
Loading…
Reference in New Issue