Files
bbq/src/app/routes/account/components/edit-password/edit-password.component.ts
Taric Xin 1f462ebdfe edit
2022-05-09 10:39:39 +08:00

128 lines
3.7 KiB
TypeScript

/*
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2021-12-27 10:30:56
* @LastEditors : Shiming
* @LastEditTime : 2022-01-18 17:14:54
* @FilePath : \\tms-obc-web\\src\\app\\routes\\account\\components\\edit-password\\edit-password.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
import { Component, Inject, OnInit } from '@angular/core';
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
import { Router } from '@angular/router';
import { DA_SERVICE_TOKEN, ITokenService } from '@delon/auth';
import { NzFormTooltipIcon } from 'ng-zorro-antd/form';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { AccountService } from '../../services/account.service';
@Component({
selector: 'app-account-components-edit',
templateUrl: './edit-password.component.html'
})
export class AccountComponentsCenterEditComponent implements OnInit {
validateForm!: FormGroup;
record: any;
count = 0;
type = 'create';
isVisibleView = false;
passwordVisible = false;
passwordVisible2 = false;
password: any;
password2: any;
interval$: any;
confirmationValidator = (control: FormControl): { [s: string]: boolean } => {
if (!control.value) {
return { required: true };
} else if (control?.value !== this.validateForm?.value?.passWord) {
return { confirm: true, error: true };
}
return {};
};
captchaTooltipIcon: NzFormTooltipIcon = {
type: 'info-circle',
theme: 'twotone'
};
constructor(
public router: Router,
private modalRef: NzModalRef,
private fb: FormBuilder,
public service: AccountService,
@Inject(DA_SERVICE_TOKEN) private tokenService: ITokenService
) {}
ngOnInit() {
this.initForm();
}
initForm() {
this.validateForm = this.fb.group({
passWord: [
null,
[
Validators.required,
Validators.maxLength(16),
Validators.minLength(8),
Validators.pattern('^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z-_]{8,16}$')
]
],
passWordTo: [null, [Validators.required, Validators.maxLength(16), Validators.minLength(8), this.confirmationValidator]],
smsVerifyCode: [null, [Validators.required]]
});
}
destroyModal(): void {
this.modalRef.destroy();
}
getCaptcha(e: MouseEvent): void {
this.service.request(this.service.$api_get_current_user_smVerification).subscribe(res => {
// code==503046 弹出网易盾
if (res && res.code === '1') {
this.service.msgSrv.success('发送成功');
e.preventDefault();
this.codeCountDown();
} else {
this.service.msgSrv.success(res.msg);
}
});
}
save() {
if (!this.validateForm.valid) {
this.service.msgSrv.warning('必填项为空或格式错误,请检查!');
return;
}
const params = {
...this.validateForm.value
};
this.service.request(this.service.$api_set_phoneUpdatePassword, params).subscribe(res => {
if (res) {
this.service.msgSrv.success('修改密码成功!');
this.isVisibleView = true;
setTimeout(() => {
this.tokenService.clear();
this.router.navigate(['/passport/login']);
this.modalRef.close();
}, 3000);
}
});
}
/* code倒计时 */
codeCountDown() {
this.count = 59;
this.interval$ = setInterval(() => {
this.count -= 1;
if (this.count <= 0) {
clearInterval(this.interval$);
}
}, 1000);
}
handleCancel() {
this.isVisibleView = false;
}
handleOK() {
this.modalRef.close();
this.tokenService.clear();
this.router.navigate(['/passport/login']);
}
}