配餐项目前端文件
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

147 lines
3.8 KiB

import { PermItemDTO, UserDTO, UserRoleDTO } from "@cdk/dtos/user.dto";
import { Component, OnChanges, OnInit, SimpleChanges, TemplateRef, ViewChild } from "@angular/core";
import { FormControl, FormGroup, FormGroupName } from "@angular/forms";
import { ActivatedRoute, Router } from "@angular/router";
import { AnyObject, FormValidators, TableListOption, Utils } from "@cdk/public-api";
import { NzDrawerRef, NzDrawerService } from "ng-zorro-antd/drawer";
import { NzMessageService } from "ng-zorro-antd/message";
import { NzModalService } from "ng-zorro-antd/modal";
import { lastValueFrom } from "rxjs";
import { ApiService } from "@cdk/services";
@Component({
selector: "app-client-user-manage",
templateUrl: "./user-manage.component.html",
styleUrls: ["./user-manage.component.less"],
})
export class ClientUserManageComponent {
constructor(
private route: ActivatedRoute,
private api: ApiService,
private router: Router,
private modal: NzModalService,
private msg: NzMessageService
) {}
public tab = 0;
public role: UserRoleDTO | null = null;
public roleForm = new FormGroup({
roleId: new FormControl(""),
roleName: new FormControl("", [FormValidators.required("请输入角色名称")]),
items: new FormControl(),
});
public allPerms: PermItemDTO[] = [];
public userList: UserDTO[] = [];
public currentUserList: UserDTO[] = [];
roleList: UserRoleDTO[] = [];
ngOnInit(): void {
this.tab = Number(this.route.snapshot.queryParamMap.get("tab")) || 0;
this.api.getRolePerms().subscribe((res) => {
this.allPerms = res.body;
});
this.getRoleList();
this.getUserList();
}
getUserList(reload?: boolean) {
this.api.getUserList().subscribe((res) => {
this.userList = res.body;
this.currentUserList = this.userList.filter((f) => Number(f.roleId) === Number(this.role!.id));
});
}
reloadUserList() {
this.getUserList(true);
}
getRoleList() {
this.api.getRoleList().subscribe((res) => {
this.roleList = res.body.map((i) => ({ ...i, id: i.id.toString() }));
const roleId = this.route.snapshot.queryParamMap.get("roleId");
const role = this.roleList.find((f) => f.id === roleId);
if (role) {
this.role = role;
this.onRoleChange(role.id);
return;
}
if (this.roleList.length > 0) {
this.onRoleChange(this.roleList[0].id);
}
});
}
onRoleChange(roleId: string) {
const role = this.roleList.find((f) => f.id === roleId);
if (role) {
this.router
.navigate(["/system/user"], {
queryParams: {
roleId,
},
queryParamsHandling: "merge",
})
.then(() => {
this.role = role;
this.currentUserList = this.userList.filter((f) => Number(f.roleId) === Number(role.id));
});
}
}
onTabChange(index: number) {
this.tab = index;
this.router.navigate(["/system/user"], {
queryParams: {
tab: index,
},
queryParamsHandling: "merge",
});
}
openForm(nzContent: TemplateRef<{}>, event: MouseEvent, role?: UserRoleDTO) {
event.stopPropagation();
if (role) {
this.roleForm.patchValue({
...role,
roleId: role.id,
});
}
this.modal.create({
nzTitle: role ? "编辑角色" : "新增角色",
nzContent,
nzOnCancel: () => {
this.roleForm.reset();
},
nzOnOk: async () => {
if (Utils.validateFormGroup(this.roleForm)) {
const res = await lastValueFrom(this.api.updateRole(this.roleForm.value));
this.msg.success(res.desc);
this.roleForm.reset();
this.getRoleList();
return true;
}
return false;
},
});
}
deleteItem(event: MouseEvent, id: string) {
event.stopPropagation();
this.modal.confirm({
nzTitle: "警告",
nzContent: "是否要删除该角色?",
nzOkDanger: true,
nzOnOk: async () => {
const res = await lastValueFrom(this.api.deleteRole(id));
this.msg.success(res.desc);
this.getRoleList();
},
});
}
}