下拉框中选取本机的打印机信息,选择后根据相关参数去打印面单
(注:需要先在电脑上手动连接上打印机,成功后,在通过 webSocket 连接服务端,获取本地打印机列表。)
created(){
// 一进页面连接服务
this.initWebSocket()
}
method:{
initWebSocket(){
//如果是https的话,端口是13529
this.websocket = new WebSocket("ws://localhost:13528");
this.websocket.onopen = this.websocketonopen;
this.websocket.onerror = this.websocketonerror;
this.websocket.onmessage = this.websocketonmessage;
},
// 打开连接
websocketonopen(){
this.$message.success("打印组件已开启");
let data = {
cmd: "getPrinters",
requestID: getUid, //用户id
version: "1.0",
}
//发送获取打印机列表命令
this.websocket.send(JSON.stringify(data));
},
// websocket连接错误
websocketonerror(e) {
this.$message.error("打印组件未开启,请确认打印组件是否开启");
},
// websocket接收信息
websocketonmessage(e) {
//接收数据;
const result = JSON.parse(e.data);
//收到打印机列表数据
if (result.cmd == "getPrinters") {
this.printerList = result.printers; // 本机连接的打印机列表信息
}
// 打印成功处理逻辑
if (result.status == "completeSuccess") {
this.$message.success("打印成功");
// 调接口,刷新打印次数
updatePrintCount({
ids: this.ids,
printCount: this.dialogForm.printNum,
}).then((res) => {
this.resetTable = !this.resetTable; // 刷新主页面接口的标识符
});
}
},
created() {
this.printSdk = new SCPPrint(this.sdkParams);
},
initPrinter() {
const obj = this.detailBasicInfoForm[5].find(formObj => formObj.prop === 'defaultPrinter');
if (this.basicInfoData.platformCarrierCode === 'SF') {
// 获取打印机列表
const getPrintersCallback = result => {
if (result.code === 1) {
// 渲染打印机选择框下拉值
const printers = result.printers;
const printerArr = printers.map(item => {
return { label: item.name, value: item.name };
});
obj.options = printerArr;
// 设置默认打印机
if (!this.basicInfoData.defaultPrinter) {
this.basicInfoData.defaultPrinter = printers[0].name;
this.printSdk.setPrinter(printers[0].name);
}
}
};
this.printSdk.getPrinters(getPrintersCallback);
}
},
// 清除顺丰打印机
clearSfPrinter() {
const obj = this.detailBasicInfoForm[5].find(formObj => formObj.prop === 'defaultPrinter');
this.printSdk.setPrinter('');
obj.options = [];
this.basicInfoData.defaultPrinter = '';
},