From 0d8b1828eea6bb027bbf71ddcd9c28a7bcf0ca3b Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Fri, 26 Jan 2018 14:38:12 +0800
Subject: [PATCH] 组织配置

---
 src/app/business/services/util/tools.service.ts                                            |   13 ++
 src/app/business/entity/data.ts                                                            |    1 
 src/app/business/services/http/sensors.service.ts                                          |    6 +
 src/app/routes/systems/organization/organization-config/organization-config.component.ts   |  114 +++++++++++++---------
 src/app/routes/systems/organization/organization-config/organization-config.component.html |   93 ++++++++++--------
 src/app/routes/devices/basic-info/adjust-config/adjust-config.component.ts                 |   34 ++++--
 src/app/business/services/http/alarm-config.service.ts                                     |    1 
 7 files changed, 161 insertions(+), 101 deletions(-)

diff --git a/src/app/business/entity/data.ts b/src/app/business/entity/data.ts
index 93354c3..2aa99c6 100644
--- a/src/app/business/entity/data.ts
+++ b/src/app/business/entity/data.ts
@@ -83,6 +83,7 @@
 export interface AlarmSensorLevel {
   enable: boolean|any [];
   increment: number []|any[];
+  degressEnable:boolean|any [];
   degression: number []|any [];
 }
 export interface Device {
diff --git a/src/app/business/services/http/alarm-config.service.ts b/src/app/business/services/http/alarm-config.service.ts
index 9296a4e..9fd4271 100644
--- a/src/app/business/services/http/alarm-config.service.ts
+++ b/src/app/business/services/http/alarm-config.service.ts
@@ -29,6 +29,7 @@
                 {
                   enable: false,
                   increment: [0,0,0],
+                  degressEnable: false,
                   degression:  [0,0,0]
                 } : alarmLevels[key];
              }
diff --git a/src/app/business/services/http/sensors.service.ts b/src/app/business/services/http/sensors.service.ts
index 5ba7466..91ae9d5 100644
--- a/src/app/business/services/http/sensors.service.ts
+++ b/src/app/business/services/http/sensors.service.ts
@@ -12,7 +12,8 @@
   private urls = {
     list: environment.SERVER_BASH_URL + '/sensor/page-list',
     save: environment.SERVER_BASH_URL + '/sensor/add-or-modify',
-    delete: environment.SERVER_BASH_URL + '/sensor/delete-by-ids'
+    delete: environment.SERVER_BASH_URL + '/sensor/delete-by-ids',
+    listByVersionId:environment.SERVER_BASH_URL + '/sensor/list-by-vid',
 };
 constructor(private http: _HttpClient) { }
  public getPagingList(page: PageBean, queryText: string): Observable<PageBean> {
@@ -29,6 +30,9 @@
       queryParams: example.getSqlParam(), orderByClause: orderByClause};
       return this.http.get(this.urls.list, param);
 }
+public getPageByVersionId(versionId:number): Observable<PageBean> {
+       return this.http.get(this.urls.listByVersionId,{versionId:versionId});
+}
 public save(data: any): Observable<any> {
       return this.http.post(this.urls.save, data);
 }
diff --git a/src/app/business/services/util/tools.service.ts b/src/app/business/services/util/tools.service.ts
index 3afa1b1..affe82f 100644
--- a/src/app/business/services/util/tools.service.ts
+++ b/src/app/business/services/util/tools.service.ts
@@ -15,4 +15,17 @@
              }
          )
       }
+      public static removePrivate(obj:object){
+            Object.keys(obj).forEach(
+                 (key:string) => {
+                        if(key.startsWith('_')){
+                            delete obj[key];
+                        }else{
+                            if(obj[key] instanceof Object){
+                                ToolsService.removePrivate(obj[key]);
+                            }
+                        }
+                 }
+                );
+      }
 }
diff --git a/src/app/routes/devices/basic-info/adjust-config/adjust-config.component.ts b/src/app/routes/devices/basic-info/adjust-config/adjust-config.component.ts
index 2ae7c10..0332aa3 100644
--- a/src/app/routes/devices/basic-info/adjust-config/adjust-config.component.ts
+++ b/src/app/routes/devices/basic-info/adjust-config/adjust-config.component.ts
@@ -5,6 +5,8 @@
 import { Component, OnInit } from '@angular/core';
 import { DeviceAdjustValue, Sensor, Device } from '@business/entity/data';
 import { Grid, PageBean, ResultBean } from '@business/entity/grid';
