<!-- 水平打印 乐亿通 -->
|
<!DOCTYPE html>
|
<html>
|
<head>
|
<meta charset="utf-8">
|
<meta name="viewport"
|
content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
|
<title>打印设置</title>
|
<script src="../../lib/mui/js/mui.min.js"></script>
|
<script src="../../js/api.js"></script>
|
<link href="../../lib/mui/css/mui.min.css" rel="stylesheet" />
|
<script src="../../js/jquery-1.11.1.js"></script>
|
<script src="../../js/jquery.xml2json.js.js"></script>
|
<script src="../../js/CangKuManage_js/print_template.js"></script>
|
<script type="text/javascript" src="../../lib/base_js/js/app.js"></script>
|
|
<script type="text/javascript" src="../../lib/base_js/js/common.js" ></script>
|
<style type="text/css">
|
.mui-content {
|
margin-top: 12px;
|
}
|
|
.mui-btn {
|
width: 80px;
|
}
|
|
.ulcss {
|
margin-top: 0.625rem;
|
}
|
|
.acss a {
|
text-align: center;
|
color: #fff;
|
text-decoration: none;
|
/* background-color: rgb(100,149,237); */
|
}
|
|
/*header 用户名居于右侧*/
|
.title-right {
|
float: right;
|
line-height: 44px !important;
|
font-size: 16px;
|
}
|
</style>
|
</head>
|
<body>
|
<!-- <header class="mui-bar mui-bar-nav"> -->
|
<header class="mui-hidden">
|
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
|
<h1 class="mui-title">打印设置</h1>
|
<a class="mui-pull-right"><span class="title-right" id="usr"></span></a>
|
</header>
|
<div class="mui-content">
|
<form class="mui-input-group">
|
<div class="mui-input-row">
|
<label>PDA地址:</label>
|
<input id="pdaMac" type="text" class="mui-input-clear" placeholder="请输入PDA的MAC地址">
|
</div>
|
<div class="mui-input-row">
|
<label>打印地址:</label>
|
<input id="printMac" type="text" class="mui-input-clear" placeholder="请输入打印机MAC地址">
|
</div>
|
</form>
|
<ul class="mui-table-view ulcss">
|
<li class="mui-table-view-cell acss" style="background-color: rgb(93, 204, 201);" id="sureBtn">
|
<a>保存</a>
|
</li>
|
</ul>
|
<ul class="mui-table-view ulcss">
|
<li class="mui-table-view-cell acss" style="background-color: rgb(153,204,153);" id="printBtn">
|
<a>打印测试</a>
|
</li>
|
</ul>
|
</div>
|
<script type="text/javascript" charset="utf-8">
|
mui.init();
|
var uuid, device, bluetoothSocket, mac;
|
mui.plusReady(function() {
|
app.init();
|
document.getElementById("usr").innerHTML = setUsrCode();
|
getPrintInfo();
|
getMac();
|
//确定
|
document.getElementById("sureBtn").addEventListener('tap', function() {
|
//确定逻辑
|
doSure();
|
})
|
//打印按钮
|
document.getElementById("printBtn").addEventListener('tap', function() {
|
//打印逻辑
|
//var printCmd=printCardBoardTemplate()//测试模板
|
//doPrint1(printCmd)//测试模板
|
doPrint();
|
//printByIds("102")
|
|
})
|
//PDAMAC地址输入后回车键监听
|
document.getElementById("pdaMac").addEventListener("keydown", function(e) {
|
if (13 == e.keyCode) {
|
document.activeElement.blur(); //隐藏软键盘
|
getSetting();
|
}
|
}, false);
|
//初始化打印
|
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");
|
|
console.log(JSON.stringify(uuid, null, 2));
|
|
var BAdapter = BluetoothAdapter.getDefaultAdapter();
|
BAdapter.cancelDiscovery(); //停止扫描
|
|
// var addres_mac = plus.storage.getItem("DC:1D:30:3F:D2:50");//传入打印机mac地址
|
var address_mac = api_localStorageGet("printMac") ? api_localStorageGet("printMac") :
|
"DC:1D:30:3F:D2:50";
|
device = BAdapter.getRemoteDevice(address_mac);
|
|
|
plus.android.requestPermissions(['android.permission.BLUETOOTH_SCAN','android.permission.BLUETOOTH_CONNECT']);
|
|
console.log(231);
|
|
plus.android.importClass(device);
|
|
bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
|
|
console.log(231);
|
|
console.log(JSON.stringify(bluetoothSocket, null, 2));
|
|
plus.android.importClass(bluetoothSocket);
|
} catch (err) {
|
|
console.log(err);
|
//mui.alert(err)
|
plus.ui.toast("蓝牙连接异常!"+ err);
|
}
|
})
|
|
//获取标签数据
|
function printByIds(ids) {
|
console.log(ids);
|
mui.ajax(storage["_basePath"] + '/getPrintInfoById', {
|
data: {
|
"ids": ids,
|
},
|
type: 'POST',
|
timeout: 10000,
|
success: function(data) {
|
if (data.result) {
|
//console.log(JSON.stringify(data.data));
|
//var result = plus.bridge.execSync("PrintPlugin", "printTest", data.data);
|
// alert(result);
|
for (var i = 0; i < data.data.length; i++) {
|
printResultData(data.data[i])
|
}
|
|
} else {
|
//查询失败原因
|
// plus.ui.toast(data.msg);
|
}
|
},
|
error: function(xhr, type, errorThrown) {
|
plus.ui.toast('打印失败!失败类型是:' + type);
|
}
|
})
|
}
|
|
function printResultData(printData) {
|
console.log(JSON.stringify(printData));
|
var str1 = printData.STRP1
|
var str2 = printData.STRP2
|
var str3 = printData.STRP3
|
var str4 = printData.STRP4
|
var str5 = printData.STRP5
|
var str6 = printData.STRP6
|
var str7 = printData.STRP7
|
var str8 = printData.STRP8
|
|
var str9_1 = "" //规格型号第一行
|
var str9_2 = "" //规格型号第二行
|
var str9_3 = "" //规格型号第三行
|
var str9_4 = "" //规格型号第四行
|
if (printData.STRP9.length > 16) {
|
str9_1 = printData.STRP9.substring(0, 16)
|
if (printData.STRP9.length > 32) {
|
str9_2 = printData.STRP9.substring(16, 32)
|
if (printData.STRP9.length > 48) {
|
str9_3 = printData.STRP9.substring(32, 48)
|
str9_4 = printData.STRP9.substring(48, 64)
|
} else {
|
str9_3 = printData.STRP9.substring(32, printData.STRP9.length)
|
}
|
} else {
|
str9_2 = printData.STRP9.substring(16, printData.STRP9.length)
|
}
|
} else {
|
str9_1 = printData.STRP9
|
}
|
|
var str10 = printData.STRP10
|
var str11 = printData.STRP11
|
var str12 = printData.STRP12
|
|
var printCmd = "! 0 203 203 490 1\r\n" +
|
//"PREFEED 8\n\r"+//打印之前走纸距离指令
|
"POSTFEED 19.5\n\r" + //打印之后走纸距离指令
|
"PAGE - WIDTH 640\r\n" +
|
"BOX 10 10 610 480 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 10 310 610 310 1\r\n" +
|
"LINE 10 360 610 360 1\r\n" +
|
"LINE 130 10 130 480 1\r\n" + //竖线A
|
"LINE 190 360 190 480 1\r\n" + //竖线B
|
"LINE 320 260 320 360 1\r\n" + //竖线C
|
"LINE 440 260 440 360 1\r\n" + //竖线D
|
"LINE 450 10 450 160 1\r\n" + //竖线E
|
"TEXT 24 0 15 25 物料条码 " + str1 + "\r\n" +
|
"TEXT 24 0 15 75 供应商 " + str2 + "\r\n" +
|
"TEXT 24 0 15 125 物料编码 " + str3 + "\r\n" +
|
"TEXT 24 0 15 175 物料名称 " + str12 + "\r\n" +
|
"TEXT 24 0 15 225 颜色 " + str4 + "\r\n" +
|
"TEXT 24 0 15 275 任务单号 " + str5 + "\r\n" +
|
"TEXT 24 0 330 275 产品型号 " + str6 + "\r\n" +
|
"TEXT 24 0 15 325 条码数量 " + str7 + "\r\n" +
|
"TEXT 24 0 330 325 到货日期 " + str8 + "\r\n" +
|
"TEXT 24 0 200 365 " + str9_1 + "\r\n" +
|
"TEXT 24 0 200 393 " + str9_2 + "\r\n" +
|
"TEXT 24 0 200 421 " + str9_3 + "\r\n" +
|
"TEXT 24 0 200 449 " + str9_4 + "\r\n" +
|
"TEXT 24 0 145 363 规\r\n" +
|
"TEXT 24 0 145 391 格\r\n" +
|
"TEXT 24 0 145 419 型\r\n" +
|
"TEXT 24 0 145 447 号\r\n" +
|
|
"B QR 470 20 M 2 U 5\r\n" + //二维码-右上角
|
"MA," + str10 + "\r\n" +
|
"ENDQR\r\n" +
|
"B QR 20 370 M 2 U 4\r\n" + //左下角
|
"MA," + str11 + "\r\n" +
|
"ENDQR\r\n" +
|
|
"FROM\r\n" +
|
"PRINT\r\n";
|
|
doPrint1(printCmd)
|
}
|
|
function doPrint1(printCmd) {
|
console.log(bluetoothSocket.isConnected())
|
if (!bluetoothSocket.isConnected()) {
|
plus.ui.toast("重新连接");
|
bluetoothSocket.connect();
|
}
|
var outputStream = bluetoothSocket.getOutputStream();
|
plus.android.importClass(outputStream);
|
var arrayBuffer = plus.android.invoke(printCmd, 'getBytes', 'gbk'); //stringToByte(printCmd);
|
outputStream.write(arrayBuffer);
|
outputStream.flush();
|
}
|
|
//获取手机MAC地址和打印信息
|
function getMac() {
|
var pdaMac = api_localStorageGet("pdaMac");
|
var printMac = api_localStorageGet("printMac");
|
$("#pdaMac").val(pdaMac)
|
$("#printMac").val(printMac)
|
return pdaMac;
|
}
|
//获取打印设置信息
|
function getSetting() {
|
if ($("#pdaMac").val().length == 0) {
|
plus.ui.toast("PDA地址不能为空");
|
$("#pdaMac").focus(); //获取焦点
|
return;
|
}
|
}
|
//确定
|
function doSure() {
|
if ($("#pdaMac").val().length == 0) {
|
plus.ui.toast("PDA地址不能为空");
|
$("#pdaMac").focus(); //获取焦点
|
return;
|
}
|
if ($("#printMac").val().length == 0) {
|
plus.ui.toast("打印机地址不能为空");
|
$("#printMac").focus(); //获取焦点
|
return;
|
}
|
//判断是否存在
|
api_localStorageSave("pdaMac", $("#pdaMac").val());
|
api_localStorageSave("printMac", $("#printMac").val());
|
alert("已保存")
|
}
|
|
//打印
|
function doPrint() {
|
//获取打印信息
|
var pdaMac = $("#pdaMac").val();
|
var printMac = $("#printMac").val();
|
console.log(pdaMac);
|
//执行打印
|
//console.log(pdaMac + "-0-" + printMac)
|
doPrintTest(pdaMac, printMac);
|
//doTemplet(1)
|
}
|
|
//执行模板打印测试-2022/6/24
|
function doTemplet (ids){
|
console.log(ids);
|
mui.ajax(storage["_basePath"] + '/getPrintInfoById', {
|
data: {
|
"ids": ids,
|
},
|
type: 'POST',
|
timeout: 10000,
|
success: function(data) {
|
console.log(JSON.stringify(data));
|
if (data.result) {
|
console.log(JSON.stringify(data.data));
|
for(var i=0;i<data.data.length;i++){
|
var printCmd=printTemplate(data.data[i])
|
doPrint00(printCmd)
|
}
|
} else {
|
//查询失败原因
|
// plus.ui.toast(data.msg);
|
}
|
},
|
error: function(xhr, type, errorThrown) {
|
plus.ui.toast('打印失败!失败类型是:' + type);
|
}
|
})
|
|
}
|
function doPrint00(printCmd){
|
console.log(bluetoothSocket.isConnected())
|
if (!bluetoothSocket.isConnected()) {
|
plus.ui.toast("重新连接");
|
bluetoothSocket.connect();
|
}
|
var outputStream = bluetoothSocket.getOutputStream();
|
plus.android.importClass(outputStream);
|
var arrayBuffer = plus.android.invoke(printCmd, 'getBytes', 'gbk'); //stringToByte(printCmd);
|
outputStream.write(arrayBuffer);
|
outputStream.flush();
|
}
|
|
|
//执行打印
|
function doPrintTest(pdaMac, printMac) {
|
try {
|
|
console.log(1);
|
|
console.log(bluetoothSocket);
|
|
if (!bluetoothSocket.isConnected()) {
|
plus.ui.toast("重新连接");
|
bluetoothSocket.connect();
|
}
|
|
|
|
var outputStream = bluetoothSocket.getOutputStream();
|
plus.android.importClass(outputStream);
|
|
//var barcode = "102000460*N017051601*14*170519*002";
|
var pdaMacStr = "PDA地址: " + pdaMac;
|
var printMacStr = "打印机地址: " + printMac;
|
var titleName = "测试页";
|
|
var printCmd = "! 0 203 203 490 1\r\n" +
|
"POSTFEED 19.5\n\r" + //打印之后走纸距离指令
|
"PAGE - WIDTH 640\r\n" +
|
"BOX 10 200 610 350 2\r\n" +
|
"LINE 10 270 610 270 1\r\n" +
|
"LINE 160 200 160 350 1\r\n" + //竖线
|
"TEXT 24 0 150 50 " + titleName + "\r\n" +
|
"TEXT 24 0 25 210 " + pdaMacStr + "\r\n" +
|
"TEXT 24 0 25 310 " + printMacStr + "\r\n" +
|
|
"B QR 350 50 M 2 U 5\r\n" + //二维码
|
"MA,打印成功~ \r\n" +
|
"ENDQR\r\n" +
|
|
"FORM\r\n" +
|
"PRINT\r\n";
|
|
var arrayBuffer = plus.android.invoke(printCmd, 'getBytes', 'gbk'); //stringToByte(printCmd);
|
outputStream.write(arrayBuffer);
|
outputStream.flush();
|
} catch (err) {
|
// alert(err);
|
console.log(err);
|
mui.alert(err)
|
}
|
}
|
|
function clear() {
|
$("#printMac").val("");
|
}
|
//获取本机打印信息
|
function getPrintInfo() {
|
var mac = "";
|
if (plus.os.name == "Android") {
|
//获取手机MAC地址
|
var Context = plus.android.importClass("android.content.Context");
|
var WifiManager = plus.android.importClass("android.net.wifi.WifiManager");
|
var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);
|
var WifiInfo = plus.android.importClass("android.net.wifi.WifiInfo");
|
var wifiInfo = wifiManager.getConnectionInfo();
|
mac = wifiInfo.getMacAddress();
|
|
//如果mac为“02:00:00:00:00:00”,则可能是安卓6.0以上版本,则使用另一种方法获取mac地址
|
if (mac == "02:00:00:00:00:00") {
|
mac = getMacNew();
|
}
|
//如果mac使用新方法依然是“02:00:00:00:00:00”则不进行保存
|
if(mac == "02:00:00:00:00:00") {
|
return;
|
}
|
|
api_localStorageSave("pdaMac", mac);
|
//console.log(mac)
|
|
}
|
}
|
//安卓6.0以上版本获取Mac地址
|
function getMacNew() {
|
var str = "";
|
try {
|
if (plus.os.name == "Android") {
|
var NetworkInterface = plus.android.importClass("java.net.NetworkInterface");
|
var networkInterface = NetworkInterface.getByName("wlan0");
|
var bytes = networkInterface.getHardwareAddress();
|
|
//将byte[] 转换成 String
|
for (var i = 0; i < bytes.length; i++) {
|
var tmp = "";
|
var num = bytes[i];
|
if (num < 0) {
|
tmp = (255 + num + 1).toString(16);
|
} else {
|
tmp = num.toString(16);
|
}
|
if (tmp.length == 1) {
|
tmp = "0" + tmp;
|
}
|
str += (i == 0) ? (tmp) : (":" + tmp);
|
}
|
}
|
} catch (err) {
|
str = "02:00:00:00:00:00";
|
}
|
return str;
|
}
|
</script>
|
</body>
|
</html>
|