vue 中使用菜鳥打印

這篇來簡單介紹一下使用菜鳥打印的流程

一:選擇要打印的訂單,這裏可以自由做一些篩選,比如只有待發貨的訂單才能打印

二:拿到要打印的訂單集合後,就要開始進行打印了

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

            },

 

菜鳥打印也是很簡單,可以多看看它的官方文檔,多調試調試,就知道它的打印流程了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章