From 54b007f3cacaadd744c11ba3d8b8c7e4cd424d17 Mon Sep 17 00:00:00 2001
From: 于杰 <1210123631@qq.com>
Date: 星期四, 31 七月 2025 16:35:50 +0800
Subject: [PATCH] 实现优化后调整玻璃位置的功能,解决后端接口因为缺少参数导致优化结果不对的问题,解决撤销优化后,再次点击优化,无法优化的问题

---
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue |  156 ++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 121 insertions(+), 35 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue
index 0359a0e..ebbd06f 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue
@@ -1,10 +1,11 @@
 <script setup>
 import {ref, computed, watch} from "vue";
 import {Connection} from "@element-plus/icons-vue";
-import { ElMessage } from 'element-plus'; // 娣诲姞杩欒
+import { ElMessage, ElMessageBox } from 'element-plus'; // 娣诲姞杩欒
 import {useRoute, useRouter} from "vue-router";
 import useOrderInfoStore from "@/stores/sd/order/orderInfo";
 import requestOptimize from "@/utils/requestOptimize";
+import request from "@/utils/request";
 
 const router = useRouter()
 const orderInfo = useOrderInfoStore()
@@ -77,13 +78,35 @@
 
             // 鏇存柊 store 鏁版嵁
             if (result.layouts && result.layouts.length > 0) {
-              // 鏇存柊 store 鏁版嵁
               orderInfo.optimizeData.optimalResults = {
                 layouts: result.layouts
               };
             }
-            orderInfo.optimizeData.originalFilm = originalFilm.value;
+            // 鍦ㄨ繖閲屽氨璁剧疆 originalFilm 鏁版嵁
+            const newOriginalFilm = [];
+            result.layouts.forEach(items => {
+              const existingItem = newOriginalFilm.find(
+                  item => item.width === items.width && item.height === items.height
+              );
 
+              if (existingItem) {
+                existingItem.count += 1;
+              } else {
+                newOriginalFilm.push({
+                  width: items.width,
+                  height: items.height,
+                  upTrim: items.upTrim,
+                  downTrim: items.downTrim,
+                  leftTrim: items.leftTrim,
+                  rightTrim: items.rightTrim,
+                  stockCode: items.stockCode,
+                  count: 1
+                });
+              }
+            });
+            originalFilm.value = newOriginalFilm;
+            orderInfo.optimizeData.originalFilm = newOriginalFilm; // 杩欎竴琛屽緢閲嶈
+            console.log('浼樺寲瀹屾垚鍚庤缃� originalFilm:', newOriginalFilm);
             // 鏇存柊鍒╃敤鐜�
             totalUtilizationRate.value = result.avgCutRate;
             tailPieceRate.value = result.lastCutRate;
@@ -121,43 +144,106 @@
     isRunning.value = false;
   }
 };
