| | |
| | | <div nz-row> |
| | | <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="16"> |
| | | <div class="bar"> |
| | | <bar height="295" [title]="'2018年月度所有警报统计'" [data]="data.alarmData" color="purple"></bar> |
| | | <bar height="295" [title]="'所有警报月度统计'" [data]="data.alarmData" color="purple"></bar> |
| | | </div> |
| | | </div> |
| | | <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="8"> |
| | |
| | | <div nz-row> |
| | | <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="16"> |
| | | <div class="bar"> |
| | | <bar height="295" [title]="'2018年月度一级警报统计'" [data]="data.alarmData" color="yellow"></bar> |
| | | <bar height="295" [title]="'一级警报月度统计'" [data]="data.alarmData_1" color="yellow"></bar> |
| | | </div> |
| | | </div> |
| | | <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="8"> |
| | |
| | | <div nz-row> |
| | | <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="16"> |
| | | <div class="bar"> |
| | | <bar height="295" [title]="'2018年月度二级警报统计'" [data]="data.alarmData" color="orange"></bar> |
| | | <bar height="295" [title]="'二级警报月度统计'" [data]="data.alarmData_2" color="orange"></bar> |
| | | </div> |
| | | </div> |
| | | <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="8"> |
| | |
| | | <div nz-row> |
| | | <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="16"> |
| | | <div class="bar"> |
| | | <bar height="295" [title]="'2018年月度三级警报统计'" [data]="data.alarmData" color="red"></bar> |
| | | <bar height="295" [title]="'三级警报月度统计'" [data]="data.alarmData_3" color="red"></bar> |
| | | </div> |
| | | </div> |
| | | <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="8"> |
| | |
| | | </nz-card> |
| | | </div> |
| | | <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="12"> |
| | | <nz-card [nzLoading]="loading" [nzBordered]="false" nzTitle="销售额类别占比" [nzBodyStyle]="{'padding.px': 24}" class="sales-card" style="min-height: 482px;"> |
| | | <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"> |
| | | <nz-dropdown> |
| | | <nz-icon class="icon-group" nz-dropdown nzType="ellipsis"></nz-icon> |
| | | <ul nz-menu> |
| | | <li nz-menu-item>操作一</li> |
| | | <li nz-menu-item>操作二</li> |
| | | </ul> |
| | | </nz-dropdown> |
| | | <div class="sales-type-radio"> |
| | | <nz-radio-group [(ngModel)]="salesType" (ngModelChange)="changeSaleType()" [nzSize]="'large'"> |
| | | <label nz-radio-button [nzValue]="'all'"><span>全部渠道</span></label> |
| | | <label nz-radio-button [nzValue]="'online'"><span>线上</span></label> |
| | | <label nz-radio-button [nzValue]="'offline'"><span>门店</span></label> |
| | | <label nz-radio-button [nzValue]="'0'"><span>全部</span></label> |
| | | <label nz-radio-button [nzValue]="'1'"><span>一级</span></label> |
| | | <label nz-radio-button [nzValue]="'2'"><span>二级</span></label> |
| | | <label nz-radio-button [nzValue]="'3'"><span>三级</span></label> |
| | | </nz-radio-group> |
| | | </div> |
| | | </div> |
| | | </ng-template> |
| | | <ng-template #body> |
| | | <h4 class="margin:8px 0 32px 0;">销售额</h4> |
| | | <pie |
| | | [hasLegend]="true" |
| | | subTitle="销售额" |
| | | [height]="248" |
| | | [lineWidth]="4" |
| | | [total]="salesTotal" |
| | | [data]="salesPieData" |
| | | [valueFormat]="handlePieValueFormat"> |
| | | </pie> |
| | | <h4 class="margin:8px 0 32px 0;">警报占比</h4> |
| | | <pie [hasLegend]="true" subTitle="警报数量" [height]="248" [lineWidth]="4" [total]="salesTotal" [data]="salesPieData" [valueFormat]="handlePieValueFormat"></pie> |
| | | </ng-template> |
| | | </nz-card> |
| | | </div> |
| | |
| | | this.avgDeviceCount = (this.totalDeviceCount/12).toFixed(0); |
| | | |
| | | const alarmData = []; |
| | | const alarmData_1 = []; |
| | | const alarmData_2 = []; |
| | | const alarmData_3 = []; |
| | | for (let i = 0; i < 12; i += 1) { |
| | | alarmData.push({ |
| | | x: `${i + 1}月`, |
| | | y: Math.floor(Math.random() * 1000) + 200 |
| | | }); |
| | | alarmData.push({ x: `${i + 1}月`, y: Math.floor(Math.random() * 1000) + 500 }); |
| | | alarmData_1.push({ x: `${i + 1}月`, y: Math.floor(Math.random() * 1000) + 100 }); |
| | | alarmData_2.push({ x: `${i + 1}月`, y: Math.floor(Math.random() * 1000) + 200 }); |
| | | alarmData_3.push({ x: `${i + 1}月`, y: Math.floor(Math.random() * 1000) + 300 }); |
| | | } |
| | | |
| | | |
| | | |
| | | const alertData = []; |
| | | const alertData_1 = []; |
| | | const alertData_2 = []; |
| | | const alertData_3 = []; |
| | | for (let i = 0; i < 7; i += 1) { |
| | | alertData.push({ x: this.rankingListData[i].title, y: Math.floor(Math.random() * 1000) + 500 }); |
| | | alertData_1.push({ x: this.rankingListData[i].title, y: Math.floor(Math.random() * 1000) + 100 }); |
| | | alertData_2.push({ x: this.rankingListData[i].title, y: Math.floor(Math.random() * 1000) + 200 }); |
| | | alertData_3.push({ x: this.rankingListData[i].title, y: Math.floor(Math.random() * 1000) + 300 }); |
| | | } |
| | | |
| | | const visitData = []; |
| | | const beginDay = new Date().getTime(); |
| | |
| | | y: fakeY2[i] |
| | | }); |
| | | } |
| | | |
| | | |
| | | const salesTypeData = [ |
| | | { |
| | | x: "家用电器", |
| | | y: 4544 |
| | | }, |
| | | { |
| | | x: "食用酒水", |
| | | y: 3321 |
| | | }, |
| | | { |
| | | x: "个护健康", |
| | | y: 3113 |
| | | }, |
| | | { |
| | | x: "服饰箱包", |
| | | y: 2341 |
| | | }, |
| | | { |
| | | x: "母婴产品", |
| | | y: 1231 |
| | | }, |
| | | { |
| | | x: "其他", |
| | | y: 1231 |
| | | } |
| | | ]; |
| | | |
| | | const salesTypeDataOnline = [ |
| | | { |
| | | x: "家用电器", |
| | | y: 244 |
| | | }, |
| | | { |
| | | x: "食用酒水", |
| | | y: 321 |
| | | }, |
| | | { |
| | | x: "个护健康", |
| | | y: 311 |
| | | }, |
| | | { |
| | | x: "服饰箱包", |
| | | y: 41 |
| | | }, |
| | | { |
| | | x: "母婴产品", |
| | | y: 121 |
| | | }, |
| | | { |
| | | x: '其他', |
| | | y: 111 |
| | | } |
| | | ]; |
| | | |
| | | const salesTypeDataOffline = [ |
| | | { |
| | | x: '家用电器', |
| | | y: 99 |
| | | }, |
| | | { |
| | | x: '个护健康', |
| | | y: 188 |
| | | }, |
| | | { |
| | | x: '服饰箱包', |
| | | y: 344 |
| | | }, |
| | | { |
| | | x: '母婴产品', |
| | | y: 255 |
| | | }, |
| | | { |
| | | x: '其他', |
| | | y: 65 |
| | | } |
| | | ]; |
| | | |
| | | const offlineData = []; |
| | | for (let i = 0; i < 10; i += 1) { |
| | |
| | | } |
| | | var res = { |
| | | alarmData: alarmData, |
| | | alarmData_1: alarmData_1, |
| | | alarmData_2: alarmData_2, |
| | | alarmData_3: alarmData_3, |
| | | |
| | | alertData: alertData, |
| | | alertData_1: alertData_1, |
| | | alertData_2: alertData_2, |
| | | alertData_3: alertData_3, |
| | | |
| | | visitData: visitData, |
| | | visitData2: visitData2, |
| | | salesTypeData: salesTypeData, |
| | | salesTypeDataOnline: salesTypeDataOnline, |
| | | salesTypeDataOffline: salesTypeDataOffline, |
| | | |
| | | offlineData: offlineData, |
| | | offlineChartData: offlineChartData, |
| | | radarOriginData: radarOriginData, |
| | |
| | | this.changeSaleType(); |
| | | |
| | | this.radarData = res.radarData; |
| | | |
| | | const titles = [ |
| | | 'Alipay', |
| | | 'Angular', |
| | | 'Ant Design', |
| | | 'Ant Design Pro', |
| | | 'Bootstrap', |
| | | 'React', |
| | | 'Vue', |
| | | 'Webpack' |
| | | ]; |
| | | |
| | | const avatars = [ |
| | | 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay |
| | |
| | | ]; |
| | | } |
| | | |
| | | salesType = 'all'; |
| | | salesType = '0'; |
| | | salesPieData: any; |
| | | salesTotal = 0; |
| | | changeSaleType() { |
| | | this.salesPieData = this.salesType === 'all' ? this.data.salesTypeData : ( |
| | | this.salesType === 'online' ? this.data.salesTypeDataOnline : this.data.salesTypeDataOffline |
| | | ); |
| | | if(this.salesType == '0') { |
| | | this.salesPieData = this.data.alertData; |
| | | } else if(this.salesType == '1') { |
| | | this.salesPieData = this.data.alertData_1; |
| | | } else if(this.salesType == '2') { |
| | | this.salesPieData = this.data.alertData_2; |
| | | } else if(this.salesType == '3') { |
| | | this.salesPieData = this.data.alertData_3; |
| | | } |
| | | if (this.salesPieData) this.salesTotal = this.salesPieData.reduce((pre, now) => now.y + pre, 0); |
| | | } |
| | | |
| | | handlePieValueFormat(value: any) { |
| | | return yuan(value); |
| | | return value + "次"; |
| | | } |
| | | |
| | | _activeTab = 0; |