From 45d40501534b95bfd4a8f744b560651a87849fa4 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Fri, 05 Jan 2018 11:21:37 +0800
Subject: [PATCH] 监控点
---
src/app/routes/devices/devices.module.ts | 8
src/app/routes/systems/organization/organization.service.ts | 3
src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.html | 3
src/app/routes/devices/version/version.service.ts | 3
src/app/routes/systems/organization/organization.component.ts | 15 ++
src/app/core/entity/grid.ts | 2
src/app/routes/devices/monitor-point/monitor-point.component.ts | 168 +++++++++++++++++++++++++++
src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.ts | 15 ++
src/app/routes/devices/monitor-point/monitor-point.component.html | 69 +++++++++++
src/app/routes/devices/monitor-point/monitor-point.service.ts | 35 +++++
10 files changed, 309 insertions(+), 12 deletions(-)
diff --git a/src/app/core/entity/grid.ts b/src/app/core/entity/grid.ts
index d380735..3a1ac82 100644
--- a/src/app/core/entity/grid.ts
+++ b/src/app/core/entity/grid.ts
@@ -13,7 +13,7 @@
sort?: string;
isSort?: boolean;
type?: DataType;
- format?: Function;
+ format?: (value: any, col: Column, row: any) => string;
}
export interface DataType {
name: Types;
diff --git a/src/app/routes/devices/devices.module.ts b/src/app/routes/devices/devices.module.ts
index 71b1b01..e65f3b7 100644
--- a/src/app/routes/devices/devices.module.ts
+++ b/src/app/routes/devices/devices.module.ts
@@ -1,3 +1,4 @@
+import { MonitorPointService } from 'app/routes/devices/monitor-point/monitor-point.service';
import { ToolsService } from './../../core/services/tools.service';
import { NgModule } from '@angular/core';
@@ -13,8 +14,9 @@
import { PipeModule } from '@core/pipe/pipe.module';
import { FormBuilder } from '@angular/forms';
import { VersionEditComponent } from './version/version-edit/version-edit.component';
+import { MonitorPointEditComponent } from './monitor-point/monitor-point-edit/monitor-point-edit.component';
-const COMPONENTS_NOROUNT = [ VersionEditComponent ];
+const COMPONENTS_NOROUNT = [ VersionEditComponent, MonitorPointEditComponent ];
const routes: Routes = [
{
@@ -39,9 +41,9 @@
BasicInfoComponent,
VersionComponent,
MonitorPointComponent,
- ...COMPONENTS_NOROUNT
+ ...COMPONENTS_NOROUNT
],
- providers: [ToolsService, VersionService, _HttpClient, FormBuilder],
+ providers: [ToolsService, VersionService, MonitorPointService, _HttpClient, FormBuilder],
entryComponents: COMPONENTS_NOROUNT
})
export class DevicesModule { }
diff --git a/src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.html b/src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.html
new file mode 100644
index 0000000..ad9f119
--- /dev/null
+++ b/src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.html
@@ -0,0 +1,3 @@
+<p>
+ monitor-point-edit works!
+</p>
diff --git a/src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.ts b/src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.ts
new file mode 100644
index 0000000..a99f4d1
--- /dev/null
+++ b/src/app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-monitor-point-edit',
+ templateUrl: './monitor-point-edit.component.html',
+ styles: []
+})
+export class MonitorPointEditComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit() {
+ }
+
+}
diff --git a/src/app/routes/devices/monitor-point/monitor-point.component.html b/src/app/routes/devices/monitor-point/monitor-point.component.html
index 7fd487b..b580411 100644
--- a/src/app/routes/devices/monitor-point/monitor-point.component.html
+++ b/src/app/routes/devices/monitor-point/monitor-point.component.html
@@ -1,3 +1,66 @@
-<p>
- monitor-point works!
-</p>
+<pro-header [title]="grid.title"></pro-header>
+<nz-card [nzBordered]="false">
+ <div class="mb-md">
+ <button nz-button (click)="addOrModify()" [nzType]="'primary'" [nzSize]="'large'">
+ <i class="anticon anticon-plus"></i><span>������</span>
+ </button>
+ <ng-container *ngIf="grid.selectedIndexs.length > 0">
+ <button nz-button [nzSize]="'large'" (click)="deleteSelected()">������������</button>
+ </ng-container>
+ <nz-input [ngStyle]="{'width': '280px','float':'right'}" [(ngModel)]="queryMap.value" name="" [nzPlaceHolder]="queryMap.text"
+ (keyup)="queryTextChanged($event)" (change)="queryTextChanged($event)" ></nz-input>
+ </div>
+ <div class="mb-md">
+ <nz-alert *ngIf="grid.selectedIndexs.length > 0" [nzType]="'info'" [nzShowIcon]="true">
+ <span alert-body>
+ ���������<strong class="text-primary">{{grid.selectedIndexs.length}}</strong>���
+ </span>
+ </nz-alert>
+ </div>
+ <nz-table #nzTable
+ [nzAjaxData]="grid.data"
+ [nzTotal]="grid.total"
+ [(nzPageIndex)]="grid.pageIndex"
+ [(nzPageSize)]="grid.pageSize"
+ [nzLoading]="grid.loading"
+ [nzShowTotal]="true"
+ (nzPageIndexChange)="load()">
+ <thead nz-thead>
+ <tr>
+ <th nz-th [nzCheckbox]="true">
+ <label nz-checkbox [(ngModel)]="grid.allChecked" [nzIndeterminate]="grid.indeterminate" (ngModelChange)="grid.checkAll($event)"></label>
+ </th>
+ <th nz-th *ngFor="let col of grid.columns"
+ [ngStyle]="{'width':col.width,'text-align':col['align'] === undefined?'left':col.align}" >
+ <span>{{ col.text }}</span>
+ <nz-table-sort *ngIf="col.isSort" [(nzValue)]="col.sort" (nzValueChange)="sort(col.name,$event)"></nz-table-sort>
+ </th>
+ <th nz-th><span>������</span></th>
+ </tr>
+ </thead>
+ <tbody nz-tbody>
+ <tr nz-tbody-tr *ngFor="let row of nzTable.data">
+ <td nz-td [nzCheckbox]="true">
+ <label nz-checkbox [(ngModel)]="row.checked" (ngModelChange)="grid.refreshStatus($event)"></label>
+ </td>
+ <td nz-td *ngFor="let col of grid.columns"
+ [ngStyle]="{'width':col.width,'text-align':col['align'] === undefined?'left':col.align}">
+ <span [ngSwitch]="col.type">
+ <!-- ������������������������������������ -->
+ <span *ngSwitchDefault> {{ row[col.name]|tyepHandle:col:row }} </span>
+ <!-- ������������������������������������ -->
+ </span>
+ </td>
+ <td nz-td>
+ <a (click)="addOrModify(row)">������</a>
+ <span nz-table-divider></span>
+ <nz-popconfirm [nzTitle]="'���������������������������?'" [nzOkText]="'Yes'" [nzCancelText]="'No'" (nzOnConfirm)="delete(row.id)" >
+ <a nz-popconfirm>������</a>
+ </nz-popconfirm>
+ </td>
+ </tr>
+ </tbody>
+ </nz-table>
+ </nz-card>
+
+
diff --git a/src/app/routes/devices/monitor-point/monitor-point.component.ts b/src/app/routes/devices/monitor-point/monitor-point.component.ts
index 9ada8ef..e1a6b84 100644
--- a/src/app/routes/devices/monitor-point/monitor-point.component.ts
+++ b/src/app/routes/devices/monitor-point/monitor-point.component.ts
@@ -1,5 +1,33 @@
+import { DataType, AreaNames } from './../../../core/entity/grid';
+import { Version, ValueTransformer } from '@angular/compiler/src/util';
+import { Subject } from 'rxjs/Subject';
+import { ToolsService } from '@core/services/tools.service';
import { Component, OnInit } from '@angular/core';
+import { NzMessageService, NzModalService } from 'ng-zorro-antd';
+import { ModalHelper } from '@delon/theme';
+import { HttpClient } from '@angular/common/http';
+import { environment } from '../../../../environments/environment';
+import { DateService } from '@core/services/date.service';
+import { VersionService } from 'app/routes/devices/version/version.service';
+import { Types } from '@core/enum/types.enum';
+import { Column, Grid, PageBean } from '@core/entity/grid';
+import { filter } from 'rxjs/operators/filter';
+import { MonitorPointEditComponent } from 'app/routes/devices/monitor-point/monitor-point-edit/monitor-point-edit.component';
+import { MonitorPointService } from 'app/routes/devices/monitor-point/monitor-point.service';
+interface MonitorPoint {
+ address?: any|Column;
+ areaCode?: any|Column;
+ cityCode?: any|Column;
+ description?: any|Column;
+ id?: any|Column;
+ isDelete?: any|Column;
+ latitude?: any|Column;
+ longitude?: any|Column;
+ name?: any|Column;
+ organizationId?: any|Column;
+ provinceCode?: any|Column;
+}
@Component({
selector: 'app-monitor-point',
templateUrl: './monitor-point.component.html',
@@ -7,9 +35,147 @@
})
export class MonitorPointComponent implements OnInit {
- constructor() { }
+
+ private organization: MonitorPoint;
+ grid: Grid<MonitorPoint> = new Grid(null);
+ queryMap = { text: '���������������', value: ''};
+ queryTextStream: Subject<string> = new Subject<string>();
+ private initPage() {
+ this.organization = {
+ name: {
+ text: '������',
+ width: '120px'
+ }
+ };
+ this.grid.title = '������������';
+ this.grid.setColumns(this.organization);
+ this.grid.pageSize = 10;
+ }
+ constructor(
+ private monitorPointService: MonitorPointService,
+
+ private confirmServ: NzModalService,
+ public msgSrv: NzMessageService,
+ private modalHelper: ModalHelper,
+ ) {}
ngOnInit() {
+ this.initPage();
+ this.queryTextStream
+ .debounceTime(500)
+ .distinctUntilChanged()
+ .subscribe(queryText => {
+ this.load();
+ });
+ }
+ queryTextChanged($event) {
+ this.queryTextStream.next(this.queryMap.value);
+ }
+ load(reload: boolean = false) {
+ if (reload) {
+ this.grid.pageIndex = 1 ;
+ }
+ // ������������������ExpressionChangedAfterItHasBeenCheckedError
+ setTimeout(() => {
+ this.grid.loading = true;
+ }, 1);
+ this.monitorPointService.getPagingList(this.grid, this.queryMap.value).subscribe(
+ (res: PageBean) => {
+ this.grid.loading = true;
+ if (res != null && res.data != null) {
+ this.grid.initData(res);
+ this.grid.refreshStatus();
+ setTimeout(() => {
+ this.grid.loading = false;
+ }, 1);
+ }
+ }
+ );
+ }
+
+// rowData���null���������������
+ addOrModify(d) {
+ const data = {};
+ if ( d != null) {
+ Object.assign(data, d);
+ }
+ const cols = this.organization;
+ this.modalHelper.static(MonitorPointEditComponent, { cols , data }).subscribe(
+ ( ret: { data: any, close: Function} ) => {
+ // ������������
+ if (ret.data['index'] != null ) {
+ const index: number = ret.data['index'] ;
+ const origData = this.grid.getData()[index];
+ const isModified = Object.keys(origData).some(
+ (key: string) => {
+ return ret.data[key] !== origData[key];
+ }
+ );
+ // ������������
+ if (!isModified) {
+ ret.close();
+ this.msgSrv.success('���������������������������');
+ return;
+ }
+ }
+ this.monitorPointService.save(ret.data).subscribe(
+ ( res: any) => {
+ if (res.code === 1) {
+ this.load();
+ ret.close();
+ this.msgSrv.success('���������������������');
+ }
+ }
+ );
+ });
+ }
+
+ delete(...id: number[]) {
+ this.monitorPointService.delete( ...id ).subscribe(
+ ( res: any) => {
+ if (res.code === 1) {
+ this.load();
+ this.msgSrv.success('���������������������������');
+ }
+ }
+ );
+ }
+
+ deleteSelected() {
+ this.confirmServ.confirm({
+ title: '������������',
+ content: '������������������������������������������������',
+ okText: '������',
+ cancelText: '������'
+ }).on('onOk', () => {
+ if (this.grid.selectedIndexs != null && this.grid.selectedIndexs.length > 0) {
+ const ids = this.grid.selectedIndexs.map(
+ (index: number) => {
+ const id = this.grid.data[index].id;
+ return Number.parseInt(id);
+ }
+ );
+ this.delete( ...ids );
+ }
+ });
+ }
+ sort(field: string, value: string) {
+ // ������������field
+ this.grid.sorts = this.grid.sorts.filter(
+ (fn: string) => {
+ return fn !== field;
+ }
+ );
+ // ������value������null������������������������������filed
+ if ( value != null ) {
+ this.grid.sorts.push(field);
+ }
+ this.load();
+ }
+
+ reset(ls: any[]) {
+ for (const item of ls) item.value = false;
+ this.load(true);
}
}
diff --git a/src/app/routes/devices/monitor-point/monitor-point.service.ts b/src/app/routes/devices/monitor-point/monitor-point.service.ts
new file mode 100644
index 0000000..89045e4
--- /dev/null
+++ b/src/app/routes/devices/monitor-point/monitor-point.service.ts
@@ -0,0 +1,35 @@
+import { ExampleService } from './../../../core/services/example.service';
+import { _HttpClient } from '@delon/theme';
+import { environment } from './../../../../environments/environment.prod';
+import { RouteConfigLoadStart } from '@angular/router';
+import { Injectable } from '@angular/core';
+import { equal } from 'assert';
+import { Observable } from 'rxjs/Observable';
+import { PageBean } from '@core/entity/grid';
+
+@Injectable()
+export class MonitorPointService {
+
+ private urls = {
+ edit: environment.SERVER_BASH_URL + '/monitor-point/page-list',
+ save: environment.SERVER_BASH_URL + '/monitor-point/add-or-modify',
+ delete: environment.SERVER_BASH_URL + '/monitor-point/delete-by-ids'
+};
+constructor(private http: _HttpClient) { }
+ public getPagingList(page: PageBean, queryText: string): Observable<PageBean> {
+ const example = new ExampleService();
+ if (queryText != null && queryText !== '') {
+ example.or().andLike({name: 'name', value: '%' + queryText + '%'});
+ }
+ const param: PageBean = {pageSize: page.pageSize, pageIndex: page.pageIndex,
+ queryParams: example.getSqlParam(), orderByClause: page.getOrderByClause()};
+ return this.http.get(this.urls.edit, param);
+}
+public save(data: any): Observable<any> {
+ return this.http.post(this.urls.save, data);
+}
+public delete(...ids: number[]): Observable<any> {
+ return this.http.post(this.urls.delete, ids);
+}
+
+}
diff --git a/src/app/routes/devices/version/version.service.ts b/src/app/routes/devices/version/version.service.ts
index c18123a..b94059e 100644
--- a/src/app/routes/devices/version/version.service.ts
+++ b/src/app/routes/devices/version/version.service.ts
@@ -1,6 +1,6 @@
import { ExampleService } from './../../../core/services/example.service';
import { _HttpClient } from '@delon/theme';
-import { environment } from './../../../../environments/environment.prod';
+import { environment } from './../../../../environments/environment';
import { RouteConfigLoadStart } from '@angular/router';
import { Injectable } from '@angular/core';
import { equal } from 'assert';
@@ -20,6 +20,7 @@
const example = new ExampleService();
if (queryText != null && queryText !== '') {
example.or().andLike({name: 'name', value: '%' + queryText + '%'});
+ example.or().andEqualTo({name: 'version', value: queryText});
}
const param: PageBean = {pageSize: page.pageSize, pageIndex: page.pageIndex,
queryParams: example.getSqlParam(), orderByClause: page.getOrderByClause()};
diff --git a/src/app/routes/systems/organization/organization.component.ts b/src/app/routes/systems/organization/organization.component.ts
index ef58ac4..5aa3a9a 100644
--- a/src/app/routes/systems/organization/organization.component.ts
+++ b/src/app/routes/systems/organization/organization.component.ts
@@ -51,7 +51,20 @@
},
rank: {
text: '������',
- width: '60px'
+ width: '80px',
+ format: (value: any, col: Column, row: any) => {
+ const item = [
+ { value: 0, label: '������' },
+ { value: 1, label: '������������' },
+ { value: 2, label: '���������' },
+ { value: 3, label: '������������' },
+ { value: 4, label: '���������' },
+ { value: 5, label: '���������' }
+ ].filter( (rankItem: {value: number, label: string }) => {
+ return rankItem.value === value;
+ });
+ return item != null && item.length === 1 ? item[0].label : '';
+ }
},
telephone: {
text: '������',
diff --git a/src/app/routes/systems/organization/organization.service.ts b/src/app/routes/systems/organization/organization.service.ts
index 1e75ef8..85b97ba 100644
--- a/src/app/routes/systems/organization/organization.service.ts
+++ b/src/app/routes/systems/organization/organization.service.ts
@@ -1,6 +1,6 @@
import { ExampleService } from './../../../core/services/example.service';
import { _HttpClient } from '@delon/theme';
-import { environment } from './../../../../environments/environment.prod';
+import { environment } from './../../../../environments/environment';
import { RouteConfigLoadStart } from '@angular/router';
import { Injectable } from '@angular/core';
import { equal } from 'assert';
@@ -20,7 +20,6 @@
const example = new ExampleService();
if (queryText != null && queryText !== '') {
example.or().andLike({name: 'name', value: '%' + queryText + '%'});
- example.or().andEqualTo({name: 'version', value: queryText});
}
const param: PageBean = {pageSize: page.pageSize, pageIndex: page.pageIndex,
queryParams: example.getSqlParam(), orderByClause: page.getOrderByClause()};
--
Gitblit v1.8.0