From 5837c5bfc1ee9a7251bd0218dedd33e00d55e546 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 17 Jul 2025 15:36:59 +0800
Subject: [PATCH] feat(clothes): 添加订单打印功能

---
 src/main/resources/templates/febs/views/modules/clothesType/orderList.html |  102 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 78 insertions(+), 24 deletions(-)

diff --git a/src/main/resources/templates/febs/views/modules/clothesType/orderList.html b/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
index a498a93..9bbd856 100644
--- a/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
@@ -171,7 +171,7 @@
                     febs.alert.warn('请选择订单');
                     return;
                 }
-                printSelect(data)
+                printSelectData(ids)
             }
 
             if (layEvent === 'deliverGoods') {
@@ -300,7 +300,7 @@
                     febs.alert.warn('请选择待发货的订单');
                     return;
                 }
-                window.location.href = ctx + "admin/order/exportOrderList?ids="+ids;
+                window.location.href = ctx + "admin/clothesType/exportOrderList?ids="+ids;
             }
 
         });
@@ -310,46 +310,100 @@
          * [自定义打印选中行数据]
          * @param  {[type]}  allData [传入选中行]
          */
-        function printSelect(allData) {
+       function printSelectData(allData) {
+           let orderId = allData;
+           console.log(orderId);
+            $.ajax({
+                url: '/admin/clothesType/printOrder/'+orderId,
+                type: "get",
+                contentType: 'application/json',
+                success(res) {
+                    console.log(res);
+                    printSelect(res.data);
+                },
+                error(xhr, status, error) {
+                    console.error("AJAX 请求失败:", error);
+                    alert("请求失败,请重试");
+                }
+            });
+        }
+
+        function printSelect(data) {
             //用于包含内容
             var v = document.createElement("div");
             //页面头部,导入css  ,media="print"表示打印时使用该样式
             var f = ["<head>", "<style>", "div{font-size:8px;}", ".main{width:100%;}",
                 ".main div{width:100%;display:inline-block;}", "</style>", "</head>"
             ].join("");
-            var contentHtml = "";
-            for (let i = 0; i < allData.length; i++) {
-                let data = allData[i]
-                var template =
-                    "<div class='main'>" +
-                    "<table cellspacing=\"0\" width=\"100%\" style=\"border-collapse: separate; border-spacing: 0px;\">" +
-                    "<tr>" +
-                    "<td style='width: 50%;'>" +
-                    "<img src='" + data.img + "' style='width: 100%;'/>" +
-                    "</td>" +
-                    "<td style='width: 50%;'>" +
-                    "<img src='" + data.img + "' style='width: 100%;'/>" +
-                    "</td>" +
-                    "</tr>" +
-                    "</table>" +
-                    "<div style='text-align: center;font-size: 10px;font-weight: bold;margin-bottom: 10px'>订单编号:" + data.orderNo + "</div>" +
-                    "</div>"
+            console.log(data);
+            var template =
+                "<div class='main'>" +
+                "<div style='text-align: center;font-size: 30px;font-weight: bold;margin-bottom: 10px'>订单编号:" + data.orderNo + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>类型:" + data.typeName + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>布料:" + data.clothName + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>编码:" + data.clothCode + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>尺码:" + data.sizeName + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>编码:" + data.sizeCode + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>工艺:" + data.artName + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>编码:" + data.artCode + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>正面图案:" + data.patternName + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>编码:" + data.patternCode + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>文案:" + data.patternText + "</div>" +
+                "<div class='print-images' style='font-size: 30px;font-weight: bold;'>图片:" +
+                    "<img style='width: 200px; height: 200px; max-width: 80%; margin-top: 5px;' src="+ data.patternImage+">" +
+                "</div>" +
 
-                contentHtml += template;
-            }
+                "<div style='font-size: 30px;font-weight: bold;'>反面图案:" + data.locationName + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>编码:" + data.locationCode + "</div>" +
+                "<div style='font-size: 30px;font-weight: bold;'>文案:" + data.locationText + "</div>" +
+                "<div class='print-images' style='font-size: 30px;font-weight: bold;'>图片:" +
+                    "<img style='width: 200px; height: 200px; max-width: 80%; margin-top: 5px;' src="+ data.locationImage+">" +
+                "</div>" +
+                "<div class='print-images' style='font-size: 30px;font-weight: bold;'>正面:" +
+                    "<img style='width: 200px; height: 200px; max-width: 80%; margin-top: 5px;' src="+ data.typeFront+">" +
+                "</div>" +
+                "<div class='print-images' style='font-size: 30px;font-weight: bold;'>反面:" +
+                    "<img style='width: 200px; height: 200px; max-width: 80%; margin-top: 5px;' src="+ data.typeBack+">" +
+                "</div>" +
+                "</div>"
 
-            //contentHtml为已拼凑好的内容
-            $(v).append(contentHtml)
+            v.innerHTML = template;
             //新建窗口
             var h = window.open("打印窗口", "_blank");
             //写入拼凑内容
             h.document.write(f + $(v).prop("outerHTML"));
+            h.document.close();
+            //在新窗口的 document 中查找图片
+            ensureImagesLoaded(h.document, '.print-images img')
+                .then(() => h.print())
+                .catch(() => layer.msg('部分图片加载失败'));
             //调用打印
             h.print();
             //关闭页面
             h.close();
         }
 
+        function ensureImagesLoaded(doc, selector) {
+            var imgs = $(selector, doc); // 👈 在指定文档中查找
+            var promises = [];
+
+            imgs.each(function() {
+                var img = this;
+                var promise = new Promise(function(resolve, reject) {
+                    if (img.complete && img.naturalWidth !== 0) {
+                        resolve();
+                    } else {
+                        $(img).on('load', resolve).on('error', reject);
+                    }
+                });
+                promises.push(promise);
+            });
+
+            return Promise.all(promises);
+        }
+
+
+
         function refundOrder(id) {
             febs.get(ctx + 'admin/clothesType/refundOrder/' + id, null, function () {
                 febs.alert.success('操作成功');

--
Gitblit v1.9.1