From 8ac3a87733b421c1f1cb3b691f946c05bdae02df Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Fri, 06 Jul 2018 13:54:14 +0800
Subject: [PATCH] 设备,监控点维护 完善

---
 src/app/routes/map/coordinates-picker/coordinates-picker.component.html                 |    4 
 src/app/routes/devices/basic-info/basic-info.component.ts                               |   56 ++++++++++++-
 yarn.lock                                                                               |    8 +
 src/app/business/entity/grid.ts                                                         |    4 
 src/app/core/net/default.interceptor.ts                                                 |   30 ++++---
 package.json                                                                            |    2 
 src/app/business/services/http/device.service.ts                                        |   29 -------
 src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.ts |    2 
 src/app/routes/devices/basic-info/device-edit/device-edit.component.html                |    7 -
 src/app/routes/map/coordinates-picker/coordinates-picker.component.ts                   |   70 ++++++++++++++---
 src/app/routes/devices/basic-info/device-edit/device-edit.component.ts                  |    9 +-
 11 files changed, 143 insertions(+), 78 deletions(-)

diff --git a/package.json b/package.json
index 18af71a..0ca5c08 100644
--- a/package.json
+++ b/package.json
@@ -54,7 +54,7 @@
     "angular-qq-maps": "^1.0.1",
     "angular-split": "^1.0.0-rc.0",
     "angular-tree-component": "^7.0.1",
-    "angular2-baidu-map": "^4.1.0",
+    "angular2-baidu-map": "^4.3.2",
     "core-js": "^2.5.1",
     "echarts": "^4.0.4",
     "file-saver": "^1.3.3",
diff --git a/src/app/business/entity/grid.ts b/src/app/business/entity/grid.ts
index 5992378..b6f908c 100644
--- a/src/app/business/entity/grid.ts
+++ b/src/app/business/entity/grid.ts
@@ -66,8 +66,10 @@
             this.data = pageData.data.map(row => {
                 row['index'] = index++;
                 return row;
-            });
+            });           
             this.total = pageData.total;
