//数据 //设置签到签退超出距离 var DISTANCE = $("#charge-bj").val(); var chargeBj={"100":"100米","200":"200米","300":"300米","500":"500米"}; var chargeGps={"50":">=50%","60":">=60%","70":">=70%","80":">=80%","90":">=90%","100":"100%"}; //电子围栏半径 var km; var fun = { init: function () { //初始化停车场下拉框 commSelect.area_Pl_LinkedSelect("#parkArea", "#parkIds", null, "", 3); //查询围栏半径 fun.getDict('PARK_ENCLOSURE_RADIUS'); //时间初始化 fun.dateInit(); fun.timeInit(); //收费员初始化 fun.tollperInit(); //半径 fun.chargebgInit(); //gps fun.chargeGpsInit(); //表格初始化 fun.createTableData(); //签到人数初始化 fun.getSignInfoForNumber(); }, //半径初始化 chargebgInit:function () { //初始化卡类型下拉框 var chargeBjSelect=""; $.each(chargeBj, function(index,row) { //默认选中300 if(index == '300'){ chargeBjSelect+=''; }else{ chargeBjSelect+=''; } }); $("#charge-bj").empty(); $("#charge-bj").append(chargeBjSelect); $("#charge-bj").selectpicker('refresh'); }, //半径初始化 chargeGpsInit:function () { //初始化卡类型下拉框 var chargegpsSelect=""; $.each(chargeGps, function(index,row) { //默认选中300 if(index == '80'){ chargegpsSelect+=''; }else{ chargegpsSelect+=''; } }); $("#charge-gps").empty(); $("#charge-gps").append(chargegpsSelect); $("#charge-gps").selectpicker('refresh'); }, //时间初始化 dateInit: function () { $('#tollcheck-daydaterange-btnsta').val(moment().subtract('days', 0).format('YYYY-MM-DD')); $('#tollcheck-daydaterange-btnend').val(moment().subtract('days', 0).format('YYYY-MM-DD')); //开始日期 $("#tollcheck-daydaterange-btnsta").datetimepicker({ endDate: moment().subtract('days', 0).format('YYYY-MM-DD'), format: 'yyyy-mm-dd', autoclose: true, startView: 2, //maxDate:moment().subtract('months', 3), minView: 2, forceParse: false, locale: "zh-CN", language: 'zh-CN', pickerPosition: "bottom-right" }) $("#tollcheck-daydaterange-btnend").datetimepicker({ endDate: moment().subtract('days', 0).format('YYYY-MM-DD'), //startDate:startVal, format: 'yyyy-mm-dd', weekStart: 1, autoclose: true, startView: 2, minView: 2, forceParse: false, locale: "zh-CN", language: 'zh-CN', pickerPosition: "bottom-right" }) }, //time 24小时初始化 timeInit:function () { //签到时间初始化 laydate.render({ elem: '#qdtollcheck-time-btnsta',//指定元素 type: 'time', theme: '#1E95CD',//主体颜色 value: '', min: '00:00:00', max: '23:59:59', format: 'HH:mm:ss', btns: ['clear', 'confirm'], position: 'fixed', }); laydate.render({ elem: '#qdtollcheck-time-btnend',//指定元素 type: 'time', theme: '#1E95CD',//主体颜色 value: '', min: '00:00:00', max: '23:59:59', format: 'HH:mm:ss', btns: ['clear', 'confirm'], position: 'fixed', }); //签退时间初始化 laydate.render({ elem: '#qttollcheck-time-btnsta',//指定元素 type: 'time', theme: '#1E95CD',//主体颜色 value: '', min: '00:00:00', max: '23:59:59', format: 'HH:mm:ss', btns: ['clear', 'confirm'], position: 'fixed', }); laydate.render({ elem: '#qttollcheck-time-btnend',//指定元素 type: 'time', theme: '#1E95CD',//主体颜色 value: '', min: '00:00:00', max: '23:59:59', format: 'HH:mm:ss', btns: ['clear', 'confirm'], position: 'fixed', }); }, //获取接口收费员信息 getChargerMsg: function () { var plNo = ""; var chargers = ""; var req = { baseRequest: {pageNum: 1, pageSize: 0}, plNo: plNo, parkAreaCode: "", groupCode: "", onduty: "", status: "", nameOrNo: "", orgId:fn.getOrgId(), sysCode: sysComm.sysCode }; var opt = { async: false, data: JSON.stringify(req), method: "POST", url: dataUrl.util.queryCashierListInfo(), success: function (res) { if (res.code == '8888') { chargers = JSON.stringify(res.data.rows); } } } sysAjax(opt); return JSON.parse(chargers); }, //收费员下拉框 tollperInit:function () { var data = fun.getChargerMsg(); var htmls = ''; var html = ''; var chargerCodes = []; for (var i = 0; i < data.length; i++) { chargerCodes.push(data[i].chargerCode); html += ""; } var chargerCodesStr = JSON.stringify(chargerCodes); htmls = '' + html; $("#tollcheck-tollper").empty(); $("#tollcheck-tollper").append(htmls); $('#tollcheck-tollper').selectpicker('render'); }, getDict: function (dictKind) { var data = new Array(); if (undefined == dictKind) { return null; } var req = { sysCode: sysComm.sysCode, sysCodeKind: dictKind } var opt = { data: JSON.stringify(req), method: "POST", async: false, url: dataUrl.util.getSysCodeValueByKind(), async: false, success: function (res) { console.log(res) if (res.code == '8888') { //return res.data; km = res.data[0].codeValue; } } } sysAjax(opt); }, getSignInfoForNumber:function(){ $("#card_numAll").text("0"); $("#card_numTrue").text("0"); $("#card_numNo").text("0"); var req=fun.getQueryParam(); req.inBeginTime = null; req.inEndTime = null; //条件查询 req.baseRequest = { pageNum: 1, pageSize: 0 }; var opt = { method: 'post', url: dataUrl.util.queryChargerSignInfoNumber(), data: JSON.stringify(req), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (res) { console.log(res); if (res.code == '8888') { var data=res.data; if(data !=null){ $("#card_numAll").text(commonObj.numberFormatter(data.allTollCollector)); $("#card_numTrue").text(commonObj.numberFormatter(data.signInTollCollector)); $("#card_numNo").text(commonObj.numberFormatter(data.allTollCollector - data.signInTollCollector)); } } } }; sysAjax(opt); }, getSignTailInfo:function(id){ var result = []; if(id == undefined || id == null || id == ''){ console.log("id为空!"); return; } var req = {}; req.beginTime=fun.getQueryParam().beginTime; req.endTime=fun.getQueryParam().endTime; req.signRecordId = id; //条件查询 req.baseRequest = { pageNum: 1, pageSize: 500 }; req.sysCode = sysComm.sysCode; var opt = { async: false, method: 'post', url: dataUrl.util.querySignTailInfoBySignId(), data: JSON.stringify(req), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (res) { console.log(res); if (res.code == '8888') { var data=res.data.rows; if(data != null){ result = data; } } } }; sysAjax(opt); return result; }, //默认数据 table 全部 createTableData: function () { $('#tollchecktable').bootstrapTable('destroy').bootstrapTable({ striped: true, //表格显示条纹 pagination: true, //启动分页 pageNumber: 1, //当前第几页 // showColumns: true, pageSize: 10, //每页显示的记录数 pageList: [10, 15, 20], //记录数可选列表 sidePagination: 'server', //表示服务端分页 queryParamsType: 'limit', method: 'POST', //请求方法 // fixedColumns: true, // fixedNumber: 1, // leftFixedColumns: true, // leftFixedNumber: 3, //rightFixedColumns: true, //rightFixedNumber: 1, // selectItemName: 'personCustName', paginationPreText: '<', paginationNextText: '>', ajax: tableLoadRequest, //自定义ajax加载数据 uniqueId: 'id', // rowStyle:fun.markTheTable, onClickRow:fun.clickTheRow, columns: [ { field: 'chargerName', title: '收费员信息', width: '10%', visible: true, align: "left", formatter: function (value, row, index) { return '
' + commonClass.cutString(value, 8) + '
' + '
PDA:' + commonObj.replacenull(row.deviceCode) + '
'; } }, { field: 'plName', title: '车场信息', width: '10%', align: "left", formatter: function (value, row, index) { return '
'+commonObj.replacenull(row.plName)+'
'+ '
'+commonObj.replacenull(row.parkAreaNames)+'
'; } }, { field: 'signInTime', title: '签到(退)时间', width: '10%', align: "left", formatter: function (value, row, index) { return '
'+commonObj.timeFormatter(row.signInTime)+'
'+ '
'+commonObj.timeFormatter(row.signOutTime)+'
'; } }, { field: 'signOutType', title: '签到(退)类型', width: '20%', align: "left", formatter: function (value, row, index) { var inresult = ""; var outresult = ""; var thtml=''; if(row.signInDistance == null || row.signInDistance <= DISTANCE){ inresult = "正常签到"; thtml += '
'+commonObj.replacenull(inresult)+'
'; }else{ inresult = "超距离签到"; thtml +='
'+commonObj.replacenull(inresult)+'
'; } if(row.signOutType==null){ outresult=''; thtml +='
'+commonObj.replacenull(outresult)+'
'; }else { if(1 == (row.signOutType)){ if( row.signOutDistance <= DISTANCE){ outresult = "正常签退"; thtml +='
'+commonObj.replacenull(outresult)+'
'; }else{ outresult = "超距离签退"; thtml +='
'+commonObj.replacenull(outresult)+'
'; } }else if(0 == (row.signOutType)){ outresult = "云平台操作强制签退"; thtml +='
'+commonObj.replacenull(outresult)+'
'; }else if(2 == (row.signOutType)){ outresult = "重新登录签退"; thtml +='
'+commonObj.replacenull(outresult)+'
'; }else if(3 == (row.signOutType)){ outresult = "超时未上报心跳,系统强制签退"; thtml +='
'+commonObj.replacenull(outresult)+'
'; }else{ outresult = "未知"; thtml +='
'+commonObj.replacenull(outresult)+'
'; } } return thtml; } }, { field: 'signInDistance', title: '签到(退)距离', width: '10%', align: "left", formatter: function (value, row, index) { var result = ""; if(row.signOutDistance == null){ result = "-"; }else{ result = commonObj.numberFormatter(row.signOutDistance) +'米'; } return '
' + '签到 ' +commonObj.numberFormatter(value)+'米
'+ '
' + '签退 ' +(result)+'
' } }, { field: 'gpsRate', title: 'GPS点位', width: '10%', align: "left", formatter: function (value, row, index) { return '
点位正常率:'+fun.gpsRateFormatter(value)+'
'+ '
查询轨迹
'; } }, ] }); }, gpsRateFormatter:function(value, row, index){ if(value == null || value==''){ return "0%"; } return ((value*100).toFixed(2))+"%"; }, //点击行 clickTheRow:function (value,row, index) { var plNo = value.plNo; var id = value.id; console.log(id); //获取pda轨迹经纬度 var tailList = fun.getSignTailInfo(id); //处理pda轨迹经纬度 var pdaData=[]; $.each(tailList, function(index,item) { if(item.signDistance != null && item.signDistance > fun.getQueryParam().distance){ var _item = { "pointX":item.lonId,"pointY":item.latId,"distance":index.signDistance, "pdatime":commonObj.timeFormatter(index.recordTime), "chargerName":commonObj.replacenull(item.chargerName),"type":"签到" }; pdaData.push(_item); } }); //获取停车场经纬度 var parkLonId =0; var parkLatId =0; var parks = fn.getParkLot(); $.each(parks, function(index,item) { if(item.code == plNo){ parkLonId = item.lonId; parkLatId = item.latId; } }); var parkData=[ {"pointX":parkLonId,"pointY":parkLatId}]; // if(value.signOutLonid != null && value.signOutLatid != null){ // var outData = { // "pointX":value.signOutLonid,"pointY":value.signOutLatid,"distance":value.signOutDistance,"pdatime":commonObj.timeFormatter(value.signOutTime),"chargerName":commonObj.replacenull(value.chargerName),"type":"签退" // }; // pdaData.push(outData); // } $('#tollcheck_mapmodel').modal('show'); setTimeout(function () { fun.drawMarker(parkData,pdaData) },300); }, /*获取查询参数*/ getQueryParam: function () { //时间 var signInBeginTime= $("#tollcheck-daydaterange-btnsta").val(); var signInEndTime=$("#tollcheck-daydaterange-btnend").val(); var inBeginTime = $("#qdtollcheck-time-btnsta").val(); var inEndTime = $("#qdtollcheck-time-btnend").val(); signInBeginTime += " 00:00:00"; signInEndTime += " 23:59:59"; // if(inBeginTime == undefined || inBeginTime == null || inBeginTime == ""){ // signInBeginTime += " 00:00:00"; // }else{ // signInBeginTime += (" " + inBeginTime); // } // if(inEndTime == undefined || inEndTime == null || inEndTime == ""){ // signInEndTime += " 23:59:59"; // }else{ // signInEndTime += (" " + inEndTime); // } var outBeginTime = $("#qttollcheck-time-btnsta").val(); var outEndTime = $("#qttollcheck-time-btnend").val(); if(outBeginTime == undefined || outBeginTime == null || outBeginTime == ""){ signOutBeginTime = null; }else{ signOutBeginTime = ($("#tollcheck-daydaterange-btnsta").val() + " " + outBeginTime); signOutBeginTime = new Date(signOutBeginTime.replace(new RegExp(/-/gm) ,"/")); } if(outEndTime == undefined || outEndTime == null || outEndTime == ""){ signOutEndTime = null; }else{ signOutEndTime = ($("#tollcheck-daydaterange-btnend").val() + " " + outEndTime); signOutEndTime = new Date(signOutEndTime.replace(new RegExp(/-/gm) ,"/")); } signInBeginTime = new Date(signInBeginTime.replace(new RegExp(/-/gm) ,"/")); signInEndTime = new Date(signInEndTime.replace(new RegExp(/-/gm) ,"/")); //收费员 var tollper = JSON.parse($("#tollcheck-tollper").val()); if (tollper.length < 1) { tollper.push("-1X"); } //停车场 var plNos = JSON.parse($("#parkIds").val()); if (plNos.length < 1) { plNos.push("-1X"); } //gpsRate var gpsRate = $("#charge-gps").val(); if (gpsRate != null && gpsRate != "") { gpsRate = gpsRate/100; } DISTANCE = $("#charge-bj").val(); var req = { sysCode: sysComm.sysCode, chargerCodes: tollper, plNos:plNos, gpsRate:gpsRate, beginTime:signInBeginTime, endTime:signInEndTime, signInBeginTime:signInBeginTime, signInEndTime:signInEndTime, signOutBeginTime:signOutBeginTime, signOutEndTime:signOutEndTime, distance : DISTANCE, distanceCol : DISTANCE, inBeginTime:inBeginTime, inEndTime:inEndTime, outBeginTime:outBeginTime, outEndTime:outEndTime }; var index = fun.getDiffIndex(); // distanceFlag /**全部-null 正常-0 异常-1*/ //全部 if(index == 0){ req.distanceFlag = null; } //正常 if(index == 1){ req.distanceFlag = 0; } //异常 if(index == 2){ req.distanceFlag = 1 } return req; }, //获取正常异常下标 getDiffIndex:function(){ return $('#tab-btn-wrap li.tabAction').index(); }, // 地图初始化 drawMarker:function(parkData,pdaData) { // 添加百度地图 var lonPark = parkData[0].pointX; var latPark = parkData[0].pointY; console.log(lonPark,latPark) var map; //Map实例 //清除以前的点位 // map.clearOverlays(); map = new BMap.Map('allmap', {enableMapClick: false}); map.clearOverlays(); //第1步:设置地图中心点,当前城市 var cenpoint = new BMap.Point(lonPark,latPark); //第2步:初始化地图,设置中心点坐标和地图级别。 map.centerAndZoom(cenpoint, 18); map.setCurrentCity(sysComm.cityName); // 设置地图显示的城市 此项是必须设置的 //坐标强制居中 // map.panBy(340, 250); //第3步:启用滚轮放大缩小 map.enableScrollWheelZoom(true); //第4步:向地图中添加缩放控件 //第5步:检测浏览器兼容 function checkhHtml5() { if (typeof(Worker) === "undefined") { if (navigator.userAgent.indexOf("MSIE 9.0") <= 0) { alert("定制个性地图示例:IE9以下不兼容,推荐使用百度浏览器、chrome、firefox、safari、IE10"); } } } checkhHtml5(); //第7步:绘制点 var parkmarker = []; var parknewpoiX = null;//坐标 var parknewpoiY = null; for (var i = 0; i < parkData.length; i++) { parknewpoiX = parkData[i].pointX; parknewpoiY = parkData[i].pointY; var newPoint = new BMap.Point(parknewpoiX, parknewpoiY); //pda标题 var pLabels = new BMap.Label('
正常区域
', { offset: new BMap.Size(-28, -12), //label的偏移量,为了让label的中心显示在点上 position: newPoint}); pLabels.setStyle({ color: "#F0F0F0", fontSize: "12px", padding: "4px", whiteSpace: "normal", backgroundColor: "#28A4DE", border: "0px", zIndex: "1000", width:"58px", height:"24px", } ); map.addOverlay(pLabels); // //电子围栏函数 addCircle(km, parknewpoiX,parknewpoiY); pdadrawFun(pdaData); }; // 停车场画圆 半径:km function addCircle(km,parknewpoiX,parknewpoiY) { var mPoint = new BMap.Point(parknewpoiX,parknewpoiY); var circle = new BMap.Circle(mPoint,fun.getQueryParam().distance,{fillColor:"#1E95CD",stroke: "#1E95CD",strokeWeight: '2' ,fillOpacity: 0.2, strokeOpacity: 0.1}); map.addOverlay(circle); }; // pda function pdadrawFun(pdaData){ console.log(pdaData); var pdamarker = []; var newpoiX = null;//坐标 var newpoiY = null; var distance = null;//签到距离 var pdatime = null;//签到时间 var chargerName = null;//收费员名称 for(var j=0;j异常', { offset: new BMap.Size(4, -10), //label的偏移量,为了让label的中心显示在点上 position: pdapoint}); myLabels.setStyle({ color: "#F0F0F0", fontSize: "12px", padding: "5px", whiteSpace: "normal", backgroundColor: "rgba(0, 0, 0, 0)", border: "0px", zIndex: "1000" } ); map.addOverlay(myLabels); //添加pdaicon var myIconpda = new BMap.Icon("../../assets/pages/scripts/tollFile/chargeFile/cricleico.png", new BMap.Size(23, 26)/*, { offset: new BMap.Size(0, 0), textColor: '#fff' }*/); pdamarker[j]= new BMap.Marker(pdapoint, {icon: myIconpda}); map.addOverlay(pdamarker[j]); // } } } }, //导出函数 exportList:function(){ //校验日期 var req = fun.getQueryParam(); var signInBeginTime = DateUtils.long2String(req.signInBeginTime, 7); var signInEndTime = DateUtils.long2String(req.signInEndTime, 7); var signOutBeginTime = null; if(req.signOutBeginTime != null){ signOutBeginTime = DateUtils.long2String(req.signOutBeginTime, 7); } var signOutEndTime = null; if(req.signOutEndTime != null){ signOutEndTime = DateUtils.long2String(req.signOutEndTime, 7); } var url = dataUrl.util.exportChargerSignGpsRateListNew() + '?chargerCodes=' + req.chargerCodes + '&plNos=' + req.plNos +'&gpsRate=' + req.gpsRate + '&distance=' + req.distance +'&distanceCol=' + req.distanceCol + '&signInBeginTime=' + signInBeginTime + '&signInEndTime=' + signInEndTime + '&beginTime=' + signInBeginTime + '&endTime=' + signInEndTime + '&sysCode='+sysComm.sysCode; if(signOutBeginTime != null){ url +=('&signOutBeginTime=' + signOutBeginTime); } if(signOutEndTime != null){ url +=('&signOutEndTime=' + signOutEndTime); } if(req.outBeginTime != null && req.outBeginTime != ''){ url +=('&outBeginTime=' + req.outBeginTime); } if(req.outEndTime != null && req.outEndTime != ''){ url +=('&outEndTime=' + req.outEndTime); } if(req.inBeginTime != null && req.inBeginTime != ''){ url +=('&inBeginTime=' + req.inBeginTime); } if(req.inEndTime != null && req.inEndTime != ''){ url +=('&inEndTime=' + req.inEndTime); } window.downloadFile(url); }, }; fun.init(); //查询按钮 $('#tollcheck-Btn').on('click',function () { fun.createTableData(); //签到人数初始化 fun.getSignInfoForNumber(); }); //隐藏显示 查询条件 搜索框 hide-common-style documentBindFunc.on('click', ".ITD-search-morebtn", function () { $(".hide-common-style").toggleClass("display-none"); }); /** * 自定义table AJAX请求 * @param {Object} params */ function tableLoadRequest(params) { var req = fun.getQueryParam(); //设置请求参数 var pageNum = (params.data.offset / params.data.limit) + 1; //条件查询 req.baseRequest = { pageNum: pageNum, pageSize: params.data.limit }; var opt = { method: 'post', url: dataUrl.util.querySignRecordAndRateByChargerCodeNew(), data: JSON.stringify(req), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (res) { //console.log(res); if (res.code == '8888') { params.success(res.data); $("[data-toggle='tooltip']").tooltip({ delay: {show: 500, hide: 100}, }); } } }; sysAjax(opt); }; //切换 全部 正常 异常 $('#tab-btn-wrap li').on('click',function () { //因后面逻辑需要,一定要线切换 tabAction 样式, 然后在调用 对应的函数 $(this).addClass('tabAction').siblings().removeClass('tabAction'); fun.createTableData(); }); //导出 //导出功能 window.downloadFile = function (sUrl) { //iOS devices do not support downloading. We have to inform user about this. if (/(iP)/g.test(navigator.userAgent)) { alert('Your device does not support files downloading. Please try again in desktop browser.'); return false; } //If in Chrome or Safari - download via virtual link click if (window.downloadFile.isChrome || window.downloadFile.isSafari) { //Creating new link node. var link = document.createElement('a'); link.href = sUrl; if (link.download !== undefined) { //Set HTML5 download attribute. This will prevent file from opening if supported. var fileName = sUrl.substring(sUrl.lastIndexOf('/') + 1, sUrl.length); link.download = fileName; } //Dispatching click event. if (document.createEvent) { var e = document.createEvent('MouseEvents'); e.initEvent('click', true, true); link.dispatchEvent(e); return true; } } // Force file download (whether supported by server). if (sUrl.indexOf('?') === -1) { sUrl += '?download'; } window.open(sUrl, '_self'); return true; } window.downloadFile.isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; window.downloadFile.isSafari = navigator.userAgent.toLowerCase().indexOf('safari') > -1; var InterValObj; //timer变量,控制时间 var count = 8; //间隔函数,1秒执行 var curCount;//当前剩余秒数 function sendMessage() { curCount = count; //设置button效果,开始计时 $("#caryardReport").attr("disabled", "true"); $(".ITD-export-btn").css("width", "138px"); $("#caryardReport").val(curCount + "秒后可再次导出"); InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次 } //timer处理函数 function SetRemainTime() { if (curCount == 0) { window.clearInterval(InterValObj);//停止计时器 $("#caryardReport").removeAttr("disabled");//启用按钮 $(".ITD-export-btn").css("width", "72px"); $("#caryardReport").val("导出"); } else { curCount--; $("#caryardReport").val(curCount + "秒后可再次导出"); } } //导出excle documentBindFunc.on('click','#caryardReport',function (){ //获取table所有行数据 var parkLot = $("#tollchecktable").bootstrapTable('getData'); //获取table总条数 var numTotal = $("#tollchecktable").bootstrapTable('getOptions').totalRows; //提示 无数据不导出 if(parkLot.length<1){ $('.ITD-alertmodel-contentmsg').text('无数据可导出!'); $('#ITD-tipsmodel').modal('show'); setTimeout(function () { $('.ITD-alertmodel-contentmsg').text(''); $('#ITD-tipsmodel').modal('hide'); },3000); return false; } //超1万条 缩短查询范围 if(numTotal>10000){ $('.ITD-alertmodel-contentmsg').text('数据量过大,请缩小查询范围!'); $('#ITD-tipsmodel').modal('show'); setTimeout(function () { $('.ITD-alertmodel-contentmsg').text(''); $('#ITD-tipsmodel').modal('hide'); },3000); return false; } //执行倒计时函数 sendMessage(); fun.exportList(); });