From a6b2d94fdd578d5918d6d6fc33996620beed20b3 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期三, 18 三月 2026 14:35:24 +0800
Subject: [PATCH] 能耗成本核算查询入参修改

---
 src/views/costAccounting/energyCosts/index.vue |  103 ++++++++++++++++++++++++++++++---------------------
 1 files changed, 61 insertions(+), 42 deletions(-)

diff --git a/src/views/costAccounting/energyCosts/index.vue b/src/views/costAccounting/energyCosts/index.vue
index 957f66c..5488bcc 100644
--- a/src/views/costAccounting/energyCosts/index.vue
+++ b/src/views/costAccounting/energyCosts/index.vue
@@ -27,7 +27,7 @@
         <el-form :model="searchForm"
                  :inline="true"
                  class="filter-form">
-          <el-form-item label="鑳借�楃被鍨�">
+          <!-- <el-form-item label="鑳借�楃被鍨�">
             <el-select v-model="searchForm.energyType"
                        placeholder="鍏ㄩ儴"
                        clearable
@@ -42,15 +42,13 @@
               <el-option label="姘�"
                          value="姘�" />
             </el-select>
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="鑳借�楃敤閫�">
-            <el-select v-model="searchForm.energyPurpose"
-                       placeholder="鍏ㄩ儴"
+            <el-select v-model="searchForm.type"
+                       placeholder=""
                        clearable
                        class="w-140"
                        @change="handleQuery">
-              <el-option label="鍏ㄩ儴"
-                         value="鍏ㄩ儴" />
               <el-option label="鐢熶骇"
                          value="鐢熶骇" />
               <el-option label="鍔炲叕"
@@ -480,7 +478,7 @@
             </el-tag>
           </template>
         </el-table-column>
-        <el-table-column prop="energyPurpose"
+        <el-table-column prop="type"
                          label="鑳借�楃敤閫�"
                          width="100"
                          align="center"
@@ -488,8 +486,8 @@
                          :filter-method="filterEnergyPurpose"
                          filter-placement="bottom-end">
           <template #default="scope">
-            <el-tag :type="scope.row.energyPurpose === '鐢熶骇' ? 'primary' : 'info'">
-              {{ scope.row.energyPurpose }}
+            <el-tag :type="scope.row.type === '鐢熶骇' ? 'primary' : 'info'">
+              {{ scope.row.type }}
             </el-tag>
           </template>
         </el-table-column>
