fengxiang
2018-07-13 7047fc75d8d33ad7608c05f655e760f4e824808b
提交修改
5 files added
9 files modified
684 ■■■■ changed files
src/app/app.component.ts 2 ●●● patch | view | raw | blame | history
src/app/routes/forecasting-warning/forecasting-warning.component.html 13 ●●●●● patch | view | raw | blame | history
src/app/routes/forecasting-warning/forecasting-warning.component.ts 17 ●●●●● patch | view | raw | blame | history
src/app/routes/pollution/management/management.component.html 45 ●●●●● patch | view | raw | blame | history
src/app/routes/pollution/management/management.component.less 389 ●●●●● patch | view | raw | blame | history
src/app/routes/pollution/management/management.component.ts 56 ●●●●● patch | view | raw | blame | history
src/app/routes/reports/query/query.component.html 96 ●●●● patch | view | raw | blame | history
src/app/routes/reports/query/query.component.ts 15 ●●●● patch | view | raw | blame | history
src/app/routes/routes-routing.module.ts 7 ●●●● patch | view | raw | blame | history
src/app/routes/routes.module.ts 7 ●●●● patch | view | raw | blame | history
src/assets/app-data.json 30 ●●●●● patch | view | raw | blame | history
src/environments/environment.chore.ts 3 ●●●● patch | view | raw | blame | history
src/environments/environment.hmr.ts 2 ●●● patch | view | raw | blame | history
src/environments/environment.ts 2 ●●● patch | view | raw | blame | history
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
@@ -100,12 +100,14 @@
         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(
@@ -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;
      }
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",
                "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/`
};