import { Injectable, EventEmitter} from '@angular/core'; import { Observable, ReplaySubject } from 'rxjs'; import { HttpClient } from '@angular/common/http' @Injectable({ providedIn: 'root' }) export class EchartsDataService { constructor(private http:HttpClient) { } echartsApi(){ this.allEcharts=this.http.get("/api/StatisticsAnalysis") //return this.allEcharts.data } level = sessionStorage.getItem("level"); allEcharts //计划首页 tableShow=false//控制首页表格显隐 buildingName="" //建筑类型 zhuXname=[""] //点击首页不同饼状图后面柱状图显示不同数据 //预案状态分析 statefulInspectionName:string; statefulInspectionToggle:boolean = true; // true=显示当前点击柱状图 flase=显示当前点击折现图 //维护删除 dezhiorBuinding="zhi" //维护删除页面判断是支队查询还是建筑类型查询 //计划更新统计 scheduledUpdatesType:number = 0; //已核查/未核查 scheduledUpdatesName:string; scheduledUpdatesXName:string; //scheduledUpdatesToggle:string ="one"; // 显示 当前点击 已核查/未核查 scheduledUpdatesToggle:number=1 eventEmit = new EventEmitter(); zhiorBuinding="zhi"//维护更新页面判断是支队查询还是建筑类型查询 findShow=true //支队查询和建筑类型按钮显隐控制 //新增判断是组织机构还是建筑类型 zuzhiorBuilding="zhi"//默认是组织机构(支队) //echarts 悬停 显示表格假数据 //支队提示框 tableDataZhi = [ {name:"浦东支队",number:"156",zhanbi:"3%"}, {name:"黄浦支队",number:"144",zhanbi:"2.8%"}, {name:"徐汇支队",number:"133",zhanbi:"2.1%"}, {name:"长宁支队",number:"122",zhanbi:"1.6%"}, {name:"静安支队",number:"120",zhanbi:"1.3%"}, {name:"普陀支队",number:"100",zhanbi:"1.1%"}, {name:"虹口支队",number:"95",zhanbi:"1%"}, {name:"杨浦支队",number:"90",zhanbi:"0.9%"}, {name:"闵行支队",number:"88",zhanbi:"0.8%"}, {name:"宝山支队",number:"83",zhanbi:"0.7%"}, {name:"徐汇支队",number:"133",zhanbi:"2.1%"}, {name:"长宁支队",number:"122",zhanbi:"1.6%"}, {name:"嘉定支队",number:"78",zhanbi:"0.6%"}, {name:"松江支队",number:"75",zhanbi:"0.5%"}, {name:"金山支队",number:"65",zhanbi:"0.4%"}, {name:"崇明支队",number:"55",zhanbi:"0.3%"}/* , {name:"总计",number:"1356",zhanbi:"19%"} */ ] //中队提示框 tableDataZhong = [ {name:"浦东中队",number:"156",zhanbi:"3%"}, {name:"黄浦中队",number:"144",zhanbi:"2.8%"}, {name:"徐汇中队",number:"133",zhanbi:"2.1%"}, {name:"长宁中队",number:"122",zhanbi:"1.6%"}, {name:"静安中队",number:"120",zhanbi:"1.3%"}, {name:"普陀中队",number:"100",zhanbi:"1.1%"}, {name:"虹口中队",number:"95",zhanbi:"1%"}, {name:"杨浦中队",number:"90",zhanbi:"0.9%"}, {name:"闵行中队",number:"88",zhanbi:"0.8%"}, {name:"宝山中队",number:"83",zhanbi:"0.7%"}, {name:"徐汇中队",number:"133",zhanbi:"2.1%"}, {name:"长宁中队",number:"122",zhanbi:"1.6%"}, {name:"嘉定中队",number:"78",zhanbi:"0.6%"}, {name:"松江中队",number:"75",zhanbi:"0.5%"}, {name:"金山中队",number:"65",zhanbi:"0.4%"}, {name:"崇明中队",number:"55",zhanbi:"0.3%"}/* , {name:"总计",number:"1356",zhanbi:"19%"} */ ] //建筑类型提示框 buildingType = [ {name:"高层",number:"156",zhanbi:"3%"}, {name:"地下",number:"144",zhanbi:"2.8%"}, {name:"轨道交通",number:"133",zhanbi:"2.1%"}, {name:"化工生产",number:"122",zhanbi:"1.6%"}, {name:"储罐类",number:"120",zhanbi:"1.3%"}, {name:"厂房",number:"100",zhanbi:"1.1%"}, {name:"古建筑",number:"95",zhanbi:"1%"}, {name:"商市场",number:"90",zhanbi:"0.9%"}, {name:"医院",number:"88",zhanbi:"0.8%"}, {name:"学校",number:"83",zhanbi:"0.7%"}, {name:"宾馆",number:"133",zhanbi:"2.1%"}, {name:"娱乐场所",number:"122",zhanbi:"1.6%"}, {name:"餐饮业",number:"78",zhanbi:"0.6%"}, {name:"影剧院",number:"75",zhanbi:"0.5%"}, {name:"展览建筑",number:"65",zhanbi:"0.4%"}, {name:"隧道",number:"55",zhanbi:"0.3%"}/* , {name:"总计",number:"1356",zhanbi:"19%"} */ ] //月份提示框 monthTooltip = [ {name:"一月",number:"156",zhanbi:"3%"}, {name:"二月",number:"144",zhanbi:"2.8%"}, {name:"三月",number:"133",zhanbi:"2.1%"}, {name:"四月",number:"122",zhanbi:"1.6%"}, {name:"五月",number:"120",zhanbi:"1.3%"}, {name:"六月",number:"100",zhanbi:"1.1%"}, {name:"七月",number:"95",zhanbi:"1%"}, {name:"八月",number:"90",zhanbi:"0.9%"}, {name:"九月",number:"88",zhanbi:"0.8%"}, {name:"十月",number:"83",zhanbi:"0.7%"}, {name:"十一月",number:"133",zhanbi:"2.1%"}, {name:"十二月",number:"122",zhanbi:"1.6%"}/* , {name:"总计",number:"984",zhanbi:"20%"} */ ] //预案提示框 planData = [ {name:"预案新增",number:"156",zhanbi:"19%"}, {name:"预案审核通过",number:"144",zhanbi:"21%"}, {name:"预案编制",number:"133",zhanbi:"20%"}, {name:"预案审核退回",number:"122",zhanbi:"17%"}, {name:"预案审核中",number:"120",zhanbi:"23%"}/* , {name:"总计",number:"561",zhanbi:"100%"}, */ ] //提示框表格 tableTooltip(dataArr,title:string){ let data = dataArr //console.log(data) var res = '
'+title+'
' res+='
'; res+=''; res+=''; res+='' res+='' res+='' res+=''; for(var i=0;i' res+='' res+='' } res+='' res+='' res+='
名称数量总占比
'+data[i].number+''+data[i].zhanbi+'
总计135619%
' return res } //如果提示框显示不开 tableTooltipNoShow(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; } // boxHeight > pointY 说明鼠标上边放不下提示框 if (boxHeight > pointY) { y = 65; } else { // 上边放得下 y = pointY - boxHeight; } 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 = pointX + 60; } else { // 左边放的下 x = pointX + 80; } // 说明鼠标右边放不下提示框 if(viewWidth - 100 - pointX < boxWidth){ x = pointX - boxWidth-50; } // boxHeight > pointY 说明鼠标上边放不下提示框 if (boxHeight > pointY) { y = 65; } else { // 上边放得下 y = pointY - boxHeight; } return [x, y]; } //第三层鼠标弹窗效果 tableTooltipNoShowq(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 = pointX + 40; //上面放不下 if (boxHeight > pointY){ y=pointY+30 } //下面放不下 if(viewHeight+162-pointY pointY){ y=pointY+30 } //下面放不下 if(viewHeight+162-pointY pointY){ y=pointY+30 } //下面放不下 if(viewHeight+162-pointY pointY 说明鼠标上边放不下提示框 /* if (boxHeight > pointY) { y = 65; } else { // 上边放得下 y = pointY - boxHeight; } */ return [x, y]; } //第二层鼠标弹窗效果 tableTooltipNoShowt(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 = pointX + 40; //上面放不下 if (boxHeight > pointY){ y=pointY+30 } //下面放不下 if(viewHeight+400-pointY pointY){ y=pointY+30 } //下面放不下 if(viewHeight+400-pointY pointY){ y=pointY+30 } //下面放不下 if(viewHeight+400-pointY{ // return this.serviceData.tableTooltip(this.serviceData.buildingType,params[0].name) // }, // position:this.serviceData.tableTooltipNoShow // } /** * @name: 中队表格提示框封装 * @test: test font * @msg: * @param {string(表头)} * @return {type} */ biaogeTishi(biaotou:string){ var res = '
'+biaotou+'
' res+='
'; res+=''; res+=''; res+='' res+='' res+='' res+=''; //var res='
'+biaotou+'
' for(var i=0;i' res+='
' res+='' } res+='' res+='' res+='
名称数量总占比
'+this.tableDataZhong[i].number+''+this.tableDataZhong[i].zhanbi+'
总计135619%
' return res } /** * @name: 表格提示框封装(总队) * @test: test font * @msg: * @param {string(表头)} * @return {type} */ res tishiData localData biaogeTishiZhi(datas){ console.log(datas) for(var a in this.obdata[0].buildingTypes){ if(this.obdata[0].buildingTypes[a].buildingTypeName==datas.name){ this.tishiData=this.obdata[0].buildingTypes[a].organizations } } console.log(this.tishiData) var countall=0//总计 var countbi=0//站比 var allCountbi=0//总站比 for(var i=0;i' this.res+='
'; this.res+=''; this.res+=''; this.res+='' this.res+='' this.res+='' this.res+=''; for(var i=0;i' this.res+='' this.res+='' } this.res+='' this.res+='' this.res+='
名称数量总占比
'+this.tishiData[i].count+''+countbi+'%
总计'+countall+''+allCountbi.toFixed(2)+'%
' return this.res } //支队表格提示 biaogeTishida(datas){ console.log(datas) this.tishiData='' for(var a in this.obdata[0].organizations){ if(this.obdata[0].organizations[a].organizationName==datas.name){ this.tishiData=this.obdata[0].organizations[a].subOrganizations } } console.log(this.tishiData) var countall=0//总计 var countbi=0//站比 var allCountbi=0//总站比 for(var i=0;i' this.res+='
'; this.res+=''; this.res+=''; this.res+='' this.res+='' this.res+='' this.res+=''; for(var i=0;i' this.res+='' this.res+='' } this.res+='' this.res+='' this.res+='
名称数量总占比
'+this.tishiData[i].count+''+countbi+'%
总计'+countall+''+allCountbi.toFixed(2)+'%
' return this.res } //预案表格提示 apidata=[] biaogeTishiyuan(datas){ //localStorage.setItem('tishi',this.tishiData) console.log(datas) let paramdata={ planStatus:datas.type } if(datas.name=='预案新增'){ this.localData='' if(localStorage.getItem('addtishi')==undefined){ this.http.get(`/api/StatisticsAnalysis/Plans/Status`,{params:paramdata}).subscribe((data:any)=>{ this.tishiData=data.organizations localStorage.setItem('addtishi',JSON.stringify(this.tishiData)) }) } this.localData=localStorage.getItem('addtishi') }else if(datas.name=='预案审核中'){ this.localData='' if(localStorage.getItem('shenheingtishi')==undefined){ this.http.get(`/api/StatisticsAnalysis/Plans/Status`,{params:paramdata}).subscribe((data:any)=>{ this.tishiData=data.organizations localStorage.setItem('shenheingtishi',JSON.stringify(this.tishiData)) }) } this.localData=localStorage.getItem('shenheingtishi') }else if(datas.name=='预案审核退回'){ this.localData='' if(localStorage.getItem('shenhetuitishi')==undefined){ this.http.get(`/api/StatisticsAnalysis/Plans/Status`,{params:paramdata}).subscribe((data:any)=>{ this.tishiData=data.organizations localStorage.setItem('shenhetuitishi',JSON.stringify(this.tishiData)) }) } this.localData=localStorage.getItem('shenhetuitishi') }else if(datas.name='预案审核通过'){ this.localData='' if(localStorage.getItem('yuansuccesstishi')==undefined){ this.http.get(`/api/StatisticsAnalysis/Plans/Status`,{params:paramdata}).subscribe((data:any)=>{ this.tishiData=data.organizations localStorage.setItem('yuansuccesstishi',JSON.stringify(this.tishiData)) }) } this.localData=localStorage.getItem('yuansuccesstishi') }else{ this.localData='' if(localStorage.getItem('yuanbiantishi')==undefined){ this.http.get(`/api/StatisticsAnalysis/Plans/Status`,{params:paramdata}).subscribe((data:any)=>{ this.tishiData=data.organizations localStorage.setItem('yuanbiantishi',JSON.stringify(this.tishiData)) }) } this.localData=localStorage.getItem('yuanbiantishi') } console.log(JSON.parse(this.localData) ) this.localData=JSON.parse(this.localData) window.setTimeout(()=>{ var countall=0//总计 var countbi=0//站比 var allCountbi=0//总站比 for(var i=0;i' this.res+='
'; this.res+=''; this.res+=''; this.res+='' this.res+='' this.res+='' this.res+=''; for(var i=0;i' this.res+='' this.res+='' } this.res+='' this.res+='' this.res+='
名称数量总占比
'+this.localData[i].count+''+countbi+'%
总计'+countall+''+allCountbi.toFixed(2)+'%
' return this.res },1000) } zhiNameData = ["浦东支队","黄浦支队","徐汇支队","长宁支队","静安支队","普陀支队","虹口支队","杨浦支队","闵行支队","宝山支队","嘉定支队","松江支队","金山支队","崇明支队"] zhiNumData = [200,190,180,170,160,150,140,130,120,110,100,90,80,70] isQuery=true /** * @name: 气泡封装 * @test: test font * @msg: * @param {气泡提示对象,y轴数据,x轴数据} * @return {json对象} */ qipao(tiaoshiPao:any,yData,xData):any{ if(yData.length>=1){ var arrshuzu='['; for(var i=0;i{ this.allDate.push(data) this.obdata=JSON.parse(JSON.stringify(this.allDate)) console.log(this.obdata) return this.allDate }) } selectType=0//选择年月 selectOneYear selectTwoYear selectStartMonth=1 selectEndMonth=12 }