/** * 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', } };