chenlu
2025-11-21 d473c7b2b07cfeee3740f40dfdc95d722d8da3c2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<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>