import useDictStore from '@/store/modules/dict' import { getDicts } from '@/api/system/dict/data' import { getComDicts } from '@/api/liswork/dict/ComDict.js' /** * 获取字典数据 */ export function useDict(...args) { const res = ref({}); return (() => { args.forEach((dictType, index) => { res.value[dictType] = []; const dicts = useDictStore().getDict(dictType); if (dicts) { res.value[dictType] = dicts; } else { getDicts(dictType).then(resp => { res.value[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass })) useDictStore().setDict(dictType, res.value[dictType]); }) } }) return toRefs(res.value); })() } /** * 获取字典数据(改进版) * 返回 Promise,确保所有字典数据加载完成后才 resolve */ export function comDict(...args) { const res = ref({}); const promises = []; args.forEach((dictType) => { res.value[dictType] = []; const dicts = useDictStore().getDict(dictType); if (dicts) { // 缓存存在,直接赋值 res.value[dictType] = dicts; } else { // 缓存不存在,发起请求并记录 Promise const promise = getComDicts({ zdlb: dictType }).then(resp => { const dictList = resp.data.map(p => ({ label: p.zdmc, value: p.zddh, elTagType: "", elTagClass: "" })); res.value[dictType] = dictList; useDictStore().setDict(dictType, dictList); // console.log(`${dictType} 字典加载完成`, dictList); return dictList; }); promises.push(promise); } }); // 等待所有 Promise 完成后才返回 return Promise.all(promises).then(() => { // console.log('所有请求的字典已加载完成', res.value); return toRefs(res.value); }); }