From 211677ef5c3932ec6765eb0b97d89eb16c0ea8f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=BE=8E=E5=B9=B3?= <1102247926@qq.com> Date: Fri, 18 Apr 2025 18:05:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=88=86=E6=A0=B8=E9=AA=8C=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E6=A0=B8=E9=AA=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=B1=95=E7=A4=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/util/api/api.js | 14 +- src/util/router/router.js | 5 +- src/util/tool.js | 7 + src/views/dev/detail/everyDayData.vue | 300 ++++++++++ src/views/dev/detail/everyDayDataJM.vue | 200 +++++++ src/views/dev/detail/feeStatDetail.vue | 41 +- src/views/dev/detail/hbData.vue | 248 ++++++++ src/views/dev/divfeeShowStat.vue | 278 +++++++++ src/views/dev/echarts/echatsTotalLine.vue | 176 +++++- src/views/dev/echarts/echatsTotalLineShow.vue | 534 ++++++++++++++++++ src/views/dev/gsCheckMain.vue | 187 ++++-- 11 files changed, 1915 insertions(+), 75 deletions(-) create mode 100644 src/views/dev/detail/everyDayData.vue create mode 100644 src/views/dev/detail/everyDayDataJM.vue create mode 100644 src/views/dev/detail/hbData.vue create mode 100644 src/views/dev/divfeeShowStat.vue create mode 100644 src/views/dev/echarts/echatsTotalLineShow.vue diff --git a/src/util/api/api.js b/src/util/api/api.js index 3f37243..801e19b 100644 --- a/src/util/api/api.js +++ b/src/util/api/api.js @@ -12,18 +12,28 @@ export const getSelectList = data => post("/devProjectJt/selectData/getListByTyp //根据门架查询所有计费单元明细数据 export const getListByPage = data => post("/devProjectJt/divFeeDetail/getListPage", data,"") +export const getTotal = data => post("/devProjectJt/divFeeDetail/getTotal", data,"") //查询汇总中各拆分状态 export const getDivDataList = data => post("/devProjectJt/divFeeStat/getDivDataList", data,"") export const getFeeTotal = data => post("/devProjectJt/divFeeStat/getFeeTotal", data,"") +export const getHbData = data => post("/devProjectJt/divFeeStat/getHbData", data,"") +export const getFeeTotalStatus = data => post("/devProjectJt/divFeeStat/getFeeTotalStatus", data,"") +//查询所有计费单元的经纬度,通过门架查找 -//查询所有计费单元的经纬度,通过门架查找 export const getFeeLntLagList = data => post("/devProjectJt/divFeeDetail/getListByPage", data,"") //查询汇总排名 export const getRankList = data => post("/devProjectJt/divFeeStat/getRankList", data,"") //汇总金额查询 export const getHzData = data => post("/devProjectJt/divFeeStat/getHzData", data,"") +export const getEveryClassFee = data => post("/devProjectJt/divFeeStat/getEveryClassFee", data,"") //导出明细数据 -export const exportDivPassidAllData = data => download("/devProjectJt/exportData/exportList", data,null) \ No newline at end of file +export const exportDivPassidAllData = data => download("/devProjectJt/exportData/exportList", data,null) + + +//20250417 数据核验数据展示 +export const getFeeShowTotal = data => post("/devProjectJt/divFeeStat/getFeeShowTotal", data,"") +export const getStatusToal = data => post("/devProjectJt/divFeeStat/getStatusToal", data,"") +export const getVehicleClassToal = data => post("/devProjectJt/divFeeStat/getVehicleClassToal", data,"") diff --git a/src/util/router/router.js b/src/util/router/router.js index 76c52b6..6e07af6 100644 --- a/src/util/router/router.js +++ b/src/util/router/router.js @@ -1,5 +1,6 @@ import * as vueRouter from "vue-router"; import gsCheckMain from '@/views/dev/gsCheckMain.vue'; +import divfeeShowStat from '@/views/dev/divfeeShowStat.vue'; import mapfee from '@/views/dev/detail/map.vue'; @@ -8,8 +9,8 @@ import mapfee from '@/views/dev/detail/map.vue'; const routes = [ { - path: '/', - component: gsCheckMain,// + path: '/devProjectJt/divfeeShowStat', + component: divfeeShowStat,// }, { path: '/devProjectJt/index', component: gsCheckMain,// diff --git a/src/util/tool.js b/src/util/tool.js index b7bb3bc..326169b 100644 --- a/src/util/tool.js +++ b/src/util/tool.js @@ -140,6 +140,13 @@ let pro = { // nextDate = nextYear + "-" + nextMonth+'-'+nextDate.getDate()+" "+nextDate.getHours()+":"+nextDate.getMonth()+":"+nextDate.getSeconds(); date = nextDate; return date; + },DayDec(date,num) {//前 num天数 的日期 + var dd = new Date(date); + dd.setDate(dd.getDate() + num); + var y = dd.getFullYear(); + var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1; + var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); + return y + "-" + m + "-" + d; }, YearAdd(date,num) { let currentDate = date; diff --git a/src/views/dev/detail/everyDayData.vue b/src/views/dev/detail/everyDayData.vue new file mode 100644 index 0000000..74ee084 --- /dev/null +++ b/src/views/dev/detail/everyDayData.vue @@ -0,0 +1,300 @@ + + + + \ No newline at end of file diff --git a/src/views/dev/detail/everyDayDataJM.vue b/src/views/dev/detail/everyDayDataJM.vue new file mode 100644 index 0000000..1217274 --- /dev/null +++ b/src/views/dev/detail/everyDayDataJM.vue @@ -0,0 +1,200 @@ + + + + \ No newline at end of file diff --git a/src/views/dev/detail/feeStatDetail.vue b/src/views/dev/detail/feeStatDetail.vue index 68cc30e..099f43d 100644 --- a/src/views/dev/detail/feeStatDetail.vue +++ b/src/views/dev/detail/feeStatDetail.vue @@ -105,13 +105,15 @@
- + - + @@ -143,7 +145,7 @@
\ No newline at end of file diff --git a/src/views/dev/divfeeShowStat.vue b/src/views/dev/divfeeShowStat.vue new file mode 100644 index 0000000..47e853a --- /dev/null +++ b/src/views/dev/divfeeShowStat.vue @@ -0,0 +1,278 @@ + + + + \ No newline at end of file diff --git a/src/views/dev/echarts/echatsTotalLine.vue b/src/views/dev/echarts/echatsTotalLine.vue index 734e913..448f75b 100644 --- a/src/views/dev/echarts/echatsTotalLine.vue +++ b/src/views/dev/echarts/echatsTotalLine.vue @@ -1,34 +1,34 @@ @@ -66,7 +66,8 @@ export default { "queryEndTime":endDate, "subcomno":subcomno, "roadno":roadno, - "stano":stano + "stano":stano, + "isNoContainJm":"Y" //默认不包含减免的费用 } getDivDataList(paramsObj).then( res=>{ @@ -84,9 +85,11 @@ export default { var dataNoFeeFlow = []; var dataLessDiv = []; + var dataLessDivFee = []; var dataLessDivFlow = []; var dataMoreDiv = []; + var dataMoreDivFee = []; var dataMoreDivFlow = []; if(_data !==undefined ){ @@ -104,10 +107,12 @@ export default { } if(divData.status ==="2"){//计费大于拆分 dataLessDiv.push(tool.NumRound(divData.fee)); + dataLessDivFee.push(tool.NumRound(divData.divfee)); dataLessDivFlow.push(divData.carcount); } if(divData.status ==="3"){//计费小于拆分 dataMoreDiv.push(tool.NumRound(divData.fee)); + dataMoreDivFee.push(tool.NumRound(divData.divfee)); dataMoreDivFlow.push(divData.carcount); } if(divData.status ==="4"){//未计费 @@ -124,8 +129,8 @@ export default { this.initOptionLine('divRightLine', dataX, dataRight, dataRightFlow); this.initOptionLine('noDivLine', dataX, dataNoDiv, dataNoDivFlow); this.initOptionLine('noFeeLine', dataX, dataNoFee, dataNoFeeFlow); - this.initOptionLine('lessDivLine', dataX, dataLessDiv, dataLessDivFlow); - this.initOptionLine('moreDivLine', dataX, dataMoreDiv, dataMoreDivFlow); + this.initOptionLineMoreLess('lessDivLine', dataX, dataLessDiv,dataLessDivFee, dataLessDivFlow); + this.initOptionLineMoreLess('moreDivLine', dataX, dataMoreDiv,dataMoreDivFee, dataMoreDivFlow); }) } } @@ -293,7 +298,152 @@ export default { // 控制台打印数据的名称 _this.$emit("changeGantryCount",params.name); });*/ - } + },initOptionLineMoreLess(divId,dataX,dataMoney,dataFeeMoney,dataFlow) { + let myChart = this.$echarts.init(document.getElementById(divId)) + // 绘制图表 + this.option = { + title : { + text: '', + subtext: '' + }, + tooltip : { + trigger: 'axis', + //position:['20px','20px'] + }, + legend: { + data:["流量(辆)","计费金额(元)","拆分金额(元)"] + }, + toolbox: { + show : true, + orient: 'vertical', + title : { + line : '折线图', + bar : '柱形图' + + }, + feature : { + mark : {show: true}, + //垂直显示 + //dataView : {show: true, readOnly: false}, + magicType : {show: true, + title : { + line : '折线图', + bar : '柱形图' + + }, + type: ['line', 'bar']}, + } + }, + calculable : true, + xAxis : + { + type : 'category', + name:'日期', + nameTextStyle:{ + lineHeight:30, + verticalAlign:'top' + }, + boundaryGap : true, + axisTick: { + show: true, + alignWithLabel:true + + }, + axisLabel: { //设置x轴的文字 + show:true, + interval:0,//使x轴横坐标全部显示 + //rotate:45, + textStyle:{fontSize:10} + }, + data : dataX + }, dataZoom: [{ + type: 'slider', + show: true, //flase直接隐藏图形 + xAxisIndex: [0], + backgroundColor:'rgb(233,236,238)', + handleColor:'rgba(147,145,145,0.81)', + fillerColor:'rgb(184,186,187)', + handleSize:30,//控制手柄大小 + height:30, + left: '9%', //滚动条靠左侧的百分比 + bottom: -5, + start: 0,//滚动条的起始位置 + end: 110 //滚动条的截止位置(按比例分割你的柱状图x轴长度) + }], + yAxis :[ + { + type : 'value', + axisLabel : { + formatter: '{value}' + }, + show:false, + splitLine:{ + show:true + }, + lineStyle:{ + color:'black', + type:'solid', + width:2 + }, + sync: true, + splitNumber:10, + position:'left' + },{ + type : 'value', + axisLabel : { + formatter: '{value}' + }, + show:false, + splitLine:{ + show:true + }, + lineStyle:{ + color:'black', + type:'solid', + width:2 + }, + sync: true, + splitNumber:100, + position:'right' + } + ], + series : [ + { + name:'流量(辆)', + type:'line', + data:dataFlow, + label:{ + show: true, // 显示标签 + position: 'top', // 标签位置 + formatter: '{c}' // 标签格式器,{c} 代表数据值 + }, + yAxisIndex:0 + },{ + name:'计费金额(元)', + type:'bar', + data:dataMoney, + label:{ + show: true, // 显示标签 + position: 'inside', // 标签位置 + formatter: '{c}' // 标签格式器,{c} 代表数据值 + }, + yAxisIndex:1 + },{ + name:'拆分金额(元)', + type:'bar', + data:dataFeeMoney, + label:{ + show: true, // 显示标签 + position: 'inside', // 标签位置 + formatter: '{c}' // 标签格式器,{c} 代表数据值 + }, + yAxisIndex:1 + } + ] + }; + myChart.setOption(this.option); + + } },mounted() { _this=this; /* diff --git a/src/views/dev/echarts/echatsTotalLineShow.vue b/src/views/dev/echarts/echatsTotalLineShow.vue new file mode 100644 index 0000000..b3e53f1 --- /dev/null +++ b/src/views/dev/echarts/echatsTotalLineShow.vue @@ -0,0 +1,534 @@ + + + + + + \ No newline at end of file diff --git a/src/views/dev/gsCheckMain.vue b/src/views/dev/gsCheckMain.vue index a13fa23..a33c73a 100644 --- a/src/views/dev/gsCheckMain.vue +++ b/src/views/dev/gsCheckMain.vue @@ -1,56 +1,75 @@