这篇来简单介绍一下使用菜鸟打印的流程
一:选择要打印的订单,这里可以自由做一些筛选,比如只有待发货的订单才能打印
二:拿到要打印的订单集合后,就要开始进行打印了
1.首先初始化 WebSocket 这里最好全局初始化一下,不用重复的初始化这个 WebSocket
doConnect() { var that=this; this.socket = new WebSocket('ws://localhost:13528'); //如果是https的话,端口是13529 //socket = new WebSocket('wss://localhost:13529'); // 打开Socket that.socket.onopen = function(event){ // 监听消息 that.socket.onmessage = function(event){ var printResult = JSON.parse(event.data); console.log(printResult); // layer.load(); if(printResult.cmd == 'print'&&( printResult.msg == '成功' || printResult.status == 'success' )){ //打印成功--做一些自己的处理 }else if( printResult.msg == '无效的打印机' || printResult.status == 'failed' ){ console.log("失败!!!!!!!!"); //打印失败--做一些自己的处理 } }; // 监听Socket的关闭 that.socket.onclose = function(event){ console.log('Client notified socket has closed',event); }; }; },
2.开始打印 ,同理 数据也是从接口李获得,自行修改
doPrint() { console.log("this.index"); let orderid=this.orderdata[this.index]; this.$get("/admin/MianDan/index",{oid:orderid,code:this.value}).then(res => { if(res.success==1){ var printTemp = JSON.parse( res.data.printData ); var customTemp = {};//商品信息 for( var i=0; i<res.data.goods_list.length; i++ ){ var g = res.data.goods_list[i]; customTemp['k'+(i+1)] = g.GoodsName+" "+g.num; } var request = { "cmd": "print", "requestID": Date.parse(new Date()), "version": "1.0", "task": { "taskID": this.getUUID(8, 10), "preview": false, "printer": "", "previewType": "pdf", "firstDocumentNumber": 10, "totalDocumentCount": 100, "documents": [{ "documentID": "", "contents": [ printTemp,//基本信息 { "data": customTemp,//商品信息 // "templateURL": templateUrl "templateURL": "http://cloudprint.cainiao.com/template/standard/263427/2" } ] }] } }; this.socket.send(JSON.stringify(request)); }else{//失败了--接口失败了,停止打印 -给出提示 alert(res.data.message); this.error++; this.errorData.push(this.orderdata[this.index]); setTimeout(this.errorTip,100); } }); },
3.打印中用到的方法
/*** * * 获取请求的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) * */ getUUID(len, radix) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var uuid = [], i; radix = radix || chars.length; if (len) { for (var 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 (var 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(''); }, errorTip(){//失败德提示 var errorinfo = this.error > 0 ? "<b>失败单号</b>:<br>"+this.errorData.join('<br>') : ""; var alertinfo = "已打印完毕-选择了" + this.orderdata.length + "个订单,成功打印" + this.success + "个面单,失败:" + this.error + "个面单" + errorinfo; alert(alertinfo); },
菜鸟打印也是很简单,可以多看看它的官方文档,多调试调试,就知道它的打印流程了