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&param=" + 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