var layer; var form; var snapData;//登记照片 $(function () { layui.use(['layer', 'laydate', 'form', 'util'], function () { var util = layui.util; var laydate = layui.laydate; layer = layui.layer; form = layui.form; laydate.render({ elem: '#userBirthday' }); }); showProgress(); var rightH = $(".rkbk-left-wrap").height(); $(".rkbk-right-wrap").height(rightH); $(window).resize(function () { var rightH = $(".rkbk-left-wrap").height(); $(".rkbk-right-wrap").height(rightH); }); // 初始化WebSocket // initWS(deptId, bizType, progress, userId); }); window.onload = function () { // 加载视频 initVideo(lprDto, null, null); }; //控制流程环节显示 function showProgress() { if (!inoutProgress) { return; } if (inoutProgress.indexOf("REGISTER") == -1) { $("#progress-register").css("display", "none"); } if (inoutProgress.indexOf("WEIGHT_FULL") == -1) { $("#progress-fullWeight").css("display", "none"); } if (inoutProgress.indexOf("HANDLE") == -1) { $("#progress-hand").css("display", "none"); } if (inoutProgress.indexOf("WEIGHT_EMPTY") == -1) { $("#progress-emptyWeight").css("display", "none"); } if (inoutProgress.indexOf("CARD_BACK") == -1) { $("#progress-cardBack").css("display", "none"); } } // socket信息返回處理 function socketOnMessage(packet) { }; //使用插件读取身份证 function flushIdCard() { var index = layer.load(); $.ajax({ type: "GET", async: true, url: "http://127.0.0.1:9111/IDCARD", data: {}, dataType: "json", success: function (json) { layer.close(index); var data = json; if (data.code === "200" || data.code == 200) { // 临时赋值 $("#userName").val(data.cnName); $("#userSex").val(data.sex); $("#userNation").val(data.nation); $("#userAddress").val(data.address); //$("#id_img_pers").attr("src",data.Image); var time = data.birthdate; if (time.length == 8) { time = time.substring(0, 4) + "-" + time.substring(4, 6) + "-" + time.substring(6); } $("#userBirthday").val(time); $("#userId").val(data.idNum); if (data.Image) { $("#id_img_pers").attr("src", data.Image); } getPhone(); }else{ alertError("没有获取到身份证信息!"); return; } }, error: function () { layer.alert("身份证读取失败!", { offset: ['300px', '300px'] }); layer.close(index); } }); } //使用插件读取智慧卡号 function flushICCard() { $("#intelCard").val(null); $.ajax({ type: "GET", async: true, url: "http://127.0.0.1:9111/ICCARD", data: {}, dataType: "json", // jsonp: "callback", // jsonpCallback: "jsonpCallback", success: function (json) { //console.log(json); var data = json; //console.log(data); if (data.code === "200" || data.code == 200) { $("#intelCard").val(data.no); } else { layer.alert("请重新读卡!", {offset: ['300px', '300px']}); } }, error: function () { layer.alert("IC卡读取出错!", {offset: ['300px', '300px']}); } }); } //获取联系方式 function getPhone() { var userId = $("#userId").val(); var data = { userId: userId }; $.ajax({ type: "POST", url: "../../basic/inout/driver-phone", dataType: "json", contentType: "application/json;charset=UTF-8", data: JSON.stringify(data), success: function (result) { if (result.code != "0000") { layer.msg("未获取到司机信息,请填写联系方式"); } else { $("#userContact").val(result.data.mobile); } }, error: function () { layer.msg("未获取到司机信息,请填写联系方式"); } }); } //读取车牌号 function flushPlateNum() { var param = JSON.stringify(lprDto); var index = layer.load(); $.ajax({ type: "POST", url: "../../inout/api/get-plateNum", dataType: "json", contentType: "application/json;charset=UTF-8", data: param, success: function (result) { if (result.code != "0000") { alertError(result.msg); } else { $("#plateNum").val(result.data.plateNum); $("#plateNum2").val(result.data.plateNum); if (plateTag === "Y") { plateNumImg(result.data.plateNum, result.data.platePath); } } layer.close(index); getPlateNumAfter() }, error: function () { layer.close(index); alertError("车牌识别失败!"); } }); } //获取挂车号 function getPlateNumAfter() { var plateNum = $("#plateNum").val(); var data = { plateNum: plateNum }; $.ajax({ type: "POST", url: "../../basic/inout/plate-num", dataType: "json", contentType: "application/json;charset=UTF-8", data: JSON.stringify(data), success: function (result) { if (result.code != "0000") { layer.msg("未获取到车牌信息,请填写挂车号"); } else { $("#plateNumAfter").val(result.data.plateNumAfter); } }, error: function () { layer.msg("未获取到车牌信息,请填写挂车号"); } }); } ///重置车牌识别信息 function resetPlateNum() { var index = layer.load(); var param = JSON.stringify(lprDto); $.ajax({ type: "POST", url: "../../inout/api/reset-lpr", dataType: "json", contentType: "application/json;charset=UTF-8", data: param, success: function (result) { if (result.code != "0000") { layer.alert(result.msg, { offset: ['300px', '300px'] }); } else { layer.alert("重置成功,请重新获取车牌信息", { offset: ['300px', '300px'] }); } layer.close(index); }, error: function () { layer.close(index); layer.alert("重置执行失败", { offset: ['300px', '300px'] }); } }); } // 表单清空 function resetForm() { $("#form-data")[0].reset(); form.render(); // 身份证重置 $("#id_img_pers").attr("src", "../../static/images/rkbk-photo_03.png"); $("#pz-img").removeClass("kccz-r-img-red"); $("#pz-text").text("自动抓拍"); } // 当前完成 function submit() { var data = form.val("form-data"); if (!data.plateNum) { alertError("承运人车牌号不能为空"); return; } if (!data.userName) { alertError("承运人姓名不能为空"); return; } if (!data.userId) { alertError("承运人身份证号不能为空"); return; } if (!data.userContact) { alertError("承运人联系方式不能为空"); return; } var isPhone = checkPhone(data.userContact); if (!isPhone) { alertError("手机号格式不对,请检查一下手机号"); return; } var isUserId = checkPsidno(data.userId); if (!isUserId) { alertError("身份证号格式不对,请检查一下身份证号"); return; } var isPlateNum = checkPlateNum(data.plateNum); if (!isPlateNum) { alertError("车牌号格式不对,请检查一下车牌号"); return; } //系统抓拍 layer.msg("系统自动抓拍记录……"); snapData = { companyId: companyId, deptId: deptId, progress: progress, bizType: type, plateNum: data.plateNum, id1: (null != lprDto) ? lprDto.id : null, id2: (null != lprDto) ? lprDto.id : null, }; $.ajax({ sync: false, type: "POST", url: "../../inout/api/snap-img", dataType: "json", contentType: "application/json;charset=UTF-8", data: JSON.stringify(snapData), success: function (result) { if (result.code != "0000") { layer.alert(result.msg); submitData(data); } else { snapData = result.data; $("#pz-img").addClass("kccz-r-img-red"); $("#pz-text").text("已拍照"); submitData(data); } }, error: function () { layer.msg("后台调用截图失败,请重新尝试!!"); submitData(data); } }); } //执行保存数据 function submitData(data) { var index = layer.load(); var files = [{ fileName: snapData.fileName1 },{ fileName: snapData.fileName2 }]; data.files = files; $.ajax({ type: "POST", url: "../../basic/inout/submit-register", dataType: "json", contentType: "application/json;charset=UTF-8", data: JSON.stringify(data), success: function (result) { layer.close(index); if (result.code != "0000") { notify(result.msg, result.data); } else { notify("数据提交成功", result.data); // 重置页面 resetForm(); } }, error: function () { layer.close(index); layer.alert("提交失败,请重新尝试!!"); } }); } /** * 弹出提醒框 * @param msg 提醒信息 * @param data 数据信息,可能为空 */ function notify(msg, data) { if (data) { //赋值 $("#resultMsg").text(msg); $("#resultUserName").text(data.userName); $("#resultPlateNum").text(data.plateNum); if ("IN" == data.type) { $("#resultType").text("入库-" + INOUT_PROGRESS_MSG(data.progress)); } else { $("#resultType").text("出库-" + INOUT_PROGRESS_MSG(data.progress)); } $("#resultIntelCard").text(data.intelCard); layer.open({ type: 1, offset: ['150px', '200px'], area: '450px;', shade: 0.8, id: 'dialog_notify_info', btn: ['确定'], content: $('#dialog-from-notify'), yes: function (index) { layer.closeAll(); } }); } else { layer.alert(msg, {offset: ['300px', '300px']}); } } function checkPhone(str) { var reg = /^1[3456789]\d{9}$/; // ^1 以1开头 // [3456789] 第2位,使用原子表里的任意一个原子都可以 // \d{9}$ 第三位 朝后可以是任意数字 并且最后结尾必须是数字 if (reg.test(str)) { return true; } else { return false; } } /** * @description : 校验身份证号是否合规(18位、15位) * @param value * @return {Boolean} true-合规 false-不合规 */ function checkPsidno(value) { var psidno = String(value) // 1.校验身份证号格式和长度 var regPsidno = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[X])$)$/ if (!regPsidno.test(psidno)) { return false; } // 2.校验前两位的省份编码是否正确 var province = { 11: '北京', 12: '天津', 13: '河北', 14: '山西', 15: '内蒙古', 21: '辽宁', 22: '吉林', 23: '黑龙江 ', 31: '上海', 32: '江苏', 33: '浙江', 34: '安徽', 35: '福建', 36: '江西', 37: '山东', 41: '河南', 42: '湖北 ', 43: '湖南', 44: '广东', 45: '广西', 46: '海南', 50: '重庆', 51: '四川', 52: '贵州', 53: '云南', 54: '西藏 ', 61: '陕西', 62: '甘肃', 63: '青海', 64: '宁夏', 65: '新疆', 71: '台湾', 81: '香港', 82: '澳门', 91: '国外' } if (!province[Number(psidno.slice(0, 2))]) { return false; } var reg; var arrSplit; var year; var month; var day; // 3.校验出生日期 if (psidno.length === 15) { // 15位号码 省(2位)市(2位)县(2位)年(2位)月(2位)日(2位)校验码(3位) reg = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/) arrSplit = psidno.match(reg) // 15位号码在年份前补 19 或 20 year = Number(arrSplit[2].charAt(0)) > 0 ? '19' + arrSplit[2] : '20' + arrSplit[2] month = arrSplit[3] day = arrSplit[4] if (!validateBirthday(year, month, day)) { return false; } } else if (psidno.length === 18) { // 18位号码 省(2位)市(2位)县(2位)年(4位)月(2位)日(2位)校验码(4位) reg = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/) arrSplit = psidno.match(reg) year = arrSplit[2] month = arrSplit[3] day = arrSplit[4] if (!validateBirthday(year, month, day)) { return false; } } else { return false; } // 4.18位号码校验生成的校验码 if (psidno.length === 18) { var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] // 加权因子 var parity = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'] // 校验码 var sum = 0; for (var i = 0; i < 17; i++) { sum += Number(psidno.charAt(i)) * Wi[i]; } if (parity[sum % 11] !== psidno[17]) { return false; } } return true; } // 校验出生日期是否合理 function validateBirthday(year, month, day) { year = Number(year) // 年 month = Number(month) // 月 day = Number(day) // 日 var nowTime = new Date().getTime() // 当前时间戳 var birthTime = new Date(year, month, day).getTime() // 获取出生日期的时间戳 // 不能是明天出生的吧 if (birthTime > nowTime) { return false; } // 一般人活不到150岁吧 var nowYear = new Date().getFullYear() if ((nowYear - year) > 150) { return false; } // 不能是13月出生的吧 if (month < 1 || month > 12) { return false; } // 不能是2月30号、4月31号、5月32号出生的吧 var date = new Date(year, month, 0) // 获取当月的最后一天 if (day < 1 || day > date.getDate()) { return false; } return true; } //车牌号验证方法 function checkPlateNum(plateNum) { var xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/; var creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/; if (plateNum.length === 7) { return creg.test(plateNum); } else if (plateNum.length === 8) { return xreg.test(plateNum); } else { return false; } } /** * 弹出提醒框 * @param plateNum 提醒信息 * @param platePath 数据信息,可能为空 */ plateNumImg = function (plateNum, platePath) { var mainDiv = $("#plateNumId"); mainDiv.empty(); var html = "" if (!plateNum) { console.log("1") html += "
未读取到车牌号
"; } else { console.log(plateNum) html += "
" + plateNum + "
"; } html += "
"; mainDiv.html(html); layer.open({ type: 1, title: "车牌号对比", offset: 'l', shade: 0.8, area: ['55%', '90%'], id: 'dialog_plate_img', btn: ['确定'], content: $('#plateNumImg'), yes: function (index) { layer.closeAll(); } }); };