gongchunyi
7 小时以前 3a7267cd8eebce7c75afb142f8632bfadd5e7a49
src/views/salesManagement/salesLedger/components/processCardPrint.js
@@ -1,3 +1,5 @@
import QRCode from "qrcode";
const PRINT_TITLE = "生产流程卡(成品)";
const formatDisplayDate = (value) => {
@@ -83,7 +85,7 @@
  return pages;
};
export const printFinishedProcessCard = (cardData) => {
export const printFinishedProcessCard = async (cardData) => {
  const data = cardData ?? {};
  const routeNodes = Array.isArray(data.routeNodes) ? data.routeNodes : [];
  const items = Array.isArray(data.items) ? data.items : [];
@@ -95,6 +97,21 @@
  const pageSize = 10;
  const itemPages = splitItemsByPage(items, pageSize);
  const totalPages = itemPages.length;
  const ledgerId =
    data?.salesLedgerId ?? data?.ledgerId ?? data?.id ?? data?.salesLedgerID;
  const salesContractNo = String(data?.salesContractNo ?? "").trim();
  const qrPayload = JSON.stringify({
    id: ledgerId ?? "",
    salesContractNo,
    type: "XS",
  });
  let qrDataUrl = "";
  try {
    qrDataUrl = await QRCode.toDataURL(qrPayload, { width: 180, margin: 2 });
  } catch {
    qrDataUrl = "";
  }
  const printWindow = window.open("", "_blank", "width=1200,height=900");
  if (!printWindow) {
@@ -109,9 +126,19 @@
    <title>${PRINT_TITLE}</title>
    <style>
      body { margin: 0; padding: 0; font-family: "SimSun", serif; color: #222; }
      .page { width: 198mm; margin: 0 auto; padding: 6mm 3mm 5mm; box-sizing: border-box; page-break-after: always; }
      .page { position: relative; width: 198mm; margin: 0 auto; padding: 6mm 3mm 5mm; box-sizing: border-box; page-break-after: always; }
      .page:last-child { page-break-after: auto; }
      .table-wrap { position: relative; }
      .table-wrap { position: relative; margin-top: 22mm; }
      .header { position: relative; padding-top: 0; }
      .qr-block {
        position: absolute;
        right: 2mm;
        top: -1mm;
        width: 32mm;
        text-align: center;
        z-index: 3;
      }
      .qr-block img { width: 32mm; height: 32mm; display: block; margin: 0 auto; }
      .page-mark {
        position: absolute;
        left: 0;
@@ -162,7 +189,16 @@
        const startIndex = pageIndex * pageSize;
        return `
    <div class="page">
      <div class="header">
        ${
          qrDataUrl
            ? `<div class="qr-block">
          <img src="${qrDataUrl}" alt="二维码" />
        </div>`
            : ""
        }
      <div class="title">鹤壁天沐钢化玻璃厂<br /><span class="sub-title">生产流程卡(成品)</span></div>
      </div>
      <div class="table-wrap">
      <div class="page-mark">第${pageIndex + 1}页,共${totalPages}页</div>
      <table>