147 lines
5.4 KiB
TypeScript
147 lines
5.4 KiB
TypeScript
import {Component, OnInit} from '@angular/core';
|
|
import {AbstractControl, FormControl, FormGroup, Validators} from '@angular/forms';
|
|
import {NzMessageService, UploadFile} from 'ng-zorro-antd';
|
|
import {Router} from '@angular/router';
|
|
import {GlobalUserService} from '../../services/global-user.service';
|
|
import {User} from '../../class/User';
|
|
import {ApiService} from '../../api/api.service';
|
|
import {environment} from '../../../environments/environment';
|
|
import {Observable} from 'rxjs';
|
|
import {LocalStorageService} from '../../services/local-storage.service';
|
|
|
|
@Component({
|
|
selector: 'app-admin',
|
|
templateUrl: './admin.component.html',
|
|
styleUrls: ['./admin.component.less']
|
|
})
|
|
export class AdminComponent implements OnInit {
|
|
|
|
constructor(public gUserService: GlobalUserService, private apiService: ApiService, private messageService: NzMessageService,
|
|
private router: Router, private localStorageService: LocalStorageService) {
|
|
this.gUserService.watchUserInfo({
|
|
complete: () => null,
|
|
error: (err) => null,
|
|
next: data => {
|
|
console.log('更新user')
|
|
this.user = data.result
|
|
if (data.result) this.initHelloWords()
|
|
}
|
|
}
|
|
);
|
|
this.editInfoFormGroup = new FormGroup({
|
|
desc: new FormControl(),
|
|
displayName: new FormControl(),
|
|
email: new FormControl({value: null, disabled: true})
|
|
});
|
|
this.resetPwdFormGroup = new FormGroup({
|
|
originPwd: new FormControl(null, [Validators.required]),
|
|
newPwd: new FormControl(null, [
|
|
Validators.required, Validators.minLength(6), Validators.maxLength(16), Validators.pattern(/^[\w_-]{6,16}$/)
|
|
]),
|
|
newPwdConfirm: new FormControl(null, [
|
|
Validators.required, Validators.minLength(6), Validators.maxLength(16), Validators.pattern(/^[\w_-]{6,16}$/),
|
|
this.checkSamePwd()
|
|
]),
|
|
})
|
|
}
|
|
|
|
user: User;
|
|
isCollapsed: boolean = false;
|
|
infoDrawerVisible: boolean = false;
|
|
sayHelloContent: string;
|
|
editInfoModalVisible: boolean = false;
|
|
resetPwdModalVisible: boolean = false;
|
|
editInfoFormGroup: FormGroup;
|
|
resetPwdFormGroup: FormGroup;
|
|
noAvatarUrl = 'https://cdn.celess.cn/'
|
|
host: string
|
|
showInfoDrawer = () => this.infoDrawerVisible = !this.infoDrawerVisible;
|
|
|
|
logout() {
|
|
this.gUserService.logout();
|
|
this.router.navigateByUrl('/')
|
|
}
|
|
|
|
ngOnInit(): void {
|
|
this.host = environment.host;
|
|
}
|
|
|
|
checkSamePwd = () => {
|
|
return (control: AbstractControl): { [key: string]: any } | null => {
|
|
console.log('a')
|
|
const newPwd = this.resetPwdFormGroup && this.resetPwdFormGroup.value.newPwd;
|
|
return control.value !== newPwd ? {pwdNotSame: true} : null;
|
|
};
|
|
}
|
|
uploadHeader = (file: UploadFile): object | Observable<{}> => {
|
|
return {Authorization: this.localStorageService.getToken()}
|
|
};
|
|
|
|
private initHelloWords() {
|
|
const hours = new Date().getHours();
|
|
if (hours < 6) {
|
|
this.sayHelloContent = `夜深了,注意早点休息哦!${this.user.displayName}`
|
|
} else if (hours < 10) {
|
|
this.sayHelloContent = `早上好呀!${this.user.displayName}`
|
|
} else if (hours < 14) {
|
|
this.sayHelloContent = `中午好呀!${this.user.displayName}`
|
|
} else if (hours < 19) {
|
|
this.sayHelloContent = `下午好呀!${this.user.displayName}`
|
|
} else if (hours < 22) {
|
|
this.sayHelloContent = `晚上好呀!${this.user.displayName}`
|
|
} else {
|
|
this.sayHelloContent = `时间不早了,注意休息哦!${this.user.displayName}`
|
|
}
|
|
}
|
|
|
|
showEditInfoModal() {
|
|
this.editInfoModalVisible = true;
|
|
this.infoDrawerVisible = false;
|
|
this.editInfoFormGroup.patchValue(this.user);
|
|
}
|
|
|
|
modalConfirm() {
|
|
const desc = this.editInfoFormGroup.value.desc;
|
|
const displayName = this.editInfoFormGroup.value.displayName;
|
|
this.apiService.updateUserInfo(desc, displayName).subscribe({
|
|
next: data => {
|
|
this.messageService.success('修改信息成功')
|
|
this.gUserService.refreshUserInfo();
|
|
},
|
|
error: err => {
|
|
this.messageService.error(err.msg);
|
|
this.gUserService.refreshUserInfo();
|
|
},
|
|
complete: null
|
|
});
|
|
this.editInfoModalVisible = false;
|
|
}
|
|
|
|
resetPwdConfirm() {
|
|
// this.apiService
|
|
const data = this.resetPwdFormGroup.value;
|
|
this.apiService.setPwd(data.originPwd, data.newPwd, data.newPwdConfirm).subscribe({
|
|
next: respData => {
|
|
this.messageService.success('修改密码成功,请牢记你修改的密码');
|
|
this.gUserService.refreshUserInfo();
|
|
},
|
|
error: err => {
|
|
this.messageService.error('修改密码失败,' + err.msg);
|
|
}
|
|
})
|
|
this.resetPwdModalVisible = false;
|
|
}
|
|
|
|
showResetPwdModal() {
|
|
this.resetPwdModalVisible = true;
|
|
this.infoDrawerVisible = false
|
|
}
|
|
|
|
avatarUpload(info: any) {
|
|
if (info.type === 'success' && info.file.response.code === 0) {
|
|
const time = new Date().valueOf();
|
|
this.gUserService.refreshUserInfo();
|
|
}
|
|
}
|
|
}
|