权限分配
This commit is contained in:
@@ -1,5 +1,32 @@
|
||||
import { message } from 'antd';
|
||||
import { addRole, updateRole, deleteRole, queryRole } from '../../services/admin';
|
||||
import { arrayToStringParams } from '../../utils/request.qs';
|
||||
import {
|
||||
addRole,
|
||||
updateRole,
|
||||
deleteRole,
|
||||
queryRole,
|
||||
queryRoleResourceTree,
|
||||
roleAssignResource,
|
||||
resourceTree,
|
||||
} from '../../services/admin';
|
||||
|
||||
function buildTreeNode(nodes, titleKey, nodeKey) {
|
||||
return nodes.map(item => {
|
||||
const res = {};
|
||||
if (item.children) {
|
||||
res.children = buildTreeNode(item.children, titleKey, nodeKey);
|
||||
}
|
||||
res.title = `${item.id}-${item[titleKey]}`;
|
||||
res.key = item[nodeKey];
|
||||
return res;
|
||||
});
|
||||
}
|
||||
|
||||
function getKeys(treeData) {
|
||||
return treeData.map(item => {
|
||||
return item.key;
|
||||
});
|
||||
}
|
||||
|
||||
export default {
|
||||
namespace: 'roleList',
|
||||
@@ -9,6 +36,11 @@ export default {
|
||||
count: 0,
|
||||
pageNo: 0,
|
||||
pageSize: 10,
|
||||
|
||||
roleTreeData: [],
|
||||
resourceTreeData: [],
|
||||
checkedKeys: [],
|
||||
assignModalLoading: true,
|
||||
},
|
||||
|
||||
effects: {
|
||||
@@ -61,6 +93,56 @@ export default {
|
||||
},
|
||||
});
|
||||
},
|
||||
*queryRoleAssign({ payload }, { call, put }) {
|
||||
yield put({
|
||||
type: 'changeAssignModalLoading',
|
||||
payload: true,
|
||||
});
|
||||
|
||||
const roleResourceResponse = yield call(queryRoleResourceTree, payload);
|
||||
const resourceTreeResponse = yield call(resourceTree);
|
||||
|
||||
const roleTreeData = buildTreeNode(roleResourceResponse.data, 'displayName', 'id');
|
||||
const resourceTreeData = buildTreeNode(resourceTreeResponse.data, 'displayName', 'id');
|
||||
const roleTreeIdKeys = getKeys(roleTreeData);
|
||||
const resourceTreeIdKeys = getKeys(resourceTreeData);
|
||||
|
||||
const checkedKeys = roleTreeIdKeys.filter(roleKey => {
|
||||
let res = false;
|
||||
resourceTreeIdKeys.map(key => {
|
||||
if (key === roleKey) {
|
||||
res = true;
|
||||
}
|
||||
return key;
|
||||
});
|
||||
return res;
|
||||
});
|
||||
|
||||
yield put({
|
||||
type: 'querySuccess',
|
||||
payload: {
|
||||
checkedKeys,
|
||||
roleTreeData,
|
||||
resourceTreeData,
|
||||
},
|
||||
});
|
||||
|
||||
yield put({
|
||||
type: 'changeAssignModalLoading',
|
||||
payload: false,
|
||||
});
|
||||
},
|
||||
*roleAssignResource({ payload }, { call }) {
|
||||
const { id, resourceIds } = payload;
|
||||
const params = {
|
||||
id,
|
||||
resourceIds: arrayToStringParams(resourceIds),
|
||||
};
|
||||
const response = yield call(roleAssignResource, params);
|
||||
if (response.code === 0) {
|
||||
message.info('操作成功!');
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
reducers: {
|
||||
@@ -70,5 +152,17 @@ export default {
|
||||
...payload,
|
||||
};
|
||||
},
|
||||
changeCheckedKeys(state, { payload }) {
|
||||
return {
|
||||
...state,
|
||||
checkedKeys: payload,
|
||||
};
|
||||
},
|
||||
changeAssignModalLoading(state, { payload }) {
|
||||
return {
|
||||
...state,
|
||||
assignModalLoading: payload,
|
||||
};
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user