mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2025-09-23 22:06:39 +08:00
63 lines
1.5 KiB
JavaScript
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);
|
|
}
|
|
},
|
|
},
|
|
});
|