Browse Source

[合并] 合并代码

master
陈鹏飞 4 years ago
parent
commit
eb31ca1e6e
  1. 21
      src/app/statistic-analysis/addUnit/add-unit-one/add-unit-one.component.ts
  2. 30
      src/app/statistic-analysis/addUnit/add-unit-three-bar-details/add-unit-three-bar-details.component.html
  3. 76
      src/app/statistic-analysis/addUnit/add-unit-three-bar-details/add-unit-three-bar-details.component.scss
  4. 25
      src/app/statistic-analysis/addUnit/add-unit-three-bar-details/add-unit-three-bar-details.component.spec.ts
  5. 179
      src/app/statistic-analysis/addUnit/add-unit-three-bar-details/add-unit-three-bar-details.component.ts
  6. 24
      src/app/statistic-analysis/addUnit/add-unit-three-line-details/add-unit-three-line-details.component.html
  7. 76
      src/app/statistic-analysis/addUnit/add-unit-three-line-details/add-unit-three-line-details.component.scss
  8. 25
      src/app/statistic-analysis/addUnit/add-unit-three-line-details/add-unit-three-line-details.component.spec.ts
  9. 194
      src/app/statistic-analysis/addUnit/add-unit-three-line-details/add-unit-three-line-details.component.ts
  10. 4
      src/app/statistic-analysis/addUnit/add-unit-two-time/add-unit-two-time.component.html
  11. 6
      src/app/statistic-analysis/addUnit/add-unit-two-time/add-unit-two-time.component.scss
  12. 38
      src/app/statistic-analysis/addUnit/add-unit-two-time/add-unit-two-time.component.ts
  13. 15
      src/app/statistic-analysis/addUnit/add-unit-two-type-details/add-unit-two-type-details.component.ts
  14. 4
      src/app/statistic-analysis/addUnit/add-unit-two-type-statistics/add-unit-two-type-statistics.component.html
  15. 4
      src/app/statistic-analysis/addUnit/add-unit-two-type-statistics/add-unit-two-type-statistics.component.scss
  16. 59
      src/app/statistic-analysis/addUnit/add-unit-two-type-statistics/add-unit-two-type-statistics.component.ts
  17. 11
      src/app/statistic-analysis/buildingType/building-type-one/building-type-one.component.ts
  18. 9
      src/app/statistic-analysis/buildingType/building-type-three-details/building-type-three-details.component.ts
  19. 2
      src/app/statistic-analysis/buildingType/building-type-two-forward/building-type-two-forward.component.html
  20. 51
      src/app/statistic-analysis/buildingType/building-type-two-forward/building-type-two-forward.component.ts
  21. 2
      src/app/statistic-analysis/buildingType/building-type-two-reverse/building-type-two-reverse.component.html
  22. 55
      src/app/statistic-analysis/buildingType/building-type-two-reverse/building-type-two-reverse.component.ts
  23. 14
      src/app/statistic-analysis/deleteUnit/delete-four/delete-four.component.html
  24. 13
      src/app/statistic-analysis/deleteUnit/delete-four/delete-four.component.scss
  25. 76
      src/app/statistic-analysis/deleteUnit/delete-four/delete-four.component.ts
  26. 143
      src/app/statistic-analysis/deleteUnit/delete-one/delete-one.component.ts
  27. 27
      src/app/statistic-analysis/deleteUnit/delete-there/delete-there.component.html
  28. 22
      src/app/statistic-analysis/deleteUnit/delete-there/delete-there.component.scss
  29. 111
      src/app/statistic-analysis/deleteUnit/delete-there/delete-there.component.ts
  30. 91
      src/app/statistic-analysis/deleteUnit/delete-two/delete-two.component.html
  31. 95
      src/app/statistic-analysis/deleteUnit/delete-two/delete-two.component.scss
  32. 184
      src/app/statistic-analysis/deleteUnit/delete-two/delete-two.component.ts
  33. 40
      src/app/statistic-analysis/echarts-data.service.ts
  34. 14
      src/app/statistic-analysis/state/page-one/page-one.component.ts
  35. 67
      src/app/statistic-analysis/state/page-two-name/page-two-name.component.ts
  36. 13
      src/app/statistic-analysis/state/page-zhong-dui-details/page-zhong-dui-details.component.ts
  37. 17
      src/app/statistic-analysis/statistic-analysis-routing.module.ts
  38. 4
      src/app/statistic-analysis/statistic-analysis.module.ts

21
src/app/statistic-analysis/addUnit/add-unit-one/add-unit-one.component.ts

