| | |
| | | <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() |
| | |
| | | |
| | | // 更新 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; |
| | |
| | | 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); |
| | | } |
| | | ); |
| | | |