1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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
|