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/OptimizationRect.vue     |   17 ++
 north-glass-erp/northglass-erp/src/views/pp/glassOptimizeThirdParty/OptimizeControl.vue |   87 +++++------
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue           |   83 ++++++-----
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue              |   13 +
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue        |    9 +
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/RectRenderer.vue         |   41 +++--
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue      |  156 +++++++++++++++++-----
 7 files changed, 268 insertions(+), 138 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue
index 34af73e..986bc9b 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue
@@ -15,60 +15,71 @@
       淇濆瓨OPT
     </button>
   </template>
-  
-  <script setup>
-  import { ref,onMounted } from 'vue';
-  import RectRenderer from './page/RectRenderer.vue';
-  import mockLayoutData from '../../../components/pp/MockData';
-  import request from "@/utils/request";
+
+<script setup>import { ref, onMounted } from 'vue';
+import RectRenderer from './page/RectRenderer.vue';
+import request from "@/utils/request";
 import { useI18n } from "vue-i18n";
 import { ElMessage } from "element-plus";
 
 const { t } = useI18n();
- // const layoutData = ref(mockLayoutData);
 
-  const savedProjectNo = localStorage.getItem('projectNo');
+const savedProjectNo = localStorage.getItem('projectNo');
 const processId = savedProjectNo;
 const layoutData = ref(null);
 const dataLoaded = ref(false);
 
-
 const selectLayout = () => {
-request.post(`/glassOptimize/selectOptimizeResult/${processId}`)
-.then((res) => {
-  if (res.code == 200) {
-    try {
-      const parsedData = JSON.parse(res.data.data[0].Layouts);
-      layoutData.value = parsedData;
-      dataLoaded.value = true;
-    } catch (error) {
-    
-     
-    }
-  } else {
+  request.post(`/glassOptimize/selectOptimizeResult/${processId}`)
+      .then((res) => {
+        if (res.code === 200 && res.data && res.data.data && res.data.data.length > 0) {
+          try {
+            console.log("鍘熷鏁版嵁:", res.data.data[0]); // 璋冭瘯淇℃伅
 
-  }
-})
-.catch((error) => {
-  console.error("璇锋眰澶辫触:", error);
-  ElMessage.error(t('basicData.msg.requestFailed'));
-});
-}
+            // 瑙f瀽淇濆瓨鐨勫竷灞�鏁版嵁
+            const parsedData = JSON.parse(res.data.data[0].Layouts);
+            console.log("瑙f瀽鍚庣殑鏁版嵁:", parsedData); // 璋冭瘯淇℃伅
+
+            // 纭繚鏁版嵁缁撴瀯姝g‘
+            if (parsedData && parsedData.layouts) {
+              layoutData.value = parsedData;
+              dataLoaded.value = true;
+            } else {
+              ElMessage.warning("鏁版嵁鏍煎紡涓嶆纭�");
+            }
+          } catch (error) {
+            console.error("鏁版嵁瑙f瀽澶辫触:", error);
+            ElMessage.error("鏁版嵁瑙f瀽澶辫触: " + error.message);
+          }
+        } else {
+          ElMessage.warning("鏈壘鍒颁紭鍖栨暟鎹�");
+        }
+      })
+      .catch((error) => {
+        console.error("璇锋眰澶辫触:", error);
+        ElMessage.error(t('basicData.msg.requestFailed'));
+      });
+};
 
 onMounted(() => {
   selectLayout();
-
 });
-  
-  const submitLayouts = async () => {
+
+const submitLayouts = async () => {
   try {
+    // 纭繚鏈夋暟鎹彲浠ユ彁浜�
+    if (!layoutData.value) {
+      ElMessage.warning('娌℃湁鍙繚瀛樼殑鏁版嵁');
+      return;
+    }
+
     const response = await request.post('/glassOptimize/generateOpt', {
-      Layouts: layoutData.value.Layouts 
+      Layouts: JSON.stringify(layoutData.value) // 搴忓垪鍖栨暣涓猯ayoutData瀵硅薄
     }, {
       headers: {
         'Content-Type': 'application/json'
       },
-      responseType: 'blob' // 浠� blob 褰㈠紡鎺ユ敹鍝嶅簲
+      responseType: 'blob'
     });
 
     // 澶勭悊涓嬭浇
@@ -83,12 +94,8 @@
     ElMessage.success('OPT鏂囦欢涓嬭浇鎴愬姛,璇烽�夋嫨鏂囦欢璺緞');
   } catch (error) {
     console.error('涓嬭浇澶辫触:', error);
-    // 鏄剧ず閿欒娑堟伅缁欑敤鎴�
     ElMessage.error('涓嬭浇澶辫触锛岃绋嶅悗鍐嶈瘯');
   }
 };
-
-
-
-  </script>
+</script>
   
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
index 69dbb97..7bbb4b9 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
@@ -413,8 +413,19 @@
                 }
               }else if(config.code === 'undoOptimize'){
                 if(row.optimizeState==1&&row.state===1){
+                  // 鍏堟洿鏂板墠绔樉绀虹殑鐘舵��
                   row.optimizeState = config.targetStates;
-                  code=2
+                  code=2;
+
+                  // 鏇存柊鍒楄〃涓殑鏁版嵁浠ュ埛鏂版樉绀�
+                  const index = produceList.value.findIndex(item => item === row);
+                  if (index !== -1) {
+                    produceList.value.splice(index, 1, {...row});
+                    xGrid.value.reloadData(produceList.value);
+                  }
+
+                  // 鏄剧ず鎴愬姛娑堟伅
+                  ElMessage.success(config.successMsg);
                 }else{
                   ElMessage.warning(config.checkMessage);
                   return;
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue
index 351477c..af996d4 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue
@@ -80,7 +80,9 @@
 
 <script setup>
 import { ref, reactive, onMounted, onUnmounted } from 'vue';
+import { useRouter } from 'vue-router'; // 娣诲姞杩欒
 import request from "@/utils/request";
+const router = useRouter(); // 娣诲姞杩欒
 import { useI18n } from "vue-i18n";
 import { ElMessage, ElMessageBox } from "element-plus";
 import useUserInfoStore from "@/stores/userInfo";
@@ -126,7 +128,18 @@
   });
   const savedProjectNo = localStorage.getItem('projectNo');
   const processId = savedProjectNo;
