chenlu
2025-03-07 3ab330b8aefb3cd781c9b8730b4ab7ac65e7e9d7
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeCard.vue
@@ -1,5 +1,6 @@
<script setup>
import {nextTick, onMounted, reactive, ref, watch} from "vue";
import request from "@/utils/request";
import {useI18n} from "vue-i18n";
const { t } = useI18n()
@@ -70,9 +71,14 @@
  },
})
let emit = defineEmits([
  'changeDialog','upProcessId'
  'changeDialog','upProcessId', 'sendData'
]);
const props = defineProps({
  tableData: Array,
@@ -88,12 +94,111 @@
      if (typeof grid.refresh === 'function') {
        grid.refresh();
      }
      // 提取所有唯一的process_id
      const processIds = Array.from(new Set(newData.map(item => item.process_id)));
      // 发起所有请求
      const requests = processIds.map(processId =>
        request.post(`/glassOptimize/selectComputeDetail/${processId}`)
      );
      try {
        const responses = await Promise.all(requests);
        // 整合数据
        const processData = responses.reduce((acc, res, index) => {
          const processId = processIds[index];
          // 检查res.data是否为对象,并且包含'data'字段
          if (typeof res.data === 'object' && res.data !== null && 'data' in res.data) {
            const data = res.data.data;
            // 检查data是否为数组
            if (!Array.isArray(data)) {
              console.error(`响应数据中的'data'字段不是数组,process_id: ${processId}`);
              return acc;
            }
            // 获取对应process_id的newData条目
            const relatedNewData = newData.filter(item => item.process_id === processId);
            // 初始化process_card对象
            const processCard = {
  process_no: processId,
  layers: relatedNewData.technology_number,
  total_layers: relatedNewData.TotalNumber,
  total_num: relatedNewData.quantity,
  total_area: relatedNewData.area,
  is_must: true,
  allow_rotate: relatedNewData.check === 1 ? true : false,
  priority_level: 0,
  tempering: relatedNewData.check === 2 ? true : false,
  curtain_wall: relatedNewData.check === 3 ? true : false,
  patch_state: 0,
  merge: 0,
  glass_details: []
};
            // 整合glass_details
            data.forEach(detail => {
              const matchedNewData = relatedNewData.find(
                item => item.technology_number === detail.technology_number
              );
              processCard.glass_details.push({
                process_id: processId,
                technology_number: detail.technology_number,
                order_number: detail.order_number,
                layers_number: detail.layers_number,
                max_width: detail.width,
                max_height: detail.height,
                child_width: detail.child_width,
                child_height: detail.child_height,
                quantity: matchedNewData ? matchedNewData.quantity : 0,
                patch_state: 0
              });
            });
            // 将processCard添加到acc中
            if (!acc.process_cards) {
              acc.process_cards = [];
            }
            acc.process_cards.push(processCard);
              // 设置其他字段的值
          } else {
            console.error(`响应数据格式不正确,process_id: ${processId}`);
          }
          return acc;
        }, {});
        if (newData.length > 0) {
          // 假设所有条目的thickness和glassType相同
          processData.glass_thickness = newData[0].thickness;
          processData.glass_type = newData[0].glassType;
        } else {
          processData.glass_thickness = "";
          processData.glass_type = "";
        }
        // 发送整合后的数据到父组件
        emit('sendData', processData);
      } catch (error) {
        console.error('请求失败:', error);
      }
    }
  } else {
    console.error('传递给表格的数据格式不符合要求,期望是数组格式');
  }
});
let process_id = ref()
//获取流程卡号详情
let rowClickIndex = ref(null)