src/app/routes/report/report.component.ts | ●●●●● patch | view | raw | blame | history | |
src/app/routes/reports/demo/demo.component.html | ●●●●● patch | view | raw | blame | history | |
src/app/routes/reports/demo/demo.component.ts | ●●●●● patch | view | raw | blame | history |
src/app/routes/report/report.component.ts
@@ -2,7 +2,6 @@ import {NzMessageService, NzModalService} from 'ng-zorro-antd'; import {Component, OnInit, Injector} from '@angular/core'; import {HttpClient} from '@angular/common/http'; import {ActivatedRoute} from '@angular/router'; import * as echarts from 'echarts'; import * as $ from 'jquery'; @@ -69,7 +68,6 @@ constructor( public injector: Injector, public http: HttpClient, public activeRoute: ActivatedRoute, public msgSrv: NzMessageService ) { for (let index = 0; index < 30; index++) { @@ -78,7 +76,9 @@ } ngOnInit() { this.activeRoute.queryParams.subscribe(params => { const params = JSON.parse(sessionStorage.getItem("queryParams")); if (!!params) { localStorage.removeItem("queryParams"); const items = this.items = JSON.parse(params.items); const timeType = params.type; this.http.get(environment.SERVER_BASH_URL + 'report/compare', {params: params}).subscribe((res: any) => { @@ -136,6 +136,10 @@ } } }); }); } else { this.msgSrv.error("页面错误,将关闭该页面!"); setTimeout("window.close();",1000); } } } src/app/routes/reports/demo/demo.component.html
@@ -2,22 +2,26 @@ <nz-card [nzBordered]="false"> <form nz-form (ngSubmit)="reportQuery()" [nzLayout]="'inline'"> <div nz-row [nzGutter]="24"> <div nz-col [nzSpan]="6" class="mb-md"> <div nz-col [nzSpan]="5" class="mb-md"> <div nz-form-item class="d-flex"> <div nz-form-label> <label> 项 目</label> <label> 项 目</label> </div> <div nz-form-control class="flex-1"> <nz-select [nzMode]="'multiple'" [(ngModel)]="query.sensorKeys" name="sensorKeys" [nzSize]="'large'" [nzPlaceHolder]="'请选择'"> <nz-option *ngFor="let option of sensorOptions" [nzLabel]="option.name" [nzValue]="option.sensorKey + '-' + option.name + '-' + option.unit"></nz-option> </nz-select> <!-- <input nz-input /> <div> <ul id="sensorTree" class="ztree"></ul> </div> --> </div> </div> </div> <div nz-col [nzSpan]="6" class="mb-md"> <div nz-col [nzSpan]="5" class="mb-md"> <div nz-form-item class="d-flex"> <div nz-form-label> <label nz-form-item-required>类型</label> <label nz-form-item-required>类 型</label> </div> <div nz-form-control class="flex-1"> <nz-select [(ngModel)]="timeType" name="timeType" [nzSize]="'large'" [nzPlaceHolder]="'请选择'"> @@ -26,7 +30,7 @@ </div> </div> </div> <div nz-col [nzSpan]="6" class="mb-md"> <div nz-col [nzSpan]="5" class="mb-md"> <div nz-form-item class="d-flex"> <div nz-form-label> <label nz-form-item-required>图型</label> @@ -38,7 +42,7 @@ </div> </div> </div> <div nz-col [nzSpan]="6" class="mb-md" *ngIf="items.length < 2"> <div nz-col [nzSpan]="5" class="mb-md" *ngIf="items.length < 2"> <button nz-button type="button" [nzType]="'primary'" [nzSize]="'large'" (click)="addItem()"> <!-- <i class="anticon anticon-plus"></i> --> <i class="anticon anticon-plus-circle-o"></i> @@ -49,43 +53,56 @@ </div> <div nz-row [nzGutter]="24" *ngFor="let item of items;let i = index"> <div nz-col [nzSpan]="6" class="mb-md"> <div nz-col [nzSpan]="5" class="mb-md"> <div nz-form-item class="d-flex"> <div nz-form-label> <label nz-form-item-required>监测点</label> <label nz-form-item-required>省市区</label> </div> <div nz-form-control class="flex-1"> <nz-select [(ngModel)]="item.monitorPoint" name="monitorPoint{{item.id}}" nzAllowClear [nzPlaceHolder]="'请输入'" [nzFilter]="false" [nzSize]="'large'" (nzSearchChange)="searchChange($event,i)" [nzNotFoundContent]="'无法找到'" (ngModelChange)="monitorPointChange($event,i)" nzShowSearch> <nz-option *ngFor="let option of monitorPointOptions" [nzLabel]="option['name']" [nzValue]="option"> </nz-option> <nz-cascader [class.class123]="true" (nzLoad)="areaLazyLoad($event,i)" [nzPlaceHolder]="'选择 省/市/区'" (nzSelectionChange)="setAreasData($event,i)" [nzAllowClear]="false" [nzChangeOnSelect]="true" [ngModel]="item._areas" name="areasData{{item.id}}"> </nz-cascader> </div> </div> </div> <div nz-col [nzSpan]="5" class="mb-md"> <div nz-form-item class="d-flex"> <div nz-form-label> <label>监测点</label> </div> <div nz-form-control class="flex-1"> <nz-select [(ngModel)]="item.monitorPoint" name="monitorPoint{{item.id}}" nzAllowClear [nzPlaceHolder]="'选择 监测点'" [nzSize]="'large'" [nzNotFoundContent]="'无法找到'" (ngModelChange)="monitorPointChange($event,i)" nzShowSearch> <nz-option *ngFor="let option of item.monitorPointOptions" [nzLabel]="option['name']" [nzValue]="option"> </nz-option> </nz-select> </div> </div> </div> <div nz-col [nzSpan]="6" class="mb-md"> <div nz-col [nzSpan]="5" class="mb-md"> <div nz-form-item class="d-flex"> <div nz-form-label> <label> 设备</label> <label> 设 备</label> </div> <div nz-form-control class="flex-1"> <nz-select [(ngModel)]="item.device" name="mac{{item.id}}" [nzSize]="'large'" nzAllowClear [nzPlaceHolder]="'请选择'"> <nz-select [(ngModel)]="item.device" name="mac{{item.id}}" [nzSize]="'large'" [nzPlaceHolder]="'请选择 设备'" [nzNotFoundContent]="'无法找到'" nzShowSearch nzAllowClear> <nz-option *ngFor="let option of item.deviceOptions" [nzLabel]="option.name" [nzValue]="option" ></nz-option> </nz-select> </div> </div> </div> <div nz-col [nzSpan]="6" class="mb-md"> <div nz-col [nzSpan]="5" class="mb-md"> <div nz-form-item class="d-flex"> <div nz-form-label> <label nz-form-item-required>时间</label> </div> <div nz-form-control class="flex-1"> <nz-datepicker style="width: 100%;" [(ngModel)]="item.time" name="time{{item.id}}" [nzPlaceHolder]="'请选择'" [nzFormat]="timeType.format" [nzDisabledDate]="_disabledDate" <nz-datepicker style="width: 100%;" [(ngModel)]="item.time" name="time{{item.id}}" [nzPlaceHolder]="'请选择 时间'" [nzFormat]="timeType.format" [nzDisabledDate]="_disabledDate" [nzMode]="timeType.value=='hour'||timeType.value=='day'?'day':'month'" [nzShowTime]="timeType.value=='hour'?true:false" [nzSize]="'large'"></nz-datepicker> </div> </div> </div> <div nz-col [nzSpan]="6" class="mb-md" *ngIf="items.length > 1"> <div nz-col [nzSpan]="4" class="mb-md" *ngIf="items.length > 1"> <button nz-button type="button" [nzType]="'danger'" [nzSize]="'large'" (click)="items.splice(i, 1)"> <i class="anticon anticon-minus-circle-o dynamic-delete-button"></i> <span>删除查询条目</span> @@ -95,7 +112,9 @@ <div nz-row [nzGutter]="24"> <div nz-col [nzSpan]="6" class="mb-md"> <button nz-button type="submit" [nzType]="'primary'" [nzSize]="'large'">查询</button> <button nz-button type="submit" [nzType]="'primary'" [nzSize]="'large'"> <a target="_blank" [routerLink]="['/report']" (click)="reportQuery()">查询</a> </button> <!-- <button nz-button type="reset" [nzSize]="'large'" class="mx-sm" (click)="load()">重置</button> --> </div> </div> src/app/routes/reports/demo/demo.component.ts
@@ -3,7 +3,11 @@ import {NzMessageService} from 'ng-zorro-antd'; import {Component, OnInit} from '@angular/core'; import {HttpClient} from '@angular/common/http'; import {Router} from '@angular/router'; import {CascaderOption} from 'ng-zorro-antd/src/cascader/nz-cascader.component'; import {Organization} from '@business/entity/data'; import {ResultCode} from '@business/enum/types.enum'; import {ResultBean} from '@business/entity/grid'; import {AreacodeService} from '@business/services/http/areacode.service'; @Component({ selector: 'app-demo', @@ -25,19 +29,21 @@ {value: 'bar', label: '柱状图'}, {value: 'line', label: '折线图'} ]; public monitorPointOptions = []; public items = [{ id: 0, monitorPoint: null, device: null, time: null, deviceOptions: [] monitorPointOptions: [], deviceOptions: [], _areas: [] }]; constructor( public http: HttpClient, public dateSrv: DateService, public router: Router, private areacodeService: AreacodeService, public msgSrv: NzMessageService ) { this.timeType = this.typeOptions[1]; @@ -61,23 +67,70 @@ monitorPoint: null, device: null, time: null, deviceOptions: [] monitorPointOptions: [], deviceOptions: [], _areas: [] }); } searchChange(searchText, i) { if (searchText) { const query = encodeURI(searchText); if (query) { this.http.get(environment.SERVER_BASH_URL + '/monitor-point/list/' + query).subscribe((res: any) => { if (res.code === 0) { this.msgSrv.error(res.message); } else { this.monitorPointOptions = res.data; public areaLazyLoad(event: {option: CascaderOption, index: number, resolve: (children: CascaderOption[]) => void, reject: () => void}) { const index = event['index']; const option = event.option; switch (index) { case -1: this.areacodeService.getProvinces().subscribe( (res: {label: string, value: string}[]) => { event.resolve(res); } }); } ); break; case 0: this.areacodeService.getCities(option.value).subscribe( (res: {label: string, value: string}[]) => { event.resolve(res); } ); break; case 1: this.areacodeService.getAreas(option.value).subscribe( (res: {label: string, value: string}[]) => { event.resolve(res); } ); break; } } public setAreasData(areas: {label: string, value: string}[], i) { let isChanged = false; const _areas = this.items[i]._areas isChanged = areas.some((item, index: number) => { // this._areas[index] 为null 改变 监控点选项 return _areas.length < areas.length || !_areas[index] || _areas[index].value !== item.value; }); if (isChanged) { this.items[i]._areas = areas; this.items[i].monitorPoint = null; this.regionChange(i); } } regionChange(i) { let areaName = ''; switch (this.items[i]._areas.length) { case 1: areaName = 'provinceCode'; break; case 2: areaName = 'cityCode'; break; case 3: areaName = 'areaCode'; break; } this.http.get(environment.SERVER_BASH_URL + 'monitor-point/list/region', {params: {name: areaName, value: this.items[i]._areas.slice(-1).pop().value}}).subscribe((res: any) => { if (res.code === 0) { this.msgSrv.error(res.message); } else { this.items[i].monitorPointOptions = res.data; } }); } monitorPointChange(value, i) { @@ -105,16 +158,32 @@ for (let i = 0; i < this.items.length; i++) { let item = this.items[i]; let queryItem: any = {}; if (item.monitorPoint && item.time) { if ((!!item.time) && (item.monitorPointOptions.length > 0)) { for (var key in item) { if (item[key]) { queryItem[key] = item[key]; } } queryItem.monitorPointId = queryItem.monitorPoint.id; queryItem.monitorPointName = queryItem.monitorPoint.name; queryItem.monitorPointAddress = queryItem.monitorPoint.address; delete queryItem.monitorPoint; for (let i = 0; i < queryItem._areas.length; i++) { let region = queryItem._areas[i]; if (i == 0) { queryItem.provinceCode = region.value; } if (i == 1) { queryItem.cityCode = region.value; } if (i == 2) { queryItem.areaCode = region.value; } } delete queryItem._areas; if (queryItem.monitorPoint) { queryItem.monitorPointId = queryItem.monitorPoint.id; queryItem.monitorPointName = queryItem.monitorPoint.name; queryItem.monitorPointAddress = queryItem.monitorPoint.address; delete queryItem.monitorPoint; } delete queryItem.monitorPointOptions; if (queryItem.device) { queryItem.mac = queryItem.device.mac; queryItem.deviceName = queryItem.device.name; @@ -136,9 +205,10 @@ } query.items = JSON.stringify(queryItems); query.type = this.timeType.value; this.router.navigate(['report'], {queryParams: query}); sessionStorage.setItem("queryParams", JSON.stringify(query)); } else { this.msgSrv.error('请完善搜索项或删除查询条目'); return false; } } }