define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-theme'], function ($, undefined, Backend, Table, Form, Echarts) { var Controller = { index: function () { var option1 = { title: { text: '订单统计', subtext: '' }, tooltip: { trigger: 'axis', formatter: "{b}
{a0} : {c0} 个
{a1} : {c1} 元" }, legend: { data: ['订单额', '订单数'] }, toolbox: { show: true, feature: { dataView: {show: true, readOnly: false}, magicType: {show: true, type: ['line', 'bar']}, restore: {show: true}, saveAsImage: {show: true} } }, calculable: true, xAxis: [ { type: 'category', data: Config.orderSaleCategory } ], yAxis: [ { type: 'value' } ], series: [ { name: '订单数', type: 'line', data: Config.orderSaleNums, markPoint: { data: [ {type: 'max', name: '最大值'}, {type: 'min', name: '最小值'} ] }, markLine: { data: [ {type: 'average', name: '平均值'} ] } }, { name: '订单额', type: 'bar', smooth: true, symbol: 'none', data: Config.orderSaleAmount, markPoint: { data: [ {type: 'max', name: '最大值'}, {type: 'min', name: '最小值'} ] }, markLine: { data: [ {type: 'average', name: '平均值'} ] } } ] }; var myChart1 = Echarts.init($('#echarts1')[0], 'walden'); myChart1.setOption(option1); var option2 = { title: { text: '付费占比', subtext: '各模型付费占比', x: 'center' }, tooltip: { trigger: 'item', formatter: "{a}
{b} : {c} ({d}%)" }, legend: { orient: 'vertical', left: 'left', data: Config.orderPercentCategory }, series: [ { name: '订单数', type: 'pie', center: ['50%', '50%'], data: Config.orderPercentNums, radius: [0, '30%'], label: { position: 'inner' }, itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }, { name: '订单额', type: 'pie', radius: ['40%', '55%'], label2: { formatter: '{a|{a}}{abg|}\n{hr|}\n {b|{b}:}{c} 元 {per|{d}%} ', backgroundColor: '#eee', borderColor: '#aaa', borderWidth: 1, borderRadius: 4, rich: { a: { color: '#999', lineHeight: 22, align: 'center' }, hr: { borderColor: '#aaa', width: '100%', borderWidth: 0.5, height: 0 }, b: { fontSize: 12, lineHeight: 33 }, per: { color: '#eee', backgroundColor: '#334455', padding: [2, 4], borderRadius: 2 } } }, data: Config.orderPercentAmount } ] }; var myChart2 = Echarts.init($('#echarts2')[0], 'walden'); myChart2.setOption(option2); $(window).on("resize", function () { myChart1.resize(); myChart2.resize(); }); // 基于准备好的dom,初始化echarts实例 var myChart3 = Echarts.init($('#echarts3')[0], 'walden'); // 指定图表的配置项和数据 var option3 = { title: { text: '', subtext: '' }, tooltip: { trigger: 'axis' }, legend: {}, toolbox: { show: true, feature: { dataView: {show: true, readOnly: false}, magicType: {show: true, type: ['line', 'bar']}, restore: {show: true}, saveAsImage: {show: true} } }, calculable: true, xAxis: { type: 'category', boundaryGap: false, data: Config.orderSaleCategory }, yAxis: {}, grid: [{ left: 'left', top: 'top', right: '10', bottom: 30 }], series: [ { name: "交易额", type: 'line', smooth: true, areaStyle: { normal: {} }, lineStyle: { normal: { width: 1.5 } }, data: Config.orderSaleAmount }] }; // 使用刚指定的配置项和数据显示图表。 myChart3.setOption(option3); $(window).resize(function () { myChart3.resize(); }); if ($("#echarts4").length > 0) { // 基于准备好的dom,初始化echarts实例 var myChart4 = Echarts.init($('#echarts4')[0], 'walden'); // 指定图表的配置项和数据 var option4 = { title: { text: '', subtext: '' }, tooltip: { trigger: 'axis' }, legend: {}, toolbox: { show: true, feature: { dataView: {show: true, readOnly: false}, magicType: {show: true, type: ['line', 'bar']}, restore: {show: true}, saveAsImage: {show: true} } }, calculable: true, xAxis: { type: 'category', boundaryGap: false, data: Config.adminArchivesListCategory }, yAxis: {}, grid: [{ left: 'left', top: 'top', right: '10', bottom: 30 }], series: Config.adminArchivesListData }; // 使用刚指定的配置项和数据显示图表。 myChart4.setOption(option4); $(window).resize(function () { myChart4.resize(); }); } $(".datetimerange").data("callback", function (start, end) { var date = start.format(this.locale.format) + " - " + end.format(this.locale.format); $(this.element).val(date); var model_id = $(this.element).closest("form").find(".model_id").val(); refresh_echart($(this.element).data("type"), date, model_id); }); $(".model_id").on("change", function () { var input = $(this).closest("form").find(".datetimerange"); var type = $(input).data("type"); var date = $(input).val(); var model_id = $(this).val(); refresh_echart(type, date, model_id); }); Form.api.bindevent($("#form1")); Form.api.bindevent($("#form2")); var si = {}; var refresh_echart = function (type, date, model_id) { si[type] && clearTimeout(si[type]); si[type] = setTimeout(function () { Fast.api.ajax({ url: 'cms/statistics/index', data: {date: date, type: type, model_id: model_id}, loading: false }, function (data) { if (type == 'sale') { option1.xAxis.data = data.orderSaleCategory; option1.series[0].data = data.orderSaleNums; option1.series[1].data = data.orderSaleAmount; myChart1.clear(); myChart1.setOption(option1, true); } else if (type == 'percent') { option2.legend.data = data.orderPercentCategory; option2.series[0].data = data.orderPercentNums; option2.series[1].data = data.orderPercentAmount; myChart2.clear(); myChart2.setOption(option2, true); } else if (type == 'order') { option3.xAxis.data = data.category; option3.series[0].data = data.data; myChart3.clear(); myChart3.setOption(option3, true); } else if (type == 'archives') { option4.xAxis.data = data.category; option4.series = data.data; myChart4.clear(); myChart4.setOption(option4, true); } return false; }); }, 50); }; //点击按钮 $(document).on("click", ".btn-filter", function () { var label = $(this).text(); var obj = $(this).closest("form").find(".datetimerange").data("daterangepicker"); var dates = obj.ranges[label]; obj.startDate = dates[0]; obj.endDate = dates[1]; obj.clickApply(); }); //点击刷新 $(document).on("click", "a.btn-refresh", function () { if ($(this).data("type")) { refresh_echart($(this).data("type"), ""); } else { var input = $(this).closest("form").find(".datetimerange"); var type = $(input).data("type"); var date = $(input).val(); var model_id = $(this).closest("form").find(".model_id").val(); refresh_echart(type, date, model_id); } }); //每隔一分钟定时刷新图表 setInterval(function () { $(".btn-refresh").trigger("click"); }, 60000); //选项卡切入事件 $(document).on("click", "#resetecharts", function () { setTimeout(function () { $(window).trigger("resize"); }, 50); }); }, add: function () { Controller.api.bindevent(); }, edit: function () { Controller.api.bindevent(); }, api: { bindevent: function () { Form.api.bindevent($("form[role=form]")); } } }; return Controller; });