+import { ContentChild } from '@angular/core/src/metadata/di';
+import swal, { SweetAlertType } from 'sweetalert2';
 
 @Component({
   selector: 'app-adjust-config',
@@ -56,6 +58,10 @@
   ) { }
 
   ngOnInit() {
+    if(this.record.deviceVersionId==null){
+      swal(`������������������������`, '������������������������������������������������������������', 'info');
+      this.subject.destroy();    
+    }
     this.initPage();
     this.load();
   }
@@ -66,22 +72,23 @@
     }, 1);
     zip(
       this.adjustValueService.getByDid(this.record.id),
-      this.sensorsService.getPagingList(this.grid, null)
+      this.sensorsService.getPageByVersionId(this.record.deviceVersionId)
     ).subscribe(
         ([adjustRes,sensorsRes]) => {
             if(adjustRes!=null && adjustRes.code==1 && sensorsRes != null && sensorsRes.data != null){
-               this.data = adjustRes.data;
-               if(this.data == null||this.data.deviceId== null){
-                  this.data = {};
-                  this.data.value = {};
-                  this.data['deviceId'] = this.record.id;
-               }
-              // ���������������������
-              Object.assign(this._dataValue,this.data.value);
+                this.data = {
+                  deviceId:this.record.id,
+                  value:{}
+                };
+                if(adjustRes.data!=null){
+                  // ���������������������
+                  Object.assign(this._dataValue,adjustRes.data.value);
+                  this.data['id'] =adjustRes.data.id;
+                }                
                this.grid.initData(sensorsRes);
                sensorsRes.data.forEach(
                 (item:Sensor) => {
-                  this.data.value[item.sensorKey] = this.data.value[item.sensorKey] == null?0:this.data.value[item.sensorKey];                
+                  this.data.value[item.sensorKey] = this._dataValue[item.sensorKey] == null?0:this._dataValue[item.sensorKey];                
                   }
               );
               this.grid.refreshStatus();
@@ -97,11 +104,14 @@
   }
   save($event) {
     // $event.preventDefault();
-    let isModify = Object.keys(this.data.value).some(
+    let isModify = Object.keys(this._dataValue).length != Object.keys(this.data.value).length;
+    if(!isModify){
+      isModify = Object.keys(this.data.value).some(
         key => {
             return this.data.value[key] !== this._dataValue[key];
         }
-    );
+      );
+    }
     debugger;
     if(isModify){
       this.adjustValueService.save(this.data).subscribe(
diff --git a/src/app/routes/systems/organization/organization-config/organization-config.component.html b/src/app/routes/systems/organization/organization-config/organization-config.component.html
index 20c2c97..e5b43b0 100644
--- a/src/app/routes/systems/organization/organization-config/organization-config.component.html
+++ b/src/app/routes/systems/organization/organization-config/organization-config.component.html
@@ -19,14 +19,17 @@
                     <th nz-th>
                         ������
                     </th>
-                    <th nz-th>
-                        ������������
+                    <th nz-th [ngStyle]="{'width': '72px'}">
+                        ������������
                     </th>
                     <th nz-th>
-                        ������������
+                        <span *ngIf="hasDegression">������������</span>
                     </th>
                     <th nz-th>
-                        ������������
+                        <span *ngIf="hasDegression">������������</span>
+                    </th>
+                    <th nz-th>
+                        <span *ngIf="hasDegression">������������</span>
                     </th>
                 </tr>
             </thead>
@@ -36,59 +39,65 @@
                     <td nz-td [nzCheckbox]="true">
                         <label nz-checkbox formControlName="enable"></label>
                     </td>
-                    <td>
+                    <td nz-td>
                         <span>
                             {{ row.name }}({{ row.unit }})
                         </span>
                     </td>
-                    <td formArrayName="increment" *ngFor="let in of validateForm.get('alarmLevels.'+row.sensorKey+'.increment').controls; index as i">
-                            <div nz-form-item>
-                                <div nz-form-control nzHasFeedback>
-                                    <nz-input [formControlName]="i" maxlength="20" nzDisabled="{{ !f.value['alarmLevels'][row.sensorKey]['enable'] }}"></nz-input>
-                                </div>
-                            </div>
-                    </td>
-                    <td formArrayName="degression" *ngFor="let in of validateForm.get('alarmLevels.'+row.sensorKey+'.degression').controls; index as i">
+                    <td nz-td formArrayName="increment" *ngFor="let in of validateForm.get('alarmLevels.'+row.sensorKey+'.increment').controls; index as i">
                         <div nz-form-item>
                             <div nz-form-control nzHasFeedback>
                                 <nz-input [formControlName]="i" maxlength="20" nzDisabled="{{ !f.value['alarmLevels'][row.sensorKey]['enable'] }}"></nz-input>
                             </div>
                         </div>
-                   </td>   
+                    </td>
+                    <td nz-td style="padding-top:0px;">
+                        <div nz-form-control>
+                            <nz-switch formControlName="degressEnable" (click)="refreshHasDegression(f.value['alarmLevels'][row.sensorKey]['degressEnable'])"
+                            nzDisabled="{{ !f.value['alarmLevels'][row.sensorKey]['enable'] }}"></nz-switch>
+                        </div>
+                    </td>
+                    <td nz-td formArrayName="degression" *ngFor="let in of validateForm.get('alarmLevels.'+row.sensorKey+'.degression').controls; index as i">
+                        <div *ngIf="f.value['alarmLevels'][row.sensorKey]['degressEnable']" nz-form-item>
+                            <div nz-form-control nzHasFeedback>
+                                <nz-input [formControlName]="i" maxlength="20" nzDisabled="{{ !f.value['alarmLevels'][row.sensorKey]['enable'] }}"></nz-input>
+                            </div>
+                        </div>
+                    </td>
                 </tr>
             </tbody>
         </nz-table>
     </nz-card>
     <div [ngStyle]="{'background-color':'#f5f7fa','width':'110%','left':'-5%','height':'20px','position':'relative'}"></div>
-    <nz-card [nzBordered]="false" nzTitle="������������"  formGroupName="alarmMode">
-            <label nz-checkbox formControlName="enable">
-                <span>������������</span>
-            </label>
-            <div [ngStyle]="{'margin-left': '20%'}">
-                <br/>
-                <br/>
-                <br/>
-                  <div *ngFor="let i of [1,2,3]" nz-form-item nz-row class="mb-sm">
-                    <div nz-form-label nz-col [nzSm]="3" [nzXs]="24">
-                        <span [ngSwitch]="i">
-                            <label *ngSwitchCase="1">������������������:</label>
-                            <label *ngSwitchCase="2">������������������:</label>
-                            <label *ngSwitchCase="3">������������������:</label>
-                        </span>
-                    </div>
-                    <div nz-form-control nz-col [nzSpan]="12" nzHasFeedback>
-                        <nz-select formControlName="{{ 'level'+i }}" [nzMode]="'multiple'" [nzPlaceHolder]="'������ ������������'" [nzNotFoundContent]="'������������'"
-                            nzDisabled="{{ !f.value['alarmMode']['enable'] }}">
-                            <nz-option *ngFor="let option of alarmModes" [nzLabel]="option.label" [nzValue]="option.value" [nzDisabled]="option.disabled">
-                            </nz-option>
-                        </nz-select>
-                    </div>
-                    <br/>
-                    <br/>
-                    <br/>
+    <nz-card [nzBordered]="false" nzTitle="������������" formGroupName="alarmMode">
+        <label nz-checkbox formControlName="enable">
+            <span>������������</span>
+        </label>
+        <div [ngStyle]="{'margin-left': '20%'}">
+            <br/>
+            <br/>
+            <br/>
+            <div *ngFor="let i of [1,2,3]" nz-form-item nz-row class="mb-sm">
+                <div nz-form-label nz-col [nzSm]="3" [nzXs]="24">
+                    <span [ngSwitch]="i">
+                        <label *ngSwitchCase="1">������������������:</label>
+                        <label *ngSwitchCase="2">������������������:</label>
+                        <label *ngSwitchCase="3">������������������:</label>
+                    </span>
                 </div>
+                <div nz-form-control nz-col [nzSpan]="12" nzHasFeedback>
+                    <nz-select formControlName="{{ 'level'+i }}" [nzMode]="'multiple'" [nzPlaceHolder]="'������ ������������'" [nzNotFoundContent]="'������������'"
+                        nzDisabled="{{ !f.value['alarmMode']['enable'] }}">
+                        <nz-option *ngFor="let option of alarmModes" [nzLabel]="option.label" [nzValue]="option.value" [nzDisabled]="option.disabled">
+                        </nz-option>
+                    </nz-select>
+                </div>
+                <br/>
+                <br/>
+                <br/>
             </div>
-        </nz-card>
+        </div>
+    </nz-card>
     <footer-toolbar errorCollect>
         <span [ngStyle]="{'color':'red','width':'300px','margin-right':'40px'}">{{ errorMessage }}</span>
         <label>���������������</label>
@@ -100,5 +109,5 @@
                 <span *ngIf="isSaving">���</span>
             </span>
         </button>
-    </footer-toolbar>    
+    </footer-toolbar>
 </form>
diff --git a/src/app/routes/systems/organization/organization-config/organization-config.component.ts b/src/app/routes/systems/organization/organization-config/organization-config.component.ts
index a40ad12..f4cee54 100644
--- a/src/app/routes/systems/organization/organization-config/organization-config.component.ts
+++ b/src/app/routes/systems/organization/organization-config/organization-config.component.ts
@@ -1,7 +1,7 @@
 import { NzMessageService } from 'ng-zorro-antd';
 import { filter } from 'rxjs/operators';
 import { HttpClient } from '@angular/common/http';
-import { FormGroup, FormBuilder, FormControl, Validators, FormArray } from '@angular/forms';
+import { FormGroup, FormBuilder, FormControl, Validators, FormArray, AbstractControl } from '@angular/forms';
 import { SensorsService } from '@business/services/http/sensors.service';
 import { Grid, PageBean } from '@business/entity/grid';
 import { Organization, AlarmConfig, AlarmSensorLevel, AlarmConfigValue } from '@business/entity/data';
@@ -11,6 +11,7 @@
 import { AlarmConfigService } from '@business/services/http/alarm-config.service';
 import { AlarmStyle } from '@business/enum/types.enum';
 import { patterns } from '@business/enum/patterns.enum';
+import { ToolsService } from '@business/services/util/tools.service';
 
 @Component({
   selector: 'app-organization-config',
@@ -81,8 +82,12 @@
             [degression[1], Validators.pattern(patterns.num)],
             [degression[2], Validators.pattern(patterns.num)]
           ]);
+        //������������������������
+        // let _degressionEnable = degression[0] != 0 || degression[1] != 0 || degression[2] != 0;
+
         const alarmSensorGroup = this.formBuilder.group(
           {
+            degressEnable:[alarmLevels[key].degressEnable],
             enable: [alarmLevels[key].enable],
             increment: incrementArray,
             degression: degressionArray,
@@ -126,6 +131,7 @@
       )
       this.refreshIndeterminate();      
     }
+      this.refreshHasDegression(false);
         // ������������������ExpressionChangedAfterItHasBeenCheckedError
         setTimeout(() => {
           this.grid.loading = false;
@@ -173,6 +179,7 @@
          organizationId:this.organization.id,
          value:value
        }
+      //  ToolsService.removePrivate(data.value);
        this.alarmConfigService.save(data).subscribe(
            result => {
               if(result!=null&&result.code==1){
@@ -182,6 +189,7 @@
            }
        );
     }
+    debugger;
   }    
   
   setErrorMessage(){
@@ -198,53 +206,55 @@
     }
 }
   errorMessage:string = '';
+  private removeError(error:'increment'|'degression',...controls:AbstractControl[]){
+    controls.forEach(
+      item => {
+         if(item.hasError(error)&&Object.keys(item.errors).length==1){
+           item.setErrors(null);
+         }
+      }
+   ); 
+  }
+  private addError(error:'increment'|'degression',...controls:AbstractControl[]){
+    controls.forEach(
+      item => {
+        let errs = {};
+        errs[error] = true;
+        item.setErrors(errs);
+        item.markAsDirty();
+      }
+   ); 
+  }
   private alarmLevelValidator = (control: FormControl): { [s: string]: boolean } => {
-    let result = {};
-      const i0 = control.get("increment.0");
-      const i1 = control.get("increment.1");
-      const i2 = control.get("increment.2");
-      if ((i0.value != 0 || i1.value != 0 || i2.value != 0)&&(i0.value >= i1.value||i1.value >= i2.value)) {
-        i0.setErrors({ increment: true });
-        i0.markAsDirty();
-        i1.setErrors({ increment: true });
-        i1.markAsDirty();
-        i2.setErrors({ increment: true });
-        i2.markAsDirty();
-        result["increment"] = true;
-      }else{
-        if(i0.hasError('increment')&&Object.keys(i0.errors).length==1){
-          i0.setErrors(null);
+        const enable = control.get("enable").value;
+        const degressEnable = control.get("degressEnable").value;       
+        const i0 = control.get("increment.0");
+        const i1 = control.get("increment.1");
+        const i2 = control.get("increment.2");
+        const d0 = control.get("degression.0");
+        const d1 = control.get("degression.1");
+        const d2 = control.get("degression.2");
+        // ��������������� ������������������������������
+        if(!enable){
+          this.removeError('increment',i0,i1,i2);
+          this.removeError('degression',d0,d1,d2);
+          return null;
         }
-        if(i1.hasError('increment')&&Object.keys(i1.errors).length==1){
-          i1.setErrors(null);
-        }
-        if(i2.hasError('increment')&&Object.keys(i2.errors).length==1){
-          i2.setErrors(null);
-        }
-      }
-      const d0 = control.get("degression.0");
-      const d1 = control.get("degression.1");
-      const d2 = control.get("degression.2");
-      if ((d0.value != 0 || d1.value != 0 || d2.value != 0)&&(d1.value >= d0.value||d2.value >= d1.value)) {
-        d0.setErrors({ degression: true });
-        d0.markAsDirty();
-        d1.setErrors({ degression: true });
-        d1.markAsDirty();
-        d2.setErrors({ degression: true });
-        d2.markAsDirty();
-        result["degression"] = true;
-      }else{
-        if(d0.hasError('degression')&&Object.keys(d0.errors).length==1){
-          d0.setErrors(null);
-        }
-        if(d1.hasError('degression')&&Object.keys(d1.errors).length==1){
-          d1.setErrors(null);
-        }
-        if(d2.hasError('degression')&&Object.keys(d2.errors).length==1){
-          d2.setErrors(null);
-        }
-      }
-      return Object.keys(result).length == 0?null:result;
+        let result = {};
+        if ((i0.value != 0 || i1.value != 0 || i2.value != 0)&&(i0.value >= i1.value||i1.value >= i2.value)) {
+          this.addError('increment',i0,i1,i2);
+          result["increment"] = true;
+        }else{
+          this.removeError('increment',i0,i1,i2);
+        } 
+          debugger;
+          if(degressEnable&&(d0.value != 0 || d1.value != 0 || d2.value != 0)&&(d1.value >= d0.value||d2.value >= d1.value)) {
+            this.addError('degression',d0,d1,d2);
+            result["degression"] = true;
+          }else{
+            this.removeError('degression',d0,d1,d2);
+          }
+        return Object.keys(result).length == 0?null:result;
   };
    getLastError(control:FormGroup|FormArray){
          if(control.errors!=null){
@@ -264,4 +274,16 @@
            }
          }
    }
+   private hasDegression = false;
+   refreshHasDegression(value){
+       if(value){
+         this.hasDegression = true;
+       }else{
+        this.hasDegression = Object.values(this.validateForm.value['alarmLevels']).some(
+             ( item:any) => {
+                return item['degressEnable'];
+             }
+          )
+       }
+   }
 }

--
Gitblit v1.8.0