From c13c2bb15b501c74fe4270b0ae763e5c9422ee39 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 19 十一月 2025 10:02:52 +0800
Subject: [PATCH] fix: 重构绞线报工功能

---
 src/pages/production/twist/receive/monofil.vue |  166 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 118 insertions(+), 48 deletions(-)

diff --git a/src/pages/production/twist/receive/monofil.vue b/src/pages/production/twist/receive/monofil.vue
index 7f66e3d..b4998fc 100644
--- a/src/pages/production/twist/receive/monofil.vue
+++ b/src/pages/production/twist/receive/monofil.vue
@@ -25,7 +25,12 @@
         <block v-for="item in nodeList" :key="item">
           <wd-tab :title="item.twistedLayer" :name="item.twistedLayer">
             <scroll-view class="content" scroll-y>
-              <MonofilCard v-for="(m, i) in item.strandedWireDish" :key="i" :data="m" />
+              <MonofilCard
+                v-for="(m, i) in item.strandedWireDish"
+                :key="i"
+                :data="m"
+                @delete="handleDeleteCard(item, m)"
+              />
             </scroll-view>
           </wd-tab>
         </block>
@@ -79,7 +84,7 @@
 import MonofilCard from "../components/MonofilCard.vue";
 import StatisticsModal from "../components/StatisticsModal.vue";
 import { useToast } from "wot-design-uni";
-import { onLoad, onUnload } from "@dcloudio/uni-app";
+import { onLoad, onUnload, onShow, onHide } from "@dcloudio/uni-app";
 import Scan from "@/components/scan/index.vue";
 import ManageApi from "@/api/product/manage";
 import TwistApi from "@/api/product/twist";
@@ -95,62 +100,78 @@
 const showStatisticsModal = ref(false);
 const showManualInput = ref(false);
 const manualOutPutId = ref("");
