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