本案例的数据为模拟创建的2017年某公司销售数据,字段如下:
所有示例可在以下地址操作演示: http://demo.boubei.com, 账号: demo 密码: www.boubei.com
引入百度echarts可视化组件和jQuery,通过jQuery发送AJAX请求向TSS查询报表数据,组装后通过echarts展现成各式图表。
<script src="../../tools/easyui/jquery.min.js"></script> <script src="../../tools/echarts/echarts-all-2.1.10.js"></script>Echarts快速入门参考《5 分钟上手 ECharts》
先创建一个数据服务,然后在展示页面里通过AJAX请求数据服务。
/* 示例: var label = ["广东", "浙江", "江苏", "四川", "山东", "湖北", "河南", "湖南", "河北", "安徽", "上海", "福建", "北京", "辽宁", "江西"]; var data = [5782, 5672, 5167, 4610, 4560, 4475, 4168, 4022, 3690, 3470, 3290, 3168, 2914, 2567, 2538]; show(label, data); */ function show(label, data) { var myChart = echarts.init(document.getElementById('chart1')); var option = { title: { text: 'TSS 展示入门示例' }, tooltip: {}, legend: { data:['各省销量'] }, xAxis: { data: label }, yAxis: {}, series: [{ name: '各省销量', type: 'bar', data: data }] }; myChart.setOption(option); } // 请求数据服务【id=52】,地址:/tss/data/json/52,获取数据,简单组装后即可展示。 $.getJSON("/tss/data/json/52", {}, function(result) { var data = [], label = []; // result格式:[{"pro":"广东","num":5782},{"pro":"浙江","num":5672},......] for(var i = 0; i < result.length; i++) { var item = result[i]; data.push(item.num); label.push(item.pro); } show(label, data); });
数据服务: select MONTH(day) month, count(*) num from order_17 group by MONTH(day) order by month JS代码: function show(label, data) { var myChart = echarts.init(document.getElementById('chart1')); var option = { title: { text: 'TSS 展示入门示例' }, tooltip: {}, legend: { data:['月销量'] }, xAxis: { data: label }, yAxis: {}, series: [{ name: '月销量', type: 'line', data: data }] }; myChart.setOption(option); } $.getJSON("/tss/data/json/53", {}, function(result) { var data = [], label = []; for(var i = 0; i < result.length; i++) { var item = result[i]; data.push(item.num); label.push(item.month); } show(label, data); });
略,同上且参考demo页面。
具体实现参考: http://demo.boubei.com/tss/more/bi_template/distribute.html, 账号: demo 密码: www.boubei.com
引入EasyUI结合TSS框架制表,通过jQuery发送AJAX请求向TSS查询报表数据,组装后通过EasyUI展现成各式表格。
EasyUI入门示例请参考:EasyUI demo
<link rel="stylesheet" href="../../css/easyui.css"> <link rel="stylesheet" href="../../tools/easyui/themes/default/easyui.css"> <script src="../../tools/tssJS/tssJS.all.js"> <script src="../../tools/easyui/jquery.min.js"> <script src="../../tools/easyui/jquery.easyui.min.js"> <script src="../../tools/easyui/easyui-lang-zh_CN.js">
数据服务: select year(day) year, month(day) month ,sum(qty) num, round(sum(money),2) money from order_17 <#if param1??>where year(day) = '${param1}'#if> group by year(day), month(day) JS代码 $(function() { $('#year').combobox({//类型 valueField:'value', textField:'text', data: [{text: "全部",value:'全部',selected:true},{text: "2018",value:'2018'}, {text: "2017",value:'2017'}] }); query(); }); var FIELDS=[ {field: 'year', title: '年份', width: 80, align: 'center'}, {field: 'month', title: '月份', width: 80, align: 'center'}, {field: 'num', title: '销售数量', width: 120, align: 'center'}, {field: 'money', title: '销售金额', width: 120, align: 'center'} ]; function query(){ var params={}; if($('#year').combobox('getValue') != '全部'){ params.param1 = $('#year').combobox('getValue'); } $.getJSON("/tss/data/json/75", params, function(result) { dg = $('#t1').datagrid({ data: result, pageList:[100,300,500,1000], pageSize : 100, pagination: true, fit: true, fitColumns: true, checkOnSelect: true, selectOnCheck: true, columns:[FIELDS] }); }) }; HTML的BODY内容 <div id="main" class="easyui-layout" fit="true"> <div id="dataContainer" border="false" style="height: 100%;"> <table id="t1" class="easyui-datagrid" data-options="toolbar:'#t2'" border="flase"></table> </div> <div id="t2" style="padding:5px"> <label>年份</label> <input id='year' class='easyui-combobox' style="width:100px"/> <a id="qutn" href="#" class="easyui-linkbutton" onclick="query()">查询</a> </div> </div>
同比环比,输入标准格式数据:月份、数值1、数值2,自动出来折线图
(本例子数据格式有:年 月 销售量 销售额)
<link rel="stylesheet" href="../../css/easyui.css"> <link rel="stylesheet" href="../../tools/easyui/themes/default/easyui.css"> <script src="../../tools/echarts/echarts-all-3.1.2.js"></script>//图 <script src="../../tools/easyui/jquery.min.js"></script> <script src="../../tools/easyui/jquery.easyui.min.js"></script> <script src="../../tools/easyui/easyui-lang-zh_CN.js"></script>数据服务见上一内容-基础表的数据
JS代码 function show(label,data1,data2,data3,data4){ var dom = document.getElementById('chart1'); var myChart = echarts.init(dom); var option = { title: { text: 'TSS 展示入门示例', }, tooltip: { trigger: 'axis', axisPointer: { type: 'cross',crossStyle: {color: '#999'} } }, legend: { data:['销量','金额(百元)','销量环比','金额同比'] }, xAxis: [{ data: label }], yAxis: [ {min: 0,max: 25000,interval: 5000}, {name: '%',min: -100,max: 300,interval: 80} ], series: [ { name:'销量', type:'bar', data:data1 }, { name:'金额(百元)', type:'bar', data:data2 }, { name:'销量环比', type:'line', yAxisIndex: 1, data:data3 }, { name:'金额同比', type:'line', yAxisIndex: 1, data:data4 } ] } myChart.setOption(option, true); } function split_arr(arr,len){ var newArr = []; for (var i =0;i < arr.length ;i+=len){ newArr.push(arr.slice(i,i+len)); } return newArr } $.getJSON("/tss/data/json/75", {}, function(result) { var label =[],data1 = [], data2 = [], data3 = [], data4 = [],totaldata =[]; var data = split_arr(result,result.length/2); for(var j=0; j< data[1].length; j++){ var item = data[1][j],item1 = data[1][j-1] || data[1][j],item2 = data[0][j]; label.push(item.month); data1.push(item.num); data2.push(Math.round(item.money)/100); data3.push( Math.round( (item.num - item1.num)/item1.num * 10000)/100 ); data3[0] = null ; data4.push( Math.round( (item.num - item2.num)/item2.num * 10000)/100 ); totaldata.push({'label':label[j],'data1':data1[j],'data2':data2[j],'data3':(data3[j]||'--')+'%','data4':data4[j] + '%'}); dg = $('#t1').datagrid({ data: totaldata, fit: true, fitColumns: true, checkOnSelect: true, selectOnCheck: true, columns:[[ {title:'月份', field:'label', width: 90, align:'center'}, {title:'销量', field:'data1', width: 120, align:'center'}, {title:'金额(百元)', field:'data2', width: 150, align:'center'}, {title:'销量环比', field:'data3', width: 95, align:'center'}, {title:'金额同比', field:'data4', width: 95, align:'center'} ]] }); } show(label, data1,data2,data3,data4); });