ruoyi-plus-soybean/src/hooks/business/dict.ts

43 lines
1.1 KiB
TypeScript
Raw Normal View History

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();
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
}
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;
}
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,
getDictOptions
2024-09-04 09:11:04 +08:00
};
}