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); }