-  layoutsHead.value.Layouts=layouts.value
+  // 鏋勯�犱笌鍘熷鏁版嵁缁撴瀯涓�鑷寸殑瀵硅薄
+  const saveData = {
+    projectNo: processId,
+    layouts: layouts.value,
+    // 澶嶅埗鍘熷鏁版嵁涓殑鍏朵粬蹇呰瀛楁
+    ...layoutsHead.value
+  };
+
+  // 纭繚 Layouts 瀛楁鏄簭鍒楀寲鐨勫瓧绗︿覆
+  const requestData = {
+    Layouts: JSON.stringify(saveData)
+  };
   request.post(`/glassOptimize/updateOptimizeResult/${processId}`, layoutsHead.value, {
     headers: {
       'Content-Type': 'application/json'
@@ -134,6 +147,8 @@
   }).then((res) => {
     if (res.code == 200 && res.data === true) {
       ElMessage.success(t('basicData.msg.saveSuccess'));
+      // // 淇濆瓨鎴愬姛鍚庤烦杞埌鏁版帶鐣岄潰
+      // router.push({ path: '/main/glassOptimize/OptimizeControl' });
     } else {
       ElMessage.warning(res.msg);
     }
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);
     }
 );
 
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
index 48ae345..a12c13c 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
@@ -459,6 +459,10 @@
     }
     emit('getSmallPieceData', 1);
     xGrid.value.getTableData().fullData.forEach(items=>{
+      let rackNoValue = 0;
+      if (items.rackNo !== undefined && items.rackNo !== null && items.rackNo !== '') {
+        rackNoValue = items.rackNo;
+      }
       const detail={
         width :null,
         height :null,
@@ -473,7 +477,7 @@
         downGrind :null,
         leftGrind:null,
         rightGrind :null,
-        rackNo:0
+        rackNo: rackNoValue
       }
       detail.width=items.width
       detail.height=items.height
@@ -488,7 +492,7 @@
       detail.downGrind=items.longGrind2
       detail.leftGrind=items.shortGrind1
       detail.rightGrind=items.shortGrind2
-      detail.rackNo=items.id
+      detail.rackNo=items.rackNo
 
       optimizeData.value.glassDetails .push(detail)
     })
