import { Component, OnInit, TemplateRef, ViewContainerRef, } from "@angular/core"; import { FormBuilder, FormGroup, Validators } from "@angular/forms"; import { NzModalService } from "ng-zorro-antd/modal"; import { NzMessageService } from "ng-zorro-antd/message"; import { HttpClient } from "@angular/common/http"; import { AddroleComponent } from "./addrole/addrole.component"; import { EditroleComponent } from "./editrole/editrole.component"; import { TreeService } from "src/app/service/tree.service"; import { MenusComponent } from "./menus/menus.component"; @Component({ selector: "app-role", templateUrl: "./role.component.html", styleUrls: ["./role.component.scss"], }) export class RoleComponent implements OnInit { constructor( private modal: NzModalService, private viewContainerRef: ViewContainerRef, private message: NzMessageService, private http: HttpClient, private toTree: TreeService ) {} levelList = ["无", "销售公司", "省公司", "区域", "油站"]; ngOnInit(): void { this.getAllRoles(); this.loadMore(); this.getAllMenus(); } listOfData: any[] = []; //获取角色列表 getAllRoles() { let params = { SkipCount: "0", MaxResultCount: "999", }; this.http .get("/api/services/app/Role/GetAll", { params: params, }) .subscribe((data: any) => { console.log("角色列表", data.result.items); let level = JSON.parse(sessionStorage.getItem("userdata")).organization .level; this.listOfData = []; data.result.items.forEach((ele) => { if (ele.organizationsLevel >= level || ele.organizationsLevel == 0) { this.listOfData.push(ele); } }); this.listOfData = [...this.listOfData]; }); } totalCount; nodes; getAllMenus() { let params = { SkipCount: "0", MaxResultCount: "999", }; this.http .get("/api/services/app/Menu/GetAll", { params: params, }) .subscribe((data: any) => { // console.log(666, data) this.totalCount = data.result.totalCount; data.result.items.forEach((element) => { element.key = element.id; element.title = element.name; element.selectable = false; }); this.nodes = [...this.toTree.toTree(data.result.items)]; }); } addRole(): void { const modal = this.modal.create({ nzTitle: "新增角色", nzContent: AddroleComponent, nzViewContainerRef: this.viewContainerRef, nzWidth: 400, nzComponentParams: { nodes: this.nodes, }, nzMaskClosable: false, nzOnOk: async () => { if (instance.validateForm.valid) { await new Promise((resolve,reject) => { console.log("表单信息", instance.validateForm); let body = { name: instance.validateForm.value.name, DisplayName: instance.validateForm.value.name, grantedPermissions: instance.validateForm.value.power || [], organizationsLevel: instance.validateForm.value.organizationsLevel, }; let body2 = instance.validateForm.value.menus || []; this.http.post("/api/services/app/Role/Create", body).subscribe( (data: any) => { this.http .post("/api/services/app/Role/SetRoleMenus", body2, { params: { roleId: data.result.id, }, }) .subscribe( (data) => { resolve(data); this.message.create("success", "创建成功!"); this.getAllRoles(); }, (err) => { this.message.create("warning", "分配菜单错误!"); reject(err); } ); }, (err) => { this.message.create("warning", "创建角色错误!"); reject(err); } ); }); } else { this.message.create("warning", "请填写完整!"); return false; } }, }); const instance = modal.getContentComponent(); modal.afterOpen.subscribe(() => console.log("[afterOpen] emitted!")); modal.afterClose.subscribe((result) => console.log("[afterClose] The result is:", result) ); } edit(item) { const modal = this.modal.create({ nzTitle: "编辑角色", nzContent: EditroleComponent, nzViewContainerRef: this.viewContainerRef, nzWidth: 400, nzComponentParams: { data: item, optionList: this.optionList, nodes: this.nodes, }, nzMaskClosable: false, nzOnOk: async () => { if (instance.validateForm.valid) { await new Promise((resolve,reject) => { console.log("表单信息", instance.validateForm); let body = { id: item.id, name: instance.validateForm.value.name, DisplayName: instance.validateForm.value.name, grantedPermissions: instance.validateForm.value.power || [], organizationsLevel: instance.validateForm.value.organizationsLevel, }; let body2 = instance.validateForm.value.menus || []; this.http.put("/api/services/app/Role/Update", body).subscribe( (data: any) => { this.http .post("/api/services/app/Role/SetRoleMenus", body2, { params: { roleId: data.result.id, }, }) .subscribe( (data) => { this.message.create("success", "修改成功!"); this.getAllRoles(); resolve(data); }, (err) => { this.message.create("warning", "分配菜单错误!"); reject(err); } ); }, (err) => { this.message.create("warning", "修改角色错误!"); reject(err); } ); }); } else { this.message.create("warning", "请填写完整!"); return false; } }, }); const instance = modal.getContentComponent(); modal.afterOpen.subscribe(() => console.log("[afterOpen] emitted!")); // Return a result when closed modal.afterClose.subscribe((result) => console.log("[afterClose] The result is:", result) ); } allotMenus(item) { // console.log(item) const modal = this.modal.create({ nzTitle: "分配菜单", nzContent: MenusComponent, nzViewContainerRef: this.viewContainerRef, nzWidth: 400, nzComponentParams: { data: item, nodes: this.nodes, }, nzMaskClosable: false, nzOnOk: async () => { await new Promise((resolve) => { console.log("表单信息", instance.validateForm); // let arr = [] // let treeData = instance.nzTreeComponent.getCheckedNodeList() // console.log('tree', treeData) // treeData.forEach(element => { // arr.push(element.key) // if (element.origin.children && element.origin.children.length != 0) { // element.origin.children.forEach(ele => { // arr.push(ele.key) // }) // } // if (element.parentNode) { // arr.push(element.parentNode.key) // } // }); let body = instance.validateForm.value.menus; this.http .post("/api/services/app/Role/SetRoleMenus", body, { params: { roleId: item.id, }, }) .subscribe((data) => { resolve(data); this.message.create("success", "分配成功!"); this.getAllRoles(); return true; }); }); }, }); const instance = modal.getContentComponent(); // modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!')); // modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result)); } optionList = []; //获取权限列表 loadMore() { this.http .get("/api/services/app/Role/GetAllPermissions") .subscribe((data: any) => { this.optionList = data.result.items; // this.modal.containerInstance.config.nzOkLoading = false // console.log('所有权限',data) }); } delete(item) { console.log(item); this.modal.confirm({ nzTitle: `确定要删除${item.name}这个角色吗?`, nzOkText: "确定", nzOkType: "primary", nzOnOk: () => { this.http .delete("/api/services/app/Role/Delete", { params: { Id: item.id, }, }) .subscribe((data) => { this.message.create("success", "删除成功!"); this.getAllRoles(); }); }, nzCancelText: "取消", nzOnCancel: () => {}, }); } }