+            const pages = Math.ceil(this.total / this.pageSize);
+            this.pageIndex = this.pageIndex >  pages ? pages : this.pageIndex;
         }
     }
     refreshStatus() {
diff --git a/src/app/business/services/http/device.service.ts b/src/app/business/services/http/device.service.ts
index 83c70d2..31de514 100644
--- a/src/app/business/services/http/device.service.ts
+++ b/src/app/business/services/http/device.service.ts
@@ -17,34 +17,7 @@
   public getListUrl () {
     return this.urls.list;
   }
-  public getSqlParams(queryMap: {[key: string]: number|string}) {
-    const example = new ExampleService();
-    const orgId = !!queryMap.orgId ? queryMap.orgId : null;
-    const mpointId = !!queryMap.mpointId ? queryMap.mpointId : null;
-    const devMacOrName = !!queryMap.devMacOrName && !!(<string>queryMap.devMacOrName).trim() ? queryMap.devMacOrName : null;
-    let  criWithMac: Criteria = null;
-    let  criWithName: Criteria  = null;
-    if (!!devMacOrName) {
-      criWithName = example.or().andLike({name: 'name', value: '%' + devMacOrName + '%'});
-      criWithMac = example.or().andLike({name: 'mac', value: '%' + devMacOrName + '%'});
-    }
-    if (!!mpointId) {
-        if (!!devMacOrName) {
-          criWithName.andEqualTo({name: 'monitorPointId', value: mpointId});
-          criWithMac.andEqualTo({name: 'monitorPointId', value: mpointId});
-        }else {
-          example.or().andEqualTo({name: 'monitorPointId', value: mpointId});
-        }
-    } else if (!!orgId) {
-      if (!!devMacOrName) {
-        criWithName.andCondition(`monitor_point_id in (select id from monitor_point where organization_id = ${orgId})`);
-        criWithMac.andCondition(`monitor_point_id in (select id from monitor_point where organization_id = ${orgId})`);
-      }else {
-        example.or().andCondition(`monitor_point_id in (select id from monitor_point where organization_id = ${orgId})`);
-      }
-    }
-    return example.getSqlParam();
-  }
+  
   constructor(private http: _HttpClient) { }
   delete(...ids: number[]): Observable< ResultBean<any> > {
       return this.http.post(this.urls.delete, ids);
diff --git a/src/app/core/net/default.interceptor.ts b/src/app/core/net/default.interceptor.ts
index 2a3a6dc..982d562 100644
--- a/src/app/core/net/default.interceptor.ts
+++ b/src/app/core/net/default.interceptor.ts
@@ -29,27 +29,29 @@
              () => !isExpireModelShow
          ).subscribe( (event: HttpErrorResponse) => {
                 isExpireModelShow = true;
-                if (!!event.error) {
-                    let errorMsg = '';
+                let errorMsg = '';
+                if (!!event && !!event.error) {
                     const erroCode =  !!event.error['errorCode'] ? Number.parseInt(event.error['errorCode']) : 0;
                     switch (erroCode) {
                     case 10: errorMsg = '���������,���������'; break;
                     case 11: errorMsg = '������������,���������������'; break;
                     case 12: errorMsg = '������������,������������������'; break;
-                    case 0: errorMsg = '���������������������������'; break;
+                    case 0: errorMsg  = '���������������������������'; break;
                     default: errorMsg = '������������,���������������'; break;
                     }
-                        // ������refresh���������������������
-                        this.loginService.clearRefreshToken();
-                        this.model.info({
-                        maskClosable: false,
-                        title: errorMsg,
-                        onOk: () => {
-                            isExpireModelShow = false;
-                            this.goTo('/passport/login');
-                        }
-                        });
-            }
+                }else {
+                    errorMsg = '���������������������������';
+                }
+                // ������refresh���������������������
+                this.loginService.clearRefreshToken();
+                this.model.info({
+                maskClosable: false,
+                title: errorMsg,
+                onOk: () => {
+                    isExpireModelShow = false;
+                    this.goTo('/passport/login');
+                }
+                });
          });
     }
     get loginService(): LoginService {
diff --git a/src/app/routes/devices/basic-info/basic-info.component.ts b/src/app/routes/devices/basic-info/basic-info.component.ts
index 43c8723..6dabdca 100644
--- a/src/app/routes/devices/basic-info/basic-info.component.ts
+++ b/src/app/routes/devices/basic-info/basic-info.component.ts
@@ -2,17 +2,17 @@
 import { CoorPicker, Device } from '@business/entity/data';
 import { AdjustConfigComponent } from './adjust-config/adjust-config.component';
 import { DeviceEditComponent } from './device-edit/device-edit.component';
-import { ModalHelper } from '@delon/theme';
+import { ModalHelper, _HttpClient } from '@delon/theme';
 import { NzModalService, NzMessageService } from 'ng-zorro-antd';
 import { PageBean, ResultBean } from '@business/entity/grid';
 import { DeviceService } from '@business/services/http/device.service';
 import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';
-import { SimpleTableColumn } from '@delon/abc';
+import { SimpleTableColumn, SimpleTableComponent } from '@delon/abc';
 import { Subject } from 'rxjs/Subject';
 import { CoordinatesPickerComponent } from 'app/routes/map/coordinates-picker/coordinates-picker.component';
 import { CoorPickerService } from 'app/routes/map/coordinates-picker/coordinates-picker.service';
 import { OrganizationService } from '@business/services/http/organization.service';
-import { ExampleService } from '@business/services/util/example.service';
+import { ExampleService, Criteria } from '@business/services/util/example.service';
 
 @Component({
   selector: 'app-basic-info',
@@ -75,7 +75,8 @@
     public msgSrv: NzMessageService,
     private modalHelper: ModalHelper,
     private coorPickerService: CoorPickerService,
-    private organizationService: OrganizationService
+    private organizationService: OrganizationService,
+    private http: _HttpClient
   ) { }
 
   ngOnInit() {
@@ -115,9 +116,50 @@
     });
   }
   load() {
-    this.extraParams.queryParams = this.deviceService.getSqlParams(this.queryMap);
+    const example  = this.initQueryExample();
+    this.extraParams.queryParams = example.getSqlParam();
     this.selectedRows = [];
-    this.simpleTable.load();
+    this.deviceService.countByExample(example).subscribe(
+      res => {
+           if (!!res && !!res.code) {
+              setTimeout(() => {
+                const count = res.data;
+                const pages = Math.ceil(count / this.simpleTable.ps);
+                const pi = this.simpleTable.pi > pages ? pages : this.simpleTable.pi;
+                this.simpleTable.load(pi);
+              }, 1);
+           }
+      }
+    );
+    
+  }
+  private initQueryExample() {
+    const example = new ExampleService();
+    const orgId = !!this.queryMap.orgId ? this.queryMap.orgId : null;
+    const mpointId = !!this.queryMap.mpointId ? this.queryMap.mpointId : null;
+    const devMacOrName = !!this.queryMap.devMacOrName && !!(<string>this.queryMap.devMacOrName).trim() ? this.queryMap.devMacOrName : null;
+    let  criWithMac: Criteria = null;
+    let  criWithName: Criteria  = null;
+    if (!!devMacOrName) {
+      criWithName = example.or().andLike({name: 'name', value: '%' + devMacOrName + '%'});
+      criWithMac = example.or().andLike({name: 'mac', value: '%' + devMacOrName + '%'});
+    }
+    if (!!mpointId) {
+        if (!!devMacOrName) {
+          criWithName.andEqualTo({name: 'monitorPointId', value: mpointId});
+          criWithMac.andEqualTo({name: 'monitorPointId', value: mpointId});
+        }else {
+          example.or().andEqualTo({name: 'monitorPointId', value: mpointId});
+        }
+    } else if (!!orgId) {
+      if (!!devMacOrName) {
+        criWithName.andCondition(`monitor_point_id in (select id from monitor_point where organization_id = ${orgId})`);
+        criWithMac.andCondition(`monitor_point_id in (select id from monitor_point where organization_id = ${orgId})`);
+      }else {
+        example.or().andCondition(`monitor_point_id in (select id from monitor_point where organization_id = ${orgId})`);
+      }
+    }
+    return example;
   }
   delete(...id: number[]) {
     this.deviceService.delete(...id).subscribe(
@@ -129,7 +171,7 @@
       }
     );
   }
