diff --git a/src/app/routes/sys-setting/components/role-management/menu/menu.component.html b/src/app/routes/sys-setting/components/role-management/menu/menu.component.html index 05ab3b8e..9c6d6e48 100644 --- a/src/app/routes/sys-setting/components/role-management/menu/menu.component.html +++ b/src/app/routes/sys-setting/components/role-management/menu/menu.component.html @@ -6,45 +6,14 @@
-
- +
- -
- -
- - - - - - - - - - - - - - -
-

此应用功能模块无数据权限限制,如需添加,请联系系统管理员。

+ +
diff --git a/src/app/routes/sys-setting/components/role-management/menu/menu.component.ts b/src/app/routes/sys-setting/components/role-management/menu/menu.component.ts index 23dfd6f7..f867aee9 100644 --- a/src/app/routes/sys-setting/components/role-management/menu/menu.component.ts +++ b/src/app/routes/sys-setting/components/role-management/menu/menu.component.ts @@ -18,6 +18,8 @@ export class SettingMenuComponent implements OnInit, OnChanges { defaultExpandedKeys: any[] = []; defaultCheckedKeys: any[] = []; functionList: any[] = []; + allChecked = false; + indeterminate = true; @Input() type = 'edit'; @Input() source = ''; @Input() appId = this.envSrv.env.appId; @@ -51,13 +53,14 @@ export class SettingMenuComponent implements OnInit, OnChanges { // } this.functionList = res; this.defaultCheckedKeys = this.authorityAssistId; + this.cdr.detectChanges(); }); } addAuthority(origin: { id: any; all: any }, node: { buttonInfoList: any[] }, item?: { checked: any; functionButtonId: any }) { - if (this.authority.length && this.authority.filter(authItem => authItem.authorityId === origin.id).length) { + if (this.authority?.length && this.authority.filter(authItem => authItem.authorityId === origin.id).length) { // 判断此菜单权限是否已经存在权限列表中 // 当前操作菜单id存在权限列表里 - this.authority.forEach((menuItem, menuIndex) => { + this.authority.forEach(menuItem => { if (menuItem.authorityId === origin.id) { menuItem.buttonAuthorityIds = menuItem.buttonAuthorityIds || []; // 防止属性不存在,给属性指定数据类型 if (item) { @@ -103,7 +106,7 @@ export class SettingMenuComponent implements OnInit, OnChanges { // 全选 buttonAuthorityIds.push(item.functionButtonId); } else { - node.buttonInfoList.forEach((nodeItem: { id: any; checked: boolean }) => { + node.buttonInfoList.forEach((nodeItem: { id: any; checked: boolean; _isHalfChecked: boolean }) => { if (origin.all) { buttonAuthorityIds.push(nodeItem.id); nodeItem.checked = true; @@ -112,13 +115,13 @@ export class SettingMenuComponent implements OnInit, OnChanges { } const obj: any = { authorityId: origin.id, - buttonAuthorityIds, - dataAuthority: [] + buttonAuthorityIds }; this.authority.push(obj); } this.checkTreeNode(node, origin); } + addDict(item: { checked: any; itemId: any; itemKey: any }, dictItem: { dictId: any }, origin: { id: any }, node: any) { if (this.authority.length) { // 判断此菜单权限是否已经存在权限列表中 @@ -271,7 +274,7 @@ export class SettingMenuComponent implements OnInit, OnChanges { children.forEach((item: any) => { this.authorityAssistId.push(item.key); tempAuthorityIdDTOListMenu.push(item.key); - authorityMenu.push({ authorityId: item.key }); + authorityMenu.push({ authorityId: item.key, isUpdateAuthority: 1 }); if (item.isLeaf) { return; } @@ -282,6 +285,26 @@ export class SettingMenuComponent implements OnInit, OnChanges { } initButtonList(id: any, origin: any) { + if (origin.expanded) { + origin.children.forEach((item: any, index: number) => { + if (item.selected) { + if (origin.checked) { + this.authority.splice(index, 1); + const buttonAuthorityIds: any = []; + item.buttonInfoList.forEach((btnItem: any) => { + btnItem.checked = true; + buttonAuthorityIds.push(btnItem.functionButtonId); + }); + this.authority.push({ authorityId: origin.key, buttonAuthorityIds, isUpdateAuthority: 1 }); + } else { + this.authority.splice(index, 1); + item.buttonInfoList.forEach((btnItem: any) => { + btnItem.checked = false; + }); + } + } + }); + } const params = { id }; @@ -296,25 +319,57 @@ export class SettingMenuComponent implements OnInit, OnChanges { } // 再次请求,需要判断暂存权限数组是否已有此权限 againGetBtn(id: any, origin: any) { - if (this.authority.length === 0) { - return; - } - this.authority.forEach(item => { - if (item.authorityId === id) { - // 如果当前菜单Id等于暂存权限数组的Id - if (item.buttonAuthorityIds && item.buttonAuthorityIds.length) { - // 如果当前菜单Id权限数组不为空 - origin.buttonInfoList.forEach((btnItem: { functionButtonId: any; checked: boolean }) => { - // 判断已有权限id是否存在 - if (item.buttonAuthorityIds.indexOf(btnItem.functionButtonId) !== -1) { - btnItem.checked = true; - } else { - btnItem.checked = false; + if (this.authority && this.authority.length === 0) { + const buttonAuthorityIds: any = []; + if (origin.checked) { + origin.buttonInfoList.forEach((btnItem: { functionButtonId: any; checked: boolean }) => { + btnItem.checked = true; + buttonAuthorityIds.push(btnItem.functionButtonId); + }); + this.authority.push({ authorityId: origin.key, buttonAuthorityIds, isUpdateAuthority: 1 }); + } + } else { + if (origin.checked) { + //菜单勾选情况下 + if (this.authority.some(item => item.authorityId === id)) { + this.authority.forEach(item => { + if (item.authorityId === id) { + // 如果当前菜单Id存在权限列表里,并且等于暂存权限数组的Id + if (item.buttonAuthorityIds && item.buttonAuthorityIds.length) { + // 如果当前菜单Id权限数组不为空 + origin.buttonInfoList.forEach((btnItem: { functionButtonId: any; checked: boolean }) => { + // 判断已有权限id是否存在 + if (item.buttonAuthorityIds.indexOf(btnItem.functionButtonId) !== -1) { + btnItem.checked = true; + } else { + btnItem.checked = false; + } + }); + } } }); + } else { + this.authority.push({ authorityId: origin.key, buttonAuthorityIds: [], isUpdateAuthority: 1 }); + this.authority.forEach(item => { + origin.buttonInfoList.forEach((btnItem: { functionButtonId: any; checked: boolean }) => { + btnItem.checked = true; + item.buttonAuthorityIds.push(btnItem.functionButtonId); + }); + }); } + } else { + // 菜单未勾选,要删除权限 + this.authority.forEach((item, index) => { + if (item.authorityId === id) { + // 如果当前菜单Id存在权限列表里,并且等于暂存权限数组的Id + this.authority.splice(index, 1); + origin.buttonInfoList.forEach((btnItem: { functionButtonId: any; checked: boolean }) => { + btnItem.checked = false; + }); + } + }); } - }); + } } initDictList(id: any, origin: any) {