dict.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import {
  2. listSimpleDictDatas
  3. } from '@/api/login.js'
  4. import storage from '@/utils/storage'
  5. import constant from '@/utils/constant'
  6. const dict = {
  7. state : {
  8. /**
  9. * 数据字典 MAP
  10. * key:数据字典大类枚举值 dictType
  11. * dictValue:数据字典小类数值 {dictValue: '', dictLabel: ''} 的数组
  12. * 数据字典被组织成一个 key-value 对象,其中 key 是数据字典大类的枚举值,value 是一个数组,包含了该大类下所有小类的数值和标签等信息。
  13. * 在 state 中,dictDatas 存储了整个数据字典 MAP。在 mutations 中
  14. * SET_DICT_DATAS 用于更新 dictDatas 的值,并将其存储到浏览器的 localStorage 中,以便在页面刷新后仍能保留之前加载的数据字典。
  15. * 在 actions 中,loadDictDatas 负责从 API 中加载数据字典,然后通过 SET_DICT_DATAS 将数据存储到 Store 中。
  16. * 在加载数据时,将返回的数据按照 dictType 分组,然后依次处理每个分组下的小类数据,将其添加到对应的数组中。
  17. * 最后将整个数据字典 MAP 存储到 Store 中。
  18. */
  19. dictDatas: storage.get(constant.dictDatas),
  20. },
  21. mutations : {
  22. SET_DICT_DATAS: (state, dictDatas) => {
  23. state.dictDatas = dictDatas
  24. storage.set(constant.dictDatas, dictDatas)
  25. }
  26. },
  27. actions : {
  28. loadDictDatas({
  29. commit
  30. }) {
  31. listSimpleDictDatas().then(response => {
  32. // 如果未加载到数据,则直接返回
  33. if (!response || !response.data) {
  34. return;
  35. }
  36. // 设置数据
  37. const dictDataMap = {}
  38. response.data.forEach(dictData => {
  39. // 获得 dictType 层级
  40. const enumValueObj = dictDataMap[dictData.dictType]
  41. if (!enumValueObj) {
  42. dictDataMap[dictData.dictType] = []
  43. }
  44. // 处理 dictValue 层级
  45. dictDataMap[dictData.dictType].push({
  46. value: dictData.value,
  47. label: dictData.label,
  48. colorType: dictData.colorType,
  49. cssClass: dictData.cssClass,
  50. })
  51. })
  52. console.log('dictDataMap',dictDataMap);
  53. // 存储到 Store 中
  54. commit('SET_DICT_DATAS', dictDataMap)
  55. })
  56. }
  57. }
  58. }
  59. export default dict