|
|
|
@ -74,42 +74,47 @@
|
|
|
|
|
:rules="formState.rules2"
|
|
|
|
|
>
|
|
|
|
|
<el-form-item label="系统模块菜单" prop="menuIds">
|
|
|
|
|
<el-tree
|
|
|
|
|
:data="menuList"
|
|
|
|
|
:default-checked-keys="formState.form.menuIds"
|
|
|
|
|
default-expand-all
|
|
|
|
|
:expand-on-click-node="false"
|
|
|
|
|
highlight-current
|
|
|
|
|
node-key="id"
|
|
|
|
|
:props="{
|
|
|
|
|
label: 'title',
|
|
|
|
|
value: 'id',
|
|
|
|
|
children: 'menuChild',
|
|
|
|
|
}"
|
|
|
|
|
show-checkbox
|
|
|
|
|
@check-change="handleCheckMenu"
|
|
|
|
|
@node-click="handleLoadPermission"
|
|
|
|
|
/>
|
|
|
|
|
<el-scrollbar max-height="420px">
|
|
|
|
|
<el-tree
|
|
|
|
|
ref="refsTree1"
|
|
|
|
|
:data="menuList"
|
|
|
|
|
:default-checked-keys="formState.form.menuIds"
|
|
|
|
|
default-expand-all
|
|
|
|
|
:expand-on-click-node="false"
|
|
|
|
|
highlight-current
|
|
|
|
|
node-key="id"
|
|
|
|
|
:props="{
|
|
|
|
|
label: 'title',
|
|
|
|
|
value: 'id',
|
|
|
|
|
children: 'menuChild',
|
|
|
|
|
}"
|
|
|
|
|
show-checkbox
|
|
|
|
|
@check-change="handleCheckMenu"
|
|
|
|
|
@node-click="handleLoadPermission"
|
|
|
|
|
/>
|
|
|
|
|
</el-scrollbar>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="功能权限" prop="permissionIds">
|
|
|
|
|
<el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAll">
|
|
|
|
|
全选
|
|
|
|
|
</el-checkbox>
|
|
|
|
|
<el-tree
|
|
|
|
|
ref="refsTree"
|
|
|
|
|
:data="permissionList"
|
|
|
|
|
:default-checked-keys="formState.form.permissionIds"
|
|
|
|
|
default-expand-all
|
|
|
|
|
:expand-on-click-node="false"
|
|
|
|
|
highlight-current
|
|
|
|
|
node-key="id"
|
|
|
|
|
:props="{
|
|
|
|
|
label: 'name',
|
|
|
|
|
value: 'id',
|
|
|
|
|
}"
|
|
|
|
|
show-checkbox
|
|
|
|
|
@check-change="handleCheckPermission"
|
|
|
|
|
/>
|
|
|
|
|
<el-scrollbar max-height="420px">
|
|
|
|
|
<el-tree
|
|
|
|
|
ref="refsTree2"
|
|
|
|
|
:data="permissionList"
|
|
|
|
|
:default-checked-keys="formState.form.permissionIds"
|
|
|
|
|
default-expand-all
|
|
|
|
|
:expand-on-click-node="false"
|
|
|
|
|
highlight-current
|
|
|
|
|
node-key="id"
|
|
|
|
|
:props="{
|
|
|
|
|
label: 'name',
|
|
|
|
|
value: 'id',
|
|
|
|
|
}"
|
|
|
|
|
show-checkbox
|
|
|
|
|
@check-change="handleCheckPermission"
|
|
|
|
|
/>
|
|
|
|
|
</el-scrollbar>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</el-tab-pane>
|
|
|
|
@ -124,7 +129,7 @@
|
|
|
|
|
>
|
|
|
|
|
<el-form-item label="选择绑定组织" prop="departmentList">
|
|
|
|
|
<el-tree
|
|
|
|
|
ref="refsTree2"
|
|
|
|
|
ref="refsTree3"
|
|
|
|
|
:data="opts.dept"
|
|
|
|
|
:default-checked-keys="formState.form.departmentList.map((item) => item.id)"
|
|
|
|
|
default-expand-all
|
|
|
|
@ -236,7 +241,8 @@
|
|
|
|
|
departmentList: [{ required: true, trigger: 'change', message: '绑定组织不能为空' }],
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
const refsTree = ref(null);
|
|
|
|
|
const refsTree1 = ref(null);
|
|
|
|
|
const refsTree2 = ref(null);
|
|
|
|
|
const checkAll = ref(false);
|
|
|
|
|
const isIndeterminate = ref(false);
|
|
|
|
|
watch(
|
|
|
|
@ -248,7 +254,7 @@
|
|
|
|
|
{ immediate: true, deep: true }
|
|
|
|
|
);
|
|
|
|
|
const handleCheckAll = () => {
|
|
|
|
|
unref(refsTree).setCheckedKeys(unref(checkAll) ? unref(permissionList).map((item) => item.id) : []);
|
|
|
|
|
unref(refsTree2).setCheckedKeys(unref(checkAll) ? unref(permissionList).map((item) => item.id) : []);
|
|
|
|
|
};
|
|
|
|
|
const handleLoadPermission = async (data) => {
|
|
|
|
|
permissionList.value = await store.dispatch('role/loadPermission', data.id);
|
|
|
|
@ -267,7 +273,7 @@
|
|
|
|
|
formState.form.permissionIds.splice(formState.form.permissionIds.indexOf(data.id), 1);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
const refsTree2 = ref(null);
|
|
|
|
|
const refsTree3 = ref(null);
|
|
|
|
|
const handleCheckDept = async (data, checked, childChecked) => {
|
|
|
|
|
if (checked || childChecked) {
|
|
|
|
|
formState.form.departmentList.push(data);
|
|
|
|
@ -299,7 +305,7 @@
|
|
|
|
|
res.role.permissionIds = [];
|
|
|
|
|
const deep = (arr) => {
|
|
|
|
|
(arr || []).forEach((item) => {
|
|
|
|
|
if (item.isHave) {
|
|
|
|
|
if (item.isHave && !item.menuChild?.length) {
|
|
|
|
|
res.role.menuIds.push(item.id);
|
|
|
|
|
}
|
|
|
|
|
res.role.permissionIds.push(
|
|
|
|
@ -350,6 +356,9 @@
|
|
|
|
|
handleSearch();
|
|
|
|
|
} else {
|
|
|
|
|
let data = _.cloneDeep(formState.form);
|
|
|
|
|
if (formState.currentTab === '2') {
|
|
|
|
|
data.menuIds = [...unref(refsTree1).getCheckedKeys(), ...unref(refsTree1).getHalfCheckedKeys()];
|
|
|
|
|
}
|
|
|
|
|
let res = await store.dispatch(
|
|
|
|
|
formState.currentTab === '1'
|
|
|
|
|
? 'role/save'
|
|
|
|
|