From 0e25153037b06851846e80cc745e518ba07bf7af Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Mon, 26 Mar 2018 13:58:16 +0800
Subject: [PATCH] 数据查询和表单模块合并,修改密码用户输入框去除

---
 src/app/routes/reports/query/query.component.less     |    8 
 /dev/null                                             |  195 ------------------------
 src/app/routes/reports/query/query.component.ts       |   17 +
 src/app/routes/reports/query/query.component.html     |  216 +++++++++++++++++++++++++++
 src/app/routes/routes-routing.module.ts               |    3 
 src/app/routes/reports/reports.module.ts              |   24 ++
 src/assets/app-data.json                              |   15 -
 src/app/routes/systems/account/account.component.html |    2 
 8 files changed, 262 insertions(+), 218 deletions(-)

diff --git a/src/app/routes/analysis/analysis.module.ts b/src/app/routes/analysis/analysis.module.ts
deleted file mode 100644
index ac2b40e..0000000
--- a/src/app/routes/analysis/analysis.module.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { MonitorPointService } from '@business/services/http/monitor-point.service';
-import { AreacodeService } from '@business/services/http/areacode.service';
-import { SensorsService } from '@business/services/http/sensors.service';
-import { NzTreeModule } from 'ng-tree-antd';
-import { PipeModule } from '@business/pipe/pipe.module';
-import { NgModule } from '@angular/core';
-import { SharedModule } from '@shared/shared.module';
-import { QueryComponent } from './query/query.component';
-import { Routes, RouterModule } from '@angular/router';
-import { CommonModule } from '@angular/common';
-import { DeviceService } from '@business/services/http/device.service';
-import { NgxEchartsModule  } from 'ngx-echarts';
-import { DateService } from '@business/services/util/date.service';
-import { NzMessageService } from 'ng-zorro-antd';
-const routes: Routes = [
-  {
-    path: '',
-    children: [
-      { path: 'query', component: QueryComponent }
-    ]
-  }
-];
-
-@NgModule({
-  imports: [
-    // ������������������������������������
-    PipeModule,
-    CommonModule,
-    SharedModule,
-    NzTreeModule,
-    NgxEchartsModule,
-    RouterModule.forChild(routes)    
-  ],
-  declarations: [QueryComponent],
-  providers: [SensorsService, NzMessageService, AreacodeService, MonitorPointService, DeviceService, DateService]
-})
-export class AnalysisModule { }
diff --git a/src/app/routes/analysis/query/query.component.html b/src/app/routes/analysis/query/query.component.html
deleted file mode 100644
index 89c2052..0000000
--- a/src/app/routes/analysis/query/query.component.html
+++ /dev/null
@@ -1,195 +0,0 @@
-<div class="content__title">
-    <h1>������������</h1>
-</div>
-<nz-card [nzBordered]="false">
-    <form nz-form (ngSubmit)="loadGrid()" [nzLayout]="'inline'">
-        <div nz-row [nzGutter]="24">
-            <div nz-col [nzSpan]="8" 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-popover [nzTitle]="'���������'" [nzPlacement]="'bottomLeft'" [nzTrigger]="'hover'">
-                            <nz-input [nzType]="'input'" nz-popover [ngModel]="sensorNames" name="sensorNames" [nzReadonly]="true" [nzPlaceHolder]="'���������������������'">
-                                <ng-template #suffix>
-                                    <i class="anticon anticon-plus ant-input-search-icon"></i>
-                                </ng-template>
-                            </nz-input>
-                            <ng-template #nzTemplate>
-                                <div [ngStyle]="{'width': '240px', 'height': '240px', 'overflow-y' :'auto'}">
-                                    <nz-tree [nzNodes]="sensorOptions" [nzCheckable]="true" (nzCheck)="onSensorSelect($event)"></nz-tree>
-                                </div>
-                            </ng-template>
-                        </nz-popover>
-                    </div>
-                </div>
-            </div>
-            <div nz-col [nzSpan]="8" 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 name="timeUnit"  [(ngModel)]="timeUnit" [nzPlaceHolder]="'������ ������������'"
-                        (ngModelChange)="setTimeUnit($event)"    [nzNotFoundContent]="'������������'">
-                            <nz-option *ngFor="let option of timeUnitOptions" [nzLabel]="option.label" [nzValue]="option">
-                            </nz-option>
-                        </nz-select>
-                    </div>
-                </div>
-            </div>
-            <div nz-col [nzSpan]="8" class="mb-md">
-                 <div nz-form-item class="d-flex">
-                        <div nz-form-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" [nzMode]="_timeType.mode"
-                           [nzFormat]="_timeType.dateFormat" [nzPlaceHolder]="'������������'">
-                          </nz-datepicker>
-                        </div>
-                        <ng-template #elseBlock>
-                            <div nz-form-control class="flex-1">
-                                <nz-select name="actualYear"  [(ngModel)]="actualYear" [nzPlaceHolder]="'������ ������������'"
-                                (ngModelChange)="setTimeUnit($event)"    [nzNotFoundContent]="'������������'">
-                                    <nz-option *ngFor="let option of actualYearOptions" [nzLabel]="option + ' ���'" [nzValue]="option">
-                                    </nz-option>
-                                </nz-select>
-                              </div>
-                        </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': '70px'}" 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]="8" 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="monitorPoint" style="width: 100%;" [(ngModel)]="monitorPoint"
-                            nzAllowClear [nzPlaceHolder]="'������ ���������(������������������)'"
-                            nzShowSearch (nzSearchChange)="monitorPointsChange($event)"
-                            [nzNotFoundContent]="'������������'">
-                            <nz-option *ngFor="let option of monitorPointOptions" [nzLabel]="option.name" [nzValue]="option">
-                            </nz-option>
-                        </nz-select>
-                    </div>
-                </div>
-            </div>
-            <div nz-col [nzSpan]="8" 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]="'��������� ���������(������������������)'"
-                                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">
-                    <button nz-button [nzType]="'primary'">
-                        <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>
-</nz-card>
-<nz-card>
-<div nz-row [nzGutter]="16">
-        <div nz-col [ngStyle]="{'display':isChartCollapse ? 'none' : 'block' }"  [nzMd]="24">
-            <div echarts   style="margin-top: 12px;" [options]="chartOption" [loading]="chartLoading" class="line-chart" (chartInit)="onChartInit($event)"></div>
-        </div>
-        <div *ngIf="isChartCollapse" style="width:100%; text-align:center;">
-            <span style="font-size:18px; font-weight: bold;">{{ _chartTitleTemp }}</span>
-        </div>
-        <a *ngIf="!!echartsIntance"  style="position: absolute; right: 0; top: -10px;" class="pl-sm" (click)="toggleChartCollapse()">
-            ������
-            <i class="anticon" [class.anticon-down]="isChartCollapse" [class.anticon-up]="!isChartCollapse"></i>
-        </a>
-</div>
-</nz-card>
-<div nz-row [nzGutter]="16">
-    <div nz-col [nzMd]="24">
-        <nz-card>
-            <nz-table #nzTable [nzScroll]="{ x:tableWidth,y:360 }" [nzDataSource]="grid.data" [nzIsPagination]="false" [nzLoading]="grid.loading">
-                <ng-template #nzFixedHeader>
-                <thead nz-thead>
-                    <tr>
-                        <th nz-th [nzWidth]="'160px'" [ngStyle]="{'position': 'relative', 'text-align':'center', 'left':sensorNameScrollLeft+'px'}">
-                            <span>������������</span>
-                        </th>
-                        <th nz-th [nzWidth]="'80px'" *ngFor="let col of grid.columns" [ngStyle]="{'width':col.width,'text-align':col['align'] === undefined?'left':col.align}">
-                            <span>{{ col.text }}</span>
-                        </th>
-                    </tr>
-                </thead>
-               </ng-template>
-                <tbody nz-tbody>
-                    <tr nz-tbody-tr style="cursor:pointer;" *ngFor="let row of nzTable.data,index as i"
-                    (click) = "switchSensor(i)"
-                    (mouseover) ="sensorTableFocus(i)" (mouseout) ="sensorTableBlur(i)"
-                    [ngClass]="{'table-tr-bgcolor-focus': i === sensorTableFocusIndex,'table-tr-bgcolor-blur': i !== sensorTableFocusIndex}">
-                        <td  nz-td class='sensor-name' [ngStyle]="{'background-color': '#FFF'}">
-                            <span><span>{{ row.sensor.name+'('+row.sensor.unit+')' }}</span>&nbsp;<i *ngIf="chartSelectedIndex==i"  class="anticon anticon-line-chart"></i></span>
-                        </td>
-                        <td nz-td *ngFor="let col of grid.columns,index as n" [ngStyle]="{'width':col.width,'text-align':col['align'] === undefined?'left':col.align}">
-                            <span [ngSwitch]="col.type">
-                                <!-- ������������������������������������ -->
-                                <span title="{{ row.data[n]|tyepHandle:col:row }}" style="width:100%; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;" *ngSwitchDefault> {{ row.data[n]|tyepHandle:col:row }} </span>
-                                <!-- ������������������������������������ -->
-                            </span>
-                        </td>
-                    </tr>
-                </tbody>
-            </nz-table>
-            <div  *ngIf="grid.data.length>0" [ngClass]="{'table-scroll':true,'table-scroll-box-shadow': sensorNameScrollLeft>2 }"  [ngStyle]="{'position': 'absolute', 'top': '24px'}">
-                    <nz-table #nzTable  [nzDataSource]="grid.data" [nzIsPagination]="false">
-                              <thead nz-thead>
-                                    <tr>
-                                        <th nz-th [nzWidth]="'160px'" style="text-align:center; position:relative; display:block; z-index:9;">
-                                            <span>������������</span>
-                                        </th>
-                                    </tr>
-                                </thead>
-                                <tbody nz-tbody [ngStyle]="{'top':sensorNameScrollTop+'px'}" style="position: relative; z-index:7; display:block;">
-                                    <tr nz-tbody-tr   style="cursor:pointer;" *ngFor="let row of nzTable.data,index as i"
-                                    (mouseover) ="sensorTableFocus(i)" (mouseout) ="sensorTableBlur(i)"
-                                    [ngClass]="{'table-tr-bgcolor-focus': i === sensorTableFocusIndex,'table-tr-bgcolor-blur': i !== sensorTableFocusIndex}"
-                                    (click) = "switchSensor(i)">
-                                        <td  nz-td class='sensor-name'  [ngStyle]="{'width':'160px','text-align': 'center'}">
-                                            <span><span>{{ row.sensor.name+'('+row.sensor.unit+')' }}</span>&nbsp;<i *ngIf="chartSelectedIndex==i"  class="anticon anticon-line-chart"></i></span>
-                                        </td>
-                                    </tr>
-                                </tbody>
-                    </nz-table>
-                </div>
-        </nz-card>
-    </div>
-</div>
diff --git a/src/app/routes/reports/query/query.component.html b/src/app/routes/reports/query/query.component.html
new file mode 100644
index 0000000..b9c3f1b
--- /dev/null
+++ b/src/app/routes/reports/query/query.component.html
@@ -0,0 +1,216 @@
+<div class="content__title">
+    <h1>������������</h1>
+</div>
+<nz-card [nzBordered]="false">
+    <form nz-form (ngSubmit)="loadGrid()" [nzLayout]="'inline'">
+        <div nz-row [nzGutter]="24">
+            <div nz-col [nzSpan]="8" 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-popover [nzTitle]="'���������'" [nzPlacement]="'bottomLeft'" [nzTrigger]="'hover'">
+                            <nz-input [nzType]="'input'" nz-popover [ngModel]="sensorNames" name="sensorNames" [nzReadonly]="true" [nzPlaceHolder]="'���������������������'">
+                                <ng-template #suffix>
+                                    <i class="anticon anticon-plus ant-input-search-icon"></i>
+                                </ng-template>
+                            </nz-input>
+                            <ng-template #nzTemplate>
+                                <div [ngStyle]="{'width': '240px', 'height': '240px', 'overflow-y' :'auto'}">
+                                    <nz-tree [nzNodes]="sensorOptions" [nzCheckable]="true" (nzCheck)="onSensorSelect($event)"></nz-tree>
+                                </div>
+                            </ng-template>
+                        </nz-popover>
+                    </div>
+                </div>
+            </div>
+            <div nz-col [nzSpan]="8" 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 name="timeUnit" [(ngModel)]="timeUnit" [nzPlaceHolder]="'������ ������������'" (ngModelChange)="setTimeUnit($event)" [nzNotFoundContent]="'������������'">
+                            <nz-option *ngFor="let option of timeUnitOptions" [nzLabel]="option.label" [nzValue]="option">
+                            </nz-option>
+                        </nz-select>
+                    </div>
+                </div>
+            </div>
+            <div nz-col [nzSpan]="8" class="mb-md">
+                <div nz-form-item class="d-flex">
+                    <div nz-form-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"
+                            [nzMode]="_timeType.mode" [nzFormat]="_timeType.dateFormat" [nzPlaceHolder]="'������������'">
+                        </nz-datepicker>
+                    </div>
+                    <ng-template #elseBlock>
+                        <div nz-form-control class="flex-1">
+                            <nz-select name="actualYear" [(ngModel)]="actualYear" [nzPlaceHolder]="'������ ������������'" (ngModelChange)="setTimeUnit($event)" [nzNotFoundContent]="'������������'">
+                                <nz-option *ngFor="let option of actualYearOptions" [nzLabel]="option + ' ���'" [nzValue]="option">
+                                </nz-option>
+                            </nz-select>
+                        </div>
+                    </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': '70px'}" 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]="8" 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="monitorPoint" style="width: 100%;" [(ngModel)]="monitorPoint" nzAllowClear [nzPlaceHolder]="'������ ���������(������������������)'"
+                            nzShowSearch (nzSearchChange)="monitorPointsChange($event)" [nzNotFoundContent]="'������������'">
+                            <nz-option *ngFor="let option of monitorPointOptions" [nzLabel]="option.name" [nzValue]="option">
+                            </nz-option>
+                        </nz-select>
+                    </div>
+                </div>
+            </div>
+            <div nz-col [nzSpan]="8" 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]="'��������� ���������(������������������)'" 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">
+                <button nz-button [nzType]="'primary'">
+                    <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>
+</nz-card>
+<nz-card>
+    <div nz-row [nzGutter]="16">
+        <div nz-col [ngStyle]="{'display':isChartCollapse ? 'none' : 'block' }" [nzMd]="24">
+            <div echarts style="margin-top: 12px;" [options]="chartOption" [loading]="chartLoading" class="line-chart" (chartInit)="onChartInit($event)"></div>
+        </div>
+        <div *ngIf="isChartCollapse" style="width:100%; text-align:center;">
+            <span style="font-size:18px; font-weight: bold;">{{ _chartTitleTemp }}</span>
+        </div>
+        <div *ngIf="!!echartsIntance&&!isChartCollapse" class="chart-switch-select">
+            <nz-dropdown>
+                <a class="ant-dropdown-link" nz-dropdown>
+                    <p class="display-3 text-primary">������������
+                        <i class="anticon anticon-down"></i>
+                    </p>
+                </a>
+                <ul style="cursor:pointer; max-height: 260px; overflow:auto;" nz-menu>
+                    <li [ngClass]="{'ant-dropdown-menu-item-selected':chartSelectedIndex==m}" *ngFor="let item of grid.data,index as m" (click)="switchSensor(m)"
+                        nz-menu-item>
+                        {{item.sensor.name}}&nbsp;
+                        <i *ngIf="chartSelectedIndex==m" class="anticon anticon-check-circle-o"></i>
+                    </li>
+                </ul>
+            </nz-dropdown>
+        </div>
+        <a *ngIf="!!echartsIntance" style="position: absolute; right: 0; top: -10px;" class="pl-sm" (click)="toggleChartCollapse()">
+            ������
+            <i class="anticon" [class.anticon-down]="isChartCollapse" [class.anticon-up]="!isChartCollapse"></i>
+        </a>
+    </div>
+</nz-card>
+<nz-card>
+    <div nz-row [nzGutter]="16">
+        <div nz-col [nzMd]="24">
+            <div style="width:100%; text-align:center;">
+                <span style="font-size:18px; font-weight: bold;">{{ _tableTitleTemp }}</span>
+            </div>
+        </div>
+    </div>
+    <div nz-row [nzGutter]="16">
+        <div nz-col [nzMd]="24">
+            <nz-table #nzTable [nzScroll]="{ x:tableWidth,y:350 }" [nzDataSource]="grid.data" [nzIsPagination]="false" [nzLoading]="grid.loading">
+                <ng-template #nzFixedHeader>
+                    <thead nz-thead>
+                        <tr>
+                            <th nz-th [nzWidth]="'160px'" [ngStyle]="{'position': 'relative', 'text-align':'center', 'left':sensorNameScrollLeft+'px'}">
+                                <span>������������</span>
+                            </th>
+                            <th nz-th [nzWidth]="'80px'" *ngFor="let col of grid.columns" [ngStyle]="{'width':col.width,'text-align':col['align'] === undefined?'left':col.align}">
+                                <span>{{ col.text }}</span>
+                            </th>
+                        </tr>
+                    </thead>
+                </ng-template>
+                <tbody nz-tbody>
+                    <tr nz-tbody-tr style="cursor:pointer;" *ngFor="let row of nzTable.data,index as i" (click)="switchSensor(i)" (mouseover)="sensorTableFocus(i)"
+                        (mouseout)="sensorTableBlur(i)" [ngClass]="{'table-tr-bgcolor-focus': i === sensorTableFocusIndex,'table-tr-bgcolor-blur': i !== sensorTableFocusIndex}">
+                        <td nz-td class='sensor-name' [ngStyle]="{'background-color': '#FFF'}">
+                            <span>
+                                <span>{{ row.sensor.name+'('+row.sensor.unit+')' }}</span>&nbsp;
+                                <i *ngIf="chartSelectedIndex==i" class="anticon anticon-line-chart"></i>
+                            </span>
+                        </td>
+                        <td nz-td *ngFor="let col of grid.columns,index as n" [ngStyle]="{'width':col.width,'text-align':col['align'] === undefined?'left':col.align}">
+                            <span [ngSwitch]="col.type">
+                                <!-- ������������������������������������ -->
+                                <span title="{{ row.data[n]|tyepHandle:col:row }}" style="width:100%; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;"
+                                    *ngSwitchDefault> {{ row.data[n]|tyepHandle:col:row }} </span>
+                                <!-- ������������������������������������ -->
+                            </span>
+                        </td>
+                    </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>
+                        <tr>
+                            <th nz-th [nzWidth]="'160px'" style="text-align:center; position:relative; display:block; z-index:9;">
+                                <span>������������</span>
+                            </th>
+                        </tr>
+                    </thead>
+                    <tbody nz-tbody [ngStyle]="{'top':sensorNameScrollTop+'px'}" style="position: relative; z-index:7; display:block;">
+                        <tr nz-tbody-tr style="cursor:pointer;" *ngFor="let row of nzTable.data,index as i" (mouseover)="sensorTableFocus(i)" (mouseout)="sensorTableBlur(i)"
+                            [ngClass]="{'table-tr-bgcolor-focus': i === sensorTableFocusIndex,'table-tr-bgcolor-blur': i !== sensorTableFocusIndex}"
+                            (click)="switchSensor(i)">
+                            <td nz-td class='sensor-name' [ngStyle]="{'width':'160px','text-align': 'center'}">
+                                <span>
+                                    <span>{{ row.sensor.name+'('+row.sensor.unit+')' }}</span>&nbsp;
+                                    <i *ngIf="chartSelectedIndex==i" class="anticon anticon-line-chart"></i>
+                                </span>
+                            </td>
+                        </tr>
+                    </tbody>
+                </nz-table>
+            </div>
+        </div>
+    </div>
+</nz-card>
diff --git a/src/app/routes/analysis/query/query.component.less b/src/app/routes/reports/query/query.component.less
similarity index 74%
rename from src/app/routes/analysis/query/query.component.less
rename to src/app/routes/reports/query/query.component.less
index 6a879b2..3abb251 100644
--- a/src/app/routes/analysis/query/query.component.less
+++ b/src/app/routes/reports/query/query.component.less
@@ -9,10 +9,16 @@
 }
 .table-scroll {
     z-index: 9;
-    height: 398px;
+    height: auto;
+    max-height: 388px;
     overflow: hidden;
 }
 .table-scroll-box-shadow {
     -moz-box-shadow: 4px 0 2px rgba(0, 0, 0, 0.1); /* ������ Firefox */
     box-shadow: 4px 0 2px rgba(0, 0, 0, 0.1);
 }
