| | |
| | | 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 { PageBean } from '@business/entity/grid'; |
| | | 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 { 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', |
| | |
| | | styles: [] |
| | | }) |
| | | export class DeviceEditComponent implements OnInit { |
| | | public monitorPoints:any [] = []; |
| | | public deviceVersions:any [] = []; |
| | | public operateUsers:any [] = []; |
| | | public monitorPoints: any [] = []; |
| | | public professions: any [] = []; |
| | | 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 monitorPointService: MonitorPointService, |
| | | private versionService: VersionService, |
| | | private operateUserService: OperateUserService, |
| | | private deviceService: DeviceService, |
| | | private http: _HttpClient, |
| | | private organizationService: OrganizationService |
| | | ) { } |
| | | data:Device; |
| | | validateForm:FormGroup; |
| | | 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); |
| | | this.operateUserChange(null); |
| | | this.professionChange(); |
| | | if (this.data.createTime == null) { |
| | | this.data.createTime = new Date().getTime(); |
| | | } |
| | | const validates:Device = { |
| | | name:[data.name,[Validators.required]], |
| | | mac:[data.mac], |
| | | deviceVersionId:[data.deviceVersionId], |
| | | monitorPointId:[data.monitorPointId], |
| | | operateUserId:[data.operateUserId], |
| | | address:[data.address], |
| | | id:[data.id], |
| | | longitude:[data.longitude], |
| | | latitude:[data.latitude], |
| | | createTime:[data.createTime], |
| | | installTime:[data.installTime] |
| | | 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]], |
| | | deviceVersionId: [data.deviceVersionId, [Validators.required]], |
| | | monitorPointId: [data.monitorPointId, [Validators.required]], |
| | | professionId: [data.professionId], |
| | | operateUserId: [data.operateUserId], |
| | | address: [data.address], |
| | | id: [data.id], |
| | | longitude: [data.longitude], |
| | | latitude: [data.latitude], |
| | | createTime: [data.createTime], |
| | | installTime: [data.installTime] |
| | | }; |
| | | 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); |
| | | }); |
| | | } |
| | | close(){ |
| | | 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(); |
| | | if(valid){ |
| | | save($event, value, valid) { |
| | | const _prevent = !!$event ? $event.preventDefault() : null ; |
| | | if (valid) { |
| | | this.isSaving = true; |
| | | this.data = value; |
| | | this.subject.next( this ); |
| | | }else{ |
| | | } else { |
| | | ToolsService.markAsDirty(this.validateForm); |
| | | } |
| | | } |
| | | monitorPointChange(text){ |
| | | const pageBean: PageBean = {pageIndex: 0, pageSize: 20}; |
| | | this.monitorPointService.getPagingList(pageBean, text).subscribe( |
| | | professionChange() { |
| | | this.http.get<ResultBean<any[]>>(environment.SERVER_BASH_URL + 'profession/getall').subscribe( |
| | | result => { |
| | | if (!!result.code) { |
| | | this.professions = result.data; |
| | | } |
| | | } |
| | | ); |
| | | } |
| | | 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) { |
| | | if (res != null && res.data != null) { |
| | | this.monitorPoints = res.data; |
| | | } |
| | | const monitorPoint = this.data.monitorPoint; |
| | |
| | | return item.id === monitorPoint.id; |
| | | } |
| | | ); |
| | | if ( hasSelectedValue ) { |
| | | if ( !hasSelectedValue ) { |
| | | this.monitorPoints.push(monitorPoint); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | ); |
| | | } |
| | | deviceVersionChange(text){ |
| | | deviceVersionChange(text) { |
| | | const pageBean: PageBean = {pageIndex: 0, pageSize: 20}; |
| | | this.versionService.getPagingList(pageBean, text).subscribe( |
| | | (res: PageBean) => { |
| | | if (res != null && res.data != null) { |
| | | if (res != null && res.data != null) { |
| | | this.deviceVersions = res.data; |
| | | } |
| | | const deviceVersion = this.data.deviceVersion; |
| | |
| | | return item.id === deviceVersion.id; |
| | | } |
| | | ); |
| | | if ( hasSelectedValue ) { |
| | | this.monitorPoints.push(deviceVersion); |
| | | } |
| | | if ( !hasSelectedValue ) { |
| | | this.deviceVersions.push(deviceVersion); |
| | | } |
| | | } |
| | | } |
| | | ); |
| | | } |
| | | operateUserChange(text){ |
| | | operateUserChange(text) { |
| | | const pageBean: PageBean = {pageIndex: 0, pageSize: 20}; |
| | | this.operateUserService.getPagingList(pageBean, text).subscribe( |
| | | (res: PageBean) => { |
| | | if (res != null && res.data != null) { |
| | | if (res != null && res.data != null) { |
| | | this.operateUsers = res.data; |
| | | } |
| | | const operateUser = this.data.operateUser; |
| | |
| | | return item.id === operateUser.id; |
| | | } |
| | | ); |
| | | if ( hasSelectedValue ) { |
| | | this.monitorPoints.push(operateUser); |
| | | } |
| | | if ( !hasSelectedValue ) { |
| | | this.operateUsers.push(operateUser); |
| | | } |
| | | } |
| | | } |
| | | ); |
| | | } |
| | | 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); |
| | | } |
| | | } |