@@ -552,8 +550,8 @@
 
   // 鎼滅储琛ㄥ崟
   const searchForm = reactive({
-    energyType: "",
-    energyPurpose: "",
+    // energyType: "",
+    type: "",
     dateRange: (() => {
       // 榛樿鏈�杩�7澶�
       const end = new Date();
@@ -645,8 +643,8 @@
       const c = Number.parseFloat(r?.cost);
       const cost = Number.isFinite(c) ? c : 0;
       bucket.total += cost;
-      if (r?.energyPurpose === "鐢熶骇") bucket.production += cost;
-      if (r?.energyPurpose === "鍔炲叕") bucket.office += cost;
+      if (r?.type === "鐢熶骇") bucket.production += cost;
+      if (r?.type === "鍔炲叕") bucket.office += cost;
     }
     const times = Array.from(byTime.keys()).sort((a, b) => String(a).localeCompare(String(b)));
     const total = times.map(t => byTime.get(t).total);
@@ -690,9 +688,9 @@
 
   const handleKpiClick = key => {
     selectedKpi.value = key;
-    if (key === "all") searchForm.energyPurpose = "";
-    if (key === "production") searchForm.energyPurpose = "鐢熶骇";
-    if (key === "office") searchForm.energyPurpose = "鍔炲叕";
+    if (key === "all") searchForm.type = "";
+    if (key === "production") searchForm.type = "鐢熶骇";
+    if (key === "office") searchForm.type = "鍔炲叕";
     page.current = 1;
     handleQuery();
   };
@@ -755,7 +753,7 @@
       const a = document.createElement("a");
       a.href = url;
       const typePart = searchForm.energyType ? `_${searchForm.energyType}` : "";
-      const purposePart = searchForm.energyPurpose ? `_${searchForm.energyPurpose}` : "";
+      const purposePart = searchForm.type ? `_${searchForm.type}` : "";
       let rangePart = "";
       if (statisticsType.value === "day") {
         if (searchForm.dateRange?.length === 2) rangePart = `_${searchForm.dateRange[0]}~${searchForm.dateRange[1]}`;
@@ -855,7 +853,7 @@
   ];
 
   const filterEnergyType = (value, row) => row.energyType === value;
-  const filterEnergyPurpose = (value, row) => row.energyPurpose === value;
+  const filterEnergyPurpose = (value, row) => row.type === value;
 
   // 鍒嗛〉
   const page = reactive({
@@ -1009,7 +1007,7 @@
         {
           name: "鐢熶骇鑳借�楁垚鏈�",
           type: "bar",
-          data: data.map(item => (item.energyPurpose === "鐢熶骇" ? item.cost : 0)),
+          data: data.map(item => (item.type === "鐢熶骇" ? item.cost : 0)),
           itemStyle: {
             color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
               { offset: 0, color: "#409EFF" },
@@ -1024,7 +1022,7 @@
         {
           name: "鍔炲叕鑳借�楁垚鏈�",
           type: "bar",
-          data: data.map(item => (item.energyPurpose === "鍔炲叕" ? item.cost : 0)),
+          data: data.map(item => (item.type === "鍔炲叕" ? item.cost : 0)),
           itemStyle: {
             color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
               { offset: 0, color: "#67C23A" },
@@ -1126,8 +1124,8 @@
     };
 
     data.forEach(item => {
-      if (purposeCosts.hasOwnProperty(item.energyPurpose)) {
-        purposeCosts[item.energyPurpose] += parseFloat(item.cost);
+      if (purposeCosts.hasOwnProperty(item.type)) {
+        purposeCosts[item.type] += parseFloat(item.cost);
       }
     });
 
@@ -1193,8 +1191,8 @@
           鍔炲叕: 0,
         };
       }
-      if (priceData[item.energyType].hasOwnProperty(item.energyPurpose)) {
-        priceData[item.energyType][item.energyPurpose] = parseFloat(item.price);
+      if (priceData[item.energyType].hasOwnProperty(item.type)) {
+        priceData[item.energyType][item.type] = parseFloat(item.price);
       }
     });
 
@@ -1304,9 +1302,9 @@
 
     // 鏋勯�犺姹傚弬鏁�
     const params = {
-      type: statisticsType.value,
-      energyType: searchForm.energyType || undefined,
-      energyPurpose: searchForm.energyPurpose || undefined,
+      days: 0,
+      // energyType: searchForm.energyType || undefined,
+      type: searchForm.type || undefined,
       // 椤圭洰鍐呭父鐢ㄥ垎椤靛弬鏁板懡鍚�
       pageNum: page.current,
       pageSize: page.size,
@@ -1320,7 +1318,28 @@
     } else {
       if (searchForm.monthRange && searchForm.monthRange.length === 2) {
         params.startDate = searchForm.monthRange[0] + "-01";
-        params.endDate = searchForm.monthRange[1] + "-01";
+
+        // 缁撴潫鏃堕棿闇�瑕佸彇缁撴潫鏈堜唤鐨勬渶鍚庝竴澶╋紙渚嬪 2026-03 -> 2026-03-31锛�
+        const [endYearStr, endMonthStr] = String(searchForm.monthRange[1]).split("-");
+        const endYear = Number(endYearStr);
+        const endMonth = Number(endMonthStr); // 1-12
+        if (!Number.isNaN(endYear) && !Number.isNaN(endMonth) && endMonth >= 1 && endMonth <= 12) {
+          const lastDay = new Date(endYear, endMonth, 0).getDate(); // 涓嬩釜鏈堢0澶� = 鏈湀鏈�鍚庝竴澶�
+          params.endDate = `${endYearStr}-${endMonthStr}-${String(lastDay).padStart(2, "0")}`;
+        } else {
+          params.endDate = searchForm.monthRange[1] + "-01";
+        }
+      }
+    }
+
+    // 璁$畻寮�濮嬪埌缁撴潫鐨勫ぉ鏁帮紙鍖呭惈璧锋涓ゅぉ锛�
+    if (params.startDate && params.endDate) {
+      const start = new Date(params.startDate);
+      const end = new Date(params.endDate);
+      if (!Number.isNaN(start.getTime()) && !Number.isNaN(end.getTime())) {
+        const diffTime = end.getTime() - start.getTime();
+        const diffDays = Math.floor(diffTime / (24 * 60 * 60 * 1000)) + 1;
+        params.days = diffDays > 0 ? diffDays : 0;
       }
     }
 
@@ -1383,7 +1402,7 @@
         mockData.push({
           timePeriod: dateStr,
           energyType: "鐢�",
-          energyPurpose: "鐢熶骇",
+          type: "鐢熶骇",
           consumption: (Math.random() * 1000 + 500).toFixed(2),
           unit: "kWh",
           price: "0.85",
@@ -1392,7 +1411,7 @@
         mockData.push({
           timePeriod: dateStr,
           energyType: "姘�",
-          energyPurpose: "鐢熶骇",
+          type: "鐢熶骇",
           consumption: (Math.random() * 500 + 200).toFixed(2),
           unit: "m鲁",
           price: "3.50",
@@ -1401,7 +1420,7 @@
         mockData.push({
           timePeriod: dateStr,
           energyType: "姘�",
-          energyPurpose: "鐢熶骇",
+          type: "鐢熶骇",
           consumption: (Math.random() * 300 + 100).toFixed(2),
           unit: "m鲁",
           price: "2.80",
@@ -1412,7 +1431,7 @@
         mockData.push({
           timePeriod: dateStr,
           energyType: "鐢�",
-          energyPurpose: "鍔炲叕",
+          type: "鍔炲叕",
           consumption: (Math.random() * 200 + 100).toFixed(2),
           unit: "kWh",
           price: "0.85",
@@ -1421,7 +1440,7 @@
         mockData.push({
           timePeriod: dateStr,
           energyType: "姘�",
-          energyPurpose: "鍔炲叕",
+          type: "鍔炲叕",
           consumption: (Math.random() * 50 + 20).toFixed(2),
           unit: "m鲁",
           price: "3.50",
@@ -1445,7 +1464,7 @@
         mockData.push({
           timePeriod: monthStr,
           energyType: "鐢�",
-          energyPurpose: "鐢熶骇",
+          type: "鐢熶骇",
           consumption: (Math.random() * 30000 + 15000).toFixed(2),
           unit: "kWh",
           price: "0.85",
@@ -1454,7 +1473,7 @@
         mockData.push({
           timePeriod: monthStr,
           energyType: "姘�",
-          energyPurpose: "鐢熶骇",
+          type: "鐢熶骇",
           consumption: (Math.random() * 15000 + 6000).toFixed(2),
           unit: "m鲁",
           price: "3.50",
@@ -1463,7 +1482,7 @@
         mockData.push({
           timePeriod: monthStr,
           energyType: "姘�",
-          energyPurpose: "鐢熶骇",
+          type: "鐢熶骇",
           consumption: (Math.random() * 9000 + 3000).toFixed(2),
           unit: "m鲁",
           price: "2.80",
@@ -1474,7 +1493,7 @@
         mockData.push({
           timePeriod: monthStr,
           energyType: "鐢�",
-          energyPurpose: "鍔炲叕",
+          type: "鍔炲叕",
           consumption: (Math.random() * 6000 + 3000).toFixed(2),
           unit: "kWh",
           price: "0.85",
@@ -1483,7 +1502,7 @@
         mockData.push({
           timePeriod: monthStr,
           energyType: "姘�",
-          energyPurpose: "鍔炲叕",
+          type: "鍔炲叕",
           consumption: (Math.random() * 1500 + 600).toFixed(2),
           unit: "m鲁",
           price: "3.50",
@@ -1511,9 +1530,9 @@
     tableData.value.forEach(item => {
       const cost = parseFloat(item.cost);
       totalCost += cost;
-      if (item.energyPurpose === "鐢熶骇") {
+      if (item.type === "鐢熶骇") {
         productionCost += cost;
-      } else if (item.energyPurpose === "鍔炲叕") {
+      } else if (item.type === "鍔炲叕") {
         officeCost += cost;
       }
     });
@@ -1537,8 +1556,8 @@
 
   // 閲嶇疆
   const handleReset = () => {
-    searchForm.energyType = "";
-    searchForm.energyPurpose = "";
+    // searchForm.energyType = "";
+    searchForm.type = "";
     if (statisticsType.value === "day") {
       const end = new Date();
       const start = new Date();

--
Gitblit v1.9.3