/**
* 默认从缓存读的实时数据
*/
//时间初始化
/*进场时间筛选框*/
$('#incomeprofile-dateTime input').val(moment().subtract('days', 1).format('YYYY-MM-DD')+ ' - ' + moment().subtract('days', 1).format('YYYY-MM-DD'));
$('#incomeprofile-dateTime').daterangepicker({
// timePicker: true,
// timePickerIncrement: 20,
// minDate: moment().subtract('months', 2),
startDate: moment().subtract('days', 1),
endDate: moment().subtract('days', 1),
opens: 'left', //日期选择框的弹出位置
// dateLimit : {
// days : 6
// },
locale: {
applyLabel: '确定',
cancelLabel: '取消',
customRangeLabel: '自定义',
daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],
monthNames: ['一月', '二月', '三月', '四月', '五月', '六月',
'七月', '八月', '九月', '十月', '十一月', '十二月'],
// format: 'MM/DD/YYYY HH:mm:ss'
},
ranges: {
'昨天': [moment().subtract('days', 1), moment().subtract('days', 1)],
'最近一周': [moment().subtract('days', 6), moment().subtract('days', 0)],
// '最近一个月': [moment().subtract('months', 1), moment().subtract('days', 1)],
// '最近三个月': [moment().subtract('months', 2), moment().subtract('days', 1)],
},
maxDate: moment().subtract('days', 0), //最大时间
},
function (start, end) {
$('#incomeprofile-dateTime input').val(start.format('YYYY-MM-DD') + ' - ' + end.format('YYYY-MM-DD'));
}
);
//地图 部分
var map; //Map实例
//后台传过来
var currentLat = 118.922316;
var currentLon = 42.25953;
var clear_flag=false;
//收益-按收益程度计数
var incomeArray=[0,0,0,0,0];
//数据
mapData=[
{
parkNo:"001",
plname:"万达广场",
lat:"118.973744",
lot:"42.275538",
allnum:"3000",
ltnum:"1000",
vipnum:"1000",
bjnum:"1000"
},
{
parkNo:"002",
plname:"万达广场西街",
lat:"118.971157",
lot:"42.28429",
allnum:"600",
ltnum:"200",
vipnum:"200",
bjnum:"200"
},
{
parkNo:"003",
plname:"万达广场北街",
lat:"118.98668",
lot:"42.275324",
allnum:"300",
ltnum:"100",
vipnum:"100",
bjnum:"100"
},
{
parkNo:"004",
plname:"万达广场东街",
lat:"118.944999",
lot:"42.272762",
allnum:"90",
ltnum:"10",
vipnum:"10",
bjnum:"70"
},
];
var mapFun={
init:function () {
map = new BMap.Map("allmap", {enableMapClick: false});
//设置地图中心点,当前城市
var point = new BMap.Point(currentLat,currentLon);
//初始化地图,设置中心点坐标和地图级别。
map.centerAndZoom(point, 13);
//启用滚轮放大缩小
map.enableScrollWheelZoom(true);
//检测浏览器兼容
if (typeof(Worker) === "undefined") {
if (navigator.userAgent.indexOf("MSIE 9.0") <= 0) {
alert("定制个性地图示例:IE9以下不兼容,推荐使用百度浏览器、chrome、firefox、safari、IE10");
}
}
//添加朦层
/*var bdary = new BMap.Boundary();
bdary.get("中华人民共和国", function(rs){ //获取行政区域
map.clearOverlays(); //清除地图覆盖物
var count = rs.boundaries.length; //行政区域的点有多少个
if (count === 0) {
alert('未能获取当前输入行政区域');
return ;
}
var pointArray = [];
for (var i = 0; i < count; i++) {
var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 0, strokeColor: "#C5E3FF",fillColor:"#C5E3FF",fillOpacity: 0.3, });
map.addOverlay(ply); //添加覆盖物
}
});*/
mapFun.drawMarker(mapData);
incomeStatic();
},
drawMarker:function (mapData) {
//清除以前的点位
map.clearOverlays();
//第7步:绘制点
var marker = [];
var poilat = null;//坐标
var poilot = null;
var parkNo = null;//编号
var popAllnum = null;//总计
var popltnum = null;//临停
var popvipnum = null;//会员卡
var popbjnum = null;//补缴
var plname = null;//停车场名称
incomeArray=[0,0,0,0,0];
for (var i = 0; i < mapData.length; i++) {
poilat = mapData[i].lat;
poilot = mapData[i].lot;
parkNo = mapData[i].parkNo;
popAllnum = mapData[i].allnum;
popltnum = mapData[i].ltnum;
popvipnum = mapData[i].vipnum;
popbjnum = mapData[i].bjnum;
plname = mapData[i].plname;
var point = new BMap.Point(poilat, poilot);
incomeArray[4]++;
if (popAllnum>1000) {
incomeArray[3]++;
var myIcon = new BMap.Icon("../../assets/pages/img/mmap/its-park1.png",new BMap.Size(30, 40),{
offset: new BMap.Size(10, 40),
textColor: '#fff'
});
marker[i] = new BMap.Marker(point, {icon: myIcon});
map.addOverlay(marker[i]);
} else if (popAllnum>500 && popAllnum<=1000) {
incomeArray[2]++;
var myIcon2 = new BMap.Icon("../../assets/pages/img/mmap/its-park2.png", new BMap.Size(30,40),{
offset: new BMap.Size(10, 40),
textColor: '#fff'
});
marker[i] = new BMap.Marker(point, {icon: myIcon2});
map.addOverlay(marker[i]);
} else if (popAllnum>100&&popAllnum<=500) {
incomeArray[1]++;
var myIcon3 = new BMap.Icon("../../assets/pages/img/mmap/its-park3.png", new BMap.Size(30,40),{
offset: new BMap.Size(10, 40),
textColor: '#fff'
});
marker[i] = new BMap.Marker(point, {icon: myIcon3});
map.addOverlay(marker[i]);
}else if (popAllnum<100 ||popAllnum==undefined || popAllnum=="" ||popAllnum==null) {
incomeArray[0]++;
var myIcon4 = new BMap.Icon("../../assets/pages/img/mmap/its-park4.png", new BMap.Size(30,40),{
offset: new BMap.Size(10, 40),
textColor: '#fff'
});
marker[i] = new BMap.Marker(point, {icon: myIcon4});
map.addOverlay(marker[i]);
}
marker[i].poilat = mapData[i].lat;
marker[i].poilot = mapData[i].lot;
marker[i].parkNo = mapData[i].parkNo;
marker[i].popAllnum = mapData[i].allnum;
marker[i].popltnum = mapData[i].ltnum;
marker[i].popvipnum = mapData[i].vipnum;
marker[i].popbjnum = mapData[i].bjnum;
marker[i].plname = mapData[i].plname;
marker[i].addEventListener("mouseover", function (n) {
var poilat = n.target.poilat;
var parkNo = n.target.parkNo;
var plname = n.target.plname;
var poilot = n.target.poilot;
var popAllnum = Number(n.target.popAllnum);
var popltnum = Number(n.target.popltnum);
var popvipnum = Number(n.target.popvipnum);
var popbjnum = Number(n.target.popbjnum);
/*var req = {
sysCode: sysComm.sysCode,
cityId: sysComm.cityId,
plNos: [parkNo]
}
var opt = {
method: "post",
data: JSON.stringify(req),
url: dataUrl.util.queryParkFreeBerthsByPkNos(),
success: function (res, xhr, status) {
if (res.code == '8888') {
freepop = res.data[parkNo];
addInfoWindow(parkNo, newpoiX, newpoiY,parkName, freepop, allnumpop)
}
}
}
sysAjax(opt);
*/
addInfoWindow(poilat,parkNo,plname,poilot,popAllnum,popltnum,popvipnum,popbjnum);
});
marker[i].addEventListener("mouseout", function () {
closeInfoWindow();
})
}
//removeCluster(marker);
}
};
//mapFun.init();
//占用率统计条
function incomeStatic(){
var t1=(incomeArray[0]*100/incomeArray[4]).toFixed(2)+'%';
var t2=(incomeArray[1]*100/incomeArray[4]).toFixed(2)+'%';
var t3=(incomeArray[2]*100/incomeArray[4]).toFixed(2)+'%';
var t4=(incomeArray[3]*100/incomeArray[4]).toFixed(2)+'%';
$(".incomeprofile-per-main").find('li').eq(0).css("width",t1);
$(".incomeprofile-per-main").find('li').eq(1).css("width",t2);
$(".incomeprofile-per-main").find('li').eq(2).css("width",t3);
$(".incomeprofile-per-main").find('li').eq(3).css("width",t4);
$(".incomeprofile-per-area").find('span').eq(1).html(t1);
$(".incomeprofile-per-area").find('span').eq(3).html(t2);
$(".incomeprofile-per-area").find('span').eq(5).html(t3);
$(".incomeprofile-per-area").find('span').eq(7).html(t4);
};
function removeCluster(marker) {
if (clear_flag) {
markerClusterer.clearMarkers(); //此步骤需要
}
markerClusterer = new BMapLib.MarkerClusterer(map,
{
markers: marker,
styles: [{
url: '../../assets/pages/img/mmap/parkicon_culter.png',
size: new BMap.Size(68, 67),
zIndex:0
}],
});
markerClusterer.setMaxZoom(13);
clear_flag = true;
}
//close pop弹窗
function closeInfoWindow() {
$(".pop_models").css('display', 'none');
}
//停车场信息弹窗
function addInfoWindow(poilat,parkNo,plname,poilot,popAllnum,popltnum,popvipnum,popbjnum) {
$('.BMapLabel').empty();
var parkNo = parkNo;
var poilat = poilat;
var poilot = poilot;
var plname = plname;
var popAllnum = popAllnum;
var popltnum = popltnum;
var popvipnum = popvipnum;
var popbjnum = popbjnum;
var point = new BMap.Point(poilat, poilot);
var myLabel = new BMap.Label('
' +
'
'+plname+'
' +
'
总计:'+popAllnum+'
' +
'
临停:'+popltnum+'
' +
'
会员卡:'+popvipnum+'
' +
'
补缴:'+popbjnum+'
' +
'
', {
offset: new BMap.Size(30, -85), //label的偏移量,为了让label的中心显示在点上
position: point
});
myLabel.setStyle({
color: "#F0F0F0",
fontSize: "12px",
padding: "5px",
whiteSpace: "normal",
backgroundColor: "rgba(0, 0, 0, 0)",
border: "0px",
zIndex: "1000"
}
);
map.addOverlay(myLabel);
$('.pop_models').parent().parent().css('z-index',99999999)
}
//地图分割线
//var zfbData = [
// {value:50, name:'支付宝',selected:true},
// {value:100-50, name:'总计'},
//];
//var zfbName = '支付宝';
//drawPie('zfbMoney','#1890FF','支付宝','50%',zfbData,zfbName);
//
//var wxData = [
// {value:20, name:'微信',selected:true},
// {value:100-20, name:'总计'},
//];
//var wxName = '现金';
//drawPie('wxMoney','#2FC25B','微信','20%',wxData,wxName);
//
//var xjData = [
// {value:20, name:'现金',selected:true},
// {value:100-20, name:'总计'},
//];
//var wxName = '现金';
//drawPie('xjMoney','#FACC14','现金','20%',wxData,wxName);
//
//var qtData = [
// {value:10, name:'其他',selected:true},
// {value:100-10, name:'总计',},
//];
//var qtName = '其他';
//drawPie('qtMoney','#37CBCB','其他','10%',qtData,qtName);
function drawPie(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.5)',
fontSize:'12',
align:'middle',
verticalAlign:'middle',
},
subtextStyle:{
color:'#000',
fontSize:'18',
align:'middle',
verticalAlign:'middle',
},
left:'center',
top:'50',
},
tooltip: {
trigger: 'item',
show:false,
formatter: "{a}
{b}: {c} ({d}%)"
},
series: [
{
name:seriesName,
hoverAnimation:false,
legendHoverLink:false,
type:'pie',
hoverOffset:5,
selectedOffset:3,
radius: ['70%', '88%'],
avoidLabelOverlap: false,
label: {
normal: {
show: false,
position: 'center'
},
emphasis: {
show: false,
textStyle: {
fontSize: '30',
fontWeight: 'bold'
}
}
},
labelLine: {
normal: {
show: false
}
},
data:seriesData
}
]
}
);
};
var chart = echarts.init(document.getElementById('tytj-echarts'));
var option = {
series: [{
type: 'liquidFill',
color: ['#63BBFF'],
radius: '80%',
data: [0.4],
outline: {
show: true,
borderDistance: 3,
itemStyle: {
color: 'none',
borderColor: '#38A2FF',
borderWidth: 3,
shadowBlur: 0,
shadowColor: 'rgba(255, 255, 255, 0)'
}
},
backgroundStyle: {
color: '#fff'
},
label: {
normal: {
formatter: '',
textStyle: {
fontSize: 98
}
}
}
// label: {
//
// normal: {
// // formatter: '{a}\n{b}\nValue: {c}',
// textStyle: {
// color: 'red',
// insideColor: 'yellow',
// fontSize: 50
// }
// }
// },
}]
};
var plNos=[];
chart.setOption(option);
var fun={
//时间处理
datetimeFormatter: function(value, row, index) {
if(value == null) {
return "";
} else {
return DateUtils.long2String(value, 7);
}
},
getQueryParams:function(){
var times=($('#incomeprofile-dateTime input').val()).split(" - ");
var beginTime = times[0]+" 00:00:00";
var endTime = times[1]+" 23:59:59";
beginTime = new Date(beginTime.replace(new RegExp(/-/gm) ,"/"));
endTime = new Date(endTime.replace(new RegExp(/-/gm) ,"/"));
var req={
baseRequest :{
pageNum: 1,
pageSize: 0
},
plNos:plNos,
beginTime: beginTime,
endTime: endTime,
sysCode:sysComm.sysCode
};
return req;
},
initPark:function(){
var data = fn.getParkLot();
mapData=[];
for (var i = 0; i < data.length; i++) {
plNos.push(data[i].code);
//填充mapData
var mapItem={
parkNo:"",
plname:"",
lat:"0",
lot:"0",
allnum:"0",
ltnum:"0",
vipnum:"0",
bjnum:"0"
};
mapItem.parkNo=data[i].code;
mapItem.plname=data[i].name;
mapItem.lat=data[i].lonId;
mapItem.lot=data[i].latId;
mapData.push(mapItem);
}
},
drawParkIncomeDatas:function(data){
var allIncomeFee = 0;
var vipIncomeFee = 0;
var backIncomeFee = 0;
var tempIncomeFee = 0;
if(data.length>0){
$.each(data, function(index,item) {
allIncomeFee+=item.allIncome;
vipIncomeFee+=item.vipCardIncome;
backIncomeFee+=item.backIncome;
tempIncomeFee+=item.parkIncome;
});
}
//tempIncomeFee = allIncomeFee-vipIncomeFee-tempIncomeFee;
$("#allIncome").html(fun.moneyFomatter(allIncomeFee));
$("#tempIncome").html(fun.moneyFomatter(tempIncomeFee));
$("#vipIncome").html(fun.moneyFomatter(vipIncomeFee));
$("#backIncome").html(fun.moneyFomatter(backIncomeFee));
},
drawParkIncomeList:function(data){
var html='';
var i=1;
if(data.length>0){
$.each(data, function(index,item) {
$.each(mapData, function(_index,_item) {
if(item.plNo==_item.parkNo){
item.plName=_item.plname;
}
});
});
//收入相同的情况下,按中文排序
data.sort(function(a,b){
if(b.allIncome == a.allIncome){
return(a.plName).localeCompare(b.plName,'zh');
}else{
return b.allIncome - a.allIncome;
}
});
$.each(data, function(index,item) {
html+=''+(index+1)+''+item.plName+''+fun.moneyFomatter(item.allIncome)+'';
});
}
else{
//按中文排序
mapData.sort(function(a,b){
return(a.plname).localeCompare(b.plname,'zh');
});
$.each(mapData, function(index,item) {
if(index<10){
html+=''+(index+1)+''+item.plname+''+fun.moneyFomatter(0)+'';
}
});
}
$(".incomeprofile-ranking").html(html);
},
drawParkIncomeMap:function(data){
//mapData初始化
$.each(mapData, function(_index,_item) {
//开始填充mapData
_item.allnum=fun.moneyFomatter(0);
_item.ltnum=fun.moneyFomatter(0);
_item.vipnum=fun.moneyFomatter(0);
_item.bjnum=fun.moneyFomatter(0);
});
if (data != null && data.length>0) {
$.each(data, function(index,item) {
$.each(mapData, function(_index,_item) {
//开始填充mapData
if(item.plNo==_item.parkNo){
_item.allnum=fun.moneyFomatter(item.allIncome);
// _item.ltnum=fun.moneyFomatter(item.allIncomeFee-item.vipIncomeFee-item.backIncomeFee);
_item.ltnum=fun.moneyFomatter(item.parkIncome);
_item.vipnum=fun.moneyFomatter(item.vipCardIncome);
_item.bjnum=fun.moneyFomatter(item.backIncome);
}
});
});
currentLon=mapData[0].lot;
currentLat=mapData[0].lat;
}
//加载地图
mapFun.init();
},
queryIncomeStatistic:function(plNos){
var req = fun.getQueryParams();
var commonAjax = {
method: "post",
url: dataUrl.util.queryParkRealTimeListByPlNos(),
async:false,
data: JSON.stringify(req),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (res) {
console.log(res);
if (res.code == '8888') {
if(res.data!=null){
var data = res.data;
//停车收入概况
fun.drawParkIncomeDatas(data);
//停车排行榜
fun.drawParkIncomeList(data);
//停车收入地图数据
fun.drawParkIncomeMap(data);
}
}
else {
console.log(res);
}
}
};
sysAjax(commonAjax);
},
drawIncomeStatisticForPayType:function(data){
var aliFee = data.parkAliIncome;
var wxFee = data.parkWxIncome;
var cashFee = data.parkCashIncome;
var aliFee = data.parkBalanceIncome;
var actFee = data.parkIncome;
var arrearageFee = data.escapeFee;
var aliRate = ((aliFee*100)/(actFee<1?1:actFee)).toFixed(2);
var wxRate = ((wxFee*100)/(actFee<1?1:actFee)).toFixed(2);
var cashRate = ((cashFee*100)/(actFee<1?1:actFee)).toFixed(2);
var otherRate = 100-aliRate-wxRate-cashRate;
if(actFee<1){
otherRate=(0).toFixed(2);
}
var arrearageRate = ((arrearageFee==null?0:arrearageFee)/(actFee<1?1:actFee)).toFixed(4);
var zfbData = [
{value:aliRate, name:'支付宝',selected:true},
{value:100-aliRate, name:'总计'},
];
var zfbName = '支付宝';
drawPie('zfbMoney','#1890FF','支付宝',aliRate+'%',zfbData,zfbName);
var wxData = [
{value:wxRate, name:'微信',selected:true},
{value:100-wxRate, name:'总计'},
];
var wxName = '现金';
drawPie('wxMoney','#5fe98f','微信',wxRate+'%',wxData,wxName);
var xjData = [
{value:cashRate, name:'现金',selected:true},
{value:100-cashRate, name:'总计'},
];
var wxName = '现金';
drawPie('xjMoney','#FACC14','现金',cashRate+'%',wxData,wxName);
var qtData = [
{value:otherRate, name:'其他',selected:true},
{value:100-otherRate, name:'总计',},
];
var qtName = '其他';
drawPie('qtMoney','#37CBCB','其他',otherRate+'%',qtData,qtName);
//逃逸金额
$("#arrearageRate").html((arrearageRate*100).toFixed(2)+'%');
option.series[0].data[0] = arrearageRate;
chart.setOption(option);
},
queryIncomeStatisticForPayType:function(plNos){
var req = fun.getQueryParams();
var commonAjax = {
method: "post",
url: dataUrl.util.queryParkRealTimeDatasByPlNos(),
async:false,
data: JSON.stringify(req),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (res) {
console.log(res);
if (res.code == '8888') {
if(res.data!=null){
var data = res.data;
//收入占比、逃逸统计
fun.drawIncomeStatisticForPayType(data);
}
}
else {
console.log(res);
}
}
};
sysAjax(commonAjax);
},
moneyFomatter:function(value){
if(value==null){
return "0.00";
}
else{
return (value/100).toFixed(2);
}
},
};
fun.initPark();
fun.queryIncomeStatisticForPayType(plNos);
fun.queryIncomeStatistic(plNos);