+.chart-switch-select {
+     position: absolute;
+     right: 10%;
+     top: 2%;
+}
diff --git a/src/app/routes/analysis/query/query.component.ts b/src/app/routes/reports/query/query.component.ts
similarity index 97%
rename from src/app/routes/analysis/query/query.component.ts
rename to src/app/routes/reports/query/query.component.ts
index fca727c..b113d75 100644
--- a/src/app/routes/analysis/query/query.component.ts
+++ b/src/app/routes/reports/query/query.component.ts
@@ -1,6 +1,6 @@
 import { Component, OnInit, ViewChild } from '@angular/core';
 import { _HttpClient } from '@delon/theme';
-import { Sensor, Device, DataCondition, MonitorPoint, Organization, LineChartCriteria, PairData } from '@business/entity/data';
+import { Sensor, Device, DataCondition, MonitorPoint, Organization, LineChartCriteria } from '@business/entity/data';
 import { TimeUnits, AreaRange, ResultCode } from '@business/enum/types.enum';
 import { SensorsService } from '@business/services/http/sensors.service';
 import { PageBean, ResultBean, Grid } from '@business/entity/grid';
@@ -454,7 +454,7 @@
       // ������������
       this.grid.data = [];
       this.http.post(environment.SERVER_BASH_URL + '/report/line-chart', lineChartCriteria).subscribe(
-        (res: ResultBean<{[key: string]: Array<Array<PairData>>}>) => {
+        (res: ResultBean<{[key: string]: Array<Array<number>>}>) => {
            if (res.code === 1) {
               const data =  res.data;
               if (!!data) {
@@ -470,13 +470,13 @@
                        weight = !!weight ? weight : 101;
                     //    this.gridSensors.push(sensor);
                        const sensorData = data[key][0].map(
-                           pair => {
+                           value => {
                                 if (weight > 100) {
                                     // pair.value ���null,������������
-                                    weight = !!pair.value ? weight : weight + 1;
+                                    weight = !!value ? weight : weight + 1;
                                 }
                                 // ���������������������2���
-                                return !!pair.value ? String(Math.round(pair.value * 100) / 100) : '-';
+                                return !!value ? String(Math.round(value * 100) / 100) : '-';
                            }
                        );
                        this.grid.data.push({sensor: sensor, data: sensorData, weight: weight});
@@ -560,6 +560,7 @@
     }
     // ������������������ ������������
     public _chartTitleTemp = '';
+    public _tableTitleTemp = '';
     public reloadChartTitle(): void {
         const names = ['������', '������', '������', '������'];
         switch ( this.dataCondition.areaRange ) {
@@ -578,10 +579,14 @@
         if ( this.grid.data.length > this.chartSelectedIndex) {
             names[3] = this.grid.data[this.chartSelectedIndex].sensor.name;
         }        
-        const title = names.join('  ') + '  ������';
+        const title = names.join('  ') + ' ������';
         if (title.trim() !== this._chartTitleTemp.trim()) {
              this._chartTitleTemp = title;
         }
+        const tableTile = names.slice(0, -1).join('  ') + ' ������������';
+        if (tableTile.trim() !== this._tableTitleTemp.trim()) {
+            this._tableTitleTemp = tableTile;
+       }
     }
     public switchSensor(index: number): void {
         this.chartSelectedIndex = index;
diff --git a/src/app/routes/reports/reports.module.ts b/src/app/routes/reports/reports.module.ts
index 4cb1096..e050e3b 100644
--- a/src/app/routes/reports/reports.module.ts
+++ b/src/app/routes/reports/reports.module.ts
@@ -6,14 +6,25 @@
 
 import { DemoComponent } from './demo/demo.component';
 import { ExcelComponent } from './excel/excel.component';
+import { QueryComponent } from './query/query.component';
+import { PipeModule } from '@business/pipe/pipe.module';
+import { NzTreeModule } from 'ng-tree-antd';
+import { NgxEchartsModule } from 'ngx-echarts';
+import { SensorsService } from '@business/services/http/sensors.service';
+import { NzMessageService } from 'ng-zorro-antd';
+import { AreacodeService } from '@business/services/http/areacode.service';
+import { MonitorPointService } from '@business/services/http/monitor-point.service';
+import { DeviceService } from '@business/services/http/device.service';
+import { DateService } from '@business/services/util/date.service';
 
 const routes: Routes = [
   {
     path: '',
     children: [
+      { path: 'query', component: QueryComponent },
       { path: 'demo', component: DemoComponent },
-      { path: 'excel', component: ExcelComponent }
-
+      { path: 'excel', component: ExcelComponent },
+    
     ]
   }
 ];
@@ -22,6 +33,10 @@
 
 @NgModule({
   imports: [
+    // ������������������������������������
+    PipeModule,
+    NzTreeModule,
+    NgxEchartsModule,
     CommonModule,
     SharedModule,
     RouterModule.forChild(routes)
@@ -29,8 +44,11 @@
   declarations: [
     ...COMPONENTS_NOROUNT,
     DemoComponent,
-    ExcelComponent
+    ExcelComponent,
+    QueryComponent
   ],
+  providers: [SensorsService, NzMessageService, AreacodeService,
+     MonitorPointService, DeviceService, DateService],
   entryComponents: COMPONENTS_NOROUNT
 })
 export class ReportsModule { }
diff --git a/src/app/routes/routes-routing.module.ts b/src/app/routes/routes-routing.module.ts
index 348be0f..f026255 100644
--- a/src/app/routes/routes-routing.module.ts
+++ b/src/app/routes/routes-routing.module.ts
@@ -29,8 +29,7 @@
             { 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: 'analysis', loadChildren: './analysis/analysis.module#AnalysisModule' },
+            { path: 'reports', loadChildren: './reports/reports.module#ReportsModule' }
         ]
     },    // passport
     {
diff --git a/src/app/routes/systems/account/account.component.html b/src/app/routes/systems/account/account.component.html
index 2fbcc16..a3e795f 100644
--- a/src/app/routes/systems/account/account.component.html
+++ b/src/app/routes/systems/account/account.component.html
@@ -144,7 +144,7 @@
                     <label for="accountName" >������</label>
                 </div>
                 <div nz-form-control nz-col [nzSm]="14" [nzXs]="24">
-                    <nz-input [nzSize]="'large'" nzReadonly="true" formControlName="accountName" [nzId]="'accountName'"></nz-input>
+                    <h4 class="h4">{{ getFormControl('accountName').value }}</h4>
                 </div>
             </div>
             <div nz-form-item nz-row>
diff --git a/src/assets/app-data.json b/src/assets/app-data.json
index 76b2b22..30c85ad 100644
--- a/src/assets/app-data.json
+++ b/src/assets/app-data.json
@@ -51,20 +51,15 @@
                   "text": "������������",
                   "link": "/sensors/basic"
                 }]
-              }, {
-                "text": "������������",
-                "icon": "icon-graph",
-                "children": [
-                  {
-                  "text": "������������",
-                  "link": "/analysis/query"
-                  }
-                ]
-              }, {
+              },{
                 "text": "������������",
                 "icon": "icon-chart",
                 "children": [
                   {
+                  "text": "������������",
+                  "link": "/reports/query"
+                  },
+                  {
                   "text": "���������������",
                   "link": "/reports/demo"
                   },

--
Gitblit v1.8.0