2024-09-06 14:16:46 +08:00
|
|
|
import { ref } from 'vue';
|
2024-09-04 09:11:04 +08:00
|
|
|
import { fetchGetDictDataByType } from '@/service/api';
|
|
|
|
import { useDictStore } from '@/store/modules/dict';
|
|
|
|
|
|
|
|
export function useDict() {
|
|
|
|
const dictStore = useDictStore();
|
|
|
|
|
2024-09-06 14:16:46 +08:00
|
|
|
async function getDictData(dictType: string) {
|
|
|
|
const dicts = dictStore.getDict(dictType);
|
|
|
|
if (dicts) {
|
|
|
|
return dicts;
|
|
|
|
}
|
|
|
|
const { data, error } = await fetchGetDictDataByType(dictType);
|
|
|
|
if (error) return [];
|
|
|
|
dictStore.setDict(dictType, data);
|
|
|
|
return data;
|
2024-09-04 09:11:04 +08:00
|
|
|
}
|
|
|
|
|
2024-09-06 14:16:46 +08:00
|
|
|
function getDictRecord(dictType: string) {
|
|
|
|
const dictRecord = ref<{ [key: string]: string }>({});
|
|
|
|
getDictData(dictType).then(dictData => {
|
|
|
|
dictData.forEach(dict => {
|
|
|
|
dictRecord.value[dict.dictValue!] = dict.dictLabel!;
|
2024-09-04 09:11:04 +08:00
|
|
|
});
|
|
|
|
});
|
|
|
|
return dictRecord;
|
|
|
|
}
|
|
|
|
|
2024-09-06 14:16:46 +08:00
|
|
|
function getDictOptions(dictType: string) {
|
|
|
|
const dictOptions = ref<CommonType.Option[]>([]);
|
|
|
|
getDictData(dictType).then(dictData => {
|
|
|
|
dictOptions.value = dictData.map(dict => ({ label: dict.dictLabel!, value: dict.dictValue! }));
|
2024-09-04 09:11:04 +08:00
|
|
|
});
|
|
|
|
return dictOptions;
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
getDictData,
|
|
|
|
getDictRecord,
|
2024-09-06 14:16:46 +08:00
|
|
|
getDictOptions
|
2024-09-04 09:11:04 +08:00
|
|
|
};
|
|
|
|
}
|