廖井涛
90 分钟以前 f7a2fcdda7f1120498c5c5f75c5a99955fc54b43
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue
@@ -11,7 +11,8 @@
  
  
    </div>
    <button @click="submitLayouts" style="position: fixed; top: 90px; right: 20px; padding: 10px; background: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer;">
    <button @click="submitLayouts" style="position: fixed; top: 90px; right: 20px; padding: 10px; background: #409eff; color: white; border: none; border-radius: 5px; cursor: pointer;">
      保存OPT
    </button>
  </template>
@@ -20,8 +21,9 @@
import RectRenderer from './page/RectRenderer.vue';
import request from "@/utils/request";
import { useI18n } from "vue-i18n";
import { ElMessage } from "element-plus";
import {ElMessage, ElMessageBox} from "element-plus";
import requestOptimize from "@/utils/requestOptimize";
import useUserInfoStore from "@/stores/userInfo";
const { t } = useI18n();
@@ -33,6 +35,22 @@
// 添加用于存储库存数据的响应式变量
const inventoryData = ref([]);
const optimizeLayouts = ref(null);
// const fileSaveMode = ref(1);
const fileMode = ref();
const haveMark = ref();
const haveOptimaMark = ref();
const haveQMark = ref();
const glassIdMode = ref();
const optimaMarkPosition = ref();
const optimaMarkName = ref();
const optimaMarkWidth = ref();
const optimaMarkHeight = ref();
const userStore = useUserInfoStore()
const username = userStore.user.userName;
// 从 localStorage 读取库存数据
const loadInventoryData = () => {
@@ -40,8 +58,6 @@
  if (storedData) {
    try {
      inventoryData.value = JSON.parse(storedData);
      console.log('从 localStorage 读取到库存数据:', inventoryData.value);
      console.log('取玻璃厚度',inventoryData.value[0].thickness);
    } catch (e) {
      console.error('解析库存数据失败:', e);
    }
@@ -56,8 +72,6 @@
      .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]); // 调试信息
            // 解析保存的布局数据
            const parsedData = JSON.parse(res.data.data[0].Layouts);
            console.log("解析后的数据:", parsedData); // 调试信息
@@ -92,10 +106,67 @@
      });
};
const fetchSettings = async (username) => {
  try {
    const response = await request.post(`/glassOptimize/selectOptimizeParms/${username}`);
    if (response.code == 200) {
      if (!response.data) {
        console.error('响应数据为空');
        return;
      }
      const parsedData = JSON.parse(response.data);
      console.log('设置内容:', parsedData);
      fileMode.value = parsedData.server.fileMode;
      haveMark.value = parsedData.server.haveMark;
      haveOptimaMark.value = parsedData.server.haveOptimaMark;
      haveQMark.value = parsedData.server.haveQMark;
      glassIdMode.value = parsedData.server.glassIdMode;
      optimaMarkPosition.value = parsedData.server.optimaMarkPosition;
      optimaMarkName.value = parsedData.server.optimaMarkName;
      optimaMarkWidth.value = parsedData.server.optimaMarkWidth;
      optimaMarkHeight.value = parsedData.server.optimaMarkHeight;
    } else {
      console.error('请求失败,状态码:', response.code);
    }
  } catch (error) {
    console.error('请求发生错误:', error);
  }
};
const selectOptimizeInfo = () => {
  request.post(`/glassOptimize/getOptimizeInfo/${processId}`)
      .then((res) => {
        if ((res.code === 200 || res.code === '200') && res.data && res.data.layouts) {
          try {
            // 正确赋值给外层的响应式变量
            optimizeLayouts.value = res.data;
            console.log("布局数据:", optimizeLayouts.value);
            // 验证layouts数据
            if (res.data.layouts && res.data.layouts.length > 0) {
              console.log("layouts数组:", res.data.layouts);
            }
          } catch (error) {
            console.error("数据解析失败:", error);
            ElMessage.error("数据解析失败: " + error.message);
          }
        } else {
          ElMessage.warning("未找到优化数据");
        }
      })
      .catch((error) => {
        console.error("请求失败:", error);
        ElMessage.error(t('basicData.msg.requestFailed'));
      });
};
onMounted(() => {
  // 读取库存数据
  // 读取库存数据和参数设置
  loadInventoryData();
  selectLayout();
  selectOptimizeInfo();
  fetchSettings(username);
});
const submitLayouts = async () => {
@@ -105,37 +176,49 @@
      ElMessage.warning('没有可保存的数据');
      return;
    }
    console.log("提交数据:", layoutCutData.value);
    console.log("提交数据:", optimizeLayouts);
    const response = await requestOptimize.post('api/cutFiles', {
      fileName: processId,
      glassThickness:inventoryData.value[0].thickness,
      glassType:inventoryData.value[0].model,
      projectNo: processId,
      glassThickness: inventoryData.value[0].thickness,
      glassType: inventoryData.value[0].model,
      quantity: inventoryData.value[0].processingQuantity,
      fileType:"OPT",
      fileSaveMode:1,
      glassIdMode:1,
      layouts: layoutCutData.value.layouts
      fileType: "OPT",
      fileSaveMode: fileMode.value,
      glassIdMode: glassIdMode.value,
      haveMark: haveMark.value,
      haveOptimaMark: haveOptimaMark.value,
      haveQMark: haveQMark.value,
      optimaMarkPosition: optimaMarkPosition.value,
      optimaMarkName: optimaMarkName.value,
      optimaMarkWidth: optimaMarkWidth.value,
      optimaMarkHeight: optimaMarkHeight.value,
      layouts: optimizeLayouts.value.layouts
    }, {
      headers: {
        'Content-Type': 'application/json'
      },
      responseType: 'blob'
      }
    });
    // 处理下载
    const downloadUrl = window.URL.createObjectURL(response);
    const a = document.createElement('a');
    a.href = downloadUrl;
    a.download = 'output.opt';
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
    window.URL.revokeObjectURL(downloadUrl);
    ElMessage.success('OPT文件下载成功,请选择文件路径');
    // 使用 MessageBox 显示文件保存位置信息
    if (response.data && response.data.length > 0) {
      const filePath = response.data[0];
      ElMessageBox.alert(`OPT文件保存成功,位置:${filePath}`, '保存成功', {
        confirmButtonText: '确定',
        type: 'success',
        dangerouslyUseHTMLString: true
      });
    } else {
      ElMessageBox.alert('OPT文件保存成功', '保存成功', {
        confirmButtonText: '确定',
        type: 'success'
      });
    }
  } catch (error) {
    console.error('下载失败:', error);
    ElMessage.error('下载失败,请稍后再试');
    console.error('保存失败:', error);
    ElMessage.error('保存失败,请稍后再试');
  }
};
</script>