From 53b7083f9a8ef8bf31bc8411280e6520df88162d Mon Sep 17 00:00:00 2001 From: qiudan <1044775178@qq.com> Date: Sat, 4 Nov 2023 16:47:45 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/chart/avgChart.vue | 2 +- src/components/chart/thermalChart.vue | 4 +- src/components/sensorFusion/echartsLine.vue | 14 +- src/components/target/typeChart.vue | 29 +++- src/views/bounced/dataBoard.vue | 17 +- src/views/index.vue | 5 +- src/views/sensorFusion/index.vue | 163 +++++++++++++++----- 7 files changed, 178 insertions(+), 56 deletions(-) diff --git a/src/components/chart/avgChart.vue b/src/components/chart/avgChart.vue index 8171f2f..075b07e 100644 --- a/src/components/chart/avgChart.vue +++ b/src/components/chart/avgChart.vue @@ -44,7 +44,7 @@ export default { }, methods: { drawBar(arr) { - console.log("均值图",arr) + // console.log("均值图",arr) let myChart = this.$echarts.getInstanceByDom(this.$refs.barChart); if (myChart == null) { myChart = this.$echarts.init(this.$refs.barChart); diff --git a/src/components/chart/thermalChart.vue b/src/components/chart/thermalChart.vue index 57a0956..4360a8a 100644 --- a/src/components/chart/thermalChart.vue +++ b/src/components/chart/thermalChart.vue @@ -36,7 +36,7 @@ export default { methods: { //处理od组件数据 ODhanlde(odData) { - console.log(odData,'oddata'); + // console.log(odData,'oddata'); // var odData = this.odData var chartData = [] var start = [] @@ -52,7 +52,7 @@ export default { } } // this.thermalChartData = chartData - console.log(chartData,'处理过后的odssssssssssssss'); + // console.log(chartData,'处理过后的odssssssssssssss'); return chartData // console.log(chartData, this.unique(start), 'od图的数据'); }, diff --git a/src/components/sensorFusion/echartsLine.vue b/src/components/sensorFusion/echartsLine.vue index f9f3c93..da5c3db 100644 --- a/src/components/sensorFusion/echartsLine.vue +++ b/src/components/sensorFusion/echartsLine.vue @@ -126,15 +126,19 @@ export default { } else if (this.componentType == '类型') { this.chartData.xData = this.extractKeyValues(val, 'time'); let seriesArr = this.extractKeyValues(val, 'type_data'); + console.log('seriesArr-固定时刻',seriesArr) const transformedData = []; for (let i = 0; i < seriesArr[0].length; i++) { const item = seriesArr[0][i]; - const valueList = seriesArr.map((arr) => arr[i].quantity); + //固定间隔主题-类型组件type_data取value字段和固定时刻不一样,固定时刻取quantity字段 + // const valueList = seriesArr.map((arr) => arr[i].quantity); + const valueList = seriesArr.map((arr) => arr[i].value); transformedData.push({ name: item.name, value: valueList }); } + // console.log('transformedData-1',transformedData) const totalCountList = transformedData[0].value.map((_, i) => { return transformedData.reduce((sum, curr) => sum + curr.value[i], 0); }); @@ -168,15 +172,18 @@ export default { } else if (this.componentType == '类型') { this.chartData.xData = this.extractKeyValues(val, 'time'); let seriesArr = this.extractKeyValues(val, 'type_data'); + // console.log('seriesArr-固定间隔',seriesArr) const transformedData = []; for (let i = 0; i < seriesArr[0].length; i++) { const item = seriesArr[0][i]; - const valueList = seriesArr.map((arr) => arr[i].quantity); + //固定间隔主题-类型组件type_data取value字段和固定时刻不一样,固定时刻取quantity字段 + const valueList = seriesArr.map((arr) => arr[i].value); transformedData.push({ name: item.name, value: valueList }); } + // console.log('transformedData-2',transformedData) const totalCountList = transformedData[0].value.map((_, i) => { return transformedData.reduce((sum, curr) => sum + curr.value[i], 0); }); @@ -242,7 +249,9 @@ export default { // slicedData = data; // 如果数据不足 10 条,则保留全部数据 // } if (this.componentType == '类型') { + console.log('类型-dataList',this.dataList) this.typeData.push({ type_data: this.dataList[0].type_data, time: this.dataList[0].time }); + console.log('类型-typeData',this.typeData) this.dataProcessing(this.typeData); } else { this.dataProcessing(this.dataList); @@ -257,6 +266,7 @@ export default { var seriesList = []; var color = ['#0CD2E6', '#3751E6', '#FFC722', 'rgb(255,115,38)']; if (this.componentType == '类型') { + console.log('类型-seriesList',this.seriesList) for (let i = 0; i < this.seriesList.length; i++) { seriesList.push({ name: this.seriesList[i].name, diff --git a/src/components/target/typeChart.vue b/src/components/target/typeChart.vue index 7e321e2..a623160 100644 --- a/src/components/target/typeChart.vue +++ b/src/components/target/typeChart.vue @@ -4,7 +4,31 @@
-
+
+
+ +
+ {{ n.name }}
+ {{ + n.quantity || n.quantity === 0 ? n.quantity : ' - ' + }} + + +
+
+
+ {{ cycleAccumulateDataArr[0].time ? cycleAccumulateDataArr[0].time : '' }} +
+
+
+
+
+
{{ n.quantity || n.quantity === 0 ? n.quantity : ' - ' }} +
@@ -34,6 +59,7 @@ {{ getTotal(cycleAccumulateDataArr) }} +
{{ getTotal(newDataArr) }} +
{ newVal.forEach((item) => { if (ele.analogAreaComponentId == item.component_id && ele.timeMode == '固定间隔') { - if (ele.cycleStatisticsData.length == 10) { - ele.cycleStatisticsData.pop(); - } + // if (ele.cycleStatisticsData.length == 10) { + // ele.cycleStatisticsData.pop(); + // } if (this.$route.query.type == '离线视频') { var timeNew = item.time.split('.')[0]; @@ -862,9 +862,12 @@ export default { itemTypeChartRef2.dataArr.length != 0 ) { //console.log('itemTypeChartRef2.echartArr',itemTypeChartRef2.echartArr) - if (itemTypeChartRef2.echartArr.includes('数值')) { - //只需要修改数值组件 - that.$refs.typeChartRef2[i].getcycleAccumulateDataArr([item]); + if ( + itemTypeChartRef2.echartArr.includes('数值') && + itemTypeChartRef2.itemData.analogAreaComponentId == item.component_id + ) { + //只需要修改数值组件,逻辑存在问题 + itemTypeChartRef2.getcycleAccumulateDataArr([item]); } } } diff --git a/src/views/index.vue b/src/views/index.vue index 117a60f..e99a4e6 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -1530,7 +1530,10 @@ export default { const temp = utf8decoder.decode(u8arr); // 将二进制数据转为字符串 var detId = []; const msgN = JSON.parse(temp); - // console.log('cycle_accumulate-周期统计实时累计数据主题', msgN); + console.log('cycle_accumulate-周期统计实时累计数据主题', msgN); + for (const t of msgN) { + console.log(JSON.stringify(t.type_data)) + } this.cycleAccumulateData = msgN; } catch (error) {} break; diff --git a/src/views/sensorFusion/index.vue b/src/views/sensorFusion/index.vue index 485f353..68559b4 100644 --- a/src/views/sensorFusion/index.vue +++ b/src/views/sensorFusion/index.vue @@ -124,10 +124,11 @@ style="color: rgb(71, 161, 255); font-size: 23px" v-if="i.componentType == '类型'" > - {{ + + + {{ getTotal(i.triggerData.type_data, 'quantity') }} - + + - {{ + + {{ getTotal(i.cycleTimeData[0].type_data, 'quantity') }} - - {{ getTotal(i.triggerData.type_data, 'value') }} + - - + + + + {{ + i.cycleTimeData[0].speed > 0 || i.cycleTimeData[0].speed === 0 + ? 'km/h' + : 'pix/s' + }} + + + + + {{ + i.triggerData.speed > 0 || i.triggerData.speed === 0 + ? 'km/h' + : 'pix/s' + }} + + + + - {{ + + {{ getTotal(i.cycleStatisticsData[0].type_data, 'quantity') }} - - - - - - {{ i.triggerData.speed > 0 || i.triggerData.speed === 0 ? 'km/h' : 'pix/s' }} + + + + + {{ + i.cycleStatisticsData[0].speed > 0 || i.cycleStatisticsData[0].speed === 0 + ? 'km/h' + : 'pix/s' + }} + + + + + {{ + i.triggerData.speed > 0 || i.triggerData.speed === 0 + ? 'km/h' + : 'pix/s' + }} + - + {{ node.label }} @@ -1789,6 +1852,19 @@ export default { this.getSensorFusionData(); }, methods: { + //类型数据累计 + getTotal(arr, field) { + const total = arr.reduce((accumulator, item) => { + if (item[field] || item[field] === 0) { + const fieldValue = parseFloat(item[field]); + if (!isNaN(fieldValue)) { + return accumulator + fieldValue; + } + } + return accumulator; // 如果无效则不累加 + }, 0); + return total; + }, //获取视频列表接口 getRealTimeShipjk() { getRealTimeShipjk().then((res) => { @@ -1805,7 +1881,10 @@ export default { this.addSelectOptionField(this.intersectionList); // this.addTriggerDataField(this.intersectionList); //mqtt订阅 - this.getMqtt(); + this.$nextTick(() => { + this.getMqtt(); + }); + //console.log(this.intersectionList, 'this.intersectionList'); //开发路口默认展开第一个 if (this.intersectionList.length > 0) { @@ -3134,7 +3213,7 @@ export default { const u8arr = new Uint8Array(message); const temp = utf8decoder.decode(u8arr); // 将二进制数据转为字符串 const msgN = JSON.parse(temp); - //console.log('固定时刻', msgN); + console.log('固定时刻', msgN); for (let j = 0; j < msgN.length; j++) { const locations = this.findLocationById(this.intersectionList, msgN[j].component_id); //处理speed正负值和-1,卡片区在html上处理了,数据源不做处理 @@ -3208,7 +3287,6 @@ export default { n_stay: msgN[j].n_stay, n_queue: msgN[j].n_queue, occ: msgN[j].occ, - speed: newSpeed, originalSpeed: msgN[j].speed }; this.$nextTick(() => { @@ -3245,8 +3323,8 @@ export default { type: msgN[j].type, n_stay: msgN[j].n_stay, n_queue: msgN[j].n_queue, + type_data: msgN[j].type_data, occ: msgN[j].occ, - speed: newSpeed, originalSpeed: msgN[j].speed }; this.$nextTick(() => { @@ -3289,6 +3367,7 @@ export default { const msgN = JSON.parse(temp); //console.log('固定间隔', msgN, this.topicVideoIdList[i].videoId); // this.cycleStatisticsData = msgN; + // console.log('固定间隔', msgN) for (let j = 0; j < msgN.length; j++) { //处理speed正负值和-1,卡片区在html上处理了,数据源不做处理 let newSpeed = '-'; @@ -3299,7 +3378,7 @@ export default { //图表区数组加表格数据 let carTou = { time: msgN[j].time, - headway: msgN[j].ave_headway, + ave_headway: msgN[j].ave_headway, avg: msgN[j].avg, max: msgN[j].max, med: msgN[j].med, @@ -3360,7 +3439,6 @@ export default { ave_stay: msgN[j].ave_stay, ave_queue: msgN[j].ave_queue, occ: msgN[j].occ, - speed: newSpeed, originalSpeed: msgN[j].speed }; this.$nextTick(() => { @@ -3395,10 +3473,10 @@ export default { min: msgN[j].min, name: msgN[j].name, type: msgN[j].type, + type_data: msgN[j].type_data, ave_stay: msgN[j].ave_stay, ave_queue: msgN[j].ave_queue, occ: msgN[j].occ, - speed: newSpeed, originalSpeed: msgN[j].speed }; this.$nextTick(() => { @@ -3470,7 +3548,6 @@ export default { min: msgN[j].min, name: msgN[j].name, type: msgN[j].type, - ave_stay: msgN[j].ave_stay, ave_queue: msgN[j].ave_queue, occ: msgN[j].occ, speed: newSpeed, @@ -3504,7 +3581,6 @@ export default { name: msgN[j].name, type: msgN[j].type, ave_stay: msgN[j].ave_stay, - ave_queue: msgN[j].ave_queue, occ: msgN[j].occ, speed: newSpeed, originalSpeed: msgN[j].speed @@ -3522,6 +3598,7 @@ export default { ave_delay: msgN[j].ave_delay, time: msgN[j].time }; + this.$nextTick(() => { this.updateValueByVideoIdAndCommentId( this.intersectionList, @@ -3533,7 +3610,7 @@ export default { //图表 let table = { time: msgN[j].time, - n_queue: msgN[j].ave_delay, + ave_delay: msgN[j].ave_delay, name: msgN[j].name, type: msgN[j].type, ave_stay: msgN[j].ave_stay, @@ -3578,7 +3655,7 @@ export default { const temp = utf8decoder.decode(u8arr); // 将二进制数据转为字符串 var detId = []; const msgN = JSON.parse(temp); - // //console.log('固定间隔cycle_accumulate', msgN); + //console.log('周期', msgN, this.topicVideoIdList[i].videoId); // this.cycleStatisticsData = msgN; for (let j = 0; j < msgN.length; j++) { //处理speed正负值和-1,卡片区在html上处理了,数据源不做处理 @@ -3674,6 +3751,7 @@ export default { ave_delay: msgN[j].ave_delay, time: msgN[j].time }; + this.$nextTick(() => { this.updateValueByVideoIdAndCommentId( this.intersectionList, @@ -3682,6 +3760,7 @@ export default { map ); }); + } else if (msgN[j].component_type == 'OD') { } } } catch (error) {}