fengxiang
2018-05-15 6da582b887cf7ceadf1617417d7c15b239a2e008
src/app/routes/devices/basic-info/device-edit/device-edit.component.ts
@@ -3,7 +3,7 @@
import { VersionService } from '@business/services/http/version.service';
import { MonitorPointService } from '@business/services/http/monitor-point.service';
import { NzModalSubject } from 'ng-zorro-antd';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
import { DeviceService } from '@business/services/http/device.service';
import { Component, OnInit } from '@angular/core';
import { Device} from '@business/entity/data';
@@ -11,7 +11,8 @@
import { PageBean, ResultBean } from '@business/entity/grid';
import { _HttpClient } from '@delon/theme';
import { environment } from '@env/environment';
import { debug } from 'util';
import { ExampleService } from '@business/services/util/example.service';
import { Observable } from 'rxjs/Observable';
@Component({
  selector: 'app-device-edit',
@@ -30,11 +31,18 @@
    private monitorPointService: MonitorPointService,
    private versionService: VersionService,
    private operateUserService: OperateUserService,
    private deviceService:DeviceService,
    private  http:_HttpClient
  ) { }
  data: Device;
  //原始数据记录
  originalData: Device = {};
  validateForm: FormGroup;
  ngOnInit() {
      debugger;
    if(!!this.data){
        Object.assign(this.originalData,this.data);
    }
    const data = this.data;
    this.monitorPointChange(null);
    this.deviceVersionChange(null);
@@ -43,10 +51,9 @@
    if (this.data.createTime == null) {
        this.data.createTime = new Date().getTime();
    }
    debugger;
    const validates: Device = {
         name: [data.name, [Validators.required]],
         mac: [data.mac, [Validators.required]],
         mac: [data.mac, [Validators.required],[this.macAsyncValidator]],
         deviceVersionId: [data.deviceVersionId],
         monitorPointId: [data.monitorPointId],
         professionId: [data.professionId],
@@ -62,6 +69,30 @@
      validates
    );
  }
  macAsyncValidator = (control: FormControl): any => {
    return Observable.create(observer =>{
        // 编辑状态,mac未改变
        if(!!this.originalData&&this.originalData.mac === control.value){
            observer.next(null);
            observer.complete();
        }else {
            const exampleService = new ExampleService();
            exampleService.or().andEqualTo({name:'mac',value:control.value});
            this.deviceService.countByExample(exampleService).subscribe(
                res => {
                    debugger;
                     if(!!res.code&&!!res.data){
                         observer.next({ error: true, duplicated: true });
                     }else{
                        observer.next(null);
                     }
                     observer.complete();
                }
            );
        }
    });
  };
  close() {
     this.subject.destroy();
   }
@@ -79,7 +110,6 @@
     this.http.get<ResultBean<any[]>>(environment.SERVER_BASH_URL+"profession/getall").subscribe(
         result => {
             if(!!result.code){
                 debugger;
                 this.professions = result.data;
             }
         }