import useDictStore from "@/store/modules/dict"; import { getDicts } from "@/api/system/dict/data"; import { Ref, ref, toRefs } from "vue"; /** * 获取字典数据 */ export function useDict(...args : any[]) { const res : Ref = ref({}); return (() => { args.forEach((dictType, index) => { // console.log(dictType) res.value[dictType] = []; const dicts = useDictStore().getDict(dictType); if (dicts) { res.value[dictType] = dicts; } else { // console.log(111) getDicts(dictType).then((resp) => { // console.log(111) // console.log(resp) res.value[dictType] = resp.data.map((p : any) => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass, })); useDictStore().setDict(dictType, res.value[dictType]); }); } }); // console.log(res.value) return toRefs(res.value); })(); } /** * 获取单个字典数据 */ export async function getDict(dictType) { const dictStore = useDictStore(); const cachedDict = dictStore.getDict(dictType); if (cachedDict) { return cachedDict; } try { const resp = await getDicts(dictType); const dictData = resp.data.map((p) => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass, })); dictStore.setDict(dictType, dictData); return dictData; } catch (error) { console.error(`获取字典 ${dictType} 失败:`, error); return []; } } /** * 获取字典标签 */ export async function getDictLabel(dictType, dictValue) { const dictData = await getDict(dictType); const item = dictData.find(d => d.value === dictValue); return item ? item.label : dictValue; }