smart-admin/smart-admin-web-javascript/src/store/modules/system/dict.js

63 lines
1.5 KiB
JavaScript

import { defineStore } from 'pinia';
import { DICT_SPLIT } from '/@/constants/support/dict-const.js';
import _ from 'lodash';
export const useDictStore = defineStore({
id: 'dict',
state: () => ({
// 字典集合
dictMap: new Map(),
}),
actions: {
// 获取字典数据
getDictData(dictCode) {
if (!dictCode) {
return [];
}
let dictDataList = this.dictMap.get(dictCode);
return dictDataList ? dictDataList : [];
},
// 获取字典的值名称
getDataLabels(dictCode, dataValue) {
if (_.isNil(dataValue) || _.isNaN(dataValue)) {
return '';
}
let dict = this.getDictData(dictCode);
if (dict.length === 0) {
return '';
}
// 是数字的话,需要特殊处理
if(_.isNumber(dataValue)){
let target = _.find(dict, { dataValue: dataValue });
return target ? target.dataLabel : '';
}
let valueArray = dataValue.split(DICT_SPLIT);
let result = [];
for (let item of valueArray) {
let target = _.find(dict, { dataValue: item });
if (target) {
result.push(target.dataLabel);
}
}
return result.join(DICT_SPLIT);
},
// 初始化字典
initData(dictDataList) {
this.dictMap.clear();
for (let data of dictDataList) {
let dataArray = this.dictMap.get(data.dictCode);
if (!dataArray) {
dataArray = [];
this.dictMap.set(data.dictCode, dataArray);
}
dataArray.push(data);
}
},
},
});