guoyujie
2025-08-01 cd084621774f86c415e42baf22804e45d3481949
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.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'));
});
}
            // 解析保存的布局数据
            const parsedData = JSON.parse(res.data.data[0].Layouts);
            console.log("解析后的数据:", parsedData); // 调试信息
            // 确保数据结构正确
            if (parsedData && parsedData.layouts) {
              layoutData.value = parsedData;
              dataLoaded.value = true;
            } else {
              ElMessage.warning("数据格式不正确");
            }
          } catch (error) {
            console.error("数据解析失败:", error);
            ElMessage.error("数据解析失败: " + 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) // 序列化整个layoutData对象
    }, {
      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>