廖井涛
2025-11-17 c069f2cce3c10a773e8c474c0031e316ffd8ad9e
north-glass-erp/northglass-erp/src/components/pp/PrintProcessReplenish.vue
@@ -54,6 +54,7 @@
data.value.printList = JSON.parse(props.printList)
let name=company.companyName
let replenishQRCode=company.replenishQRCode
//去除重复对象
// let uniqueObjects = {};
// // 遍历原始数据数组
@@ -176,7 +177,11 @@
           flowCardCount=produceList.value.length
          handleSummary()
          handleGetQRCode()
          if (replenishQRCode == 2){
            handleGetQRCodeTj()//天津扫码枪报工需要合并层号二维码
          }else{
            handleGetQRCode()//拆分层号二维码
          }
        } else {
          ElMessage.warning(res.msg)
          router.push("/login")
@@ -185,44 +190,56 @@
    }
)
const handleGetQRCode = async () => {
  for (let i = 0; i < produceList.value.length; i++) {
    const detail = produceList.value[i].detail[0];
    const processId = detail.process_id;
    const mergeStr = detail.mergeTechnologyNumber?.toString() || '';
    const detailItem = produceList.value[i].detail[0];
    const detailList = produceList.value[i].detailList;
    detail.qrcodeList = []; // 初始化
    const mergeTechNumber = detailItem.mergeTechnologyNumber.toString();
    const processId = detailItem.process_id;
    for (let j = 0; j < mergeStr.length; j++) {
      const singleTech = mergeStr[j]; // 取出每一位字符
      const url = `${processId}/${singleTech}`;
    detailItem.qrcodeList = [];
    //储存层号
    const seenTechNumbers = new Set();
    for (let j = 0; j < detailList.length; j++) {
      const techNum = detailList[j].technology_number;
      //有则跳过
      if (seenTechNumbers.has(techNum)) continue;
      const url = `${processId}/${techNum}`;
      const qrcodeData = await QRCode.toDataURL(url);
      detail.qrcodeList.push({
      detailItem.qrcodeList.push({
        qrcode: qrcodeData,
        technologyNumber: singleTech
        technologyNumber: techNum
      });
      seenTechNumbers.add(techNum);
    }
  }
};
// const handleGetQRCode = async () => {
//   let technologyNumber=''
//   for (let i = 0; i < produceList.value.length; i++) {
//
//     const technologyNumber = produceList.value[i].detail[0].technologyNumber.toString(); // 转换为字符串以便处理每个字符
//     produceList.value[i].detail[0]["qrcodeList"] = []; // 初始化一个空数组用来存储 QR Code
//     const merge = produceList.value[i].detail[0].mergeTechnologyNumber.toString();
//     const processId = produceList.value[i].detail[0].process_id;
//     const url = `${processId}/${technologyNumber}`;
//     // 生成 QR Code 并存储到数组中
//     const qrcodeData = await QRCode.toDataURL(url);
//     produceList.value[i].detail[0]["qrcodeList"].push({
//       qrcode: qrcodeData,
//       technologyNumber: technologyNumber
//     });
//   }
// };
const handleGetQRCodeTj = async () => {
  let technologyNumber=''
  for (let i = 0; i < produceList.value.length; i++) {
    const technologyNumber = produceList.value[i].detail[0].mergeTechnologyNumber.toString(); // 转换为字符串以便处理每个字符
    produceList.value[i].detail[0]["qrcodeList"] = []; // 初始化一个空数组用来存储 QR Code
    const processId = produceList.value[i].detail[0].process_id;
    const url = `${processId}/${technologyNumber}`;
    // 生成 QR Code 并存储到数组中
    const qrcodeData = await QRCode.toDataURL(url);
    produceList.value[i].detail[0]["qrcodeList"].push({
      qrcode: qrcodeData,
      technologyNumber: technologyNumber
    });
  }
};
//根据输入的数量重新汇总
@@ -261,7 +278,7 @@
      <thead>
      <tr v-for="(itemFlow,index) in item.detail" :key="index">
        <td    colspan="34">
          <div style="float: left;"><img id="img-pic" style="width: 42px;height: 32px" src="@/assets/northGlass.ico" alt=""></div>
          <div id="bj" style="float: right;font-size: 28px">补 {{ id + 1 }}</div>
          <div style="left: 150px">{{ company.companyName }}</div>
          <div>生产流程卡</div>
@@ -358,18 +375,14 @@
        </td>
      </tr>
      <tr v-for="(itemtextarea,index) in item.detail" :key="index">
        <td colspan="4" rowspan="5" style="width: 480px;height: 100px ">
          <div>
          </div>
        </td>
        <td>完工签名</td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="1"></td>
        <template v-for=" n in item.processList.length">
          <td colspan="2"></td>
        </template>
@@ -381,6 +394,8 @@
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="1"></td>
        <template v-for=" n in item.processList.length">
          <td colspan="2"></td>
        </template>
@@ -388,10 +403,12 @@
      <tr>
        <td>质检签名</td>
        <td colspan="2"></td>
        <td colspan="2">生产签名</td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="1"></td>
        <template v-for=" n in item.processList.length">
          <td colspan="2"></td>
        </template>
@@ -416,7 +433,9 @@
      </tr>
      <tr v-for="(itemtextareas,index) in item.detail" :key="index">
        <td  colspan="34" rowspan="6" style="width: 99%;height: 150px ">
          <div style="width: 100%;height: 100%;"><textarea style="height: 99%;width: 99%;border: none;;font-size: 11px;text-align: left">{{itemtextareas.processing_note}}</textarea>
          <div v-if="name=='浙江巨星嘉泰新材料有限公司'" style="width: 100%;height: 100%;text-align: left"><textarea style="height: 99%;width: 99%;border: none;;font-size: 16px;font-weight: bold;overflow: hidden;text-align: left;vertical-align: middle">{{itemtextareas.processing_note}}</textarea>
          </div>
          <div v-else style="width: 100%;height: 100%;text-align: left"><textarea style="height: 99%;width: 99%;border: none;;font-size: 14px;overflow: hidden;text-align: left;vertical-align: middle">{{itemtextareas.processing_note}}</textarea>
          </div>
        </td>
      </tr>