From 52bd8c50dfeb8599b317813c9b60e88118e7edbd Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期二, 11 二月 2025 14:45:08 +0800
Subject: [PATCH] 累计值曲线

---
 src/views/model/pre/analysis/index.vue |  108 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 99 insertions(+), 9 deletions(-)

diff --git a/src/views/model/pre/analysis/index.vue b/src/views/model/pre/analysis/index.vue
index c7bddd8..ae8903c 100644
--- a/src/views/model/pre/analysis/index.vue
+++ b/src/views/model/pre/analysis/index.vue
@@ -166,7 +166,7 @@
               </el-form>
               <el-form :inline="true" :model="formData" label-width="100px">
                 <el-row>
-                  <el-col :span="12">
+                  <el-col :span="16">
                     <el-form-item label="数据类型">
                       <el-checkbox-group v-model="formData.chartCheck" @change="changeChartCheck">
                         <el-checkbox v-for="item in formData.chartOptions" :label="item"
@@ -225,7 +225,7 @@
   currentStamp60: '',
   predictStamp: '',
   chartCheck: ['T+L', '真实值'],
-  chartOptions: ['T+N', 'T+L', '当时', '真实值', '调整值'],
+  chartOptions: ['T+N', 'T+L', '当时', '真实值', '调整值', '预测累计', '真实累计'],
   checkedItemData: [],
   backItem: '',
   backValue: 0,
@@ -297,6 +297,22 @@
     formData.value.endTime = data.endTime
 
     let xAxisData = data.categories;
+    let defaultYAxis = [
+      {
+        type: 'value',
+        name: "累计值",
+        splitLine: {show: false},
+        axisLine: {show: true},
+        position: 'right'
+      },
+      {
+        type: 'value',
+        name: "",
+        splitLine: {show: false},
+        axisLine: {show: true},
+        position: 'left'
+      }
+    ];
     let yAxisData = [];
     let offset = 0;
     let yAxisIndex = 0;
@@ -327,12 +343,27 @@
       },
     });
     itemDataObject.value = {}
+    yAxisData.push({
+      type: 'value',
+      name: "累计值",
+      position: 'right',
+      splitLine: {
+        show: false
+      },
+      axisLine: {
+        show: true,
+        lineStyle: {}
+      },
+      axisLabel: {
+        formatter: '{value}'
+      }
+    })
     for (let i = 0; i < data.dataViewList.length; i++) {
       let dataView = data.dataViewList[i]
       itemDataObject.value[dataView.outId] = dataView;
       let maxValue = dataView.maxValue;
       let minValue = dataView.minValue;
-      yAxisIndex = formData.value.isMultipleY ? i : 0;
+      yAxisIndex = (formData.value.isMultipleY ? i : 0) + 1;
       let yMax = maxValue;
       if (maxValue < 0) {
         maxValue = 1;
@@ -451,6 +482,68 @@
           }
         });
       }
+
+      if (chartCheckArray.indexOf('预测累计') !== -1) {
+        let legendName = dataView.resultName + '(预测累计)';
+        legendData.push(legendName);
+        let seriesLeiJiData = []
+        if (dataView.curData) {
+          let leiJi = 0;
+          for (let i = 0; i < dataView.curData.length; i++) {
+            let item = dataView.curData[i];
+            leiJi = leiJi + Number(item[1])
+            seriesLeiJiData.push([item[0], (leiJi / 60).toFixed(2)]);
+          }
+        }
+        seriesData.push({
+          name: legendName,
+          data: seriesLeiJiData,
+          type: 'line',
+          yAxisIndex: 0,
+          showSymbol: false,
+          connectNulls: true,
+          smooth: false,
+          lineStyle: {
+            width: 2,
+            type: 'dashed'
+          }
+        });
+      }
+
+      if (chartCheckArray.indexOf('真实累计') !== -1) {
+        let legendName = dataView.resultName + '(真实累计)';
+        legendData.push(legendName);
+        let seriesLeiJiData = []
+        if (dataView.realData) {
+          let leiJi = 0;
+          let lCount = 0
+          for (let i = 0; i < dataView.realData.length; i++) {
+            let item = dataView.realData[i];
+            if(new Date(item[0]).getTime() < new Date(formData.value.predictTime).getTime()) {
+              continue
+            }
+            if (lCount > dataView.curData.length) {
+              continue
+            }
+            lCount = lCount + 1
+            leiJi = leiJi + Number(item[1])
+            seriesLeiJiData.push([item[0], (leiJi / 60).toFixed(2)]);
+          }
+        }
+        seriesData.push({
+          name: legendName,
+          data: seriesLeiJiData,
+          type: 'line',
+          yAxisIndex: 0,
+          showSymbol: false,
+          connectNulls: true,
+          smooth: false,
+          lineStyle: {
+            width: 2,
+            type: 'dashed'
+          }
+        });
+      }
     }
     //如果最大值相差不大,改成一致大小
     if (yMaxArr.length > 1) {
@@ -462,6 +555,7 @@
         }
       }
     }
+
     myChart = echarts.init(dataAnalysisChart.value);
     let option = {
       title: {
@@ -487,11 +581,7 @@
         boundaryGap: false,
         data: xAxisData
       },
-      yAxis: formData.value.isMultipleY ? yAxisData : {
-        type: 'value',
-        splitLine: {show: false},
-        axisLine: {show: true}
-      },
+      yAxis: formData.value.isMultipleY ? yAxisData : defaultYAxis,
       dataZoom: [
         {
           type: 'inside',
@@ -730,7 +820,7 @@
     currentStamp60: '',
     predictStamp: '',
     chartCheck: ['T+L', '真实值'],
-    chartOptions: ['T+N', 'T+L', '当时', '真实值', '调整值'],
+    chartOptions: ['T+N', 'T+L', '当时', '真实值', '调整值', '预测累计', '真实累计'],
     checkedItemData: [],
     backItem: '',
     backValue: 0,

--
Gitblit v1.9.3