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[] {
|
||||
const checkedKeysSet = new Set(checkedKeys);
|
||||
|
||||
function changeCheckedKeys(menus: DataNode[]) {
|
||||
menus.forEach(menu => {
|
||||
if (menu.children) {
|
||||
changeCheckedKeys(menu.children);
|
||||
|
||||
function changeCheckedKeys(menus: DataNode[], checkedKey: number): boolean {
|
||||
for (let menu of menus) {
|
||||
if (menu.key === checkedKey) {
|
||||
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;
|
||||
}
|
||||
|
||||
changeCheckedKeys(menuList);
|
||||
checkedKeys.forEach(checkedKey => {
|
||||
changeCheckedKeys(menuList, checkedKey);
|
||||
})
|
||||
|
||||
return Array.from(checkedKeysSet);
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ function closeDrawer() {
|
||||
|
||||
async function handleSubmit() {
|
||||
await validate();
|
||||
const menuIds = menuAuthRef.value?.checkedKeys();
|
||||
const menuIds = transformMenuChildWithRootIds(menuAuthRef.value?.tree || [], model.value.menuIds);
|
||||
|
||||
const {error} = await (props.operateType === 'edit' ? doPutRole : doPostRole)({
|
||||
...model.value,
|
||||
|
||||
Reference in New Issue
Block a user