import { Component, OnInit, Renderer2, ElementRef } from '@angular/core'; import { HttpClient } from '@angular/common/http' import { Router } from '@angular/router'; import { EchartsDataService } from '../echarts-data.service'; declare var echarts: any; declare var AMap: any; declare var AMapUI: any; @Component({ selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.scss'] }) export class HomeComponent implements OnInit { constructor(private http:HttpClient, private render2: Renderer2,public element: ElementRef,private router: Router,public emitService: EchartsDataService) { } map:any; //地图 yuandata ngOnInit() { this.level=sessionStorage.getItem("level") this.getechartsdata() /* this.emitService.eventEmit.subscribe((value: any) => { if (value == 'echarts') { setTimeout(() => { this.updateEcharts() }, 500); } }); window.addEventListener('resize', () => { setTimeout(() => { this.updateEcharts() }, 0); }) */ window.setTimeout(()=>{ /* this.unitType() this.unitData() this.keyUnit() */ this.mapInit() //初始化地图 },0) } //更新echarts视图 /* updateEcharts(){ this.planState.resize() this.chartDwsjcj.resize() this.chartZdgzqy.resize() } */ //获取数据 ordata buildtableData lengthdata=[]//建筑提示数据 buildcount=0//建筑总数 indexData=[]//建筑所有数据 async getechartsdata(){ let paramsdata:any = { OrganizationId:this.orid||'', //organizationId:'1' } //获取组织机构数据 await this.emitService.getData(paramsdata,`/api/StatisticsAnalysis/Companies`) this.ordata=JSON.parse(JSON.stringify(this.emitService.allDate)) console.log(this.ordata) this.keyUnitNum=this.ordata[0].organizationStatistics.totalCount this.unitData() //获取预案状态统计数据 await this.emitService.getData(paramsdata,`/api/StatisticsAnalysis/Plans`) this.unitType() //获取建筑类型统计数据 await this.emitService.getData(paramsdata,`/api/StatisticsAnalysis/BuildingTypes`) this.keyUnit() } threePlan(){ // this.router.navigate(['/planManagement/entryPlan']) } twoPlan(){ // this.router.navigate(['/planManagement/entryPlan']) } cardPlan(){ // this.router.navigate(['/planManagement/entryPlan']) } otherPlan(){ // this.router.navigate(['/planManagement/entryPlan']) } //计划更新页面跳转 scheduled(){ this.router.navigate(['/statisticanalysis/scheduledUpdates']) } ngOnDestroy(): void { /* this.planState.clear() this.planState.dispose() this.chartDwsjcj.clear() this.chartDwsjcj.dispose() this.chartZdgzqy.clear() this.chartZdgzqy.dispose() */ } //初始化地图 adcode:any //行政编码 level//组织级别 orid mapInit () { //创建地图 this.map = new AMap.Map('chartMap', { cursor: 'default', zooms:[8,16], mapStyle:"amap://styles/grey", // bubble: true }); let colors = [ "#3366cc", "#dc3912", "#ff9900", "#109618", "#990099", "#0099c6", "#dd4477", "#66aa00", "#b82e2e", "#316395", "#994499", "#22aa99", "#aaaa11", "#6633cc", "#e67300", "#8b0707", "#651067", "#329262", "#5574a6", "#3b3eac" ]; AMapUI.loadUI(['geo/DistrictExplorer'], (DistrictExplorer)=> { //创建一个实例 let districtExplorer = new DistrictExplorer({ map: this.map, eventSupport: true, //打开事件支持 }); // let adcode = this.adcode; //行政编码 let adcode if(sessionStorage.getItem("realName") == "上海总队"){ adcode = 310000 }else{ adcode = 310000 } districtExplorer.loadAreaNode(adcode, (error, areaNode)=> { //更新地图视野 this.map.setBounds(areaNode.getBounds(), null, null, true); //设置定位节点,支持鼠标位置识别 //注意节点的顺序,前面的高优先级 districtExplorer.setAreaNodesForLocating(areaNode); //清除已有的绘制内容 districtExplorer.clearFeaturePolygons(); //绘制子区域 districtExplorer.renderSubFeatures(areaNode, (feature, i) =>{ // console.log(123,feature,i) let fillColor = colors[i % colors.length]; let strokeColor = colors[colors.length - 1 - i % colors.length]; return { cursor: 'default', bubble: true, strokeColor: strokeColor, //线颜色 strokeOpacity: 1, //线透明度 strokeWeight: 1, //线宽 fillColor: fillColor, //填充色 fillOpacity: 0.5, //填充透明度 }; }); //绘制父区域 districtExplorer.renderParentFeature(areaNode, { cursor: 'default', bubble: true, strokeColor: 'black', //线颜色 strokeOpacity: 1, //线透明度 strokeWeight: 1, //线宽 fillColor: null, //填充色 fillOpacity: 0.5, //填充透明度 }); // 更新地图视野以适合区划面 this.map.setFitView(districtExplorer.getAllFeaturePolygons()); }); if(this.level=="0"||this.level=="1"||this.level=="2"){ //区域内点击 districtExplorer.on('featureClick', (e, feature) =>{ //console.log(feature) let paramsdata:any ={ name:feature.properties.name, level:Number(this.level)+1 } this.http.get("/api/Organizations/GetIdByName",{params:paramsdata}).subscribe((data:any)=>{ console.log(data) this.orid=data[0] this.getechartsdata() }) let props = feature.properties; adcode = props.adcode let fillColor2 if(props.level == 'city'){ fillColor2 = null }else{ fillColor2 = '#d0daee' } districtExplorer.loadAreaNode(adcode, (error, areaNode)=> { //更新地图视野 // this.map.setBounds(areaNode.getBounds(), null, null, true); //设置定位节点,支持鼠标位置识别 //注意节点的顺序,前面的高优先级 districtExplorer.setAreaNodesForLocating(areaNode); //清除已有的绘制内容 districtExplorer.clearFeaturePolygons(); //绘制子区域 districtExplorer.renderSubFeatures(areaNode, (feature, i) =>{ let fillColor = colors[i % colors.length]; // console.log(111,fillColor) let strokeColor = colors[colors.length - 1 - i % colors.length]; return { cursor: 'default', bubble: true, strokeColor: strokeColor, //线颜色 strokeOpacity: 1, //线透明度 strokeWeight: 1, //线宽 fillColor: fillColor, //填充色 fillOpacity: 0.5, //填充透明度 }; }); //绘制父区域 districtExplorer.renderParentFeature(areaNode, { cursor: 'default', bubble: true, strokeColor: 'black', //线颜色 strokeOpacity: 1, //线透明度 strokeWeight: 1, //线宽 fillColor: fillColor2, //填充色 fillOpacity: 0.5, //填充透明度 }); // 更新地图视野以适合区划面 this.map.setFitView(districtExplorer.getAllFeaturePolygons()); }); //this.planState.setOption(this.planStateOptionsZhong); //this.chartDwsjcj.setOption(this.chartDwsjcjOptionsZhong); //this.chartZdgzqy.setOption(this.chartZdgzqyOptionsZhong); /* this.planNum = ["0","0","3","1","6","5"] this.keyUnitNum = 666 */ //this.dataGetNum = 456 /* this.threePlanNum = "867" this.twoPlanNum = "485" this.cardPlanNum = "756" this.otherPlanNum = "658" */ }); districtExplorer.on('outsideClick', (e) => { this.orid='' this.getechartsdata() // console.log('区域外点击'); let adcode if(sessionStorage.getItem("realName") == "上海总队"){ adcode = 310000 }else{ adcode = 310000 } districtExplorer.loadAreaNode(adcode, (error, areaNode)=> { //更新地图视野 // this.map.setBounds(areaNode.getBounds(), null, null, true); //设置定位节点,支持鼠标位置识别 //注意节点的顺序,前面的高优先级 districtExplorer.setAreaNodesForLocating(areaNode); //清除已有的绘制内容 districtExplorer.clearFeaturePolygons(); //绘制子区域 districtExplorer.renderSubFeatures(areaNode, (feature, i) =>{ let fillColor = colors[i % colors.length]; // console.log(111,fillColor) let strokeColor = colors[colors.length - 1 - i % colors.length]; return { cursor: 'default', bubble: true, strokeColor: strokeColor, //线颜色 strokeOpacity: 1, //线透明度 strokeWeight: 1, //线宽 fillColor: fillColor, //填充色 fillOpacity: 0.5, //填充透明度 }; }); //绘制父区域 districtExplorer.renderParentFeature(areaNode, { cursor: 'default', bubble: true, strokeColor: 'black', //线颜色 strokeOpacity: 1, //线透明度 strokeWeight: 1, //线宽 fillColor: null, //填充色 fillOpacity: 0.5, //填充透明度 }); // 更新地图视野以适合区划面 this.map.setFitView(districtExplorer.getAllFeaturePolygons()); }); /* this.planState.setOption(this.planStateOptionsZhi); this.chartDwsjcj.setOption(this.chartDwsjcjOptionsZhi); this.chartZdgzqy.setOption(this.chartZdgzqyOptionsZhi); */ /* this.planNum = ["0","2","2","6","7","8"] this.keyUnitNum = 8036 this.dataGetNum = 6578 */ /* this.threePlanNum = "4374" this.twoPlanNum = "9693" this.cardPlanNum = "6403" this.otherPlanNum = "2208" */ }) } }); } planNum = [] keyUnitNum dataGetNum = 6578 threePlanNum = "0" twoPlanNum = "0" cardPlanNum = "0" otherPlanNum = "0" aPlan = '0' bPlan = '0' cPlan = '0' dPlan = '0' ePlan = '0' ngAfterViewInit(): void { } planState //预案状态统计 pagedata pagedataCount unitType () { this.planNum=[] this.pagedata=JSON.parse(JSON.stringify(this.emitService.allDate)) console.log(this.pagedata) this.pagedataCount=String(this.pagedata[0].planStatusStatistics.totalCount) for(var i=0;i { if(array[index].planTypeName=='Plan2D'){ this.twoPlanNum=array[index].count }else if(array[index].planTypeName=='Plan3D'){ this.threePlanNum=array[index].count }else if(array[index].planTypeName=='Other'){ this.otherPlanNum=array[index].count }else if(array[index].planTypeName=='PlanText'){ this.cardPlanNum=array[index].count } }); } if(this.pagedata[0].planCategoryStatistics.planCategories.length<=0){ this.aPlan='0' this.bPlan='0' this.cPlan='0' this.dPlan='0' this.ePlan='0' }else{ this.pagedata[0].planCategoryStatistics.planCategories.forEach((value,index,array) => { if(array[index].planCategoryName=='LevelOne'){ this.aPlan=array[index].count }else if(array[index].planCategoryName=='LevelTwo'){ this.bPlan=array[index].count }else if(array[index].planCategoryName=='LevelThree'){ this.cPlan=array[index].count }else if(array[index].planCategoryName=='LevelFour'){ this.dPlan=array[index].count }else if(array[index].planCategoryName=='LevelFive'){ this.ePlan=array[index].count } }); } /* */ let planStateOptionsZhi = { title: { text: `预案状态统计(${this.pagedata[0].planStatusStatistics.totalCount}份)`, left: 'left', textStyle:{ color:'#fff', fontWeight:'normal' } }, tooltip: { trigger: 'item', formatter: '{b} : {c} ({d}%)' }, series: [ { name: '访问来源', type: 'pie', radius: '60%', center: ['50%', '58%'], label:{ show:true, //fontSize:10, formatter:'{b}\n{d|{c}份}', rich: { d: { align: 'center', } }, }, data: [ {value:this.pagedata[0].planStatusStatistics.planStatuses[0]!=undefined? this.pagedata[0].planStatusStatistics.planStatuses[0].count:0, name: '预案新增',type:1,planStatusName:this.pagedata[0].planStatusStatistics.planStatuses[0]!=undefined?this.pagedata[0].planStatusStatistics.planStatuses[0].planStatusName:''}, {value:this.pagedata[0].planStatusStatistics.planStatuses[2]!=undefined? this.pagedata[0].planStatusStatistics.planStatuses[2].count:0, name: '预案审核通过',type:3,planStatusName:this.pagedata[0].planStatusStatistics.planStatuses[2]!=undefined? this.pagedata[0].planStatusStatistics.planStatuses[2].planStatusName:''}, {value:this.pagedata[0].planStatusStatistics.planStatuses[4]!=undefined? this.pagedata[0].planStatusStatistics.planStatuses[4].count:0, name: '预案编制',type:5,planStatusName:this.pagedata[0].planStatusStatistics.planStatuses[4]!=undefined?this.pagedata[0].planStatusStatistics.planStatuses[4].planStatusName:''}, {value:this.pagedata[0].planStatusStatistics.planStatuses[3]!=undefined? this.pagedata[0].planStatusStatistics.planStatuses[3].count:0, name: '预案审核退回',type:4,planStatusName:this.pagedata[0].planStatusStatistics.planStatuses[3]!=undefined? this.pagedata[0].planStatusStatistics.planStatuses[3].planStatusName:''}, {value:this.pagedata[0].planStatusStatistics.planStatuses[1]!=undefined? this.pagedata[0].planStatusStatistics.planStatuses[1].count:0, name: '预案审核中',type:2,planStatusName:this.pagedata[0].planStatusStatistics.planStatuses[1]!=undefined? this.pagedata[0].planStatusStatistics.planStatuses[1].planStatusName:''} ], emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }; this.planState = echarts.init(document.getElementById('chartHynyxf'), 'walden'); this.planState.setOption(planStateOptionsZhi); this.planState.on("click",(params) => { this.router.navigate(['/statisticanalysis/statePageOne']) }) } //新增、删除单位统计 chartDwsjcj addtable addxdata=[] addydata=[] chartDwsjcjOptionsZhong = { // color: ['#FB33C2', '#00CFF0', '#2C3DE0'], // 标题 title: { text: '新增、删除单位统计', left: 0, top: 0, textStyle:{ color:'#fff', fontWeight:'normal' }, }, grid: { left: 30, right: 0, }, //图例 legend: { top: 0, data: ['新增单位', '删除单位', ], icon: 'circle', itemGap: 20, }, //提示框 tooltip: { trigger: 'axis', }, // x轴 xAxis: { type: 'category', data: ["浦东中队","黄浦中队","徐汇中队","长宁中队","静安中队","普陀中队","虹口中队","杨浦中队","闵行中队","宝山中队","嘉定中队","松江中队","金山中队","崇明中队"], axisLabel: { interval: 0, formatter:function(value){ var ret = "";//拼接加\n返回的类目项 var maxLength = 5;//每项显示文字个数 var valLength = value.length;//X轴类目项的文字个数 var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数 if (rowN > 1) { //如果类目项的文字大于3, for (var i = 0; i < rowN; i++) { var temp = "";//每次截取的字符串 var start = i * maxLength;//开始截取的位置 var end = start + maxLength;//结束截取的位置 //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧 temp = value.substring(start, end) + "\n"; ret += temp; } //凭借最终的字符串 return ret; }else { return value; } } //function } }, // y轴 yAxis: { type: 'value', splitLine: { show: true, lineStyle: { color: 'rgba(255,255,255,.4)' } }, }, // 数据 series: [ { name: '新增单位', type: 'bar', data: [88, 45, 95, 105, 75, 89, 69, 110, 96, 90, 80, 78, 94, 102], label: { show: false, position: "top", formatter: '{c}', color: "#fff", } }, { name: '删除单位', type: 'bar', data: [35, 33, 27, 30, 35, 36, 28, 32, 36, 22, 19, 28, 34, 36], label: { show: false, position: "top", formatter: '{c}', color: "#fff", } } ], }; unitData () { this.addxdata=[] this.addydata=[] this.addtable=JSON.parse(JSON.stringify(this.emitService.allDate)) this.addtable[0].organizationStatistics.organizations.forEach((value,index,array) => { this.addxdata.push(array[index].organizationName) this.addydata.push(array[index].count) }); let chartDwsjcjOptionsZhi = { // 标题 title: { text: `新增单位统计(${this.addtable[0].totalCount}家)`, left: 0, top: 0, textStyle:{ color:'#fff', fontWeight:'normal' }, }, grid: { //containLabel:true, left: 30, right: 0, bottom:30 }, //图例 /* legend: { top: 0, data: ['新增单位' ], icon: 'circle', itemGap: 20, }, */ //提示框 tooltip: { trigger: 'axis', }, // x轴 xAxis: { type: 'category', data: this.addxdata, axisLabel: { interval: 0, formatter:function(value){ var ret = "";//拼接加\n返回的类目项 var maxLength = 5;//每项显示文字个数 var valLength = value.length;//X轴类目项的文字个数 var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数 if (rowN > 1) { //如果类目项的文字大于3, for (var i = 0; i < rowN; i++) { var temp = "";//每次截取的字符串 var start = i * maxLength;//开始截取的位置 var end = start + maxLength;//结束截取的位置 //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧 temp = value.substring(start, end) + "\n"; ret += temp; } //凭借最终的字符串 return ret; }else { return value; } } //function } }, // y轴 yAxis: { type: 'value', splitLine: { show: true, lineStyle: { color: 'rgba(255,255,255,.4)' } }, }, // 数据 series: [ { name: '新增单位', type: 'bar', data: this.addydata, label: { show: false, position: "top", formatter: '{c}', color: "#fff", }, barMaxWidth:'20%' } /* , { name: '删除单位', type: 'bar', data: [300, 202, 101, 134, 290, 430, 220, 490, 430, 490, 430, 202, 101, 134 ], label: { show: false, position: "top", formatter: '{c}', color: "#fff", } } */ ], }; this.chartDwsjcj = echarts.init(document.getElementById('chartDwsjcj'),'walden'); this.chartDwsjcj.setOption(chartDwsjcjOptionsZhi); this.chartDwsjcj.on("click",(params) => { this.router.navigate(['/statisticanalysis/addUnit_one']) }) } chartZdgzqy //建筑类型统计 keyUnit () { this.buildcount=0 this.buildtableData=JSON.parse(JSON.stringify(this.emitService.allDate)) //console.log(this.buildtableData) for(var i=0;i{return {name: v.buildingTypeName,value:v.count,id:v.buildingTypeId}}) let chartZdgzqyOptionsZhi = { title: { text: `建筑类型统计(${this.buildcount}家)`, top: -5, left: 'left', textStyle:{ color:'#fff', fontWeight:'normal' } }, tooltip: { trigger: 'item', formatter: '{b} : {c}家 ({d}%)' }, // legend: { // orient: 'vertical', // right: 150, // top:80, // data: ['高层', '地下', '轨道交通', '化工生产', '储罐类' , '厂房','古建筑', '商市场', '医院', '学校', '宾馆' , '娱乐场所','餐饮业', '影剧院', '展览建筑' , '隧道'] // }, series: [ { name: '访问来源', type: 'pie', radius: '70%', center: ['50%', '61%'], label:{ show:true, // fontSize:13, formatter:'{b}{c}家', rich: { d: { align: 'center', } }, }, data: this.indexData, emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }; this.chartZdgzqy = echarts.init(document.getElementById('chartZdgzqy'), 'walden'); this.chartZdgzqy.setOption(chartZdgzqyOptionsZhi); this.chartZdgzqy.on("click",(params) => { this.router.navigate(['/statisticanalysis/buildingType_one']) }) } isNumList:boolean = true changeNumList(){ this.isNumList = !this.isNumList } }