Browse Source

角色 & 用户

main
kkerwin 2 years ago
parent
commit
c650b7bb8c
  1. 10
      projects/admin/src/app/components/role-permission/role-permission.component.ts
  2. 2
      projects/admin/src/app/components/user-list/user-list.component.html
  3. 12
      projects/admin/src/app/components/user-list/user-list.component.ts
  4. 3
      projects/admin/src/app/dtos/user.dto.ts
  5. 8
      projects/admin/src/app/pages/organization/organization-form/organization-form.component.html
  6. 10
      projects/admin/src/app/pages/organization/organization-form/organization-form.component.ts
  7. 5
      projects/admin/src/app/pages/system/user-manage/user-manage.component.html
  8. 23
      projects/admin/src/app/pages/system/user-manage/user-manage.component.ts
  9. 3
      projects/admin/src/app/services/api.service.ts
  10. 1
      projects/admin/src/app/services/http.interceptor.ts
  11. 4
      projects/cdk/src/utils/index.ts

10
projects/admin/src/app/components/role-permission/role-permission.component.ts

@ -1,6 +1,6 @@
import { PermItemDTO, UserRoleDTO } from "@admin/app/dtos/user.dto";
import { ApiService } from "@admin/app/services";
import { Component, Input, OnChanges, SimpleChanges } from "@angular/core";
import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from "@angular/core";
import { ActivatedRoute } from "@angular/router";
import { AnyObject } from "@cdk/types";
import { NzMessageService } from "ng-zorro-antd/message";
@ -18,6 +18,8 @@ export class RolePermissionComponent implements OnChanges {
@Input() role!: UserRoleDTO;
@Output() onReload = new EventEmitter();
loading = false;
ngOnChanges(changes: SimpleChanges): void {
@ -36,10 +38,7 @@ export class RolePermissionComponent implements OnChanges {
}
if (changes["role"]?.currentValue) {
const role: UserRoleDTO = changes["role"].currentValue;
let perms: number[] = [];
try {
perms = JSON.parse(role.roleItems);
} catch (error) {}
let perms: number[] = role.roleItems ?? [];
this.hasPermissions.clear();
perms.forEach((p) => {
this.hasPermissions.add(p);
@ -77,6 +76,7 @@ export class RolePermissionComponent implements OnChanges {
)
.subscribe((res) => {
this.msg.success(res.desc);
this.onReload.emit();
});
}
}

2
projects/admin/src/app/components/user-list/user-list.component.html

@ -40,7 +40,7 @@
<td>{{data.uid}}</td>
<td>{{data.name}}</td>
<td>{{data.roleName}}</td>
<td>{{data.roleName}}</td>
<td>{{data.time | date:'yyyy-MM-dd HH:mm:ss'}}</td>
<td>
<a>编辑</a>
<nz-divider nzType="vertical"></nz-divider>

12
projects/admin/src/app/components/user-list/user-list.component.ts

@ -46,12 +46,12 @@ export class UserListComponent {
if (Utils.validateFormGroup(this.userFrom)) {
const user = { ...this.userFrom.value, roleId: this.role.id };
user["password"] = MD5(user.password!).toString().substring(16).toUpperCase();
const check = await lastValueFrom(this.api.checkUid(user.uid!));
if (check.success) {
const res = await lastValueFrom(this.api.saveUser(user));
this.msg.success(res.desc);
return true;
}
// const check = await lastValueFrom(this.api.checkUid(user.uid!));
// if (check.body) {
const res = await lastValueFrom(this.api.saveUser(user));
this.msg.success(res.desc);
return true;
// }
}
return false;
},

3
projects/admin/src/app/dtos/user.dto.ts

@ -1,6 +1,6 @@
export type UserRoleDTO = {
id: string;
roleItems: string;
roleItems: number[];
roleName: string;
roleType: string;
vender: number;
@ -19,4 +19,5 @@ export type UserDTO = {
roleId: number;
roleName: string;
uid: string;
time: string;
};

8
projects/admin/src/app/pages/organization/organization-form/organization-form.component.html

@ -15,10 +15,14 @@
单位Logo
</nz-form-label>
<nz-form-control [nzErrorTip]="formControlErrorTpl" nzSpan="12">
<button class="upload-btn " nz-button [nzLoading]="uploadLoading">
<div class="mb-2" *ngIf="icon">
<img [src]="icon" class="h-20 w-20" />
</div>
<button class="vlock upload-btn " nz-button [nzLoading]="uploadLoading">
<i nz-icon nzType="upload"></i>
上传图片
<input type="file" formControlName="icon" (change)="onFileChange($event)" />
<input type="file" (change)="onFileChange($event)" />
<input type="hidden" formControlName="icon" (change)="onFileChange($event)" />
</button>
</nz-form-control>
</nz-form-item>

10
projects/admin/src/app/pages/organization/organization-form/organization-form.component.ts

@ -36,8 +36,13 @@ export class OrganizationFormComponent {
uploadLoading = false;
get icon() {
return this.formGroup.get("icon")?.value;
}
ngOnInit(): void {
this.formGroup = this.fb.group({
id: this.fb.control(""),
account: this.fb.control("", [FormValidators.required("账号不能为空")]),
password: this.fb.control("", [FormValidators.required("密码不能为空")]),
name: this.fb.control("", [FormValidators.required("单位名称不能为空")]),
@ -51,6 +56,7 @@ export class OrganizationFormComponent {
console.log("this.state", this.state);
this.formGroup.patchValue(this.state);
}
async onSubmit() {
if (Utils.validateFormGroup(this.formGroup)) {
const org = { ...this.formGroup.value };
@ -59,11 +65,11 @@ export class OrganizationFormComponent {
const account = await lastValueFrom(this.api.checkOrgAccount(org.account!));
const name = await lastValueFrom(this.api.checkOrgName(org.name!));
if (account.body) {
if (!account.body) {
this.msg.error("账号重复");
return;
}
if (name.body) {
if (!name.body) {
this.msg.error("单位名称重复");
return;
}

5
projects/admin/src/app/pages/system/user-manage/user-manage.component.html

@ -53,14 +53,15 @@
<div class="p-4">
<app-user-list
*ngIf="role && tab.toString() === '0'"
[users]="userList"
[users]="currentUserList"
[role]="role">
</app-user-list>
<app-role-permission
*ngIf="role && tab.toString() === '1'"
[perms]="allPerms"
[role]="role">
[role]="role"
(onReload)="getRoleList()">
</app-role-permission>
</div>
</nz-card>

23
projects/admin/src/app/pages/system/user-manage/user-manage.component.ts

@ -31,13 +31,15 @@ export class UserManageComponent {
public roleForm = new FormGroup({
roleId: new FormControl(""),
roleName: new FormControl("", [FormValidators.required("请输入角色名称")]),
items: new FormControl("1"),
items: new FormControl([]),
});
public allPerms: PermItemDTO[] = [];
public userList: UserDTO[] = [];
public currentUserList: UserDTO[] = [];
roleList: UserRoleDTO[] = [];
ngOnInit(): void {
@ -58,6 +60,7 @@ export class UserManageComponent {
const role = this.roleList.find((f) => f.id === roleId);
if (role) {
this.role = role;
this.onRoleChange(role.id);
return;
}
if (this.roleList.length > 0) {
@ -69,13 +72,17 @@ export class UserManageComponent {
onRoleChange(roleId: string) {
const role = this.roleList.find((f) => f.id === roleId);
if (role) {
this.role = role;
this.router.navigate(["/system/user"], {
queryParams: {
roleId,
},
queryParamsHandling: "merge",
});
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));
});
}
}

3
projects/admin/src/app/services/api.service.ts

@ -66,7 +66,7 @@ export class ApiService {
saveUser(user: AnyObject) {
const body = Utils.objectToFormData(user);
const method = user["uid"] ? "post" : "put";
const method = user["id"] ? "post" : "put";
return this.http[method]<ResponseType>("/api/user", body);
}
@ -80,6 +80,7 @@ export class ApiService {
params,
});
}
checkOrgName(name: string) {
const params = new HttpParams().set("name", name);
return this.http.get<ResponseType<boolean>>("/api/vender/check/name", {

1
projects/admin/src/app/services/http.interceptor.ts

@ -68,6 +68,7 @@ export class HTTPInterceptor implements HttpInterceptor {
this.msg.error(error.desc);
switch (error.code) {
case 401:
localStorage.removeItem("account");
this.router.navigate(["/", "login"]);
break;
default:

4
projects/cdk/src/utils/index.ts

@ -66,7 +66,9 @@ export class Utils {
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
const value = obj[key];
params.append(key, value);
if (![void 0, null, ""].includes(value)) {
params.append(key, value);
}
}
}

Loading…
Cancel
Save