vue 中使用菜鸟打印
这篇来简单介绍一下使用菜鸟打印的流程一:选择要打印的订单,这里可以自由做一些筛选,比如只有待发货的订单才能打印二:拿到要打印的订单集合后,就要开始进行打印了1.首先初始化 WebSocket 这里最好全局初始化一下,不用重复的初始化这个WebSocketdoConnect() {var that=this;t...
·
这篇来简单介绍一下使用菜鸟打印的流程
一:选择要打印的订单,这里可以自由做一些筛选,比如只有待发货的订单才能打印
二:拿到要打印的订单集合后,就要开始进行打印了
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);
},
菜鸟打印也是很简单,可以多看看它的官方文档,多调试调试,就知道它的打印流程了
更多推荐
已为社区贡献2条内容
所有评论(0)