111 lines
2.4 KiB
Java
111 lines
2.4 KiB
Java
import { message } from 'antd';
|
|
import {
|
|
deptTreePage,
|
|
deptTreeAll,
|
|
addDeptment,
|
|
updateDeptment,
|
|
deleteDeptment,
|
|
} from '../../services/admin';
|
|
|
|
const buildSelectTree = list => {
|
|
return list.map(item => {
|
|
let children = [];
|
|
if (item.children) {
|
|
children = buildSelectTree(item.children);
|
|
}
|
|
return {
|
|
title: item.name,
|
|
value: `${item.name}-${item.id}`,
|
|
key: item.id,
|
|
children,
|
|
};
|
|
});
|
|
};
|
|
|
|
export default {
|
|
namespace: 'deptmentList',
|
|
|
|
state: {
|
|
list: [],
|
|
selectTree: [],
|
|
deptmentData: {
|
|
list: [],
|
|
},
|
|
},
|
|
|
|
effects: {
|
|
*add({ payload }, { call, put }) {
|
|
const { onSuccess, body } = payload;
|
|
const response = yield call(addDeptment, body);
|
|
if (response && response.code === 0) {
|
|
onSuccess && onSuccess();
|
|
}
|
|
},
|
|
*delete({ payload }, { call, put }) {
|
|
const { onSuccess, body } = payload;
|
|
const response = yield call(deleteDeptment, body);
|
|
if (response && response.code === 0) {
|
|
onSuccess && onSuccess();
|
|
}
|
|
},
|
|
*update({ payload }, { call, put }) {
|
|
const { onSuccess, body } = payload;
|
|
const response = yield call(updateDeptment, body);
|
|
if (response && response.code === 0) {
|
|
onSuccess && onSuccess();
|
|
}
|
|
},
|
|
*getDeptmentAll({ payload }, { call, put }) {
|
|
const result = yield call(deptTreeAll, payload);
|
|
yield put({
|
|
type: 'treeSuccess',
|
|
payload: result.data,
|
|
});
|
|
},
|
|
*getDeptmentList({ payload }, { call, put }) {
|
|
const result = yield call(deptTreePage, payload);
|
|
let deptmentData = {};
|
|
if (result.code === 0) {
|
|
deptmentData = result.data;
|
|
}
|
|
yield put({
|
|
type: 'save',
|
|
payload: {
|
|
deptmentData,
|
|
},
|
|
});
|
|
},
|
|
},
|
|
|
|
reducers: {
|
|
save(state, action) {
|
|
return {
|
|
...state,
|
|
...action.payload,
|
|
};
|
|
},
|
|
|
|
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,
|
|
};
|
|
},
|
|
},
|
|
};
|