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(); 
 | 
  } 
 | 
  
 | 
} 
 |