From 3c824a50b4894545ecf6ea57b5889444fe77c11c Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期四, 29 一月 2026 15:45:38 +0800
Subject: [PATCH] 二维码打印——委外
---
src/main/webapp/views/erpMaterialwwout/materialwwout.html | 150 +++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 124 insertions(+), 26 deletions(-)
diff --git a/src/main/webapp/views/erpMaterialwwout/materialwwout.html b/src/main/webapp/views/erpMaterialwwout/materialwwout.html
index 3093a79..c9a7be7 100644
--- a/src/main/webapp/views/erpMaterialwwout/materialwwout.html
+++ b/src/main/webapp/views/erpMaterialwwout/materialwwout.html
@@ -622,35 +622,133 @@
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) {
+ // 鍥哄畾浜岀淮鐮佸昂瀵革紝淇濇寔姝f柟褰㈡瘮渚嬶紝閬垮厤鎸ゅ崰鎵撳嵃鏂囨湰鍜岃鎷夐暱
+ var qrCodeWidth = 130; // 鍥哄畾瀹藉害130px
+ var qrCodeHeight = 130; // 鍥哄畾楂樺害130px锛屼繚鎸佹鏂瑰舰姣斾緥
+ var qrCodeUrl = baseUrl + "/file/barcode/qrcode/auth?type=2¶m=" + encodeURIComponent(venNameStr) + "&width=" + qrCodeWidth + "&height=" + qrCodeHeight;
+
+ // 鍒涘缓涓�涓复鏃秈mg鍏冪礌鍔犺浇鍥剧墖锛岀劧鍚庤浆鎹负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娣诲姞鍥剧墖锛屼娇鐢╞ase64鏍煎紡
+ // ADD_PRINT_IMAGE鍙傛暟锛歍op, Left, Width, Height, ImageURL鎴朓mageData
+ // 浜岀淮鐮佷綅缃細鍙充笂瑙掞紝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澶辫触锛屼娇鐢℉TML鏂瑰紡
+ 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=="鏄�"锛氱洿鎺ユ墦鍗帮紝寮瑰嚭鎵撳嵃瀵硅瘽妗嗭紙涓嶅脊鍑洪瑙堢獥鍙o級
- // 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=="鏄�"锛氱洿鎺ユ墦鍗帮紝寮瑰嚭鎵撳嵃瀵硅瘽妗嗭紙涓嶅脊鍑洪瑙堢獥鍙o級
+ // izPrint=="鍚�"锛氭墦鍗伴瑙堬紝寮瑰嚭棰勮绐楀彛
+ if(izPrint=="鏄�")
+ {
+ LODOP.PRINT();
+ }
+ else{
+ // 鎵撳嵃棰勮锛屽脊鍑洪瑙堢獥鍙�
+ LODOP.PREVIEW();
+ }
}
- else{
- // 鎵撳嵃棰勮锛屽脊鍑洪瑙堢獥鍙�
- LODOP.PREVIEW();
- }
+
+ // 鍏堟坊鍔犱簩缁寸爜锛岀劧鍚庢墽琛屾墦鍗�
+ addQrCodeToPrint();
} else if (res.code === 403) {
top.location.href = baseUrl + "/";
} else {
--
Gitblit v1.9.1