-  @ViewChild('simpleTable') simpleTable: { load: Function };
+  @ViewChild('simpleTable') simpleTable: SimpleTableComponent;
   queryTextChanged(event) {
     this.queryTextStream.next(this.queryText);
   }
diff --git a/src/app/routes/devices/basic-info/device-edit/device-edit.component.html b/src/app/routes/devices/basic-info/device-edit/device-edit.component.html
index e9400e4..fa89a42 100644
--- a/src/app/routes/devices/basic-info/device-edit/device-edit.component.html
+++ b/src/app/routes/devices/basic-info/device-edit/device-edit.component.html
@@ -38,7 +38,7 @@
           </div>
           <div nz-form-item  nz-row class="mb-sm">
               <div nz-form-label nz-col [nzSm]="4" [nzXs]="24">
-                <label>������������</label>
+                <label nz-form-item-required>������������</label>
               </div>
               <div nz-form-control nz-col [nzSpan]="7" nzHasFeedback>
                   <nz-select formControlName="deviceVersionId" [nzPlaceHolder]="'������ ������(������������������)'"
@@ -76,11 +76,10 @@
           </div>
           <div nz-form-item  nz-row class="mb-sm">
             <div nz-form-label nz-col [nzSm]="4" [nzXs]="24">
-              <label>������������</label>
+              <label nz-form-item-required>������������</label>
             </div>
             <div nz-form-control nz-col [nzSpan]="7" nzHasFeedback>
