96 lines
2.6 KiB
JavaScript
96 lines
2.6 KiB
JavaScript
import {message} from 'antd';
|
|
import {dictionaryAdd, dictionaryDelete, dictionaryList, dictionaryUpdate} from '../../services/admin';
|
|
|
|
export default {
|
|
namespace: 'dictionaryList',
|
|
|
|
state: {
|
|
list: [],
|
|
},
|
|
|
|
effects: {
|
|
*add({ payload }, { call, put }) {
|
|
const { callback, body } = payload;
|
|
const response = yield call(dictionaryAdd, body);
|
|
if (callback) {
|
|
callback(response);
|
|
}
|
|
yield put({
|
|
type: 'tree',
|
|
payload: {},
|
|
});
|
|
},
|
|
*update({ payload }, { call, put }) {
|
|
const { callback, body } = payload;
|
|
const response = yield call(dictionaryUpdate, body);
|
|
if (callback) {
|
|
callback(response);
|
|
}
|
|
yield put({
|
|
type: 'tree',
|
|
payload: {},
|
|
});
|
|
},
|
|
*delete({ payload }, { call, put }) {
|
|
const response = yield call(dictionaryDelete, payload);
|
|
message.info('删除成功!');
|
|
// yield put({
|
|
// type: 'treeSuccess',
|
|
// payload: {
|
|
// list: response.data,
|
|
// },
|
|
// });
|
|
yield put({
|
|
type: 'tree',
|
|
payload: {},
|
|
});
|
|
},
|
|
*tree({ payload }, { call, put }) {
|
|
const { queryParams } = payload;
|
|
const response = yield call(dictionaryList, queryParams);
|
|
message.info('查询成功!');
|
|
|
|
// 将数据格式化成 tree 格式
|
|
// debugger;
|
|
let treeNodeMap = new Map(); // key: enumValue value: Node
|
|
for(let i = 0, len = response.data.length; i < len; i++){
|
|
let dataDict = response.data[i];
|
|
let treeNode = treeNodeMap.get(dataDict.enumValue);
|
|
if (!treeNode) {
|
|
treeNode = {
|
|
enumValue: dataDict.enumValue,
|
|
children: [dataDict]
|
|
};
|
|
treeNodeMap.set(dataDict.enumValue, treeNode);
|
|
treeNode.index = dataDict.enumValue; // 因为 Table 必须要有 rowKey ,所以这里需要处理下。主要是数据字典的结构特殊
|
|
} else {
|
|
treeNode.children.push(dataDict);
|
|
}
|
|
dataDict.index = dataDict.id; // 因为 Table 必须要有 rowKey ,所以这里需要处理下。主要是数据字典的结构特殊
|
|
}
|
|
// 因为不支持 Map.values() 返回的结果,所以这里进行转换。
|
|
let list = [];
|
|
treeNodeMap.forEach(function (value, key, map) {
|
|
list.push(value)
|
|
});
|
|
// console.log(list);
|
|
|
|
yield put({
|
|
type: 'treeSuccess',
|
|
payload: {
|
|
list: list,
|
|
},
|
|
});
|
|
},
|
|
},
|
|
|
|
reducers: {
|
|
treeSuccess(state, { payload }) {
|
|
return {
|
|
...state,
|
|
...payload,
|
|
};
|
|
},
|
|
},
|
|
};
|