From aaf943ada13005f2b22d01e3d7080b8740d9aa96 Mon Sep 17 00:00:00 2001
From: zhang_12370 <z2864490065@outlook.com>
Date: 星期二, 15 七月 2025 15:09:49 +0800
Subject: [PATCH] 添加待入库功能及优化配煤计算器

---
 src/views/production/components/ProductionDetailsTable.vue |   27 ++++++++++++++++++++++++---
 1 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/src/views/production/components/ProductionDetailsTable.vue b/src/views/production/components/ProductionDetailsTable.vue
index 8331deb..48308f4 100644
--- a/src/views/production/components/ProductionDetailsTable.vue
+++ b/src/views/production/components/ProductionDetailsTable.vue
@@ -9,6 +9,7 @@
             @change="(value) => handleCoalSelectChange(row, value)"
             filterable
             :key="`coalId-select-${$index}-${weekList.length}`"
+            :disabled="isViewMode"
         >
           <el-option
               v-for="(item, index) of weekList"
@@ -26,6 +27,7 @@
             placeholder="璇疯緭鍏ョ敓浜ф暟閲�"
             type="number"
             @input="handleInput('productionQuantity', $index, $event)"
+            :disabled="isViewMode"
         />
       </template>
     </el-table-column>
@@ -37,6 +39,7 @@
             placeholder="璇疯緭鍏ヤ汉宸ユ垚鏈�"
             type="number"
             @input="handleInput('laborCost', $index, $event)"
+            :disabled="isViewMode"
         >
           <template #suffix>
             <i style="font-style: normal">鍏�</i>
@@ -47,11 +50,15 @@
 
     <el-table-column label="鑳借�楁垚鏈�" min-width="120">
       <template #default="{ row, $index }">
+        <!-- 涓嶈兘涓鸿礋鏁� -->
         <el-input
             v-model="row.energyConsumptionCost"
             placeholder="璇疯緭鍏ヨ兘鑰楁垚鏈�"
             type="number"
+            min="0"
+            step="0.01"
             @input="handleInput('energyConsumptionCost', $index, $event)"
+            :disabled="isViewMode"
         >
           <template #suffix>
             <i style="font-style: normal">鍏�</i>
@@ -67,6 +74,7 @@
             placeholder="璇疯緭鍏ヨ澶囨姌鏃�"
             type="number"
             @input="handleInput('equipmentDepreciation', $index, $event)"
+            :disabled="isViewMode"
         >
           <template #suffix>
             <i style="font-style: normal">鍏�</i>
@@ -82,6 +90,7 @@
             placeholder="璇疯緭鍏ラ噰璐崟浠�"
             type="number"
             @input="handleInput('purchasePrice', $index, $event)"
+            :disabled="isViewMode"
         >
           <template #suffix>
             <i style="font-style: normal">鍏�</i>
@@ -99,6 +108,7 @@
             type="number"
             :readonly="autoCalculate"
             @input="handleInput('totalCost', $index, $event)"
+            
         >
           <template #suffix>
             <i style="font-style: normal">鍏�</i>
@@ -115,6 +125,7 @@
             @change="(value) => handleUserSelectChange(row, value)"
             filterable
             :key="`producer-select-${$index}-${userList.length}`"
+            :disabled="isViewMode"
         >
           <el-option
               v-for="(item, index) of userList"
@@ -126,10 +137,10 @@
       </template>
     </el-table-column>
     <el-table-column
-        v-if="showOperations"
         label="鎿嶄綔"
         width="120"
         fixed="right"
+        v-if="dialogType !== 'viewRow'"
     >
       <template #default="{ $index }">
         <el-button
@@ -148,6 +159,7 @@
 <script setup name="ProductionDetailsTable">
 import {ref, computed, watch, onMounted, nextTick} from "vue";
 import {Delete} from "@element-plus/icons-vue";
+import {ElMessage} from "element-plus";
 import {getCoalFieldList} from "@/api/basicInformation/coalQualityMaintenance";
 import {getCoalInfoList} from "@/api/production";
 import {userListAll} from "@/api/publicApi";
@@ -169,8 +181,12 @@
     type: Boolean,
     default: true,
   },
+  dialogType:{
+    type: String,
+    default:'add'
+  }
 });
-
+const isViewMode = computed(() => props.dialogType === "viewRow");
 const emit = defineEmits(["update:modelValue", "input-change", "delete-row"]);
 
 // 浣跨敤 v-model 杩涜鍙屽悜缁戝畾
@@ -185,6 +201,11 @@
 
 // 澶勭悊杈撳叆鍙樺寲
 const handleInput = (field, index, value) => {
+  // 纭繚杈撳叆鍊兼槸鏁板瓧鎴栫┖瀛楃涓茶�屼笖闈炶礋鏁�
+  if (!/^\d*\.?\d*$/.test(value) && value !== "") {
+    ElMessage.error("璇疯緭鍏ユ湁鏁堢殑鏁板瓧");
+    return;
+  }
   const newData = [...tableData.value];
   newData[index][field] = value;
 
@@ -208,7 +229,7 @@
 // 璁$畻鎬绘垚鏈�
 const calculateTotalCost = (row) => {
   const laborCost = parseFloat(row.laborCost) || 0;
-  const energyCost = parseFloat(row.energyCost) || 0;
+  const energyCost = parseFloat(row.energyConsumptionCost) || 0;
   const equipmentDepreciation = parseFloat(row.equipmentDepreciation) || 0;
   const purchasePrice = parseFloat(row.purchasePrice) || 0;
 

--
Gitblit v1.9.3