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);
|
fillSubItemCheckedFlag(appList, rolePermissions);
|
||||||
|
|
||||||
// 填充应用的选中状态
|
// 填充应用的选中状态,所有的叶子节点和叶子节点的功能都选中,则选中应用
|
||||||
for (RoleBindPermissionItem appItem : appList) {
|
for (RoleBindPermissionItem appItem : appList) {
|
||||||
fillParentCheckedFlag(appItem);
|
// 默认选中应用,如果有未选中的,则会设置为false
|
||||||
|
appItem.setChecked(true);
|
||||||
|
fillAppCheckedFlag(appItem, appItem.getChildren());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 填充全选的选中状态
|
// 填充全选的选中状态
|
||||||
|
@ -121,30 +123,42 @@ public class RoleBindPermissionFactory {
|
||||||
* @author fengshuonan
|
* @author fengshuonan
|
||||||
* @since 2023/6/13 19:25
|
* @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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
appItem.setChecked(true);
|
// 遍历自己菜单中,如果是叶子节点勾选了,并且所有功能也选中了,则设置应用也选中
|
||||||
|
for (RoleBindPermissionItem menuItem : children) {
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(appItem.getChildren())) {
|
// 非叶子节点,继续向下执行判断
|
||||||
return;
|
if (!menuItem.getLeafFlag()) {
|
||||||
}
|
if (ObjectUtil.isNotEmpty(menuItem.getChildren())) {
|
||||||
for (RoleBindPermissionItem menuItem : appItem.getChildren()) {
|
fillAppCheckedFlag(appItem, menuItem.getChildren());
|
||||||
if (!menuItem.getChecked()) {
|
} else {
|
||||||
appItem.setChecked(false);
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(menuItem.getChildren())) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
for (RoleBindPermissionItem options : menuItem.getChildren()) {
|
|
||||||
if (!options.getChecked()) {
|
|
||||||
appItem.setChecked(false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 菜单是叶子节点,并且未选中,则设置应用也未选中
|
||||||
|
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