1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import { message } from 'antd';
import { addResource, updateResource, deleteResource, resourceTree } from '../../services/admin';
const buildSelectTree = list => {
return list.map(item => {
let children = [];
if (item.children) {
children = buildSelectTree(item.children);
}
return {
title: item.displayName,
value: `${item.displayName}-${item.id}`,
key: item.id,
children,
};
});
};
export default {
namespace: 'resourceList',
state: {
list: [],
selectTree: [],
},
effects: {
*add({ payload }, { call, put }) {
const { callback, body } = payload;
const response = yield call(addResource, body);
if (callback) {
callback(response);
}
yield put({
type: 'tree',
payload: {},
});
},
*update({ payload }, { call, put }) {
const { callback, body } = payload;
const response = yield call(updateResource, body);
if (callback) {
callback(response);
}
yield put({
type: 'tree',
payload: {},
});
},
*delete({ payload }, { call, put }) {
yield call(deleteResource, payload);
message.info('删除成功!');
yield put({
type: 'tree',
payload: {},
});
},
*tree({ payload }, { call, put }) {
const { queryParams } = payload;
const response = yield call(resourceTree, queryParams);
message.info('查询成功!');
yield put({
type: 'treeSuccess',
payload: response.data,
});
},
},
reducers: {
treeSuccess(state, { payload }) {
const resultData = payload;
const treeData = buildSelectTree(resultData);
// value 要保护 displayName 不然,搜索会失效
const rootNode = [
{
title: '根节点',
value: `根节点-0`,
key: 0,
children: [],
},
];
const selectTree = rootNode.concat(treeData);
return {
...state,
list: resultData,
selectTree,
};
},
},
};