var url = null;
|
var data = {
|
"interfaceId": "5201",
|
"sign": "10201",
|
"outId": "10201",
|
"reqDateTime": new Date(),
|
"tokenAuth": "",
|
"data": {
|
"deptId": "", //库区编码
|
"plateNum": "", //车牌号
|
"userName": "", //承运人姓名
|
"userId": "", //承运人身份证号
|
"intelCard": "", //智慧卡号
|
"userContact": "" //承运人手机号
|
}
|
};
|
|
//初始化数据
|
function init() {
|
var user = JSON.parse(localStorage.getItem('user'));
|
var selectDeptId = JSON.parse(localStorage.getItem('selectDeptId'));
|
url = user.url + "/api-phone/v35/gateway";
|
data.tokenAuth = user.tokenAuth;
|
data.data.deptId = selectDeptId;
|
}
|
|
//入库登记提交
|
function registerInSubmit() {
|
//验证车牌号
|
var plateNum = mui("#plateNum")[0].value;
|
if (plateNum == '') {
|
mui.alert("请输入车牌号!", '提示', ["确定"], function() {}, "div");
|
return;
|
}
|
|
//验证身份证号和一卡通号,二者至少填其一
|
var userId = mui("#userId")[0].value;
|
var intelCard = mui("#intelCard")[0].value;
|
if (userId == '' && intelCard == '') {
|
mui.alert("身份证和智慧卡号至少填写其中一个!", '提示', ["确定"], function() {}, "div");
|
return;
|
}
|
|
//验证承运人名称
|
var userName = mui("#userName")[0].value;
|
if (userName == '') {
|
mui.alert("请输入承运人名称!", '提示', ["确定"], function() {}, "div");
|
return;
|
}
|
//承运人手机号码
|
var userContact = mui("#userContact")[0].value;
|
|
//参数赋值
|
data.data.plateNum = plateNum;
|
data.data.userId = userId;
|
data.data.intelCard = intelCard;
|
data.data.userName = userName;
|
data.data.userContact = userContact;
|
|
mui.ajax(url, {
|
type: "POST",
|
dataType: "json",
|
crossDomain: true,
|
contentType: "application/json;charset=utf-8",
|
data: JSON.stringify(data),
|
success: function(result) {
|
if (result.code == "0000") {
|
mui.alert('入库登记成功!', '提示', ["确定"], function() {
|
location.reload();
|
}, "div");
|
} else {
|
mui.alert(result.msg, '提示', ["确定"], function() {}, "div");
|
}
|
},
|
error: function() {
|
mui.alert('系统繁忙,请重新登录尝试!', '提示', ["确定"], function() {}, "div");
|
}
|
})
|
}
|
|
//滑动
|
mui('.mui-scroll-wrapper').scroll({
|
indicators: false, //是否显示滚动条
|
deceleration: 0.0006, //阻尼系数,系数越小滑动越灵敏
|
bounce: false, //是否启用回弹
|
deceleration: 0.0005 //flick 减速系数,系数越大,滚动速度越慢,滚动距离越小,默认值0.0006
|
});
|
|
/*---------------NFC读卡功能-------------------*/
|
var waiting;
|
var readyRead = false;
|
//读卡方法
|
function readCard() {
|
readyRead = true;
|
listenNFCStatus();
|
}
|
|
var NfcAdapter;
|
var NdefRecord;
|
var NdefMessage;
|
var count = 0;
|
//监听NFC状态
|
function listenNFCStatus() {
|
try {
|
var main = plus.android.runtimeMainActivity();
|
var Intent = plus.android.importClass('android.content.Intent');
|
var Activity = plus.android.importClass('android.app.Activity');
|
var PendingIntent = plus.android.importClass('android.app.PendingIntent');
|
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
|
NfcAdapter = plus.android.importClass('android.nfc.NfcAdapter');
|
var nfcAdapter = NfcAdapter.getDefaultAdapter(main);
|
|
//判断设备是否支持NFC功能
|
if (nfcAdapter == null) {
|
mui.alert("设备不支持NFC功能!", '提示', ["确定"], function() {}, "div");
|
return;
|
}
|
|
//判断设备是否开启NFC功能
|
if (!nfcAdapter.isEnabled()) {
|
mui.alert("请在系统设置中启用NFC功能!", '提示', ["确定"], function() {}, "div");
|
return;
|
}
|
waiting = plus.nativeUI.showWaiting("请将NFC标签靠近!");
|
|
//倒计时10秒,读取不到后提示是否重新读卡
|
var interval = setInterval(function() {
|
//定义定时器
|
count++;
|
if (count == 10 && readyRead) {
|
readyRead = false;
|
count = 0;
|
waiting.close();
|
//清除定时器
|
clearInterval(interval);
|
var btnArray = ["重试", "取消"];
|
mui.confirm("已超时,是否重新读卡!", "提示", btnArray, function(e) {
|
if (e.index == 0) {
|
readCard();
|
}
|
}, "div")
|
}
|
}, 1000);
|
|
var intent = new Intent(main, main.getClass());
|
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
var pendingIntent = PendingIntent.getActivity(main, 0, intent, 0);
|
var ndef = new IntentFilter("android.nfc.action.TECH_DISCOVERED");
|
ndef.addDataType("*/*");
|
var intentFiltersArray = [ndef];
|
var techListsArray = [
|
["android.nfc.tech.IsoDep"],
|
["android.nfc.tech.NfcA"],
|
["android.nfc.tech.NfcB"],
|
["android.nfc.tech.NfcF"],
|
["android.nfc.tech.Ndef"],
|
["android.nfc.tech.NfcV"],
|
["android.nfc.tech.NdefFormatable"],
|
["android.nfc.tech.MifareClassic"],
|
["android.nfc.tech.MifareUltralight"]
|
];
|
document.addEventListener("newintent",
|
function() {
|
setTimeout(readData, 1000);
|
}, false);
|
document.addEventListener("pause",
|
function(e) {
|
if (nfcAdapter) {
|
nfcAdapter.disableForegroundDispatch(main);
|
}
|
}, false);
|
document.addEventListener("resume",
|
function(e) {
|
if (nfcAdapter) {
|
nfcAdapter.enableForegroundDispatch(main, pendingIntent, intentFiltersArray, techListsArray);
|
}
|
}, false);
|
nfcAdapter.enableForegroundDispatch(main, pendingIntent, intentFiltersArray, techListsArray);
|
|
} catch (e) {
|
mui.toast("读卡失败,请重试!");
|
waiting.close();
|
}
|
}
|
|
//读取数据
|
function readData() {
|
NdefRecord = plus.android.importClass("android.nfc.NdefRecord");
|
NdefMessage = plus.android.importClass("android.nfc.NdefMessage");
|
var main = plus.android.runtimeMainActivity();
|
var intent = main.getIntent();
|
if ("android.nfc.action.TECH_DISCOVERED" == intent.getAction()) { //打包时
|
if (readyRead) {
|
readyRead = false;
|
|
waiting.setTitle('请勿移开标签\n正在读取数据...');
|
var Parcelable = plus.android.importClass("android.os.Parcelable");
|
//读取id
|
var byteId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
|
//将id转为16进制字符串
|
var id = ByteArrayToHexString(byteId);
|
//关闭等待圆圈
|
waiting.close();
|
id = tran_LH8(id);
|
//读取id成功,赋值并发送请求查询
|
$("#intelCard").val(id);
|
}
|
} else {
|
waiting.close();
|
mui.alert('读取失败,请重试!', '提示', ["确定"], function() {}, "div");
|
}
|
}
|
|
//将字节数组转为16进制字符串
|
function ByteArrayToHexString(inarray) {
|
var i, j, inn;
|
hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
|
out = "";
|
for (j = 0; j < inarray.length; ++j) {
|
inn = inarray[j] & 0xff;
|
i = (inn >>> 4) & 0x0f;
|
out += hex[i];
|
i = inn & 0x0f;
|
out += hex[i];
|
}
|
return out;
|
}
|
|
//16进制字符串 高低换位 8个字符
|
function tran_LH8(info) {
|
var tag = tran_LH(info.substring(4)) + tran_LH(info.substring(0, 4));
|
return hex2int(tag);
|
}
|
|
//16进制字符串 高低换位 4个字符
|
function tran_LH(info) {
|
return info.substring(2) + info.substring(0, 2);
|
}
|
|
function hex2int(hex) {
|
var len = hex.length,
|
a = new Array(len),
|
code;
|
for (var i = 0; i < len; i++) {
|
code = hex.charCodeAt(i);
|
if (48 <= code && code < 58) {
|
code -= 48;
|
} else {
|
code = (code & 0xdf) - 65 + 10;
|
}
|
a[i] = code;
|
}
|
|
return a.reduce(function(acc, c) {
|
acc = 16 * acc + c;
|
return acc;
|
}, 0);
|
}
|