dict.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import dictEnum from '@/enum/dict';
  2. import Vue from 'vue';
  3. import { getByCode } from '@/api/system/dictionary-data';
  4. //非枚举定义
  5. const otherDictConfig = {
  6. // [dictEnum.物品类型]: {
  7. // request: getSubListByParentId,
  8. // dictCode: 'type',
  9. // dictValue: 'name',
  10. // resKey: '' //为空选 data
  11. // }
  12. };
  13. const state = {};
  14. const mutations = {
  15. //根据字典code 添加字典
  16. ADD_DICT: (state, { code, dict }) => {
  17. Vue.set(state, code, dict);
  18. }
  19. // // 根据字典enumName 和 dictCode 获取字典项
  20. // GET_DICT (state, { enumName, dictCode }) {
  21. // return (
  22. // (state[dictEnum[enumName]] || []).find(
  23. // item => item.dictCode === dictCode
  24. // ) || {}
  25. // )
  26. // },
  27. // // 根据字典enumName 和 dictCode 获取字典 值(名称
  28. // GET_DICT_VALUE (state, { enumName, dictCode }) {
  29. // const obj = (state[dictEnum[enumName]] || []).find(
  30. // item => item.dictCode === dictCode
  31. // )
  32. // return obj && obj.dictValue
  33. // }
  34. };
  35. const actions = {
  36. // 根据字典enumName请求字典 已获取的不做重复请求
  37. async requestDict ({ commit, state }, enumName) {
  38. const code = dictEnum[enumName];
  39. if (state[code]?.length) return state[code];
  40. let res;
  41. if (otherDictConfig[dictEnum[enumName]]) {
  42. const config = otherDictConfig[dictEnum[enumName]];
  43. console.log(config);
  44. //非枚举定义
  45. res = await config.request();
  46. if (res?.code == 0) {
  47. let list = config.resKey ? res.data[config.resKey] : res.data;
  48. commit('ADD_DICT', {
  49. code,
  50. dict: list.map((item) => ({
  51. ...item,
  52. dictCode: item[config.dictCode],
  53. dictValue: item[config.dictValue]
  54. }))
  55. });
  56. return res.list;
  57. }
  58. } else {
  59. res = await getByCode(code);
  60. if (res?.code == 0) {
  61. commit('ADD_DICT', {
  62. code,
  63. dict: res.data.map((item) => {
  64. const arr = Object.entries(item)[0] || [];
  65. return {
  66. dictCode: arr[0],
  67. dictValue: arr[1]
  68. };
  69. })
  70. });
  71. return res.data;
  72. }
  73. }
  74. return [];
  75. },
  76. // 更新字典
  77. async reloadRequestDict ({ commit }, enumName) {
  78. const code = dictEnum[enumName];
  79. const res = await getByCode(code);
  80. if (res?.code == 0) {
  81. commit('ADD_DICT', {
  82. code,
  83. dict: res.data.map((item) => {
  84. const arr = Object.entries(item);
  85. return {
  86. dictCode: arr[0],
  87. dictValue: arr[1]
  88. };
  89. })
  90. });
  91. return res.data;
  92. }
  93. return [];
  94. }
  95. };
  96. export default {
  97. namespaced: true,
  98. state,
  99. mutations,
  100. actions
  101. };