function printByIds(ids) {
|
// //console.log(ids)
|
// //console.log("2")
|
$.ajax({url: app.API_URL_HEADER + "/XKYDHD/BarInfoDY",
|
data: {
|
"ids": ids,
|
},
|
DataType: "json",
|
type: "post",
|
async: false,
|
//timeout: 30000,
|
success: function(data) {
|
//console.log(JSON.stringify(data));
|
//console.log(data.status);
|
if (data.status==0) {
|
// console.log(JSON.stringify(data.data));
|
try {
|
var printCmd = ""
|
matterTable = data.data.matterTable;
|
for (var i = 0; i < matterTable.length; i++) {
|
var templateNo = matterTable[i].FNO;
|
console.log(matterTable[i]);
|
switch (templateNo) {
|
case "1":
|
printCmd += printTemplate(matterTable[i])+"\r\n";
|
break;
|
|
default:
|
mui.alert("获取模板编号失败,请检查数据")
|
return false
|
}
|
}
|
// //console.log("error1");
|
setTimeout(function() {
|
doPrint(printCmd, 1)
|
}, 1000)
|
} catch (e) {
|
// //console.log("error2");
|
plus.ui.toast("打印执行异常: " + e)
|
//plus.ui.toast("printErr: " + err)
|
}
|
|
} else {
|
////console.log("error3");
|
//查询失败原因
|
plus.ui.toast(data.msg);
|
}
|
},
|
error: function(xhr, type, errorThrown) {
|
plus.ui.toast('打印失败!失败类型是:' + type);
|
}
|
});
|
}
|
|
function printTemplate(printData) {
|
try {
|
// console.log(JSON.stringify(printData));
|
var str1 = printData.STR1
|
var str2 = printData.STR2
|
var str3 = printData.STR3
|
var str4 = printData.STR4
|
var str5 = printData.STR5
|
var str6 = printData.STR6
|
var str8 = printData.STR1 //条码
|
// var str9 = printData.STR9
|
// var str10 = printData.STR10
|
// var str11 = printData.STR11
|
// var str12 = printData.STR12
|
var strt1 = printData.STRT1 //第一行
|
var strt2 = printData.STRT2 //第二行
|
var strt3 = printData.STRT3 //第三行
|
var strt4 = printData.STRT4 //第四行
|
var strt5 = printData.STRT5 //第五行 左
|
var strt6 = printData.STRT6 //第五行 右
|
var strt7 = printData.STRT7
|
var strt9 = printData.STRT9
|
var str9 = printData.STR9
|
strt9="物料图号"
|
str9=""
|
|
|
var str7_1 = "" //规格型号第一行
|
var str7_2 = "" //规格型号第二行
|
var str7_3 = "" //规格型号第三行
|
var str7_4 = "" //规格型号第四行
|
if (printData.STR7.length > 18) {
|
str7_1 = printData.STR7.substring(0, 18)
|
if (printData.STR7.length > 36) {
|
str7_2 = printData.STR7.substring(18, 36)
|
if (printData.STR7.length > 54) {
|
str7_3 = printData.STR7.substring(36, 54)
|
str7_4 = printData.STR7.substring(54, 72)
|
} else {
|
str7_3 = printData.STR7.substring(36, printData.STR7.length)
|
}
|
} else {
|
str7_2 = printData.STR7.substring(18, printData.STR7.length)
|
}
|
} else {
|
str7_1 = printData.STR7
|
}
|
|
|
|
var printCmd = "! 0 200 200 565 1\r\n" +
|
//"PREFEED 10\n\r"+//打印之前走纸距离指令
|
//"POSTFEED 19.5\n\r" + //打印之后走纸距离指令
|
"PAGE - WIDTH 400\r\n" +
|
"BAR - SENSE\r\n" +
|
"BOX 10 10 400 565 2\r\n" +
|
"LINE 10 60 400 60 1\r\n" +
|
"LINE 10 110 400 110 1\r\n" +
|
"LINE 10 160 400 160 1\r\n" +
|
"LINE 10 210 400 210 1\r\n" +
|
"LINE 10 300 400 310 1\r\n" +
|
"LINE 10 350 400 360 1\r\n" +
|
|
"LINE 10 405 190 415 1\r\n" +
|
"LINE 10 460 190 470 1\r\n" +
|
"LINE 10 515 190 525 1\r\n" +
|
|
|
// "LINE 10 410 400 410 1\r\n" +
|
"LINE 130 10 130 350 1\r\n" +
|
"LINE 190 350 190 565 1\r\n" +
|
|
"TEXT 24 0 15 25 "+ strt1 +" " + str1 + "\r\n" + //物料条码
|
"TEXT 24 0 15 75 "+strt4+"\r\n" + //物料名称
|
"TEXT 55 0 140 75 "+ str4 + "\r\n" + //物料名称
|
"TEXT 24 0 15 125 "+strt3+" " + str3 + "\r\n" + //物料编码
|
"TEXT 24 0 15 175 "+strt9+" " + str9 + "\r\n" + //图号
|
"TEXT 24 0 15 250 "+strt7+"\r\n" +
|
// "TEXT 24 0 15 325 "+strt6+" " + str6 + "\r\n" +
|
"TEXT 24 0 15 315 "+strt2+" " + str2 + "\r\n" +
|
"TEXT 55 0 140 218 " + str7_1 + "\r\n" +
|
"TEXT 55 0 140 238 " + str7_2 + "\r\n" +
|
"TEXT 55 0 140 258 " + str7_3 + "\r\n" +
|
"TEXT 55 0 140 272 " + str7_4 + "\r\n" +
|
"TEXT 24 0 50 365 " + strt6 + "\r\n" +
|
"TEXT 24 0 40 420 " + str6 + "\r\n" +
|
"TEXT 24 0 50 475 " + strt5 + "\r\n" +
|
"TEXT 24 0 60 530 " + str5 + "\r\n" +
|
|
|
|
"B QR 200 360 M 2 U 9\r\n" +
|
"MA," + str8 + "\r\n" +
|
"ENDQR\r\n" +
|
// "B QR 25 285 M 2 U 4\r\n" +
|
// "MA," + str8 + "\r\n" +
|
// "ENDQR\r\n" +
|
|
"FORM\r\n" +
|
"PRINT\r\n";
|
return printCmd;
|
} catch (err) {
|
console.log(err);
|
//mui.msg("printErr: " + err)
|
var printCmd = "";
|
return printCmd;
|
}
|
}
|
|
function printTemplateold(printData) {
|
try {
|
console.log(JSON.stringify(printData));
|
var str1 = printData.STR1
|
var str2 = printData.STR2
|
var str3 = printData.STR3
|
var str4 = printData.STR4
|
var str5 = printData.STR5
|
var str6 = printData.STR6
|
var str8 = printData.STR1 //条码
|
// var str9 = printData.STR9
|
// var str10 = printData.STR10
|
// var str11 = printData.STR11
|
// var str12 = printData.STR12
|
var strt1 = printData.STRT1 //第一行
|
var strt2 = printData.STRT2 //第二行
|
var strt3 = printData.STRT3 //第三行
|
var strt4 = printData.STRT4 //第四行
|
var strt5 = printData.STRT5 //第五行 左
|
var strt6 = printData.STRT6 //第五行 右
|
var strt7 = printData.STRT7
|
|
|
var str7_1 = "" //规格型号第一行
|
var str7_2 = "" //规格型号第二行
|
var str7_3 = "" //规格型号第三行
|
var str7_4 = "" //规格型号第四行
|
if (printData.STR7.length > 16) {
|
str7_1 = printData.STR7.substring(0, 16)
|
if (printData.STR7.length > 32) {
|
str7_2 = printData.STR7.substring(16, 32)
|
if (printData.STR7.length > 48) {
|
str7_3 = printData.STR7.substring(32, 48)
|
str7_4 = printData.STR7.substring(48, 64)
|
} else {
|
str7_3 = printData.STR7.substring(32, printData.STR7.length)
|
}
|
} else {
|
str7_2 = printData.STR7.substring(16, printData.STR7.length)
|
}
|
} else {
|
str7_1 = printData.STR7
|
}
|
|
|
|
var printCmd = "! 0 203 203 400 1\r\n" +
|
//"PREFEED 10\n\r"+//打印之前走纸距离指令
|
//"POSTFEED 19.5\n\r" + //打印之后走纸距离指令
|
"PAGE - WIDTH 640\r\n" +
|
"BOX 10 10 610 400 2\r\n" +
|
"LINE 10 60 450 60 1\r\n" +
|
"LINE 10 110 450 110 1\r\n" +
|
"LINE 10 160 610 160 1\r\n" +
|
"LINE 10 210 610 210 1\r\n" +
|
"LINE 10 260 610 260 1\r\n" +
|
"LINE 130 10 130 400 1\r\n" +
|
"LINE 190 260 190 400 1\r\n" +
|
"LINE 320 210 320 260 1\r\n" +
|
"LINE 440 210 440 260 1\r\n" +
|
"LINE 450 10 450 160 1\r\n" +
|
"TEXT 24 0 15 25 "+ strt1 +" " + str1 + "\r\n" +
|
"TEXT 24 0 15 75 "+strt2+" " + str2 + "\r\n" +
|
"TEXT 24 0 15 125 "+strt3+" " + str3 + "\r\n" +
|
"TEXT 24 0 15 175 "+strt4+" " + str4 + "\r\n" +
|
"TEXT 24 0 15 225 "+strt5+" " + str5 + "\r\n" +
|
"TEXT 24 0 330 225 "+strt6+" " + str6 + "\r\n" +
|
"TEXT 24 0 200 265 " + str7_1 + "\r\n" +
|
"TEXT 24 0 200 297 " + str7_2 + "\r\n" +
|
"TEXT 24 0 200 325 " + str7_3 + "\r\n" +
|
"TEXT 24 0 200 353 " + str7_4 + "\r\n" +
|
"TEXT 24 0 145 273 规\r\n" +
|
"TEXT 24 0 145 301 格\r\n" +
|
"TEXT 24 0 145 329 型\r\n" +
|
"TEXT 24 0 145 357 号\r\n" +
|
|
|
"B QR 480 30 M 2 U 5\r\n" +
|
"MA," + str8 + "\r\n" +
|
"ENDQR\r\n" +
|
"B QR 25 285 M 2 U 4\r\n" +
|
"MA," + str8 + "\r\n" +
|
"ENDQR\r\n" +
|
|
"FORM\r\n" +
|
"PRINT\r\n";
|
return printCmd;
|
} catch (err) {
|
// //console.log("printErr:" + err)
|
mui.msg("printErr: " + err)
|
var printCmd = "";
|
return printCmd;
|
}
|
}
|
function doPrint(printCmd, printNum) { //printNum:打印次数
|
if (printNum < 3) { //只递归3次
|
try {
|
////console.log("打印机连接状态:" + bluetoothSocket.isConnected())
|
var connectStatus = 0; //连接状态
|
for (var i = 0; i < 10; i++) {
|
if (!bluetoothSocket.isConnected()) {
|
plus.ui.toast("重新连接");
|
bluetoothSocket.connect();
|
}
|
////console.log("重连次数i"+i)
|
if (bluetoothSocket.isConnected()) {
|
connectStatus = 1;
|
break;
|
} else {
|
continue;
|
}
|
}
|
// //console.log("status:"+connectStatus)
|
if (connectStatus == 1) {
|
var outputStream = bluetoothSocket.getOutputStream();
|
plus.android.importClass(outputStream);
|
var arrayBuffer = plus.android.invoke(printCmd, 'getBytes', 'gbk'); //stringToByte(printCmd);
|
outputStream.write(arrayBuffer);
|
outputStream.flush();
|
} else {
|
plus.ui.toast("连接打印机失败")
|
}
|
} catch (e) {
|
printNum++;
|
plus.ui.toast("正在重连打印机第" + printNum + "次:" + e)
|
////console.log(e)
|
setTimeout(initBluetooth(), 1000) //一连接异常就初始化打印机
|
setTimeout(function() {
|
doPrint(printCmd, printNum) //重新执行
|
}, 1000)
|
}
|
} else { //不再回调自身
|
try {
|
////console.log("打印机连接状态:" + bluetoothSocket.isConnected())
|
var connectStatus = 0; //连接状态
|
for (var i = 0; i < 10; i++) {
|
if (!bluetoothSocket.isConnected()) {
|
plus.ui.toast("重新连接");
|
bluetoothSocket.connect();
|
}
|
////console.log("重连次数i"+i)
|
if (bluetoothSocket.isConnected()) {
|
connectStatus = 1;
|
break;
|
} else {
|
continue;
|
}
|
}
|
if (connectStatus == 1) {
|
var outputStream = bluetoothSocket.getOutputStream();
|
plus.android.importClass(outputStream);
|
var arrayBuffer = plus.android.invoke(printCmd, 'getBytes', 'gbk'); //stringToByte(printCmd);
|
outputStream.write(arrayBuffer);
|
outputStream.flush();
|
} else {
|
plus.ui.toast("连接打印机失败")
|
}
|
} catch (e) {
|
printNum++;
|
plus.ui.toast("打印机异常第" + printNum + "次:" + e)
|
////console.log(e)
|
mui.alert("重连打印机失败,请重新打开页面,初始化打印机。")
|
}
|
}
|
////console.log(printNum)
|
////console.log(printCmd)
|
}
|
function initBluetooth() {
|
try {
|
var main = plus.android.runtimeMainActivity();
|
var BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
|
var UUID = plus.android.importClass("java.util.UUID");
|
|
uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
|
var BAdapter = BluetoothAdapter.getDefaultAdapter();
|
BAdapter.cancelDiscovery(); //停止扫描
|
|
var address_mac = api_localStorageGet("printMac") ? api_localStorageGet("printMac") :
|
"DC:1D:30:3F:D2:50";
|
//console.log("status:"+address_mac)
|
device = BAdapter.getRemoteDevice(address_mac);
|
plus.android.importClass(device);
|
|
bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
|
plus.android.importClass(bluetoothSocket);
|
//plus.ui.toast("蓝牙连接成功");
|
} catch (err) {
|
// //console.log(err);
|
//mui.alert(err)
|
plus.ui.toast("蓝牙连接异常!");
|
}
|
}
|