var colors = ['#1e95cd', '#5fe98f', '#fdc94d', '#50c0f5', '#5ed8a6', '#2bb97f']; var fun = { // ---------------------------------------------初始化 init: function () { //近7天收入下拉多选矿初始化 $('.parkselectpicker').selectpicker({ 'selectedText': '全部', // width:'150px', style: 'btn-info', size: 4, dropdownAlignRight: 'left', maxOptions: 5, noneSelectedText: '请选择停车场' }); $('.parkselectpicker').selectpicker('val', 1);//默认选中 $('.parkselectpicker').selectpicker('refresh'); //初始化 办事处 停车场 commSelect.area_Pl_LinkedSelect("#georece-transSelecarea", "#georece-transSelectPark",function(item){ if(item.type == 2){ return false; } return true; }); /** 日 时间初始化 **/ $('#georece-daydaterange-btnsta').val(moment().subtract('days', 7).format('YYYY-MM-DD')); $('#georece-daydaterange-btnend').val(moment().subtract('days', 1).format('YYYY-MM-DD')); //开始日期 $("#georece-daydaterange-btnsta").datetimepicker({ endDate: moment().subtract('days', 1).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" }) //结束日期 $("#georece-daydaterange-btnend").datetimepicker({ endDate: moment().subtract('days', 1).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" }) /** 月 时间初始化 **/ $('#georece-monthdaterange-btnsta').val(moment().subtract('months', 6).format('YYYY-MM')); $('#georece-monthdaterange-btnend').val(moment().subtract('months', 0).format('YYYY-MM')); //开始日期 $("#georece-monthdaterange-btnsta").datetimepicker({ endDate: moment().subtract('months', 0).format('YYYY-MM'), format: 'yyyy-mm', autoclose: true, startView: 3, //maxDate:moment().subtract('months', 3), minView: 3, forceParse: false, locale: "zh-CN", language: 'zh-CN', pickerPosition: "bottom-right" }) //结束日期 $("#georece-monthdaterange-btnend").datetimepicker({ endDate: moment().subtract('months', 0).format('YYYY-MM'), //startDate:startVal, format: 'yyyy-mm', weekStart: 1, autoclose: true, startView: 3, minView: 3, forceParse: false, locale: "zh-CN", language: 'zh-CN', pickerPosition: "bottom-right" }) fun.queryManySelect(); fun.queryAllIncomeData(); fun.initGeoNumsAjax(); fun.initMyChartAjax(); //fun.lineSyEcharts('georeceEcharts', '泊位平均收益'); fun.queryIncomeCalculationGroupByPlNoForNum(); }, queryManySelect: function () { var data = JSON.parse($('#georece-transSelectPark').val()); //var data2 = $('#georece-transSelectPark').text(); console.log(data); //console.log(data2); $("#parkselectpicker").empty(); var html = ''; var plNames = fn.getPlNamesByPlNos(data); //console.log() if (data.length > 1) { // var plnosStr = JSON.stringify(data); // html = '' + html; for (var i = 0; i < data.length; i++) { html += ""; } } else { html = '' + html; } $("#parkselectpicker").append(html); $("#parkselectpicker").selectpicker('refresh'); }, /*获取查询参数*/ getQueryParamForIncome: function () { var plNos = JSON.parse($('#georece-transSelectPark').val()); /**统计分类 1、日 2、周、3 月**/ var timeType = $('#queryType').val(); /** 按时或次 1、按时 2、按次**/ var billType = $("#incomeBillType").val(); /*开始时间*/ var beginTime; /*结束时间*/ var endTime; //日 if (3 == parseInt(timeType)) { beginTime = $("#georece-monthdaterange-btnsta").val(); endTime = $("#georece-monthdaterange-btnend").val(); beginTime = beginTime + "-01 00:00:00"; var dates = endTime.split("-"); if (dates[1] == '02') { endTime = endTime + "-28 23:59:59"; } else if (dates[1] == '01' || dates[1] == '03' || dates[1] == '05' || dates[1] == '07' || dates[1] == '08' || dates[1] == '10' || dates[1] == '12') { endTime = endTime + "-31 23:59:59"; } else { endTime = endTime + "-30 23:59:59"; } } else { beginTime = $("#georece-daydaterange-btnsta").val(); endTime = $("#georece-daydaterange-btnend").val(); beginTime = beginTime + " 00:00:00"; endTime = endTime + " 23:59:59"; } var freeTimeLength = $("#free-timesLen").val(); var singleDayTop = 120; var dayMinAmount = $("#day-rateVal").val(); var dayMaxAmount = $("#day-rateVal").val(); var dayMinAmountAfter = $("#day-rateVal").val(); var dayMaxAmountAfter = $("#day-rateVal").val(); var nightMaxAmountAfter = $("#night-rateVal").val(); var nightMinAmountAfter = $("#night-rateVal").val(); var nightMinAmount = $("#night-rateVal").val(); var nightMaxAmount = $("#night-rateVal").val(); beginTime = beginTime == null || beginTime.length == 0 ? null : new Date((beginTime).replace(/-/g, "/")); endTime = endTime == null || endTime.length == 0 ? null : new Date((endTime).replace(/-/g, "/")); var req = { plNos: plNos, freeTimeLength: freeTimeLength, singleDayTop: singleDayTop * 100, beginTime: beginTime, endTime: endTime, dayMinAmount: dayMinAmount * 100, dayMaxAmount: dayMaxAmount * 100, nightMinAmount: nightMinAmount * 100, nightMaxAmount: nightMaxAmount * 100, dayMinAmountAfter: dayMinAmountAfter * 100, nightMinAmountAfter: nightMinAmountAfter * 100, nightMaxAmountAfter: nightMaxAmountAfter * 100, dayMaxAmountAfter: dayMaxAmountAfter * 100, billType: billType, timeType: timeType, }; //如果按时的话,费率按照固定费率 白天:首小时 超过一小时后1元每小时 夜间:免费 设置费率 /** billType 按时或次 1、按时 2、按次**/ if (1 == billType) { // req.dayMinAmount = 300; // req.dayMaxAmount = 300; // req.dayMinAmountAfter = 300; // req.dayMaxAmountAfter = 300; // req.nightMinAmount =300 ; // req.nightMaxAmount = 300; req.nightMinAmountAfter = 0; req.nightMaxAmountAfter = 0; } //console.log(req); return req; }, queryAllIncomeData: function () { var req = fun.getQueryParamForIncome(); //条件查询 req.baseRequest = { pageNum: 1, pageSize: 0 }; req.sysCode = sysComm.sysCode; req.groupType = 3; req.timeType = 100; req.plNos = getPlNosByPlType(req.plNos, 1); var opt = { method: 'post', url: dataUrl.util.queryIncomeCalculationGroupByPlNo(), data: JSON.stringify(req), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (res) { //console.log(res); var allAmount = 0.0; var closeAvgAmount = 0.0; var openAvgAmount = 0.0; var closeAmount = 0.0; var openAmount = 0.0; var closeBerthNum = 0; var openBerthNum = 0; var allBerthNum = 0; // var berth = fn.getParkLotBerthCountByPlNos(req.plNos); // console.log(berth); if (res.code == '8888') { var data = res.data; console.log(data); if (data.rows.length > 0) { var data = data.rows; for (var index in data) { var amount = data[index].amount == null ? 0 : data[index].amount; var berthNum = data[index].berthNum == null ? 0 : data[index].berthNum; if (1 == parseInt(data[index].plType)) { openAmount = parseInt(openAmount) + parseInt(amount); openBerthNum = parseInt(openBerthNum) + parseInt(berthNum); } else if (2 == parseInt(data[index].plType)) { closeAmount = parseInt(closeAmount) + parseInt(amount); closeBerthNum = parseInt(closeBerthNum) + parseInt(berthNum); } } allBerthNum = openBerthNum + closeBerthNum; // openBerthNum = berth.openBerthNum; // closeBerthNum = berth.closeBerthNum; $("#incomeCloseBerthNum").text('0'); $("#incomeOpenBerthNum").text(openBerthNum); $("#incomeAllBerthNum").text(openBerthNum); $("#incomeAllBerthNum").attr('title', openBerthNum); allAmount = parseInt(openAmount) + parseInt(closeAmount); /**3、赋值 ***/ if (0 != parseInt(openBerthNum)) { openAvgAmount = (openAmount / (parseInt(openBerthNum) * 100)).toFixed(2); } if (0 != parseInt(closeBerthNum)) { closeAvgAmount = (closeAmount / (parseInt(closeBerthNum) * 100)).toFixed(2); } allAmount = (parseInt(allAmount) / 100).toFixed(2); //这个算出来是泊位数,跟统计地磁数接口算出来的不一致 //$("#IncomeBerthNum").text(openBerthNum); } // console.log(allAmount); // console.log(closeAvgAmount); // console.log(openAvgAmount); $("#incomeCloseAmount").text('0'); $("#incomeOpenAmount").text(openAvgAmount); $("#incomeAllAmount").text((openAmount / 100).toFixed(0)); $("#incomeAllAmount").attr('title', (openAmount / 100).toFixed(0)); } } }; sysAjax(opt); }, queryAllIncomeDataForTime: function () { var req = fun.getQueryParamForIncome(); //条件查询 req.baseRequest = { pageNum: 1, pageSize: 0 }; req.sysCode = sysComm.sysCode; req.plNos = getPlNosByPlType(req.plNos, 1); //初始化总应收及 路侧、封闭平均收益 var opt = { method: 'post', url: dataUrl.util.getSummationIncomeInfoForPlTypeByTime(), data: JSON.stringify(req), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (res) { if (res.code == '8888') { var data = res.data; console.log("全部收益"); console.log(data); var allIncomeData = data[0]; allIncomeData = (allIncomeData == undefined || allIncomeData == null) ? {} : allIncomeData; var lcIncomeData = data[1]; lcIncomeData = (lcIncomeData == undefined || lcIncomeData == null) ? {} : lcIncomeData; var fbIncomeData = data[2]; fbIncomeData = (fbIncomeData == undefined || fbIncomeData == null) ? {} : fbIncomeData; //泊位数 $("#incomeOpenBerthNum").html(lcIncomeData.berthNum == null ? 0 : lcIncomeData.berthNum); $("#incomeAllBerthNum").html(allIncomeData.berthNum == null ? 0 : allIncomeData.berthNum); //路侧平均收益 $("#incomeOpenAmount").html(lcIncomeData.avgAmount == null ? 0 : (lcIncomeData.avgAmount / 100).toFixed(2)); //封闭平均收益 //$("#incomeCloseAmount").html(fbIncomeData.avgAmount == null ? 0 : (fbIncomeData.avgAmount / 100).toFixed(2)); $("#incomeCloseAmount").html(0); var allIncome = allIncomeData.amount; allIncome = allIncome == null ? 0 : (allIncome / 100).toFixed(0); $('#incomeAllAmount').html(allIncome); $("#incomeAllAmount").attr('title', allIncome); } } }; sysAjax(opt); }, initGeoNumsAjax: function () { var reqs = fun.getQueryParamForIncome(); var req = { plNos: reqs.plNos, faultNumTimes: 1,//失败次数大于1次即为异常 beginTime: DateUtils.long2String(reqs.beginTime, 1), endTime: DateUtils.long2String(reqs.endTime, 1), sysCode: sysComm.sysCode }; var easyUIOps = { method: "POST", url: dataUrl.util.statisticsGeoNumsByStatus(), 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; //console.log("地磁数量统计:",data); console.log(data.normalNum) console.log(data.allNum) if(data.allNum == 0){ var per = 0; }else{ var per = ((data.normalNum)/data.allNum*100).toFixed(0); } var dczxData = [ {value: per, name: '地磁在线', selected: true}, {value: 100-per, name: '总计',}, ]; fun.drawPie('dczxEcharts', '#1890FF', '地磁在线', data.normalNum, dczxData, '地磁在线'); var dzzxData = [ {value: 0, name: '道闸在线', selected: true}, {value: 100, name: '总计',}, ]; fun.drawPie('dzzxEcharts', '#FACC14', '道闸在线', '0', dzzxData, '道闸在线'); } } }; sysAjax(easyUIOps); }, //查询停车场收入折线图 initMyChartAjax: function (manyPlNos) { var req = fun.getQueryParamForIncome(); //条件查询 req.baseRequest = { pageNum: 1, pageSize: 0 }; req.groupType = 3; if (manyPlNos != null && manyPlNos != undefined && manyPlNos.length > 0) { req.plNos = manyPlNos; } req.plNos = getPlNosByPlType(req.plNos, 1); console.log(req.plNos) req.sysCode = sysComm.sysCode; var easyUIOps = { method: "POST", url: dataUrl.util.queryIncomeCalculationGroupByPlNo(), 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; var xStringData = []; var xNameData = []; var seriseData = {}; var avgSeriseData = {}; var seriseDataValue = []; /**统计分类 1、日 2、周、3 月**/ var timeType = $('#queryType').val(); /*开始时间*/ var StringBeginTime; /*结束时间*/ var StringEndTime; //日 if (3 == parseInt(timeType)) { StringBeginTime = $("#georece-monthdaterange-btnsta").val(); StringEndTime = $("#georece-monthdaterange-btnend").val(); } else { StringBeginTime = $("#georece-daydaterange-btnsta").val(); StringEndTime = $("#georece-daydaterange-btnend").val(); } var returnData = getxSeriesData(data, req, StringBeginTime, StringEndTime, timeType); xStringData = returnData.xStringData; seriseDataValue = returnData.seriseDataValue; var plNosNew = req.plNos; //console.log(plNosNew); xNameData = fn.getPlNamesByPlNos(plNosNew); // console.log(xNameData); /***判断停车场个数,如果大于5个则汇总为一条直线**/ if (req.plNos.length > 5) { xNameData.push('全部'); var code = 100; /**创建默认的series **/ var seriseDataVO = { code: 100, name: '全部', type: 'line', smooth: true, data: seriseDataValue.slice(0), areaStyle: { normal: { color: '#1890FF', opacity: .2 } }, lineStyle: { normal: { color: '#1890FF', width: 2, } } }; var avgSeriseDataVO = { code: 100, name: '全部', type: 'line', smooth: true, data: seriseDataValue.slice(0), areaStyle: { normal: { color: '#1890FF', opacity: .2 } }, lineStyle: { normal: { color: '#1890FF', width: 2, } } }; seriseData[code] = seriseDataVO; avgSeriseData[code] = avgSeriseDataVO; /** 给series对象赋值****/ for (var x in xStringData) { var berthNum = 0; var amount = 0; var avgamount = 0; for (var allindexThree in data) { var stringTime = data[allindexThree].staticDate; if (xStringData[x] == stringTime) { amount = parseInt(amount) + parseInt(data[allindexThree].amount / 100); berthNum = parseInt(berthNum) + parseInt(data[allindexThree].berthNum); } } seriseData[100].data[x] = (parseInt(seriseData[100].data[x]) + parseInt(amount)).toFixed(2); if (parseInt(berthNum) == 0) { avgSeriseData[100].data[x] = (parseFloat(avgSeriseData[100].data[x]) + parseFloat(amount)).toFixed(2); } else { avgamount = amount / berthNum; avgSeriseData[100].data[x] = (parseFloat(avgSeriseData[100].data[x]) + parseFloat(avgamount)).toFixed(2); } } } else { if (data.length > 0) { for (var indexTwo in data) { /**2、办事处的多少 ***/ if (xNameData.indexOf(data[indexTwo].plName) == -1) { xNameData.push(data[indexTwo].plName); /**3、创建默认的series **/ var code = data[indexTwo].plNo; plNosNew.remove(code); var seriseDataVO = { code: code, name: data[indexTwo].plName, type: 'line', smooth: true, data: seriseDataValue.slice(0), areaStyle: { normal: { color: colors[indexTwo], opacity: .2 } }, lineStyle: { normal: { color: colors[indexTwo], width: 2, } } }; var avgSeriseDataVO = { code: code, name: data[indexTwo].plName, type: 'line', smooth: true, data: seriseDataValue.slice(0), areaStyle: { normal: { color: colors[indexTwo], opacity: .2 } }, lineStyle: { normal: { color: colors[indexTwo], width: 2, } } } seriseData[code] = seriseDataVO; avgSeriseData[code] = avgSeriseDataVO; } } //console.log(seriseData); /**补齐没有数据的停车场 **/ var xNameDataNew = fn.getPlNamesByPlNos(plNosNew); for (var noplno in plNosNew) { /**2、办事处的多少 ***/ /**3、创建默认的series **/ var code = plNosNew[noplno]; var seriseDataVO = { code: code, name: xNameDataNew[noplno], type: 'line', smooth: true, data: seriseDataValue.slice(0), areaStyle: { normal: { color: colors[plNosNew.length - noplno - 1], opacity: .2 } }, lineStyle: { normal: { color: colors[plNosNew.length - noplno - 1], width: 2, } } }; var avgSeriseDataVO = { code: code, name: xNameDataNew[noplno], type: 'line', smooth: true, data: seriseDataValue.slice(0), areaStyle: { normal: { color: colors[plNosNew.length - noplno - 1], opacity: .2 } }, lineStyle: { normal: { color: colors[plNosNew.length - noplno - 1], width: 2, } } } seriseData[code] = seriseDataVO; avgSeriseData[code] = avgSeriseDataVO; } /** 4、给series对象赋值****/ for (var x in xStringData) { for (var indexThree in data) { var stringTime = data[indexThree].staticDate; if (xStringData[x] == stringTime) { var codeTwo = data[indexThree].plNo; seriseData[codeTwo].data[x] = (data[indexThree].amount / 100).toFixed(2); var berthNum = data[indexThree].berthNum; if (parseInt(berthNum) == 0) { avgSeriseData[codeTwo].data[x] = (data[indexThree].amount / 100).toFixed(2); } else { avgSeriseData[codeTwo].data[x] = (data[indexThree].amount / (berthNum * 100)).toFixed(2); } } } } } else { /**查询后端1条数据都没有补齐停车场 **/ for (var xname in xNameData) { /**创建默认的series **/ var code = plNosNew[xname]; var seriseDataVO = { code: plNosNew[xname], name: xNameData[xname], type: 'line', smooth: true, data: seriseDataValue.slice(0), areaStyle: { normal: { color: colors[xname], opacity: .2 } }, lineStyle: { normal: { color: colors[xname], width: 2, } } }; var avgSeriseDataVO = { code: plNosNew[xname], name: xNameData[xname], type: 'line', smooth: true, data: seriseDataValue.slice(0), areaStyle: { normal: { color: colors[xname], opacity: .2 } }, lineStyle: { normal: { color: colors[xname], width: 2, } } } seriseData[code] = seriseDataVO; avgSeriseData[code] = avgSeriseDataVO; } } } console.log(xStringData); // console.log(xNameData); // console.log(seriseData); // console.log(avgSeriseData); // console.log(seriseDataNew); var incomeindex = $("#incomeindex").val(); if (incomeindex == 0) { //console.log(incomeindex); var avgSeriseDataNew = []; for (var avgindexFour in avgSeriseData) { avgSeriseDataNew.push(avgSeriseData[avgindexFour]); } fun.lineSyEcharts('georeceEcharts', '泊位平均收益', xStringData, xNameData, avgSeriseDataNew); } else { //console.log(incomeindex); var seriseDataNew = []; for (var indexFour in seriseData) { seriseDataNew.push(seriseData[indexFour]); } fun.lineSyEcharts('georeceEcharts', '泊位总收益', xStringData, xNameData, seriseDataNew); } } } }; sysAjax(easyUIOps); }, //生成汇总表格数据按时间 queryIncomeCalculationGroupByPlNoForNum: function () { /** 按时**/ $('#georeceTable').bootstrapTable('destroy').bootstrapTable({ striped: true,//表格显示条纹 rownumbers: true, pagination: true, //启动分页 pageNumber: 1, //当前第几页 pageSize: 10, //每页显示的记录数 pageList: [10, 15], //记录数可选列表 sidePagination: 'server',//表示服务端分页 queryParamsType: 'limit', singleSelect: false, method: 'POST',//请求方法 paginationPreText: '<', paginationNextText: '>', ajax: queryIncomeCalculationGroupByPlNo, //自定义ajax加载数据 uniqueId: 'id', columns: [ { field: 'plName', title: ' 车场名称', width: '5%', align: 'left', formatter: fun.incomeOperFormatter }, { field: 'berthNum', title: ' 泊位数量', width: '5%', align: 'left', formatter: commonObj.replacenull }, { field: 'amount', title: ' 应收', width: '8%', align: 'left', formatter: commonObj.moneyFormatter }, { field: 'avgAmount', title: ' 泊位平均收益', width: '5%', align: 'left', formatter: avgAmountFormatter }, { field: 'allNum', title: ' 总停车次数', width: '8%', align: 'left', formatter: commonObj.replacenull }, { field: 'freeNum', title: ' 免费停车次数', width: '8%', align: 'left', formatter: commonObj.replacenull }, { field: 'dayNum', title: ' 白天停车次数', width: '8%', align: 'left', formatter: dayParkNumFormatter }, { field: 'nightNum', title: ' 夜间停车次数', width: '8%', align: 'left', formatter: nightParkNumFormatter } ] }); }, queryIncomeCalculationGroupByPlNoForTime: function () { /** 按时**/ $('#georeceTable').bootstrapTable('destroy').bootstrapTable({ striped: true,//表格显示条纹 rownumbers: true, pagination: true, //启动分页 pageNumber: 1, //当前第几页 pageSize: 10, //每页显示的记录数 pageList: [10, 15], //记录数可选列表 sidePagination: 'server',//表示服务端分页 queryParamsType: 'limit', singleSelect: false, method: 'POST',//请求方法 paginationPreText: '<', paginationNextText: '>', ajax: queryIncomeCalculationGroupByPlNo, //自定义ajax加载数据 uniqueId: 'id', columns: [ { field: 'plName', title: ' 车场名称', width: '5%', align: 'left', formatter: fun.incomeOperFormatter }, { field: 'berthNum', title: ' 泊位数量', width: '5%', align: 'left', formatter: commonObj.replacenull }, { field: 'amount', title: ' 应收', width: '8%', align: 'left', formatter: commonObj.moneyFormatter }, { field: 'avgAmount', title: ' 泊位平均收益', width: '5%', align: 'left', formatter: avgAmountFormatter }, { field: 'avgParkDuration', title: ' 泊位平均时长', width: '5%', align: 'left', formatter: avgParkDurationFormatter }, { field: 'allParkDuration', title: ' 总停车时长', width: '8%', align: 'left', formatter: avgParkDurationFormatter }, { field: 'allNum', title: ' 总停车次数', width: '8%', align: 'left', formatter: commonObj.replacenull }, { field: 'freeNum', title: ' 免费停车次数', width: '8%', align: 'left', formatter: commonObj.replacenull }, { field: 'dayNum', title: ' 白天停车次数', width: '8%', align: 'left', formatter: dayParkNumFormatter }, { field: 'nightNum', title: ' 夜间停车次数', width: '8%', align: 'left', formatter: nightParkNumFormatter } ] }); }, //操作显示 incomeOperFormatter: function (value, row, index) { var operStr = '' + (value==null? '-':value) + ''; return operStr; }, incomeLookOper: function (element) { $('#popAreaname').text(''); var plName = $(element).attr('plname'); $('#popAreaname').text(plName); var plNo = $(element).attr('plno'); parkIdList = []; parkIdList.push(plNo); /** 按时或次 1、按时 2、按次**/ var billType = $("#incomeBillType").val(); if (1 == parseInt(billType)) { /** 按时**/ $('#incometable').bootstrapTable('destroy').bootstrapTable({ striped: true,//表格显示条纹 rownumbers: true, pagination: true, //启动分页 pageNumber: 1, //当前第几页 pageSize: 10, //每页显示的记录数 pageList: [10, 15], //记录数可选列表 sidePagination: 'server',//表示服务端分页 queryParamsType: 'limit', singleSelect: false, method: 'POST',//请求方法 paginationPreText: '<', paginationNextText: '>', ajax: getIncomeCalculationForOne, //自定义ajax加载数据 uniqueId: 'id', columns: [ { field: 'staticDate', title: ' 周期', width: '5%', align: 'left' }, { field: 'berthNum', title: ' 泊位数量', width: '5%', align: 'left' }, { field: 'amount', title: ' 应收', width: '8%', align: 'left', formatter: moneyFormatter }, { field: 'avgAmount', title: ' 泊位平均收益', width: '5%', align: 'left', formatter: avgAmountFormatter }, { field: 'avgParkDuration', title: ' 泊位平均时长', width: '5%', align: 'left', formatter: avgParkDurationFormatter }, { field: 'allParkDuration', title: ' 总停车时长', width: '8%', align: 'left', formatter: avgParkDurationFormatter }, { field: 'allNum', title: ' 总停车次数', width: '8%', align: 'left' }, { field: 'freeNum', title: ' 免费停车次数', width: '8%', align: 'left' }, { field: 'dayNum', title: ' 白天停车次数', width: '8%', align: 'left', formatter: dayParkNumFormatter }, { field: 'nightNum', title: ' 夜间停车次数', width: '8%', align: 'left', formatter: nightParkNumFormatter } ] }); } else { $('#incometable').bootstrapTable('destroy').bootstrapTable({ striped: true,//表格显示条纹 rownumbers: true, pagination: true, //启动分页 pageNumber: 1, //当前第几页 pageSize: 10, //每页显示的记录数 pageList: [10, 15], //记录数可选列表 sidePagination: 'server',//表示服务端分页 queryParamsType: 'limit', singleSelect: false, method: 'POST',//请求方法 paginationPreText: '<', paginationNextText: '>', ajax: getIncomeCalculationForOne, //自定义ajax加载数据 uniqueId: 'id', columns: [ { field: 'staticDate', title: ' 周期', width: '5%', align: 'left' }, { field: 'berthNum', title: ' 泊位数量', width: '5%', align: 'left' }, { field: 'amount', title: ' 应收', width: '8%', align: 'left', formatter: moneyFormatter }, { field: 'avgAmount', title: ' 泊位平均收益', width: '5%', align: 'left', formatter: avgAmountFormatter }, { field: 'allNum', title: ' 总停车次数', width: '8%', align: 'left' }, { field: 'freeNum', title: ' 免费停车次数', width: '8%', align: 'left' }, { field: 'dayNum', title: ' 白天停车次数', width: '8%', align: 'left', formatter: dayParkNumFormatter }, { field: 'nightNum', title: ' 夜间停车次数', width: '8%', align: 'left', formatter: nightParkNumFormatter } ] }); } $('#income_myModal').modal('show'); }, // ---------------------------------------------搜索 // ---------------------------------------------图例 drawPie: function (id, color, subtext, text, seriesData, seriesName) { var chart = echarts.init(document.getElementById(id)); chart.setOption( { color: [color, '#D7D7D7'], title: { subtext: text + "", text: subtext, textStyle: { color: 'rgba(0,0,0,0.45)', fontSize: '14', align: 'middle', verticalAlign: 'middle', }, subtextStyle: { color: '#000', fontSize: '24', align: 'middle', verticalAlign: 'middle', }, left: 'center', top: '40', }, tooltip: { trigger: 'item', show: false, formatter: "{a}
{b}: {c} ({d}%)" }, series: [ { name: seriesName, hoverAnimation: false, legendHoverLink: false, type: 'pie', hoverOffset: 5, selectedOffset: 3, radius: ['78%', '88%'], avoidLabelOverlap: false, label: { normal: { show: false, position: 'left' }, emphasis: { show: false, textStyle: { fontSize: '30', fontweight: 'bold' } } }, labelLine: { normal: { show: false } }, data: seriesData } ] } ); }, lineSyEcharts: function (id, seriesName, xStringData, xNameData, seriseData) { var realNameData = []; for (var i in xNameData) { if (xNameData[i] == "") { continue; } if (i % 5 == 0) { realNameData.push(""); } realNameData.push(xNameData[i]); } var selected = {}; for (var i in xNameData) { if (xNameData[i] == "") { continue; } if (i < 5) { selected[xNameData[i]] = true; } else { selected[xNameData[i]] = false; } } console.log(seriseData); var chart = echarts.init(document.getElementById(id)); console.log(xStringData + '/////////////////////') var option = { color: colors, tooltip: { trigger: 'axis' }, legend: { top: '0', right: '24', }, grid: { top: '13%', left: '1%', right: '5%', bottom: '2%', containLabel: true }, xAxis: { type: 'category', boundaryGap: false, data: xStringData, axisLabel: { //interval: 0, show: true, textStyle: { color: 'rgba(0,0,0,0.5)', fontSize: '12px', fontFamily: '微软雅黑' } }, // splitNumber:10, // minInterval:2, axisTick: { show: false, }, splitLine:{ lineStyle:{ color:'rgba(0,0,0,0.1)', } }, axisLine: { show: true, lineStyle: { color: 'rgba(0,0,0,0.1)', // width: 1,//这里是为了突出显示加上的 } }, }, yAxis: { type: 'value', axisLabel: { show: true, textStyle: { color: 'rgba(0,0,0,0.5)', fontSize: '12px', fontFamily: '微软雅黑' } }, axisTick: { show: false, }, splitLine:{ lineStyle:{ color:'rgba(0,0,0,0.1)', } }, axisLine: { show: true, lineStyle: { color: 'rgba(0,0,0,0.1)', // width: 1,//这里是为了突出显示加上的 } }, }, series: seriseData }; chart.setOption(option, true); } }; // ---------------------------------------------搜索 //切换头部收入topbar documentBindFunc.on('click', "#georece-toptab div", function () { var index = $(this).index(); console.log(index) $(this).addClass('ITD-graynav-topbaractive').siblings('div').removeClass('ITD-graynav-topbaractive'); $("#georece-toptab").val(index); if (index == 0) { $('.georece_Numpay').text('元/次'); $("#incomeBillType").val(2); $('#night-rateVal').val(0) // $('#switch-count-wrap').removeClass('display-none'); // $('#switch-time-wrap').addClass('display-none'); } else { $('.georece_Numpay').text('元/小时'); $('.georece_Numpay_night').text('元/次') $('#night-rateVal').val(3) $("#incomeBillType").val(1); // $('#switch-count-wrap').addClass('display-none'); // $('#switch-time-wrap').removeClass('display-none'); } /** 函数 表格数据 **/ }); //隐藏显示 查询条件 搜索框 hide-common-style documentBindFunc.on('click', ".ITD-search-morebtn", function () { $(".hide-common-style").toggleClass("display-none"); }); //日 点击 documentBindFunc.on('click', '#georece-checkStyle1,#georece-checkStyle2', function () { $('.georece-choosedateday').removeClass('display-none'); $('.georece-choosedatemonth').addClass('display-none'); $('#queryType').attr('data-value', '1'); $('#queryType').val(1); }); //日 点击 documentBindFunc.on('click', '#georece-checkStyle2', function () { $('.georece-choosedateday').removeClass('display-none'); $('.georece-choosedatemonth').addClass('display-none'); $('#queryType').attr('data-value', '2'); $('#queryType').val(2); }); //月 点击 documentBindFunc.on('click', '#georece-checkStyle3', function () { $('.georece-choosedatemonth').removeClass('display-none'); $('.georece-choosedateday').addClass('display-none'); $('#queryType').attr('data-value', '3'); $('#queryType').val(3); }); //点击搜索 documentBindFunc.on('click', '#georece-billQueryBtn', function () { var billType = $("#incomeBillType").val(); $('#incomeAllBerthNum').attr('title',0); $('#incomeAllBerthNum').text(0); $('#incomeOpenBerthNum').text(0); $('#incomeCloseBerthNum').text(0); if (2 == parseInt(billType)) { fun.queryAllIncomeData(); fun.queryIncomeCalculationGroupByPlNoForNum(); } else { fun.queryAllIncomeDataForTime(); fun.queryIncomeCalculationGroupByPlNoForTime(); } fun.initMyChartAjax(); fun.initGeoNumsAjax(); fun.queryManySelect(); }); //点击详情弹框 documentBindFunc.on('click', '[incomeLookOper]', function () { fun.incomeLookOper(this); }); //点击导出 var InterValObj; //timer变量,控制时间 var count = 8; //间隔函数,1秒执行 var curCount;//当前剩余秒数 function sendMessage() { curCount = count; //设置button效果,开始计时 $("#reportBtn").attr("disabled", "true"); $(".ITD-export-btn").css("width", "138px"); $("#reportBtn").val(curCount + "秒后可再次导出"); InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次 } //timer处理函数 function SetRemainTime() { if (curCount == 0) { window.clearInterval(InterValObj);//停止计时器 $("#reportBtn").removeAttr("disabled");//启用按钮 $(".ITD-export-btn").css("width", "72px"); $("#reportBtn").val("导出"); } else { curCount--; $("#reportBtn").val(curCount + "秒后可再次导出"); } } //导出excle documentBindFunc.on('click','#reportBtn',function (){ //获取table所有行数据 var parkLot = $("#georeceTable").bootstrapTable('getData'); //获取table总条数 var numTotal = $("#georeceTable").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(); var req = fun.getQueryParamForIncome(); var beginTime = DateUtils.long2String(req.beginTime, 7); var endTime = DateUtils.long2String(req.endTime, 7); var url = dataUrl.util.exportIncomeCalculation(); req.plNos = getPlNosByPlType(req.plNos, 1); var forms = exportIncomeDetailForm(url, beginTime, endTime, req.plNos, req.dayMinAmount, req.dayMaxAmount, req.nightMinAmount, req.nightMaxAmount, req.billType, req.freeTimeLength, req.singleDayTop, req.timeType, req.dayMinAmountAfter, req.nightMinAmountAfter, req.dayMaxAmountAfter, req.nightMaxAmountAfter); forms.submit(); }); //泊位军收益 总收入切换 $('#tab-btn-wrap li').on('click', function () { var _index = $(this).index(); $("#incomeindex").val(_index); fun.initMyChartAjax(); $(this).addClass('tabAction').siblings().removeClass('tabAction'); }) $('#parkselectpicker').on('hidden.bs.select', function (e) { // do something... var manyPlNos = []; var shopIdsNodes = $('#parkselectpicker option:selected'); var shopIds = ''; shopIdsNodes.each(function () { var plNo = $(this).val(); if (plNo.indexOf(",") != -1) { manyPlNos = JSON.parse($(this).val()); } else { if (manyPlNos.indexOf(plNo) == -1) { manyPlNos.push(plNo); } } }) console.log(manyPlNos); fun.initMyChartAjax(manyPlNos); //console.log(shopIds); }); // ---------------------------------------------图例 fun.init(); function avgParkDurationFormatter(value) { if (value == null || value == undefined || value == 0) { return 0 + '时'; } else { return value + '时'; } } function avgAmountFormatter(value, row, index) { var amount = row.amount; var berthNum = row.berthNum; if (berthNum == null || berthNum == undefined || berthNum == 0) { return (amount / 100).toFixed(2); } else { return (amount / (berthNum * 100)).toFixed(2); } } function moneyFormatter(value) { // console.log(typeof value) if (value == 0 || value == undefined || value == null) { return "0.00"; } else { return (value / 100).toFixed(2); } }; function dayParkNumFormatter(value, row, index) { var num = row.day1hourNum + row.day2hourNum + row.day3hourNum + row.day4hourNum + row.day5hourNum + row.day6hourNum + row.day7hourNum + row.day8hourNum + row.day9hourNum + row.day10hourNum + row.day11hourNum + row.day12hourNum; if (value == undefined || value == null) { return num; } else { return value; } } function nightParkNumFormatter(value, row, index) { var num = row.night1hourNum + row.night2hourNum + row.night3hourNum + row.night4hourNum + row.night5hourNum + row.night6hourNum + row.night7hourNum + row.night8hourNum + row.night9hourNum + row.night10hourNum + row.night11hourNum + row.night12hourNum; if (value == undefined || value == null) { return num; } else { return value; } } //停车场详情服务 var parkIdList = []; function getIncomeCalculationForOne(params) { var req = fun.getQueryParamForIncome(); //条件查询 req.baseRequest = { pageNum: 1, pageSize: 0 }; req.sysCode = sysComm.sysCode; req.groupType = 3; req.plNos = parkIdList; req.plNos = getPlNosByPlType(req.plNos, 1); var opt = { method: 'post', url: dataUrl.util.queryIncomeCalculationGroupByPlNo(), 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); } } }; sysAjax(opt); } //停车场服务 function queryIncomeCalculationGroupByPlNo(params) { var req = fun.getQueryParamForIncome(); var pageNum = (params.data.offset / params.data.limit) + 1; //条件查询 req.baseRequest = { pageNum: pageNum, pageSize: params.data.limit }; req.sysCode = sysComm.sysCode; req.groupType = 3; req.timeType = 100; req.plNos = getPlNosByPlType(req.plNos, 1); //console.log(req); var opt = { method: 'post', url: dataUrl.util.queryIncomeCalculationGroupByPlNo(), 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); } } }; sysAjax(opt); } function exportIncomeDetailForm(url, beginTime, endTime, plNos, dayMinAmount, dayMaxAmount, nightMinAmount, nightMaxAmount, billType, freeTimeLength, singleDayTop, timeType, dayMinAmountAfter, nightMinAmountAfter, dayMaxAmountAfter, nightMaxAmountAfter) { var form = document.createElement("form"); form.style.display = 'none'; form.action = url; form.method = "post"; document.body.appendChild(form); var input = document.createElement("input"); //input.type = "hidden"; input.name = "beginTime"; input.value = beginTime; form.appendChild(input); var input2 = document.createElement("input"); input2.name = "endTime"; input2.value = endTime; form.appendChild(input2); var input3 = document.createElement("input"); //input2.type = "hidden"; input3.name = "plNos"; input3.value = plNos; form.appendChild(input3); var plAreaBlockIds = new Array(); var input15 = document.createElement("input"); //input15.type = "hidden"; input15.name = "plAreaBlockIds"; input15.value = plAreaBlockIds; form.appendChild(input15); var input16 = document.createElement("input"); //input15.type = "hidden"; input16.name = "dayMinAmountAfter"; input16.value = dayMinAmountAfter; form.appendChild(input16); var input17 = document.createElement("input"); input17.name = "nightMinAmountAfter"; input17.value = nightMinAmountAfter; form.appendChild(input17); var input18 = document.createElement("input"); input18.name = "dayMaxAmountAfter"; input18.value = dayMaxAmountAfter; form.appendChild(input18); var input19 = document.createElement("input"); input19.name = "nightMaxAmountAfter"; input19.value = nightMaxAmountAfter; form.appendChild(input19); var input4 = document.createElement("input"); //input2.type = "hidden"; input4.name = "dayMinAmount"; input4.value = dayMinAmount; form.appendChild(input4); var input5 = document.createElement("input"); //input2.type = "hidden"; input5.name = "dayMaxAmount"; input5.value = dayMaxAmount; form.appendChild(input5); var input6 = document.createElement("input"); //input2.type = "hidden"; input6.name = "nightMinAmount"; input6.value = nightMinAmount; form.appendChild(input6); var input7 = document.createElement("input"); //input2.type = "hidden"; input7.name = "nightMaxAmount"; input7.value = nightMaxAmount; form.appendChild(input7); var input8 = document.createElement("input"); //input2.type = "hidden"; input8.name = "billType"; input8.value = billType; form.appendChild(input8); var input9 = document.createElement("input"); //input2.type = "hidden"; input9.name = "freeTimeLength"; input9.value = freeTimeLength; form.appendChild(input9); var input10 = document.createElement("input"); //input2.type = "hidden"; input10.name = "singleDayTop"; input10.value = singleDayTop; form.appendChild(input10); var input11 = document.createElement("input"); //input2.type = "hidden"; input11.name = "timeType"; input11.value = timeType; form.appendChild(input11); return form; }; // 日期,在原有日期基础上,增加days天数,默认增加1天 function addDate(date, days) { if (days == undefined || days == '') { days = 1; } date.setDate(date.getDate() + days); var month = date.getMonth() + 1; var day = date.getDate(); return date.getFullYear() + '-' + getFormatDate(month) + '-' + getFormatDate(day); } //计算天数差 function getDayNumber(date1, date2) { //默认格式为"20030303",根据自己需要改格式和方法 var year1 = date1.substr(0, 4); var year2 = date2.substr(0, 4); var month1 = date1.substr(4, 2); var month2 = date2.substr(4, 2); // www.jquerycn.cn var day1 = date1.substr(6, 2); var day2 = date2.substr(6, 2); temp1 = year1 + "/" + month1 + "/" + day1; temp2 = year2 + "/" + month2 + "/" + day2; var dateaa = new Date(temp1); var datebb = new Date(temp2); var date = datebb.getTime() - dateaa.getTime(); var time = Math.floor(date / (1000 * 60 * 60 * 24)); return time; } //计算月数差 function getMonthNumber(date1, date2) { //默认格式为"20030303",根据自己需要改格式和方法 var year1 = date1.substr(0, 4); var year2 = date2.substr(0, 4); var month1 = date1.substr(4, 2); var month2 = date2.substr(4, 2); var len = (year2 - year1) * 12 + (month2 - month1); return len; } // 日期,在原有日期基础上,增加days天数,默认增加1天 function addMonth(date, months) { if (months == undefined || months == '') { months = 1; } date.setMonth(date.getMonth() + months); var month = date.getMonth() + 1; var day = date.getDate(); return date.getFullYear() + '-' + getFormatDate(month) + '-' + getFormatDate(day); } // 日期月份/天的显示,如果是1位数,则在前面加上'0' function getFormatDate(arg) { if (arg == undefined || arg == '') { return ''; } var re = arg + ''; if (re.length < 2) { re = '0' + re; } return re; } function getxSeriesData(data, req, StringBeginTime, StringEndTime, queryType) { var xStringData = []; var seriseDataValue = []; var returnData = { xStringData: xStringData, seriseDataValue: seriseDataValue }; var beginTimeArray = StringBeginTime.split("-"); var endTimeArray = StringEndTime.split("-"); if (queryType == 1) { xStringData.push(StringBeginTime); seriseDataValue.push(0); //按天的页面 var length = getDayNumber(beginTimeArray[0] + beginTimeArray[1] + beginTimeArray[2], endTimeArray[0] + endTimeArray[1] + endTimeArray[2]) + 1 for (var i = 1; i < length; i++) { xStringData.push(addDate(req.beginTime, 1)); seriseDataValue.push(0); } } else if (queryType == 3) { xStringData.push(beginTimeArray[0] + '-' + beginTimeArray[1]); seriseDataValue.push(0); //按月的页面 var length = getMonthNumber(beginTimeArray[0] + beginTimeArray[1] + beginTimeArray[2], endTimeArray[0] + endTimeArray[1] + endTimeArray[2]) + 1 for (var i = 0; i < length; i++) { for (var i = 1; i < length; i++) { var tempDate = new Date(addMonth(req.beginTime, 1).replace(/-/g, "/")); tempDate = tempDate.getFullYear() + '-' + getFormatDate(tempDate.getMonth() + 1); xStringData.push(tempDate); seriseDataValue.push(0); } } } else { var weekArray = getYearWeekByRemote(StringBeginTime, StringEndTime); console.log(weekArray); var beginweek = weekArray[0]; var endweek = weekArray[1]; //按周的页面 // var beginweek = getYearWeek(beginTimeArray[0], beginTimeArray[1], beginTimeArray[2]); // var endweek = getYearWeek(endTimeArray[0], endTimeArray[1], endTimeArray[2]); for (var i = beginweek; i <= endweek; i++) { xStringData.push(i + "周"); seriseDataValue.push(0); } } return returnData; }; function getYearWeekByRemote(beginStr, endStr) { var weekArray = []; var times = [] times.push(beginStr); times.push(endStr); var req = { times: times, sysCode: sysComm.sysCode }; var easyUIOps = { method: "POST", async: false, url: dataUrl.util.timeToWeek(), data: JSON.stringify(req), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (res) { weekArray = res.data; console.log(weekArray); } }; sysAjax(easyUIOps); return weekArray; } //判断当前日期为当年第几周 var getYearWeek = function (a, b, c) { //date1是当前日期 //date2是当年第一天 //d是当前日期是今年第多少天 //用d + 当前年的第一天的周差距的和在除以7就是本年第几周 var date1 = new Date(a, parseInt(b) - 1, c), date2 = new Date(a, 0, 1), d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000); return Math.ceil((d + ((date2.getDay() + 1) - 1)) / 7); }; //判断当前日期为当月第几周 var getMonthWeek = function (a, b, c) { //a = d = 当前日期 //b = 6 - w = 当前周的还有几天过完(不算今天) //a + b 的和在除以7 就是当天是当前月份的第几周 var date = new Date(a, parseInt(b) - 1, c), w = date.getDay(), d = date.getDate(); return Math.ceil((d + 6 - w) / 7); }; function getPlNosByPlType(plNos, plType) { var newPlNos = []; var data = fn.getParkLot(); for (var index in plNos) { for (var indexTwo in data) { if (plNos[index] == data[indexTwo].code && parseInt(plType) == parseInt(data[indexTwo].type)) { newPlNos.push(plNos[index]); } } } return newPlNos; }