src/app/app.component.ts
@@ -29,7 +29,7 @@ ngOnInit() { // 设置Token信息 this.tokenService.set({ token: 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsIm9pZCI6NSwibW9kZSI6IldlYiIsInNjb3BlcyI6WyJ0ZW1wIl0sImlzcyI6Imh0dHA6Ly9tb25pdG9yLjdkcmxiLmNvbSIsImlhdCI6MTUzMTMxNjU4MCwiZXhwIjoxNTM5MDkyNTgwfQ.tWE7AqGfLwwK-nO1FUveJ8xKqpxitqG1GdhKHp9JDyRPjNDYX7ocgkEw0W2G8hKL_tJIjjrQ1pc0zvCmLTJ-pg', token: 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsIm9pZCI6NSwibW9kZSI6IldlYiIsInNjb3BlcyI6WyJ0ZW1wIl0sImlzcyI6Imh0dHA6Ly9tb25pdG9yLjdkcmxiLmNvbSIsImlhdCI6MTUzMTM4MTIyMiwiZXhwIjoxNTMxMzgxNTIyfQ.iIlgjuDQP1C2mOWUSd0DT6sKxg7Wavsu3oOiHxGf58BZmrwl3OEIFH71yHo9DbXTRWnm5QzEeyjdxLXcWBA3mQ', name: 'admin', email: `admin@qq.com`, id: 10000, src/app/routes/forecasting-warning/forecasting-warning.component.html
New file @@ -0,0 +1,13 @@ <div class="content__title"> <h1>空气质量预警预报</h1> </div> <nz-card [nzBordered]="false"> <div class="sales-type-radio"> <nz-radio-group > <label nz-radio-button [nzValue]="'warning'"><span>预警</span></label> <label nz-radio-button [nzValue]="'forecasting'"><span>预报</span></label> </nz-radio-group> </div> </nz-card> <nz-card [nzBordered]="false"></nz-card> src/app/routes/forecasting-warning/forecasting-warning.component.ts
New file @@ -0,0 +1,17 @@ import { Component, OnInit } from '@angular/core'; import { _HttpClient } from '@delon/theme'; @Component({ selector: 'app-forecasting-warning', templateUrl: './forecasting-warning.component.html', }) export class ForecastingWarningComponent implements OnInit { constructor( private http: _HttpClient ) { } ngOnInit() { } } src/app/routes/pollution/management/management.component.html
New file @@ -0,0 +1,45 @@ <div nz-row [nzGutter]="24"> <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="24"> <nz-card [nzLoading]="loading" [nzBordered]="false" nzTitle="警报类别占比" [nzBodyStyle]="{'padding.px': 24}" class="sales-card" style="min-height: 482px;"> <ng-template #extra> <div class="sales-card-extra"> <div class="sales-type-radio"> <nz-radio-group [(ngModel)]="salesType" (ngModelChange)="changeSaleType()" [nzSize]="'large'"> <label nz-radio-button [nzValue]="'1'"><span>PM2.5</span></label> <label nz-radio-button [nzValue]="'2'"><span>PM10</span></label> <label nz-radio-button [nzValue]="'3'"><span>SO2</span></label> <label nz-radio-button [nzValue]="'4'"><span>NO3</span></label> <label nz-radio-button [nzValue]="'5'"><span>O3</span></label> <label nz-radio-button [nzValue]="'6'"><span>CO</span></label> </nz-radio-group> </div> </div> </ng-template> <ng-template #body> <h4 class="margin:8px 0 32px 0;">站点排序结果</h4> <nz-table #keyTable [nzDataSource]="data.searchData" [nzPageSize]="5" nzSize="small"> <thead nz-thead> <tr> <th nz-th><span>序号</span></th> <th nz-th><span>站点名称</span></th> <th nz-th class="text-right"> <span>因子数值 mg/m3</span> <nz-table-sort (nzValueChange)="sort('count',$event)"></nz-table-sort> </th> </tr> </thead> <tbody nz-tbody> <tr nz-tbody-tr *ngFor="let i of keyTable.data"> <td nz-td>{{i.index}}</td> <td nz-td><a (click)="msg.success(i.point)">{{i.point}}</a></td> <td nz-td class="text-right">{{i.value}}</td> </tr> </tbody> </nz-table> </ng-template> </nz-card> </div> </div> src/app/routes/pollution/management/management.component.less
New file @@ -0,0 +1,389 @@ @import '~@delon/theme/styles/antd/themes/default.less'; @import '~@delon/abc/utils/utils.less'; :host ::ng-deep { .page-header { display: flex; .avatar { flex: 0 1 72px; margin-bottom: 8px; .ant-avatar { border-radius: 72px; display: block; width: 72px; height: 72px; } } .desc { position: relative; top: 4px; margin-left: 24px; flex: 1 1 auto; color: @text-color-secondary; line-height: 22px; .desc-title { font-size: 20px; line-height: 28px; font-weight: 500; color: @heading-color; margin-bottom: 12px; } } } .page-extra { .clearfix(); float: right; & > div { padding: 0 32px; position: relative; float: left; & > p:first-child { color: @text-color-secondary; font-size: @font-size-base; line-height: 22px; margin-bottom: 4px; } & > p { color: @heading-color; font-size: 30px; line-height: 38px; margin: 0; & > span { color: @text-color-secondary; font-size: 20px; } } &:after { background-color: @border-color-split; position: absolute; top: 8px; right: 0; width: 1px; height: 40px; content: ""; } } & > div:last-child { padding-right: 0; &:after { display: none; } } } .project-list { .ant-card-meta-description { color: @text-color-secondary; height: 44px; line-height: 22px; overflow: hidden; } .card-title { font-size: 0; a { color: @heading-color; margin-left: 12px; line-height: 24px; height: 24px; display: inline-block; vertical-align: top; font-size: @font-size-base; &:hover { color: @primary-color; } } } .project-grid { width: 33.33%; } .project-item { display: flex; margin-top: 8px; overflow: hidden; font-size: 12px; height: 20px; line-height: 20px; .textOverflow(); a { color: @text-color-secondary; display: inline-block; flex: 1 1 0; .textOverflow(); &:hover { color: @primary-color; } } .datetime { color: @disabled-color; flex: 0 0 auto; float: right; } } } .activities { padding: 0 24px 8px; .username { color: @text-color; } .event { font-weight: normal; } } .members { a { display: block; margin: 12px 0; line-height: 24px; height: 24px; .textOverflow(); .member { font-size: @font-size-base; color: @text-color; line-height: 24px; max-width: 100px; vertical-align: top; margin-left: 12px; transition: all .3s; display: inline-block; .textOverflow(); } &:hover { span { color: @primary-color; } } } } .datetime { color: @disabled-color; } .links { padding: 20px 0 8px 24px; font-size: 0; > a { color: rgba(0, 0, 0, 0.65); display: inline-block; font-size: 14px; margin-bottom: 13px; width: 25%; } } @media screen and (max-width: @screen-xl) and (min-width: @screen-lg) { .active-card { margin-bottom: 24px; } .members { margin-bottom: 0; } .page-extra { margin-left: -44px; & > div { padding: 0 16px; } } } @media screen and (max-width: @screen-lg) { .active-card { margin-bottom: 24px; } .members { margin-bottom: 0; } .page-extra { float: none; margin-right: 0; & > div { padding: 0 16px; text-align: left; &:after { display: none; } } } } @media screen and (max-width: @screen-md) { .page-extra { margin-left: -16px; } } @media screen and (max-width: @screen-sm) { .page-header { display: block; .desc { margin-left: 0; } } .page-extra { & > div { float: none; } } } @media screen and (max-width: @screen-xs) { .project-list { .project-grid { width: 100%; } } } .icon-group { transition: color 0.32s; color: @text-color-secondary; cursor: pointer; margin-left: 16px; &:hover { color: @text-color; } } .rank-list { padding: 0px 32px 32px 72px; ul { margin-top: 25px; } li { zoom: 1; margin-top: 16px; display: flex; justify-content: space-between; .icon { background-color: #f5f5f5; border-radius: 20px; display: inline-block; font-size: 12px; font-weight: 600; margin-right: 24px; height: 20px; line-height: 20px; width: 20px; text-align: center; } .active { background-color: #314659; color: #fff; } } } .sales-extra { display: inline-block; margin-right: 24px; a { margin-left: 24px; } } .sales-card { .bar { padding: 0px 0px 32px 32px; } .rank { padding: 0 32px 32px 72px; } .ant-tabs-tab { padding-top: 16px; padding-bottom: 14px; line-height: 24px; } .ant-tabs-extra-content { padding-right: 24px; line-height: 55px; } .ant-card-head { position: relative; } } .sales-card-extra { height: 68px; } .sales-type-radio { position: absolute; left: 24px; bottom: 15px; } .offline-card { .ant-tabs-ink-bar { bottom: auto; } .ant-tabs-bar { border-bottom: none; } .ant-tabs-nav-container-scrolling { padding-left: 40px; padding-right: 40px; } .ant-tabs-tab-prev-icon:before { position: relative; left: 6px; } .ant-tabs-tab-next-icon:before { position: relative; right: 6px; } } .trend-text { margin-left: 8px; color: @heading-color; } @media screen and (max-width: @screen-lg) { .sales-extra { display: none; } .rank-list { li { span:first-child { margin-right: 8px; } } } } @media screen and (max-width: @screen-md) { .rank-title { margin-top: 16px; } .sales-card .bar { padding: 16px; } } @media screen and (max-width: @screen-sm) { .sales-extra-wrap { display: none; } .sales-card { .ant-tabs-content { padding-top: 30px; } } } .ant-table-pagination { margin-bottom: 0; } } src/app/routes/pollution/management/management.component.ts
New file @@ -0,0 +1,56 @@ import { Component, OnInit, OnDestroy } from '@angular/core'; import { NzMessageService } from 'ng-zorro-antd'; import { _HttpClient } from '@delon/theme'; import { HttpClient } from '@angular/common/http'; import * as moment from 'moment'; import { DeviceService } from '@business/services/http/device.service'; @Component({ selector: 'pollution-management', templateUrl: './management.component.html', styleUrls: ['./management.component.less'], providers: [DeviceService] }) export class PollutionManagementComponent implements OnInit, OnDestroy { data: any = {}; constructor( private deviceService: DeviceService, private http: _HttpClient, public msg: NzMessageService, private http2: HttpClient) { } ngOnInit() { const searchData = []; for (let i = 0; i < 50; i += 1) { searchData.push({ index: i + 1, point: `监测站点-${i}`, value: Math.floor(Math.random() * 100) }); } this.data = { searchData: searchData }; } ngOnDestroy(): void { } sort(sortName, sortValue) { this.data.searchData = [ ...(<any[]>this.data.searchData).sort((a, b) => { if (a[sortName] > b[sortName]) { return (sortValue === 'ascend') ? 1 : -1; } else if (a[sortName] < b[sortName]) { return (sortValue === 'ascend') ? -1 : 1; } else { return 0; } }) ]; } } src/app/routes/reports/query/query.component.html
@@ -4,12 +4,10 @@ <nz-card [nzBordered]="false"> <form nz-form [nzLayout]="'inline'"> <div nz-row [nzGutter]="24"> <div nz-col [nzSpan]="8" class="mb-md"> <div nz-col [nzSpan]="6" class="mb-md"> <div nz-form-item class="d-flex"> <div [ngStyle]="{'width': '100px'}" nz-form-label> <label> 项目({{ sensorsSelect+'/'+sensorsLength }}) </label> <label>污染因子</label> </div> <div nz-form-control class="flex-1"> <nz-popover [nzPlacement]="'bottomLeft'" [(nzVisible)]="sensorSelectVisible" [nzTrigger]="'click'"> @@ -29,20 +27,13 @@ </div> </ng-template> </nz-popover> <!-- <div style="top:0; right: -62px; position:absolute; font-size: 16px; color: #696969;"> <span>(</span> <span style="display: inline-block; width: 50px; text-align: center;"> {{ sensorsSelect+'/'+sensorsLength }} </span> <span>)</span> </div> --> </div> </div> </div> <div nz-col [nzSpan]="9" class="mb-md"> <div nz-col [nzSpan]="4" class="mb-md"> <div nz-form-item class="d-flex"> <div [ngStyle]="{'width': '128px'}" nz-form-label> <label>时间类型</label> <label>类型</label> </div> <div nz-form-control class="flex-1"> <nz-select name="timeUnit" [(ngModel)]="timeUnit" [nzPlaceHolder]="'选择 数据类型'" (ngModelChange)="setTimeUnit($event)" [nzNotFoundContent]="'无法找到'"> @@ -54,8 +45,22 @@ </div> <div nz-col [nzSpan]="7" class="mb-md"> <div nz-form-item class="d-flex"> <div [ngStyle]="{'width': '128px'}" nz-form-label> <label>监测站点</label> </div> <div nz-form-control class="flex-1"> <nz-select name="deviceDimension" style="width: 100%;" [(ngModel)]="deviceDimension" nzAllowClear [nzPlaceHolder]="'选择 '+ dimensionItem.label +'(输入名称搜索)'" nzShowSearch (nzSearchChange)="dimensionsChange($event)" [nzNotFoundContent]="'无法找到'"> <nz-option *ngFor="let option of dimensionOptions" [nzLabel]="option.name" [nzValue]="option"> </nz-option> </nz-select> </div> </div> </div> <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 *ngIf="timeUnit.value!='MONTH'; else elseBlock" nz-form-control class="flex-1"> <nz-datepicker [ngStyle]="{'width': '100%'}" name="actualTime" [(ngModel)]="actualTime" [nzAllowClear]="false" [nzShowTime]="_timeType.showTime" @@ -72,68 +77,11 @@ </ng-template> </div> </div> </div> <div [ngStyle]="{'display':isCollapse ? 'none' : 'block' }" nz-row [nzGutter]="24"> <div nz-col [nzSpan]="8" class="mb-md"> <div nz-form-item class="d-flex"> <div [ngStyle]="{'width': '100px'}" nz-form-label> <label>省市区</label> </div> <div nz-form-control class="flex-1"> <nz-cascader [class.class123]="true" (nzLoad)="areaLazyLoad($event)" [nzPlaceHolder]="'选择 省/市/区'" (nzSelectionChange)="setAreasData($event)" [nzAllowClear]="false" [nzChangeOnSelect]="true" [ngModel]="_areas" name="areasData"> </nz-cascader> </div> </div> </div> <div nz-col [nzSpan]="9" class="mb-md"> <div nz-form-item class="d-flex"> <div [ngStyle]="{'width': '128px'}" nz-form-label> <label> <nz-dropdown> <button nz-button nz-dropdown ><span>{{dimensionItem.label}}</span> <i class="anticon anticon-down"></i></button> <ul nz-menu> <li *ngFor="let option of otherDimensions;let i = index;" nz-menu-item> <a (click)="selectDimension(option)">{{option.label}}</a> </li> </ul> </nz-dropdown> </label> </div> <div nz-form-control class="flex-1"> <nz-select name="deviceDimension" style="width: 100%;" [(ngModel)]="deviceDimension" nzAllowClear [nzPlaceHolder]="'选择 '+ dimensionItem.label +'(输入名称搜索)'" nzShowSearch (nzSearchChange)="dimensionsChange($event)" [nzNotFoundContent]="'无法找到'"> <nz-option *ngFor="let option of dimensionOptions" [nzLabel]="option.name" [nzValue]="option"> </nz-option> </nz-select> </div> </div> </div> <div nz-col [nzSpan]="7" class="mb-md"> <div nz-form-item class="d-flex"> <div [ngStyle]="{'width': '70px'}" nz-form-label> <label>设 备</label> </div> <div nz-form-control class="flex-1"> <nz-select name="device" style="width: 100%;" [(ngModel)]="device" nzAllowClear [nzPlaceHolder]="'先选择 '+ dimensionItem.label +'(输入名称搜索设备)'" nzShowSearch (nzSearchChange)="devicesChange($event)" [nzNotFoundContent]="'无法找到'"> <nz-option *ngFor="let option of deviceOptions" [nzLabel]="option.name" [nzValue]="option"> </nz-option> </nz-select> </div> </div> </div> </div> <div nz-row> <div nz-col [nzSpan]="24" class="text-right"> <div nz-col [nzSpan]="2" class="mb-md"> <button nz-button [nzType]="'primary'" (click)="loadGrid()"> <i class="anticon anticon-search"></i> <span>查询</span> </button> <a class="pl-sm" (click)="toggleCollapse()"> 折叠 <i class="anticon" [class.anticon-down]="isCollapse" [class.anticon-up]="!isCollapse"></i> </a> </div> </div> </form> @@ -211,6 +159,8 @@ </tr> </tbody> </nz-table> <!-- <div *ngIf="grid.data.length>0" [ngClass]="{'table-scroll':true,'table-scroll-box-shadow': sensorNameScrollLeft>2 }" style="position: absolute; top:0;"> <nz-table #nzTable [nzDataSource]="grid.data" [nzIsPagination]="false"> <thead nz-thead> @@ -234,6 +184,8 @@ </tbody> </nz-table> </div> --> </div> </div> </nz-card> src/app/routes/reports/query/query.component.ts
@@ -23,7 +23,7 @@ styleUrls: ['./query.component.less'] }) export class QueryComponent implements OnInit { // aqi六项排序 private aqiSort = { e1: 1, @@ -43,7 +43,7 @@ // }; public expandForm: boolean; // 搜索区 展开控制 // public sensors: any[] = []; public sensorOptions: any[] = []; public sensorOptions: any[] = []; /** * 数据类型,下拉列表数据 * 注意,年度类型,对应查询数据单位为月,以此类推 @@ -72,7 +72,7 @@ private _timeType: {showTime: boolean|{[key: string]: Function|boolean}, mode: 'month' | 'day', dateFormat: string } = {showTime: false, mode: 'day', dateFormat: 'YYYY年MM月DD日'}; // 用key-value方式,暂存监测项目 private _sensors: {[key: string]: string} = {}; private _sensorNames: string; private _sensorNames: string; get sensorNames(): string { return this._sensorNames; } @@ -85,27 +85,29 @@ this.reloadChart(); this.switchSensor(this.chartSelectedIndex); // this.chartLoading = false; } } this.isChartCollapse = !this.isChartCollapse; } public deviceOptions: Device[] = []; public dataCondition: DataCondition = {areaRangeId: 320583, areaRange: AreaRange.AREA, deviceDimension: DeviceDimension.NONE}; public dimensionOptions: MonitorPoint[] = []; get actualYear(): number { return this.actualTime.getFullYear(); } set actualYear(year) { set actualYear(year) { this.actualTime.setFullYear(Number(year)); } dimensionsChange(text?: string) { switch (this.dimensionItem.value) { case DeviceDimension.MONITORPOINT: this.monitorPointsChange(text); break; case DeviceDimension.PROFESSION: this.professionsChange(text); break; } // switch (this.dimensionItem.value) { // case DeviceDimension.MONITORPOINT: // this.monitorPointsChange(text); break; // case DeviceDimension.PROFESSION: // this.professionsChange(text); break; // } this.monitorPointsChange(text); } professionsChange(text?: string) { this.http.get<ResultBean<any[]>>('profession/getall').subscribe( @@ -146,7 +148,7 @@ devicesChange(text?: string) { if (!!this.deviceDimension) { const example = new ExampleService(); const deviceDimensionProperty = const deviceDimensionProperty = this.dimensionItem.value === DeviceDimension.MONITORPOINT ? 'monitorPointId' : 'professionId'; if (!!text) { example.or().andEqualTo({ name: deviceDimensionProperty, value: this.deviceDimension.id }) @@ -175,7 +177,7 @@ public onChartInit(e): void { this.echartsIntance = e; } constructor( constructor( private http: _HttpClient, private sensorsService: SensorsService, private deviceService: DeviceService, @@ -183,13 +185,13 @@ private monitorPointService: MonitorPointService, private msg: NzMessageService, private dateService: DateService, ) { } ngOnInit() { ) { } ngOnInit() { this.initPage(); // 监测项目 tree click 事件 this.treeClickStream.debounceTime(1).subscribe( event => { const data = event.node.data; // console.log(data); const data = event.node.data; // console.log(data); if (data.id === -1) { const children = data.children; // 全选状态 @@ -220,7 +222,7 @@ delete this._sensors [data.id]; } const length = Object.keys(this._sensors).length; parentData['halfChecked'] = length > 0 parentData['halfChecked'] = length > 0 && this.sensorOptions[0].children.length > length; parentData['checked'] = !parentData['halfChecked'] && length !== 0; } @@ -241,7 +243,7 @@ if (res.code === ResultCode.SUCCESS) { const org = res.data; const areas = new Array(3); if (!!org.areaNames) { if (!!org.areaNames) { const areaNames = org.areaNames; Object.keys(areaNames).forEach( key => { @@ -257,7 +259,7 @@ } } } ); ); } else { for (let i = 0; i < areas.length; i++) { switch (i) { @@ -312,8 +314,8 @@ let isChanged = false; isChanged = areas.some( (item , index: number) => { // this._areas[index] 为null 改变 监控站点选项 return this._areas.length < areas.length || !this._areas[index] return this._areas.length < areas.length || !this._areas[index] || this._areas[index].value !== item.value; }); if ( isChanged ) { @@ -350,7 +352,7 @@ get deviceDimension(): {id: number, name: string} { return this._deviceDimension; } set deviceDimension(value) { set deviceDimension(value) { if (!!value) { // 值变 改变设备选项 if (this._deviceDimension !== value) { @@ -364,7 +366,7 @@ this.device = null; this.deviceOptions = null; } } // 第三步 设置 监控站点 public _device: Device; @@ -375,15 +377,15 @@ get device(): Device { return this._device; } /** * 获取 传感器名称 * * * @readonly * @type {string} * @memberof QueryComponent */ */ private treeClickStream: Subject<any> = new Subject<any>(); public onTreeClickSelect(event): void { this.treeClickStream.next(event); @@ -424,13 +426,13 @@ this._sensorNames = sensorNameList.join(', '); }, 1); } public setTimeUnit(val: {label: string, value: TimeUnits} ) { public setTimeUnit(val: {label: string, value: TimeUnits} ) { switch (val.value) { // YYYY-MM-DD HH:mm:ss case TimeUnits.MONTH: this._timeType.dateFormat = 'YYYY年'; // this._timeType.dateFormat = 'YYYY-MM'; // this._timeType.mode = 'month'; // this._timeType.mode = 'month'; // this._timeType.endShowTime = null; break; case TimeUnits.DAY: @@ -476,7 +478,7 @@ } return result; } public loadGrid(): void { public loadGrid(): void { // 数据检查 const sensors = Object.values(this._sensors); if ( sensors.length === 0 ) { @@ -504,18 +506,18 @@ this.dataCondition.areaRangeId = item; switch (index) { case 0: this.dataCondition.areaRange = AreaRange.DEVICE; break; case 1: case 1: // 维度为监控点 if (this.dimensionItem.value === DeviceDimension.MONITORPOINT) { this.dataCondition.areaRange = AreaRange.MONITORPOINT; this.dataCondition.areaRange = AreaRange.MONITORPOINT; // 维度为行业 } else { // 重新标定区域范围 this.switchAreas(); // 重新设置区域值 this.dataCondition.areaRangeId = areasData.slice(-1).pop(); this.dataCondition.areaRangeId = areasData.slice(-1).pop(); } break; case 2: case 2: this.switchAreas(); break; } @@ -556,9 +558,9 @@ return {text: item}; } ); break; } } // 设置表格宽度,要在此处 this.tableWidth = this.grid.columns.length * 80 + 160; this.tableWidth = this.grid.columns.length * 80 + 160; this.reloadChart(); // 重设报表标题 this.reloadChartTitle(); @@ -616,7 +618,7 @@ } } private reloadChart(): void { const timeList = this.grid.columns.map(item => item.text); const timeList = this.grid.columns.map(item => item.text); if (!!this.echartsIntance) { this.chartOption = null; this.echartsIntance.clear(); @@ -625,7 +627,6 @@ // if ( this.chartSelectedIndex < this.grid.data.length ) { // series = [{type: 'line', data: this.grid.data[this.chartSelectedIndex]}]; // } debugger; this.initOpton({ xAxis : [{data : timeList}]}); this.chartLoading = true; } @@ -685,13 +686,13 @@ switch ( this.dataCondition.areaRange ) { case AreaRange.MONITORPOINT : names[0] = '监控站点'; names[1] = this._deviceDimension.name; break; names[1] = this._deviceDimension.name; break; case AreaRange.DEVICE : names[0] = '设备'; names[1] = this._device.name; break; default : names[0] = ''; names[1] = this._areas.map( item => item.label).join('/'); names[1] = this._areas.map( item => item.label).join('/'); break; } // 维度命名 @@ -711,7 +712,7 @@ names[3] = moment(this.actualTime).format(this._timeType.dateFormat); if ( this.grid.data.length > this.chartSelectedIndex) { names[4] = this.grid.data[this.chartSelectedIndex].sensor.name; } } const title = names.join(' ') + ' 报表'; if (title.trim() !== this._chartTitleTemp.trim()) { this._chartTitleTemp = title; @@ -723,8 +724,8 @@ } public switchSensor(index: number): void { this.chartSelectedIndex = index; this.chartLoading = true; this.reloadChartTitle(); this.chartLoading = true; this.reloadChartTitle(); setTimeout(() => { const series = [{type: 'line', data: this.grid.data[index].data}]; this.echartsIntance.setOption({ @@ -738,15 +739,15 @@ ], series: series }); this.chartLoading = false; }, 600); this.chartLoading = false; }, 600); } private getPeriodDate(value: Date , type?: 'start'|'end' ): Date { let month = 0; let day = 1; let hour = 0; let minute = 0; let second = 0; let second = 0; let millisecond = 0; if ('end' === type) { month = 11; @@ -775,7 +776,7 @@ public sensorTableFocus(index) { this.sensorTableFocusIndex = index; } public sensorTableBlur(index) { this.sensorTableFocusIndex = -1; } src/app/routes/routes-routing.module.ts
@@ -13,6 +13,8 @@ import { ReportComponent } from './report/report.component'; import { UserLoginComponent } from 'app/routes/passport/login/login.component'; import { ForecastingWarningComponent } from './forecasting-warning/forecasting-warning.component'; import { PollutionManagementComponent } from 'app/routes/pollution/management/management.component'; const routes: Routes = [ { @@ -33,7 +35,10 @@ { path: 'devices', loadChildren: './devices/devices.module#DevicesModule' }, { path: 'sensors', loadChildren: './sensors/sensors.module#SensorsModule' }, { path: 'systems', loadChildren: './systems/systems.module#SystemsModule' }, { path: 'reports', loadChildren: './reports/reports.module#ReportsModule' } { path: 'reports', loadChildren: './reports/reports.module#ReportsModule' }, { path: 'forecasting-warning', component: ForecastingWarningComponent }, { path: 'pollution/management', component: PollutionManagementComponent } ] }, // passport { src/app/routes/routes.module.ts
@@ -12,7 +12,10 @@ import { DashboardAnalysisComponent } from './dashboard/analysis/analysis.component'; import { DashboardMonitorComponent } from './dashboard/monitor/monitor.component'; import { DashboardWorkplaceComponent } from './dashboard/workplace/workplace.component'; import { ForecastingWarningComponent } from './forecasting-warning/forecasting-warning.component'; import { ReportComponent } from './report/report.component'; import { PollutionManagementComponent } from './pollution/management/management.component'; // Statics import 'rxjs/add/observable/throw'; @@ -35,7 +38,9 @@ DashboardMonitorComponent, DashboardWorkplaceComponent, UserLoginComponent, ReportComponent ReportComponent, ForecastingWarningComponent, PollutionManagementComponent ], providers: [ _HttpClient, src/assets/app-data.json
@@ -22,22 +22,7 @@ { "text": "预报预警", "icon": "icon-pie-chart", "children": [ { "text": "预警", "link": "/" } , { "text": "预报", "link": "/" } , { "text": "因子数据", "link": "/" } ] "link": "/forecasting-warning" }, { "text": "环境管理", @@ -57,7 +42,7 @@ { "text": "污染管控", "icon": "icon-chemistry", "link": "/" "link": "/pollution/management" }, { "text": "企业污染管理", @@ -82,7 +67,16 @@ { "text": "统计分析", "icon": "icon-note", "link": "/" "children": [{ "text": "统计分析", "link": "/" }, { "text": "污染日历", "link": "/" }, { "text": "站点数据分析", "link": "/" }] }, { "text": "网络溯源", @@ -95,7 +89,7 @@ "children": [ { "text": "数据审核", "link": "/maintenance/data-check" "link": "/reports/query" } , { src/environments/environment.chore.ts
@@ -3,5 +3,6 @@ SERVER_URL: `./`, production: true, hmr: false, useHash: false useHash: false, SERVER_BASH_URL: `http://monitor-api2.7drlb.com/` }; src/environments/environment.hmr.ts
@@ -1,7 +1,7 @@ export const environment = { chore: false, SERVER_URL: `./`, production: false, production: true, hmr: true, useHash: true, SERVER_BASH_URL: `http://monitor-api2.7drlb.com/` src/environments/environment.ts
@@ -9,5 +9,5 @@ production: false, hmr: false, useHash: true, SERVER_BASH_URL: `http://127.0.0.1:8080/` SERVER_BASH_URL: `http://monitor-api2.7drlb.com/` };