jinlin
2023-11-03 35435e8b1995e6775c82b86652381e07e3faff54
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import http from '../../utils/request'
import {equalsIgnoreType} from '../../utils'
 
export default {
  state: {
    dicts: []
  },
  getters: {
    getDict: state => (dictType) => {
      var dict = state.dicts[dictType]
      if (!dict) {
        dict = []
 
        // for (let firstDict in state.dicts) {
        //   for (let k = 0; k < state.dicts[firstDict].length; k++) {
        //     //遍历一级字典的元素,如果dataList有值,说明是有二级元素
        //     if (state.dicts[firstDict][k].dataList && dictType==state.dicts[firstDict][k].dictType) {
        //       dict=state.dicts[firstDict][k].dataList;
        //     }
        //
        //
        //   }
        // }
      }
      return dict
    },
 
    getDictLabel: state => (dictType, value) => {
      var dictLabel = value
      let dict = state.dicts[dictType]
      if (dict) {
        let option = dict.find(option => equalsIgnoreType(option.dictValue, value))
        if (option) {
          dictLabel = option.dictLabel
        } else {
          //for(item in dict)
        }
      } else {
        //从全部二级字典里面去找
        // for (let firstDict in state.dicts) {
        //   for (let k = 0; k < state.dicts[firstDict].length; k++) {
        //     //遍历一级字典的元素,如果dataList有值,说明是有二级元素
        //     if (state.dicts[firstDict][k].dataList && dictType==state.dicts[firstDict][k].dictType) {
        //       for (let dictOne in state.dicts[firstDict][k].dataList) {
        //         if (state.dicts[firstDict][k].dataList[dictOne].dictValue == value) {
        //           //
        //           return state.dicts[firstDict][k].dataList[dictOne].dictLabel;
        //         }
        //       }
        //     }
        //   }
        // }
      }
      return dictLabel
    }
 
  },
  mutations: {
    setDictList(state, dictList) {
      dictList = dictList.data || dictList
 
      let dicts = {}
 
      // 后台代码定义的字典
      dictList.forEach(dict => {
        dicts[dict.dictType] = dict.children || dict.dataList
 
        // 全局字典
        let $dict = window.SITE_CONFIG['dict']
        if (dict.dataList && dict.dataList.length > 0 && dict.dataList[0].name != null) {
          /* eslint-disable */
          // 转驼峰
          let dictType = dict.dictType.replace(/\_(\w)/g, function (all, letter) {
            return letter.toUpperCase()
          })
          // 首字母大写
          dictType = dictType.substr(0, 1).toUpperCase() + dictType.substr(1)
          $dict[dictType] = {}
          dict.dataList.forEach(item => $dict[dictType][item.name] = item.dictValue)
        }
      })
 
      state.dicts = dicts
    }
  },
  actions: {
    getDictList({commit}) {
      // 获取字典列表, 添加并全局变量保存
      http.get('/sys/dict/type/all').then(res => {
        if (res.code !== 0) {
          return
        }
        commit('setDictList', res.data)
 
      }).catch(() => {
      })
    }
  }
}