diff --git a/src/mixins/labelPrintTemplates.js b/src/mixins/labelPrintTemplates.js index 4a6fd53..b39c6e8 100644 --- a/src/mixins/labelPrintTemplates.js +++ b/src/mixins/labelPrintTemplates.js @@ -2,7 +2,7 @@ import QRCode from 'qrcode'; /** * 标签打印模板 Mixin - * 提供 A001、A002、A003 三种标签打印模板的通用方法 + * 提供 A001、A002、A003、A004 四种标签打印模板的通用方法 */ export default { methods: { @@ -263,6 +263,60 @@ export default { const text5 = LODOP.ADD_PRINT_TEXT('14mm', '44mm', '24mm', '3mm', `Bad QTY:${printData.badQuantity || ''}`); LODOP.SET_PRINT_STYLEA(text5, "FontName", "Microsoft YaHei"); LODOP.SET_PRINT_STYLEA(text5, "FontSize", fontSize); + }, + + // A004 标签打印(70mm x 20mm)- 基于A002,去掉不良品、总数和良率 + printLabelA004(LODOP, printData, isNewPage){ + if(isNewPage){ + LODOP.NEWPAGE(); + } + + // ============================================================ + // 1. 纸张设置 + // ============================================================ + // 设置纸张大小 70mm x 20mm (0=纵向) + LODOP.SET_PRINT_PAGESIZE(0, 700, 200, ''); + + // ============================================================ + // 2. 绘制边框 + // ============================================================ + // 外边框(2mm边距,66mm宽 x 16mm高) + LODOP.ADD_PRINT_RECT('1mm', '1mm', '68mm', '18mm', 0, 1); + + // ============================================================ + // 3. 左侧二维码(使用LODOP自带二维码) + // ============================================================ + // 二维码区域:上下左贴合边框,右贴合文字区域 + // 边框从2mm开始,高度16mm;文字从20mm开始 + // 二维码设置稍大让静区溢出,可见内容贴合边框 + const qrContent = printData.rollNo || ''; + if (qrContent) { + const qrIndex = LODOP.ADD_PRINT_BARCODE('2.5mm', '2mm', '20mm', '20mm', 'QRCode', qrContent); + LODOP.SET_PRINT_STYLEA(qrIndex, "QRCodeVersion", 0); // 自动选择版本 + LODOP.SET_PRINT_STYLEA(qrIndex, "QRCodeErrorLevel", "M"); + } + + // ============================================================ + // 4. 右侧文字信息(3行)- 字体5号 + // ============================================================ + const startX = '17mm'; // 文字左边距 + const textWidth = '54mm'; // 文字区域宽度 + const fontSize = 5; // 字体大小(比A002稍大,因为只有3行) + + // 第1行:编码 + const text1 = LODOP.ADD_PRINT_TEXT('3.5mm', startX, textWidth, '4mm', `编码:${printData.partNo || ''}`); + LODOP.SET_PRINT_STYLEA(text1, "FontName", "Microsoft YaHei"); + LODOP.SET_PRINT_STYLEA(text1, "FontSize", fontSize); + + // 第2行:卷号 + const text2 = LODOP.ADD_PRINT_TEXT('8mm', startX, textWidth, '4mm', `卷号:${printData.rollNo || ''}`); + LODOP.SET_PRINT_STYLEA(text2, "FontName", "Microsoft YaHei"); + LODOP.SET_PRINT_STYLEA(text2, "FontSize", fontSize); + + // 第3行:良品 + const text3 = LODOP.ADD_PRINT_TEXT('12.5mm', startX, textWidth, '4mm', `良品:${printData.goodQuantity || ''}`); + LODOP.SET_PRINT_STYLEA(text3, "FontName", "Microsoft YaHei"); + LODOP.SET_PRINT_STYLEA(text3, "FontSize", fontSize); } } } diff --git a/src/views/modules/fixedCarrier/fixedCarrier.vue b/src/views/modules/fixedCarrier/fixedCarrier.vue index 641498f..5015668 100644 --- a/src/views/modules/fixedCarrier/fixedCarrier.vue +++ b/src/views/modules/fixedCarrier/fixedCarrier.vue @@ -562,21 +562,28 @@ export default { // 绘制中间竖线(左右分隔) LODOP.ADD_PRINT_LINE('1mm', '50mm', '19mm', '50mm', 0, 1) - // 绘制左侧横线(标签条码和可用数量之间的分隔) - LODOP.ADD_PRINT_LINE('10mm', '1mm', '10mm', '50mm', 0, 1) + // 绘制左侧横线(三行文本之间的分隔) + LODOP.ADD_PRINT_LINE('7mm', '1mm', '7mm', '50mm', 0, 1) + LODOP.ADD_PRINT_LINE('13mm', '1mm', '13mm', '50mm', 0, 1) - // 左侧文字信息 - 标签条码 - const text1 = LODOP.ADD_PRINT_TEXT('4.5mm', '2mm', '46mm', '5mm', '标签条码: ' + (carrier.carrierNo || '')) + // 左侧文字信息 - 标签条码(第一行) + const text1 = LODOP.ADD_PRINT_TEXT('2.5mm', '2mm', '46mm', '5mm', '标签条码: ' + (carrier.carrierNo || '')) LODOP.SET_PRINT_STYLEA(text1, "FontName", "Microsoft YaHei") - LODOP.SET_PRINT_STYLEA(text1, "FontSize", 8) + LODOP.SET_PRINT_STYLEA(text1, "FontSize", 7) LODOP.SET_PRINT_STYLEA(text1, "Bold", 1) - // 左侧文字信息 - 可用数量 - const text2 = LODOP.ADD_PRINT_TEXT('13.5mm', '2mm', '46mm', '5mm', '可用数量: ' + (carrier.availableQty || 0)) + // 左侧文字信息 - 载具类型编码(第二行) + const text2 = LODOP.ADD_PRINT_TEXT('8.5mm', '2mm', '46mm', '5mm', '类型编码: ' + (carrier.carrierTypeCode || '')) LODOP.SET_PRINT_STYLEA(text2, "FontName", "Microsoft YaHei") - LODOP.SET_PRINT_STYLEA(text2, "FontSize", 8) + LODOP.SET_PRINT_STYLEA(text2, "FontSize", 7) LODOP.SET_PRINT_STYLEA(text2, "Bold", 1) + // 左侧文字信息 - 载具类型名称(第三行) + const text3 = LODOP.ADD_PRINT_TEXT('14.5mm', '2mm', '46mm', '5mm', '类型名称: ' + (carrier.carrierTypeName || '')) + LODOP.SET_PRINT_STYLEA(text3, "FontName", "Microsoft YaHei") + LODOP.SET_PRINT_STYLEA(text3, "FontSize", 7) + LODOP.SET_PRINT_STYLEA(text3, "Bold", 1) + // 右侧二维码(使用 LODOP 原生二维码) const qrIndex = LODOP.ADD_PRINT_BARCODE('1.5mm', '51mm', '19mm', '19mm', 'QRCode', carrier.carrierNo || '') LODOP.SET_PRINT_STYLEA(qrIndex, "QRCodeVersion", 4) diff --git a/src/views/modules/print/PoPartPrint.vue b/src/views/modules/print/PoPartPrint.vue index db6bec2..cc927ed 100644 --- a/src/views/modules/print/PoPartPrint.vue +++ b/src/views/modules/print/PoPartPrint.vue @@ -1470,6 +1470,8 @@ export default { await this.printLabelA002(LODOP, printData, i > 0 || times > 0); } else if(printData.labelNo === 'A003'){ await this.printLabelA003(LODOP, printData, i > 0 || times > 0); + } else if(printData.labelNo === 'A004'){ + this.printLabelA004(LODOP, printData, i > 0 || times > 0); } else { this.$message.warning(`未知的标签模板:${printData.labelNo}`); } diff --git a/src/views/modules/print/rePrintPoPart.vue b/src/views/modules/print/rePrintPoPart.vue index ad8e549..c343956 100644 --- a/src/views/modules/print/rePrintPoPart.vue +++ b/src/views/modules/print/rePrintPoPart.vue @@ -1240,6 +1240,8 @@ export default { await this.printLabelA002(LODOP, printData, i > 0 || times > 0); } else if(printData.labelNo === 'A003'){ await this.printLabelA003(LODOP, printData, i > 0 || times > 0); + } else if(printData.labelNo === 'A004'){ + this.printLabelA004(LODOP, printData, i > 0 || times > 0); } else { this.$message.warning(`未知的标签模板:${printData.labelNo}`); } diff --git a/src/views/modules/shopOrder/productionReport/searchSfdcRollsReport.vue b/src/views/modules/shopOrder/productionReport/searchSfdcRollsReport.vue index af59527..bdca427 100644 --- a/src/views/modules/shopOrder/productionReport/searchSfdcRollsReport.vue +++ b/src/views/modules/shopOrder/productionReport/searchSfdcRollsReport.vue @@ -1173,6 +1173,8 @@ import labelPrintTemplates from '@/mixins/labelPrintTemplates.js'; this.printLabelA002(LODOP, printData, i > 0 || times > 0); } else if(printData.labelNo === 'A003'){ this.printLabelA003(LODOP, printData, i > 0 || times > 0); + } else if(printData.labelNo === 'A004'){ + this.printLabelA004(LODOP, printData, i > 0 || times > 0); } else { this.$message.warning(`未知的标签模板:${printData.labelNo}`); } diff --git a/src/views/modules/yieldReport/com_abnormal_continue_roll.vue b/src/views/modules/yieldReport/com_abnormal_continue_roll.vue index ac3654d..897a07a 100644 --- a/src/views/modules/yieldReport/com_abnormal_continue_roll.vue +++ b/src/views/modules/yieldReport/com_abnormal_continue_roll.vue @@ -491,6 +491,8 @@ export default { this.printLabelA002(LODOP, printData, false); } else if (labelNo === 'A003') { this.printLabelA003(LODOP, printData, false); + } else if (labelNo === 'A004') { + this.printLabelA004(LODOP, printData, false); } else { console.warn(`未知的标签模板:${labelNo},跳过该标签`); continue; diff --git a/src/views/modules/yieldReport/com_abnormal_material_offline.vue b/src/views/modules/yieldReport/com_abnormal_material_offline.vue index b5be2cf..722ebb8 100644 --- a/src/views/modules/yieldReport/com_abnormal_material_offline.vue +++ b/src/views/modules/yieldReport/com_abnormal_material_offline.vue @@ -349,6 +349,8 @@ export default { this.printLabelA002(LODOP, printData, false); } else if (labelNo === 'A003') { this.printLabelA003(LODOP, printData, false); + } else if (labelNo === 'A004') { + this.printLabelA004(LODOP, printData, false); } else { console.warn(`未知的标签模板:${labelNo}`); continue; diff --git a/src/views/modules/yieldReport/com_cutting_material.vue b/src/views/modules/yieldReport/com_cutting_material.vue index edf4106..9c1ba53 100644 --- a/src/views/modules/yieldReport/com_cutting_material.vue +++ b/src/views/modules/yieldReport/com_cutting_material.vue @@ -374,6 +374,8 @@ export default { this.printLabelA002(LODOP, printData, false); } else if (labelNo === 'A003') { this.printLabelA003(LODOP, printData, false); + } else if (labelNo === 'A004') { + this.printLabelA004(LODOP, printData, false); } else { console.warn(`未知的标签模板:${labelNo},跳过该标签`); continue; diff --git a/src/views/modules/yieldReport/com_material_loss.vue b/src/views/modules/yieldReport/com_material_loss.vue index acd0967..87d57c2 100644 --- a/src/views/modules/yieldReport/com_material_loss.vue +++ b/src/views/modules/yieldReport/com_material_loss.vue @@ -349,6 +349,8 @@ export default { this.printLabelA002(LODOP, printData, false); } else if (labelNo === 'A003') { this.printLabelA003(LODOP, printData, false); + } else if (labelNo === 'A004') { + this.printLabelA004(LODOP, printData, false); } else { console.warn(`未知的标签模板:${labelNo}`); continue; diff --git a/src/views/modules/yieldReport/com_produce_report_normal.vue b/src/views/modules/yieldReport/com_produce_report_normal.vue index c2f5fff..5120455 100644 --- a/src/views/modules/yieldReport/com_produce_report_normal.vue +++ b/src/views/modules/yieldReport/com_produce_report_normal.vue @@ -4955,6 +4955,8 @@ export default { this.printLabelA002(LODOP, printData, false); } else if (printData.labelNo === 'A003') { this.printLabelA003(LODOP, printData, false); + } else if (printData.labelNo === 'A004') { + this.printLabelA004(LODOP, printData, false); } else { this.$message.warning(`未知的标签模板:${printData.labelNo}`); continue; diff --git a/src/views/modules/yieldReport/com_separate_roll.vue b/src/views/modules/yieldReport/com_separate_roll.vue index fc15526..add4ea0 100644 --- a/src/views/modules/yieldReport/com_separate_roll.vue +++ b/src/views/modules/yieldReport/com_separate_roll.vue @@ -1062,21 +1062,28 @@ export default { // 绘制中间竖线(左右分隔) LODOP.ADD_PRINT_LINE('1mm', '50mm', '19mm', '50mm', 0, 1) - // 绘制左侧横线(标签条码和可用数量之间的分隔) - LODOP.ADD_PRINT_LINE('10mm', '1mm', '10mm', '50mm', 0, 1) + // 绘制左侧横线(三行文本之间的分隔) + LODOP.ADD_PRINT_LINE('7mm', '1mm', '7mm', '50mm', 0, 1) + LODOP.ADD_PRINT_LINE('13mm', '1mm', '13mm', '50mm', 0, 1) - // 左侧文字信息 - 标签条码 - const text1 = LODOP.ADD_PRINT_TEXT('4.5mm', '2mm', '46mm', '5mm', '标签条码: ' + (row.carrierNo || '')) + // 左侧文字信息 - 标签条码(第一行) + const text1 = LODOP.ADD_PRINT_TEXT('2.5mm', '2mm', '46mm', '5mm', '标签条码: ' + (row.carrierNo || '')) LODOP.SET_PRINT_STYLEA(text1, "FontName", "Microsoft YaHei") - LODOP.SET_PRINT_STYLEA(text1, "FontSize", 8) + LODOP.SET_PRINT_STYLEA(text1, "FontSize", 7) LODOP.SET_PRINT_STYLEA(text1, "Bold", 1) - // 左侧文字信息 - 可用数量 - const text2 = LODOP.ADD_PRINT_TEXT('13.5mm', '2mm', '46mm', '5mm', '可用数量: ' + (row.availableQty || 0)) + // 左侧文字信息 - 载具类型编码(第二行) + const text2 = LODOP.ADD_PRINT_TEXT('8.5mm', '2mm', '46mm', '5mm', '类型编码: ' + (row.carrierTypeCode || '')) LODOP.SET_PRINT_STYLEA(text2, "FontName", "Microsoft YaHei") - LODOP.SET_PRINT_STYLEA(text2, "FontSize", 8) + LODOP.SET_PRINT_STYLEA(text2, "FontSize", 7) LODOP.SET_PRINT_STYLEA(text2, "Bold", 1) + // 左侧文字信息 - 载具类型名称(第三行) + const text3 = LODOP.ADD_PRINT_TEXT('14.5mm', '2mm', '46mm', '5mm', '类型名称: ' + (row.carrierTypeName || '')) + LODOP.SET_PRINT_STYLEA(text3, "FontName", "Microsoft YaHei") + LODOP.SET_PRINT_STYLEA(text3, "FontSize", 7) + LODOP.SET_PRINT_STYLEA(text3, "Bold", 1) + // 右侧二维码(使用 LODOP 原生二维码) const qrIndex = LODOP.ADD_PRINT_BARCODE('1.5mm', '51mm', '19mm', '19mm', 'QRCode', row.carrierNo || '') LODOP.SET_PRINT_STYLEA(qrIndex, "QRCodeVersion", 4) @@ -1435,6 +1442,8 @@ export default { this.printLabelA002(LODOP, printData, false); } else if (labelNo === 'A003') { this.printLabelA003(LODOP, printData, false); + } else if (labelNo === 'A004') { + this.printLabelA004(LODOP, printData, false); } else { console.warn(`未知的标签模板:${labelNo},跳过该标签`); continue;