mirror of
https://github.com/1024-lab/smart-admin.git
synced 2026-06-02 03:55:59 +00:00
87 lines
2.2 KiB
JavaScript
87 lines
2.2 KiB
JavaScript
import { defineStore } from 'pinia';
|
|
import { DICT_SPLIT } from '/@/constants/support/dict-const.js';
|
|
import _ from 'lodash';
|
|
import { dictApi } from '/@/api/support/dict-api.js';
|
|
import { smartSentry } from '/@/lib/smart-sentry.js';
|
|
|
|
export const useDictStore = defineStore({
|
|
id: 'dict',
|
|
state: () => ({
|
|
// 字典code集合
|
|
dictList: [],
|
|
// 字典集合
|
|
dictMap: new Map(),
|
|
}),
|
|
|
|
actions: {
|
|
getDictList(){
|
|
return this.dictList;
|
|
},
|
|
// 获取字典数据
|
|
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);
|
|
},
|
|
// 刷新字典
|
|
async refreshData(){
|
|
try{
|
|
const dictRes = await dictApi.getAllDictData();
|
|
this.initData(dictRes.data);
|
|
}catch (e){
|
|
smartSentry.captureError(e);
|
|
}
|
|
},
|
|
// 初始化字典
|
|
initData(dictDataList) {
|
|
this.dictMap.clear();
|
|
this.dictList = [];
|
|
|
|
for (let data of dictDataList) {
|
|
if (!_.some(this.dictList, { dictCode: data.dictCode })) {
|
|
this.dictList.push({ dictCode: data.dictCode, dictName: data.dictName ,disabledFlag: data.dictDisabledFlag});
|
|
}
|
|
|
|
let dataArray = this.dictMap.get(data.dictCode);
|
|
if (!dataArray) {
|
|
dataArray = [];
|
|
this.dictMap.set(data.dictCode, dataArray);
|
|
}
|
|
dataArray.push(data);
|
|
}
|
|
|
|
console.log(this.dictList,2)
|
|
},
|
|
},
|
|
});
|