-                <nz-select formControlName="monitorPointId" [nzPlaceHolder]="'������ ������������(������������������)'"
-                nzAllowClear [nzFilter]="false" nzShowSearch (nzSearchChange)="monitorPointChange($event)" [nzNotFoundContent]="'������������'" >
+                <nz-select formControlName="monitorPointId" [nzPlaceHolder]="'������ ������������(������������������)'" nzAllowClear [nzFilter]="false" nzShowSearch (nzSearchChange)="monitorPointChange($event)" [nzNotFoundContent]="'������������'" >
                   <nz-option *ngFor="let option of monitorPoints" [nzLabel]="option.name" [nzValue]="option.id" [nzDisabled]="option.disabled">
                   </nz-option>
                 </nz-select>
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 fe4d7da..f6f821c 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
@@ -7,7 +7,6 @@
 import { DeviceService } from '@business/services/http/device.service';
 import { Component, OnInit } from '@angular/core';
 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';
@@ -67,8 +66,8 @@
     const validates: Device = {
          name: [data.name, [Validators.required]],
          mac: [data.mac, [Validators.required], [this.macAsyncValidator]],
-         deviceVersionId: [data.deviceVersionId],
-         monitorPointId: [data.monitorPointId],
+         deviceVersionId: [data.deviceVersionId, [Validators.required]],
+         monitorPointId: [data.monitorPointId, [Validators.required]],
          professionId: [data.professionId],
          operateUserId: [data.operateUserId],
          address: [data.address],
@@ -137,10 +136,10 @@
     const pageBean: PageBean = {pageIndex: 0, pageSize: 100};
     const orgId = this.configMap.orgId;
     const example = new ExampleService();
-    text = !!text && !!text.trim() ? text : null;
+    text = !!text && !!text.trim() ? '%' + text + '%' : null;
     example.or()
     .andEqualTo({name: 'organizationId', value: this.configMap.orgId})
-    .andEqualTo({name: 'name', value: text});
+    .andLike({name: 'name', value: text});
     this.monitorPointService.getPageByExample(pageBean, example).subscribe(
       (res: PageBean) => {
            if (res != null && res.data != null) {
diff --git a/src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.ts b/src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.ts
index 8fafe6e..669a144 100644
--- a/src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.ts
+++ b/src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.ts
@@ -32,7 +32,7 @@
     let _areas = null;
     if (areaNames != null) {
       _areas = {
-       label: Object.values(areaNames).filter(d=>d).join('/'),
+       label: Object.values(areaNames).filter(d => d).join('/'),
        value: data.areaCode
       };
     }
diff --git a/src/app/routes/map/coordinates-picker/coordinates-picker.component.html b/src/app/routes/map/coordinates-picker/coordinates-picker.component.html
index c9470b5..1619375 100644
--- a/src/app/routes/map/coordinates-picker/coordinates-picker.component.html
+++ b/src/app/routes/map/coordinates-picker/coordinates-picker.component.html
@@ -6,11 +6,11 @@
                       <span></span>
                     </div>
                     <div  nz-col [nzSpan]="7">
-                        <nz-input maxlength="20" [(ngModel)]="queryTest" [nzPlaceHolder]="'���������������(��� ��� ��� ��� ���������)'">
+                        <nz-input #queryText maxlength="20" [nzPlaceHolder]="'���������������(��� ��� ��� ��� ���������)'">
                         </nz-input>
                     </div>
                     <div nz-col [nzSpan]="1">
-                        <button nz-button [nzType]="'primary'"  (click)="mapSearch($event)" class="mr-sm">
+                        <button nz-button [nzType]="'primary'"  (click)="mapSearch(queryText._value,true)" class="mr-sm">
                             <i class="anticon anticon-search"></i><span>������</span>
                         </button>
                     </div>
diff --git a/src/app/routes/map/coordinates-picker/coordinates-picker.component.ts b/src/app/routes/map/coordinates-picker/coordinates-picker.component.ts
index 726a069..1a787bd 100644
--- a/src/app/routes/map/coordinates-picker/coordinates-picker.component.ts
+++ b/src/app/routes/map/coordinates-picker/coordinates-picker.component.ts
@@ -16,6 +16,7 @@
 export class CoordinatesPickerComponent implements OnInit {
     Default_LNG = 121;
     Default_LAT = 31.4;
+    showZoom = 19;
     isSaving = false;
     markerOption: {
       point: Point,
@@ -35,19 +36,19 @@
   ngOnInit(): void {
     this.data = this.coorPickerService.data;
     let lng = this.data.longitude;
-    lng = lng === 0 || lng == null ? this.Default_LNG : lng;
+    lng = !lng ? this.Default_LNG : lng;
     this.data.longitude = lng;
     let lat = this.data.latitude;
-    lat = lat === 0 || lat == null ? this.Default_LAT : lat;
+    lat = !lat ? this.Default_LAT : lat;
     this.data.latitude = lat;
     this.options = {
         minZoom: 3,
         maxZoom: 19,
         cursor: 'default',
-        centerAndZoom: {
-          lng: lng,          
-          lat: lat,
-          zoom: 19
+        centerAndZoom: { 
+          lng: this.data.longitude, 
+          lat: this.data.latitude,
+          zoom: this.showZoom
         },
         enableKeyboard: true
       };  
@@ -98,14 +99,59 @@
           && this.data.longitude === this.Default_LNG
           && !!this.data.address
           && !!this.data.address.trim()) {
-          this._localSearch.search(this.data.address);
+          this.mapSearch(this.data.address);
       }
   }
-  queryTest: string;
-   mapSearch(param: any) {
-      let text = this.queryTest;
-      text = text == null || text.trim() === '' ? '���������' : text;
-      this._localSearch.search(text);
+  city: string;
+  // queryText: string;
+   mapSearch(queryText: string, isSearch?: boolean) {
+  
+      if (!!queryText && !!queryText.trim()) {
+        this.city = !!this.city ? this.city : '���������';
+        const end = queryText.indexOf('���') + 1;
+        if (end > 0) {
+          let start = queryText.indexOf('���') + 1;
+          start = start > 0 ? start : queryText.indexOf('���') + 1;
+          start = start > end ? 0 : start;
+          if (start < end) {
+             this.city = queryText.slice(start, end).trim();
+             if (!!this.city) {
+                this._map.setCurrentCity(this.city); 
+             }
+          }
+        }
+        console.log(this.city);
+        const myGeo = new this._BMap.Geocoder();
+        const that = this;
+        that._map.setCurrentCity(that.city);
+        myGeo.getPoint(queryText, function(point){
+            let getPoint = false;
+            if (point) {
+              that.data.latitude = point.lat;
+              that.data.longitude = point.lng;
+              getPoint = true;
+            }else {
+                console.log('������������������������������������!');
+            }
+            that.markerOption.point = {
+              lng:  that.data.longitude,
+              lat:  that.data.latitude
+            };
+            that.options.centerAndZoom = { 
+                lng: that.data.longitude, 
+                lat: that.data.latitude,
+                zoom: that.showZoom
+            };
+            // setTimeout(() => {
+            if (getPoint && !isSearch) {
+              that._map.centerAndZoom(point, that.showZoom);
+              
+            } else {
+              that._localSearch.search(queryText);              
+            }
+            // }, 3000);
+        }, that.city);
+      }
   }
   clickMap(e: any) {
        this.markerOption.point = {
diff --git a/yarn.lock b/yarn.lock
index 7a61b2b..bd91a1a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -463,9 +463,11 @@
     mobx ">=3"
     mobx-angular ">=1"
 
-angular2-baidu-map@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/angular2-baidu-map/-/angular2-baidu-map-4.1.0.tgz#9992840349a78e3d3c3eaf3b3857fd85e59ccb32"
+angular2-baidu-map@^4.3.2:
+  version "4.3.2"
+  resolved "http://registry.npm.taobao.org/angular2-baidu-map/download/angular2-baidu-map-4.3.2.tgz#bd85d10692e863f97479b640071ef59fe5b1e001"
+  dependencies:
+    tslib "^1.7.1"
 
 angular2-cookie@^1.2.6:
   version "1.2.6"

--
Gitblit v1.8.0