From 43df9508061e9621bb9b4dcc9b484b810f6f3d76 Mon Sep 17 00:00:00 2001 From: xlsea Date: Fri, 6 Sep 2024 14:16:46 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E9=87=8D=E6=9E=84=E5=AD=97=E5=85=B8?= =?UTF-8?q?=E5=B0=81=E8=A3=85(=E8=BF=98=E6=9C=89=E9=97=AE=E9=A2=98)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/business/dict.ts | 62 ++++++------------- src/views/system/menu/index.vue | 13 +--- .../menu/modules/menu-operate-drawer.vue | 15 ++--- 3 files changed, 26 insertions(+), 64 deletions(-) diff --git a/src/hooks/business/dict.ts b/src/hooks/business/dict.ts index e0d394a5..4f6cf0d2 100644 --- a/src/hooks/business/dict.ts +++ b/src/hooks/business/dict.ts @@ -1,64 +1,42 @@ +import { ref } from 'vue'; import { fetchGetDictDataByType } from '@/service/api'; import { useDictStore } from '@/store/modules/dict'; export function useDict() { const dictStore = useDictStore(); - async function getDictData(...args: string[]) { - const dictData: { [key: string]: Api.System.DictData[] } = {}; - const promises = args.map(async dictType => { - dictData[dictType] = []; - const dicts = dictStore.getDict(dictType); - if (dicts) { - dictData[dictType] = dicts; - return; - } - const { data, error } = await fetchGetDictDataByType(dictType); - if (error) return; - dictData[dictType] = data; - dictStore.setDict(dictType, data); - }); - await Promise.all(promises); - return dictData; + 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; } - async function getDictRecord(...args: string[]) { - const dictRecord: { [key: string]: { [key: string]: string } } = {}; - const dictData = await getDictData(...args); - Object.keys(dictData).forEach(dictType => { - const data: { [key: string]: string } = {}; - Object.keys(dictData); - dictData[dictType].forEach(dict => { - data[dict.dictValue!] = dict.dictLabel!; + function getDictRecord(dictType: string) { + const dictRecord = ref<{ [key: string]: string }>({}); + getDictData(dictType).then(dictData => { + dictData.forEach(dict => { + dictRecord.value[dict.dictValue!] = dict.dictLabel!; }); - dictRecord[dictType] = data; }); return dictRecord; } - async function getDictOptions(...args: string[]) { - const dictOptions: { [key: string]: CommonType.Option[] } = {}; - const dictData = await getDictData(...args); - Object.keys(dictData).forEach(dictType => { - dictOptions[dictType] = dictData[dictType].map(dict => ({ label: dict.dictLabel!, value: dict.dictValue! })); + function getDictOptions(dictType: string) { + const dictOptions = ref([]); + getDictData(dictType).then(dictData => { + dictOptions.value = dictData.map(dict => ({ label: dict.dictLabel!, value: dict.dictValue! })); }); return dictOptions; } - async function transformDictByCode(type: string, code: string) { - const dictData = await getDictData(type); - return transformDictByOptions(code, dictData[type]); - } - - function transformDictByOptions(code: string, options: Api.System.DictData[]) { - return options.find(item => item.dictValue === code)?.dictLabel; - } - return { getDictData, getDictRecord, - getDictOptions, - transformDictByCode, - transformDictByOptions + getDictOptions }; } diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index fd8cd510..84b0df5e 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -259,17 +259,8 @@ const btnColumns: DataTableColumns = [ } ]; -const enableStatusRecord = ref({}); -const showHideRecord = ref({}); - -async function initDictData() { - const { getDictRecord } = useDict(); - const { sys_show_hide, sys_normal_disable } = await getDictRecord('sys_show_hide', 'sys_normal_disable'); - enableStatusRecord.value = sys_normal_disable; - showHideRecord.value = sys_show_hide; -} - -initDictData(); +const { getDictRecord } = useDict(); +const showHideRecord = getDictRecord('sys_show_hide');