Przeglądaj źródła

添加浏览器版的打单功能

lvhao 1 miesiąc temu
rodzic
commit
e9d8594e36

+ 35 - 0
core/CoreApp/controllers/Systemprint.php

@@ -96,6 +96,9 @@ class Systemprint extends Start_Controller {
         {
              $this->_yswaybill();
         }
+		else if($arg == 'mcindex'){
+			$this->_mcindex();
+		}
 		else
 		{
 			 $this->_index();
@@ -563,6 +566,38 @@ class Systemprint extends Start_Controller {
 		}
 		$this->_Template('systemprint',$this->data);
 	}
+
+
+	public function _mcindex()
+	{
+		$post = $this->input->post(NULL, TRUE);
+		if(isset($_SESSION['api']))
+		{
+			$user = $this->user->get_api($_SESSION['api']);
+			$usp = $user;
+		    $fgshop = "";$sid = "";$wid="";$wtype="";
+		    $usersp = explode('|',trim($user['shop'],'|'));
+			$userwh = explode('|',trim($user['warehouse'],'|'));
+			foreach ($usersp as $value) 
+		    {
+				$fgshop .= " shop = ".$value." or";
+				$sid .= " id = ".$value." or";
+			}
+			foreach ($userwh as $value) 
+		    {
+				$wid .= " id = ".$value." or";
+				$wtype .= " type = ".$value." or";
+			}
+		}
+		if(isset($_SESSION['api']))
+		{
+			$wlshop = $this->shop->find_all('1=1 and '.rtrim($sid,'or'));
+			$warehouse = $this->warehouse->find_all('1=1 and '.rtrim($wid,'or'),"*","px asc");
+		    $this->data['wlshop'] = $wlshop;
+		    $this->data['warehouse'] = $warehouse;
+		}
+		$this->_Template('systemprint',$this->data);
+	}
 	/**
 	 * $table_name  订单表名
 	 * $start 		偏移开始坐标

+ 1 - 1
template/erp/fullorder_edit.html

@@ -1217,6 +1217,6 @@ $("#is_jiaji_id").on('change',function(){
 });
 
 </script>
-<script src="{$theme}js/fullorder-addedit.js?v=2025060712311231"></script>
+<script src="{$theme}js/fullorder-addedit.js?v={time()}"></script>
 <script type="text/javascript" src="{$theme}js/time.js"></script>
 {Template footer}

+ 213 - 0
template/erp/js/print_yd.js

@@ -0,0 +1,213 @@
+function sound(data) { //语音 	
+    //LODOP=getLodop();     
+    //LODOP.FORMAT("VOICE:0;100",data);   
+};
+
+function pdffhd(data) {
+    LODOP = getLodop();
+    LODOP.PRINT_INIT("");
+    LODOP.SET_PRINTER_INDEX( $("select[name='printer']").find("option:selected").val());
+    LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT", data['text']['mode'] + "%");
+    for (i = 0; i < data['text']['pdfnum']; i++) {
+        LODOP.ADD_PRINT_PDF(10, 10, "100%", "100%", data['text']['yd']);
+        LODOP.NewPageA();
+    }
+
+
+    let str = "<!DOCTYPE html>" +
+        '<div style="font-size:16px;height: 100%;font-family: "宋体""><div style="width: 100%;padding-bottom: 10px;font-size: 18px;text-align: left;"><b>发货单:' +
+        data['text']['name'] + '</b></div><div style="width: 100%;padding-bottom: 10px;"><b>' + data['text']['express'] + '</b> - <font style="font-size:16px;font-weight:900">' + data['text']['country'] +
+        '</font></div><div style="width: 100%;padding-bottom: 10px;"><b>仓库:</b><b>' + data['text']['warehouse'] +
+        '</b></div><div style="width: 100%;padding-bottom: 10px;"><b>订单号:</b><font>' + data['text']['orderinfo'] +
+        '</font></div><div style="width: 100%;padding-bottom: 10px;"><div><b>订单编号:</b><font style="font-size: 18px;font-weight: bold;"><b>' +
+        data['text']['number'] +
+        '</b></font></div><div style="height:110px"></div><div style="width: 100%;padding-bottom: 10px;"><font>' +
+        data['text']['time'] + '</font>&nbsp;&nbsp;&nbsp;<b>已打印<font>' + data['text']['printnumber'] +
+        '</font>次</b></div></div><div style="width: 100%;padding-bottom: 10px;min-height:80px;"><b>仓库品名:</b><span style="font-size: 20px;padding-right:20px;"><b>' +
+        data['text']['shipremarks'] +
+        '</b></span></div><div style="width: 100%;padding-bottom: 10px;"><strong>总计<font>' + data['text']['ts'] +
+        '</font>条</strong></div>';
+    if (data['text']['is_jiaji'] == 1) {
+        str +=
+            '<div style="width: 100%;padding-bottom: 10px;"><strong style="color:red;font-size: 20px;">加急 !</strong></div>'
+    } else {
+        str += "</div>";
+    }
+    LODOP.ADD_PRINT_HTM(10, "3%", "97%", "100%", str);
+
+    LODOP.ADD_PRINT_BARCODE(165, 20, 325, 85, "128Auto", data['text']['number']);
+    LODOP.SET_PRINT_STYLEA(0, "ShowBarText", 0);
+    // LODOP.ADD_PRINT_BARCODE(5,240,140,140,"QRCode",data['text']['number']);
+    // LODOP.SET_PRINT_STYLEA(0,"ShowBarText",0);
+    LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS", true);
+    if (LODOP.CVERSION) {
+        LODOP.On_Return = function(TaskID, Value) {
+            $("#job").html(Value);
+        };
+        LODOP.PRINT();
+        return;
+    }
+};
+
+function fhd(data) {
+    LODOP = getLodop();
+    LODOP.PRINT_INIT("");
+    LODOP.SET_PRINTER_INDEX($("select[name='printer']").children("option:selected").val());
+    let str = "<!DOCTYPE html>" +
+        '<div style="font-size:16px;height: 100%;font-family: "宋体""><div style="width: 100%;padding-bottom: 10px;font-size: 18px;text-align: left;"><b>发货单:' +
+        data['text']['name'] + '</b></div><div style="width: 100%;padding-bottom: 10px;"><b>' + data['text'][
+            'express'
+        ] + '</b> - <font style="font-size:16px;font-weight:900">' + data['text']['country'] +
+        '</font></div><div style="width: 100%;padding-bottom: 10px;"><b>仓库:</b><b>' + data['text']['warehouse'] +
+        '</b></div><div style="width: 100%;padding-bottom: 10px;"><b>订单号:</b><font>' + data['text']['orderinfo'] +
+        '</font></div><div style="width: 100%;padding-bottom: 10px;"><div><b>订单编号:</b><font style="font-size: 18px;font-weight: bold;"><b>' +
+        data['text']['number'] +
+        '</b></font></div><div style="height:110px"></div><div style="width: 100%;padding-bottom: 10px;"><font>' +
+        data['text']['time'] + '</font>&nbsp;&nbsp;&nbsp;<b>已打印<font>' + data['text']['printnumber'] +
+        '</font>次</b></div></div><div style="width: 100%;padding-bottom: 10px;min-height:80px;"><b>仓库品名:</b><span style="font-size: 20px;padding-right:20px;"><b>' +
+        data['text']['shipremarks'] +
+        '</b></span></div><div style="width: 100%;padding-bottom: 10px;"><strong>总计<font>' + data['text']['ts'] +
+        '</font>条</strong></div>';
+    if (data['text']['is_jiaji'] == 1) {
+        str +=
+            '<div style="width: 100%;padding-bottom: 10px;"><strong style="color:red;font-size: 20px;">加急 !</strong></div>'
+    } else {
+        str += "</div>";
+    }
+    LODOP.ADD_PRINT_HTM(10, "3%", "97%", "100%", str);
+
+
+    LODOP.ADD_PRINT_BARCODE(165, 20, 325, 85, "128Auto", data['text']['number']);
+    LODOP.SET_PRINT_STYLEA(0, "ShowBarText", 0);
+    // LODOP.ADD_PRINT_BARCODE(5,240,140,140,"QRCode",data['text']['number']);
+    // LODOP.SET_PRINT_STYLEA(0,"ShowBarText",0);
+    LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS", true);
+    if (LODOP.CVERSION) {
+        LODOP.On_Return = function(TaskID, Value) {
+            $("#job").html(Value);
+        };
+        LODOP.PRINT();
+        return;
+    }
+};
+
+
+function pdf2fhd(data) { //只打印PDF前两页
+    LODOP = getLodop();
+    LODOP.PRINT_INIT("");
+    LODOP.SET_PRINTER_INDEX($("select[name='printer']").children("option:selected").val());
+
+    let str = "<!DOCTYPE html>" +
+        '<div style="font-size:16px;height: 100%;font-family: "宋体""><div style="width: 100%;padding-bottom: 10px;font-size: 18px;text-align: left;"><b>发货单:' +
+        data['text']['name'] + '</b></div><div style="width: 100%;padding-bottom: 10px;"><b>' + data['text'][
+            'express'
+        ] + '</b> - <font style="font-size:16px;font-weight:900">' + data['text']['country'] +
+        '</font></div><div style="width: 100%;padding-bottom: 10px;"><b>仓库:</b><b>' + data['text']['warehouse'] +
+        '</b></div><div style="width: 100%;padding-bottom: 10px;"><b>订单号:</b><font>' + data['text']['orderinfo'] +
+        '</font></div><div style="width: 100%;padding-bottom: 10px;"><div><b>订单编号:</b><font style="font-size: 18px;font-weight: bold;"><b>' +
+        data['text']['number'] +
+        '</b></font></div><div style="height:110px"></div><div style="width: 100%;padding-bottom: 10px;"><font>' +
+        data['text']['time'] + '</font>&nbsp;&nbsp;&nbsp;<b>已打印<font>' + data['text']['printnumber'] +
+        '</font>次</b></div></div><div style="width: 100%;padding-bottom: 10px;min-height:80px;"><b>仓库品名:</b><span style="font-size: 20px;padding-right:20px;"><b>' +
+        data['text']['shipremarks'] +
+        '</b></span></div><div style="width: 100%;padding-bottom: 10px;"><strong>总计<font>' + data['text']['ts'] +
+        '</font>条</strong></div>';
+    if (data['text']['is_jiaji'] == 1) {
+        str +=
+            '<div style="width: 100%;padding-bottom: 10px;"><strong style="color:red;font-size: 20px;">加急 !</strong></div>'
+    } else {
+        str += "</div>";
+    }
+    LODOP.ADD_PRINT_HTM(10, "3%", "97%", "100%", str);
+
+    LODOP.ADD_PRINT_BARCODE(165, 20, 325, 85, "128Auto", data['text']['number']);
+    LODOP.SET_PRINT_STYLEA(0, "ShowBarText", 0);
+    // LODOP.ADD_PRINT_BARCODE(5,240,140,140,"QRCode",data['text']['number']);
+    // LODOP.SET_PRINT_STYLEA(0,"ShowBarText",0);
+    LODOP.NewPageA();
+    LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT", data['text']['mode'] + "%");
+    for (i = 0; i < data['text']['pdfnum']; i++) {
+        LODOP.ADD_PRINT_PDF(10, 10, "100%", "100%", data['text']['yd']);
+    }
+    LODOP.SET_PRINT_MODE("PRINT_START_PAGE", 1); //设置从第1页开始打印
+    LODOP.SET_PRINT_MODE("PRINT_END_PAGE", 3); //设置从第2页结束打印
+    LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS", true);
+    if (LODOP.CVERSION) {
+        LODOP.On_Return = function(TaskID, Value) {
+            $("#job").html(Value);
+        };
+        LODOP.PRINT();
+        return;
+    }
+};
+
+//pdf为竖版的条形码
+function sbpdffhd(data) {
+    LODOP = getLodop();
+    LODOP.PRINT_INIT("");
+    LODOP.SET_PRINTER_INDEX($("select[name='printer']").children("option:selected").val());
+    LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT", data['text']['mode'] + "%");
+    for (i = 0; i < data['text']['pdfnum']; i++) {
+        LODOP.ADD_PRINT_PDF('30mm', '30mm', "100%", "100%", data['text']['yd']);
+        LODOP.NewPageA();
+    }
+
+
+    let str = "<!DOCTYPE html>" +
+        '<div style="font-size:16px;height: 100%;font-family: "宋体""><div style="width: 100%;padding-bottom: 10px;font-size: 18px;text-align: left;"><b>发货单:' +
+        data['text']['name'] + '</b></div><div style="width: 100%;padding-bottom: 10px;"><b>' + data['text'][
+            'express'
+        ] + '</b> - <font style="font-size:16px;font-weight:900">' + data['text']['country'] +
+        '</font></div><div style="width: 100%;padding-bottom: 10px;"><b>仓库:</b><b>' + data['text']['warehouse'] +
+        '</b></div><div style="width: 100%;padding-bottom: 10px;"><b>订单号:</b><font>' + data['text']['orderinfo'] +
+        '</font></div><div style="width: 100%;padding-bottom: 10px;"><div><b>订单编号:</b><font style="font-size: 18px;font-weight: bold;"><b>' +
+        data['text']['number'] +
+        '</b></font></div><div style="height:110px"></div><div style="width: 100%;padding-bottom: 10px;"><font>' +
+        data['text']['time'] + '</font>&nbsp;&nbsp;&nbsp;<b>已打印<font>' + data['text']['printnumber'] +
+        '</font>次</b></div></div><div style="width: 100%;padding-bottom: 10px;min-height:80px;"><b>仓库品名:</b><span style="font-size: 20px;padding-right:20px;"><b>' +
+        data['text']['shipremarks'] +
+        '</b></span></div><div style="width: 100%;padding-bottom: 10px;"><strong>总计<font>' + data['text']['ts'] +
+        '</font>条</strong></div>';
+    if (data['text']['is_jiaji'] == 1) {
+        str +=
+            '<div style="width: 100%;padding-bottom: 10px;"><strong style="color:red;font-size: 20px;">加急 !</strong></div>'
+    } else {
+        str += "</div>";
+    }
+    LODOP.ADD_PRINT_HTM(10, "3%", "97%", "100%", str);
+
+    LODOP.ADD_PRINT_BARCODE(165, 20, 325, 85, "128Auto", data['text']['number']);
+    LODOP.SET_PRINT_STYLEA(0, "ShowBarText", 0);
+    // LODOP.ADD_PRINT_BARCODE(5,240,140,140,"QRCode",data['text']['number']);
+    // LODOP.SET_PRINT_STYLEA(0,"ShowBarText",0);
+    LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS", true);
+    if (LODOP.CVERSION) {
+        LODOP.On_Return = function(TaskID, Value) {
+            $("#job").html(Value);
+        };
+        LODOP.PRINT();
+        return;
+    }
+};
+
+
+
+
+
+function getStatusValue() {
+    LODOP = getLodop();
+    if (LODOP.CVERSION) LODOP.On_Return = function(TaskID, Value) {
+       $("#site").html(Value);
+    };
+    var strResult = LODOP.GET_VALUE('PRINT_STATUS_EXIST', $("#job").html());
+    if (!LODOP.CVERSION) $("#site").html(strResult);
+};
+
+function site() {
+    LODOP = getLodop();
+    if (!LODOP) {
+        return 2;
+    } else {
+        return 1;
+    }
+};

+ 188 - 0
template/erp/lodop/LodopFuncs.js

@@ -0,0 +1,188 @@
+//==本JS是加载Lodop插件或Web打印服务CLodop/Lodop7的综合示例,可直接使用,建议理解后融入自己程序==
+
+//用双端口加载主JS文件Lodop.js(或CLodopfuncs.js兼容老版本)以防其中某端口被占:
+var MainJS ="CLodopfuncs.js",
+    URL_WS1   = "ws://localhost:8000/"+MainJS,                //ws用8000/18000
+    URL_WS2   = "ws://localhost:18000/"+MainJS,
+    URL_HTTP1 = "http://localhost:8000/"+MainJS,              //http用8000/18000
+    URL_HTTP2 = "http://localhost:18000/"+MainJS,
+    URL_HTTP3 = "https://localhost.lodop.net:8443/"+MainJS;   //https用8000/8443
+
+var CreatedOKLodopObject, CLodopIsLocal, LoadJsState;
+
+//==判断是否需要CLodop(那些不支持插件的浏览器):==
+function needCLodop() {
+    try {
+        var ua = navigator.userAgent;
+        if (ua.match(/Windows\sPhone/i) ||
+            ua.match(/iPhone|iPod|iPad/i) ||
+            ua.match(/Android/i) ||
+            ua.match(/Edge\D?\d+/i))
+            return true;
+        var verTrident = ua.match(/Trident\D?\d+/i);
+        var verIE = ua.match(/MSIE\D?\d+/i);
+        var verOPR = ua.match(/OPR\D?\d+/i);
+        var verFF = ua.match(/Firefox\D?\d+/i);
+        var x64 = ua.match(/x64/i);
+        if ((!verTrident) && (!verIE) && (x64)) return true;
+        else if (verFF) {
+            verFF = verFF[0].match(/\d+/);
+            if ((verFF[0] >= 41) || (x64)) return true;
+        } else if (verOPR) {
+            verOPR = verOPR[0].match(/\d+/);
+            if (verOPR[0] >= 32) return true;
+        } else if ((!verTrident) && (!verIE)) {
+            var verChrome = ua.match(/Chrome\D?\d+/i);
+            if (verChrome) {
+                verChrome = verChrome[0].match(/\d+/);
+                if (verChrome[0] >= 41) return true;
+            }
+        }
+        return false;
+    } catch (err) {
+        return true;
+    }
+}
+
+//==检查加载成功与否,如没成功则用http(s)再试==
+//==低版本CLODOP6.561/Lodop7.043及前)用本方法==
+function checkOrTryHttp() {
+  if (window.CLODOP2015_7028) {
+     LoadJsState = "complete";
+     return true;
+  }
+  if (LoadJsState == "loadingB" || LoadJsState == "complete") return;
+  LoadJsState = "loadingB";
+  var head = document.head || document.getElementsByTagName("head")[0] || document.documentElement;
+  var JS1 = document.createElement("script")
+     ,JS2 = document.createElement("script")
+     ,JS3 = document.createElement("script");
+  JS1.src = URL_HTTP1;
+  JS2.src = URL_HTTP2;
+  JS3.src = URL_HTTP3;
+  JS1.onload = JS2.onload = JS3.onload = JS2.onerror = JS3.onerror=function(){LoadJsState = "complete";}
+  JS1.onerror = function(e) {
+      if (window.location.protocol !== 'https:')
+          head.insertBefore(JS2, head.firstChild); else
+          head.insertBefore(JS3, head.firstChild);
+  }
+  head.insertBefore(JS1,head.firstChild);
+}
+
+//==加载Lodop对象的主过程:==
+(function loadCLodop(){
+  if (!needCLodop()) return;
+  CLodopIsLocal = !!((URL_WS1 + URL_WS2).match(/\/\/localho|\/\/127.0.0./i));
+  LoadJsState = "loadingA";
+  if (!window.WebSocket && window.MozWebSocket) window.WebSocket=window.MozWebSocket;
+  //ws方式速度快(小于200ms)且可避免CORS错误,但要求Lodop版本足够新:
+  try {
+    var WSK1=new WebSocket(URL_WS1);
+    WSK1.onopen = function(e) { setTimeout("checkOrTryHttp();",200); }
+    WSK1.onmessage = function(e) {if (!window.CLODOP2015_7028) eval(e.data);}
+    WSK1.onerror = function(e) {
+         var WSK2=new WebSocket(URL_WS2);
+         WSK2.onopen = function(e) {setTimeout("checkOrTryHttp();",200);}
+         WSK2.onmessage = function(e) {if (!window.CLODOP2015_7028) eval(e.data);}
+         WSK2.onerror= function(e) {checkOrTryHttp();}
+    }
+  } catch(e){
+    checkOrTryHttp();
+  }
+})();
+
+//==获取LODOP对象主过程,判断是否安装、需否升级:==
+function getLodop(oOBJECT, oEMBED) {
+    var strFontTag = "<br><font color='#FF00FF'>打印控件";
+    var strLodopInstall = strFontTag + "未安装!点击这里<a href='install_lodop32.exe' target='_self'>执行安装</a>";
+    var strLodopUpdate = strFontTag + "需要升级!点击这里<a href='install_lodop32.exe' target='_self'>执行升级</a>";
+    var strLodop64Install = strFontTag + "未安装!点击这里<a href='install_lodop64.exe' target='_self'>执行安装</a>";
+    var strLodop64Update = strFontTag + "需要升级!点击这里<a href='install_lodop64.exe' target='_self'>执行升级</a>";
+    var strCLodopInstallA = "<br><font color='#FF00FF'>Web打印服务CLodop未安装启动,点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>下载执行安装</a>";
+    var strCLodopInstallB = "<br>(若此前已安装过,可<a href='CLodop.protocol:setup' target='_self'>点这里直接再次启动</a>)";
+    var strCLodopUpdate = "<br><font color='#FF00FF'>Web打印服务CLodop需升级!点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>";
+    var strLodop7FontTag = "<br><font color='#FF00FF'>Web打印服务Lodop7";
+    var strLodop7HrefX86 = "点击这里<a href='Lodop7_Linux_X86_64.tar.gz' target='_self'>下载安装</a>(下载后解压,点击lodop文件开始执行)";
+    var strLodop7HrefARM = "点击这里<a href='Lodop7_Linux_ARM64.tar.gz'  target='_self'>下载安装</a>(下载后解压,点击lodop文件开始执行)";
+    var strLodop7Install_X86 = strLodop7FontTag + "未安装启动," + strLodop7HrefX86;
+    var strLodop7Install_ARM = strLodop7FontTag + "未安装启动," + strLodop7HrefARM;
+    var strLodop7Update_X86 = strLodop7FontTag + "需升级," + strLodop7HrefX86;
+    var strLodop7Update_ARM = strLodop7FontTag + "需升级," + strLodop7HrefARM;
+    var strInstallOK = ",成功后请刷新本页面或重启浏览器。</font>";
+    var LODOP;
+    try {
+        var isWinIE = (/MSIE/i.test(navigator.userAgent)) || (/Trident/i.test(navigator.userAgent));
+        var isWinIE64 = isWinIE && (/x64/i.test(navigator.userAgent));
+        var isLinuxX86 = (/Linux/i.test(navigator.platform)) && (/x86/i.test(navigator.platform));
+        var isLinuxARM = (/Linux/i.test(navigator.platform)) && (/aarch/i.test(navigator.platform));
+
+        if (needCLodop() || isLinuxX86 || isLinuxARM) {
+            try {
+                LODOP = window.CLODOP2015_7028;
+            } catch (err) {}
+            if (!LODOP && LoadJsState !== "complete") {
+                if (LoadJsState == "loading")
+                    alert("网页还没下载完毕,请稍等一下再操作."); else
+                    alert("未曾加载Lodop主JS文件,请先调用loadCLodop过程.");
+                return;
+            }
+            var strAlertMessage;
+            if (!LODOP) {
+                if (isLinuxX86)
+                    strAlertMessage = strLodop7Install_X86;
+                else if (isLinuxARM)
+                    strAlertMessage = strLodop7Install_ARM;
+                else
+                    strAlertMessage = strCLodopInstallA + (CLodopIsLocal ? strCLodopInstallB : "");
+                document.body.innerHTML = strAlertMessage + strInstallOK + document.body.innerHTML;
+                return;
+            } else {
+                if (isLinuxX86 && LODOP.CVERSION < "7.0.4.3")
+                    strAlertMessage = strLodop7Update_X86;
+                else if (isLinuxARM && LODOP.CVERSION < "7.0.4.3")
+                    strAlertMessage = strLodop7Update_ARM;
+                else if (CLODOP.CVERSION < "6.5.6.5")
+                    strAlertMessage = strCLodopUpdate;
+
+                if (strAlertMessage)
+                    document.body.innerHTML = strAlertMessage + strInstallOK + document.body.innerHTML;
+            }
+        } else {
+            //==如果页面有Lodop插件就直接使用,否则新建:==
+            if (oOBJECT || oEMBED) {
+                if (isWinIE)
+                    LODOP = oOBJECT;
+                else
+                    LODOP = oEMBED;
+            } else if (!CreatedOKLodopObject) {
+                LODOP = document.createElement("object");
+                LODOP.setAttribute("width", 0);
+                LODOP.setAttribute("height", 0);
+                LODOP.setAttribute("style", "position:absolute;left:0px;top:-100px;width:0px;height:0px;");
+                if (isWinIE)
+                    LODOP.setAttribute("classid", "clsid:2105C259-1E0C-4534-8141-A753534CB4CA");
+                else
+                    LODOP.setAttribute("type", "application/x-print-lodop");
+                document.documentElement.appendChild(LODOP);
+                CreatedOKLodopObject = LODOP;
+            } else
+                LODOP = CreatedOKLodopObject;
+            //==Lodop插件未安装时提示下载地址:==
+            if ((!LODOP) || (!LODOP.VERSION)) {
+                document.body.innerHTML = (isWinIE64 ? strLodop64Install : strLodopInstall) + strInstallOK + document.body.innerHTML;
+                return LODOP;
+            }
+            if (LODOP.VERSION < "6.2.2.6") {
+                document.body.innerHTML = (isWinIE64 ? strLodop64Update : strLodopUpdate) + strInstallOK + document.body.innerHTML;
+            }
+        }
+        //===如下空白位置适合调用统一功能(如注册语句、语言选择等):=======================
+LODOP.SET_LICENSES("","087F041B1E21FCEA8E00DB4962707C8890B","23580B189D96F33252722697A57AC00506B","");
+
+        //===============================================================================
+        return LODOP;
+    } catch (err) {
+        alert("getLodop出错:" + err);
+    }
+}
+

+ 0 - 0
template/erp/lodop/dolodop.js


+ 323 - 0
template/erp/systemprintmc.html

@@ -0,0 +1,323 @@
+{Template header}
+<body>
+<div class="warp">
+<div class="fixed">
+<ul class="search">
+<li>订单号:<input value="" name="orderinfo" type="text"></li>
+<li>编号:<input value="" name="number" type="text"></li>
+<li>运单号:<input value="" name="waybill" type="text"></li>
+<li>打印状态:<select name="print" class="select">
+<option value="2">未打印</option>
+<option value="3">已打印</option>
+</select></li>
+<li>快递公司:<select name="express" class="select">
+<option value="">请选择</option>
+{loop express(100) as $val}
+<option value="{$val['id']}">{$val['servicename']}</option>
+{/loop}</select>
+</li>
+<li>
+店铺名称:<select name="shop" class="select">
+<option value="">请选择</option>
+{loop usershop() as $val}
+<option value="{$val['id']}">{$val['shopname']}</option>
+{/loop}</select>
+</li>
+<li>
+仓库名称:<select name="type" class="select">
+<option value="">请选择</option>
+{loop $warehouse as $val}
+<option value="{$val['id']}">{$val['title']}</option>
+{/loop}</select>
+</li>
+<li>
+    是否加急:<select name="is_jiaji" class="select">
+    <option value="-1">请选择</option>
+    <option value="1">是</option>
+    <option value="0">否</option>
+    </select>
+    </li>
+<li>
+是否现货:<select name="sfxh" class="select">
+<option value="">请选择</option>
+<option value="1">有现货</option>
+<option value="0">无现货</option>
+</select>
+</li>
+<li>
+    产品分类:<select name="ckfl" class="select">
+    <option value="">请选择</option>
+    {loop typeclass(37,100) as $val}
+    <option value="{$val['id']}">{$val['title']}</option>
+    {/loop}</select>
+    </li>
+<li>颜色:<select name="color" class="select">
+    <option value="">请选择</option>{loop typeclassyc(8) as $val}
+    <option value="{$val['id']}">{$val['title']} - {$val['zh']}</option>{/loop}</select></li>
+    <li>曲度:<select name="lowe" class="select">
+    <option value="">请选择</option>{loop typeclassyc(15) as $val}
+    <option value="{$val['id']}">{$val['title']} - {$val['zh']}</option>{/loop}</select></li>
+<li>搜索品名:<input value="" name="so" type="text" style="width:260px"></li>
+
+<li>打印时间:<input id="timetk" value="{date('Y-m-d',time()-30*24*3600)} 19:00" name="timetk" type="text" onClick="laydate({istime: true,format:'YYYY-MM-DD hh:mm'})" readonly>
+至&nbsp;&nbsp;&nbsp;&nbsp; <input id="timetj" value="{date('Y-m-d',time())} 19:00" name="timetj" type="text" onClick="laydate({istime: true,format:'YYYY-MM-DD hh:mm'})" readonly></li>
+<li><span>确 定</span></li>
+</ul>
+<div class="control zjcz">
+<div class="tabprint">
+快递面单:<select name="printer" class="select" style="width:220px;">
+<option value="">选择打印机</option>
+</select>
+发票:<select name="fp_printer" class="select" style="width:220px;">
+    <option value="">选择打印机</option>
+    </select>
+</div>
+<a href="javascript:void(0);" class="printing">打 印</a>
+<a href="javascript:void(0);" class="exceldy">导出Excel</a>
+</div>
+<table class="datatitle data" border="0" style="border-collapse:collapse;">
+<tr>
+<td><label onClick="swapCheck()"><input name="checkbox" type="checkbox" class="regular-checkbox"></label></td>
+<td>店铺名称</td>
+<td>订单号</td>
+<td>编号</td>
+<td>快递公司</td>
+<td>运单号</td>
+<td>状态</td>
+<td>类型</td>
+<td>次数</td>
+<td>打印时间</td>
+<td>仓库品名</td>
+</tr>
+</table>
+</div>
+<table class="datatext data" border="0" style="border-collapse:collapse;">
+</table>
+<div class="bomf"></div>
+</div>
+<div class="print none"></div>
+<div class="ts"><p class="tsn"></p></div>
+<div class="systemwindow">
+<div>
+<p>是否确定删除所选信息?</p>
+<p><font class="button">确 定</font><font class="esc">取 消</font></p>
+</div>
+</div>
+<div class="tyrows"><div><p></p><p></p></div></div>
+<div class="list"><div><p>操作配置</p><ul class="fj"></ul><em></em></div></div>
+<span id="job" class="none"></span>
+<span id="site" class="none"></span>
+<script>
+var dataurl = "/systemprint/";var fdataurl = "/systemprint/";
+var sysprint = 1;
+var customon = 1;
+function custom(){
+$(".data tr").each(function() {
+$(this).find('td:eq(0)').css("width","1%");
+$(this).find('td:eq(1)').css("width","9%");
+$(this).find('td:eq(2)').css("width","9%");
+$(this).find('td:eq(3)').css("width","13%");
+$(this).find('td:eq(4)').css("width","9%");
+$(this).find('td:eq(5)').css("width","9%");
+$(this).find('td:eq(6)').css("width","5%");
+$(this).find('td:eq(7)').css("width","4%");
+$(this).find('td:eq(8)').css("width","5%");
+$(this).find('td:eq(9)').css("width","9%");
+$(this).find('td:eq(10)').css("width","27%");
+$(this).find('td:eq(10)').css("font-size","12px");
+});}
+
+
+</script>
+<script type="text/javascript" src="{$theme}js/laydate.js"></script>
+
+<!-- 在浏览器端重写打印机 -->
+<script type="text/javascript" src="{$theme}lodop/LodopFuncs.js"></script>
+<script type="text/javascript" src="{$theme}lodop/dolodop.js"></script>
+<script type="text/javascript" src="{$theme}js/jquery-barcode.min.js"></script>
+<script type="text/javascript" src="{$theme}js/print_yd.js?{time()}"></script>
+<script>
+//获取打印机列表
+let lodop;
+let printers = [];//打印机列表
+//获取打印机列表
+function getPrinterList(){
+    lodop=getLodop();
+    var result = lodop.GET_PRINTER_COUNT(); // 获取打印机数量
+    let print_str = "";
+    let print_name = "";
+    for (var i = 1; i <= result; i++) {
+        print_name = lodop.GET_PRINTER_NAME(i)
+        printers.push(print_name); // 获取每个打印机的名称
+        print_str += "<option value='"+i+"'>"+print_name+"</option>"
+    }
+    if(printers.length <= 0){
+        alert("请到检查打印机是否连接正确")
+    }
+    
+    $("select[name='printer']").append(print_str)
+    $("select[name=fp_printer]").append(print_str)
+}
+
+setTimeout(() => {
+    getPrinterList()
+}, 1000);
+
+
+/*  批量打印提示 */
+$(".printing").click(function() {
+    var a = "";
+    $(".datatext input[name='check']:checked").each(function() {
+        a = a + $(this).val() + ",";
+    });
+    if (a) {
+        if ($("select[name='printer']").children("option:selected").val() == "") {
+            $(".ts p").html("请选择打印机!");
+            $(".ts").show();
+            setTimeout('$(".ts").fadeOut()', 1000);
+        } else {
+            $(".systemwindow div p:eq(0)").text("是否确认批量打印所选内容?");
+            $(".systemwindow div p:eq(1)").html("<p><font id='printingon'>确 定</font><font class='esc'>取 消</font></p>");
+            $(".systemwindow").show();
+        }
+    } else {
+        $(".ts p").html("请勾选需要打印的内容");
+        $(".ts").show();
+        setTimeout('$(".ts").fadeOut()', 1000);
+    }
+});
+/*  批量打印开始 */
+$(".systemwindow").on('click', "#printingon", function() {
+    $(".systemwindow").hide();
+    $(".systemwindow div p:eq(0)").html("<i class='fa fa-2x fa-cog fa-spin'></i> &nbsp; 正在处理打印信息,请稍后...");
+    $(".systemwindow div p:eq(1)").html("");
+    $(".systemwindow").show();
+
+    var a = "";
+    var i = 0;
+    $(".datatext input[name='check']:checked").each(function() {
+        a = a + $(this).val() + ',';
+        i++;
+    });
+   
+	var tf = $("select[name='print']").children("option:selected").val();
+    ajax(i - 1, a , tf);
+});
+
+function ajax(num, list, tf) {
+    $.ajax({
+        url: "/systemprint/printing/",
+        data: "tf=" + tf + "&s=" + list + "&n=" + num,
+        type: "POST",
+        dataType: "json",
+        timeout: 60001,
+        success: function(c) {
+            if (c.success) {
+                if (c.rows['type'] == 1) {
+                    pdffhd(c.rows);
+                } else if (c.rows['type'] == 2) {
+                    fhd(c.rows);
+                }
+				else if (c.rows['type'] == 4) {
+                   thd(c.rows);
+                }
+				 else if (c.rows['type'] == 5) {
+                   pdf2fhd(c.rows);
+                }else if (c.rows['type'] == 7) {
+                    //alert("获取同时操作以2部打印机的数据"+JSON.stringify(c))
+                    //同时两台打印机 一台打印快递单   一台打打印发票
+                   pdffhd(c.rows);
+                    
+                   fppdf(c.rows);
+                }else if (c.rows['type'] == 8) {
+                    //负责打印竖版
+                  sbpdffhd(c.rows);
+                }
+                
+                if (c.rows['n'] > -1) {
+                    //ajax(c.rows['n'],c.rows['data']);
+                    site(c.rows['n'], c.rows['data'], c.rows['text']['number'], 1, 0);
+                } else {
+                    if (c.rows['type'] == 3) {
+                       sound("有错误订单")
+                        $(".systemwindow div p:eq(0)").html(c.rows['text']['number'] + "资料错误未成功打印,已移交给店员处理");
+                        $(".systemwindow div p:eq(1)").html("<font class='printok'>确 定</font>");
+                        $(".systemwindow").show();
+                    } else {
+                        site(1, 1, c.rows['text']['number'], 0, 0);
+                    }
+
+                }
+            } else {
+                $(".systemwindow").hide();
+                layx.alert('错误', c.msg, function(id, button) {
+                    $(".search span").click();
+                }, { dialogIcon: 'error' });
+            }
+        },
+        error: function(textStatus) {
+            sound("错误,请求数据超时!请重试")
+            $(".systemwindow").hide();
+            layx.alert('错误', '请求数据超时!请重试', function(id, button) {
+                $(".search span").click();
+            }, { dialogIcon: 'error' });
+        },
+    });
+}
+
+
+function site(num, list, number, data, i) {
+    var jobsite = $("#site").html();
+    console.log(jobsite);
+    if (jobsite == '0') {
+        $("#job").html("");
+        $("#site").html("");
+        if (data == '1') {
+			var tf = $("select[name='print']").children("option:selected").val();
+            ajax(num, list, tf);
+            return;
+        } else if (data == '2') {
+            $("#music_print_ok")[0].play();
+            $(".tyrows").hide();
+            $(".systemwindow").hide();
+            $("#music_d")[0].play();
+            $(".systemwindow div p:eq(0)").html('运单打印完成,请更换为新运单后再次操作出库');
+            $(".systemwindow div p:eq(1)").html("<font class='wcsj'>确 定</font>");
+            $(".systemwindow").show();
+            $("#orderinfo").val("");
+            $("#orderinfo").focus();
+        } else {
+            $(".systemwindow div p:eq(0)").html("打印完成!");
+            $(".systemwindow div p:eq(1)").html("<font class='printok'>确 定</font>");
+            $(".systemwindow").show();
+            return;
+        }
+    } else {
+        if (i < '71') {
+            if ($("#job").html() != '') {
+                getStatusValue();
+            }
+            setTimeout(function() {
+                site(num, list, number, data, i + 1);
+            }, 1500);
+            return;
+        } else {
+            $(".systemwindow div p:eq(0)").html("订单:" + number + " 打印失败!系统已停止打印,请检查打印机!如未出此单,请再次打印");
+            $(".systemwindow div p:eq(1)").html("<font class='printok'>确 定</font>");
+            $(".systemwindow").show();
+            $("#job").html("");
+            $("#site").html("");
+            $(".tyrowsout").hide();
+            $("#orderinfo").val("");
+            $("#orderinfo").focus();
+            return;
+        }
+    }
+}
+$(".systemwindow").on('click', ".printok", function() {
+    $(".search span").click();
+    $(".systemwindow").hide();
+});
+</script>
+
+{Template footer}