import { ResultBean } from '@business/entity/grid';
|
import { Subject } from 'rxjs/Subject';
|
import {NzModalSubject, NzMessageService} from 'ng-zorro-antd';
|
import {Component, OnInit} from '@angular/core';
|
import {ModalHelper} from '@delon/theme';
|
import {HttpClient, HttpResponse} from '@angular/common/http';
|
import {environment} from 'environments/environment';
|
import {DateService} from '@business/services/util/date.service';
|
import {FormGroup, FormBuilder, FormControl, Validators} from '@angular/forms';
|
import { catchError } from 'rxjs/operators';
|
import { ErrorObservable } from 'rxjs/observable/ErrorObservable';
|
|
@Component({
|
selector: 'app-edit',
|
templateUrl: './edit.component.html',
|
styles: []
|
})
|
export class UserInstallerEditComponent implements OnInit {
|
|
user: any;
|
public validateForm: FormGroup;
|
constructor(
|
private subject: NzModalSubject,
|
public http: HttpClient,
|
private formBuilder: FormBuilder,
|
) {}
|
|
ngOnInit() {
|
const user = this.user;
|
this.validateForm = this.formBuilder.group({
|
name: [user.name],
|
mobile: [user.mobile, [Validators.pattern('^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}$')]],
|
email: [user.email],
|
weixin: [user.weixin],
|
organizationId: [user.organizationId],
|
expireTime: [user.expireTime],
|
id: [user.id]
|
});
|
const mobileControl = this.validateForm.get('mobile');
|
mobileControl.valueChanges.filter(val => {
|
return val != null && val.trim() !== '';
|
}).debounceTime(900).distinctUntilChanged().subscribe( value => {
|
if (mobileControl.errors == null) {
|
mobileControl.setErrors({unique: true});
|
this.http.get(environment.SERVER_BASH_URL + '/operateUser/unique-mobile?mobile=' + value)
|
.pipe(
|
catchError(() => {
|
const req = <XMLHttpRequest>event.target;
|
if (req.status === 401) {
|
this.subject.destroy();
|
}
|
// 以错误的形式结束本次请求
|
return ErrorObservable.create(event);
|
})
|
)
|
.subscribe(
|
(val: ResultBean<boolean>) => {
|
if (val.code === 1 && val.data) {
|
this.validateForm.get('mobile').setErrors(null);
|
}
|
}
|
);
|
}
|
});
|
}
|
|
save() {
|
const validateForm = this.validateForm;
|
const controls = validateForm.controls;
|
if (validateForm.valid) {
|
for (const i in controls) {
|
controls[i].disable();
|
}
|
this.http.post(environment.SERVER_BASH_URL + '/operateUser/operateUser', validateForm.value).subscribe(() => {
|
this.subject.next('true');
|
this.close();
|
});
|
} else {
|
for (const i in controls) {
|
controls[i].markAsDirty();
|
}
|
}
|
|
}
|
|
close() {
|
this.subject.destroy();
|
}
|
|
}
|