import { listSimpleDictDatas } from '@/api/login.js' import storage from '@/utils/storage' import constant from '@/utils/constant' const dict = { state : { /** * 数据字典 MAP * key:数据字典大类枚举值 dictType * dictValue:数据字典小类数值 {dictValue: '', dictLabel: ''} 的数组 * 数据字典被组织成一个 key-value 对象,其中 key 是数据字典大类的枚举值,value 是一个数组,包含了该大类下所有小类的数值和标签等信息。 * 在 state 中,dictDatas 存储了整个数据字典 MAP。在 mutations 中 * SET_DICT_DATAS 用于更新 dictDatas 的值,并将其存储到浏览器的 localStorage 中,以便在页面刷新后仍能保留之前加载的数据字典。 * 在 actions 中,loadDictDatas 负责从 API 中加载数据字典,然后通过 SET_DICT_DATAS 将数据存储到 Store 中。 * 在加载数据时,将返回的数据按照 dictType 分组,然后依次处理每个分组下的小类数据,将其添加到对应的数组中。 * 最后将整个数据字典 MAP 存储到 Store 中。 */ dictDatas: storage.get(constant.dictDatas), }, mutations : { SET_DICT_DATAS: (state, dictDatas) => { state.dictDatas = dictDatas storage.set(constant.dictDatas, dictDatas) } }, actions : { loadDictDatas({ commit }) { listSimpleDictDatas().then(response => { // 如果未加载到数据,则直接返回 if (!response || !response.data) { return; } // 设置数据 const dictDataMap = {} response.data.forEach(dictData => { // 获得 dictType 层级 const enumValueObj = dictDataMap[dictData.dictType] if (!enumValueObj) { dictDataMap[dictData.dictType] = [] } // 处理 dictValue 层级 dictDataMap[dictData.dictType].push({ value: dictData.value, label: dictData.label, colorType: dictData.colorType, cssClass: dictData.cssClass, }) }) console.log('dictDataMap',dictDataMap); // 存储到 Store 中 commit('SET_DICT_DATAS', dictDataMap) }) } } } export default dict