這篇來簡單介紹一下使用菜鳥打印的流程
一:選擇要打印的訂單,這裏可以自由做一些篩選,比如只有待發貨的訂單才能打印
二:拿到要打印的訂單集合後,就要開始進行打印了
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);
},
菜鳥打印也是很簡單,可以多看看它的官方文檔,多調試調試,就知道它的打印流程了