-const resetTimer = () => {
-  router.push({path: '/main/glassOptimize/Optimization'})
-  /*clearInterval(intervalId);
-  isRunning.value = false;
-  seconds.value = 0;
-  progress.value = 0;*/
+
+
+const saveOptimizeData = async () => {
+  // 妫�鏌ユ槸鍚︽湁浼樺寲鏁版嵁
+  if(orderInfo.optimizeData !== null){
+    try {
+      // 纭繚 originalFilm 鏁版嵁宸茶缃�
+      if (!orderInfo.optimizeData.originalFilm) {
+        orderInfo.optimizeData.originalFilm = originalFilm.value;
+        console.log('淇濆瓨鍓嶈缃� originalFilm:', originalFilm.value);
+      }
+      // 鍙戦�佽姹備繚瀛樹紭鍖栨暟鎹�
+      const res = await request.post(`/glassOptimize/saveOptimizeData/${props.optimizeData.projectNo}`, orderInfo.optimizeData);
+
+      if (Number(res.code) === 200) {
+        ElMessage.success("淇濆瓨鎴愬姛");
+        return true; // 淇濆瓨鎴愬姛
+      } else {
+        ElMessage.warning(res.msg || "淇濆瓨澶辫触");
+        return false; // 淇濆瓨澶辫触
+      }
+    } catch (error) {
+      ElMessage.error("淇濆瓨杩囩▼涓彂鐢熼敊璇�");
+      console.error("淇濆瓨鏁版嵁鍑洪敊:", error);
+      return false; // 淇濆瓨鍑洪敊
+    }
+  } else {
+    ElMessage.warning("鏃犱紭鍖栨暟鎹彲淇濆瓨");
+    return false;
+  }
+}
+
+const resetTimer = async () => {
+  // 鍏堜繚瀛樻暟鎹紝淇濆瓨鎴愬姛鍚庡啀璺宠浆
+  const isSaved = await saveOptimizeData();
+
+  if (isSaved) {
+    // 淇濆瓨鎴愬姛鍚庤烦杞埌浼樺寲鐣岄潰
+    router.push({path: '/main/glassOptimize/Optimization'});
+  } else {
+    // 淇濆瓨澶辫触锛岀粰鐢ㄦ埛閫夋嫨鏄惁浠嶈绂诲紑
+    ElMessageBox.confirm(
+        '鏁版嵁淇濆瓨澶辫触锛屾槸鍚︿粛瑕佺寮�褰撳墠椤甸潰锛�',
+        '鎻愮ず',
+        {
+          confirmButtonText: '纭畾绂诲紑',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }
+    ).then(() => {
+      // 鐢ㄦ埛纭绂诲紑
+      router.push({path: '/main/glassOptimize/Optimization'});
+    }).catch(() => {
+      // 鐢ㄦ埛鍙栨秷锛岀暀鍦ㄥ綋鍓嶉〉闈�
+      ElMessage.info('鎿嶄綔宸插彇娑�');
+    });
+  }
 };
 
+// watch(
+//     () => progress.value,
+//     (newValue) => {
+//       if (newValue === 100 && orderInfo.optimizeData && orderInfo.optimizeData.optimalResults) {
+//         // 鏍规嵁鎺ュ彛杩斿洖鐨� layouts 鏁版嵁鏋勫缓鐗堝浘缁熻
+//         const layouts = orderInfo.optimizeData.optimalResults.layouts;
+//         const newOriginalFilm = [];
+//
+//         layouts.forEach(items => {
+//           const existingItem = newOriginalFilm.find(
+//               item => item.width === items.width && item.height === items.height
+//           );
+//
+//           if (existingItem) {
+//             existingItem.count += 1;
+//           } else {
+//             newOriginalFilm.push({
+//               width: items.width,
+//               height: items.height,
+//               upTrim: items.upTrim,
+//               downTrim: items.downTrim,
+//               leftTrim: items.leftTrim,
+//               rightTrim: items.rightTrim,
+//               stockCode: items.stockCode,
+//               count: 1
+//             });
+//           }
+//         });
+//         // 鏇存柊 originalFilm
+//         originalFilm.value = newOriginalFilm;
+//         console.log('璁剧疆 originalFilm 鏁版嵁:', newOriginalFilm);
+//       }
+//     }
+// );
+
+// 绠�鍖� watch 鍑芥暟
 watch(
     () => progress.value,
     (newValue) => {
-      if (newValue === 10) {
-        // 鏍规嵁鎺ュ彛杩斿洖鐨� layouts 鏁版嵁鏋勫缓鐗堝浘缁熻
-        const layouts = orderInfo.optimizeData.optimalResults.layouts;
-        originalFilm.value = [];
-
-        layouts.forEach(items => {
-          const existingItem = originalFilm.value.find(
-              item => item.width === items.width && item.height === items.height
-          );
-
-          if (existingItem) {
-            existingItem.count += 1;
-          } else {
-            originalFilm.value.push({
-              width: items.width,
-              height: items.height,
-              upTrim: items.upTrim,
-              downTrim: items.downTrim,
-              leftTrim: items.leftTrim,
-              rightTrim: items.rightTrim,
-              stockCode: items.stockCode,
-              count: 1
-            });
-          }
-        });
-      }
+      // 杩涘害鏇存柊鏃朵笉闇�瑕侀澶栧鐞嗭紝鍥犱负宸茬粡鍦� startTimer 涓鐞嗕簡 originalFilm
+      console.log('浼樺寲杩涘害鏇存柊:', newValue);
     }
 );
 

--
Gitblit v1.8.0