/* * @Author: your name * @Date: 2021-11-29 13:50:46 * @LastEditTime: 2022-01-18 16:37:42 * @LastEditors: Please set LastEditors * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @FilePath: \tms-obc-web\src\app\routes\account\components\edit\edit.component.ts */ import { Component, Inject, OnInit, ViewChild } from '@angular/core'; import { FormBuilder, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; import { STChange, STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st'; import { DA_SERVICE_TOKEN, ITokenService } from '@delon/auth'; import { SFComponent, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form'; import { NzDrawerRef, NzDrawerService } from 'ng-zorro-antd/drawer'; 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, public ar: ActivatedRoute, 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']) } }