|
|
|
@ -13,6 +13,7 @@
@@ -13,6 +13,7 @@
|
|
|
|
|
checkable |
|
|
|
|
:treeData="state.menuTree" |
|
|
|
|
:replaceFields="{ title: 'name', key: 'id' }" |
|
|
|
|
@check="handleHalfCheckedKeysMerge" |
|
|
|
|
/> |
|
|
|
|
</template> |
|
|
|
|
</BasicForm> |
|
|
|
@ -25,7 +26,7 @@
@@ -25,7 +26,7 @@
|
|
|
|
|
* Copyright © 2020-2022 <a href="http://www.entfrm.com/">entfrm</a> All rights reserved. |
|
|
|
|
* author entfrm开发团队-王翔 |
|
|
|
|
*/ |
|
|
|
|
import { reactive } from 'vue'; |
|
|
|
|
import {reactive, toRaw} from 'vue'; |
|
|
|
|
import { BasicForm, useForm } from '/@/components/Form/index'; |
|
|
|
|
import { formSchema } from './role.data'; |
|
|
|
|
import { BasicDrawer, DrawerProps, useDrawerInner } from '/@/components/Drawer'; |
|
|
|
@ -34,12 +35,21 @@
@@ -34,12 +35,21 @@
|
|
|
|
|
import { addRole, editRole, getRole } from '/@/api/controller/system/role'; |
|
|
|
|
import { listToTree } from "/@/utils/helper/treeHelper"; |
|
|
|
|
|
|
|
|
|
/** 类型规范统一声明定义区域 */ |
|
|
|
|
interface WindowState { |
|
|
|
|
tag: string; |
|
|
|
|
menuTree: TreeItem[]; |
|
|
|
|
checkedKeys: string[]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** 通用变量统一声明区域 */ |
|
|
|
|
const state = reactive({ |
|
|
|
|
const state = reactive<WindowState>({ |
|
|
|
|
// 操作标签 |
|
|
|
|
tag: '', |
|
|
|
|
// 菜单树形数据 |
|
|
|
|
menuTree: [] as TreeItem[], |
|
|
|
|
menuTree: [], |
|
|
|
|
// 选中复选框的树节点 |
|
|
|
|
checkedKeys: [] |
|
|
|
|
}); |
|
|
|
|
/** https://v3.cn.vuejs.org/api/options-data.html#emits */ |
|
|
|
|
const emit = defineEmits(['success', 'register']); |
|
|
|
@ -67,6 +77,7 @@
@@ -67,6 +77,7 @@
|
|
|
|
|
props.title = '编辑角色'; |
|
|
|
|
const result = await getRoleMenuIds(roleId); |
|
|
|
|
const role = await getRole(roleId); |
|
|
|
|
state.checkedKeys = result.extend; |
|
|
|
|
await setFieldsValue(Object.assign(role, { menuIds: result.extend })); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
@ -74,6 +85,11 @@
@@ -74,6 +85,11 @@
|
|
|
|
|
setDrawerProps(props); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
/** 处理选中的半复选框合并至勾选数据中 */ |
|
|
|
|
function handleHalfCheckedKeysMerge (checkedKeys: string[], e) { |
|
|
|
|
state.checkedKeys = [...checkedKeys, ...e.halfCheckedKeys]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** 处理弹出框提交 */ |
|
|
|
|
async function handleSubmit() { |
|
|
|
|
try { |
|
|
|
@ -81,6 +97,7 @@
@@ -81,6 +97,7 @@
|
|
|
|
|
const formData = await validate(); |
|
|
|
|
// 处理提交之前逻辑 |
|
|
|
|
setDrawerProps({ confirmLoading: true }); |
|
|
|
|
formData.menuIds = toRaw(state.checkedKeys); |
|
|
|
|
// 采用tag标签区分操作 |
|
|
|
|
switch (state.tag) { |
|
|
|
|
case 'add': |
|
|
|
|