From b3f2fb5aef5945a5b7790d41cdb9504d1650c1e5 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期三, 18 三月 2026 17:04:40 +0800
Subject: [PATCH] 能耗成本核算---按日月汇总统计页面对接

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

diff --git a/src/views/costAccounting/energyCosts/index.vue b/src/views/costAccounting/energyCosts/index.vue
index 655e145..63a1b48 100644
--- a/src/views/costAccounting/energyCosts/index.vue
+++ b/src/views/costAccounting/energyCosts/index.vue
@@ -42,7 +42,7 @@
                          value="姘�" />
             </el-select>
           </el-form-item> -->
-          <el-form-item label="鑳借�楃敤閫�">
+          <!-- <el-form-item label="鑳借�楃敤閫�">
             <el-select
               v-model="searchForm.type"
               placeholder=""
@@ -53,7 +53,7 @@
               <el-option label="鐢熶骇" value="鐢熶骇" />
               <el-option label="鍔炲叕" value="鍔炲叕" />
             </el-select>
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="鏃堕棿鑼冨洿">
             <el-date-picker
               v-if="statisticsType === 'day'"
@@ -112,7 +112,7 @@
             <div class="kpi-left">
               <div class="kpi-label">鎬昏兘鑰楁垚鏈�</div>
               <div class="kpi-value">
-                楼{{ formatMoney(animatedOverview.totalCost) }}
+                楼{{ formatMoney(animatedOverview.totalEnergyCost) }}
               </div>
               <div class="kpi-meta">
                 <span
@@ -143,7 +143,7 @@
               <button
                 class="kpi-action"
                 type="button"
-                @click="copyKpi('totalCost')"
+                @click="copyKpi('totalEnergyCost')"
               >
                 澶嶅埗
               </button>
@@ -165,7 +165,7 @@
             <div class="kpi-left">
               <div class="kpi-label">鐢熶骇鑳借�楁垚鏈�</div>
               <div class="kpi-value">
-                楼{{ formatMoney(animatedOverview.productionCost) }}
+                楼{{ formatMoney(animatedOverview.productEnergyCost) }}
               </div>
               <div class="kpi-meta">
                 <span
@@ -196,7 +196,7 @@
               <button
                 class="kpi-action"
                 type="button"
-                @click="copyKpi('productionCost')"
+                @click="copyKpi('productEnergyCost')"
               >
                 澶嶅埗
               </button>
@@ -218,7 +218,7 @@
             <div class="kpi-left">
               <div class="kpi-label">鍔炲叕鑳借�楁垚鏈�</div>
               <div class="kpi-value">
-                楼{{ formatMoney(animatedOverview.officeCost) }}
+                楼{{ formatMoney(animatedOverview.officeEnergyCost) }}
               </div>
               <div class="kpi-meta">
                 <span
@@ -249,7 +249,7 @@
               <button
                 class="kpi-action"
                 type="button"
-                @click="copyKpi('officeCost')"
+                @click="copyKpi('officeEnergyCost')"
               >
                 澶嶅埗
               </button>
@@ -270,7 +270,7 @@
             <div class="kpi-left">
               <div class="kpi-label">骞冲潎鎴愭湰</div>
               <div class="kpi-value">
-                楼{{ formatMoney(animatedOverview.avgCost) }}
+                楼{{ formatMoney(animatedOverview.averageEnergyCost) }}
                 <span class="kpi-unit"
                   >/{{ statisticsType === "day" ? "鏃�" : "鏈�" }}</span
                 >
@@ -286,7 +286,7 @@
               <button
                 class="kpi-action"
                 type="button"
-                @click="copyKpi('avgCost')"
+                @click="copyKpi('averageEnergyCost')"
               >
                 澶嶅埗
               </button>
@@ -465,7 +465,7 @@
                   </div>
                 </el-card>
               </el-col>
-              <el-col :xs="24" :lg="12">
+              <!-- <el-col :xs="24" :lg="12">
                 <el-card class="chart-card" shadow="never">
                   <template #header>
                     <div class="chart-head">
@@ -503,7 +503,7 @@
                     </div>
                   </div>
                 </el-card>
-              </el-col>
+              </el-col> -->
             </el-row>
           </div>
         </transition>
@@ -568,13 +568,13 @@
         </template>
         <el-table-column type="index" label="搴忓彿" width="60" align="center" />
         <el-table-column
