vue中使用快遞鳥打印訂單

最近在做打印這一塊的東西,發貨時候打印快遞單對接的快遞鳥的,這裏記錄一下使用的小結

一:首先使用快遞鳥需要引入 LodopFuncs.js 這個

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

三:拿到要打印的訂單集合後,就下來就要使用Lodop來打印了

1.初始化Lodop ,在使用打印的地方引入

LodopFuncs.js文件
printdata(){//打印

                this.index=0;//打印的訂單集合的下標,從0開始
                this.success=0;//打印成功的訂單數目
                this.error=0;//打印失敗的訂單數目
                this.errorData=[];//打印失敗的訂單的 訂單號或者快遞號,自行選擇
                 if(this.orderdata.length==0){

                     this.$message.info('請選擇打印的條目!');
                     return;
                 }


                this.LODOP = getLodop();//初始化Lodop

                if(!this.LODOP) {
                    this.$message.info('打印插件未安裝,請先下載');
                }else{

                    var that=this;
                    this.LODOP.On_Return = function(TaskID, Value) {
                        that.startprint();
                        console.log("開始打印")
                    };

                    this.LODOP.SELECT_PRINTER();

                }



            },

2.開始打印,注意 打印的內容一般是通過後臺接口返回,後臺接口會返回一個 html頁面,直接放入使用即可

startprint(){//開始打印

                let orderid=this.orderdata[this.index];//這裏取的是訂單的訂單id 

                this.$get("/admin/MianDan/index",{oid:orderid}).then(res => {

                    if(res.success==1){

                        this.LODOP = getLodop();
                        this.LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS", true);
                        this.LODOP.PRINT_INIT("");
                        //this.LODOP.ADD_PRINT_BARCODE(71,103,164,119,"QRCode","123456789012");
                        this.LODOP.ADD_PRINT_HTM(0, 0, "100%", "100%", res.data.PrintTemplate);//設置頁面填充內容
                       // this.LODOP.SET_SHOW_MODE("BKIMG_IN_PREVIEW",1);
                        this.LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS", true);//設置頁面縮放

                        var that=this;
                        this.LODOP.On_Return = function(TaskID, Value) {
                            //執行速度太快
                            setTimeout(function() {

                                that.LODOP = getLodop();
                                this.LODOP.On_Return = function(TaskID, result) {


                                    if(result) {//成功訂單
                                        that.success++;
                                    } else {//失敗訂單
                                        this.errorData.push(res.data.Order.LogisticCode);
                                        that.error++;
                                    }

                                    that.index++;//下一個要打印的

                                    if(that.index==that.orderdata.length) {//說明已經打印完畢

                                        console.log('========11111=========');
                                        var errorinfo = that.error > 0 ? "<b>失敗單號</b>:<br>"+that.errorData.join('<br>') : "";
                                        var alertinfo = "已打印完畢-選擇了" + that.index + "個訂單,成功打印" + that.success + "個面單,失敗:" + that.error + "個面單" + errorinfo;

                                        // alert(alertinfo,'',function(){
                                        //     console.log('========22222=========');
                                        //     that.$emit('clickRelod');
                                        // });

                                        that.$confirm({
                                            content: alertinfo,
                                            okText: "確定",
                                            title: "提示",
                                            okType: "danger",
                                            centered: true,
                                            cancelText: "",

                                            onOk: () => {
                                                //成功
                                                that.$emit('clickRelod');
                                            },
                                            onCancel:()=>{
                                                //取消
                                                that.$emit('clickRelod');

                                            }


                                        });





                                        return;


                                    }

                                    that.startprint();

                                };


                                that.LODOP.GET_VALUE('PRINT_STATUS_OK', Value);

                              }, 1000);

                        };
                        this.LODOP.PRINT();//最後一個打印(或預覽、維護、設計)語句


                    }

                });





            },

以上就是對使用Lodop打印封裝的兩個方法,總體來說還是很簡單的

 

 

 

 

 

 

 

 

 

 

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