diff --git a/src/store/modules/dict.ts b/src/store/modules/dict.ts index e3fda4da..f16e64ea 100644 --- a/src/store/modules/dict.ts +++ b/src/store/modules/dict.ts @@ -22,6 +22,20 @@ export interface DictState { isSetDict: boolean } +const normalizeDictMap = (dictMap: Recordable = {}) => { + const normalizedDictMap: Recordable = {} + Object.keys(dictMap || {}).forEach((dictType) => { + const normalizedDictType = dictType.trim() + const dictList = dictMap[dictType] + if (Array.isArray(normalizedDictMap[normalizedDictType]) && Array.isArray(dictList)) { + normalizedDictMap[normalizedDictType].push(...dictList) + } else { + normalizedDictMap[normalizedDictType] = dictList + } + }) + return normalizedDictMap +} + export const useDictStore = defineStore('dict', { state: (): DictState => ({ dictMap: new Map(), @@ -31,7 +45,7 @@ export const useDictStore = defineStore('dict', { getDictMap(): Recordable { const dictMap = wsCache.get(CACHE_KEY.DICT_CACHE) if (dictMap) { - this.dictMap = dictMap + this.dictMap = normalizeDictMap(dictMap) } return this.dictMap }, @@ -43,13 +57,15 @@ export const useDictStore = defineStore('dict', { async setDictMap() { const dictMap = wsCache.get(CACHE_KEY.DICT_CACHE) if (dictMap) { - const dictTypes = Object.keys(dictMap || {}) + const normalizedDictMap = normalizeDictMap(dictMap) + const dictTypes = Object.keys(normalizedDictMap || {}) const firstDictType = dictTypes[0] - const firstList = firstDictType ? dictMap[firstDictType] : undefined + const firstList = firstDictType ? normalizedDictMap[firstDictType] : undefined const needsUpgrade = Array.isArray(firstList) && firstList.length > 0 && !('labelEn' in (firstList[0] || {})) if (!needsUpgrade) { - this.dictMap = dictMap + this.dictMap = normalizedDictMap + wsCache.set(CACHE_KEY.DICT_CACHE, normalizedDictMap, { exp: 60 }) this.isSetDict = true return } @@ -58,11 +74,12 @@ export const useDictStore = defineStore('dict', { const res = await getSimpleDictDataList() const dictDataMap = new Map() res.forEach((dictData: DictDataVO) => { - const enumValueObj = dictDataMap[dictData.dictType] + const dictType = dictData.dictType.trim() + const enumValueObj = dictDataMap[dictType] if (!enumValueObj) { - dictDataMap[dictData.dictType] = [] + dictDataMap[dictType] = [] } - dictDataMap[dictData.dictType].push({ + dictDataMap[dictType].push({ value: dictData.value, label: dictData.label, labelEn: (dictData as any).labelEn, @@ -91,11 +108,12 @@ export const useDictStore = defineStore('dict', { const res = await getSimpleDictDataList() const dictDataMap = new Map() res.forEach((dictData: DictDataVO) => { - const enumValueObj = dictDataMap[dictData.dictType] + const dictType = dictData.dictType.trim() + const enumValueObj = dictDataMap[dictType] if (!enumValueObj) { - dictDataMap[dictData.dictType] = [] + dictDataMap[dictType] = [] } - dictDataMap[dictData.dictType].push({ + dictDataMap[dictType].push({ value: dictData.value, label: dictData.label, labelEn: (dictData as any).labelEn, diff --git a/src/utils/dict.ts b/src/utils/dict.ts index d4ca95c3..82e5c6f3 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -228,6 +228,10 @@ export enum DICT_TYPE { ERP_AUDIT_STATUS = 'erp_audit_status',// ERP 审批状态 ERP_STOCK_RECORD_BIZ_TYPE = 'erp_stock_record_biz_type',// 库存明细的业务类型 ERP_MOLD_STATUS = 'erp_mold_status',// ERP 模具状态 + WAREHOUSE_DOCUMENT_TYPES = 'warehouse_document_types', // 入库单据类型 + WAREHOUSE_DOCUMENT_OUT_TYPES = 'warehouse_document_out_types', // 出库单据类型 + WAREHOUSE_RECEIVING_STATUS = 'warehouse_receiving_status', // 入库状态 + WAREHOUSE_OUTBOUND_STATUS = 'Warehouse_outbound_status', // 出库状态 SUBMOLD_TYPE = 'submold_type', // 子模具类型 ERP_MAINTAIN_TYPE = 'maintain_type',// ERP 保养类型 diff --git a/src/views/erp/stock/in/index.vue b/src/views/erp/stock/in/index.vue index bab742a6..f384778c 100644 --- a/src/views/erp/stock/in/index.vue +++ b/src/views/erp/stock/in/index.vue @@ -86,7 +86,7 @@ class="!w-240px" > getStrDictOptions(WAREHOUSE_DOCUMENT_TYPES)) +const stockInTypeOptions = computed(() => getStrDictOptions(DICT_TYPE.WAREHOUSE_DOCUMENT_TYPES)) const inTypeToInfoKey = (inType: string) => { const map: Record = { '产品入库': 'productInfo', diff --git a/src/views/erp/stock/out/index.vue b/src/views/erp/stock/out/index.vue index cdd0ca71..f98d00b5 100644 --- a/src/views/erp/stock/out/index.vue +++ b/src/views/erp/stock/out/index.vue @@ -86,7 +86,7 @@ class="!w-240px" > getStrDictOptions(WAREHOUSE_DOCUMENT_TYPES)) +const stockOutTypeOptions = computed(() => getStrDictOptions(DICT_TYPE.WAREHOUSE_DOCUMENT_OUT_TYPES)) const outTypeToInfoKey = (outType: string) => { const map: Record = { '产品出库': 'productInfo',