@ -10,14 +10,25 @@ export class AddUnitOneComponent implements OnInit {
constructor(private router: Router) { }
setTimeoutObj//延时器需要清除
ngOnInit(): void {
window.setTimeout(()=>{
this.setTimeoutObj = window.setTimeout(()=>{
this.initCharts()
},0)
}
//组件销毁时
ngOnDestroy(){
window.clearTimeout(this.setTimeoutObj);
this.indexBzt.clear()
this.indexBzt.dispose()
}
indexBzt//首页饼状图实例
/* 首页饼状图 */
initCharts(){
let indexBzt = echarts.init(document.getElementById('indexBzt'));
this.indexBzt = echarts.init(document.getElementById('indexBzt'));
let options={
title: {
text: '新增单位统计(8900家)',
@ -86,10 +97,10 @@ export class AddUnitOneComponent implements OnInit {
}
]
};
indexBzt.on('click', (params) => {
this.indexBzt.on('click', (params) => {
this.router.navigateByUrl('/statisticanalysis/addUnit_one/addUnit_two_type');
});
indexBzt.setOption(options);
this.indexBzt.setOption(options);
}
biaogeTishi(biaotou:string){
var shuju='[{"name":"浦东支队","number":"156","zhanbi":"3%"},{"name":"黄埔支队","number":"144","zhanbi":"2.8%"},'
@ -121,4 +132,6 @@ export class AddUnitOneComponent implements OnInit {
res+='</table></div></div>'
return res
}
}

30
src/app/statistic-analysis/addUnit/add-unit-three-bar-details/add-unit-three-bar-details.component.html

@ -0,0 +1,30 @@
<div class="box">
<div class="header">
<div class="queryField">
<form #form="ngForm" (ngSubmit)="Submit(form.value)">
<span>查询年份:</span>
<mat-form-field>
<mat-select [(ngModel)]="selectOneYear" name='selectOneYear'>
<mat-option *ngFor="let item of years" [value]="item">{{item}}</mat-option>
</mat-select>
</mat-form-field>
<span>查询月份:</span>
<mat-form-field>
<mat-select [(ngModel)]="selectStartMonth" name='selectStartMonth'>
<mat-option *ngFor="let item of selectMonth" [value]="item">{{item}}</mat-option>
</mat-select>
</mat-form-field>
<button type="submit" mat-raised-button color="primary">查询</button>
</form>
</div>
<div class="btnbox">
<button mat-stroked-button (click)="backBtn()">返回</button>
</div>
</div>
<div class="echartsbox">
<div id="barEchart">
</div>
</div>
</div>

76
src/app/statistic-analysis/addUnit/add-unit-three-bar-details/add-unit-three-bar-details.component.scss

@ -0,0 +1,76 @@
.box{
width: 100%;
height: 92%;
display: flex;
flex-direction: column;
overflow: hidden;
position: relative;
.echartsbox{
width: 100%;
height: 100%;
// overflow: auto;
}
#Line{
width: 50%;
height: 420px;
margin: 50px auto;
}
}
.publicCss{
height: 350px;
width: 50%;
display: inline-block;
box-sizing: border-box;
padding: 20px;
}
//头部搜索栏
.header {
border-bottom: 1px solid #999;
height: 80px;
min-height: 81px;;
box-sizing: border-box;
// padding: 0 15px;
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items:center;
justify-content:center;
.queryField {
margin: 0 10px;
font-size: 14px;
.mat-form-field {
width: 130px;
max-height: 50px;;
margin: 0 15px 0 10px;
}
}
.btnbox{
height: 80px;
display: flex;
flex-direction:column;
justify-content: space-around;
position: fixed;
top: 64px;
right: 4%;
width: 88px;
button{
width: 88px;
height: 36px;
}
}
}
.echartsbox{
width: 100%;
height: 100%;
overflow: auto;
#barEchart{
width: 100%;
height: 350px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
}

25
src/app/statistic-analysis/addUnit/add-unit-three-bar-details/add-unit-three-bar-details.component.spec.ts

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AddUnitThreeBarDetailsComponent } from './add-unit-three-bar-details.component';
describe('AddUnitThreeBarDetailsComponent', () => {
let component: AddUnitThreeBarDetailsComponent;
let fixture: ComponentFixture<AddUnitThreeBarDetailsComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ AddUnitThreeBarDetailsComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AddUnitThreeBarDetailsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

179
src/app/statistic-analysis/addUnit/add-unit-three-bar-details/add-unit-three-bar-details.component.ts

@ -0,0 +1,179 @@
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';
import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';
import { ActivatedRoute } from '@angular/router';
import { EchartsDataService } from '../../echarts-data.service';
declare var echarts: any;
@Component({
selector: 'app-add-unit-three-bar-details',
templateUrl: './add-unit-three-bar-details.component.html',
styleUrls: ['./add-unit-three-bar-details.component.scss']
})
export class AddUnitThreeBarDetailsComponent implements OnInit {
constructor(private router: Router,public dialog: MatDialog,public snackBar: MatSnackBar,private serviceData: EchartsDataService,public route: ActivatedRoute) { }
time:String
buildingTypeName:String
level:String
setTimeoutObj//延时器需要清除
ngOnInit(): void {
this.dateInit ()
this.route.queryParams.subscribe(params => {
this.time = params['time'];
this.buildingTypeName = params['buildingTpye'];
this.level = params['level'];
});
this.setTimeoutObj = window.setTimeout(()=>{
this.detailEcharts()
},0)
}
ngOnDestroy(){
window.clearTimeout(this.setTimeoutObj);
this.detailPlanEchart.clear()
this.detailPlanEchart.dispose()
}
selectType:string = 'month'; //选择当前的 查询类型 按月/年
//查询数据
years:any = []
selectMonth:any = [1,2,3,4,5,6,7,8,9,10,11,12]
//日期初始化
dateInit () {
let date = (new Date()).getFullYear()
for (let i=date; i>=date-10;i--) {
this.years.unshift(i)
}
}
selectOneYear:any = (new Date()).getFullYear() //开始年份
selectStartMonth:any = 1 //开始月份
Submit (e) {
}
selectStartYear:any = (new Date()).getFullYear() //开始年份
topTextlabel = {
show: true, // 开启显示
position: 'top', // 在上方显示
distance: 10, // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。
verticalAlign: 'middle',
textStyle: { // 数值样式
color: 'black',
fontSize: 12
}
}//柱状图数值顶部显示
zhongNameData = ["浦东中队","黄埔中队","徐汇中队","长宁中队","静安中队","普陀中队","虹口中队","杨浦中队","闵行中队","宝山中队","嘉定中队"]
zhongNumData = [200,190,180,170,160,150,140,130,120,110,100]
zhiNameData = ["浦东支队","黄埔支队","徐汇支队","长宁支队","静安支队","普陀支队","虹口支队","杨浦支队","闵行支队","宝山支队","嘉定支队"]
zhiNumData = [300,290,280,270,260,250,240,230,220,210,200]
detailPlanEchart
option
detailEcharts(){
this.detailPlanEchart = echarts.init(document.getElementById('barEchart'));
this.option = {
title: {
text: this.time + '(' +this.buildingTypeName + ')',
left: "center",
textStyle: {
fontSize: 28
}
},
xAxis: {
type: 'category',
data: this.zhiNameData,
// axisLabel: this.axisLabel
},
yAxis: {
type: 'value'
},
tooltip: {
trigger: 'item',
formatter: (params)=>{
return this.tableTooltip(params)
},
backgroundColor:'rgba(255,255,255,1)',//通过设置rgba调节背景颜色与透明度
borderWidth:'1',
borderRadius :'0',
position:this.serviceData.tableTooltipNoShow2
},
series: [{
data: this.zhiNumData,
type: 'bar',
showBackground: true,
barWidth :'58',
backgroundStyle: {
color: 'rgba(220, 220, 220, 0.8)'
},
label: this.topTextlabel
}]
};
this.detailPlanEchart.setOption(this.option);
this.detailPlanEchart.on("click",(params)=>{
if(this.level == "zhidui"){//如果是支队则跳转
// this.router.navigate(['/statisticanalysis/addUnit_one/addUnit_two_time/three_barDetails'],{queryParams:{'level':'zhongdui','time':params.name,'buildingTpye':this.buildingTypeName}});
this.level = "zhongdui"
this.option.title.text = params.name + '(' +this.buildingTypeName + ')'
this.option.xAxis.data = this.zhongNameData
this.option.series[0].data = this.zhongNumData
this.detailPlanEchart.setOption(this.option)
}else{
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('已到达最底层','确定',config);
}
})
}
//返回按钮
backBtn(){
if(this.level == "zhongdui"){
this.level = "zhidui"
this.option.title.text = this.time + '(' +this.buildingTypeName + ')'
this.option.xAxis.data = this.zhiNameData
this.option.series[0].data = this.zhiNumData
this.detailPlanEchart.setOption(this.option)
}else{
window.history.go(-1)
}
}
tableTooltip(params:any){
var data
if(this.level == "zhidui"){
data = this.serviceData.tableDataZhong
}else{
data = [
{name:params.name,number:params.value,zhanbi:(params.value/1340 * 100).toFixed(2) + "%"}
]
}
var res = '<div class="tishi" style=" backgroundColor:rgba(255,255,255,1);width:100%;height:100%;"><div style="padding:10px 0 5px 0"><span style="color:#000000;font-size:30px;text-align: center;display:block;">'+params.name+'</span></div>'
res+='</br><div style="width:300px;height:100%;padding:0 20px 15px 20px"><table style="width:300px; background:#FFFFFF; color:#000000;border-collapse:collapse;"cellspacing="0"; >';
res+='<thead><tr>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">名称</td>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">数量</td>'
res+='<td style="text-align:center;width:30%;border:1px solid #000000">总占比</td>'
res+='</tr></thead>'
res+='<tbody>';
for(var i=0;i<data.length;i++){
res+='<tr>'
res+='<td style="text-align:center;border:1px solid #000000">'+data[i].name+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+data[i].number+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+data[i].zhanbi+'</td></tr>'
}
res+='</tbody>'
// res+='<tfoot><td style="text-align:center;border:1px solid #000000">总计</td><td style="text-align:center;border:1px solid #000000">1356</td><td style="text-align:center;border:1px solid #000000">19%</td></tfoot>'
res+='</table></div></div>'
return res
}
}

24
src/app/statistic-analysis/addUnit/add-unit-three-line-details/add-unit-three-line-details.component.html

@ -0,0 +1,24 @@
<div class="box">
<div class="header">
<div class="queryField">
<form #form="ngForm" (ngSubmit)="Submit(form.value)">
<span>查询年份:</span>
<mat-form-field>
<mat-select [(ngModel)]="selectOneYear" name='selectOneYear'>
<mat-option *ngFor="let item of years" [value]="item">{{item}}</mat-option>
</mat-select>
</mat-form-field>
<button type="submit" mat-raised-button color="primary">查询</button>
</form>
</div>
<div class="btnbox">
<button mat-stroked-button (click)="backBtn()">返回</button>
</div>
</div>
<div class="echartsbox">
<div id="barEchart">
</div>
</div>
</div>

76
src/app/statistic-analysis/addUnit/add-unit-three-line-details/add-unit-three-line-details.component.scss

@ -0,0 +1,76 @@
.box{
width: 100%;
height: 92%;
display: flex;
flex-direction: column;
overflow: hidden;
position: relative;
.echartsbox{
width: 100%;
height: 100%;
overflow: auto;
}
#Line{
width: 50%;
height: 420px;
margin: 50px auto;
}
}
.publicCss{
height: 350px;
width: 50%;
display: inline-block;
box-sizing: border-box;
padding: 20px;
}
//头部搜索栏
.header {
border-bottom: 1px solid #999;
height: 80px;
min-height: 81px;;
box-sizing: border-box;
// padding: 0 15px;
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items:center;
justify-content:center;
.queryField {
margin: 0 10px;
font-size: 14px;
.mat-form-field {
width: 130px;
max-height: 50px;;
margin: 0 15px 0 10px;
}
}
.btnbox{
height: 80px;
display: flex;
flex-direction:column;
justify-content: space-around;
position: fixed;
top: 64px;
right: 4%;
width: 88px;
button{
width: 88px;
height: 36px;
}
}
}
.echartsbox{
width: 100%;
height: 100%;
overflow: auto;
#barEchart{
width: 60%;
height: 350px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
}

25
src/app/statistic-analysis/addUnit/add-unit-three-line-details/add-unit-three-line-details.component.spec.ts

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AddUnitThreeLineDetailsComponent } from './add-unit-three-line-details.component';
describe('AddUnitThreeLineDetailsComponent', () => {
let component: AddUnitThreeLineDetailsComponent;
let fixture: ComponentFixture<AddUnitThreeLineDetailsComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ AddUnitThreeLineDetailsComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AddUnitThreeLineDetailsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

194
src/app/statistic-analysis/addUnit/add-unit-three-line-details/add-unit-three-line-details.component.ts

@ -0,0 +1,194 @@
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';
import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';
import { ActivatedRoute } from '@angular/router';
import { EchartsDataService } from '../../echarts-data.service';
declare var echarts: any;
@Component({
selector: 'app-add-unit-three-line-details',
templateUrl: './add-unit-three-line-details.component.html',
styleUrls: ['./add-unit-three-line-details.component.scss']
})
export class AddUnitThreeLineDetailsComponent implements OnInit {
constructor(private router: Router,public dialog: MatDialog,public snackBar: MatSnackBar,private serviceData: EchartsDataService,public route: ActivatedRoute) { }
year:String
buildingTypeName:String
level:String
setTimeoutObj//延时器需要清除
ngOnInit(): void {
this.dateInit ()
this.route.queryParams.subscribe(params => {
this.year = params['year'];
this.buildingTypeName = params['buildingType'];
});
this.setTimeoutObj = window.setTimeout(()=>{
this.detailEcharts()
})
}
ngOnDestroy(){
window.clearTimeout(this.setTimeoutObj);
this.detailPlanEchart.clear()
this.detailPlanEchart.dispose()
}
selectType:string = 'month'; //选择当前的 查询类型 按月/年
//查询数据
years:any = []
selectMonth:any = [1,2,3,4,5,6,7,8,9,10,11,12]
//日期初始化
dateInit () {
let date = (new Date()).getFullYear()
for (let i=date; i>=date-10;i--) {
this.years.unshift(i)
}
}
selectOneYear:any = (new Date()).getFullYear() //开始年份
selectStartMonth:any = 1 //开始月份
Submit (e) {
}
selectStartYear:any = (new Date()).getFullYear() //开始年份
topTextlabel = {
show: true, // 开启显示
position: 'top', // 在上方显示
distance: 10, // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。
verticalAlign: 'middle',
textStyle: { // 数值样式
color: 'black',
fontSize: 12
}
}//柱状图数值顶部显示
zhongNameData = ["浦东中队","黄埔中队","徐汇中队","长宁中队","静安中队","普陀中队","虹口中队","杨浦中队","闵行中队","宝山中队","嘉定中队"]
zhongNumData = [200,190,180,170,160,150,140,130,120,110,100]
zhiNameData = ["浦东支队","黄埔支队","徐汇支队","长宁支队","静安支队","普陀支队","虹口支队","杨浦支队","闵行支队","宝山支队","嘉定支队"]
zhiNumData = [300,290,280,270,260,250,240,230,220,210,200]
detailPlanEchart
option
date = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月','9月']
dateNum = [270, 253, 244, 199, 189, 173, 160, 198,200]
detailEcharts(){
this.detailPlanEchart = echarts.init(document.getElementById('barEchart'), 'skinUpp');
this.option = {
grid: {
top: 50,
left:40,
right: 20,
bottom: 20,
},
// 标题
title: {
text: this.buildingTypeName + '(' + this.year + ')',
top: -4,
left: 'center',
textStyle:{
//文字颜色
color:'#000',
}
},
//提示框
tooltip: {
trigger: 'axis',
backgroundColor:'rgba(255,255,255,1)',//通过设置rgba调节背景颜色与透明度
borderWidth:'1',
borderRadius :'0',
formatter: (params)=>{
if(params[0].seriesName == "year"){
return this.serviceData.tableTooltip(this.serviceData.monthTooltip,params[0].name)
}else{
return this.serviceData.tableTooltip(this.serviceData.tableDataZhi,params[0].name)
}
},
position:this.serviceData.tableTooltipNoShow2
},
// x轴
xAxis: {
type: 'category',
data: this.date,
axisLabel: {
color: "#000", //刻度线标签颜色
},
//设置坐标轴字体颜色和宽度
axisLine: {
lineStyle: {
color: "#000",
},
},
splitLine: {//分割线配置
show:true,
lineStyle: {
color: '#999',
}
}
},
// y轴
yAxis: {
type: 'value',
name: '个',
axisLabel: {
color: "#000" //刻度线标签颜色
},
//设置坐标轴字体颜色和宽度
axisLine: {
lineStyle: {
color: "#000",
}
}
},
// 数据
series: [{
name: 'xxx',
type: 'line',
data: this.dateNum,
}
],
};
this.detailPlanEchart.setOption(this.option);
this.detailPlanEchart.getZr().on('click',params=>{
const pointInPixel= [params.offsetX, params.offsetY];
if (this.detailPlanEchart.containPixel('grid',pointInPixel)) {
let xIndex=this.detailPlanEchart.convertFromPixel({seriesIndex:0},[params.offsetX, params.offsetY])[0];
/*事件处理代码书写位置*/
this.router.navigate(['/statisticanalysis/addUnit_one/addUnit_two_time/three_barDetails'],{queryParams:{'level':'zhidui','time':this.option.xAxis.data[xIndex],'buildingTpye':this.buildingTypeName}});
}
});
}
//返回按钮
backBtn(){
window.history.go(-1)
}
tableTooltip(params:any){
var data = [
{name:params.name,number:params.value,zhanbi:(params.value/1340 * 100).toFixed(2) + "%"}
]
var res = '<div class="tishi" style=" backgroundColor:rgba(255,255,255,1);width:100%;height:100%;"><div style="padding:10px 0 5px 0"><span style="color:#000000;font-size:30px;text-align: center;display:block;">'+params.name+'</span></div>'
res+='</br><div style="width:300px;height:100%;padding:0 20px 15px 20px"><table style="width:300px; background:#FFFFFF; color:#000000;border-collapse:collapse;"cellspacing="0"; >';
res+='<thead><tr>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">名称</td>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">数量</td>'
res+='<td style="text-align:center;width:30%;border:1px solid #000000">总占比</td>'
res+='</tr></thead>'
res+='<tbody>';
for(var i=0;i<data.length;i++){
res+='<tr>'
res+='<td style="text-align:center;border:1px solid #000000">'+data[i].name+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+data[i].number+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+data[i].zhanbi+'</td></tr>'
}
res+='</tbody>'
// res+='<tfoot><td style="text-align:center;border:1px solid #000000">总计</td><td style="text-align:center;border:1px solid #000000">1356</td><td style="text-align:center;border:1px solid #000000">19%</td></tfoot>'
res+='</table></div></div>'
return res
}
}

4
src/app/statistic-analysis/addUnit/add-unit-two-time/add-unit-two-time.component.html

@ -60,8 +60,8 @@
<button mat-raised-button color="primary" style="margin-left: 10px;" (click)='toggleFalse()'>纵向查询</button>
</div> -->
<div class="btnbox">
<button mat-stroked-button (click)="forward()">类型统计</button>
<button mat-stroked-button (click)="reverse()">区间选择</button>
<button mat-stroked-button (click)="forward()">类型统计</button>
<button mat-stroked-button (click)="reverse()" [ngClass]="{'selectedBtn': true}">区间选择</button>
</div>
</div>
<div class="echartsbox">

6
src/app/statistic-analysis/addUnit/add-unit-two-time/add-unit-two-time.component.scss

@ -60,4 +60,8 @@
}
}
}
}
.selectedBtn{
background-color: #2196f3;
color: white;
}

38
src/app/statistic-analysis/addUnit/add-unit-two-time/add-unit-two-time.component.ts

@ -17,15 +17,24 @@ export class AddUnitTwoTimeComponent implements OnInit {
this.router.navigate(['/statisticanalysis/addUnit_one/addUnit_two_time'])
}
constructor(private router: Router,public dialog: MatDialog,public snackBar: MatSnackBar,private serviceData: EchartsDataService) { }
setTimeoutObj//延时器需要清除
ngOnInit(): void {
this.dateInit ()
setTimeout(() => {
this.setTimeoutObj = setTimeout(() => {
this.oneInit (this.date,this.dateNum)
this.twoInit (this.date,this.dateNum,'year')
this.twoInit (this.date,this.dateNum,'month')
}, 0);
}
ngOnDestroy(){
window.clearTimeout(this.setTimeoutObj);
this.chartQusj.clear()
this.chartQusj.dispose()
this.forArr.forEach(item => {
item.echart.clear()
item.echart.dispose()
})
}
selectType:string = 'month'; //选择当前的 查询类型 按月/年
//查询数据
@ -103,6 +112,7 @@ export class AddUnitTwoTimeComponent implements OnInit {
}
chartQusj//顶部大图实例
forArr = [{id:'gaoceng',name:'高层',echart:null},
{id:'dixia',name:'地下',echart:null},
{id:'guidao',name:'轨道交通',echart:null},
@ -129,7 +139,7 @@ export class AddUnitTwoTimeComponent implements OnInit {
//新增数量统计
oneInit (date,dateNum) {
var chartQusj = echarts.init(document.getElementById('Line'), 'skinUpp');
this.chartQusj = echarts.init(document.getElementById('Line'), 'skinUpp');
var option = {
grid: {
top: 70,
@ -201,7 +211,7 @@ export class AddUnitTwoTimeComponent implements OnInit {
}
],
}
chartQusj.setOption(option);
this.chartQusj.setOption(option);
}
//剩余折线图
@ -233,7 +243,11 @@ export class AddUnitTwoTimeComponent implements OnInit {
borderWidth:'1',
borderRadius :'0',
formatter: (params)=>{
return this.serviceData.tableTooltip(this.serviceData.tableDataZhi,params[0].name)
if(params[0].seriesName == "year"){
return this.serviceData.tableTooltip(this.serviceData.monthTooltip,params[0].name)
}else{
return this.serviceData.tableTooltip(this.serviceData.tableDataZhi,params[0].name)
}
}
},
// x轴
@ -279,16 +293,18 @@ export class AddUnitTwoTimeComponent implements OnInit {
],
};
item.echart.setOption(option,true);
// item.echart.on('click', (params) => {
// console.log(params)
// });
item.echart.getZr().on('click',params=>{
const pointInPixel= [params.offsetX, params.offsetY];
if (item.echart.containPixel('grid',pointInPixel)) {
let xIndex=item.echart.convertFromPixel({seriesIndex:0},[params.offsetX, params.offsetY])[0];
/*事件处理代码书写位置*/
console.log(option.series[0].data[xIndex],option.xAxis.data[xIndex])
// console.log(option.series[0].data[xIndex],option.xAxis.data[xIndex],option.title.text,option.series[0].name)
if(option.series[0].name == "year"){
this.router.navigate(['/statisticanalysis/addUnit_one/addUnit_two_time/three_lineDetails'],{queryParams:{'year':this.date2[xIndex],'buildingType':option.title.text}});
}else{
this.router.navigate(['/statisticanalysis/addUnit_one/addUnit_two_time/three_barDetails'],{queryParams:{'level':'zhidui','time':option.xAxis.data[xIndex],'buildingTpye':option.title.text}});
}
}
});
})

15
src/app/statistic-analysis/addUnit/add-unit-two-type-details/add-unit-two-type-details.component.ts

@ -19,16 +19,21 @@ export class AddUnitTwoTypeDetailsComponent implements OnInit {
organizationName:String
buildingTypeName:String
setTimeoutObj//延时器需要清除
ngOnInit(): void {
this.route.queryParams.subscribe(params => {
this.organizationName = params['organizationName'];
this.buildingTypeName = params['buildingTypeName'];
});
window.setTimeout(()=>{
this.setTimeoutObj = window.setTimeout(()=>{
this.detailEcharts()
})
}
ngOnDestroy(){
window.clearTimeout(this.setTimeoutObj);
this.detailPlanEchart.clear()
this.detailPlanEchart.dispose()
}
topTextlabel = {
show: true, // 开启显示
position: 'top', // 在上方显示
@ -41,8 +46,10 @@ export class AddUnitTwoTypeDetailsComponent implements OnInit {
}//柱状图数值顶部显示
zhongNameData = ["浦东中队","黄埔中队","徐汇中队","长宁中队","静安中队","普陀中队","虹口中队","杨浦中队","闵行中队","宝山中队","嘉定中队"]
zhongNumData = [200,190,180,170,160,150,140,130,120,110,100]
detailPlanEchart//echarts实例
detailEcharts(){
var detailPlanEchart = echarts.init(document.getElementById('barEchart'));
this.detailPlanEchart = echarts.init(document.getElementById('barEchart'));
var option = {
title: {
text: this.buildingTypeName + '(' +this.organizationName + ')',
@ -79,7 +86,7 @@ export class AddUnitTwoTypeDetailsComponent implements OnInit {
label: this.topTextlabel
}]
};
detailPlanEchart.setOption(option);
this.detailPlanEchart.setOption(option);
}

4
src/app/statistic-analysis/addUnit/add-unit-two-type-statistics/add-unit-two-type-statistics.component.html

@ -1,8 +1,8 @@
<div class="box">
<div class="topbox">
<div class="btnbox">
<button mat-stroked-button (click)="forward()">类型统计</button>
<button mat-stroked-button (click)="reverse()">区间选择</button>
<button mat-stroked-button (click)="forward()" [ngClass]="{'selectedBtn': url == '/statisticanalysis/addUnit_one/addUnit_two_type'}">类型统计</button>
<button mat-stroked-button (click)="reverse()" [ngClass]="{'selectedBtn': url == '/statisticanalysis/addUnit_one/addUnit_two_time'}">区间选择</button>
</div>
</div>
<div class="echartsbox">

4
src/app/statistic-analysis/addUnit/add-unit-two-type-statistics/add-unit-two-type-statistics.component.scss

@ -42,4 +42,8 @@
display: inline-block;
box-sizing: border-box;
padding: 20px;
}
.selectedBtn{
background-color: #2196f3;
color: white;
}

59
src/app/statistic-analysis/addUnit/add-unit-two-type-statistics/add-unit-two-type-statistics.component.ts

@ -16,12 +16,23 @@ export class AddUnitTwoTypeStatisticsComponent implements OnInit {
reverse(){
this.router.navigate(['/statisticanalysis/addUnit_one/addUnit_two_time'])
}
url = "/statisticanalysis/addUnit_one/addUnit_two_type" //当前路由地址
setTimeoutObj//延时器需要清除
ngOnInit(): void {
window.setTimeout(()=>{
this.setTimeoutObj = window.setTimeout(()=>{
this.initCharts()
this.barEcharts()
},0)
}
ngOnDestroy(){
window.clearTimeout(this.setTimeoutObj);
this.indexBzt.clear()
this.indexBzt.dispose()
this.forArr.forEach(item => {
item.echart.clear()
item.echart.dispose()
})
}
axisLabel = {
interval: 0,
@ -94,26 +105,26 @@ export class AddUnitTwoTypeStatisticsComponent implements OnInit {
{name:"崇明中队",number:"55",zhanbi:"0.3%"} ]
zhiNameData = ["浦东支队","黄埔支队","徐汇支队","长宁支队","静安支队","普陀支队","虹口支队","杨浦支队","闵行支队","宝山支队","嘉定支队","松江支队","金山支队","崇明支队"]
zhiNumData = [200,190,180,170,160,150,140,130,120,110,100,90,80,70]
forArr = [{id:'gaoceng',name:'高层'},
{id:'dixia',name:'地下'},
{id:'guidao',name:'轨道交通'},
{id:'huagong',name:'化工生产'},
{id:'chuguan',name:'储罐类'},
{id:'changfang',name:'厂房'},
{id:'gujianzhu',name:'古建筑'},
{id:'shichang',name:'商市场'},
{id:'yiyuan',name:'医院'},
{id:'xuexiao',name:'学校'},
{id:'binguan',name:'宾馆'},
{id:'yule',name:'娱乐场所'},
{id:'canyin',name:'餐饮业'},
{id:'yingyuan',name:'影剧院'},
{id:'zhanlan',name:'展览建筑'},
{id:'suidao',name:'隧道'}]
forArr = [{id:'gaoceng',name:'高层',echart:null},
{id:'dixia',name:'地下',echart:null},
{id:'guidao',name:'轨道交通',echart:null},
{id:'huagong',name:'化工生产',echart:null},
{id:'chuguan',name:'储罐类',echart:null},
{id:'changfang',name:'厂房',echart:null},
{id:'gujianzhu',name:'古建筑',echart:null},
{id:'shichang',name:'商市场',echart:null},
{id:'yiyuan',name:'医院',echart:null},
{id:'xuexiao',name:'学校',echart:null},
{id:'binguan',name:'宾馆',echart:null},
{id:'yule',name:'娱乐场所',echart:null},
{id:'canyin',name:'餐饮业',echart:null},
{id:'yingyuan',name:'影剧院',echart:null},
{id:'zhanlan',name:'展览建筑',echart:null},
{id:'suidao',name:'隧道',echart:null}]
indexBzt //顶部饼状图
/* 顶部饼状图 */
initCharts(){
let indexBzt = echarts.init(document.getElementById('pie'));
this.indexBzt = echarts.init(document.getElementById('pie'));
let options={
title: {
text: '新增单位统计(8900家)',
@ -216,16 +227,16 @@ export class AddUnitTwoTypeStatisticsComponent implements OnInit {
}
]
};
indexBzt.on('click', (params) => {
this.indexBzt.on('click', (params) => {
// this.router.navigateByUrl('/statisticanalysis/buildingType_two_forward');
});
indexBzt.setOption(options);
this.indexBzt.setOption(options);
}
//柱状图
barEcharts(){
this.forArr.forEach(item=>{
let _this = this
let addEchart = echarts.init(document.getElementById(item.id));
item.echart = echarts.init(document.getElementById(item.id));
let option = {
title: {
text: item.name,
@ -263,8 +274,8 @@ export class AddUnitTwoTypeStatisticsComponent implements OnInit {
label: this.topTextlabel
}]
};
addEchart.setOption(option);
addEchart.on('click', (params) => {
item.echart.setOption(option);
item.echart.on('click', (params) => {
this.router.navigate(['/statisticanalysis/addUnit_one/addUnit_two_typeDetails'],{queryParams:{'organizationName':params.name,'buildingTypeName':item.name}})
});
})

11
src/app/statistic-analysis/buildingType/building-type-one/building-type-one.component.ts

@ -15,9 +15,14 @@ export class BuildingTypeOneComponent implements OnInit {
this.initCharts()
},0)
}
ngOnDestroy(): void {
this.indexBzt.clear()
this.indexBzt.dispose()
}
/* 首页饼状图 */
indexBzt
initCharts(){
let indexBzt = echarts.init(document.getElementById('indexBzt'));
this.indexBzt = echarts.init(document.getElementById('indexBzt'));
let options={
title: {
text: '建筑类型统计(8900家)',
@ -86,10 +91,10 @@ export class BuildingTypeOneComponent implements OnInit {
}
]
};
indexBzt.on('click', (params) => {
this.indexBzt.on('click', (params) => {
this.router.navigateByUrl('/statisticanalysis/buildingType_one/buildingType_two_forward');
});
indexBzt.setOption(options);
this.indexBzt.setOption(options);
}
biaogeTishi(biaotou:string){
var shuju='[{"name":"浦东支队","number":"156","zhanbi":"3%"},{"name":"黄埔支队","number":"144","zhanbi":"2.8%"},'

9
src/app/statistic-analysis/buildingType/building-type-three-details/building-type-three-details.component.ts

@ -29,6 +29,10 @@ export class BuildingTypeThreeDetailsComponent implements OnInit {
this.detailEcharts()
})
}
ngOnDestroy(): void {
this.detailPlanEchart.clear()
this.detailPlanEchart.dispose()
}
topTextlabel = {
show: true, // 开启显示
position: 'top', // 在上方显示
@ -41,8 +45,9 @@ export class BuildingTypeThreeDetailsComponent implements OnInit {
}//柱状图数值顶部显示
zhongNameData = ["浦东中队","黄埔中队","徐汇中队","长宁中队","静安中队","普陀中队","虹口中队","杨浦中队","闵行中队","宝山中队","嘉定中队"]
zhongNumData = [200,190,180,170,160,150,140,130,120,110,100]
detailPlanEchart
detailEcharts(){
var detailPlanEchart = echarts.init(document.getElementById('barEchart'));
this.detailPlanEchart = echarts.init(document.getElementById('barEchart'));
var option = {
title: {
text: this.buildingTypeName + '(' +this.organizationName + ')',
@ -79,7 +84,7 @@ export class BuildingTypeThreeDetailsComponent implements OnInit {
label: this.topTextlabel
}]
};
detailPlanEchart.setOption(option);
this.detailPlanEchart.setOption(option);
}

2
src/app/statistic-analysis/buildingType/building-type-two-forward/building-type-two-forward.component.html

@ -1,7 +1,7 @@
<div class="box">
<div class="topbox">
<div class="btnbox">
<button mat-stroked-button (click)="forward()">正向查询</button>
<button mat-stroked-button (click)="forward()" style="background-color: #2196f3;color: white;">正向查询</button>
<button mat-stroked-button (click)="reverse()">反向查询</button>
</div>
</div>

51
src/app/statistic-analysis/buildingType/building-type-two-forward/building-type-two-forward.component.ts

@ -21,6 +21,14 @@ export class BuildingTypeTwoForwardComponent implements OnInit {
this.barEcharts()
},0)
}
ngOnDestroy(): void {
this.indexBzt.clear()
this.indexBzt.dispose()
this.forArr.forEach(item => {
item.echart.clear()
item.echart.dispose()
})
}
axisLabel = {
interval: 0,
formatter:function(value)
@ -112,26 +120,27 @@ export class BuildingTypeTwoForwardComponent implements OnInit {
]
buildingTypeName = ['高层','地下','轨道交通','化工生产','储罐类','厂房','古建筑','商市场','医院','学校','宾馆','娱乐场所','餐饮业','影剧院','展览建筑','隧道']
buildingTypeNum = [200,190,180,170,160,150,140,130,120,110,100,90,80,70,60,50]
forArr = [{id:'gaoceng',name:'浦东支队'},
{id:'dixia',name:'黄埔支队'},
{id:'guidao',name:'徐汇支队'},
{id:'huagong',name:'长宁支队'},
{id:'chuguan',name:'静安支队'},
{id:'changfang',name:'普陀支队'},
{id:'gujianzhu',name:'虹口支队'},
{id:'shichang',name:'杨浦支队'},
{id:'yiyuan',name:'闵行支队'},
{id:'xuexiao',name:'宝山支队'},
{id:'binguan',name:'嘉定支队'},
{id:'yule',name:'松江支队'},
{id:'canyin',name:'金山支队'},
{id:'yingyuan',name:'崇明支队'},
{id:'zhanlan',name:'青浦支队'},
forArr = [{id:'gaoceng',name:'浦东支队',echart:null},
{id:'dixia',name:'黄埔支队',echart:null},
{id:'guidao',name:'徐汇支队',echart:null},
{id:'huagong',name:'长宁支队',echart:null},
{id:'chuguan',name:'静安支队',echart:null},
{id:'changfang',name:'普陀支队',echart:null},
{id:'gujianzhu',name:'虹口支队',echart:null},
{id:'shichang',name:'杨浦支队',echart:null},
{id:'yiyuan',name:'闵行支队',echart:null},
{id:'xuexiao',name:'宝山支队',echart:null},
{id:'binguan',name:'嘉定支队',echart:null},
{id:'yule',name:'松江支队',echart:null},
{id:'canyin',name:'金山支队',echart:null},
{id:'yingyuan',name:'崇明支队',echart:null},
{id:'zhanlan',name:'青浦支队',echart:null},
]
/* 顶部饼状图 */
indexBzt
initCharts(){
let indexBzt = echarts.init(document.getElementById('pie'));
this.indexBzt = echarts.init(document.getElementById('pie'));
let options={
title: {
text: '组织机构统计(5500家)',
@ -217,16 +226,16 @@ export class BuildingTypeTwoForwardComponent implements OnInit {
}
]
};
indexBzt.on('click', (params) => {
this.indexBzt.on('click', (params) => {
// this.router.navigateByUrl('/statisticanalysis/buildingType_two_forward');
});
indexBzt.setOption(options);
this.indexBzt.setOption(options);
}
//柱状图
barEcharts(){
this.forArr.forEach(item=>{
let _this = this
let Echart = echarts.init(document.getElementById(item.id));
item.echart = echarts.init(document.getElementById(item.id));
let option = {
color: ['#3398DB'],
title: {
@ -265,8 +274,8 @@ export class BuildingTypeTwoForwardComponent implements OnInit {
label: this.topTextlabel
}]
};
Echart.setOption(option);
Echart.on('click', (params) => {
item.echart.setOption(option);
item.echart.on('click', (params) => {
this.router.navigate(['/statisticanalysis/buildingType_one/buildingType_three_details'],{queryParams:{'organizationName':item.name,'buildingTypeName':params.name}})
});
})

2
src/app/statistic-analysis/buildingType/building-type-two-reverse/building-type-two-reverse.component.html

@ -2,7 +2,7 @@
<div class="topbox">
<div class="btnbox">
<button mat-stroked-button (click)="forward()">正向查询</button>
<button mat-stroked-button (click)="reverse()">反向查询</button>
<button mat-stroked-button (click)="reverse()" style="background-color:#2196f3;color: white;">反向查询</button>
</div>
</div>
<div class="echartsbox">

55
src/app/statistic-analysis/buildingType/building-type-two-reverse/building-type-two-reverse.component.ts

@ -22,7 +22,14 @@ export class BuildingTypeTwoReverseComponent implements OnInit {
this.barEcharts()
},0)
}
ngOnDestroy(): void {
this.indexBzt.clear()
this.indexBzt.dispose()
this.forArr.forEach(item => {
item.echart.clear()
item.echart.dispose()
})
}
axisLabel = {
interval: 0,
formatter:function(value)
@ -94,26 +101,27 @@ export class BuildingTypeTwoReverseComponent implements OnInit {
{name:"崇明中队",number:"55",zhanbi:"0.3%"} ]
zhiNameData = ["浦东支队","黄埔支队","徐汇支队","长宁支队","静安支队","普陀支队","虹口支队","杨浦支队","闵行支队","宝山支队","嘉定支队","松江支队","金山支队","崇明支队"]
zhiNumData = [200,190,180,170,160,150,140,130,120,110,100,90,80,70]
forArr = [{id:'gaoceng',name:'高层'},
{id:'dixia',name:'地下'},
{id:'guidao',name:'轨道交通'},
{id:'huagong',name:'化工生产'},
{id:'chuguan',name:'储罐类'},
{id:'changfang',name:'厂房'},
{id:'gujianzhu',name:'古建筑'},
{id:'shichang',name:'商市场'},
{id:'yiyuan',name:'医院'},
{id:'xuexiao',name:'学校'},
{id:'binguan',name:'宾馆'},
{id:'yule',name:'娱乐场所'},
{id:'canyin',name:'餐饮业'},
{id:'yingyuan',name:'影剧院'},
{id:'zhanlan',name:'展览建筑'},
{id:'suidao',name:'隧道'}]
forArr = [{id:'gaoceng',name:'高层',echart:null},
{id:'dixia',name:'地下',echart:null},
{id:'guidao',name:'轨道交通',echart:null},
{id:'huagong',name:'化工生产',echart:null},
{id:'chuguan',name:'储罐类',echart:null},
{id:'changfang',name:'厂房',echart:null},
{id:'gujianzhu',name:'古建筑',echart:null},
{id:'shichang',name:'商市场',echart:null},
{id:'yiyuan',name:'医院',echart:null},
{id:'xuexiao',name:'学校',echart:null},
{id:'binguan',name:'宾馆',echart:null},
{id:'yule',name:'娱乐场所',echart:null},
{id:'canyin',name:'餐饮业',echart:null},
{id:'yingyuan',name:'影剧院',echart:null},
{id:'zhanlan',name:'展览建筑',echart:null},
{id:'suidao',name:'隧道',echart:null}]
/* 顶部饼状图 */
indexBzt
initCharts(){
let indexBzt = echarts.init(document.getElementById('pie'));
this.indexBzt = echarts.init(document.getElementById('pie'));
let options={
title: {
text: '建筑类型统计(8900家)',
@ -216,16 +224,16 @@ export class BuildingTypeTwoReverseComponent implements OnInit {
}
]
};
indexBzt.on('click', (params) => {
this.indexBzt.on('click', (params) => {
// this.router.navigateByUrl('/statisticanalysis/buildingType_two_forward');
});
indexBzt.setOption(options);
this.indexBzt.setOption(options);
}
//柱状图
barEcharts(){
this.forArr.forEach(item=>{
let _this = this
let addEchart = echarts.init(document.getElementById(item.id));
item.echart = echarts.init(document.getElementById(item.id));
let option = {
title: {
text: item.name,
@ -263,12 +271,11 @@ export class BuildingTypeTwoReverseComponent implements OnInit {
label: this.topTextlabel
}]
};
addEchart.setOption(option);
addEchart.on('click', (params) => {
item.echart.setOption(option);
item.echart.on('click', (params) => {
this.router.navigate(['/statisticanalysis/buildingType_one/buildingType_three_details'],{queryParams:{'organizationName':params.name,'buildingTypeName':item.name}})
});
})
}
//提示框表格
tableTooltip(dataArr,title:string){

14
src/app/statistic-analysis/deleteUnit/delete-four/delete-four.component.html

@ -1 +1,13 @@
<p>delete-four works!</p>
<!--
* @Descripttion:
* @version:
* @Author: sueRimn
* @Date: 2020-09-02 16:22:58
* @LastEditors: sueRimn
* @LastEditTime: 2020-09-05 08:48:27
-->
<div class="detailBox">
<div id="detailBox">
</div>
</div>

13
src/app/statistic-analysis/deleteUnit/delete-four/delete-four.component.scss

@ -0,0 +1,13 @@
.detailBox{
width: 100%;
height: 100%;
position: relative;
#detailBox{
width: 100%;
height: 350px;
position: absolute;
left: 50%;
top: 45%;
transform: translate(-50%,-50%);
}
}

76
src/app/statistic-analysis/deleteUnit/delete-four/delete-four.component.ts

@ -1,4 +1,7 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import {EchartsDataService} from '../../echarts-data.service'
declare var echarts: any;
@Component({
selector: 'app-delete-four',
@ -7,9 +10,80 @@ import { Component, OnInit } from '@angular/core';
})
export class DeleteFourComponent implements OnInit {
constructor() { }
constructor(public route: ActivatedRoute,public data: EchartsDataService) { }
zhongNameData = ["浦东中队","黄埔中队","徐汇中队","长宁中队","静安中队","普陀中队","虹口中队","杨浦中队","闵行中队","宝山中队","嘉定中队"]
zhongNumData = [200,190,180,170,160,150,140,130,120,110,100]
ngOnInit(): void {
window.setTimeout(()=>{
this.detailEcharts()
})
}
detailEcharts(){
var detailPlanEchart = echarts.init(document.getElementById('detailBox'));
var option = {
title: {
text: this.data.statefulInspectionName,
left: "center",
textStyle: {
fontSize: 28
}
},
xAxis: {
type: 'category',
data: this.zhongNameData,
// axisLabel: this.axisLabel
},
yAxis: {
type: 'value'
},
tooltip: {
trigger: 'item',
formatter: (params)=>{
console.log(666,params)
return this.tableTooltip(params)
},
backgroundColor:'rgba(255,255,255,1)',//通过设置rgba调节背景颜色与透明度
borderWidth:'1',
borderRadius :'0'
},
series: [{
data: this.zhongNumData,
type: 'bar',
showBackground: true,
backgroundStyle: {
color: 'rgba(220, 220, 220, 0.8)'
}
}]
};
detailPlanEchart.setOption(option);
}
tableTooltip(params:any){
var data = [
{name:params.name,number:params.value,zhanbi:(params.value/1340 * 100).toFixed(2) + "%"}
]
var res = '<div class="tishi" style=" backgroundColor:rgba(255,255,255,1);width:100%;height:100%;"><div style="padding:10px 0 5px 0"><span style="color:#000000;font-size:30px;text-align: center;display:block;">'+params.name+'</span></div>'
res+='</br><div style="width:300px;height:100%;padding:0 20px 15px 20px"><table style="width:300px; background:#FFFFFF; color:#000000;border-collapse:collapse;"cellspacing="0"; >';
res+='<thead><tr>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">名称</td>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">数量</td>'
res+='<td style="text-align:center;width:30%;border:1px solid #000000">总占比</td>'
res+='</tr></thead>'
res+='<tbody>';
for(var i=0;i<data.length;i++){
res+='<tr>'
res+='<td style="text-align:center;border:1px solid #000000">'+data[i].name+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+data[i].number+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+data[i].zhanbi+'</td></tr>'
}
res+='</tbody>'
// res+='<tfoot><td style="text-align:center;border:1px solid #000000">总计</td><td style="text-align:center;border:1px solid #000000">1356</td><td style="text-align:center;border:1px solid #000000">19%</td></tfoot>'
res+='</table></div></div>'
return res
}
}

143
src/app/statistic-analysis/deleteUnit/delete-one/delete-one.component.ts

@ -1,12 +1,6 @@
/*
* @Descripttion:
* @version:
* @Author: sueRimn
* @Date: 2020-09-02 16:15:53
* @LastEditors: sueRimn
* @LastEditTime: 2020-09-02 16:44:32
*/
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
declare var echarts: any;
@Component({
selector: 'app-delete-one',
@ -14,10 +8,139 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./delete-one.component.scss']
})
export class DeleteOneComponent implements OnInit {
options:any;
constructor() { }
constructor(private router: Router) { }
ngOnInit(): void {
ngOnInit() {
window.setTimeout(()=>{
this.initCharts()
},0)
}
/* 首页饼状图 */
initCharts(){
//console.log(document.getElementById('indexBzt'))
var ec = echarts as any;
var indexBzt = ec.init(document.getElementById('indexBzt'));
var options={
title: {
text: '删除单位统计(8900家)',
//subtext: '纯属虚构',
padding:[120,100],
left: 'center',
textStyle:{
fontSize:38
}
},
tooltip: {
trigger: 'item',
formatter: (params)=>{
return this.biaogeTishi(params.name)
} ,
backgroundColor:'rgba(255,255,255,1)',//通过设置rgba调节背景颜色与透明度
borderWidth:'1',
borderRadius :'0'
},
legend: {
orient: 'vertical',
right: 150,
top:80,
//padding:20,
itemWidth:60,
itemHeight:25,
textStyle:{
fontSize:28
},
data: ['高层', '地下', '轨道交通', '化工生产', '储罐类', '厂房', '古建筑', '商市场', '医院', '学校', '宾馆', '娱乐场所', '餐饮业', '影剧院', '展览建筑', '隧道']
},
series: [
{
name: '访问来源',
type: 'pie',
radius: '65%',
center: ['50%', '60%'],
label:{
normal:{
show:true,
position: 'inner',
fontSize:18,
formatter:'{c} ({d}%)'
}
},
data: [
{value: 500, name: '高层'},
{value: 1300, name: '地下',itemStyle:{color:'#02A7F0'}},
{value: 1500, name: '轨道交通'},
{value: 1500, name: '化工生产'},
{value: 1700, name: '储罐类'},
{value: 800, name: '厂房'},
{value: 1500, name: '古建筑'},
{value: 1500, name: '商市场'},
{value: 1700, name: '医院'},
{value: 1700, name: '学校'},
{value: 1700, name: '宾馆'},
{value: 1700, name: '娱乐场所'},
{value: 1700, name: '餐饮业'},
{value: 1700, name: '影剧院'},
{value: 1700, name: '展览建筑'},
{value: 1700, name: '隧道'}
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
indexBzt.on('click', (params) => {
this.router.navigateByUrl('/statisticanalysis/delete_one/delete_two');
});
indexBzt.setOption(options);
}
/**
* @name:
* @test: test font
* @msg:
* @param {string()}
* @return {type}
*/
biaogeTishi(biaotou:string){
var shuju='[{"name":"浦东支队","number":"156","zhanbi":"3%"},{"name":"黄埔支队","number":"144","zhanbi":"2.8%"},'
shuju+='{"name":"徐汇支队","number":"133","zhanbi":"2.1%"},{"name":"长宁支队","number":"122","zhanbi":"1.6%"},'
shuju+='{"name":"静安支队","number":"120","zhanbi":"1.3%"},{"name":"普陀支队","number":"100","zhanbi":"1.1%"},'
shuju+='{"name":"虹口支队","number":"95","zhanbi":"1%"},{"name":"杨浦支队","number":"90","zhanbi":"0.9%"},'
shuju+='{"name":"闵行支队","number":"88","zhanbi":"0.8%"},{"name":"宝山支队","number":"83","zhanbi":"0.7%"},'
shuju+='{"name":"徐汇支队","number":"133","zhanbi":"2.1%"},{"name":"长宁支队","number":"122","zhanbi":"1.6%"},'
shuju+='{"name":"嘉定支队","number":"78","zhanbi":"0.6%"},{"name":"松江支队","number":"75","zhanbi":"0.5%"},'
shuju+='{"name":"金山支队","number":"65","zhanbi":"0.4%"},{"name":"崇明支队","number":"55","zhanbi":"0.3%"}]'
var jsonObj = JSON.parse(shuju);
var res = '<div class="tishi" style=" backgroundColor:rgba(255,255,255,1);width:100%;height:100%;"><div style="padding:10px 0 5px 0"><span style="color:#000000;font-size:30px;text-align: center;display:block;">'+biaotou+'</span></div>'
res+='</br><div style="width:300px;height:100%;padding:0 20px 15px 20px"><table style="width:300px; background:#FFFFFF; color:#000000;border-collapse:collapse;"cellspacing="0"; >';
res+='<thead><tr>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">名称</td>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">数量</td>'
res+='<td style="text-align:center;width:30%;border:1px solid #000000">总占比</td>'
res+='</tr></thead>'
res+='<tbody>';
for(var i=0;i<jsonObj.length;i++){
res+='<tr>'
res+='<td style="text-align:center;border:1px solid #000000">'+jsonObj[i].name+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+jsonObj[i].number+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+jsonObj[i].zhanbi+'</td></tr>'
}
res+='</tbody>'
res+='<tfoot><td style="text-align:center;border:1px solid #000000">总计</td><td style="text-align:center;border:1px solid #000000">1356</td><td style="text-align:center;border:1px solid #000000">19%</td></tfoot>'
res+='</table></div></div>'
return res
}
}

27
src/app/statistic-analysis/deleteUnit/delete-there/delete-there.component.html

@ -1 +1,26 @@
<p>delete-there works!</p>
<!--
* @Descripttion:
* @version:
* @Author: sueRimn
* @Date: 2020-09-02 16:22:35
* @LastEditors: sueRimn
* @LastEditTime: 2020-09-04 16:19:53
-->
<div class="head">
<select style="width: 80px;height: 50px; margin-left: 200px;">
<option value ="2020">2020</option>
</select>
<select style="width: 80px;height: 50px; margin-left: 50px;" >
<option value ="1">1</option>
<option value ="1">2</option>
<option value ="1">3</option>
<option value ="1">4</option>
<option value ="1">5</option>
<option value ="1">6</option>
<option value ="1">7</option>
<option value ="1">8</option>
</select>
<button class="chaxun">查询</button>
</div>
<div id="zhidui" class="zhu"></div>

22
src/app/statistic-analysis/deleteUnit/delete-there/delete-there.component.scss

@ -0,0 +1,22 @@
.head{
//display: flex;
border-bottom:2px solid #d4dde4;
width: 100%;
height: 100px;
background-color:white ;
}
.chaxun{
background-color: #008CBA;
color: white;
border-radius:5px;
font-size: 16px;
margin-left: 50px;
padding: 15px 32px;
}
.zhu{
padding-top: 200px;
padding-left: 200px;
text-align: center;
height: 270px;
width: 880px;
}

111
src/app/statistic-analysis/deleteUnit/delete-there/delete-there.component.ts

@ -1,4 +1,15 @@
/*
* @Descripttion:
* @version:
* @Author: sueRimn
* @Date: 2020-09-02 16:22:35
* @LastEditors: sueRimn
* @LastEditTime: 2020-09-05 08:58:18
*/
import { Component, OnInit } from '@angular/core';
import { Router,ActivatedRoute } from '@angular/router';
import {EchartsDataService} from '../../echarts-data.service'
declare var echarts: any;
@Component({
selector: 'app-delete-there',
@ -7,9 +18,107 @@ import { Component, OnInit } from '@angular/core';
})
export class DeleteThereComponent implements OnInit {
constructor() { }
constructor(private router: Router,private activatedRoute: ActivatedRoute,public echartsData:EchartsDataService) { }
ngOnInit(): void {
let headtext:string;
let datayuex:string;
let headName:string;
this.activatedRoute.params.subscribe(param=>{
headtext=param.headtext
datayuex=param.datayuex
headName=headtext+''+datayuex;
//console.log(datayuex)
});
window.setTimeout(()=>{
this.zhuzhuangtu(headName)
},0)
}
zhiNameData = ["浦东支队","黄埔支队","徐汇支队","长宁支队","静安支队","普陀支队","虹口支队","杨浦支队","闵行支队","宝山支队","嘉定支队","松江支队","金山支队","崇明支队"]
zhiNumData = [200,190,180,170,160,150,140,130,120,110,100,90,80,70]
/* 柱状图 */
zhuzhuangtu(headName:string){
var ec = echarts as any;
var zhutu = ec.init(document.getElementById('zhidui'));
var option = {
title: {
text: `${headName}`,
left: "center",
top: "15",
textStyle: {
fontSize: 23
}
},
grid: {
left: '5%',
bottom:'35%'
},
xAxis: {
type: 'category',
data: this.zhiNameData,
//axisLabel: this.axisLabel
},
yAxis: {
type: 'value'
},
tooltip: {
trigger: 'item',
formatter: (params)=>{
return this.tableTooltip2(params.name)
},
backgroundColor:'rgba(255,255,255,1)',//通过设置rgba调节背景颜色与透明度
borderWidth:'1',
borderRadius :'0'
},
series: [{
data: this.zhiNumData,
type: 'bar',
showBackground: true,
backgroundStyle: {
color: 'rgba(220, 220, 220, 0.8)'
},
barWidth :'28',
//label: this.topTextlabel
}]
};
zhutu.on('click', (params) => {
console.log(params)
this.echartsData.statefulInspectionName =params.name;
this.router.navigateByUrl(`/statisticanalysis/delete_one/delete_four`);
});
zhutu.setOption(option);
}
tableTooltip2(biaotou:string){
var shuju='[{"name":"浦东中队","number":"156","zhanbi":"3%"},{"name":"黄埔中队","number":"144","zhanbi":"2.8%"},'
shuju+='{"name":"徐汇中队","number":"133","zhanbi":"2.1%"},{"name":"长宁中队","number":"122","zhanbi":"1.6%"},'
shuju+='{"name":"静安中队","number":"120","zhanbi":"1.3%"},{"name":"普陀中队","number":"100","zhanbi":"1.1%"},'
shuju+='{"name":"虹口中队","number":"95","zhanbi":"1%"},{"name":"杨浦中队","number":"90","zhanbi":"0.9%"},'
shuju+='{"name":"闵行中队","number":"88","zhanbi":"0.8%"},{"name":"宝山中队","number":"83","zhanbi":"0.7%"},'
shuju+='{"name":"徐汇中队","number":"133","zhanbi":"2.1%"},{"name":"长宁中队","number":"122","zhanbi":"1.6%"},'
shuju+='{"name":"嘉定中队","number":"78","zhanbi":"0.6%"},{"name":"松江中队","number":"75","zhanbi":"0.5%"},'
shuju+='{"name":"金山中队","number":"65","zhanbi":"0.4%"},{"name":"崇明中队","number":"55","zhanbi":"0.3%"}]'
var jsonObj = JSON.parse(shuju);
var res = '<div class="tishi" style=" backgroundColor:rgba(255,255,255,1);width:100%;height:100%;"><div style="padding:10px 0 5px 0"><span style="color:#000000;font-size:30px;text-align: center;display:block;">'+biaotou+'</span></div>'
res+='</br><div style="width:300px;height:100%;padding:0 20px 15px 20px"><table style="width:300px; background:#FFFFFF; color:#000000;border-collapse:collapse;"cellspacing="0"; >';
res+='<thead><tr>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">名称</td>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">数量</td>'
res+='<td style="text-align:center;width:30%;border:1px solid #000000">总占比</td>'
res+='</tr></thead>'
res+='<tbody>';
for(var i=0;i<jsonObj.length;i++){
res+='<tr>'
res+='<td style="text-align:center;border:1px solid #000000">'+jsonObj[i].name+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+jsonObj[i].number+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+jsonObj[i].zhanbi+'</td></tr>'
}
res+='</tbody>'
res+='<tfoot><td style="text-align:center;border:1px solid #000000">总计</td><td style="text-align:center;border:1px solid #000000">1356</td><td style="text-align:center;border:1px solid #000000">19%</td></tfoot>'
res+='</table></div></div>'
return res
}
}

91
src/app/statistic-analysis/deleteUnit/delete-two/delete-two.component.html

@ -1 +1,90 @@
<p>delete-two works!</p>
<!--
* @Descripttion:
* @version:
* @Author: sueRimn
* @Date: 2020-09-02 16:21:18
* @LastEditors: sueRimn
* @LastEditTime: 2020-09-04 15:36:05
-->
<body>
<div style="position: fixed; " class="daohang">
<label><input name="riqi" type="radio" value="" style="margin-left: 20px;" (click)='anyue()'/></label>
<label><input name="riqi" type="radio" value="" (click)='annian()'/></label>
<select style="width: 80px;height: 50px; margin-left: 100px;">
<option value ="2020">2020</option>
</select>
<div id="yue1">
<select style="width: 80px;height: 50px; margin-left: 50px;" >
<option value ="1">1</option>
<option value ="1">2</option>
<option value ="1">3</option>
<option value ="1">4</option>
<option value ="1">5</option>
<option value ="1">6</option>
<option value ="1">7</option>
<option value ="1">8</option>
</select>
</div>
<select style="width: 80px;height: 50px; margin-left: 100px;">
<option value ="2020">2020</option>
</select>
<div id="yue2">
<select style="width: 80px;height: 50px; margin-left: 50px;" >
<option value ="1">1</option>
<option value ="1">2</option>
<option value ="1">3</option>
<option value ="1">4</option>
<option value ="1">5</option>
<option value ="1">6</option>
<option value ="1">7</option>
<option value ="1">8</option>
</select>
</div>
<button class="chaxun" >查询</button>
<!-- <button type="button" class="button" style="margin-left: 500px;">按区间查询</button>
<button type="button" class="button" style="margin-left: 10px;" >年查询</button> -->
</div>
<div class="head" id="head"></div>
<section class="mainbox">
<div class="column">
<div class="panel bar" id="leftOne">
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
<div class="panel line" id="leftTwo">
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
<div class="panel pie" id="leftThere">
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
<div class="panel four" id="leftFour">
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
</div>
<div class="column">
<div class="panel bar1" id="rightOne">
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
<div class="panel line1" id="rightTwo">
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
<div class="panel pie1" id="rightThree">
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
<div class="panel four1" id="rightFour">
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
</div>
</section>
<div style="padding-top: 50px; height: 50px; width: 100%;"></div>
</body>

95
src/app/statistic-analysis/deleteUnit/delete-two/delete-two.component.scss

@ -0,0 +1,95 @@
body{
overflow:auto;
}
.daohang{
display: flex;
z-index: 5;
border-bottom:2px solid #d4dde4;
width: 100%;
height: 180px;
background-color:white ;
}
.chaxun{
background-color: #008CBA;
color: white;
border-radius:5px;
//font-size: 16px;
margin-left: 50px;
}
.head{
text-align:center;
margin:0 auto;
width: 900px;
height: 400px;
padding-top: 250px;
}
.mainbox {
padding-bottom: 50px;
min-width: 1024px;
max-width: 1920px;
padding: 0.125rem 0.125rem 0;
display: flex;
.column {
flex: 2;
}
}
.panel {
position: relative;
height: 400px;
border: 1px solid rgba(25, 186, 139, 0.17);
padding: 0 0.1875rem 0.5rem;
margin-bottom: 0.1875rem;
&::before {
position: absolute;
top: 0;
left: 0;
content: "";
width: 10px;
height: 10px;
border-top: 2px ;
border-left: 2px ;
}
&::after {
position: absolute;
top: 0;
right: 0;
content: "";
width: 10px;
height: 10px;
border-top: 2px ;
border-right: 2px ;
}
.panel-footer {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
&::before {
position: absolute;
bottom: 0;
left: 0;
content: "";
width: 10px;
height: 10px;
border-bottom: 2px ;
border-left: 2px ;
}
&::after {
position: absolute;
bottom: 0;
right: 0;
content: "";
width: 10px;
height: 10px;
border-bottom: 2px ;
border-right: 2px ;
}
}
.chart {
height: 3rem;
}
}

184
src/app/statistic-analysis/deleteUnit/delete-two/delete-two.component.ts

@ -1,4 +1,16 @@
/*
* @Descripttion:
* @version:
* @Author: sueRimn
* @Date: 2020-09-02 16:21:18
* @LastEditors: sueRimn
* @LastEditTime: 2020-09-04 16:58:01
*/
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { MatDatepickerInputEvent } from '@angular/material/datepicker';
import { MatSnackBarConfig, MatSnackBar } from '@angular/material/snack-bar';
declare var echarts: any;
@Component({
selector: 'app-delete-two',
@ -6,10 +18,180 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./delete-two.component.scss']
})
export class DeleteTwoComponent implements OnInit {
options:any;
datayuex=['一月', '二月', '三月', '四月', '五月', '六月', '七月','八月'];
datayuey=[210, 160, 150, 140, 130, 120, 110,120];
datanianx=[2019,2020,2021];
dataniany=[201,174]
constructor() { }
constructor(private router: Router,public snackBar: MatSnackBar) { }
ngOnInit(): void {
window.setTimeout(()=>{
this.headZhexian('head','删除数量总统计',this.datayuex,this.datayuey)
this.headZhexian('leftOne','高层',this.datayuex,this.datayuey)
this.headZhexian('leftTwo','轨道交通',this.datayuex,this.datayuey)
this.headZhexian('leftThere','储罐类',this.datayuex,this.datayuey)
this.headZhexian('leftFour','古建筑',this.datayuex,this.datayuey)
this.headZhexian('rightOne','地下',this.datayuex,this.datayuey)
this.headZhexian('rightTwo','化工生产',this.datayuex,this.datayuey)
this.headZhexian('rightThree','厂房',this.datayuex,this.datayuey)
this.headZhexian('rightFour','商市场',this.datayuex,this.datayuey)
},0)
}
/* 按月点击事件 */
anyue(){
var anyue1 = document.getElementById('yue1');
anyue1.style.display='block';
var anyue2 = document.getElementById('yue2');
anyue2.style.display='block';
this.headZhexian('head','删除数量总统计',this.datayuex,this.datayuey)
this.headZhexian('leftOne','高层',this.datayuex,this.datayuey)
this.headZhexian('leftTwo','轨道交通',this.datayuex,this.datayuey)
this.headZhexian('leftThere','储罐类',this.datayuex,this.datayuey)
this.headZhexian('leftFour','古建筑',this.datayuex,this.datayuey)
this.headZhexian('rightOne','地下',this.datayuex,this.datayuey)
this.headZhexian('rightTwo','化工生产',this.datayuex,this.datayuey)
this.headZhexian('rightThree','厂房',this.datayuex,this.datayuey)
this.headZhexian('rightFour','商市场',this.datayuex,this.datayuey)
}
/* 按年点击事件 */
annian(){
var anyue1 = document.getElementById('yue1');
anyue1.style.display='none';
var anyue2 = document.getElementById('yue2');
anyue2.style.display='none';
this.headZhexian('head','删除数量总统计',this.datanianx,this.dataniany)
this.headZhexian('leftOne','高层',this.datanianx,this.dataniany)
this.headZhexian('leftTwo','轨道交通',this.datanianx,this.dataniany)
this.headZhexian('leftThere','储罐类',this.datanianx,this.dataniany)
this.headZhexian('leftFour','古建筑',this.datanianx,this.dataniany)
this.headZhexian('rightOne','地下',this.datanianx,this.dataniany)
this.headZhexian('rightTwo','化工生产',this.datanianx,this.dataniany)
this.headZhexian('rightThree','厂房',this.datanianx,this.dataniany)
this.headZhexian('rightFour','商市场',this.datanianx,this.dataniany)
}
/* 折线图 */
headZhexian(divid:string,headtext:string,datayuex,datayuey){
var ec = echarts as any;
var headZx = ec.init(document.getElementById(`${divid}`));
var options = {
title: {
text: `${headtext}`,
left:350,
textStyle:{
fontSize:28
}
},
tooltip: {
trigger: 'item',
formatter: (params)=>{
return this.biaogeTishi(`${headtext}`)
} ,
backgroundColor:'rgba(255,255,255,1)',//通过设置rgba调节背景颜色与透明度
borderWidth:'1',
borderRadius :'0'
},
xAxis: {
type: 'category',
boundaryGap:false,
data: datayuex,
axisLabel: {
color: "#000", //刻度线标签颜色
},
//设置坐标轴字体颜色和宽度
axisLine: {
lineStyle: {
color: "#000",
},
},
splitLine: {//分割线配置
show:true,
lineStyle: {
color: '#999',
}
}
},
yAxis: {
type: 'value',
axisLabel: {
color: "#000" //刻度线标签颜色
},
//设置坐标轴字体颜色和宽度
axisLine: {
lineStyle: {
color: "#000",
}
}
},
series: [{
data: datayuey,
type: 'line',
lineStyle:{
color:'#1369bf'
},
/* markLine: {
symbol: ['none', 'none'],
label: {show: false},
lineStyle:{
color:'#9A9A9A',
type:'solid',
},
data: [
{xAxis: 1},
{xAxis: 2},
{xAxis: 3},
{xAxis: 4},
{xAxis: 5},
{xAxis: 6},
{xAxis: 7}
]
}, */
}]
};
headZx.on('click', (params) => {
console.log(params)
this.router.navigateByUrl(`/statisticanalysis/delete_one/delete_there/${headtext}/${params.name}`);
});
headZx.setOption(options);
}
/**
* @name:
* @test: test font
* @msg:
* @param {string()}
* @return {type}
*/
biaogeTishi(biaotou:string){
var shuju='[{"name":"浦东支队","number":"156","zhanbi":"3%"},{"name":"黄埔支队","number":"144","zhanbi":"2.8%"},'
shuju+='{"name":"徐汇支队","number":"133","zhanbi":"2.1%"},{"name":"长宁支队","number":"122","zhanbi":"1.6%"},'
shuju+='{"name":"静安支队","number":"120","zhanbi":"1.3%"},{"name":"普陀支队","number":"100","zhanbi":"1.1%"},'
shuju+='{"name":"虹口支队","number":"95","zhanbi":"1%"},{"name":"杨浦支队","number":"90","zhanbi":"0.9%"},'
shuju+='{"name":"闵行支队","number":"88","zhanbi":"0.8%"},{"name":"宝山支队","number":"83","zhanbi":"0.7%"},'
shuju+='{"name":"徐汇支队","number":"133","zhanbi":"2.1%"},{"name":"长宁支队","number":"122","zhanbi":"1.6%"},'
shuju+='{"name":"嘉定支队","number":"78","zhanbi":"0.6%"},{"name":"松江支队","number":"75","zhanbi":"0.5%"},'
shuju+='{"name":"金山支队","number":"65","zhanbi":"0.4%"},{"name":"崇明支队","number":"55","zhanbi":"0.3%"}]'
var jsonObj = JSON.parse(shuju);
var res = '<div class="tishi" style=" backgroundColor:rgba(255,255,255,1);width:100%;height:100%;"><div style="padding:10px 0 5px 0"><span style="color:#000000;font-size:30px;text-align: center;display:block;">'+biaotou+'</span></div>'
res+='</br><div style="width:300px;height:100%;padding:0 20px 15px 20px"><table style="width:300px; background:#FFFFFF; color:#000000;border-collapse:collapse;"cellspacing="0"; >';
res+='<thead><tr>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">名称</td>';
res+='<td style="text-align:center;width:30%;border:1px solid #000000">数量</td>'
res+='<td style="text-align:center;width:30%;border:1px solid #000000">总占比</td>'
res+='</tr></thead>'
res+='<tbody>';
for(var i=0;i<jsonObj.length;i++){
res+='<tr>'
res+='<td style="text-align:center;border:1px solid #000000">'+jsonObj[i].name+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+jsonObj[i].number+'</td>'
res+='<td style="text-align:center;border:1px solid #000000">'+jsonObj[i].zhanbi+'</td></tr>'
}
res+='</tbody>'
res+='<tfoot><td style="text-align:center;border:1px solid #000000">总计</td><td style="text-align:center;border:1px solid #000000">1356</td><td style="text-align:center;border:1px solid #000000">19%</td></tfoot>'
res+='</table></div></div>'
return res
}
}

40
src/app/statistic-analysis/echarts-data.service.ts

@ -163,6 +163,46 @@ export class EchartsDataService {
return [pointX, pointY];
}
tableTooltipNoShow2(point, params, dom, rect, size) {
// 鼠标坐标和提示框位置的参考坐标系是:以外层div的左上角那一点为原点,x轴向右,y轴向下
// 提示框位置
var x = 0; // x坐标位置
var y = 0; // y坐标位置
// 当前鼠标位置
var pointX = point[0];
var pointY = point[1];
// 外层div大小
var viewWidth = size.viewSize[0];
// var viewHeight = size.viewSize[1];
// 提示框大小
var boxWidth = size.contentSize[0];
var boxHeight = size.contentSize[1];
// boxWidth > pointX 说明鼠标左边放不下提示框
if (boxWidth > pointX) {
x = 35;
} else { // 左边放的下
x = pointX + 80;
}
// 说明鼠标右边放不下提示框
if(viewWidth - 100 - pointX < boxWidth){
x = pointX - boxWidth;
}
// boxHeight > pointY 说明鼠标上边放不下提示框
if (boxHeight > pointY) {
y = 65;
} else { // 上边放得下
y = pointY - boxHeight;
}
return [x, y];
}
//用法:
// tooltip: {

14
src/app/statistic-analysis/state/page-one/page-one.component.ts

@ -4,11 +4,10 @@
* @Author: sueRimn
* @Date: 2020-09-01 15:24:39
* @LastEditors: sueRimn
* @LastEditTime: 2020-09-02 15:11:35
* @LastEditTime: 2020-09-02 16:52:44
*/
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
//import * as echarts from '';
declare var echarts: any;
@Component({
@ -26,12 +25,17 @@ export class PageOneComponent implements OnInit {
this.initCharts()
},0)
}
ngOnDestroy(): void {
this.indexBzt.clear()
this.indexBzt.dispose()
}
/* 饼状图跳转 */
/* 首页饼状图 */
indexBzt
initCharts(){
var ec = echarts as any;
var indexBzt = ec.init(document.getElementById('indexBzt'));
this.indexBzt = ec.init(document.getElementById('indexBzt'));
var options={
title: {
text: '预案状态统计(7005家)',
@ -97,10 +101,10 @@ export class PageOneComponent implements OnInit {
}
]
};
indexBzt.on('click', (params) => {
this.indexBzt.on('click', (params) => {
this.router.navigateByUrl('/statisticanalysis/statePageTwo_time');
});
indexBzt.setOption(options);
this.indexBzt.setOption(options);
}
/**
* @name:

67
src/app/statistic-analysis/state/page-two-name/page-two-name.component.ts

@ -15,7 +15,6 @@ export class PageTwoNameComponent implements OnInit {
@ViewChild('zhongDuiChild') zhongDuiChild:PageZhongDuiDetailsComponent; //父组件中获得子组件的引用
ngOnInit(): void {
setTimeout(() => {
this.planState()
this.planAdd()
@ -24,7 +23,27 @@ export class PageTwoNameComponent implements OnInit {
this.planBack()
this.planAudit()
}, 0);
}
ngOnDestroy(): void {
this.addEchart.clear()
this.addEchart.dispose()
this.passPlanEchartObj.clear()
this.passPlanEchartObj.dispose()
this.passMakeEchart.clear()
this.passMakeEchart.dispose()
this.passBackEchart.clear()
this.passBackEchart.dispose()
this.planAuditEchart.clear()
this.planAuditEchart.dispose()
this.topEchart.clear()
this.topEchart.dispose()
}
axisLabel = {
interval: 0,
@ -65,10 +84,11 @@ export class PageTwoNameComponent implements OnInit {
zhiNameData = ["浦东支队","黄埔支队","徐汇支队","长宁支队","静安支队","普陀支队","虹口支队","杨浦支队","闵行支队","宝山支队","嘉定支队","松江支队","金山支队","崇明支队"]
zhiNumData = [200,190,180,170,160,150,140,130,120,110,100,90,80,70]
addEchart
//预案新增统计
planAdd () {
let _this = this
var addEchart = echarts.init(document.getElementById('addEchart'));
this.addEchart = echarts.init(document.getElementById('addEchart'));
var option = {
title: {
text: "预案新增",
@ -107,16 +127,17 @@ export class PageTwoNameComponent implements OnInit {
label: this.topTextlabel
}]
};
addEchart.setOption(option);
addEchart.on('click', function (params) {
this.addEchart.setOption(option);
this.addEchart.on('click', function (params) {
_this.data.statefulInspectionName = '预案新增'
_this.data.statefulInspectionToggle = false
});
}
passPlanEchartObj
//预案审核通过
passPlanEchart (){
let _this = this
var passPlanEchart = echarts.init(document.getElementById('passPlanEchart'));
this.passPlanEchartObj = echarts.init(document.getElementById('passPlanEchart'));
var option = {
title: {
text: "预案审核通过",
@ -154,17 +175,17 @@ export class PageTwoNameComponent implements OnInit {
label: this.topTextlabel
}]
};
passPlanEchart.setOption(option);
passPlanEchart.on('click', function (params) {
this.passPlanEchartObj.setOption(option);
this.passPlanEchartObj.on('click', function (params) {
_this.data.statefulInspectionName = '预案审核通过'
_this.data.statefulInspectionToggle = false
});
}
passMakeEchart
//预案编制
planMake (){
let _this = this
var passMakeEchart = echarts.init(document.getElementById('planMake'));
this.passMakeEchart = echarts.init(document.getElementById('planMake'));
var option = {
title: {
text: "预案编制",
@ -202,17 +223,17 @@ export class PageTwoNameComponent implements OnInit {
label: this.topTextlabel
}]
};
passMakeEchart.setOption(option);
passMakeEchart.on('click', function (params) {
this.passMakeEchart.setOption(option);
this.passMakeEchart.on('click', function (params) {
_this.data.statefulInspectionName = '预案编制'
_this.data.statefulInspectionToggle = false
});
}
passBackEchart
//预案审核退回
planBack (){
let _this = this
var passBackEchart = echarts.init(document.getElementById('planBack'));
this.passBackEchart = echarts.init(document.getElementById('planBack'));
var option = {
title: {
text: "预案审核退回",
@ -250,17 +271,17 @@ export class PageTwoNameComponent implements OnInit {
label: this.topTextlabel
}]
};
passBackEchart.setOption(option);
passBackEchart.on('click', function (params) {
this.passBackEchart.setOption(option);
this.passBackEchart.on('click', function (params) {
_this.data.statefulInspectionName = '预案审核退回'
_this.data.statefulInspectionToggle = false
});
}
planAuditEchart
//预案审核中
planAudit (){
let _this = this
var planAuditEchart = echarts.init(document.getElementById('planAudit'));
this.planAuditEchart = echarts.init(document.getElementById('planAudit'));
var option = {
title: {
text: "预案审核中",
@ -298,16 +319,16 @@ export class PageTwoNameComponent implements OnInit {
label: this.topTextlabel
}]
};
planAuditEchart.setOption(option);
planAuditEchart.on('click', function (params) {
this.planAuditEchart.setOption(option);
this.planAuditEchart.on('click', function (params) {
_this.data.statefulInspectionName = '预案审核中'
_this.data.statefulInspectionToggle = false
});
}
topEchart
//预案状态统计
planState(){
var passPlanEchart = echarts.init(document.getElementById('pie'));
this.topEchart = echarts.init(document.getElementById('pie'));
var option = {
title: {
text: '预案状态统计(7005份)',
@ -397,7 +418,7 @@ export class PageTwoNameComponent implements OnInit {
}
]
}
passPlanEchart.setOption(option);
this.topEchart.setOption(option);
}
tableTooltip(biaotou:string){

13
src/app/statistic-analysis/state/page-zhong-dui-details/page-zhong-dui-details.component.ts

@ -19,9 +19,13 @@ export class PageZhongDuiDetailsComponent implements OnInit {
this.detailEcharts()
})
}
ngOnDestroy(): void {
this.detailPlanEchart.clear()
this.detailPlanEchart.dispose()
}
detailPlanEchart
detailEcharts(){
var detailPlanEchart = echarts.init(document.getElementById('detailBox'));
this.detailPlanEchart = echarts.init(document.getElementById('detailBox'));
var option = {
title: {
text: this.data.statefulInspectionName,
@ -53,10 +57,11 @@ export class PageZhongDuiDetailsComponent implements OnInit {
showBackground: true,
backgroundStyle: {
color: 'rgba(220, 220, 220, 0.8)'
}
},
barWidth :'58'
}]
};
detailPlanEchart.setOption(option);
this.detailPlanEchart.setOption(option);
}

17
src/app/statistic-analysis/statistic-analysis-routing.module.ts

@ -1,3 +1,11 @@
/*
* @Descripttion:
* @version:
* @Author: sueRimn
* @Date: 2020-09-02 16:57:00
* @LastEditors: sueRimn
* @LastEditTime: 2020-09-04 15:55:53
*/
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { PageOneComponent } from './state/page-one/page-one.component';
@ -17,11 +25,17 @@ import { AddUnitOneComponent } from './addUnit/add-unit-one/add-unit-one.compone
import { AddUnitTwoTypeStatisticsComponent } from './addUnit/add-unit-two-type-statistics/add-unit-two-type-statistics.component';
import { AddUnitTwoTypeDetailsComponent } from './addUnit/add-unit-two-type-details/add-unit-two-type-details.component';
import { AddUnitTwoTimeComponent } from './addUnit/add-unit-two-time/add-unit-two-time.component';
import { AddUnitThreeLineDetailsComponent } from './addUnit/add-unit-three-line-details/add-unit-three-line-details.component';
import { AddUnitThreeBarDetailsComponent } from './addUnit/add-unit-three-bar-details/add-unit-three-bar-details.component';
const routes: Routes = [
{ path: 'statePageOne', component: PageOneComponent},
{ path: 'statePageTwo_time', component: PageTwoTimeComponent},
{ path: 'delete_one', component: DeleteOneComponent},
{ path: 'delete_one/delete_two', component: DeleteTwoComponent},
{ path: 'delete_one/delete_there/:headtext/:datayuex', component: DeleteThereComponent},
{ path: 'delete_one/delete_four', component: DeleteFourComponent},
{ path: 'buildingType_one', component: BuildingTypeOneComponent},
{ path: 'delete_two', component: DeleteTwoComponent},
{ path: 'delete_there', component: DeleteThereComponent},
{ path: 'delete_four', component: DeleteFourComponent},
@ -33,6 +47,9 @@ const routes: Routes = [
{ path: 'addUnit_one/addUnit_two_type', component: AddUnitTwoTypeStatisticsComponent},
{ path: 'addUnit_one/addUnit_two_typeDetails', component: AddUnitTwoTypeDetailsComponent},
{ path: 'addUnit_one/addUnit_two_time', component: AddUnitTwoTimeComponent},
{ path: 'addUnit_one/addUnit_two_time/three_lineDetails', component: AddUnitThreeLineDetailsComponent},
{ path: 'addUnit_one/addUnit_two_time/three_barDetails', component: AddUnitThreeBarDetailsComponent},
{ path: 'scheduledUpdates', component: ScheduledUpdatesComponent},
{ path: 'scheduledUpdates', component: ScheduledUpdatesComponent},
{ path: 'scheduledUpdates/PublicEcharts', component: publicEchartsComponent}
];

4
src/app/statistic-analysis/statistic-analysis.module.ts

@ -60,11 +60,13 @@ import { AddUnitOneComponent } from './addUnit/add-unit-one/add-unit-one.compone
import { AddUnitTwoTypeStatisticsComponent } from './addUnit/add-unit-two-type-statistics/add-unit-two-type-statistics.component';
import { AddUnitTwoTypeDetailsComponent } from './addUnit/add-unit-two-type-details/add-unit-two-type-details.component';
import { AddUnitTwoTimeComponent } from './addUnit/add-unit-two-time/add-unit-two-time.component';
import { AddUnitThreeLineDetailsComponent } from './addUnit/add-unit-three-line-details/add-unit-three-line-details.component';
import { AddUnitThreeBarDetailsComponent } from './addUnit/add-unit-three-bar-details/add-unit-three-bar-details.component';
@NgModule({
declarations: [PageOneComponent, PageTwoTimeComponent, PageTwoNameComponent, PageZhongDuiDetailsComponent,echartsComponent, DeleteOneComponent, DeleteTwoComponent, DeleteThereComponent, DeleteFourComponent, BuildingTypeOneComponent, ScheduledUpdatesComponent,publicEchartsComponent,verifiedComponent,notVerifiedComponent,detailedInformationComponent,moreTableComponent, BuildingTypeTwoForwardComponent, BuildingTypeTwoReverseComponent, BuildingTypeThreeDetailsComponent, AddUnitOneComponent, AddUnitTwoTypeStatisticsComponent, AddUnitTwoTypeDetailsComponent, AddUnitTwoTimeComponent],
declarations: [PageOneComponent, PageTwoTimeComponent, PageTwoNameComponent, PageZhongDuiDetailsComponent,echartsComponent, DeleteOneComponent, DeleteTwoComponent, DeleteThereComponent, DeleteFourComponent, BuildingTypeOneComponent, ScheduledUpdatesComponent,publicEchartsComponent,verifiedComponent,notVerifiedComponent,detailedInformationComponent,moreTableComponent, BuildingTypeTwoForwardComponent, BuildingTypeTwoReverseComponent, BuildingTypeThreeDetailsComponent, AddUnitOneComponent, AddUnitTwoTypeStatisticsComponent, AddUnitTwoTypeDetailsComponent, AddUnitTwoTimeComponent,AddUnitThreeLineDetailsComponent,AddUnitThreeBarDetailsComponent],
imports: [
CommonModule,
StatisticAnalysisRoutingModule,

Loading…
Cancel
Save