/**
|
* Crm数据图表
|
* Created by jiangyouyao on 2019/4/20.
|
*/
|
function ChartsUtils(loadChartData) {
|
|
//赋值加载数据方法
|
this.loadChartData = loadChartData;
|
this.$beginTime = $("#beginTime");
|
this.$endTime = $("#endTime");
|
this.$unitSelect = $("#unitSelect");
|
//记录当前视图的格式化字符串
|
this.dateFmt = "";
|
//绑定搜索事件
|
$('#serach').on("click",{charts:this},this.updateChartsDate);
|
//时间单位选择变化
|
this.$unitSelect.on("change",{charts:this},this.unitChange);
|
|
|
}
|
|
|
|
|
/**
|
* 设置时间控件格式
|
*/
|
ChartsUtils.prototype.setDataPackTimeValue = function () {
|
|
console.log("设置时间");
|
var unit = this.$unitSelect.val();
|
var startView, minView;
|
//控件赋值
|
var time = new Date();
|
if (unit == '时') {
|
startView = 1;
|
minView = "day";
|
this.dateFmt = "yyyy-MM-dd hh";
|
//时间视图默认显示当天
|
this.$endTime.val(DateFormat.format(DateFormat.getDateEnd(time), this.dateFmt));
|
this.$beginTime.val(DateFormat.format(DateFormat.getDateStart(time), this.dateFmt));
|
} else if (unit == '日') {
|
console.log(time.getDate());
|
startView = 2;
|
minView = "month";
|
this.dateFmt = "yyyy-MM-dd";
|
//日视图默认显示当月
|
this.$endTime.val(DateFormat.format(time, this.dateFmt));
|
this.$beginTime.val(DateFormat.format(DateFormat.addDay(time, -(time.getDate() - 1)), this.dateFmt));
|
|
} else if (unit == '月') {
|
startView = 3;
|
minView = "year";
|
this.dateFmt = "yyyy-MM";
|
//月视图默认显示当年
|
this.$endTime.val(DateFormat.format(time, this.dateFmt));
|
this.$beginTime.val(DateFormat.format(DateFormat.addMonth(time, -time.getMonth()), this.dateFmt));
|
} else if (unit == '年') {
|
startView = 4;
|
minView = "decade";
|
this.dateFmt = "yyyy";
|
//年视图默认显示5年
|
this.$endTime.val(DateFormat.format(time, this.dateFmt));
|
this.$beginTime.val(DateFormat.format(DateFormat.addYear(time, -5), this.dateFmt));
|
}
|
console.log("startView", startView);
|
//时间
|
var _initParam = {
|
format: this.dateFmt.toLowerCase(),
|
todayBtn: false,
|
autoclose: true,
|
startView: startView,
|
maxView: 4,
|
minView: minView
|
};
|
MTools.ininDatetimepicker(_initParam);
|
|
}
|
|
/**
|
* 校验时间范围
|
*/
|
ChartsUtils.prototype.checkTime = function () {
|
var beginTimeStr = this.$beginTime.val();
|
var endTimeStr = this.$endTime.val();
|
if (StringUtils.isNotEmpty(beginTimeStr) && StringUtils.isNotBlank(endTimeStr)) {
|
//字符串不为空
|
var beginTime = moment(beginTimeStr);
|
var endTime = moment(endTimeStr);
|
console.log(beginTime.unix(), endTime.unix());
|
if (beginTime.unix() <= endTime.unix()) {
|
return true;
|
} else {
|
layer.msg("最小日期不能大于最大日期", {icon: 2});
|
return false;
|
}
|
} else {
|
layer.msg("请选择日期范围", {icon: 2});
|
return false;
|
}
|
}
|
|
ChartsUtils.prototype.unitChange = function (event) {
|
//移除时间控件上的绑定时间
|
$("#beginTime").datetimepicker('remove');
|
$("#endTime").datetimepicker('remove');
|
//根据单位重设定查询条件,新绑定时间控件,
|
event.data.charts.setDataPackTimeValue();
|
event.data.charts.loadChartData();
|
}
|
|
|
/**
|
* 更新图表中的数据
|
*/
|
ChartsUtils.prototype.updateChartsDate=function(event){
|
if(event.data.charts.checkTime()){
|
event.data.charts.loadChartData();
|
}
|
}
|
|
/**
|
*指定图表的配置项和数据
|
*/
|
ChartsUtils.prototype.getption=function(title) {
|
return {
|
title: {
|
text: title,
|
padding: 20
|
},
|
legend: {},
|
toolbox: {
|
show: true,
|
feature: {
|
mark: {show: true},
|
dataView: {show: true, readOnly: false},
|
magicType: {show: true, type: ['line', 'bar']},
|
restore: {show: true},
|
saveAsImage: {show: true}
|
}
|
},
|
tooltip: {
|
trigger: 'axis'
|
},
|
xAxis: {
|
type: 'category',
|
boundaryGap: false,
|
axisLabel: {
|
rotate: 30
|
},
|
splitLine: {
|
show: false,
|
},
|
data: []
|
},
|
yAxis: {
|
type: 'value'
|
},
|
dataZoom: [
|
{
|
id: 'dataZoomX',
|
type: 'slider',
|
xAxisIndex: [0],
|
filterMode: 'filter'
|
}
|
],
|
animation: true,
|
animationDuration: 1000,
|
animationDurationUpdate: 1000,
|
animationEasing: 'linear',
|
animationEasingUpdate: 'linear',
|
}
|
|
};
|