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(() => { }) } } }