mirror of https://gitee.com/stylefeng/roses
【8.3.1】【role】更新选中状态填充的问题
parent
bda28691e2
commit
f3e6531935
|
@ -74,9 +74,11 @@ public class RoleBindPermissionFactory {
|
|||
// 开始填充菜单和功能的选中状态
|
||||
fillSubItemCheckedFlag(appList, rolePermissions);
|
||||
|
||||
// 填充应用的选中状态
|
||||
// 填充应用的选中状态,所有的叶子节点和叶子节点的功能都选中,则选中应用
|
||||
for (RoleBindPermissionItem appItem : appList) {
|
||||
fillParentCheckedFlag(appItem);
|
||||
// 默认选中应用,如果有未选中的,则会设置为false
|
||||
appItem.setChecked(true);
|
||||
fillAppCheckedFlag(appItem, appItem.getChildren());
|
||||
}
|
||||
|
||||
// 填充全选的选中状态
|
||||
|
@ -121,30 +123,42 @@ public class RoleBindPermissionFactory {
|
|||
* @author fengshuonan
|
||||
* @since 2023/6/13 19:25
|
||||
*/
|
||||
private static void fillParentCheckedFlag(RoleBindPermissionItem appItem) {
|
||||
private static void fillAppCheckedFlag(RoleBindPermissionItem appItem, List<RoleBindPermissionItem> children) {
|
||||
|
||||
if (ObjectUtil.isEmpty(appItem)) {
|
||||
if (ObjectUtil.isEmpty(appItem) || ObjectUtil.isEmpty(children)) {
|
||||
return;
|
||||
}
|
||||
|
||||
appItem.setChecked(true);
|
||||
// 遍历自己菜单中,如果是叶子节点勾选了,并且所有功能也选中了,则设置应用也选中
|
||||
for (RoleBindPermissionItem menuItem : children) {
|
||||
|
||||
if (ObjectUtil.isEmpty(appItem.getChildren())) {
|
||||
return;
|
||||
}
|
||||
for (RoleBindPermissionItem menuItem : appItem.getChildren()) {
|
||||
if (!menuItem.getChecked()) {
|
||||
appItem.setChecked(false);
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(menuItem.getChildren())) {
|
||||
continue;
|
||||
}
|
||||
for (RoleBindPermissionItem options : menuItem.getChildren()) {
|
||||
if (!options.getChecked()) {
|
||||
appItem.setChecked(false);
|
||||
// 非叶子节点,继续向下执行判断
|
||||
if (!menuItem.getLeafFlag()) {
|
||||
if (ObjectUtil.isNotEmpty(menuItem.getChildren())) {
|
||||
fillAppCheckedFlag(appItem, menuItem.getChildren());
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// 菜单是叶子节点,并且未选中,则设置应用也未选中
|
||||
if (!menuItem.getChecked()) {
|
||||
appItem.setChecked(false);
|
||||
return;
|
||||
}
|
||||
|
||||
// 判断菜单上的功能,是否有未选中的
|
||||
if (ObjectUtil.isNotEmpty(menuItem.getFunctionList())) {
|
||||
for (RoleBindPermissionItem functionItem : menuItem.getFunctionList()) {
|
||||
if (!functionItem.getChecked()) {
|
||||
appItem.setChecked(false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 如果有子集继续递归遍历
|
||||
fillAppCheckedFlag(appItem, menuItem.getChildren());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue