2025-07-21 17:49:25 +08:00

65 lines
1.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
});
}