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