//数据 //设置签到签退超出距离 var DISTANCE = 300; //电子围栏半径 var km; var fun = { init: function () { //查询围栏半径 fun.getDict('PARK_ENCLOSURE_RADIUS'); //时间初始化 fun.dateInit(); //收费员初始化 fun.tollperInit(); //表格初始化 fun.createTableData(); }, //时间初始化 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" }) }, //获取接口收费员信息 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); }, //默认数据 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 '
'+ commonObj.replacenull(value)+'
' } }, { field: 'plName', title: '车场名称', width: '10%', align: "left", formatter: function (value, row, index) { return '
'+commonObj.replacenull(value)+'
'; } }, { field: 'deviceCode', title: 'PDA编号', width: '10%', align: "left", formatter: function (value, row, index) { return '
'+commonObj.replacenull(value)+'
'; } }, { field: 'parkAreaNames', title: '泊位区间', width: '10%', align: "left", formatter: function (value, row, index) { return '
'+commonObj.replacenull(value)+'
'; } }, { field: 'signInTime', title: '签到时间', width: '15%', align: "left", formatter: function (value, row, index) { return '
'+commonObj.timeFormatter(value)+'
' } }, { field: 'signOutTime', title: '签退时间', width: '15%', align: "left", formatter: function (value, row, index) { var result = ""; if(value == null){ result = ""; }else{ result = value; } return '
'+commonObj.timeFormatter(result)+'
' } }, { field: 'signInDistance', title: '签到类型', width: '10%', align: "left", formatter: function (value, row, index) { var result = ""; if(value == null || value <= DISTANCE){ result = "正常签到"; }else{ result = "超距离签到"; } return '
'+commonObj.replacenull(result)+'
' } }, { field: 'signOutType', title: '签退类型', width: '10%', align: "left", formatter: function (value, row, index) { var result = ""; if(value == null){ result = ""; } else{ if(1 == (value)){ if( row.signOutDistance <= DISTANCE){ result = "正常签退"; }else{ result = "超距离签退"; } }else if(0 == (value)){ result = "云平台操作强制签退"; }else if(2 == (value)){ result = "重新登录签退"; }else if(3 == (value)){ result = "超时未上报心跳,系统强制签退"; }else{ result = "未知"; } } return '
'+commonObj.replacenull(result)+'
' } }, { 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)+'
' } }, ] }); }, //标记 markTheTable:function (value,row, index) { //这里有5个取值代表5中颜色['active', 'success', 'info', 'warning', 'danger']; var strclass = ""; if ((value.signInDistance > DISTANCE || value.signInDistance == null) || (value.signOutDistance > DISTANCE)) { strclass = 'danger'; } else { strclass = ''; } return { classes: strclass } }, //点击行 clickTheRow:function (value,row, index) { var plNo = value.plNo; 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}]; var pdaData=[ { "pointX":value.signInLonid,"pointY":value.signInLatid,"distance":value.signInDistance,"pdatime":commonObj.timeFormatter(value.signInTime),"chargerName":commonObj.replacenull(value.chargerName),"type":"签到" }, ]; 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); // fun.drawMarker(parkData,pdaData) }, /*获取查询参数*/ getQueryParam: function () { //时间 var beginTime= $("#tollcheck-daydaterange-btnsta").val()+" 00:00:00"; var endTime=$("#tollcheck-daydaterange-btnend").val()+" 23:59:59"; beginTime = new Date(beginTime.replace(new RegExp(/-/gm) ,"/")); endTime = new Date(endTime.replace(new RegExp(/-/gm) ,"/")); //收费员 var tollper = JSON.parse($("#tollcheck-tollper").val()); if (tollper.length < 1) { tollper.push("-1X"); } var req = { sysCode: sysComm.sysCode, chargerCodes: tollper, beginTime:beginTime, endTime:endTime, distance : DISTANCE }; // req.payFinishTimeStart = req.beginTime; // req.payFinishTimeEnd = req.endTime; // req.payTypes = [1,2,4,5]; 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, 16); 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); var myIcon = new BMap.Icon("../../assets/pages/scripts/operMonFile/img/parkIcon1.png", new BMap.Size(30, 39), { offset: new BMap.Size(10, 39), textColor: '#fff' }); parkmarker[i] = new BMap.Marker(newPoint, {icon: myIcon}); map.addOverlay(parkmarker[i]); // //电子围栏函数 addCircle(km, parknewpoiX,parknewpoiY); pdadrawFun(); }; // 停车场画圆 半径:km function addCircle(km,parknewpoiX,parknewpoiY) { var mPoint = new BMap.Point(parknewpoiX,parknewpoiY); var circle = new BMap.Circle(mPoint,km,{fillColor:"#1E95CD",stroke: "#1E95CD",strokeWeight: '2' ,fillOpacity: 0.2, strokeOpacity: 0.1}); map.addOverlay(circle); }; // pda function pdadrawFun(){ var pdamarker = []; var newpoiX = null;//坐标 var newpoiY = null; var distance = null;//签到距离 var pdatime = null;//签到时间 var chargerName = null;//收费员名称 for(var j=0;j'+type+'时间:'+pdatime+'', { offset: new BMap.Size(8, -36), //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/operMonFile/img/pdaIco.png", new BMap.Size(24, 36)/*, { offset: new BMap.Size(0, 18), textColor: '#fff' }*/); pdamarker[j]= new BMap.Marker(pdapoint, {icon: myIconpda}); map.addOverlay(pdamarker[j]); }else { //pda标题 myLabels = new BMap.Label('
'+type+'时间:'+pdatime+'
', { offset: new BMap.Size(8, 0), //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/operMonFile/img/pdaIco.png", new BMap.Size(24, 36)/*, { 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 datesta = $("#tollcheck-daydaterange-btnsta").val(); var dateend = $("#tollcheck-daydaterange-btnend").val(); var beginTime = datesta+" 00:00:00"; var endTime=dateend+" 23:59:59"; var chargerCodes = req.chargeCodes; var url = dataUrl.util.exportChargerSignList() + '?chargerCodes=' + req.chargerCodes + '&distance=' + DISTANCE +'&distanceFalg=' + req.distanceFlag + '&beginTime=' + beginTime + '&endTime=' + endTime +'&sysCode='+sysComm.sysCode; window.downloadFile(url); }, }; fun.init(); //切换 全部 正常 异常 $('#tab-btn-wrap li').on('click',function () { //因后面逻辑需要,一定要线切换 tabAction 样式, 然后在调用 对应的函数 $(this).addClass('tabAction').siblings().removeClass('tabAction'); fun.createTableData(); }); //查询按钮 $('#tollcheck-Btn').on('click',function () { fun.createTableData(); }); /** * 自定义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.querySignRecordByChargerCode(), 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); }; //导出 //导出功能 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(); });