Browse Source

2025-11-14

采购标签生成标签打印
master
fengyuan_yang 11 months ago
parent
commit
4c0e22f6ee
  1. 158
      src/views/modules/print/PoPartPrint.vue
  2. 6
      src/views/modules/yieldReport/com_separate_roll.vue

158
src/views/modules/print/PoPartPrint.vue

@ -1373,31 +1373,31 @@ export default {
// 边框样式: 0=实线
// 边框粗细: 单位为像素
// 外边框(2mm边距,66mm宽 x 26mm高)
LODOP.ADD_PRINT_RECT('2mm', '2mm', '66mm', '26mm', 0, 1);
// 外边框(1mm边距,68mm宽 x 28mm高)
LODOP.ADD_PRINT_RECT('1mm', '1mm', '68mm', '28mm', 0, 1);
// ADD_PRINT_LINE(起点Y, 起点X, 终点Y, 终点X, 线条样式, 线条粗细)
// 线条样式: 0=实线
// 垂直分隔线:左右分隔(从上到下)
// 参数说明:起点(2mm, 22mm) -> 终点(28mm, 22mm)
LODOP.ADD_PRINT_LINE('2mm', '22mm', '28mm', '22mm', 0, 1);
// 参数说明:起点(1mm, 22mm) -> 终点(29mm, 22mm)
LODOP.ADD_PRINT_LINE('1mm', '22mm', '29mm', '22mm', 0, 1);
// 水平分隔线1:编码下方
// 参数说明:起点(8mm, 22mm) -> 终点(8mm, 68mm)
LODOP.ADD_PRINT_LINE('8mm', '22mm', '8mm', '68mm', 0, 1);
// 参数说明:起点(8mm, 22mm) -> 终点(8mm, 69mm)
LODOP.ADD_PRINT_LINE('8mm', '22mm', '8mm', '69mm', 0, 1);
// 水平分隔线2:型号下方
// 参数说明:起点(13mm, 22mm) -> 终点(13mm, 68mm)
LODOP.ADD_PRINT_LINE('13mm', '22mm', '13mm', '68mm', 0, 1);
// 参数说明:起点(13mm, 22mm) -> 终点(13mm, 69mm)
LODOP.ADD_PRINT_LINE('13mm', '22mm', '13mm', '69mm', 0, 1);
// 水平分隔线3:数量下方
// 参数说明:起点(18mm, 22mm) -> 终点(18mm, 68mm)
LODOP.ADD_PRINT_LINE('18mm', '22mm', '18mm', '68mm', 0, 1);
// 参数说明:起点(18mm, 22mm) -> 终点(18mm, 69mm)
LODOP.ADD_PRINT_LINE('18mm', '22mm', '18mm', '69mm', 0, 1);
// 水平分隔线4:批号下方
// 参数说明:起点(23mm, 22mm) -> 终点(23mm, 68mm)
LODOP.ADD_PRINT_LINE('23mm', '22mm', '23mm', '68mm', 0, 1);
// 参数说明:起点(23mm, 22mm) -> 终点(23mm, 69mm)
LODOP.ADD_PRINT_LINE('23mm', '22mm', '23mm', '69mm', 0, 1);
// ============================================================
// 3. 左侧二维码
@ -1454,49 +1454,63 @@ export default {
LODOP.NEWPAGE();
}
// ============================================================
// 1. 纸张设置
// ============================================================
// 设置纸张大小 70mm x 20mm (0=纵向)
LODOP.SET_PRINT_PAGESIZE(0, 700, 200, '');
// 绘制外边框
LODOP.ADD_PRINT_RECT('2mm', '2mm', '66mm', '16mm', 0, 1);
// 标题 "其他工序用"
const title = LODOP.ADD_PRINT_TEXT('2mm', '2mm', '66mm', '4mm', '其他工序用');
LODOP.SET_PRINT_STYLEA(title, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(title, "FontSize", 10);
LODOP.SET_PRINT_STYLEA(title, "Bold", 1);
LODOP.SET_PRINT_STYLEA(title, "Alignment", 2); // 居中
// 横线分隔标题
LODOP.ADD_PRINT_LINE('6mm', '2mm', '6mm', '68mm', 0, 1);
// 纵线分隔左右
LODOP.ADD_PRINT_LINE('6mm', '22mm', '18mm', '22mm', 0, 1);
// ============================================================
// 2. 绘制边框
// ============================================================
// 外边框(2mm边距,66mm宽 x 16mm高)
LODOP.ADD_PRINT_RECT('1mm', '1mm', '68mm', '18mm', 0, 1);
// 左侧二维码
const qrIndex = LODOP.ADD_PRINT_BARCODE('8mm', '3mm', '18mm', '9mm', 'QRCode', printData.rollNo || '');
// ============================================================
// 3. 左侧二维码
// ============================================================
// 二维码位置:距上3mm,距左3mm,尺寸15mm x 15mm
const qrIndex = LODOP.ADD_PRINT_BARCODE('1.6mm', '3.4mm', '18.2mm', '18.2mm', 'QRCode', printData.rollNo || '');
LODOP.SET_PRINT_STYLEA(qrIndex, "QRCodeVersion", 4);
LODOP.SET_PRINT_STYLEA(qrIndex, "QRCodeErrorLevel", "M");
// 右侧信息
const startX = '23mm';
const textWidth = '43mm';
// ============================================================
// 4. 右侧文字信息(4行)
// ============================================================
const startX = '23mm'; // 文字左边距
const textWidth = '43mm'; // 文字区域宽度
const text1 = LODOP.ADD_PRINT_TEXT('7mm', startX, textWidth, '3mm', `ERP No.: ${printData.partNo || ''}`);
// 第1行:编码
const text1 = LODOP.ADD_PRINT_TEXT('3mm', startX, textWidth, '3mm', `编码:${printData.partNo || ''}`);
LODOP.SET_PRINT_STYLEA(text1, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(text1, "FontSize", 7);
LODOP.SET_PRINT_STYLEA(text1, "FontSize", 8);
const text2 = LODOP.ADD_PRINT_TEXT('10mm', startX, textWidth, '3mm', `Batch No.: ${printData.batchNo || ''}`);
// 第2行:卷号
const text2 = LODOP.ADD_PRINT_TEXT('7mm', startX, textWidth, '3mm', `卷号:${printData.rollNo || ''}`);
LODOP.SET_PRINT_STYLEA(text2, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(text2, "FontSize", 7);
LODOP.SET_PRINT_STYLEA(text2, "FontSize", 8);
const text3 = LODOP.ADD_PRINT_TEXT('13mm', startX, textWidth, '3mm', `Good QTY: ${printData.goodQuantity || ''}`);
// 第3行:良品 + 不良品(左右分布)
// 良品(左侧)
const text3 = LODOP.ADD_PRINT_TEXT('11mm', startX, '20mm', '3mm', `良品:${printData.goodQuantity || ''}`);
LODOP.SET_PRINT_STYLEA(text3, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(text3, "FontSize", 7);
LODOP.SET_PRINT_STYLEA(text3, "FontSize", 8);
const text4 = LODOP.ADD_PRINT_TEXT('16mm', startX, textWidth, '3mm', `Bad QTY: ${printData.badQuantity || ''}`);
// 不良品(右侧)
const text4 = LODOP.ADD_PRINT_TEXT('11mm', '43mm', '23mm', '3mm', `不良品:${printData.badQuantity || ''}`);
LODOP.SET_PRINT_STYLEA(text4, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(text4, "FontSize", 7);
LODOP.SET_PRINT_STYLEA(text4, "FontSize", 8);
// 第4行:总数 + 良率(左右分布)
// 总数(左侧)
const text5 = LODOP.ADD_PRINT_TEXT('15mm', startX, '20mm', '3mm', `总数:${printData.quantity || ''}`);
LODOP.SET_PRINT_STYLEA(text5, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(text5, "FontSize", 8);
// 良率(右侧)
const text6 = LODOP.ADD_PRINT_TEXT('15mm', '43mm', '23mm', '3mm', `良率:${printData.yield || ''}%`);
LODOP.SET_PRINT_STYLEA(text6, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(text6, "FontSize", 8);
},
// A003 标签打印(70mm x 20mm)- 绑定用
@ -1505,49 +1519,57 @@ export default {
LODOP.NEWPAGE();
}
// ============================================================
// 1. 纸张设置
// ============================================================
// 设置纸张大小 70mm x 20mm (0=纵向)
LODOP.SET_PRINT_PAGESIZE(0, 700, 200, '');
// 绘制外边框
LODOP.ADD_PRINT_RECT('2mm', '2mm', '66mm', '16mm', 0, 1);
// 标题 "绑定用"
const title = LODOP.ADD_PRINT_TEXT('2mm', '2mm', '66mm', '4mm', '绑定用');
LODOP.SET_PRINT_STYLEA(title, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(title, "FontSize", 10);
LODOP.SET_PRINT_STYLEA(title, "Bold", 1);
LODOP.SET_PRINT_STYLEA(title, "Alignment", 2); // 居中
// 横线分隔标题
LODOP.ADD_PRINT_LINE('6mm', '2mm', '6mm', '68mm', 0, 1);
// 纵线分隔左右
LODOP.ADD_PRINT_LINE('6mm', '22mm', '18mm', '22mm', 0, 1);
// ============================================================
// 2. 绘制边框
// ============================================================
// 外边框(1mm边距,68mm宽 x 18mm高)
LODOP.ADD_PRINT_RECT('1mm', '1mm', '68mm', '18mm', 0, 1);
// 左侧二维码
const qrIndex = LODOP.ADD_PRINT_BARCODE('8mm', '3mm', '18mm', '9mm', 'QRCode', printData.rollNo || '');
// ============================================================
// 3. 左侧二维码
// ============================================================
// 二维码位置:距上1.6mm,距左3.4mm,尺寸18.2mm x 18.2mm
const qrIndex = LODOP.ADD_PRINT_BARCODE('1.6mm', '3.4mm', '18.2mm', '18.2mm', 'QRCode', printData.rollNo || '');
LODOP.SET_PRINT_STYLEA(qrIndex, "QRCodeVersion", 4);
LODOP.SET_PRINT_STYLEA(qrIndex, "QRCodeErrorLevel", "M");
// 右侧信息
const startX = '23mm';
const textWidth = '43mm';
// ============================================================
// 4. 右侧文字信息(4行)
// ============================================================
const startX = '23mm'; // 文字左边距
const textWidth = '43mm'; // 文字区域宽度
const text1 = LODOP.ADD_PRINT_TEXT('7mm', startX, textWidth, '3mm', `ERP No.: ${printData.partNo || ''}`);
// 第1行:ERP No.
const text1 = LODOP.ADD_PRINT_TEXT('3mm', startX, textWidth, '3mm', `ERP No.: ${printData.partNo || ''}`);
LODOP.SET_PRINT_STYLEA(text1, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(text1, "FontSize", 7);
LODOP.SET_PRINT_STYLEA(text1, "FontSize", 8);
const text2 = LODOP.ADD_PRINT_TEXT('10mm', startX, textWidth, '3mm', `Batch No.: ${printData.batchNo || ''} Reel No.: ${printData.reelNo || ''}`);
// 第2行:Batch No. + Reel No.(左右分布)
// Batch No.(左侧)
const text2 = LODOP.ADD_PRINT_TEXT('7mm', startX, '20mm', '3mm', `Batch No.: ${printData.batchNo || ''}`);
LODOP.SET_PRINT_STYLEA(text2, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(text2, "FontSize", 7);
LODOP.SET_PRINT_STYLEA(text2, "FontSize", 8);
const text3 = LODOP.ADD_PRINT_TEXT('13mm', startX, textWidth, '3mm', `Good QTY: ${printData.goodQuantity || ''}`);
// Reel No.(右侧)
const text3 = LODOP.ADD_PRINT_TEXT('7mm', '43mm', '23mm', '3mm', `Reel No.: ${printData.reelNo || ''}`);
LODOP.SET_PRINT_STYLEA(text3, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(text3, "FontSize", 7);
LODOP.SET_PRINT_STYLEA(text3, "FontSize", 8);
const text4 = LODOP.ADD_PRINT_TEXT('16mm', startX, textWidth, '3mm', `Bad QTY: ${printData.badQuantity || ''}`);
// 第3行:Good QTY
const text4 = LODOP.ADD_PRINT_TEXT('11mm', startX, textWidth, '3mm', `Good QTY: ${printData.goodQuantity || ''}`);
LODOP.SET_PRINT_STYLEA(text4, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(text4, "FontSize", 7);
LODOP.SET_PRINT_STYLEA(text4, "FontSize", 8);
// 第4行:Bad QTY
const text5 = LODOP.ADD_PRINT_TEXT('15mm', startX, textWidth, '3mm', `Bad QTY: ${printData.badQuantity || ''}`);
LODOP.SET_PRINT_STYLEA(text5, "FontName", "Microsoft YaHei");
LODOP.SET_PRINT_STYLEA(text5, "FontSize", 8);
},
deleteLabels(){
if(this.selectionDataList.length===0){

6
src/views/modules/yieldReport/com_separate_roll.vue

@ -34,7 +34,7 @@
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="卷数">
<el-form-item label="分切卷数">
<el-input-number :controls="false" :step="0" v-model="pageData.rollCount" style="width: 60px;"></el-input-number>
</el-form-item>
</el-col>
@ -574,10 +574,10 @@ export default {
// 每行高度约为32px
const rowHeight = 32
const totalHeight = currentRollRows * rowHeight
// textarea的实际高度约为24px(单行)
const textareaHeight = 24
// 计算需要的padding-top来实现垂直居中
const paddingTop = (totalHeight - textareaHeight) / 2

Loading…
Cancel
Save