| | |
| | | import QRCode from "qrcode"; |
| | | |
| | | const PRINT_TITLE = "生产流程卡(成品)"; |
| | | |
| | | const formatDisplayDate = (value) => { |
| | |
| | | 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 : []; |
| | |
| | | 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) { |
| | |
| | | <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; |
| | |
| | | const startIndex = pageIndex * pageSize; |
| | | return ` |
| | | <div class="page"> |
| | | <div class="title">鹤壁天沐钢化玻璃厂<br /><span class="sub-title">生产流程卡(成品)</span></div> |
| | | <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> |