guoyujie
2025-11-17 613e4e92157dd697629dbad17fd091ae37637bc7
north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
@@ -35,6 +35,7 @@
  merges:null,
  printFc:null,
  flashback:null,
  landingSequence:null,
  compound:null
})
@@ -70,13 +71,16 @@
  compound = null
}
let name=company.companyName
let sole = company.soleQRCode
let printNumberFc = props.printFc
data.value.printList = JSON.parse(props.printList)
let flowCardCount = ''
const picture = ref([])
onMounted(() => {
      //判断是否是工程打印
      if(props.printProject!=null){
        request.post(`/processCard/getSelectPrintProject/${printProject}/${merges}/${props.flashback}`).then((res) => {
        request.post(`/processCard/getSelectPrintProject/${printProject}/${merges}/${props.flashback}/${props.landingSequence}`).then((res) => {
          if (res.code == 200) {
            load(res.data.data)
          } else {
@@ -85,13 +89,18 @@
          }
        })
      }else{
        request.post(`/processCard/getSelectPrinting/${merge}/${like}/${merges}/${props.flashback}/${compound}`, data.value).then((res) => {
        //流程卡
        request.post(`/processCard/getSelectPrinting/${merge}/${like}/${merges}/${props.flashback}/${compound}/${props.landingSequence}`, data.value).then((res) => {
          if (res.code == 200) {
            load(res.data.data)
          } else {
            ElMessage.warning(res.msg)
            router.push("/login")
          }
        })
        //订单序号dwg图片查询
        request.post("/orderFile/getOrderFilePicture", data.value.printList).then((res) => {
          picture.value = res.data
        })
      }
@@ -103,33 +112,43 @@
const handleGetQRCode = async () => {
  let technologyNumber=''
  for (let i = 0; i < produceList.value.length; i++) {
    if (produceList.value[i].detail[0].qrcode!="" && produceList.value[i].detail[0].qrcode!=null){
       technologyNumber = produceList.value[i].detail[0].qrcode.toString(); // 转换为字符串以便处理每个字符,合并标签
    }else {
       technologyNumber = produceList.value[i].detail[0].technologyNumber.toString(); // 转换为字符串以便处理每个字符
    if (sole==true){
        technologyNumber = produceList.value[i].detail[0].technologyNumber.toString(); // 转换为字符串以便处理每个字符
    }
    else{
      technologyNumber = produceList.value[i].detail[0].technologyNumber.toString(); // 转换为字符串以便处理每个字符
    }
    produceList.value[i].detail[0]["qrcodeList"] = []; // 初始化一个空数组用来存储 QR Code
    if (compound == null  ){
      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
      });
    }
    else {
    technologyNumber = compound
     for (let j = 0; j < technologyNumber.length; j++) {
        const processId = produceList.value[i].detail[0].process_id;
        const url = `${processId}/${technologyNumber[j]}`;
        // 生成 QR Code 并存储到数组中
        const qrcodeData = await QRCode.toDataURL(url);
        produceList.value[i].detail[0]["qrcodeList"].push({
          qrcode: qrcodeData,
          technologyNumber: technologyNumber[j]
        });
     }
    }
    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
    });
    // for (let j = 0; j < technologyNumber.length; j++) {
    //   const processId = produceList.value[i].detail[0].process_id;
    //   const url = `${processId}/${technologyNumber[j]}`;
    //   // 生成 QR Code 并存储到数组中
    //   const qrcodeData = await QRCode.toDataURL(url);
    //   produceList.value[i].detail[0]["qrcodeList"].push({
    //     qrcode: qrcodeData,
    //     technologyNumber: technologyNumber[j]
    //   });
    //
    // }
  }
};
@@ -280,7 +299,12 @@
              打印人:{{user.user.userName}} &nbsp;&nbsp;
              时间:{{formattedTime}}
              &nbsp;&nbsp;
              <span style="font-weight: bolder;" v-if="name=='金华福喜天成玻璃有限公司'">
              <span style="font-weight: bolder;" >
                总数量:{{itemFlow.orderQuantity}}
              总面积:{{itemFlow.orderArea}}
              </span>
              &nbsp;
              <span style="font-weight: bolder;" >
                打印总数量:{{totalQuantity}}
              打印总面积:{{totalArea}}
              </span>
@@ -299,13 +323,14 @@
        <td class="tdNowrap">客户名称:</td>
        <td colspan="2">{{ items.customer_name }}</td>
        <td class="tdNowrap">项目名称:</td>
        <td colspan="4" style="min-width: 250px;">{{ items.project }}</td>
        <td colspan="4" style="min-width: 250px;">{{ items.projectBatch }}</td>
        <td class="tdNowrap">工艺流程:</td>
        <td :colspan="2+item.processList.length*2"  style="width: 500px">{{ items.process }}</td>
      </tr>
      <tr v-for="(itemTr,index) in item.detail" :key="index">
        <td class="tdNowrap">磨边类型:</td>
        <td colspan="2">{{ itemTr.edging_type }}</td>
        <td v-if="name=='天津北玻玻璃工业技术有限公司(TJBB-QR7.1-01)'"  colspan="2">{{ itemTr.other_remarks }}</td>
        <td v-else colspan="2">{{ itemTr.edging_type }}</td>
        <td class="tdNowrap">单片名称:</td>
        <td colspan="4">{{ itemTr.glass_child }}</td>
        <td class="tdNowrap">产品名称:</td>
@@ -316,7 +341,8 @@
        <td rowspan='2'>图号</td>
        <td rowspan='2'>编号</td>
        <td rowspan="2">小片顺序</td>
        <td rowspan='2' style="width: 90px">宽*高</td>
        <td v-if="name=='浙江巨星嘉泰新材料有限公司'"  rowspan='2' style="width: 90px">宽(弧长)*高</td>
        <td v-else rowspan='2' style="width: 90px">宽*高</td>
        <td rowspan='2' >数量</td>
        <td rowspan='2'>面积</td>
        <td rowspan='2'>周长</td>
@@ -341,12 +367,13 @@
        <td>{{ itemDatile.technology_number }}</td>
        <td>{{ itemDatile.child_width }}</td>
        <td class="item" style="width: 60px;height: 100%;">
          <input v-model="itemDatile.quantity" style="width: 100%;height: 100%"  @keyup="handleSummary()"/>
          <input v-model="itemDatile.quantity" style="width: 100%;height: 100%;font-weight: bold;"  @keyup="handleSummary()"/>
        </td>
        <td>{{ itemDatile.total_area }}</td>
        <td>{{ itemDatile.perimeter }}</td>
        <td>{{ itemDatile.bend_radius }}</td>
        <td>{{ itemDatile.remarks }}</td>
        <td v-if="name!='金华福喜天成玻璃有限公司'" style="white-space: normal; word-break: break-all; word-wrap: break-word;">{{ itemDatile.remarks }}</td>
        <td v-else>{{ itemDatile.remarks }}</td>
        <template v-for=" n in item.processList.length">
          <td></td>
          <td></td>
@@ -393,7 +420,7 @@
      <tr v-for="(qrCodeItem,index) in item.detail" :key="index">
        <td colspan="31">
          <span style="display: flex;">
            <span v-for="(qrCodeItems,index) in qrCodeItem.qrcodeList" :key="index" style="display: flex;width: 35%">
            <span v-for="(qrCodeItems,index) in qrCodeItem.qrcodeList" :key="index" style="display: flex;width: 250px">
            <div class='qrCode' style="width: 80px;height: 80px;">
            <img :src=qrCodeItems.qrcode>
          </div>
@@ -425,7 +452,9 @@
      <tr v-for="(itemtextareas,index) in item.detail" :key="index">
        <td  colspan="31"  style="width: 480px;height: 150px ">
          <div 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 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>
@@ -439,7 +468,14 @@
      </tr>
      </tfoot>
    </table>
    <el-image
        class="picture"
        v-for="(item,index) in picture"
        :src="item.imageBase64"
        :preview-src-list="[item.imageBase64]"
        fit="contain"
        style="max-height: 700px;"
    />
  </div>
</template>
@@ -531,6 +567,8 @@
  width: 100%;
  height: 100%;
}
.picture{
  page-break-before: always;
}
</style>