3 files added
	
		
		3 files modified
	
	
 
	
	
	
	
	
	
	
	
| New file | 
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <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> | 
|---|
|  |  |  |  | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | @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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | 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: 'environment-management', | 
|---|
|  |  |  | templateUrl: './management.component.html', | 
|---|
|  |  |  | styleUrls: ['./management.component.less'], | 
|---|
|  |  |  | providers: [DeviceService] | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | export class EnvironmentManagementComponent 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | ]; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | import { MonitorpointComponent } from 'app/routes/statistics/monitorpoint/monitorpoint.component'; | 
|---|
|  |  |  | import { CalendarComponent } from 'app/routes/statistics/calendar/calendar.component'; | 
|---|
|  |  |  | import { AnalysisComponent } from 'app/routes/statistics/analysis/analysis.component'; | 
|---|
|  |  |  | import { EnvironmentManagementComponent } from 'app/routes/environment/management/management.component'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const routes: Routes = [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | { path: 'statistics/monitorpoint', component: MonitorpointComponent }, | 
|---|
|  |  |  | { path: 'statistics/calendar', component: CalendarComponent }, | 
|---|
|  |  |  | { path: 'statistics/analysis', component: AnalysisComponent } | 
|---|
|  |  |  | { path: 'statistics/analysis', component: AnalysisComponent }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | { path: 'environment/management', component: EnvironmentManagementComponent } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | },    // passport | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | import { MonitorpointComponent } from './statistics/monitorpoint/monitorpoint.component'; | 
|---|
|  |  |  | import { CalendarComponent } from './statistics/calendar/calendar.component'; | 
|---|
|  |  |  | import { AnalysisComponent } from './statistics/analysis/analysis.component'; | 
|---|
|  |  |  | import { EnvironmentManagementComponent } from './environment/management/management.component'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // Statics | 
|---|
|  |  |  | import 'rxjs/add/observable/throw'; | 
|---|
|  |  |  | 
|---|
|  |  |  | PollutionManagementComponent, | 
|---|
|  |  |  | MonitorpointComponent, | 
|---|
|  |  |  | CalendarComponent, | 
|---|
|  |  |  | AnalysisComponent | 
|---|
|  |  |  | AnalysisComponent, | 
|---|
|  |  |  | EnvironmentManagementComponent | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | providers: [ | 
|---|
|  |  |  | _HttpClient, | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | "text": "环境管理", | 
|---|
|  |  |  | "icon": "icon-directions", | 
|---|
|  |  |  | "children": [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | "text": "考核指标", | 
|---|
|  |  |  | "link": "/" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | , | 
|---|
|  |  |  | { | 
|---|
|  |  |  | "text": "分析", | 
|---|
|  |  |  | "link": "/" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | "link": "/environment/management" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | "text": "污染管控", | 
|---|