fix: 修复修改角色的菜单权限bug
This commit is contained in:
@@ -10,17 +10,26 @@ import type { DataNode } from 'ant-design-vue/es/tree';
|
|||||||
*/
|
*/
|
||||||
export function transformMenuChildWithRootIds(menuList: DataNode[], checkedKeys: number[]): number[] {
|
export function transformMenuChildWithRootIds(menuList: DataNode[], checkedKeys: number[]): number[] {
|
||||||
const checkedKeysSet = new Set(checkedKeys);
|
const checkedKeysSet = new Set(checkedKeys);
|
||||||
|
|
||||||
function changeCheckedKeys(menus: DataNode[]) {
|
function changeCheckedKeys(menus: DataNode[], checkedKey: number): boolean {
|
||||||
menus.forEach(menu => {
|
for (let menu of menus) {
|
||||||
if (menu.children) {
|
if (menu.key === checkedKey) {
|
||||||
changeCheckedKeys(menu.children);
|
|
||||||
checkedKeysSet.add(menu.key as number);
|
checkedKeysSet.add(menu.key as number);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
});
|
if (menu.children && menu.children.length > 0) {
|
||||||
|
let isFind = changeCheckedKeys(menu.children, checkedKey);
|
||||||
|
if (isFind) {
|
||||||
|
checkedKeysSet.add(menu.key as number);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
checkedKeys.forEach(checkedKey => {
|
||||||
changeCheckedKeys(menuList);
|
changeCheckedKeys(menuList, checkedKey);
|
||||||
|
})
|
||||||
|
|
||||||
return Array.from(checkedKeysSet);
|
return Array.from(checkedKeysSet);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ function closeDrawer() {
|
|||||||
|
|
||||||
async function handleSubmit() {
|
async function handleSubmit() {
|
||||||
await validate();
|
await validate();
|
||||||
const menuIds = menuAuthRef.value?.checkedKeys();
|
const menuIds = transformMenuChildWithRootIds(menuAuthRef.value?.tree || [], model.value.menuIds);
|
||||||
|
|
||||||
const {error} = await (props.operateType === 'edit' ? doPutRole : doPostRole)({
|
const {error} = await (props.operateType === 'edit' ? doPutRole : doPostRole)({
|
||||||
...model.value,
|
...model.value,
|
||||||
|
|||||||
Reference in New Issue
Block a user