|
|
@@ -58,8 +58,7 @@
|
|
|
<el-tabs :tab-position="'left'" class="demo-tabs">
|
|
|
<el-tab-pane label="菜单/操作权限" style="height: 340px;overflow-y: auto;">
|
|
|
<ElTree :data="treeData" ref="permsRef" :props="defaultProps" show-checkbox node-key="id"
|
|
|
- :default-expand-all="true" check-strictly :default-checked-keys="checkedKeys"
|
|
|
- @check="handleCheckChange">
|
|
|
+ :default-expand-all="true" :default-checked-keys="checkedKeys" @check="handleCheckChange">
|
|
|
<template #default="{ node, data }">
|
|
|
<div class="flex a-c ">
|
|
|
<span>{{ node.label }}</span>
|
|
|
@@ -77,8 +76,8 @@
|
|
|
<el-radio value="3" size="large">指定机构</el-radio>
|
|
|
</el-radio-group>
|
|
|
<ElTree style="max-height: 440px; overflow-y: auto;" :data="deptTreeData" :props="deptProps" show-checkbox
|
|
|
- node-key="id" :check-strictly="true" :default-expand-all="true" :default-checked-keys="roleInfo.deptIds"
|
|
|
- @check="handleDeptCheckChange" ref="deptTree" />
|
|
|
+ node-key="id" :check-strictly="false" :default-expand-all="true"
|
|
|
+ :default-checked-keys="roleInfo.deptIds" @check="handleDeptCheckChange" ref="deptTree" />
|
|
|
</el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</div>
|
|
|
@@ -154,9 +153,13 @@ const handleCheckChange = (
|
|
|
halfCheckedNodes: any[];
|
|
|
}
|
|
|
) => {
|
|
|
- roleInfo.permsId = [...checkedInfo.checkedKeys, ...checkedInfo.halfCheckedKeys];
|
|
|
+ const halfCheckedNodes = checkedInfo.halfCheckedNodes.map(val => {
|
|
|
+ return { ...val, halfChecked: 1 };
|
|
|
+ });
|
|
|
+ roleInfo.permsId = [];
|
|
|
roleInfo.perms = [];
|
|
|
- roleInfo.perms = [...checkedInfo.checkedNodes, ...checkedInfo.halfCheckedNodes];
|
|
|
+ roleInfo.permsId = [...checkedInfo.checkedKeys, ...checkedInfo.halfCheckedKeys];
|
|
|
+ roleInfo.perms = [...halfCheckedNodes, ...checkedInfo.checkedNodes];
|
|
|
};
|
|
|
|
|
|
const handleDeptCheckChange = (
|
|
|
@@ -222,6 +225,8 @@ interface Perm {
|
|
|
const checkedKeys = ref<string[]>([]);
|
|
|
//选择角色
|
|
|
function chooseRole(item: any) {
|
|
|
+ deptTree.value!.setCheckedKeys([], true)
|
|
|
+ permsRef.value!.setCheckedKeys([], true)
|
|
|
roleId.value = item.id;
|
|
|
api.roleApi
|
|
|
.roleInfo({
|
|
|
@@ -233,19 +238,17 @@ function chooseRole(item: any) {
|
|
|
perms: [],
|
|
|
})
|
|
|
.then((res) => {
|
|
|
- // console.log(res);
|
|
|
+ console.log(res);
|
|
|
roleInfo.name = res.data.name;
|
|
|
roleInfo.remark = res.data.remark;
|
|
|
roleInfo.deptId = res.data.deptId;
|
|
|
roleInfo.permsId = res.data.perms.map((val: Perm) => val.id);
|
|
|
roleInfo.perms = res.data.perms;
|
|
|
- checkedKeys.value = res.data.perms.map((val: Perm) => val.id);
|
|
|
- console.log(checkedKeys.value)
|
|
|
+ checkedKeys.value = res.data.perms.filter((val: any) => val.halfChecked != 1).map((val: Perm) => val.id);
|
|
|
if (res.data.dataScope?.deptIds) {
|
|
|
deptTree.value!.setCheckedKeys(res.data.dataScope?.deptIds, true);
|
|
|
roleInfo.dataMark = res.data.dataScope?.dataMark;
|
|
|
} else {
|
|
|
- deptTree.value!.setCheckedKeys([], false);
|
|
|
roleInfo.dataMark = '1';
|
|
|
}
|
|
|
|
|
|
@@ -312,6 +315,15 @@ async function roleSubmit(roleRef: FormInstance | undefined) {
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
+ const halfCheckedNodes = permsRef.value!.getHalfCheckedNodes().map(val => {
|
|
|
+ return { ...val, halfChecked: 1 };
|
|
|
+ });
|
|
|
+ // 合并选中和半选中节点,并将半选中节点的halfChecked属性设置为1
|
|
|
+ roleInfo.perms = [
|
|
|
+ ...halfCheckedNodes,
|
|
|
+ ...permsRef.value!.getCheckedNodes(false)
|
|
|
+ ];
|
|
|
+ roleInfo.permsId = [...permsRef.value!.getCheckedKeys(), ...permsRef.value!.getHalfCheckedKeys() as any]
|
|
|
api.roleApi
|
|
|
.roleUpdate({
|
|
|
// roleId: roleInfo.id,
|