From 928d55a8fde33200bb1ca4016ce5b86e9a1118a8 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Tue, 16 Jan 2018 16:57:13 +0800
Subject: [PATCH] 组织配置
---
src/app/business/enum/types.enum.ts | 1
src/app/business/entity/data.ts | 26 ++
src/app/business/services/http/sensors.service.ts | 4
src/app/routes/systems/organization/organization.component.ts | 1
src/app/routes/systems/systems.module.ts | 1
src/app/routes/systems/organization/organization-config/organization-config.component.ts | 330 ++++++++++++++++++++++++------------
src/app/routes/systems/organization/organization-config/organization-config.component.html | 119 +++++--------
src/app/business/enum/patterns.enum.ts | 3
src/app/business/services/http/alarm-config.service.ts | 39 ++++
9 files changed, 329 insertions(+), 195 deletions(-)
diff --git a/src/app/business/entity/data.ts b/src/app/business/entity/data.ts
index d6f454c..595ad88 100644
--- a/src/app/business/entity/data.ts
+++ b/src/app/business/entity/data.ts
@@ -1,4 +1,5 @@
import { Column } from '@business/entity/grid';
+import { AlarmStyle } from '@business/enum/types.enum';
export interface AreaNames {
@@ -63,10 +64,31 @@
}
// ������������
+
+
export interface AlarmConfig {
- createTime?: number;
id?: number;
organizationId?: number;
+ createTime?: number;
updateTime?: number;
- value?: object;
+ value: AlarmConfigValue;
}
+
+export interface AlarmConfigValue {
+ alarmMode: AlarmMode;
+ alarmLevels:{[key: string]:AlarmSensorLevel};
+}
+
+
+export interface AlarmSensorLevel {
+ enable: boolean|any [];
+ increment: number []|any[];
+ degression: number []|any [];
+}
+
+export interface AlarmMode {
+ enable: boolean|any[];
+ level1: AlarmStyle[]|any[];
+ level2: AlarmStyle[]|any[];
+ level3: AlarmStyle[]|any[];
+}
\ No newline at end of file
diff --git a/src/app/business/enum/patterns.enum.ts b/src/app/business/enum/patterns.enum.ts
new file mode 100644
index 0000000..ce81f20
--- /dev/null
+++ b/src/app/business/enum/patterns.enum.ts
@@ -0,0 +1,3 @@
+export enum patterns{
+ num = '\\d+(\\.\\d+)?'
+}
diff --git a/src/app/business/enum/types.enum.ts b/src/app/business/enum/types.enum.ts
index b1a5157..7fdb678 100644
--- a/src/app/business/enum/types.enum.ts
+++ b/src/app/business/enum/types.enum.ts
@@ -1,7 +1,6 @@
export enum Types {
Date, Json
}
-
export enum AlarmStyle {
//���������������������������������
weixin='weixin',email='email',sms='sms',voice='voice'
diff --git a/src/app/business/services/http/alarm-config.service.ts b/src/app/business/services/http/alarm-config.service.ts
index 6db6cbf..9a925c2 100644
--- a/src/app/business/services/http/alarm-config.service.ts
+++ b/src/app/business/services/http/alarm-config.service.ts
@@ -3,17 +3,52 @@
import { environment } from '@env/environment';
import { Observable } from 'rxjs/Observable';
import { ResultBean } from '@business/entity/grid';
-import { AlarmConfig } from '@business/entity/data';
+import { AlarmConfig, AlarmConfigValue,AlarmSensorLevel, AlarmMode } from '@business/entity/data';
@Injectable()
export class AlarmConfigService {
private urls = {
- getByOid: environment.SERVER_BASH_URL + 'alarm-config/get-by-oid'
+ getByOid: environment.SERVER_BASH_URL + 'alarm-config/get-by-oid',
+ save: environment.SERVER_BASH_URL + '/alarm-config/add-or-modify',
};
constructor( private http: _HttpClient) {
}
+ public generateAlarmConfig(sensors: {key:string} [],alarmConfig?: AlarmConfig): AlarmConfig{
+ const _alarmConfig : AlarmConfig = alarmConfig==null || alarmConfig.value == null ? {value:{
+ alarmLevels:null,
+ alarmMode:null
+ }}: alarmConfig;
+ let alarmLevels = _alarmConfig.value.alarmLevels;
+ alarmLevels = alarmLevels ==null ?{} :alarmLevels;
+ sensors.forEach(
+ sensor => {
+ const key = sensor.key;
+ alarmLevels[key] =
+ alarmLevels[key] == null ?
+ {
+ enable: false,
+ increment: [0,0,0],
+ degression: [0,0,0]
+ } : alarmLevels[key];
+ }
+ );
+ _alarmConfig.value.alarmLevels = alarmLevels;
+ //������������
+ let alarmMode = _alarmConfig.value.alarmMode;
+ alarmMode = alarmMode == null ? {
+ enable: false,
+ level1: null,
+ level2: null,
+ level3: null
+ } : alarmMode;
+ _alarmConfig.value.alarmMode = alarmMode;
+ return _alarmConfig;
+ }
public getByOid(oid:number):Observable<ResultBean<AlarmConfig>>{
return this.http.get(this.urls.getByOid,{organizationId:oid});
}
+ public save(data: any): Observable<ResultBean<any>> {
+ return this.http.post(this.urls.save, data);
+ }
}
diff --git a/src/app/business/services/http/sensors.service.ts b/src/app/business/services/http/sensors.service.ts
index af04f91..5ba7466 100644
--- a/src/app/business/services/http/sensors.service.ts
+++ b/src/app/business/services/http/sensors.service.ts
@@ -10,7 +10,7 @@
@Injectable()
export class SensorsService {
private urls = {
- edit: environment.SERVER_BASH_URL + '/sensor/page-list',
+ 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'
};
@@ -27,7 +27,7 @@
}
const param: PageBean = {pageSize: page.pageSize, pageIndex: page.pageIndex,
queryParams: example.getSqlParam(), orderByClause: orderByClause};
- return this.http.get(this.urls.edit, param);
+ return this.http.get(this.urls.list, param);
}
public save(data: any): Observable<any> {
return this.http.post(this.urls.save, data);
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 b5a2a48..5d53391 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
@@ -8,7 +8,7 @@
<label nz-checkbox formControlName="_allChecked" [nzIndeterminate]="indeterminate" (ngModelChange)="checkAll($event)"></label>
</th>
<th nz-th>
- ���������������
+ ���������������(������)
</th>
<th nz-th>
������
@@ -30,94 +30,67 @@
</th>
</tr>
</thead>
- <tbody nz-tbody>
- <tr nz-tbody-tr *ngFor="let row of nzTable.data">
+ <tbody formGroupName="alarmLevels" nz-tbody>
+ <tr nz-tbody-tr *ngFor="let row of nzTable.data" formGroupName="{{row.key}}">
+
<td nz-td [nzCheckbox]="true">
- <label nz-checkbox formControlName="{{row.key}}_enable"></label>
+ <label nz-checkbox formControlName="enable"></label>
</td>
<td>
<span>
- {{ row.name }}
+ {{ row.name }}({{ row.unit }})
</span>
</td>
- <td>
+ <td formArrayName="increment" *ngFor="let in of validateForm.get('alarmLevels.'+row.key+'.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.key]['enable'] }}"></nz-input>
+ </div>
+ </div>
+ </td>
+ <td formArrayName="degression" *ngFor="let in of validateForm.get('alarmLevels.'+row.key+'.degression').controls; index as i">
<div nz-form-item>
<div nz-form-control nzHasFeedback>
- <nz-input formControlName="{{row.key}}_level_increment_1" maxlength="20" nzDisabled="{{ !f.value[row.key+'_enable'] }}"></nz-input>
+ <nz-input [formControlName]="i" maxlength="20" nzDisabled="{{ !f.value['alarmLevels'][row.key]['enable'] }}"></nz-input>
</div>
</div>
- </td>
- <td>
- <div nz-form-item>
- <div nz-form-control nzHasFeedback>
- <nz-input formControlName="{{row.key}}_level_increment_2" maxlength="20" nzDisabled="{{ !f.value[row.key+'_enable'] }}"
- validateGreater></nz-input>
- </div>
- </div>
- </td>
- <td>
- <div nz-form-item>
- <div nz-form-control nzHasFeedback>
- <nz-input formControlName="{{row.key}}_level_increment_3" maxlength="20" nzDisabled="{{ !f.value[row.key+'_enable'] }}"></nz-input>
- </div>
- </div>
- </td>
- <td>
- <div nz-form-item>
- <div nz-form-control nzHasFeedback>
- <nz-input formControlName="{{row.key}}_level_degression_1" maxlength="20" nzDisabled="{{ !f.value[row.key+'_enable'] }}"></nz-input>
- </div>
- </div>
- </td>
- <td>
- <div nz-form-item>
- <div nz-form-control nzHasFeedback>
- <nz-input formControlName="{{row.key}}_level_degression_2" maxlength="20" nzDisabled="{{ !f.value[row.key+'_enable'] }}"></nz-input>
- </div>
- </div>
- </td>
- <td>
- <div nz-form-item>
- <div nz-form-control nzHasFeedback>
- <nz-input formControlName="{{row.key}}_level_degression_3" maxlength="20" nzDisabled="{{ !f.value[row.key+'_enable'] }}"></nz-input>
- </div>
- </div>
- </td>
+ </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="������������">
- <label nz-checkbox formControlName="mode_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>
+ <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>
- <div nz-form-control nz-col [nzSpan]="12" nzHasFeedback>
- <nz-select formControlName="mode_level{{i}}" [nzMode]="'multiple'" [nzPlaceHolder]="'������ ������������'" [nzNotFoundContent]="'������������'"
- nzDisabled="{{ !f.value['mode_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>
- </div>
- </nz-card>
- <footer-toolbar ng-content = '������������' errorCollect>
+ </nz-card>
+ <footer-toolbar errorCollect>
+ <span [ngStyle]="{'color':'red','width':'300px','margin-right':'40px'}">{{ errorMessage }}</span>
<label>���������������</label>
<span [ngStyle]="{'font-size': '16px','font-weight': 'bold','margin-right':'30px'}">{{ organization.name }}</span>
<button nz-button type="button" (click)="backToList()">������</button>
@@ -127,5 +100,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 100d3a0..3d385de 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,14 +1,16 @@
+import { NzMessageService } from 'ng-zorro-antd';
import { filter } from 'rxjs/operators';
import { HttpClient } from '@angular/common/http';
-import { FormGroup, FormBuilder, FormControl, Validators } from '@angular/forms';
+import { FormGroup, FormBuilder, FormControl, Validators, FormArray } from '@angular/forms';
import { SensorsService } from '@business/services/http/sensors.service';
import { Grid, PageBean } from '@business/entity/grid';
-import { Organization } from '@business/entity/data';
+import { Organization, AlarmConfig, AlarmSensorLevel, AlarmConfigValue } from '@business/entity/data';
import { Component, OnInit, OnDestroy } from '@angular/core';
import { OrganizationService } from '@business/services/http/organization.service';
import { _HttpClient } from '@delon/theme';
import { AlarmConfigService } from '@business/services/http/alarm-config.service';
import { AlarmStyle } from '@business/enum/types.enum';
+import { patterns } from '@business/enum/patterns.enum';
@Component({
selector: 'app-organization-config',
@@ -20,15 +22,17 @@
ngOnDestroy(): void {
this.backToList();
}
- private organization:Organization;
+ private organization: Organization;
grid: Grid<object> = new Grid<object>(null);
validateForm: FormGroup;
constructor(
private organizationService: OrganizationService,
private sensorsService: SensorsService,
- private alarmConfigService:AlarmConfigService,
+ private alarmConfigService: AlarmConfigService,
private formBuilder: FormBuilder,
- private http: _HttpClient
+ private http: _HttpClient,
+ public msgSrv: NzMessageService
+
) {
this.organization = this.organizationService.data;
}
@@ -36,126 +40,226 @@
ngOnInit() {
this.load();
}
- load(reload: boolean = false) {
+ load(reload: boolean = false) {
if (reload) {
- this.grid.pageIndex = 1 ;
+ this.grid.pageIndex = 1;
}
- // TODO
// ������������������ExpressionChangedAfterItHasBeenCheckedError
- // setTimeout(() => {
- // this.grid.loading = true;
- // }, 1);
- let pageBean = this.organizationService.config.pageBean;//
- let resultBean = this.organizationService.config.resultBean;
- resultBean = resultBean == null?{} : resultBean;
- if (pageBean != null && pageBean.data != null) {
- this.grid.initData(pageBean);
- this.grid.refreshStatus();
+ setTimeout(() => {
+ this.grid.loading = true;
+ }, 1);
+ let pageBean = this.organizationService.config.pageBean;
+ let resultBean = this.organizationService.config.resultBean;
+ resultBean = resultBean == null ? {} : resultBean;
+ if (pageBean != null && pageBean.data != null) {
+ this.grid.initData(pageBean);
+ let alarmConfig: AlarmConfig = null;
+ if (resultBean == null || resultBean.data == null) {
+ alarmConfig = this.alarmConfigService.generateAlarmConfig(pageBean.data);
+ } else {
+ // ������ ������ ���������
+ alarmConfig = this.alarmConfigService.generateAlarmConfig(pageBean.data, resultBean.data);
+ }
+ const alarmConfigValue = alarmConfig.value;
+
+ const alarmLevels = alarmConfigValue.alarmLevels;
+ let alarmLevelsGroupsConfig = {};
+ Object.keys(alarmLevels).forEach(key => {
+
+ let increment = alarmLevels[key].increment;
+ increment = increment == null || increment.length != 3 ? [0, 0, 0] : increment;
+ const incrementArray = this.formBuilder.array([
+ [increment[0], Validators.pattern(patterns.num)],
+ [increment[1], Validators.pattern(patterns.num)],
+ [increment[2], Validators.pattern(patterns.num)]
+ ]);
+ let degression = alarmLevels[key].degression;
+ degression = degression == null || degression.length != 3 ? [0, 0, 0] : degression;
+ const degressionArray =
+ this.formBuilder.array([
+ [degression[0], Validators.pattern(patterns.num)],
+ [degression[1], Validators.pattern(patterns.num)],
+ [degression[2], Validators.pattern(patterns.num)]
+ ]);
+ const alarmSensorGroup = this.formBuilder.group(
+ {
+ enable: [alarmLevels[key].enable],
+ increment: incrementArray,
+ degression: degressionArray,
+ }, { validator: this.alarmLevelValidator }
+ );
+ alarmSensorGroup.get('enable').valueChanges.subscribe(
+ (value: any) => {
+ if (this._allCheckTriggers <= 0) {
+ this.refreshIndeterminate();
+ } else {
+ this._allCheckTriggers--;
+ }
+ }
+ );
+ alarmLevelsGroupsConfig[key] = alarmSensorGroup;
+ });
+ this.alarmModes.push(
+ { label: '������', value: AlarmStyle.email, disabled: false },
+ { label: '������', value: AlarmStyle.sms, disabled: false },
+ { label: '������', value: AlarmStyle.voice, disabled: false },
+ { label: '������', value: AlarmStyle.weixin, disabled: false }
+ );
+ const alarmMode = alarmConfigValue.alarmMode;
+ this.validateForm = this.formBuilder.group({
+ alarmLevels: this.formBuilder.group(alarmLevelsGroupsConfig),
+ alarmMode: this.formBuilder.group(
+ {
+ enable: [alarmMode.enable],
+ level1: [alarmMode.level1],
+ level2: [alarmMode.level2],
+ level3: [alarmMode.level3]
+ }
+ ),
+ '_id':alarmConfig.id,
+ '_allChecked': []
+ });
+ this.validateForm.statusChanges.subscribe(
+ item => {
+ this.setErrorMessage();
+ }
+ )
+ this.refreshIndeterminate();
+ }
+ // ������������������ExpressionChangedAfterItHasBeenCheckedError
setTimeout(() => {
this.grid.loading = false;
}, 1);
- let validates = {};
- let data = resultBean.data == null ?{}:resultBean.data;
- const value = data['value'] == null ? {} : data['value'];
- let alarmLevels = value['alarmLevels'];
- alarmLevels = alarmLevels==null ? {} : alarmLevels;
- // ������������
- const level_num = 3;
- this.grid.data.forEach(
- (sensor: object) => {
- const sensorLevel = alarmLevels[sensor['key']] == null ?{}:alarmLevels[sensor['key']];
- const enable_key = sensor['key'] + '_enable';
- const enable_value = sensorLevel['enable'] == null ? false : sensorLevel['enable'] == 1;
- validates[enable_key] = enable_value;
- const increments:number[] = sensorLevel['increment'];
- const degression:number[] = sensorLevel['degression'];
- for(let i=0;i<level_num;i++){
- const increment_key = sensor['key']+'_level_increment_'+(i+1);
- if( increments == null || increments.length == 0 ){
- validates[increment_key] = [null,[Validators.pattern('^\\d+(\\.\\d+)?$')]];
- }else{
- const increment_value = increments.length>i ? increments[i]:null ;
- validates[increment_key] = [increment_value,[Validators.pattern('^\\d+(\\.\\d+)?$')]];
- }
- const degression_key = sensor['key']+'_level_degression_'+(i+1);
- if( degression == null || degression.length == 0 ){
- validates[degression_key] = [null,[Validators.pattern('^\\d+(\\.\\d+)?$')]];
- }else{
- const degression_value = degression.length>i ? degression[i]:null ;
- validates[degression_key] = [degression_value,[Validators.pattern('^\\d+(\\.\\d+)?$')]];
- }
- }
-
- }
- );
- validates['_allChecked'] = [this.grid.allChecked];
- //������������������
- let alarmMode = value['alarmMode'];
- alarmMode = alarmMode==null ? {}: alarmMode;
- this.alarmModes.push(
- {label:'������',value:AlarmStyle.email, disabled: false},
- {label:'������',value:AlarmStyle.sms, disabled: false},
- {label:'������',value:AlarmStyle.voice, disabled: false},
- {label:'������',value:AlarmStyle.weixin, disabled: false}
- );
- validates['mode_enable'] = [alarmMode['enable']];
- for(let i = 0; i<level_num; i++){
- const n = i+1;
- validates['mode_level'+n] = [AlarmStyle[alarmMode['level'+n]]];
- }
- this.validateForm = this.formBuilder.group(validates);
- this.grid.loading = false;
- this.enableKeys = Object.keys(this.validateForm.value).filter(
- (key: string) => {
- return key.endsWith('_enable');
- }
- );
- this.enableKeys.forEach(
- (key: string) => {
- this.validateForm.controls[key].valueChanges.subscribe(
- (value: any) => {
- if(this._allCheckTriggers <= 0){
- this.refreshIndeterminate();
- } else {
- this._allCheckTriggers--;
- }
- }
- );
- }
- );
- this.refreshIndeterminate();
- }
-
}
- alarmModes: {label:string,value:AlarmStyle,disabled: boolean} [] = [];
-
+ alarmModes: { label: string, value: AlarmStyle, disabled: boolean }[] = [];
backToList() {
this.organizationService.handle = 'list';
this.organizationService.title = '������������';
}
- enableKeys: string [];
- indeterminate: boolean;
- checkAll(param){
- this._allCheckTriggers = 0;
- this.enableKeys.forEach(
- (key: string) => {
- this._allCheckTriggers++;
- this.validateForm.controls[key].setValue(param);
- }
- );
- this.refreshIndeterminate();
- }
- private _allCheckTriggers: number = 0;
- refreshIndeterminate(){
- const allChecked = this.enableKeys.every(key => this.validateForm.controls[key].value);
- const allUnChecked = this.enableKeys.every(key => !this.validateForm.controls[key].value);
- this.indeterminate = (!allChecked) && (!allUnChecked);
- }
- save($event, value, valid) {
+ indeterminate: boolean;
+ checkAll(param) {
+ const keys = this.grid.data.map(
+ item => {
+ return item['key'];
+ }
+ );
+ this._allCheckTriggers = 0;
+ keys.forEach(
+ (key: string) => {
+ this._allCheckTriggers++;
+ this.validateForm.get('alarmLevels.' + key + '.enable').setValue(param);
+ }
+ );
+ this.refreshIndeterminate();
+ }
+ private _allCheckTriggers: number = 0;
+ refreshIndeterminate() {
+ const keys = this.grid.data.map(
+ item => {
+ return item['key'];
+ }
+ );
+ const allChecked = keys.every(key => this.validateForm.get('alarmLevels.' + key + '.enable').value);
+ const allUnChecked = keys.every(key => !this.validateForm.get('alarmLevels.' + key + '.enable').value);
+ this.indeterminate = (!allChecked) && (!allUnChecked);
+ }
+ save($event, value, valid) {
$event.preventDefault();
if (valid) {
-
-
+ const data:AlarmConfig = {
+ id:value._id,
+ organizationId:this.organization.id,
+ value:value
+ }
+ this.alarmConfigService.save(data).subscribe(
+ result => {
+ if(result!=null&&result.code==1){
+ this.msgSrv.success(this.organization.name+' ���������������');
+ this.backToList();
+ }
+ }
+ );
}
- }
+ }
+
+ setErrorMessage(){
+ this.errorMessage = '';
+ const errObj = this.getLastError(this.validateForm);
+ if(errObj!=null&&Object.keys(errObj).length>0){
+ if(errObj['increment']){
+ this.errorMessage = '������ ������ ������ ������������';
+ } else if(errObj['degression']){
+ this.errorMessage = '������������ ������������ ������������ ������������';
+ } else if(errObj['pattern']!=null&&errObj['pattern']['requiredPattern'] == '^'+patterns.num.toString()+'$'){
+ this.errorMessage = '���������������������';
+ }
+ }
+}
+ errorMessage:string = '';
+ 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);
+ }
+ 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;
+ };
+ getLastError(control:FormGroup|FormArray){
+ if(control.errors!=null){
+ return control.errors;
+ }else{
+ const controls = Object.values(control.controls);
+ for(let i = controls.length-1;i>=0;i--){
+ const c = controls[i];
+ if(c.errors!=null){
+ return c.errors;
+ }else if(c instanceof FormArray||c instanceof FormGroup){
+ const result = this.getLastError(c);
+ if(result != null) {
+ return result;
+ }
+ }
+ }
+ }
+ }
}
diff --git a/src/app/routes/systems/organization/organization.component.ts b/src/app/routes/systems/organization/organization.component.ts
index d417498..474aac0 100644
--- a/src/app/routes/systems/organization/organization.component.ts
+++ b/src/app/routes/systems/organization/organization.component.ts
@@ -10,7 +10,6 @@
})
export class OrganizationComponent implements OnInit {
ngOnInit(): void {
-
}
constructor(
private organizationService: OrganizationService
diff --git a/src/app/routes/systems/systems.module.ts b/src/app/routes/systems/systems.module.ts
index 257790b..eae0bff 100644
--- a/src/app/routes/systems/systems.module.ts
+++ b/src/app/routes/systems/systems.module.ts
@@ -1,4 +1,3 @@
-import { EqualValidator } from '@business/validators/equal-validator.directive';
import { FormBuilder } from '@angular/forms';
import { _HttpClient } from '@delon/theme';
import { Component, OnInit } from '@angular/core';
--
Gitblit v1.8.0