@@ -567,6 +571,7 @@
 const saveOptimizeData = () => {
   if(orderInfo.optimizeData!==null){
     if(quantitys.value===orderInfo.optimizeData.optimalResults.glassTotalQuantity){
+      console.log("淇濆瓨鏁版嵁1",orderInfo.optimizeData)
       request.post(`/glassOptimize/saveOptimizeData/${projectNo.value}`,orderInfo.optimizeData).then((res) => {
         if ((Number(res.code) === 200)) {
           ElMessage.success("淇濆瓨鎴愬姛");
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/RectRenderer.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/RectRenderer.vue
index 2365264..9ae3ea2 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/RectRenderer.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/RectRenderer.vue
@@ -268,22 +268,33 @@
 const updateLayout = () => {
   if (!layoutPanel.value) return;
   //layouts.value = props.layoutData.layouts;
+  if (!props.layoutData) {
+    console.warn('layoutData 涓虹┖');
+    return;
+  }
+
+  console.log('RectRenderer 鎺ユ敹鍒扮殑 layoutData:', props.layoutData);
   processId.value=props.layoutData.projectNo;
-  let originalFilm = ref([])
-  //layouts.value =
-      props.layoutData.layouts.forEach(items=>{
-        const existingItem = originalFilm.value.find(item => item.mergeId === items.mergeId);
-        if (existingItem) {
-          // 瀛樺湪锛氭暟閲忓姞1锛堝亣璁惧瓧娈典负 count锛�
-          existingItem.quantity += 1;
-        } else {
-          originalFilm.value.push(items);
-        }
-      })
-  layouts.value=originalFilm.value
-  layoutDetails.value.push(props.layoutData)
-  materialDetails.value=props.materialDetails
-  console.log(layouts.value)
+  // 澶勭悊 layouts 鏁版嵁
+  if (props.layoutData.layouts && Array.isArray(props.layoutData.layouts)) {
+    let originalFilm = [];
+
+    props.layoutData.layouts.forEach(items => {
+      const existingItem = originalFilm.find(item => item.mergeId === items.mergeId);
+      if (existingItem) {
+        existingItem.quantity += 1;
+      } else {
+        originalFilm.push(items);
+      }
+    });
+
+    layouts.value = originalFilm;
+    layoutDetails.value.push(props.layoutData);
+    materialDetails.value = props.materialDetails;
+    console.log('澶勭悊鍚庣殑 layouts:', layouts.value);
+  } else {
+    console.warn('layouts 鏁版嵁鏍煎紡涓嶆纭垨涓虹┖');
+  }
   adjustPrintLayout();
   // 寮哄埗閲嶆柊娓叉煋
   layoutPanel.value.offsetHeight; // 瑙﹀彂甯冨眬鏇存柊
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimizeThirdParty/OptimizeControl.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimizeThirdParty/OptimizeControl.vue
index fa030f7..81860bc 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimizeThirdParty/OptimizeControl.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimizeThirdParty/OptimizeControl.vue
@@ -1,68 +1,64 @@
 <template>
-    <div >
-      <RectRenderer 
-    :layoutData="layoutData" 
-    :gw="1400" 
-    :gh="1100" 
-    style="width: 1500px; height: 800px; position: relative;"
-    v-if="dataLoaded"
-  />
-  
-  
-    </div>
-    <button @click="submitLayouts" style="position: fixed; bottom: 20px; right: 20px; padding: 10px; background: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer;">
-      淇濆瓨OPT
-    </button>
-  </template>
-  
-  <script setup>
-  import { ref,onMounted } from 'vue';
-  import RectRenderer from './page/RectRenderer.vue';
-  import mockLayoutData from '../../../components/pp/MockData';
-  import request from "@/utils/request";
+  <div>
+    <RectRenderer :layoutData="layoutData" :gw="1400" :gh="1100"
+      style="width: 1500px; height: 800px; position: relative;" v-if="dataLoaded" />
+
+
+  </div>
+  <button @click="submitLayouts"
+    style="position: fixed; bottom: 20px; right: 20px; padding: 10px; background: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer;">
+    淇濆瓨OPT
+  </button>
+</template>
+
+<script setup>
+import { ref, onMounted } from 'vue';
+import RectRenderer from './page/RectRenderer.vue';
+import mockLayoutData from '../../../components/pp/MockData';
+import request from "@/utils/request";
 import { useI18n } from "vue-i18n";
 import { ElMessage } from "element-plus";
 
 const { t } = useI18n();
- // const layoutData = ref(mockLayoutData);
+// const layoutData = ref(mockLayoutData);
 
-  const savedProjectNo = localStorage.getItem('projectNo');
+const savedProjectNo = localStorage.getItem('projectNo');
 const processId = savedProjectNo;
 const layoutData = ref(null);
 const dataLoaded = ref(false);
 
 
 const selectLayout = () => {
-request.post(`/glassOptimize/selectOptimizeResult/${processId}`)
-.then((res) => {
-  if (res.code == 200) {
-    try {
-      const parsedData = JSON.parse(res.data.data[0].Layouts);
-      layoutData.value = parsedData;
-      dataLoaded.value = true;
-    } catch (error) {
-    
-     
-    }
-  } else {
+  request.post(`/glassOptimize/selectOptimizeResult/${processId}`)
+    .then((res) => {
+      if (res.code == 200) {
+        try {
+          const parsedData = JSON.parse(res.data.data[0].Layouts);
+          layoutData.value = parsedData;
+          dataLoaded.value = true;
+        } catch (error) {
 
-  }
-})
-.catch((error) => {
-  console.error("璇锋眰澶辫触:", error);
-  ElMessage.error(t('basicData.msg.requestFailed'));
-});
+
+        }
+      } else {
+
+      }
+    })
+    .catch((error) => {
+      console.error("璇锋眰澶辫触:", error);
+      ElMessage.error(t('basicData.msg.requestFailed'));
+    });
 }
 
 onMounted(() => {
   selectLayout();
 
 });
-  
-  const submitLayouts = async () => {
+
+const submitLayouts = async () => {
   try {
     const response = await request.post('/glassOptimize/generateOpt', {
-      Layouts: layoutData.value.Layouts 
+      Layouts: layoutData.value.Layouts
     }, {
       headers: {
         'Content-Type': 'application/json'
@@ -89,5 +85,4 @@
 
 
 
-  </script>
-  
\ No newline at end of file
+</script>
\ No newline at end of file

--
Gitblit v1.8.0