+const isPageVisible = ref(false); // 鏍囪椤甸潰鏄惁鍙
 
 // 鐩戝惉鏍囩鍒囨崲
 watch(tab, () => {
   if (tab.value) {
-    console.log("tab.value:===========1", tab.value);
     getList();
   }
 });
 
 const getScanCode = async (code: any) => {
-  console.log("鑷畾涔夋壂鎻忕殑缁撴灉鍥炶皟鍑芥暟:", code);
-  // let parseData = code.trim();
-  console.log("code:===========", JSON.parse(code.code));
-  console.log("id:=============", JSON.parse(code.code).id);
-  const { data } = await TwistApi.getScarn({
-    outPutId: JSON.parse(code.code).id,
-  });
-
-  // 妫�鏌ユ槸鍚﹀凡閫夋嫨鏍囩
-  if (!tab.value) {
-    toast.error("璇峰厛閫夋嫨涓�涓眰");
+  // 妫�鏌ラ〉闈㈡槸鍚﹀彲瑙侊紝濡傛灉涓嶅彲瑙佸垯涓嶅鐞嗘壂鐮佹暟鎹�
+  if (!isPageVisible.value) {
     return;
   }
 
-  // 鎵惧埌褰撳墠閫変腑鐨勫眰
-  console.log("tab.value:===========2", tab.value);
-  const currentLayer = nodeList.value.find((node) => node.twistedLayer === tab.value);
-  if (!currentLayer) {
-    toast.error("鏈壘鍒板綋鍓嶉�変腑鐨勫眰");
-    return;
-  }
-
-  // 妫�鏌ュ綋鍓嶅眰鏄惁宸插瓨鍦ㄨ鍗曚笣
-  const exists = currentLayer.strandedWireDish?.some(
-    (item: any) => item.monofilamentNumber === data.monofilamentNumber
-  );
-  if (!exists) {
-    const { id, outPutId, wireId, oneLength, ...rest } = data;
-    const newItem = {
-      wireId: paramsId.value,
-      outputId: id,
-      amount: oneLength,
-      ongLength: oneLength,
-      ...rest,
-    };
-
-    // 娣诲姞鍒板綋鍓嶅眰鐨� strandedWireDish 涓�
-    if (!currentLayer.strandedWireDish) {
-      currentLayer.strandedWireDish = [];
+  try {
+    // 妫�鏌ユ槸鍚﹀凡閫夋嫨鏍囩
+    if (!tab.value) {
+      toast.error("璇峰厛閫夋嫨涓�涓眰");
+      return;
     }
-    currentLayer.strandedWireDish.push(newItem);
 
-    // 鍒锋柊褰撳墠灞傜殑鏁版嵁鏄剧ず
-    getList();
-  } else {
-    toast.error("璇ュ崟涓濆凡棰嗙敤锛岃鍕块噸澶嶆壂鐮�");
+    // 鎵惧埌褰撳墠閫変腑鐨勫眰
+    const currentLayer = nodeList.value.find((node) => node.twistedLayer === tab.value);
+    if (!currentLayer) {
+      toast.error("鏈壘鍒板綋鍓嶉�変腑鐨勫眰");
+      return;
+    }
+
+    // 瑙f瀽鎵爜鏁版嵁
+    const scanData = JSON.parse(code.code);
+
+    // 鍒ゆ柇灞傜骇鏄惁鍖归厤
+    if (scanData.layer && scanData.layer !== currentLayer.twistedLayer) {
+      toast.error(
+        `棰嗙敤灞傜骇涓嶅锛屽綋鍓嶅眰鏄細${currentLayer.twistedLayer}锛岄鐢ㄥ崟涓濆眰鏄細${scanData.layer}`
+      );
+      // return;
+    }
+
+    const { data } = await TwistApi.getScarn({
+      outPutId: scanData.id,
+      twistId: currentLayer.twistId,
+    });
+
+    // 妫�鏌ュ綋鍓嶅眰鏄惁宸插瓨鍦ㄨ鍗曚笣
+    const exists = currentLayer.strandedWireDish?.some(
+      (item: any) => item.monofilamentNumber === data.monofilamentNumber
+    );
+    if (!exists) {
+      const { id, outPutId, wireId, oneLength, ...rest } = data;
+      const newItem = {
+        wireId: paramsId.value,
+        outputId: id,
+        amount: oneLength,
+        ongLength: oneLength,
+        ...rest,
+      };
+
+      // 娣诲姞鍒板綋鍓嶅眰鐨� strandedWireDish 涓�
+      if (!currentLayer.strandedWireDish) {
+        currentLayer.strandedWireDish = [];
+      }
+      currentLayer.strandedWireDish.push(newItem);
+
+      // 鍒锋柊褰撳墠灞傜殑鏁版嵁鏄剧ず
+      getList();
+    } else {
+      toast.error("璇ュ崟涓濆凡棰嗙敤锛岃鍕块噸澶嶆壂鐮�");
+    }
+  } catch (error) {
+    toast.error("浜岀淮鐮佸紓甯革紝璇锋洿鎹簩缁寸爜锛�");
   }
 };
 
@@ -254,7 +275,6 @@
     // 璁剧疆榛樿绗竴灞�
     if (nodeList.value && nodeList.value.length > 0 && !tab.value) {
       tab.value = nodeList.value[0].twistedLayer;
-      console.log("璁剧疆榛樿绗竴灞�:", tab.value);
       // 璁剧疆榛樿鏍囩鍚庯紝鍔犺浇绗竴灞傜殑鏁版嵁
       getList();
     }
@@ -330,6 +350,44 @@
   }
 };
 
+// 鍒犻櫎鍗$墖
+const handleDeleteCard = async (layer: any, cardData: any) => {
+  // 鏄剧ず纭鎻愮ず
+  uni.showModal({
+    title: "鎻愮ず",
+    content: "纭畾瑕佸垹闄よ鍗曚笣鍚楋紵",
+    success: async (res) => {
+      if (res.confirm) {
+        try {
+          // 濡傛灉鏈塱d锛岃皟鐢ㄦ帴鍙e垹闄�
+          if (cardData.id !== undefined && cardData.id !== null) {
+            const { code, msg } = await TwistApi.deleteStrandedWireDish(cardData.id);
+            if (code !== 200) {
+              toast.error(msg || "鍒犻櫎澶辫触");
+              return;
+            }
+          }
+
+          // 鍓嶇鐩存帴鍒犻櫎锛堟棤璁烘槸鍚︽湁id锛岄兘浠庡墠绔垹闄わ級
+          if (layer.strandedWireDish && Array.isArray(layer.strandedWireDish)) {
+            const index = layer.strandedWireDish.findIndex(
+              (item: any) => item.monofilamentNumber === cardData.monofilamentNumber
+            );
+            if (index !== -1) {
+              layer.strandedWireDish.splice(index, 1);
+              toast.success("鍒犻櫎鎴愬姛");
+              // 鍒锋柊褰撳墠灞傜殑鏁版嵁鏄剧ず
+              getList();
+            }
+          }
+        } catch (error: any) {
+          toast.error(error.msg || "鍒犻櫎澶辫触");
+        }
+      }
+    },
+  });
+};
+
 onLoad(async (options: any) => {
   // 寮�鍚箍鎾洃鍚簨浠�
   uni.$on("scanMono", getScanCode);
@@ -339,15 +397,27 @@
   getRootNumber(options.id);
   // getRootNumber(118);
 });
+
+onShow(() => {
+  // 椤甸潰鏄剧ず鏃舵爣璁颁负鍙
+  isPageVisible.value = true;
+});
+
+onHide(() => {
+  // 椤甸潰闅愯棌鏃舵爣璁颁负涓嶅彲瑙�
+  isPageVisible.value = false;
+});
+
 onUnload(() => {
-  // 寮�鍚箍鎾洃鍚簨浠�
+  // 鍙栨秷骞挎挱鐩戝惉浜嬩欢
   uni.$off("scanMono", getScanCode);
+  isPageVisible.value = false;
 });
 </script>
 
 <style lang="scss" scoped>
 .list_box {
-  height: calc(100vh - 100px);
+  height: calc(100vh - 50px);
   background: #f3f9f8;
   display: flex;
   flex-direction: column;
@@ -410,7 +480,7 @@
 }
 
 .content {
-  height: calc(100vh - 280px);
+  height: calc(100vh - 200px);
   width: 100%;
 }
 

--
Gitblit v1.9.3