This commit is contained in:
Taric Xin
2021-12-27 15:15:33 +08:00
parent cac371baf3
commit 0024f68903
5 changed files with 106 additions and 74 deletions

View File

@ -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);
});
}
}
}

View File

@ -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) => {

View File

@ -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();
}
});
}
});
}

View File

@ -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);

View File

@ -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"