//数据
//设置签到签退超出距离
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();
});