var printPageUrl = ""; var billOrderList = []; var IsPrintOrderList = []; var orderCount = 0; var errorMsg = ""; function doConnect() { socket = new WebSocket('ws://127.0.0.1:9113');//菜鸟ws://127.0.0.1:13528, 13888抖音打印组件, //拼多多打印组件ws://127.0.0.1:5000;wss://127.0.0.1:18653 //京东 ws为9113;wss为9114 // 打开Socket socket.onopen = function (event) { // 监听消息 socket.onmessage = function (event) { console.log('Client received a message', event); var response = JSON.parse(event.data); if (response.code == 6) { getPrintersHandler(response);//处理打印机列表 } else if (response.cmd == 'setPrinterConfig') { printConfigHandler(response); } }; // 监听Socket的关闭 socket.onclose = function (event) { service_status.text('打印服务状态:未连接'); isConnected = false; console.log('Client notified socket has closed', event); }; }; } function doGetPrinters() { var request = getRequestObject("GET_Printers"); socket.send(JSON.stringify(request)); } function doSetPrintConfig(pName) { var request = getRequestObject("setPrinterConfig"); request.printer = {}; request.printer.name = pName; request.printer.needBottomLogo = false; request.printer.autoOrientation = false; request.printer.needTopLogo = false; request.printer.orientation = 0;//纵向 //request.printer.horizontalOffset = 0.2; //request.printer.verticalOffset = 0.3; request.printer.autoPageSize = false; //request.printer.paperSize.width = 55; //request.printer.paperSize.height = 95; request.printer.paperSize = {}; request.printer.paperSize.width = 75; request.printer.paperSize.height = 128; request.printer.orientation = 0; request.printer.autoOrientation = true; socket.send(JSON.stringify(request)); } function printConfigHandler(res) { console.log("xxxxx", res); } /*** * * 获取请求的UUID,指定长度和进制,如 * getUUID(8, 2) //"01001010" 8 character (base=2) * getUUID(8, 10) // "47473046" 8 character ID (base=10) * getUUID(8, 16) // "098F4D35"。 8 character ID (base=16) * */ function getUUID(len, radix) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var uuid = [], i; radix = radix || chars.length; if (len) { for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]; } else { var r; uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random() * 16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } return uuid.join(''); } /*** * 构造request对象 */ function getRequestObject(cmd) { var request = new Object(); request.key = getUUID(8, 16); request.version = "2"; request.orderType = cmd; return request; } /*** * 获取自定义区数据以及模板URL * waybillNO 电子面单号 */ function getCustomAreaData(waybillNO) { //获取waybill对应的自定义区的JSON object,此处的ajaxGet函数是伪代码 var jsonObject = ajaxGet(waybillNO); var ret = new Object(); ret.templateURL = jsonObject.content.templateURL; ret.data = jsonObject.content.data; return ret; } /*** * 获取电子面单Json 数据 * waybillNO 电子面单号 */ function getWaybillJson(waybillNO) { //获取waybill对应的json object,此处的ajaxGet函数是伪代码 var jsonObject = ajaxGet(waybillNO); return jsonObject; } /** * 弹窗模式配置打印机 * */ //var request = getRequestObject("printerConfig"); //webSocket.send(JSON.stringify(request)); /** * 打印电子面单 * printer 指定要使用那台打印机 * waybillArray 要打印的电子面单的数组 */ function doPrint(data, sellerMemo) { var nJsonData = JSON.parse(data); var docuData = nJsonData.waybillCloudPrintResponseList[0]; var printStr = docuData.printData; printStr = printStr.replace(/\\/g, ""); var printData = JSON.parse(printStr); var request = getRequestObject("PRINT"); request.task = new Object(); request.task.taskID = getUUID(8, 10); request.task.preview = false; request.task.printer = mini.get("txtBillPrinter_CN").getText(); var documents = new Array(); var doc = new Object(); doc.documentID = docuData.waybillCode; var content = new Array(); var obj = {}; obj.templateURL = mini.get("txtBillModel_CN").getValue(); var selfData = {}; selfData.recipient = printData.data.recipient; selfData.routingInfo = printData.data.routingInfo; selfData.sender = printData.data.sender; selfData.shippingOption = printData.data.recipient.shippingOption; selfData.waybillCode = docuData.waybillCode; selfData.packageInfo = printData.data.packageInfo; //selfData.item_name = "我是你要的商品芭比娃娃。。。"; obj.data = selfData content.push(obj); var Obj2 = {}; Obj2.data = {}; Obj2.data.value = ""; //Obj2.templateURL = "http://cloudprint.cainiao.com/template/customArea/440439"; Obj2.templateURL = printPageUrl + "/waybillPrintPage.aspx?value=" + sellerMemo; content.push(Obj2); doc.contents = content; documents.push(doc); request.task.documents = documents; socket.send(JSON.stringify(request)); } function doPrintSF(iData, sellerMemo) { var mainDataStr = iData.data; mainDataStr = mainDataStr.replace(/\\/g, ""); //mainDataStr = mainDataStr.replace(/n/g, ""); var mainData = JSON.parse(mainDataStr); var docData = mainData.data[0] var request = getRequestObject("PRINT"); request.task = new Object(); request.task.taskID = getUUID(8, 10); request.task.preview = false; request.task.printer = mini.get("txtBillPrinter").getText(); var documents = new Array(); var doc = new Object(); doc.documentID = docData.waybillCode; var content = new Array(); var obj = {}; //obj.templateURL = docData.templateURL; //var selfData = {}; //selfData.recipient = docData.printData.receiverInfo; ////selfData.routingInfo = //selfData.sender = docData.printData.deliverInfo; ////selfData.shippingOption = deliverInfo; //selfData.waybillCode = docData.waybillCode; //selfData.packageInfo = printData.data.packageInfo; //selfData.item_name = "我是你要的商品芭比娃娃。。。"; obj.templateURL = docData.templateURL; obj.data = docData.printData; content.push(obj); var Obj2 = {}; Obj2.data = {}; Obj2.data.value = ""; //Obj2.templateURL = "http://cloudprint.cainiao.com/template/customArea/440439"; Obj2.templateURL = printPageUrl + "/waybillPrintPage2.aspx?value=" + sellerMemo; content.push(Obj2); doc.contents = content; documents.push(doc); request.task.documents = documents; socket.send(JSON.stringify(request)); } function doPrintEn(data, sellerMemo) { var nJsonData = JSON.parse(data); var docuData = nJsonData.response.data.content[0]; //var printStr = docuData.printData; //printStr = printStr.replace(/\\/g, ""); //var printData = JSON.parse(printStr); //console.log(printData); var request = getRequestObject("PRINT"); request.parameters = new Object(); //request.parameters.taskID = getUUID(8, 10); //request.parameters.preview = false; request.parameters.printName = mini.get("txtBillPrinter").getText(); var content = new Array(); content.push(docuData.props); console.log("doPrintEn", sellerMemo); //var Obj2 = {}; //Obj2.data = {}; //Obj2.data.list = []; //var objsmall = new Object(); //objsmall.text = sellerMemo; //Obj2.data.list.push(objsmall); //Obj2.data.text = sellerMemo; //Obj2.templateURL = printPageUrl + "/PDDXMLFile.xml"; //content.push(Obj2); request.parameters.contents = content; socket.send(JSON.stringify(request)); } function getPrintersHandler(jsonData) { if (jsonData.content != undefined && jsonData.content.length > 0) { var printList = jsonData.content.split(","); var array = new Array(); for (var item of printList) { var pObj = new Object(); pObj.name = item; array.push(pObj); } mini.get("txtBillPrinter").setData(array); mini.get("txtBillPrinter_CN").setData(array); } else console.log("getPrintersHandler,jsonData.content is undefine!"); } //打开弹窗 function waybillFn() { var rec = grid.getSelecteds(); if (rec != undefined && rec != "" && rec.length > 0) { //edit_id = rec.tid; var offline_str = ""; for (var item of rec) { if (item.IsOffLineOrder == 1) { offline_str += item.ctid; offline_str += ","; } } if (offline_str.length > 0) { mini.alert("选中订单中有线下单:" + offline_str + "线下单请使用“菜鸟打单"); return; } mini.get("waybill_win").show(); $("#waybill_win").find("input").val(""); doGetPrinters(); var wb_cpname = localStorage.getItem("waybill_cpname"); var wb_cpcode = localStorage.getItem("waybill_cpcode"); //var wb_tempid = localStorage.getItem("waybill_tempid"); //var wb_temptext = localStorage.getItem("waybill_temptext"); var wb_printer = localStorage.getItem("waybill_printer"); if (wb_cpcode != undefined && wb_cpcode != null) { mini.get("txtBillCom").setValue(wb_cpcode); //mini.get("txtBillModel").setValue(wb_tempid); //mini.get("txtBillModel").setText(wb_temptext); mini.get("txtBillPrinter").setText(wb_printer); mini.get("txtBillPrinter").setValue(wb_printer); //doSetPrintConfig(wb_printer); } //var printTem = localStorage.getItem("waybill_templates"); //console.log("printem", printTem); //if (printTem != undefined && printTem != "") { // printTem = JSON.parse(printTem); //} //if (printTem == undefined || printTem == "") { // //获取点三打印模板 // postAjax("get_stdtemplates", "", function (data) { // console.log("get_stdtemplates", data); // localStorage.setItem("waybill_templates", JSON.stringify(data)); // printTem = data; // if (wb_cpname != undefined && wb_cpname != null && wb_cpname != "") { // var cname = wb_cpname.split("-")[0]; // var tempList = printTem.response.data.content; // var needList = []; // if (tempList.length > 0) { // for (var tp of tempList) { // if (tp.name.indexOf(cname) != -1) { // needList.push(tp); // } // } // } // mini.get("txtBillModel").setData(needList); // } // }); //} //else { // if (wb_cpname != undefined && wb_cpname != null && wb_cpname != "") { // var cname = wb_cpname.split("-")[0]; // var tempList = printTem.response.data.content; // var needList = []; // if (tempList.length > 0) { // for (var tp of tempList) { // if (tp.name.indexOf(cname) != -1) { // needList.push(tp); // } // } // } // mini.get("txtBillModel").setData(needList); // } //} } else { mini.alert("请选中一行记录!"); } } function onBillComChanged(e) { var rec = e.selected; console.log(rec); var id = rec.id; var name = rec.name; //mini.get("txtBillModel").setValue(""); //var url = "../handler/sync.ashx?t=get_waybill_model&pid=" + id //mini.get("txtBillModel").setUrl(url); //var printTem = localStorage.getItem("waybill_templates"); //console.log("printem", printTem); //if (printTem != undefined && printTem != "") { // printTem = JSON.parse(printTem); //} //console.log("printTemplate", printTem); //var cname = name.split("-")[0]; //var tempList = printTem.response.data.content; //var needList = []; //if (tempList.length > 0) { // for (var tp of tempList) { // if (tp.name.indexOf(cname) != -1) { // needList.push(tp); // } // } //} //mini.get("txtBillModel").setData(needList); } function onBillPrinterChanged(e) { //doSetPrintConfig(mini.get("txtBillPrinter").getText()); } function saveWaybillFn() { //var url = "http://d3.diansan.com/d3/open/print/express/index.html?waybillCodeList=YT5608493119031&templateId=1&requestId=1909374336748825642&sourceType=THIRD_ORDER"; //openWaiWin("打印面单", url, 900, 700, null); //return; mini.get("id_saveWaybillBtn").disable(); //mini.get("id_sysWaybillBtn").disable(); IsPrintOrderList = []; billOrderList = []; billOrderList = grid.getSelecteds(); orderCount = billOrderList.length; errorMsg = ""; if (billOrderList.length <= 0) return; console.log(billOrderList); progressShow("电子面单打印中...进度:1"); sendPrintData(0); } function sendPrintData(iTag) { if (iTag >= orderCount) { //console.log("return" + billOrderList.length); grid.reload(); mini.get("id_saveWaybillBtn").enable(); //mini.get("id_sysWaybillBtn").enable(); return; } //console.log("start" + billOrderList.length); var item = billOrderList[iTag]; if (item.SplitTag.length > 0) { isHaveOtherOrder(item.ctid, item, iTag, item.tid); } else { doRealGetPrintData(item, iTag); } } function doRealGetPrintData(item, iTag, isTogether = 0) { var ctid = item.ctid; var cpcode = mini.get("txtBillCom").getValue(); var cpname = mini.get("txtBillCom").getText(); //var tempId = mini.get("txtBillModel").getValue(); if (cpcode == "") { alert("快递公司和模板不能为空!"); return; } var parms = new Object(); parms.ctid = ctid; parms.cpcode = cpcode; parms.cpname = cpname; parms.together = isTogether; $("#progressShowDiv").html("电子面单打印中...进度:" + (iTag + 1)); postAjaxSync("set_erp_printwaybill", parms, function (data) { //console.log("back" + billOrderList.length); console.log("电子面单返回data", data); if (data.restype == 0) { errorMsg += item.ctid; errorMsg += data.data; errorMsg += ","; } else { if (cpcode == "SFFQ-LY") { doPrintSF(data, item.seller_memo); } else doPrintEn(data.data, item.seller_memo); } if (iTag < orderCount - 1) { //console.log("another" + billOrderList.length); sendPrintData(iTag + 1); } else { localStorage.setItem("waybill_cpcode", cpcode); localStorage.setItem("waybill_cpname", cpname); localStorage.setItem("waybill_printer", mini.get("txtBillPrinter").getText()); grid.reload(); mini.get("id_saveWaybillBtn").enable(); //mini.get("id_sysWaybillBtn").enable(); mini.get("waybill_win").hide(); progressHide(); if (errorMsg != "") { mini.alert(errorMsg); } //console.log("end" + billOrderList.length); } }); } function isHaveOtherOrder(ctid, item, iTag, tid) { for (var ltid of IsPrintOrderList) { if (ltid == tid) { sendPrintData(iTag + 1); return; } } postAjax("get_erp_sameorders", "ctid=" + ctid, function (data) { if (data.data > 1) { mini.showMessageBox({ title: "提示!", width: 500, //宽度 height: 200, //高度 iconCls: "mini-messagebox-question", buttons: ["继续打单", "合并打单", "取消打印"], message: "请注意:该订单有相同发货地址,共 " + data.data + " 单!", callback: function (action) { if (action == "继续打单") { doRealGetPrintData(item, iTag); } else if (action == "合并打单") { IsPrintOrderList.push(tid); doRealGetPrintData(item, iTag, 1); } else if (action == "取消打印") { mini.get("id_saveWaybillBtn").enable(); return; } } }); return; } else { doRealGetPrintData(item, iTag); } }); } function cancelWaybillFn() { mini.get("waybill_win").hide(); } //菜鸟物流云打印--------------------------------------------------------------------------------------------======================================= function CNwaybillFn() { var rec = grid.getSelected(); if (rec != undefined && rec != "") { edit_id = rec.tid; mini.get("waybill_win_CN").show(); $("#waybill_win_CN").find("input").val(""); doGetPrinters(); var wb_cpname = localStorage.getItem("waybill_cpname_CN"); var wb_cpcode = localStorage.getItem("waybill_cpcode_CN"); var wb_tempurl = localStorage.getItem("waybill_tempurl_CN"); var wb_temptext = localStorage.getItem("waybill_temptext_CN"); var wb_printer = localStorage.getItem("waybill_printer_CN"); if (wb_cpcode != undefined && wb_cpcode != null) { mini.get("txtBillCom_CN").setValue(wb_cpcode); mini.get("txtBillModel_CN").setValue(wb_tempurl); mini.get("txtBillModel_CN").setText(wb_temptext); mini.get("txtBillPrinter_CN").setText(wb_printer); mini.get("txtBillPrinter_CN").setValue(wb_printer); //doSetPrintConfig(wb_printer); } } else { mini.alert("请选中一行记录!"); } } function CNonBillComChanged(e) { var rec = e.selected; console.log(rec); var cpCode = rec.cpCode; var id = cpCode.split("_")[1]; mini.get("txtBillModel_CN").setValue(""); var url = "../handler/sync.ashx?t=get_waybill_model&pid=" + id mini.get("txtBillModel_CN").setUrl(url); } function CNonBillPrinterChanged(e) { // doSetPrintConfig(mini.get("txtBillPrinter_CN").getText()); } function CNsaveWaybillFn() { billOrderList = []; billOrderList = grid.getSelecteds(); orderCount = billOrderList.length; errorMsg = ""; if (billOrderList.length <= 0) return; progressShow("电子面单打印中...进度:1"); sendPrintDataEN(0); } function sendPrintDataEN(iTag) { if (iTag >= orderCount) { //console.log("return" + billOrderList.length); grid.reload(); return; } var rec = billOrderList[iTag]; var ctid = rec.ctid; var cpcode = mini.get("txtBillCom_CN").getValue(); var cpname = mini.get("txtBillCom_CN").getText(); var tempUrl = mini.get("txtBillModel_CN").getValue(); if (cpcode == "" || tempUrl == "") { alert("快递公司和模板不能为空!"); return; } var parms = new Object(); parms.ctid = ctid; parms.cpcode = cpcode; parms.cpname = cpname; parms.tempurl = tempUrl; $("#progressShowDiv").html("电子面单打印中...进度:" + (iTag + 1)); postAjaxSync("set_erp_printwaybill_cn", parms, function (data) { console.log("set_erp_printwaybill_cn", data); if (data.restype == 0) { errorMsg += rec.ctid; errorMsg += data.data; errorMsg += ","; } else doPrint(data.data, rec.seller_memo); if (iTag < orderCount - 1) { sendPrintDataEN(iTag + 1); } else { localStorage.setItem("waybill_cpcode_CN", cpcode); localStorage.setItem("waybill_cpname_CN", cpname); localStorage.setItem("waybill_tempurl_CN", tempUrl); localStorage.setItem("waybill_temptext_CN", mini.get("txtBillModel_CN").getText()); localStorage.setItem("waybill_printer_CN", mini.get("txtBillPrinter_CN").getText()); grid.reload(); progressHide(); mini.get("waybill_win_CN").hide(); if (errorMsg.length > 0) { mini.alert(errorMsg); } } }); } function CNcancelWaybillFn() { mini.get("waybill_win_CN").hide(); }