本案例的数据为模拟创建的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);
});