From 7ca521e4267b987270f6ccbb9a6c076aeb467d96 Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Wed, 04 Jul 2018 17:11:33 +0800 Subject: [PATCH] 设备,监控站 管理功能增强 --- src/app/routes/devices/version/version-edit/version-edit.component.ts | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 53 insertions(+), 5 deletions(-) diff --git a/src/app/routes/devices/version/version-edit/version-edit.component.ts b/src/app/routes/devices/version/version-edit/version-edit.component.ts index b6d02dd..273b62f 100644 --- a/src/app/routes/devices/version/version-edit/version-edit.component.ts +++ b/src/app/routes/devices/version/version-edit/version-edit.component.ts @@ -1,8 +1,11 @@ import { DeviceVersion } from '@business/entity/data'; import { Component, OnInit } from '@angular/core'; import { NzMessageService, NzModalSubject } from 'ng-zorro-antd'; -import { FormGroup, FormBuilder, Validators } from '@angular/forms'; - +import { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms'; +import { _HttpClient } from '@delon/theme'; +import { ResultBean } from '@business/entity/grid'; +import { Observable } from 'rxjs/Observable'; +import { ToolsService } from '@business/services/util/tools.service'; @Component({ selector: 'app-version-edit', templateUrl: './version-edit.component.html', @@ -10,29 +13,47 @@ }) export class VersionEditComponent implements OnInit { + private originalData: DeviceVersion = {}; cols: DeviceVersion; - data: DeviceVersion; isSaving = false; validateForm: FormGroup; constructor( private subject: NzModalSubject, - private formBuilder: FormBuilder + private formBuilder: FormBuilder, + private http: _HttpClient ) { } ngOnInit() { if (this.data.createTime == null) { this.data.createTime = new Date().getTime(); } + if (!this.data.version) { + this.setMaxVersionNo(); + } const validates: DeviceVersion = { name: [this.data.name, [Validators.required] ], - version: [this.data.version == null ? 1 : this.data.version, [Validators.required] ], + version: [this.data.version, [Validators.required], [this.versionAsyncValidator] ], createTime: [this.data.createTime, [Validators.required] ], description: [this.data.description] }; + Object.assign(this.originalData, this.data); this.validateForm = this.formBuilder.group( validates ); + } + private setMaxVersionNo() { + this.isSaving = true; + this.http.get('device-version/get-maxverno').subscribe( + (res: ResultBean<number>) => { + if (!!res.code && res.data) { + ToolsService.setValueToControl(this.validateForm, 'version', res.data + 1); + }else { + this.data.version = 1; + } + this.isSaving = false; + } + ); } close() { this.subject.destroy(); @@ -64,6 +85,33 @@ this.validate(); } } + versionAsyncValidator = (control: FormControl): any => { + return Observable.create(observer => { + if (!!control && !!control.value) { + // ���������������version��������� + if (!!this.originalData && this.originalData.version === control.value) { + observer.next(null); + observer.complete(); + } else { + this.isSaving = true; + this.http.get('device-version/get-byversion', {version: control.value} ).subscribe( + (res: ResultBean<any>) => { + if (!!res.code && !!res.data) { + observer.next({ error: true, duplicated: true }); + } else { + observer.next(null); + } + observer.complete(); + this.isSaving = false; + } + ); + } + }else { + observer.next(null); + observer.complete(); + } + }); + } validate() { for (const i in this.validateForm.controls) { this.validateForm.controls[ i ].markAsDirty(); -- Gitblit v1.8.0