<!DOCTYPE html>
|
<html>
|
<head>
|
<meta charset="utf-8">
|
<title>出库登记</title>
|
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
|
<link href="./css/mui.min.css" rel="stylesheet" />
|
|
<style>
|
/* 标题样式 */
|
.mui-bar-nav {
|
background: #245ca7;
|
}
|
.mui-title {
|
color: #FFFFFF;
|
}
|
.mui-icon-back:before, .mui-icon-left-nav:before {
|
color: #FFFFFF;
|
}
|
/* 主体内容样式 */
|
.mui-content{
|
width: 97%;
|
margin: auto;
|
}
|
.mui-input-group .mui-input-row {
|
height: 50px;
|
}
|
.mui-input-row label {
|
width: 38%;
|
padding: 11px 8px;
|
text-align: right;
|
padding: 16px 15px;
|
}
|
.mui-input-row label~input {
|
width: 62%;
|
height: 50px;
|
}
|
.mui-input-group {
|
margin: 25px 0;
|
border-radius: 10px;
|
position: unset;
|
}
|
.btn{
|
margin-top: 8px;
|
margin-right: 2px;
|
float: right;
|
background: #EC971F;
|
color: #fff;
|
padding: 6px 15px;
|
}
|
.mui-btn-block {
|
font-size: 18px;
|
display: block;
|
width: 100%;
|
margin-bottom: 10px;
|
padding: 10px 0;
|
}
|
</style>
|
</head>
|
<body>
|
<header class="mui-bar mui-bar-nav">
|
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
|
<h1 class="mui-title">出库登记</h1>
|
</header>
|
<div class="mui-content">
|
|
<form class="mui-input-group">
|
<div class="mui-input-row">
|
<label>智慧卡号:</label>
|
<input id="intelCard" style="width: 40%; float: left;" type="text" placeholder="读取智慧卡号">
|
<div>
|
<button type="button" class="btn" onclick="getCheck()">读卡</button>
|
</div>
|
</div>
|
<div class="mui-input-row">
|
<label>车牌号:</label>
|
<input id="plateNum" type="text" class="mui-input-clear" placeholder="请输入车牌号">
|
</div>
|
<div class="mui-input-row">
|
<label>承运人:</label>
|
<input id="userName" type="text" class="mui-input-clear" placeholder="请输入姓名">
|
</div>
|
<div class="mui-input-row">
|
<label>身份证号:</label>
|
<input id="userId" type="text" class="mui-input-clear" placeholder="请输入身份证">
|
</div>
|
<div class="mui-input-row">
|
<label>手机号:</label>
|
<input id="userContact" type="text" class="mui-input-clear" placeholder="请输入手机号">
|
</div>
|
</form>
|
<div style="padding: 10px;">
|
<button class="mui-btn mui-btn-block mui-btn-green" onclick="register()">确认登记</button>
|
</div>
|
</div>
|
<script src="./js/mui.js"></script>
|
<script src="./js/jquery.min.js"></script>
|
<script src="./js/echarts.min.js"></script>
|
|
<script type="text/javascript" charset="utf-8">
|
mui.init();
|
var url; //接口路径
|
var data = {
|
"interfaceId": "5210",
|
"sign": "10210",
|
"outId": "10210",
|
"reqDateTime": new Date(),
|
"tokenAuth": "",
|
"data": {
|
"plateNum": "",
|
"userName": "",
|
"userId": "",
|
"userContact": ""
|
}
|
};
|
|
mui.plusReady(function() {
|
var user = JSON.parse(localStorage.getItem('user'));
|
data.tokenAuth = user.tokenAuth;
|
url = user.url + "/api-phone/gateway";
|
});
|
|
//更新用户信息
|
function register(){
|
//验证车牌号
|
var plateNum = mui("#plateNum")[0].value;
|
if (plateNum == '') {
|
mui.alert("请输入车牌号!", '提示',["确定"],function(){},"div");
|
return;
|
}
|
|
//承运人姓名
|
var userName = mui("#userName")[0].value;
|
|
//验证承运人身份证和手机号,必填其一
|
var userId = mui("#userId")[0].value;
|
var userContact = mui("#userContact")[0].value;
|
if (userId == '' && userContact == '') {
|
mui.alert("身份证和手机号填写其中一个!", '提示',["确定"],function(){},"div");
|
return;
|
}
|
|
//赋值
|
data.data.plateNum = plateNum;
|
data.data.userName = userName;
|
data.data.userId = userId;
|
data.data.userContact = userContact;
|
registerSubmit();
|
}
|
|
//发送更新请求
|
function registerSubmit() {
|
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.toast(result.data);
|
location.reload();
|
} else {
|
mui.alert(result.msg, '提示', ["确定"], function() {}, "div");
|
}
|
},
|
error: function() {
|
mui.alert('系统繁忙,请重试!', '提示', ["确定"], function() {}, "div");
|
}
|
})
|
}
|
|
/*---------------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);
|
}
|
</script>
|
</body>
|
</html>
|