-          prop="timePeriod"
+          prop="meterReadingDate"
           :label="timeColumnLabel"
           align="center"
           sortable="custom"
         />
         <el-table-column
-          prop="energyType"
+          prop="energyTyep"
           label="鑳借�楃被鍨�"
           width="100"
           align="center"
@@ -583,8 +583,8 @@
           filter-placement="bottom-end"
         >
           <template #default="scope">
-            <el-tag :type="getEnergyTypeType(scope.row.energyType)">
-              {{ scope.row.energyType }}
+            <el-tag :type="getEnergyTypeType(scope.row.energyTyep)">
+              {{ scope.row.energyTyep }}
             </el-tag>
           </template>
         </el-table-column>
@@ -598,28 +598,28 @@
           filter-placement="bottom-end"
         >
           <template #default="scope">
-            <el-tag :type="scope.row.type === '鐢熶骇' ? 'primary' : 'info'">
+            <el-tag :type="scope.row.type === '鐢熶骇' ? 'primary' : 'warning'">
               {{ scope.row.type }}
             </el-tag>
           </template>
         </el-table-column>
-        <el-table-column prop="consumption" label="鐢ㄩ噺" align="right">
+        <el-table-column prop="dosage" label="鐢ㄩ噺" align="right">
           <template #default="scope">
             <span class="consumption-value">{{
-              formatNumber(scope.row.consumption, 2)
+              formatNumber(scope.row.dosage, 2)
             }}</span>
             <span class="consumption-unit">{{ scope.row.unit }}</span>
           </template>
         </el-table-column>
         <el-table-column
-          prop="price"
+          prop="unitPrice"
           label="鍗曚环(鍏�)"
           align="right"
           sortable="custom"
         >
           <template #default="scope">
             <span class="price-value">{{
-              formatNumber(scope.row.price, 2)
+              formatNumber(scope.row.unitPrice, 2)
             }}</span>
           </template>
         </el-table-column>
@@ -674,14 +674,14 @@
 } from "@element-plus/icons-vue";
 import * as echarts from "echarts";
 // import { energyCostStatistics } from "@/api/costAccounting/energyCosts";
