diff --git a/src/app/routes/sys-setting/components/role-management/edit/edit.component.ts b/src/app/routes/sys-setting/components/role-management/edit/edit.component.ts index 6528cb3e..89a1a409 100644 --- a/src/app/routes/sys-setting/components/role-management/edit/edit.component.ts +++ b/src/app/routes/sys-setting/components/role-management/edit/edit.component.ts @@ -1,6 +1,7 @@ import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core'; import { SFComponent, SFSchema, SFSchemaEnumType, SFUISchema } from '@delon/form'; import { _HttpClient } from '@delon/theme'; +import { EAEnvironmentService } from '@shared'; import { NzModalRef } from 'ng-zorro-antd/modal'; import { of } from 'rxjs'; import { delay, map } from 'rxjs/operators'; @@ -26,16 +27,12 @@ export class SettingRoleEditComponent implements OnInit { schema!: SFSchema; authority: any[] = []; roleTplData: any[] = []; - appId = ''; ui!: SFUISchema; - constructor(private modal: NzModalRef, public service: SystemService, public http: _HttpClient, private cdr: ChangeDetectorRef) {} + constructor(private modal: NzModalRef, public service: SystemService, private envSrv: EAEnvironmentService) {} ngOnInit(): void { - console.log('i', this.i, this.source); if (this.i.id) { this.getRoleInfo(); - } else { - this.getTplList(); } if (this.source === '') { this.initSF(); @@ -97,9 +94,7 @@ export class SettingRoleEditComponent implements OnInit { }) ); } - getTplList() { - // this.menu.getAllFunction(); - } + getRoleInfo() { const params = { id: this.i.id @@ -111,7 +106,6 @@ export class SettingRoleEditComponent implements OnInit { if (this.source === '') { this.initSF(); } - this.getTplList(); }); } getData(res: { authority: any[]; authorityAssistId: any[] }) { @@ -122,30 +116,39 @@ export class SettingRoleEditComponent implements OnInit { this.modal.destroy(); } sure() { - this.menu.washTree(); - if (this.authorityAssistId.length === 0) { - this.service.msgSrv.warning('请选择权限!'); - return; - } + // this.menu.washTree(); + // if (this.authorityAssistId.length === 0) { + // this.service.msgSrv.warning('请选择权限!'); + // return; + // } + console.log(this.menu.nzTreeComponent.getCheckedNodeList()); + const selectedFun = this.menu?.nzTreeComponent?.getCheckedNodeList()?.map(node => ({ authorityId: node.key })); + const authorityAssistId = selectedFun?.map(node => node.authorityId); const params: any = { id: this.i.id, ...this.sf.value, - authority: this.authority, - authorityAssistId: this.authorityAssistId + authority: selectedFun, + authorityAssistId: authorityAssistId }; - if (this.sf) { - this.appList.forEach(item => { - if (item.appId === this.sf.value.appId) { - params.tenantId = item.tenantId; - } - }); - } - delete params.tplId; + // if (this.sf) { + // this.appList.forEach(item => { + // if (item.appId === this.sf.value.appId) { + // params.tenantId = item.tenantId; + // } + // }); + // } + // delete params.tplId; if (this.i.id === 0) { delete params.id; } - this.service.request(this.service.$api_updateRoleInfo, params).subscribe(res => { - this.modal.close(true); - }); + if (this.i.id) { + this.service.request(this.service.$api_update_role, params).subscribe(res => { + this.modal.close(true); + }); + } else { + this.service.request(this.service.$api_save_role, params).subscribe(res => { + this.modal.close(true); + }); + } } } 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 4cff236d..4f0d30da 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 @@ -1,5 +1,6 @@ import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core'; import { ModalHelper, _HttpClient } from '@delon/theme'; +import { EAEnvironmentService } from '@shared'; import { NzFormatEmitEvent, NzTreeNodeOptions } from 'ng-zorro-antd/core/tree'; import { NzTreeComponent } from 'ng-zorro-antd/tree'; import { SystemService } from '../../../services/system.service'; @@ -18,7 +19,7 @@ export class SettingMenuComponent implements OnInit { defaultSelectedKeys: any[] = []; defaultExpandedKeys: any[] = []; defaultCheckedKeys: any[] = []; - functionList: any[] = Funcs; + functionList: any[] = []; selectProject: any = {}; selectApp: any = {}; @Input() type = 'edit'; @@ -27,7 +28,9 @@ export class SettingMenuComponent implements OnInit { @Input() authorityAssistId: any[] = []; @Input() roleId: any; @Output() changeData = new EventEmitter(); - constructor(public service: SystemService, private cdr: ChangeDetectorRef) {} + constructor(public service: SystemService, private cdr: ChangeDetectorRef, private envSrv: EAEnvironmentService) { + this.getAllFunction(); + } ngOnInit() { if (this.type === 'edit') { @@ -35,16 +38,18 @@ export class SettingMenuComponent implements OnInit { } } getAllFunction() { - this.service.request(this.service.$api_getAllFunctionInfoByAppId, { appId: '' }, 'POST', true, 'FORM').subscribe(res => { - if (this.source === 'onlyRelationAuth') { - this.addDisabledTree(res); - } else { - // this.addDisabledLeafTree(res); - } - this.functionList = res; - this.defaultCheckedKeys = this.authorityAssistId; - this.cdr.detectChanges(); - }); + this.service + .request(this.service.$api_getAllFunctionInfoByAppId, { appId: this.envSrv.env.appId }, 'POST', true, 'FORM') + .subscribe(res => { + // if (this.source === 'onlyRelationAuth') { + // this.addDisabledTree(res); + // } else { + // // this.addDisabledLeafTree(res); + // } + this.functionList = res; + this.defaultCheckedKeys = this.authorityAssistId; + this.cdr.detectChanges(); + }); } addAuthority(origin: { id: any; all: any }, node: { buttonInfoList: any[] }, item?: { checked: any; id: any }) { if (this.authority.length && this.authority.filter(authItem => authItem.authorityId === origin.id).length) { @@ -245,32 +250,34 @@ export class SettingMenuComponent implements OnInit { } washTree() { - const authorityMenu: any[] = []; // this.authority - const tempAuthorityIdDTOListMenu: any[] = []; - const checkedNode: any = this.nzTreeComponent.getCheckedNodeList(); - const halfCheckedNode: any = this.nzTreeComponent.getHalfCheckedNodeList(); - this.authorityAssistId = []; - halfCheckedNode.forEach((item: { key: any }) => { - authorityMenu.push({ authorityId: item.key }); - tempAuthorityIdDTOListMenu.push(item.key); - }); - this.overWashTree(checkedNode, tempAuthorityIdDTOListMenu, authorityMenu); - if (this.authority && this.authority.length) { - this.authority.forEach(item => { - if (tempAuthorityIdDTOListMenu.indexOf(item.authorityId) !== -1) { - tempAuthorityIdDTOListMenu.forEach((oldItem, oldIndex) => { - if (oldItem === item.authorityId) { - authorityMenu[oldIndex] = item; - } - }); - } - }); - } - const result = { - authority: authorityMenu, - authorityAssistId: this.authorityAssistId - }; - this.changeData.emit(result); + console.log(this.nzTreeComponent.getCheckedNodeList()); + + // const authorityMenu: any[] = []; // this.authority + // const tempAuthorityIdDTOListMenu: any[] = []; + // const checkedNode: any = this.nzTreeComponent.getCheckedNodeList(); + // const halfCheckedNode: any = this.nzTreeComponent.getHalfCheckedNodeList(); + // this.authorityAssistId = []; + // halfCheckedNode.forEach((item: { key: any }) => { + // authorityMenu.push({ authorityId: item.key }); + // tempAuthorityIdDTOListMenu.push(item.key); + // }); + // this.overWashTree(checkedNode, tempAuthorityIdDTOListMenu, authorityMenu); + // if (this.authority && this.authority.length) { + // this.authority.forEach(item => { + // if (tempAuthorityIdDTOListMenu.indexOf(item.authorityId) !== -1) { + // tempAuthorityIdDTOListMenu.forEach((oldItem, oldIndex) => { + // if (oldItem === item.authorityId) { + // authorityMenu[oldIndex] = item; + // } + // }); + // } + // }); + // } + // const result = { + // authority: authorityMenu, + // authorityAssistId: this.authorityAssistId + // }; + // this.changeData.emit(result); } overWashTree(children: any[], tempAuthorityIdDTOListMenu: any[], authorityMenu: any[]) { children.forEach((item: any) => { diff --git a/src/app/routes/sys-setting/components/role-management/role-management.component.ts b/src/app/routes/sys-setting/components/role-management/role-management.component.ts index f5c5c125..9075aec0 100644 --- a/src/app/routes/sys-setting/components/role-management/role-management.component.ts +++ b/src/app/routes/sys-setting/components/role-management/role-management.component.ts @@ -35,6 +35,7 @@ export class RoleManagementComponent implements OnInit { { title: '创建时间', index: 'createTime', + className: 'text-left', type: 'date', sort: true }, @@ -89,12 +90,19 @@ export class RoleManagementComponent implements OnInit { }); } - deleteAction(item?: any) { + deleteAction(item: any) { this.nzModalService.error({ nzTitle: '确认删除?', nzClosable: false, nzCancelText: '取消', - nzOnOk: () => {} + nzOnOk: () => { + this.service.request(this.service.$api_dalete_role, [item.id]).subscribe(res => { + if (res) { + this.service.msgSrv.success('删除角色成功'); + this.st.load(); + } + }); + } }); } diff --git a/src/app/routes/sys-setting/services/system.service.ts b/src/app/routes/sys-setting/services/system.service.ts index e9812676..6b033ae5 100644 --- a/src/app/routes/sys-setting/services/system.service.ts +++ b/src/app/routes/sys-setting/services/system.service.ts @@ -26,6 +26,14 @@ export class SystemService extends BaseService { // 分页获取应用角色列表 $api_get_role_page = '/api/mdc/cuc/roleInfo/getAppRoleInfoList'; + // 新增角色 + $api_save_role = '/api/mdc/cuc/roleInfo/saveRoleInfo'; + // 编辑角色 + $api_update_role = '/api/mdc/cuc/roleInfo/updateRoleInfo'; + // 删除角色(含多个) + $api_dalete_role = '/api/mdc/cuc/roleInfo/removeRoleInfo'; + // 获取角色详情 + $api_getRoleInfo = '/api/mdc/cuc/roleInfo/getRoleInfo'; // 查询字典选项列表 $api_get_dict_page = '/api/mdc/pbc/dictItems/list/page'; @@ -45,13 +53,13 @@ export class SystemService extends BaseService { // 删除CRM客户信息表 $api_deletebatch_crmCustomer = '/api/mdc/crmCustomer/deletebatch'; - $api_getAllFunctionInfoByAppId: string = ''; + // 获取某个应用的所有菜单 + $api_getAllFunctionInfoByAppId: string = '/api/mdc/cuc/functionInfo/getAllFunctionInfoByAppId'; $api_getRoleTemplateInfo: string = ''; $api_getFunctionButtonInfo: string = ''; $api_getFunctionDataInfo: string = ''; $api_getAppList: string = ''; $api_getRoleTemplateListByAppId: string = ''; - $api_getRoleInfo: string = ''; $api_updateRoleInfo: string = ''; constructor(public injector: Injector) { super(injector); diff --git a/src/assets/mocks/menu-data.json b/src/assets/mocks/menu-data.json index 3410dea1..5b7ce168 100644 --- a/src/assets/mocks/menu-data.json +++ b/src/assets/mocks/menu-data.json @@ -393,7 +393,17 @@ "children": [ { "text": "员工管理", - "link": "/system/staff-management" + "group": true, + "children": [ + { + "text": "员工管理", + "link": "/system/staff-management" + }, + { + "text": "角色管理", + "link": "/system/role-management" + } + ] }, { "text": "CRM客户管理", @@ -403,10 +413,6 @@ "text": "网络货运人", "link": "/system/network-freight" }, - { - "text": "角色管理", - "link": "/system/role-management" - }, { "text": "基础设置", "link": "/system/basic-setting"