<template>
|
<div>
|
<RectRenderer
|
v-if="dataLoaded"
|
:layoutData="layoutData"
|
:gw="1150"
|
:gh="850"
|
style="width: 1000px; height: 800px; position: relative;"
|
/>
|
</div>
|
</template>
|
|
<script setup>
|
import { ref, onMounted } from 'vue';
|
import RectRenderer from './page/OptimizationRect.vue';
|
import request from "@/utils/request";
|
import { useI18n } from "vue-i18n";
|
import { ElMessage } from "element-plus";
|
import {useRoute} from "vue-router";
|
import useOrderInfoStore from "@/stores/sd/order/orderInfo";
|
|
const route = useRoute();
|
const orderInfo = useOrderInfoStore()
|
const { t } = useI18n();
|
const savedProjectNo = localStorage.getItem('projectNo');
|
const processId = savedProjectNo;
|
const layoutData = ref(null);
|
const dataLoaded = ref(false);
|
|
const selectLayout = () => {
|
if(processId && processId !== "undefined"){
|
request.post(`/glassOptimize/selectOptimizeResult/${processId}`)
|
.then((res) => {
|
if (res.code == 200 && res.data && res.data.data && res.data.data.length > 0) {
|
try {
|
const parsedData = JSON.parse(res.data.data[0].Layouts);
|
layoutData.value = parsedData;
|
dataLoaded.value = true;
|
ElMessage.success("打开版图成功");
|
} catch (error) {
|
console.error("解析数据时出错:", error);
|
ElMessage.error("解析数据时出错");
|
}
|
} else {
|
ElMessage.warning("未找到版图数据");
|
}
|
})
|
.catch((error) => {
|
console.error("请求失败:", error);
|
ElMessage.error(t('basicData.msg.ServerConnectionError'));
|
});
|
}
|
}
|
|
onMounted(() => {
|
// 检查 store 中是否有数据,并确保数据结构正确
|
if(orderInfo.optimizeData && orderInfo.optimizeData.optimalResults) {
|
// 确保数据结构符合 OptimizationRect.vue 的期望格式
|
const optimalResults = orderInfo.optimizeData.optimalResults;
|
if (optimalResults.layouts) {
|
layoutData.value = optimalResults;
|
dataLoaded.value = true;
|
} else {
|
// 如果数据结构不匹配,尝试从后端获取
|
selectLayout();
|
}
|
} else {
|
// 如果 store 中没有数据,则从后端获取
|
selectLayout();
|
}
|
});
|
</script>
|