From 309d1f9d649daa08bb9b068af014749f6d4a5bce Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Fri, 06 Jul 2018 14:00:45 +0800
Subject: [PATCH] 设备和监控点父页面 筛选条件不予 编辑页面联动
---
src/app/routes/devices/basic-info/device-edit/device-edit.component.ts | 112 +++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 95 insertions(+), 17 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 3fa4dfb..2c35a62 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
@@ -3,15 +3,16 @@
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';
-import { _Validators } from '@delon/abc';
+import { Device, MonitorPoint} from '@business/entity/data';
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';
+import { OrganizationService } from '@business/services/http/organization.service';
@Component({
selector: 'app-device-edit',
@@ -24,17 +25,28 @@
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,
private monitorPointService: MonitorPointService,
private versionService: VersionService,
private operateUserService: OperateUserService,
- private http:_HttpClient
+ private deviceService: DeviceService,
+ 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);
+ }
const data = this.data;
this.monitorPointChange(null);
this.deviceVersionChange(null);
@@ -43,12 +55,19 @@
if (this.data.createTime == null) {
this.data.createTime = new Date().getTime();
}
- debugger;
+ 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]],
- deviceVersionId: [data.deviceVersionId],
- monitorPointId: [data.monitorPointId],
+ mac: [data.mac, [Validators.required], [this.macAsyncValidator]],
+ deviceVersionId: [data.deviceVersionId, [Validators.required]],
+ monitorPointId: [data.monitorPointId, [Validators.required]],
professionId: [data.professionId],
operateUserId: [data.operateUserId],
address: [data.address],
@@ -61,12 +80,41 @@
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 => {
+ // ���������������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 => {
+ if (!!res.code && !!res.data) {
+ observer.next({ error: true, duplicated: true });
+ } else {
+ observer.next(null);
+ }
+ observer.complete();
+ }
+ );
+ }
+
+ });
}
close() {
this.subject.destroy();
}
save($event, value, valid) {
- $event.preventDefault();
+ const _prevent = !!$event ? $event.preventDefault() : null ;
if (valid) {
this.isSaving = true;
this.data = value;
@@ -75,19 +123,24 @@
ToolsService.markAsDirty(this.validateForm);
}
}
- professionChange(){
- this.http.get<ResultBean<any[]>>(environment.SERVER_BASH_URL+"profession/getall").subscribe(
+ professionChange() {
+ this.http.get<ResultBean<any[]>>(environment.SERVER_BASH_URL + 'profession/getall').subscribe(
result => {
- if(!!result.code){
- debugger;
+ if (!!result.code) {
this.professions = result.data;
}
}
);
}
- 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})
+ .andLike({name: 'name', value: text});
+ this.monitorPointService.getPageByExample(pageBean, example).subscribe(
(res: PageBean) => {
if (res != null && res.data != null) {
this.monitorPoints = res.data;
@@ -148,4 +201,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