• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

vue 中使用菜鸟打印

vue 海叔叔 4年前 (2021-11-12) 121次浏览 已收录 0个评论

这篇来简单介绍一下使用菜鸟打印的流程

一:选择要打印的订单,这里可以自由做一些筛选,比如只有待发货的订单才能打印

二:拿到要打印的订单集合后,就要开始进行打印了

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);
            },

菜鸟打印也是很简单,可以多看看它的官方文档,多调试调试,就知道它的打印流程了


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:vue 中使用菜鸟打印
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址