diff --git a/src/components/GiCell/GiCellTag.vue b/src/components/GiCell/GiCellTag.vue index 2059b02..1df157c 100644 --- a/src/components/GiCell/GiCellTag.vue +++ b/src/components/GiCell/GiCellTag.vue @@ -25,8 +25,13 @@ const props = defineProps({ } }) -const dictItem = computed(() => - props.dict.find((d) => d.value === String(props.value) || d.value === Number(props.value)) +const dictItem = computed(() => { + try { + return props.dict.find((d) => d.value === String(props.value) || d.value === Number(props.value)) + } catch (error) { + return [] + } +} ) diff --git a/src/hooks/app/useDict.ts b/src/hooks/app/useDict.ts index d4ad90b..99e2912 100644 --- a/src/hooks/app/useDict.ts +++ b/src/hooks/app/useDict.ts @@ -2,20 +2,32 @@ import { ref, toRefs } from 'vue' import { listCommonDict } from '@/apis' import { useDictStore } from '@/stores' +const dictStore = useDictStore() +const tmpCodeZone: string[] = [] export function useDict(...codes: Array) { const res = ref({}) return (() => { - const dictStore = useDictStore() codes.forEach((code) => { res.value[code] = [] const dict = dictStore.getDict(code) if (dict) { res.value[code] = dict } else { - listCommonDict(code).then((resp) => { - res.value[code] = resp.data - dictStore.setDict(code, res.value[code]) - }) + if (!tmpCodeZone.includes(code)) { + // 防止多次触发 + tmpCodeZone.push(code) + listCommonDict(code).then((resp) => { + res.value[code] = resp.data + dictStore.setDict(code, res.value[code]) + tmpCodeZone.splice(tmpCodeZone.indexOf(code), 1) + }).catch(() => { + tmpCodeZone.splice(tmpCodeZone.indexOf(code), 1) + }) + } else { + res.value[code] = computed(() => { + return dictStore.getDict(code) + }) + } } }) return toRefs(res.value)