From 7ca521e4267b987270f6ccbb9a6c076aeb467d96 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Wed, 04 Jul 2018 17:11:33 +0800
Subject: [PATCH] 设备,监控站 管理功能增强

---
 src/app/routes/devices/basic-info/device-edit/device-edit.component.ts |   64 ++++++++++++++++++++++++++++---
 1 files changed, 57 insertions(+), 7 deletions(-)

diff --git a/src/app/routes/devices/basic-info/device-edit/device-edit.component.ts b/src/app/routes/devices/basic-info/device-edit/device-edit.component.ts
index 47ec2f0..26d687b 100644
--- a/src/app/routes/devices/basic-info/device-edit/device-edit.component.ts
+++ b/src/app/routes/devices/basic-info/device-edit/device-edit.component.ts
@@ -6,13 +6,14 @@
 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';
+import { Device, MonitorPoint} from '@business/entity/data';
 import { _Validators } from '@delon/abc';
 import { PageBean, ResultBean } from '@business/entity/grid';
 import { _HttpClient } from '@delon/theme';
 import { environment } from '@env/environment';
 import { ExampleService } from '@business/services/util/example.service';
 import { Observable } from 'rxjs/Observable';
+import { OrganizationService } from '@business/services/http/organization.service';
 
 @Component({
   selector: 'app-device-edit',
@@ -25,6 +26,8 @@
   public deviceVersions: any [] = [];
   public operateUsers: any [] = [];
   public isSaving = false;
+  public configMap: {orgId?: number, mpointId?: number, mpoint?: MonitorPoint} = {orgId: null};
+  public orgOptions = [];
   constructor(
     private subject: NzModalSubject,
     private formBuilder: FormBuilder,
@@ -32,13 +35,16 @@
     private versionService: VersionService,
     private operateUserService: OperateUserService,
     private deviceService: DeviceService,
-    private  http: _HttpClient
+    private  http: _HttpClient,
+    private organizationService: OrganizationService
   ) { }
   data: Device;
-  //������������������
+  // ������������������
   originalData: Device = {};
+  orgId: number = null;
   validateForm: FormGroup;
   ngOnInit() {
+      console.log(this.configMap);
     if (!!this.data) {
         Object.assign(this.originalData, this.data);
     }    
@@ -50,6 +56,14 @@
     if (this.data.createTime == null) {
         this.data.createTime = new Date().getTime();
     }
+    if (!!this.configMap.mpointId 
+        && !!this.data.monitorPoint
+        && !data.longitude
+        && !data.latitude) {
+            data.longitude = this.data.monitorPoint.longitude;
+            data.latitude = this.data.monitorPoint.latitude;
+    }
+    data.monitorPointId = !!data.monitorPointId ? data.monitorPointId : this.configMap.mpointId;
     const validates: Device = {
          name: [data.name, [Validators.required]],
          mac: [data.mac, [Validators.required], [this.macAsyncValidator]],
@@ -67,6 +81,12 @@
     this.validateForm = this.formBuilder.group(
       validates
     );
+    this.orgSelectChange();
+    const control = this.validateForm.controls['monitorPointId'];
+    control.valueChanges.subscribe(value => {
+        const mpoint = ToolsService.getObjById<MonitorPoint>(value, this.monitorPoints);
+        this.resetCoor(mpoint);
+    });
   }
   macAsyncValidator = (control: FormControl): any => {
     return Observable.create(observer => {
@@ -79,7 +99,6 @@
             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 {
@@ -114,9 +133,15 @@
          }
      );
    }
-   monitorPointChange(text) {
-    const pageBean: PageBean = {pageIndex: 0, pageSize: 20};
-    this.monitorPointService.getPagingList(pageBean, text).subscribe(
+   monitorPointChange(text?: string) {
+    const pageBean: PageBean = {pageIndex: 0, pageSize: 100};
+    const orgId = this.configMap.orgId;
+    const example = new ExampleService();
+    text = !!text && !!text.trim() ? text : null;
+    example.or()
+    .andEqualTo({name: 'organizationId', value: this.configMap.orgId})
+    .andEqualTo({name: 'name', value: text});
+    this.monitorPointService.getPageByExample(pageBean, example).subscribe(
       (res: PageBean) => {
            if (res != null && res.data != null) {
                this.monitorPoints = res.data;
@@ -177,4 +202,29 @@
       }
    );
    }
+   orgSelectChange(text?: string) {
+    const pageBean: PageBean = {pageIndex: 0, pageSize: 20};
+    this.organizationService.getPagingList(pageBean, text).subscribe(
+      (res: PageBean) => {
+           if (res != null && res.data != null) {               
+               this.orgOptions = res.data;
+           }
+      }
+   );
+  }
+  setOrgId(orgId: number) {
+        this.configMap.mpointId = null;
+        this.monitorPointChange();
+        this.clearMpoint(); 
+  }
+  clearMpoint() {
+     ToolsService.setValueToControl(this.validateForm, 'monitorPointId', null);
+     this.resetCoor();
+  }
+  resetCoor(mpoint?: MonitorPoint) {
+    const longitude =  !!mpoint ?  mpoint.longitude : null;
+    const latitude =  !!mpoint ?  mpoint.latitude : null;
+    ToolsService.setValueToControl(this.validateForm, 'longitude', longitude);
+    ToolsService.setValueToControl(this.validateForm, 'latitude', latitude);
+  }
 }

--
Gitblit v1.8.0