From 2cdbad409e82d4354e4eca5cffa65c6bef7a4d20 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 16 三月 2026 13:36:37 +0800
Subject: [PATCH] bom添加产品编码

---
 src/views/energyManagement/energyConsumptionStatistical/index.vue |  157 ++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 126 insertions(+), 31 deletions(-)

diff --git a/src/views/energyManagement/energyConsumptionStatistical/index.vue b/src/views/energyManagement/energyConsumptionStatistical/index.vue
index 9363511..8e540b8 100644
--- a/src/views/energyManagement/energyConsumptionStatistical/index.vue
+++ b/src/views/energyManagement/energyConsumptionStatistical/index.vue
@@ -180,9 +180,13 @@
                          label="搴忓彿"
                          width="60"
                          align="center" />
-        <el-table-column prop="timePeriod"
-                         :label="timeColumnLabel"
-                         align="center" />
+        <el-table-column prop="meterReadingDate"
+                         label="鏃ユ湡"
+                         align="right">
+          <template #default="scope">
+            <span class="consumption-value">{{ scope.row.meterReadingDate }}</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="waterConsumption"
                          label="鐢ㄦ按閲�(鍚�)"
                          align="right">
@@ -190,11 +194,11 @@
             <span class="consumption-value">{{ scope.row.waterConsumption }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="waterAmount"
+        <el-table-column prop="waterCost"
                          label="姘磋垂(鍏�)"
                          align="right">
           <template #default="scope">
-            <span class="amount-value">{{ scope.row.waterAmount }}</span>
+            <span class="amount-value">{{ scope.row.waterCost }}</span>
           </template>
         </el-table-column>
         <el-table-column prop="electricityConsumption"
@@ -204,11 +208,11 @@
             <span class="consumption-value">{{ scope.row.electricityConsumption }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="electricityAmount"
+        <el-table-column prop="electricityCost"
                          label="鐢佃垂(鍏�)"
                          align="right">
           <template #default="scope">
-            <span class="amount-value">{{ scope.row.electricityAmount }}</span>
+            <span class="amount-value">{{ scope.row.electricityCost }}</span>
           </template>
         </el-table-column>
         <el-table-column prop="gasConsumption"
@@ -218,11 +222,11 @@
             <span class="consumption-value">{{ scope.row.gasConsumption }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="gasAmount"
+        <el-table-column prop="gasCost"
                          label="姘旇垂(鍏�)"
                          align="right">
           <template #default="scope">
-            <span class="amount-value">{{ scope.row.gasAmount }}</span>
+            <span class="amount-value">{{ scope.row.gasCost }}</span>
           </template>
         </el-table-column>
         <el-table-column prop="totalConsumption"
@@ -237,7 +241,7 @@
                          align="right"
                          fixed="right">
           <template #default="scope">
-            <span class="total-amount-value">楼{{ scope.row.totalAmount }}</span>
+            <span class="total-amount-value">楼{{ scope.row.totalCost }}</span>
           </template>
         </el-table-column>
       </el-table>
@@ -267,15 +271,28 @@
     ArrowDown,
   } from "@element-plus/icons-vue";
   import * as echarts from "echarts";
+  import { energyConsumptionDetailStatistics } from "@/api/energyManagement/energyType";
 
   // 缁熻缁村害锛歞ay-鎸夋棩锛宮onth-鎸夋湀锛寉ear-鎸夊勾
   const statisticsType = ref("day");
 
   // 鎼滅储琛ㄥ崟
   const searchForm = reactive({
-    energyType: "",
-    dateRange: [],
-    monthRange: [],
+    energyType: "鍏ㄩ儴",
+    dateRange: (() => {
+      // 榛樿鏈�杩�7澶�
+      const end = new Date();
+      const start = new Date();
+      start.setDate(start.getDate() - 6);
+      return [start.toISOString().split("T")[0], end.toISOString().split("T")[0]];
+    })(),
+    monthRange: (() => {
+      // 榛樿鏈�杩�3涓湀
+      const end = new Date();
+      const start = new Date();
+      start.setMonth(start.getMonth() - 2);
+      return [start.toISOString().slice(0, 7), end.toISOString().slice(0, 7)];
+    })(),
     year: new Date().getFullYear(),
   });
 
@@ -430,7 +447,7 @@
       },
       xAxis: {
         type: "category",
-        data: data.map(item => item.timePeriod),
+        data: data.map(item => item.meterReadingDate),
         axisLabel: { rotate: statisticsType.value === "day" ? 45 : 0 },
       },
       yAxis: {
@@ -481,7 +498,7 @@
       },
       xAxis: {
         type: "category",
-        data: data.map(item => item.timePeriod),
+        data: data.map(item => item.meterReadingDate),
         axisLabel: { rotate: statisticsType.value === "day" ? 45 : 0 },
       },
       yAxis: {
@@ -492,21 +509,21 @@
         {
           name: "姘磋垂",
           type: "line",
-          data: data.map(item => item.waterAmount),
+          data: data.map(item => item.waterCost),
           smooth: true,
           itemStyle: { color: "#409EFF" },
         },
         {
           name: "鐢佃垂",
           type: "line",
-          data: data.map(item => item.electricityAmount),
+          data: data.map(item => item.electricityCost),
           smooth: true,
           itemStyle: { color: "#E6A23C" },
         },
         {
           name: "姘旇垂",
           type: "line",
-          data: data.map(item => item.gasAmount),
+          data: data.map(item => item.gasCost),
           smooth: true,
           itemStyle: { color: "#67C23A" },
         },
@@ -582,15 +599,15 @@
   const updateAmountTypeChart = () => {
     const data = tableData.value;
     const totalWaterAmount = data.reduce(
-      (sum, item) => sum + parseFloat(item.waterAmount),
+      (sum, item) => sum + parseFloat(item.waterCost),
       0
     );
     const totalElectricityAmount = data.reduce(
-      (sum, item) => sum + parseFloat(item.electricityAmount),
+      (sum, item) => sum + parseFloat(item.electricityCost),
       0
     );
     const totalGasAmount = data.reduce(
-      (sum, item) => sum + parseFloat(item.gasAmount),
+      (sum, item) => sum + parseFloat(item.gasCost),
       0
     );
 
@@ -651,13 +668,73 @@
   // 鏌ヨ
   const handleQuery = () => {
     tableLoading.value = true;
-    setTimeout(() => {
-      const data = generateMockData();
-      tableData.value = data;
-      page.total = data.length;
-      tableLoading.value = false;
-      updateCharts();
-    }, 300);
+    const params = {
+      type: "",
+    };
+
+    // 鏋勯�犺姹傚弬鏁�
+    if (searchForm.energyType != "鍏ㄩ儴") {
+      params.type = searchForm.energyType;
+    }
+
+    if (statisticsType.value === "day") {
+      if (searchForm.dateRange && searchForm.dateRange.length === 2) {
+        params.startDate = searchForm.dateRange[0];
+        params.endDate = searchForm.dateRange[1];
+        // 璁$畻澶╂暟
+        const start = new Date(searchForm.dateRange[0]);
+        const end = new Date(searchForm.dateRange[1]);
+        params.days = Math.ceil((end - start) / (1000 * 60 * 60 * 24)) + 1;
+      }
+    } else if (statisticsType.value === "month") {
+      if (searchForm.monthRange && searchForm.monthRange.length === 2) {
+        params.startDate = searchForm.monthRange[0] + "-01";
+        params.endDate = searchForm.monthRange[1] + "-01";
+        // 璁$畻鏈堟暟
+        const start = new Date(searchForm.monthRange[0] + "-01");
+        const end = new Date(searchForm.monthRange[1] + "-01");
+        params.days =
+          (end.getFullYear() - start.getFullYear()) * 12 +
+          (end.getMonth() - start.getMonth()) +
+          1;
+      }
+    } else if (statisticsType.value === "year") {
+      params.startDate = searchForm.year + "-01-01";
+      params.endDate = searchForm.year + "-12-31";
+      params.days = 365;
+    }
+
+    // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁
+    energyConsumptionDetailStatistics(params)
+      .then(res => {
+        if (res.code === 200) {
+          const data = res.data;
+
+          // 鏇存柊缁熻姒傝鏁版嵁
+          overview.totalConsumption = data.totalEnergyConsumption || "0";
+          overview.totalAmount = data.totalEnergyCost || "0";
+          overview.avgConsumption = data.averageConsumption || "0";
+          overview.compareRate = data.changeVite || 0;
+
+          // 澶勭悊琛ㄦ牸鏁版嵁
+          tableData.value = data.energyCostDtos || [];
+          page.total = tableData.value.length || 0;
+        } else {
+          ElMessage.error(res.message || "鑾峰彇鏁版嵁澶辫触");
+          tableData.value = [];
+          page.total = 0;
+        }
+      })
+      .catch(err => {
+        console.error("鑾峰彇鏁版嵁寮傚父锛�", err);
+        ElMessage.error("绯荤粺寮傚父锛岃幏鍙栨暟鎹け璐�");
+        tableData.value = [];
+        page.total = 0;
+      })
+      .finally(() => {
+        tableLoading.value = false;
+        updateCharts();
+      });
   };
 
   // 鏇存柊鎵�鏈夊浘琛�
@@ -672,10 +749,28 @@
 
   // 閲嶇疆
   const handleReset = () => {
-    searchForm.energyType = "";
-    searchForm.dateRange = [];
-    searchForm.monthRange = [];
+    searchForm.energyType = "鍏ㄩ儴";
+    // 閲嶇疆涓洪粯璁ゆ椂闂磋寖鍥�
+    const end = new Date();
+    const start = new Date();
+
+    // 榛樿鏈�杩�7澶�
+    start.setDate(start.getDate() - 6);
+    searchForm.dateRange = [
+      start.toISOString().split("T")[0],
+      end.toISOString().split("T")[0],
+    ];
+
+    // 榛樿鏈�杩�3涓湀
+    start.setMonth(start.getMonth() - 2);
+    searchForm.monthRange = [
+      start.toISOString().slice(0, 7),
+      end.toISOString().slice(0, 7),
+    ];
+
+    // 榛樿褰撳墠骞翠唤
     searchForm.year = new Date().getFullYear();
+
     page.current = 1;
     handleQuery();
   };

--
Gitblit v1.9.3