| | |
| | | LODOP.PRINT_INITA(0,0,800,1100,"委外加工出库单"); |
| | | LODOP.SET_PRINT_PAGESIZE(1,0,0,"A4"); |
| | | LODOP.SET_PRINT_MODE("PRINT_NOCOLLATE",1); |
| | | if(izRed==1) |
| | | { |
| | | LODOP.ADD_PRINT_TEXT(28,268,331,36,"委外加工出库单(红字)"); |
| | | |
| | | // 收集二维码供应商:从选中的记录中收集所有供应商,去重后用|连接 |
| | | var venNameSet = new Set(); |
| | | if (selectList.value && selectList.value.length > 0) { |
| | | selectList.value.forEach(function(item) { |
| | | if (item.venName && item.venName.trim()) { |
| | | venNameSet.add(item.venName.trim()); |
| | | } |
| | | }); |
| | | } |
| | | else{ |
| | | LODOP.ADD_PRINT_TEXT(28,268,331,36,"委外加工出库单"); |
| | | var venNameStr = Array.from(venNameSet).join('|'); |
| | | |
| | | // 定义添加二维码的函数 |
| | | function addQrCodeToPrint() { |
| | | // 在右上角添加二维码(如果有供应商) |
| | | if (venNameStr) { |
| | | // 固定二维码尺寸,保持正方形比例,避免挤占打印文本和被拉长 |
| | | var qrCodeWidth = 130; // 固定宽度130px |
| | | var qrCodeHeight = 130; // 固定高度130px,保持正方形比例 |
| | | var qrCodeUrl = baseUrl + "/file/barcode/qrcode/auth?type=2¶m=" + encodeURIComponent(venNameStr) + "&width=" + qrCodeWidth + "&height=" + qrCodeHeight; |
| | | |
| | | // 创建一个临时img元素加载图片,然后转换为base64 |
| | | var img = new Image(); |
| | | img.crossOrigin = 'anonymous'; |
| | | img.onload = function() { |
| | | try { |
| | | // 创建canvas将图片转换为base64 |
| | | var canvas = document.createElement('canvas'); |
| | | canvas.width = img.width; |
| | | canvas.height = img.height; |
| | | var ctx = canvas.getContext('2d'); |
| | | ctx.drawImage(img, 0, 0); |
| | | var base64Image = canvas.toDataURL('image/png'); |
| | | |
| | | // LODOP添加图片,使用base64格式 |
| | | // ADD_PRINT_IMAGE参数:Top, Left, Width, Height, ImageURL或ImageData |
| | | // 二维码位置:右上角,Top: 20, Left: 650 (页面宽度800,右边留50像素边距) |
| | | var displayWidth = qrCodeWidth; // 固定宽度130px |
| | | var displayHeight = qrCodeHeight; // 固定高度130px,保持正方形 |
| | | var displayLeft = 800 - displayWidth - 20; // 右对齐,留20px边距 |
| | | try { |
| | | LODOP.ADD_PRINT_IMAGE(20, displayLeft, displayWidth, displayHeight, base64Image); |
| | | } catch(e) { |
| | | // 如果ADD_PRINT_IMAGE失败,使用HTML方式 |
| | | var htmlContent = '<img src="' + base64Image + '" style="width:' + displayWidth + 'px;height:' + displayHeight + 'px;" />'; |
| | | LODOP.ADD_PRINT_HTM(20, displayLeft, displayWidth, displayHeight, htmlContent); |
| | | } |
| | | |
| | | // 图片加载完成后,执行打印 |
| | | executePrint(); |
| | | } catch(e) { |
| | | console.error("转换图片失败:", e); |
| | | // 如果转换失败,只显示文本(供应商名称) |
| | | var displayWidth = qrCodeWidth; |
| | | var displayHeight = qrCodeHeight; |
| | | var displayLeft = 800 - displayWidth - 20; |
| | | LODOP.ADD_PRINT_TEXT(20, displayLeft, displayWidth, displayHeight, venNameStr); |
| | | LODOP.SET_PRINT_STYLEA(0, "FontSize", 12); |
| | | LODOP.SET_PRINT_STYLEA(0, "Alignment", 2); |
| | | executePrint(); |
| | | } |
| | | }; |
| | | img.onerror = function() { |
| | | console.error("加载二维码图片失败"); |
| | | // 如果加载失败,只显示文本(供应商名称) |
| | | var displayWidth = qrCodeWidth; |
| | | var displayHeight = qrCodeHeight; |
| | | var displayLeft = 800 - displayWidth - 20; |
| | | LODOP.ADD_PRINT_TEXT(20, displayLeft, displayWidth, displayHeight, venNameStr); |
| | | LODOP.SET_PRINT_STYLEA(0, "FontSize", 12); |
| | | LODOP.SET_PRINT_STYLEA(0, "Alignment", 2); |
| | | executePrint(); |
| | | }; |
| | | img.src = qrCodeUrl; |
| | | } else { |
| | | // 没有供应商,直接执行打印 |
| | | executePrint(); |
| | | } |
| | | } |
| | | LODOP.SET_PRINT_STYLEA(0,"FontSize",20); |
| | | LODOP.SET_PRINT_STYLEA(0,"ItemType",1); |
| | | LODOP.ADD_PRINT_TEXT(69,21,213,25,"供应商:"+depName.value); |
| | | LODOP.SET_PRINT_STYLEA(0,"FontSize",12); |
| | | LODOP.SET_PRINT_STYLEA(0,"ItemType",1); |
| | | LODOP.ADD_PRINT_TEXT(70,268,213,25,"开工日期:"+dateFormat("YYYY-mm-dd", tableSearchParam.value.dateStart)+" 到 "+dateFormat("YYYY-mm-dd", tableSearchParam.value.dateEnd)); |
| | | LODOP.SET_PRINT_STYLEA(0,"FontSize",12); |
| | | LODOP.SET_PRINT_STYLEA(0,"ItemType",1); |
| | | LODOP.ADD_PRINT_TABLE(96,16,2000,960,CreateTable(res.data)); |
| | | LODOP.SET_PRINT_STYLEA(0,"TableHeightScope",1); |
| | | LODOP.SET_PRINT_MODE("FULL_WIDTH_FOR_OVERFLOW",true); |
| | | // 根据izPrint参数决定是打印还是预览 |
| | | // izPrint=="是":直接打印,弹出打印对话框(不弹出预览窗口) |
| | | // izPrint=="否":打印预览,弹出预览窗口 |
| | | if(izPrint=="是") |
| | | { |
| | | LODOP.PRINT(); |
| | | |
| | | // 定义执行打印的函数 |
| | | function executePrint() { |
| | | // 计算表格的起始位置:如果有二维码,表格需要向下移动 |
| | | var tableTop = 96; // 默认表格起始位置 |
| | | var qrCodeTop = 20; // 二维码顶部位置 |
| | | var qrCodeHeight = 130; // 二维码高度 |
| | | var qrCodeBottom = qrCodeTop + qrCodeHeight; // 二维码底部位置:150 |
| | | var spacing = 10; // 二维码和表格之间的间距 |
| | | |
| | | // 如果有二维码,且表格原始位置会被二维码覆盖,则向下移动表格 |
| | | if (venNameStr && tableTop < qrCodeBottom) { |
| | | tableTop = qrCodeBottom + spacing; // 表格从二维码下方开始,留10px间距 |
| | | } |
| | | |
| | | if(izRed==1) |
| | | { |
| | | LODOP.ADD_PRINT_TEXT(28,268,331,36,"委外加工出库单(红字)"); |
| | | } |
| | | else{ |
| | | LODOP.ADD_PRINT_TEXT(28,268,331,36,"委外加工出库单"); |
| | | } |
| | | LODOP.SET_PRINT_STYLEA(0,"FontSize",20); |
| | | LODOP.SET_PRINT_STYLEA(0,"ItemType",1); |
| | | LODOP.ADD_PRINT_TEXT(69,21,213,25,"供应商:"+depName.value); |
| | | LODOP.SET_PRINT_STYLEA(0,"FontSize",12); |
| | | LODOP.SET_PRINT_STYLEA(0,"ItemType",1); |
| | | LODOP.ADD_PRINT_TEXT(70,268,213,25,"开工日期:"+dateFormat("YYYY-mm-dd", tableSearchParam.value.dateStart)+" 到 "+dateFormat("YYYY-mm-dd", tableSearchParam.value.dateEnd)); |
| | | LODOP.SET_PRINT_STYLEA(0,"FontSize",12); |
| | | LODOP.SET_PRINT_STYLEA(0,"ItemType",1); |
| | | LODOP.ADD_PRINT_TABLE(tableTop,16,2000,960,CreateTable(res.data)); |
| | | LODOP.SET_PRINT_STYLEA(0,"TableHeightScope",1); |
| | | LODOP.SET_PRINT_MODE("FULL_WIDTH_FOR_OVERFLOW",true); |
| | | // 根据izPrint参数决定是打印还是预览 |
| | | // izPrint=="是":直接打印,弹出打印对话框(不弹出预览窗口) |
| | | // izPrint=="否":打印预览,弹出预览窗口 |
| | | if(izPrint=="是") |
| | | { |
| | | LODOP.PRINT(); |
| | | } |
| | | else{ |
| | | // 打印预览,弹出预览窗口 |
| | | LODOP.PREVIEW(); |
| | | } |
| | | } |
| | | else{ |
| | | // 打印预览,弹出预览窗口 |
| | | LODOP.PREVIEW(); |
| | | } |
| | | |
| | | // 先添加二维码,然后执行打印 |
| | | addQrCodeToPrint(); |
| | | } else if (res.code === 403) { |
| | | top.location.href = baseUrl + "/"; |
| | | } else { |