From 20dbdee5a002544f6a4e12b5e39e338052418782 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期五, 26 十二月 2025 10:36:27 +0800
Subject: [PATCH] fix: 完成成品单丝报工逻辑

---
 src/pages/production/wire/report/reportManage.vue |   85 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 73 insertions(+), 12 deletions(-)

diff --git a/src/pages/production/wire/report/reportManage.vue b/src/pages/production/wire/report/reportManage.vue
index c7e13b1..7df3b0f 100644
--- a/src/pages/production/wire/report/reportManage.vue
+++ b/src/pages/production/wire/report/reportManage.vue
@@ -272,6 +272,9 @@
 const oneLength = ref();
 const allChildDataList = ref<any[]>([]);
 const wireDetail = ref<any>(null);
+const isMonofil = ref();
+const meterWeight = ref();
+const totalWeight = ref();
 
 // 鏂板寮规鐩稿叧
 const addDialogVisible = ref(false);
@@ -344,20 +347,33 @@
 const handleAdd = () => {
   const lastChild = childList.value[childList.value.length - 1];
 
-  // 浠庤鎯呮暟鎹腑鑾峰彇绫抽噸
-  const meterWeight =
+  // 浠庤鎯呮暟鎹腑鑾峰彇绫抽噸锛屼紭鍏堜娇鐢ㄤ紶鍏ョ殑鍙傛暟
+  const meterWeightValue =
+    Number(meterWeight.value) ||
     Number(wireDetail.value?.meterWeight) ||
     Number(wireDetail.value?.weight) ||
     Number(wireDetail.value?.theoryWeight) ||
     0;
 
+  // 濡傛灉鏄垚鍝佸崟涓濓紝鏍规嵁鍏紡鑷姩璁$畻鐩橀暱锛�(totalWeight/meterWeight)*1000
+  let calculatedLength = "";
+  if (
+    isMonofil.value &&
+    (isMonofil.value === 1 || isMonofil.value === "1" || isMonofil.value === true)
+  ) {
+    const totalWeightValue = Number(totalWeight.value) || 0;
+    if (totalWeightValue > 0 && meterWeightValue > 0) {
+      calculatedLength = ((totalWeightValue / meterWeightValue) * 1000).toFixed(2);
+    }
+  }
+
   // 鍒濆鍖栨柊鏁版嵁锛屽鏋滄湁鏈�鍚庝竴鏉℃暟鎹紝浣跨敤鍏跺�间綔涓洪粯璁ゅ��
   newChildData.value = {
     dishModel: lastChild?.dishModel || "",
-    actuallyLength: lastChild?.actuallyLength || "",
+    actuallyLength: calculatedLength || lastChild?.actuallyLength || "",
     actuallyWeight: lastChild?.actuallyWeight || "",
     isJoint: lastChild?.isJoint || 0,
-    meterWeight: meterWeight,
+    meterWeight: meterWeightValue,
   };
 
   addDialogVisible.value = true;
@@ -530,28 +546,68 @@
   }
 };
 
-// 鑷姩璁$畻瀹為檯閲嶉噺
+// 鑷姩璁$畻瀹為檯閲嶉噺锛堟牴鎹暱搴︼級
 const handleCalculateWeight = (row: any) => {
   // 浠� newChildData 瀵硅薄涓幏鍙栫背閲�
-  const meterWeight = Number(row.meterWeight) || 0;
+  const meterWeightValue = Number(row.meterWeight) || 0;
   const actuallyLength = Number(row.actuallyLength);
 
-  if (meterWeight > 0 && actuallyLength > 0) {
-    const calculatedWeight = (meterWeight * actuallyLength) / 1000;
+  if (meterWeightValue > 0 && actuallyLength > 0) {
+    const calculatedWeight = (meterWeightValue * actuallyLength) / 1000;
     row.actuallyWeight = Number(calculatedWeight.toFixed(3));
   }
-  console.log("row", meterWeight, actuallyLength);
+  console.log("row", meterWeightValue, actuallyLength);
 };
 
-// 鐩戝惉瀹為檯闀垮害鍙樺寲锛岃嚜鍔ㄨ绠楅噸閲�
+// 鑷姩璁$畻瀹為檯闀垮害锛堟牴鎹噸閲忥紝浠呮垚鍝佸崟涓濓級
+const handleCalculateLength = (row: any) => {
+  // 濡傛灉鏄垚鍝佸崟涓濓紝鏍规嵁閲嶉噺璁$畻闀垮害
+  if (
+    isMonofil.value &&
+    (isMonofil.value === 1 || isMonofil.value === "1" || isMonofil.value === true)
+  ) {
+    const meterWeightValue = Number(meterWeight.value) || Number(row.meterWeight) || 0;
+    const actuallyWeight = Number(row.actuallyWeight);
+
+    if (meterWeightValue > 0 && actuallyWeight > 0) {
+      const calculatedLength = (actuallyWeight / meterWeightValue) * 1000;
+      row.actuallyLength = Number(calculatedLength.toFixed(2));
+    }
+  }
+};
+
+// 鐩戝惉瀹為檯闀垮害鍙樺寲锛岃嚜鍔ㄨ绠楅噸閲忥紙闈炴垚鍝佸崟涓濇椂锛�
 watch(
   () => newChildData.value.actuallyLength,
   (newValue, oldValue) => {
-    console.log("瀹為檯闀垮害鍙樺寲:", { newValue, oldValue, newChildData: newChildData.value });
-    if (newValue && String(newValue).trim() !== "") {
+    console.log("瀹為檯闀垮害鍙樺寲:", { newValue, oldValue, isMonofil: isMonofil.value });
+    // 濡傛灉涓嶆槸鎴愬搧鍗曚笣锛屾墠鏍规嵁闀垮害璁$畻閲嶉噺
+    if (
+      newValue &&
+      String(newValue).trim() !== "" &&
+      !(
+        isMonofil.value &&
+        (isMonofil.value === 1 || isMonofil.value === "1" || isMonofil.value === true)
+      )
+    ) {
       // 浣跨敤 nextTick 纭繚 v-model 宸茬粡鏇存柊
       nextTick(() => {
         handleCalculateWeight(newChildData.value);
+      });
+    }
+  },
+  { immediate: false, deep: true }
+);
+
+// 鐩戝惉瀹為檯閲嶉噺鍙樺寲锛岃嚜鍔ㄨ绠楅暱搴︼紙浠呮垚鍝佸崟涓濓級
+watch(
+  () => newChildData.value.actuallyWeight,
+  (newValue, oldValue) => {
+    console.log("瀹為檯閲嶉噺鍙樺寲:", { newValue, oldValue, isMonofil: isMonofil.value });
+    if (newValue && String(newValue).trim() !== "") {
+      // 浣跨敤 nextTick 纭繚 v-model 宸茬粡鏇存柊
+      nextTick(() => {
+        handleCalculateLength(newChildData.value);
       });
     }
   },
@@ -571,6 +627,11 @@
     supplier: options.supplier,
   };
 
+  // 鎺ユ敹浼犻�掔殑鍙傛暟
+  isMonofil.value = options.isMonofil;
+  meterWeight.value = options.meterWeight;
+  totalWeight.value = options.totalWeight;
+
   await getDetailData(options.wireId);
   await getData();
 });

--
Gitblit v1.9.3