wu
2024-12-24 29077c9254b3a7d093203ed912d5a5f940f4bb28
UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -6,7 +6,6 @@
import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
import {useI18n} from 'vue-i18n'
import {useRouter} from 'vue-router'
const {t} = useI18n()
let language = ref(localStorage.getItem('lang') || 'zh')
const dialogFormVisible = ref(false)
@@ -15,28 +14,36 @@
const dialogFormVisiblec = ref(false)
const blind1 = ref(false)
const blind2 = ref(false)
const blind3 = ref(false)
const blind4 = ref(false)
const blinda = ref(false)
const blindb = ref(false)
const dialogVisible = ref(false)
const width = ref();
const height = ref();
const currentRect = ref(null);
const canSelectProject1 = ref(true);
const canSelectProject2 = ref(true);
const canSelectProject3 = ref(true);
const canSelectProject4 = ref(true);
const canSelectProjecta = ref(true);
const cantakea = ref(true);
const cantakeb = ref(true);
const canona = ref(true);
const cantakeall = ref(true);
const canonb = ref(true);
const canSelectProjectb = ref(true);
const adjustedRects1 = ref([]);
const adjustedRects2 = ref([]);
const adjustedRects3 = ref([]);
const adjustedRects4 = ref([]);
const adjustedRectsa = ref([]);
const adjustedRectsb = ref([]);
const tableData = ref([])
const engineerId = ref('')
const router = useRouter()
const currentGlassId = ref(null);
const currentengineerId = ref(null);
const currenttemperingLayoutId = ref(null);
const currenttemperingFeedSequence = ref(null);
onMounted(async () => {  
  try {  
@@ -68,32 +75,6 @@
    ElMessage.error(response.message);
  }
};
const printing = async () => {
  let postData = {
    type: 9,
    workingProcedure: '钢化',
    ...(engineerId.value !== '' && { engineerId: engineerId.value }),
  };
  console.log(engineerId.value);
  const response = await request.post("/loadGlass/damage/selectDamagePrintDetails", postData)
  if (response.code === 200) {
  dialogVisible.value = true;
    tableData.value = response.data;
    await nextTick();
    // 延时 2 秒后打印(时间可以根据需要调整)
    setTimeout(() => {
      window.print();
    }, 2000);
} else {
    ElMessage.error(response.message);
  }
};
const printTable = () => {
  // 这里可以添加一些CSS样式来优化打印效果
  // 例如,可以添加一个隐藏的打印样式表
  window.print();
};
const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`;
const handleMessage = (data) => {  
  // 进炉中右
@@ -104,8 +85,8 @@
    const existingRects = adjustedRects2.value.filter(rect => newGlassIds.has(rect.glassId));  
    // 计算新的矩形  
    const newRects = data.intoGlass2[0].map(rect => {  
      const scaleFactor =  794.67/5087;
      const scaleFactorY =  430/2800;
      const scaleFactor =  845/5000;
      const scaleFactorY =  430/2750;
        let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;
        let newX = rect.yCoordinate; 
      if (rect.width < rect.height) {
@@ -120,13 +101,13 @@
    adjustedHeight = heighta * scaleFactorY;
    // adjustedWidtha = widtha;  
    // adjustedHeighta = heighta;   
    newX = 5087 - (rect.yCoordinate + widtha);
    newX = 5000 - (rect.yCoordinate + widtha);
    } else {  
    adjustedWidth = heighta * scaleFactor;  
    adjustedHeight = widtha * scaleFactorY;  
    // adjustedWidtha = widtha;  
    // adjustedHeighta = heighta;  
    newX = 5087 - (rect.yCoordinate + heighta);
    newX = 5000 - (rect.yCoordinate + heighta);
  } 
        return {  
        ...rect, 
@@ -150,15 +131,16 @@
  else if (data.intoGlass2 == null) {
    adjustedRects2.value = []
  }
  // 进炉中左
  if (data.intoGlass && data.intoGlass.length > 0) {
    console.log(data.intoGlass);
    const newGlassIds = new Set(data.intoGlass[0].map(rect => rect.glassId));
  // 进炉中1
  if (data.intoGlass1 && data.intoGlass1.length > 0) {
    console.log(data.intoGlass1);
    const newGlassIds = new Set(data.intoGlass1[0].map(rect => rect.glassId));
    const existingRects = adjustedRects1.value.filter(rect => newGlassIds.has(rect.glassId));
    const newRects = data.intoGlass[0].map(rect => {
      const scaleFactor =  810.89/5087;
      const scaleFactorY =  430/2800;
    const newRects = data.intoGlass1[0].map(rect => {
      const scaleFactor =  845/5000;
      const scaleFactorY =  430/2750;
      // const scaleFactor =  600/5087;
      // const scaleFactorY =  200/2800;
      let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;
      let newX = rect.yCoordinate; 
      if (rect.width < rect.height) {
@@ -173,13 +155,13 @@
    adjustedHeight = heighta * scaleFactorY;
    // adjustedWidtha = widtha;  
    // adjustedHeighta = heighta;  
    newX = 5087 - (rect.yCoordinate + widtha);
    newX = 5000 - (rect.yCoordinate + widtha);
    } else {  
    adjustedWidth = heighta * scaleFactor;  
    adjustedHeight = widtha * scaleFactorY;  
    // adjustedWidtha = widtha;  
    // adjustedHeighta = heighta;  
    newX = 5087 - (rect.yCoordinate + heighta);
    newX = 5000 - (rect.yCoordinate + heighta);
  } 
        return {  
        ...rect, 
@@ -202,6 +184,112 @@
  }  
  else {
    adjustedRects1.value = []
  }
  // 进炉中3
  if (data.intoGlass3 && data.intoGlass3.length > 0) {
    console.log(data.intoGlass3);
    const newGlassIds = new Set(data.intoGlass3[0].map(rect => rect.glassId));
    const existingRects = adjustedRects3.value.filter(rect => newGlassIds.has(rect.glassId));
    const newRects = data.intoGlass3[0].map(rect => {
      const scaleFactor =  845/5000;
      const scaleFactorY =  430/2750;
      let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;
      let newX = rect.yCoordinate;
      if (rect.width < rect.height) {
        widtha = rect.height;
        heighta = rect.width;
      }else {
        widtha = rect.width;
        heighta = rect.height;
      }
      if (rect.angle === 0) {
    adjustedWidth = widtha * scaleFactor;
    adjustedHeight = heighta * scaleFactorY;
    // adjustedWidtha = widtha;
    // adjustedHeighta = heighta;
    newX = 5000 - (rect.yCoordinate + widtha);
    } else {
    adjustedWidth = heighta * scaleFactor;
    adjustedHeight = widtha * scaleFactorY;
    // adjustedWidtha = widtha;
    // adjustedHeighta = heighta;
    newX = 5000 - (rect.yCoordinate + heighta);
  }
        return {
        ...rect,
        xcoordinate: newX * scaleFactor,
        ycoordinate: rect.xCoordinate * scaleFactorY,
        width: adjustedWidth,
        height: adjustedHeight,
        widtha: rect.width,
        heighta: rect.height,
      }
    });
    // 合并新旧矩形,并保留 isActive 状态
    adjustedRects3.value = existingRects.map(oldRect => {
      const newRect = newRects.find(r => r.glassId === oldRect.glassId);
      if (newRect) {
        return { ...oldRect, ...newRect, isActive: oldRect.isActive };
      }
      return oldRect; // 如果旧矩形在新数据中不存在,但保留在newGlassIds中,则保留原样
    }).concat(newRects.filter(r => !existingRects.some(o => o.glassId === r.glassId)));
  }
  else {
    adjustedRects3.value = []
  }
  // 进炉中4
  if (data.intoGlass4 && data.intoGlass4.length > 0) {
    // 提取新的矩形ID
    const newGlassIds = new Set(data.intoGlass4[0].map(rect => rect.glassId));
    // 过滤出已存在的矩形
    const existingRects = adjustedRects4.value.filter(rect => newGlassIds.has(rect.glassId));
    // 计算新的矩形
    const newRects = data.intoGlass4[0].map(rect => {
      const scaleFactor =  845/5000;
      const scaleFactorY =  430/2750;
        let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;
        let newX = rect.yCoordinate;
      if (rect.width < rect.height) {
        widtha = rect.height;
        heighta = rect.width;
      }else {
        widtha = rect.width;
        heighta = rect.height;
      }
      if (rect.angle === 0) {
    adjustedWidth = widtha * scaleFactor;
    adjustedHeight = heighta * scaleFactorY;
    // adjustedWidtha = widtha;
    // adjustedHeighta = heighta;
    newX = 5000 - (rect.yCoordinate + widtha);
    } else {
    adjustedWidth = heighta * scaleFactor;
    adjustedHeight = widtha * scaleFactorY;
    // adjustedWidtha = widtha;
    // adjustedHeighta = heighta;
    newX = 5000 - (rect.yCoordinate + heighta);
  }
        return {
        ...rect,
        xcoordinate: newX * scaleFactor,
        ycoordinate: rect.xCoordinate * scaleFactorY,
        width: adjustedWidth,
        height: adjustedHeight,
        widtha: rect.width,
        heighta: rect.height,
      }
    });
    // 合并新旧矩形,并保留 isActive 状态
    adjustedRects4.value = existingRects.map(oldRect => {
      const newRect = newRects.find(r => r.glassId === oldRect.glassId);
      if (newRect) {
        return { ...oldRect, ...newRect, isActive: oldRect.isActive };
      }
      return oldRect; // 如果旧矩形在新数据中不存在,但保留在newGlassIds中,则保留原样
    }).concat(newRects.filter(r => !existingRects.some(o => o.glassId === r.glassId)));
  }
  else if (data.intoGlass4 == null) {
    adjustedRects4.value = []
  }
// 进炉前
  if (data.waitingGlass && data.waitingGlass.length > 0) {  
@@ -371,8 +459,22 @@
    }
  });  
}
function updateoutColors3() {
  adjustedRects3.value.forEach(rect => {
    if (rect.glassId === glassId) {
      rect.state = 9;
    }
  });
}
function updateoutColorsd() {
  adjustedRects2.value.forEach(rect => {  
    if (rect.glassId === glassId) {
      rect.state = 9;
    }
  });
}
function updateoutColors4() {
  adjustedRects4.value.forEach(rect => {
    if (rect.glassId === glassId) {  
      rect.state = 9;
    }
@@ -413,8 +515,22 @@
    }
  });
}  
function updateRectColors3() {
  adjustedRects3.value.forEach(rect => {
    if (rect.glassId === glassId) {
      rect.state = 8;
    }
  });
}
function updateRectColors2() {  
  adjustedRects2.value.forEach(rect => {  
    if (rect.glassId === glassId) {
      rect.state = 8;
    }
  });
}
function updateRectColors4() {
  adjustedRects4.value.forEach(rect => {
    if (rect.glassId === glassId) {  
      rect.state = 8;
    }
@@ -431,6 +547,26 @@
  }
function getRectColor2(state) {
  switch (state) {
    case 2:
      return 'lightblue';
    case 8:
      return '#911005';
    case 9:
      return '#4682B4';
  }
}
function getRectColor3(state) {
  switch (state) {
    case 2:
      return 'lightblue';
    case 8:
      return '#911005';
    case 9:
      return '#4682B4';
  }
}
function getRectColor4(state) {
  switch (state) {  
    case 2:  
      return 'lightblue';
@@ -466,12 +602,19 @@
      return '#4682B4'; 
  }  
}
// 定义导航到新页面的方法
const navigateToPrintPage = () => {
  // 使用路由实例的 push 方法导航到新页面
  router.push('/PurchaseReturn/purchaseprint');
};
function showDialog1(rect) {
  const index = adjustedRects1.value.findIndex(r => r.glassId === rect.glassId);  
  if (index !== -1) {  
    adjustedRects1.value[index].isActive = true;  
  }  
  currentGlassId.value = rect.glassId;  
  currentengineerId.value = rect.engineerId;
  currenttemperingLayoutId.value = rect.temperingLayoutId;
  currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
  blind1.value = true;  
  currentRect.value = rect;
@@ -481,9 +624,41 @@
    canSelectProject1.value = true;
  }
  if (currentRect.value.state == 9) {
    cantakea.value = false;
    alla.value = false;
  } else if (currentRect.value.state !== 9) {
    cantakea.value = true;
  }
  if (currentRect.value.state > 5) {
    cantakeall.value = false;
  } else{
    cantakeall.value = true;
  }
}
function showDialog3(rect) {
  const index = adjustedRects3.value.findIndex(r => r.glassId === rect.glassId);
  if (index !== -1) {
    adjustedRects3.value[index].isActive = true;
  }
  currentGlassId.value = rect.glassId;
  currentengineerId.value = rect.engineerId;
  currenttemperingLayoutId.value = rect.temperingLayoutId;
  currenttemperingFeedSequence.value = rect.temperingFeedSequence;
  blind3.value = true;
  currentRect.value = rect;
  if (currentRect.value.state == 8) {
    canSelectProject3.value = false;
  } else if (currentRect.value.state !== 8) {
    canSelectProject3.value = true;
  }
  if (currentRect.value.state == 9) {
    alla.value = false;
  } else if (currentRect.value.state !== 9) {
    cantakea.value = true;
  }
  if (currentRect.value.state > 5) {
    cantakeall.value = false;
  } else{
    cantakeall.value = true;
  } 
function showDialog2(rect) {
@@ -492,6 +667,8 @@
    adjustedRects2.value[index].isActive = true;  
  }  
  currentGlassId.value = rect.glassId;  
  currentengineerId.value = rect.engineerId;
  currenttemperingLayoutId.value = rect.temperingLayoutId;
  currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
  blind2.value = true;  
  currentRect.value = rect;
@@ -505,6 +682,38 @@
  } else if (currentRect.value.state !== 9) {
    cantakea.value = true;
  }
  if (currentRect.value.state > 5) {
    cantakeall.value = false;
  } else{
    cantakeall.value = true;
  }
}
function showDialog4(rect) {
  const index = adjustedRects4.value.findIndex(r => r.glassId === rect.glassId);
  if (index !== -1) {
    adjustedRects4.value[index].isActive = true;
  }
  currentGlassId.value = rect.glassId;
  currentengineerId.value = rect.engineerId;
  currenttemperingLayoutId.value = rect.temperingLayoutId;
  currenttemperingFeedSequence.value = rect.temperingFeedSequence;
  blind4.value = true;
  currentRect.value = rect;
  if (currentRect.value.state == 8) {
    canSelectProject4.value = false;
  } else if (currentRect.value.state !== 8) {
    canSelectProject4.value = true;
  }
  if (currentRect.value.state == 9) {
    cantakea.value = false;
  } else if (currentRect.value.state !== 9) {
    cantakea.value = true;
  }
  if (currentRect.value.state > 5) {
    cantakeall.value = false;
  } else{
    cantakeall.value = true;
  }
function showDialoga(rect) {
  const index = adjustedRectsa.value.findIndex(r => r.glassId === rect.glassId);  
@@ -512,6 +721,8 @@
    adjustedRectsa.value[index].isActive = true;  
  }  
  currentGlassId.value = rect.glassId;  
  currentengineerId.value = rect.engineerId;
  currenttemperingLayoutId.value = rect.temperingLayoutId;
  currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
  blinda.value = true; 
  currentRect.value = rect;
@@ -530,6 +741,11 @@
  } else if (currentRect.value.state == 0) {
    canona.value = true;
  } 
  if (currentRect.value.state > 5) {
    cantakeall.value = false;
  } else{
    cantakeall.value = true;
  }
function showDialogb(rect) {
  const index = adjustedRectsb.value.findIndex(r => r.glassId === rect.glassId);  
@@ -537,6 +753,8 @@
    adjustedRectsb.value[index].isActive = true;  
  }  
  currentGlassId.value = rect.glassId;  
  currentengineerId.value = rect.engineerId;
  currenttemperingLayoutId.value = rect.temperingLayoutId;
  currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
  blindb.value = true;  
  currentRect.value = rect;
@@ -555,6 +773,11 @@
  } else if (currentRect.value.state !== 3) {
    canonb.value = true;
  } 
  if (currentRect.value.state > 5) {
    cantakeall.value = false;
  } else{
    cantakeall.value = true;
  }
  const handleDialogClose1 = () => {  
  adjustedRects1.value.forEach(rect => {  
@@ -562,8 +785,20 @@
  });  
  blind1.value = false; 
};  
  const handleDialogClose3 = () => {
  adjustedRects3.value.forEach(rect => {
    rect.isActive = false;
  });
  blind1.value = false;
};
  const handleDialogClose2 = () => {  
  adjustedRects2.value.forEach(rect => {  
    rect.isActive = false;
  });
  blind2.value = false;
};
  const handleDialogClose4 = () => {
  adjustedRects4.value.forEach(rect => {
    rect.isActive = false;  
  });  
  blind2.value = false; 
@@ -626,6 +861,51 @@
    console.error(error);
  }
}
const handleDamage3 = async () => {
  try  {
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
    glassId: currentGlassId.value,
    // temperingFeedSequence: currenttemperingFeedSequence.value,
    line: 4001,
    status: 8,
    workingProcedure: '钢化',
    })
    if (response.code == 200) {
      ElMessage.success('成功!');
      blind3.value = false;
      updateRectColors3();
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
const handleDamage4 = async () => {
  try  {
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
    glassId: currentGlassId.value,
    line: 4001,
    status: 8,
    workingProcedure: '钢化',
    })
    if (response.code == 200) {
      ElMessage.success('成功!');
      blind4.value = false;
      updateRectColors4();
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
// 进炉前破损
const handleDamagea = async () => {
  try  {
@@ -641,6 +921,26 @@
      updateRectColorsa();
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
// 进炉前全部拿走
const handletakeall3 = async () => {
  try  {
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
    temperingLayoutId: currenttemperingLayoutId.value,
    engineerId: currentengineerId.value,
    state: 9,
    })
    if (response.code == 200) {
      ElMessage.success('成功!');
      blinda.value = false;
    } else {
      ElMessage.error(response.message);
    }
}
@@ -695,6 +995,101 @@
    console.error(error);
  }
}
const handletakeall1 = async () => {
  try  {
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
    temperingLayoutId: currenttemperingLayoutId.value,
    engineerId: currentengineerId.value,
    state: 9,
    })
    if (response.code == 200) {
      ElMessage.success('成功!');
      blind1.value = false;
    } else {
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
const handletakeall33 = async () => {
  try  {
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
    temperingLayoutId: currenttemperingLayoutId.value,
    engineerId: currentengineerId.value,
    state: 9,
    })
    if (response.code == 200) {
      ElMessage.success('成功!');
      blind3.value = false;
    } else {
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
const handletakeall2 = async () => {
  try  {
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
    temperingLayoutId: currenttemperingLayoutId.value,
    engineerId: currentengineerId.value,
    state: 9,
    })
    if (response.code == 200) {
      ElMessage.success('成功!');
      blind2.value = false;
    } else {
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
const handletakeall44 = async () => {
  try  {
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
    temperingLayoutId: currenttemperingLayoutId.value,
    engineerId: currentengineerId.value,
    state: 9,
    })
    if (response.code == 200) {
      ElMessage.success('成功!');
      blind4.value = false;
    } else {
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
const handletakeall4 = async () => {
  try  {
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
    temperingLayoutId: currenttemperingLayoutId.value,
    engineerId: currentengineerId.value,
    state: 9,
    })
    if (response.code == 200) {
      ElMessage.success('成功!');
      blind4.value = false;
    } else {
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
// 进炉中人工拿走
const takeoutc = async () => {
  try  {
@@ -718,7 +1113,53 @@
    console.error(error);
  }
}
// 进炉zhong人工拿走
// 进炉中人工拿走3
const takeout3 = async () => {
  try  {
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
    glassId: currentGlassId.value,
    line: 4001,
    status: 9,
    workingProcedure: '钢化',
    })
    if (response.code == 200) {
      ElMessage.success('成功!');
      blind3.value = false;
      updateoutColors3();
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
// 进炉中人工拿走4
const takeout4 = async () => {
  try  {
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
    glassId: currentGlassId.value,
    line: 4001,
    status: 9,
    workingProcedure: '钢化',
    })
    if (response.code == 200) {
      ElMessage.success('成功!');
      blind4.value = false;
      updateoutColors4();
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
// 进炉中人工拿走
const takeoutd = async () => {
  try  {
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
@@ -835,17 +1276,14 @@
        {{ $t('processCard.print') }}
      </el-button>
      <div v-if="dialogFormVisible">
        <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;"
        <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 1000px;"
                 v-loading="loading">
          <div style="width: 49%;float: right;background-color: #f4f4f5;height: 430px;">
            <div v-if="adjustedRects1.length > 0">
              <!-- <div style="text-align: center;">炉号:{{ engineerIdDisplay }}-{{ adjustedRects[0].temperingLayoutId }}</div>   -->
              <div style="text-align: center;"> {{ $t('processCard.temperinglayout') }}:{{
                  adjustedRects1[0].engineerId
                }}-{{ adjustedRects1[0].temperingLayoutId }}
              </div>
 <div style="width: 845px;float: right;background-color: #f4f4f5;height: 430px;">
   <div v-if="adjustedRects1.length > 0">
              <!-- <div style="text-align: center;">炉号1:{{ engineerIdDisplay }}-{{ adjustedRects[0].temperingLayoutId }}</div>   -->
     <div style="text-align: center;"> {{ $t('processCard.temperinglayout') }}:{{ adjustedRects1[0].engineerId }}-{{ adjustedRects1[0].temperingLayoutId }} </div>
    <el-scrollbar height="430px" style="background-color: #e9e9eb;">
    <div  style="position: relative;max-width: 1400px;">
    <div  style="position: relative;">
      <div  
      v-for="(rect, index) in adjustedRects1"
      :key="index"  
@@ -866,11 +1304,11 @@
   </div>
   </el-scrollbar>
   </div>
  </div>
<div style="width: 50%;float: left;background-color: #f4f4f5;height: 430px;">
    </div>
     <div style="width: 845px;float: left;background-color: #f4f4f5;height: 430px;">
    <div v-if="adjustedRects2.length > 0">
    <div style="text-align: center;"> {{ $t('processCard.temperinglayout') }}:{{ adjustedRects2[0].engineerId }}-{{ adjustedRects2[0].temperingLayoutId }} </div>
    <!-- <div style="text-align: center;">炉号:{{ engineerIdDisplay2 }}-{{ adjustedRects[0].temperingLayoutId }}</div>   -->
    <!-- <div style="text-align: center;">炉号2:{{ engineerIdDisplay2 }}-{{ adjustedRects[0].temperingLayoutId }}</div>   -->
    <el-scrollbar height="430px" style="background-color: #e9e9eb;">
    <div  style="position: relative;max-width: 1400px;">  
      <div  
@@ -893,7 +1331,61 @@
   </div>
   </el-scrollbar>
   </div>
</div>
        </div>
   <div style="width: 845px;float: right;background-color: #f4f4f5;height: 430px;margin-top: 20px;">
     <div v-if="adjustedRects3.length > 0">
       <!-- <div style="text-align: center;">炉号3:{{ engineerIdDisplay }}-{{ adjustedRects[0].temperingLayoutId }}</div>   -->
       <div style="text-align: center;"> {{ $t('processCard.temperinglayout') }}:{{ adjustedRects3[0].engineerId }}-{{ adjustedRects3[0].temperingLayoutId }} </div>
    <el-scrollbar height="430px" style="background-color: #e9e9eb;">
    <div  style="position: relative;max-width: 1400px;">
      <div
      v-for="(rect, index) in adjustedRects3"
      :key="index"
      @click="showDialog3(rect)"
      class="rect"
      :style="{ position: 'absolute',
       top: `${rect.ycoordinate}px`,
       left: `${rect.xcoordinate}px`,
        width: `${rect.width}px`,
        height: `${rect.height}px`,
        backgroundColor: rect.isActive ? '#ADFF2F' : getRectColor3(rect.state) }">
     <div  class="centered-text">
    <div style="font-size: 15px;font-weight: bold;">{{ rect.glassId }}</div>
    <div style="font-size: 15px;font-weight: bold;">{{ rect.flowCardId }}</div>
    <div style="font-size: 30px;font-weight: bold;">{{ rect.widtha }}*{{ rect.heighta }}</div>
  </div>
  </div>
   </div>
   </el-scrollbar>
   </div>
          </div>
        <div style="width: 845px;float: left;background-color: #f4f4f5;height: 430px;margin-top: 20px;">
    <div v-if="adjustedRects4.length > 0">
    <div style="text-align: center;"> {{ $t('processCard.temperinglayout') }}:{{ adjustedRects4[0].engineerId }}-{{ adjustedRects4[0].temperingLayoutId }} </div>
    <!-- <div style="text-align: center;">炉号4:{{ engineerIdDisplay2 }}-{{ adjustedRects[0].temperingLayoutId }}</div>   -->
    <el-scrollbar height="430px" style="background-color: #e9e9eb;">
    <div  style="position: relative;max-width: 1400px;">
      <div
      v-for="(rect, index) in adjustedRects4"
      :key="index"
      @click="showDialog4(rect)"
      class="rect"
      :style="{ position: 'absolute',
       top: `${rect.ycoordinate}px`,
       left: `${rect.xcoordinate}px`,
       width: `${rect.width}px`,
       height: `${rect.height}px`,
        backgroundColor: rect.isActive ? '#ADFF2F' : getRectColor4(rect.state) }">
     <div  class="centered-text">
    <div style="font-size: 15px;font-weight: bold;">{{ rect.glassId }}</div>
    <div style="font-size: 15px;font-weight: bold;">{{ rect.flowCardId }}</div>
    <div style="font-size: 30px;font-weight: bold;">{{ rect.widtha }}*{{ rect.heighta }}</div>
  </div>
  </div>
   </div>
   </el-scrollbar>
   </div>
        </div>
   </el-card>
    </div>
<div v-if="dialogFormVisiblea">
@@ -957,9 +1449,8 @@
    <div style="display: flex; flex-direction: row; align-items: center; margin-top: 5px;margin-left: 10px;">  
    <el-input :placeholder="$t('processCard.projectnumber')" v-model="engineerId" autocomplete="off" style="width: 300px;"/>
    <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('processCard.inquire') }}</el-button>
    <el-button type="info" style="margin-left: 10px;" @click="printing()">{{ $t('processCard.printing') }}</el-button>
    <el-button type="info" style="margin-left: 10px;" @click="navigateToPrintPage">{{ $t('processCard.printing') }}</el-button>
  </div>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
    <el-table
@@ -989,6 +1480,9 @@
          <el-icon class="el-icon--right"><Upload /></el-icon>
          {{ $t('order.takeaway') }}
        </el-button>
        <el-button type="info" plain @click="handletakeall1" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
          {{ $t('order.takeall') }}
        </el-button>
  </el-dialog>  
<el-dialog v-model="blind2" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose2">
        <el-button :disabled="!canSelectProject2" type="warning" plain :icon="Delete" @click="handleDamage2"  style="width: 150px;margin-left: 10px;">
@@ -997,6 +1491,33 @@
        <el-button :disabled="!cantakea" type="danger" plain @click="takeoutd"  style="width: 150px;margin-left: 10px;margin-top: 10px;">
          <el-icon class="el-icon--right"><Upload /></el-icon>
          {{ $t('order.takeaway') }}
        </el-button>
        <el-button type="info" plain @click="handletakeall2" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
          {{ $t('order.takeall') }}
        </el-button>
  </el-dialog>
<el-dialog v-model="blind3" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose3">
        <el-button :disabled="!canSelectProject3" type="warning" plain :icon="Delete" @click="handleDamage3"  style="width: 150px;margin-left: 10px;">
          {{ $t('order.dilapidation') }}
        </el-button>
        <el-button :disabled="!cantakea" type="danger" plain @click="takeout3"  style="width: 150px;margin-left: 10px;margin-top: 10px;">
          <el-icon class="el-icon--right"><Upload /></el-icon>
          {{ $t('order.takeaway') }}
        </el-button>
        <el-button type="info" plain @click="handletakeall33" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
          {{ $t('order.takeall') }}
        </el-button>
  </el-dialog>
<el-dialog v-model="blind4" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose4">
        <el-button :disabled="!canSelectProject4" type="warning" plain :icon="Delete" @click="handleDamage4"  style="width: 150px;margin-left: 10px;">
          {{ $t('order.dilapidation') }}
        </el-button>
        <el-button :disabled="!cantakea" type="danger" plain @click="takeout4"  style="width: 150px;margin-left: 10px;margin-top: 10px;">
          <el-icon class="el-icon--right"><Upload /></el-icon>
          {{ $t('order.takeaway') }}
        </el-button>
        <el-button type="info" plain @click="handletakeall44" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
          {{ $t('order.takeall') }}
        </el-button>
  </el-dialog>  
  <!-- 进炉前 -->
@@ -1011,6 +1532,9 @@
        <el-button type="success" plain :icon="Edit" @click="takeona" :disabled="!canona" style="width: 150px;margin-left: 10px;margin-top: 10px;">
          {{ $t('order.takeon') }}
        </el-button>
        <el-button type="info" plain @click="handletakeall3" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
          {{ $t('order.takeall') }}
        </el-button>
  </el-dialog>  
  <!-- 已出炉 -->
<el-dialog v-model="blindb" top="30vh" width="15%" style="text-align: center;" @close="handleDialogCloseb">
@@ -1021,34 +1545,13 @@
          <el-icon class="el-icon--right"><Upload /></el-icon>
          {{ $t('order.takeaway') }}
        </el-button>
        <el-button type="info" plain @click="handletakeall4" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
          {{ $t('order.takeall') }}
        </el-button>
        <!-- <el-button type="success" plain :icon="Edit" @click="takeonb" :disabled="!canonb" style="width: 150px;margin-left: 10px;margin-top: 10px;">
          {{ $t('order.takeon') }}
        </el-button> -->
  </el-dialog> 
  <el-dialog
      v-model="dialogVisible"
      width="100%"
      top="0vh"
      :show-close="false"
      >
      <div class="custom-title" style="text-align: center; margin-bottom: 20px;">
      {{ $t('processCard.glasstakeout') }}
    </div>
      <el-table
        :data="tableData"
        style="width: 100%;height: 760px"
      >
        <el-table-column prop="flowCardId" :label="$t('processCard.flowcard')" width="140" align="center"/>
        <el-table-column prop="layer" :label="$t('processCard.layer')" align="center" width="52"/>
        <el-table-column prop="engineerId" :label="$t('processCard.project')" align="center" width="110"/>
        <el-table-column prop="temperingLayoutId" :label="$t('processCard.temperinglayout')" align="center" width="52"/>
        <el-table-column prop="temperingFeedSequence" :label="$t('processCard.temperingfeed')" align="center"
                         width="52"/>
        <el-table-column prop="width" :label="$t('processCard.width')" align="center" width="80"/>
        <el-table-column prop="height" :label="$t('processCard.height')" align="center" width="80"/>
        <el-table-column prop="thickness" :label="$t('processCard.thickness')" align="center" width="52"/>
      </el-table>
  </el-dialog>
    </div>
  </div>
</template>
@@ -1135,5 +1638,21 @@
.custom-title {  
  font-size: 20px;
  font-weight: bold;
}
}
/* @media print {
  .el-table {
    page-break-inside: avoid;
  }
} */
@media print {
    body {
        margin: 0;
        padding: 0;
    }
    .el-table {
        width: 100%;
        break-inside: avoid; /* 避免表格在打印时被拆分 */
    }
    /* 根据需要添加更多样式 */
}
</style>