-import { energyConsumptionDetailStatistics } from "@/api/energyManagement/energyType";
+import { energyConsumptionDetailAccount } from "@/api/energyManagement/energyType";
 // 缁熻缁村害锛歞ay-鎸夋棩锛宮onth-鎸夋湀
 const statisticsType = ref("day");
 
 // 鎼滅储琛ㄥ崟
 const searchForm = reactive({
   // energyType: "",
-  type: "",
+  // type: "",
   dateRange: (() => {
     // 榛樿鏈�杩�7澶�
     const end = new Date();
@@ -705,18 +705,18 @@
 
 // 缁熻姒傝
 const overview = reactive({
-  totalCost: "0.00",
-  productionCost: "0.00",
-  officeCost: "0.00",
-  avgCost: "0.00",
+  totalEnergyCost: "0.00",
+  productEnergyCost: "0.00",
+  officeEnergyCost: "0.00",
+  averageEnergyCost: "0.00",
 });
 
 const selectedKpi = ref("all"); // all | production | office
 const animatedOverview = reactive({
-  totalCost: 0,
-  productionCost: 0,
-  officeCost: 0,
-  avgCost: 0,
+  totalEnergyCost: 0,
+  productEnergyCost: 0,
+  officeEnergyCost: 0,
+  averageEnergyCost: 0,
 });
 
 const formatMoney = (v) => {
@@ -754,10 +754,10 @@
 watch(
   () => ({ ...overview }),
   (val) => {
-    animateNumber("totalCost", Number.parseFloat(val.totalCost));
-    animateNumber("productionCost", Number.parseFloat(val.productionCost));
-    animateNumber("officeCost", Number.parseFloat(val.officeCost));
-    animateNumber("avgCost", Number.parseFloat(val.avgCost));
+    animateNumber("totalEnergyCost", Number.parseFloat(val.totalEnergyCost));
+    animateNumber("productEnergyCost", Number.parseFloat(val.productEnergyCost));
+    animateNumber("officeEnergyCost", Number.parseFloat(val.officeEnergyCost));
+    animateNumber("averageEnergyCost", Number.parseFloat(val.averageEnergyCost));
   },
   { deep: true, immediate: true }
 );
@@ -774,7 +774,7 @@
   const rows = Array.isArray(tableData.value) ? tableData.value : [];
   const byTime = new Map();
   for (const r of rows) {
-    const t = r?.timePeriod ?? "";
+    const t = r?.meterReadingDate ?? "";
     if (!t) continue;
     if (!byTime.has(t)) byTime.set(t, { total: 0, production: 0, office: 0 });
     const bucket = byTime.get(t);
@@ -846,10 +846,10 @@
 
 const copyKpi = async (field) => {
   const map = {
-    totalCost: animatedOverview.totalCost,
-    productionCost: animatedOverview.productionCost,
-    officeCost: animatedOverview.officeCost,
-    avgCost: animatedOverview.avgCost,
+    totalEnergyCost: animatedOverview.totalEnergyCost,
+    productEnergyCost: animatedOverview.productEnergyCost,
+    officeEnergyCost: animatedOverview.officeEnergyCost,
+    averageEnergyCost: animatedOverview.averageEnergyCost,
   };
   const raw = map[field];
   const text = `楼${formatMoney(raw)}`;
@@ -997,7 +997,7 @@
   { text: "鍔炲叕", value: "鍔炲叕" },
 ];
 
-const filterEnergyType = (value, row) => row.energyType === value;
+const filterEnergyType = (value, row) => row.energyTyep === value;
 const filterEnergyPurpose = (value, row) => row.type === value;
 
 // 鍒嗛〉
@@ -1137,7 +1137,7 @@
     },
     xAxis: {
       type: "category",
-      data: data.map((item) => item.timePeriod),
+      data: data.map((item) => item.meterReadingDate),
       axisLabel: {
         rotate: statisticsType.value === "day" ? 45 : 0,
         color: "rgba(15, 23, 42, 0.62)",
@@ -1457,7 +1457,7 @@
   const params = {
     days: 0,
     // energyType: searchForm.energyType || undefined,
-    type: searchForm.type || undefined,
+    // type: searchForm.type || undefined,
     pageNum: page.current,
     pageSize: page.size,
   };
@@ -1505,38 +1505,36 @@
   }
 
   // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁
-  energyConsumptionDetailStatistics(params)
+  energyConsumptionDetailAccount(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;
+        overview.totalEnergyCost = data.totalEnergyCost || "0";
+        overview.productEnergyCost = data.productEnergyCost || "0";
+        overview.officeEnergyCost = data.officeEnergyCost || "0";
+        overview.averageEnergyCost = data.averageEnergyCost || "0";
 
         // 澶勭悊琛ㄦ牸鏁版嵁
-        tableData.value = data.energyCostDtos || [];
+        tableData.value = data.energyConsumptionDetailDtoList || [];
         page.total = tableData.value.length || 0;
       } else {
         ElMessage.error(res.message || "鑾峰彇鏁版嵁澶辫触");
         tableData.value = [];
         page.total = 0;
-        overview.totalCost = "0.00";
-        overview.productionCost = "0.00";
-        overview.officeCost = "0.00";
-        overview.avgCost = "0.00";
+        overview.totalEnergyCost = "0.00";
+        overview.productEnergyCost = "0.00";
+        overview.officeEnergyCost = "0.00";
+        overview.averageEnergyCost = "0.00";
       }
     })
     .catch((err) => {
-      console.error("鑾峰彇鏁版嵁寮傚父锛�", err);
-      // 銆愬亣鏁版嵁锛圡ock锛夊凡绂佺敤銆戞帴鍙e紓甯告椂涓嶅啀鐢熸垚闅忔満鍋囨暟鎹紝閬垮厤璇敤鍒扮敓浜ф暟鎹摼璺�
       ElMessage.error("鑾峰彇鏁版嵁寮傚父");
       tableData.value = [];
       page.total = 0;
-      overview.totalCost = "0.00";
-      overview.productionCost = "0.00";
-      overview.officeCost = "0.00";
-      overview.avgCost = "0.00";
+      overview.totalEnergyCost = "0.00";
+      overview.productEnergyCost = "0.00";
+      overview.officeEnergyCost = "0.00";
+      overview.averageEnergyCost = "0.00";
     })
     .finally(() => {
       tableLoading.value = false;
@@ -1717,7 +1715,7 @@
 }
 
 .filter-form {
-  flex: 1 1 auto;
+  flex: 0.1 1 auto;
   min-width: 0;
 }
 
@@ -2741,4 +2739,4 @@
   max-height: 600px;
   opacity: 1;
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3