美文网首页
FineReport报表工具踩过的坑

FineReport报表工具踩过的坑

作者: 吴里庆庆 | 来源:发表于2018-05-31 17:56 被阅读0次

1.查询按钮基本点击事件

var kindId = this.options.form.getWidgetByName("kindId").getText(); 
var billYear = this.options.form.getWidgetByName("billYear").getValue(); 
var billMonth = this.options.form.getWidgetByName("billMonth").getValue(); 
var reportIds=this.options.form.getWidgetByName("reportId").getValue();

//在参数界面获取控件的方法,先获取表单,再通过控件名称来获取控件  
if(kindId==""){
    alert('工单大类为必选项!');
        return false;
}
if(billYear==""){
    alert('查询年份为必选项!');
        return false;
}
if(reportIds.length==0){
    alert('请选择要查询报表!');
    return false;
}
if(billMonth==""){
    alert('请选择要查询月份!');
    return false;
}
if(reportIds.indexOf("1") !=-1){
    if(billMonth.length>=2)
    {alert('达标统计不支持多月查询!');
    return false;}
}

2.图表标题公式定义

"工单完成情况统计
【工单场景:" + sql("ywgl157", "select KIND_NAME NAME from BILL_KIND where kind_id=" + $kindId, 1)+"】"

3.图表跳转到新的报表

添加超级链接


图3.1 添加超级链接跳转至新报表页面

4.设置图表自定义标题[组合图]

 function() {
        var result = "";
        var points = this.points;
        for (var i = 0; i < points.length; i++) {
            if (i > 0) {
                result += "<br>";
            }
            result = result + points[i].seriesName + " " + FR.contentFormat(points[i].getTargetValue(), "##0.00");

        }
        var z = this.category;
        var a = FR.remoteEvaluate('=sql("wqmysql", "select donghuan_num from wq_new_bill where region_name=\'' + z + '\'", 1)');
        var b = FR.remoteEvaluate('=sql("wqmysql", "select junei_num from wq_new_bill where region_name=\'' + z + '\'", 1)');
        var c = FR.remoteEvaluate('=sql("wqmysql", "select wuxian_num from wq_new_bill where region_name=\'' + z + '\'", 1)');
        var d = FR.remoteEvaluate('=sql("wqmysql", "select xianlu_num from wq_new_bill where region_name=\'' + z + '\'", 1)');
        return this.category + "<br>" + result + "<br>动环工单执行数:" + a + "<br>局内工单执行数:" + b + "<br>无线工单执行数:" + c + "<br>线路工单执行数:" + d;
    }

为标题某行特殊定义字体高亮

  function() {
        var result = "";
        var points = this.points;
        for (var i = 0; i < points.length; i++) {
            if (i > 0) {
                result += "<br>";
            }
            if(i==2||i==3){
                var balance;var cc;
                console.log(points[i].getTargetValue());
                if((points[i].getTargetValue()+"").indexOf("%")!=-1){
                    balance=parseFloat(points[i].getTargetValue()+"")/100;
                }else{
                    console.log('小数:'+points[i].getTargetValue());
                    balance=parseFloat(points[i].getTargetValue()+"");
                }
                if(balance<0.9){
                    cc=FR.contentFormat(balance*100, "##0.00")+"%";
                    console.log('小于0.9:'+cc);
                    result = result + "<font color=\"red\">"+points[i].seriesName + " " + cc+"</font>";
                }else {
                    cc=FR.contentFormat(balance*100, "##0.00")+"%";
                    console.log('大于0.9:'+cc);
                    result = result + points[i].seriesName + " " + cc;
                }
            }else{
                result = result + points[i].seriesName + " " + FR.contentFormat(points[i].getTargetValue(), "##0.00");
            }
        }
        console.log(result);
        var z = this.category;
        var a = FR.remoteEvaluate('=sql("wqmysql", "select donghuan_num from wq_new_bill where region_name=\'' + z + '\'", 1)');
        var b = FR.remoteEvaluate('=sql("wqmysql", "select junei_num from wq_new_bill where region_name=\'' + z + '\'", 1)');
        var c = FR.remoteEvaluate('=sql("wqmysql", "select wuxian_num from wq_new_bill where region_name=\'' + z + '\'", 1)');
        var d = FR.remoteEvaluate('=sql("wqmysql", "select xianlu_num from wq_new_bill where region_name=\'' + z + '\'", 1)');
        return this.category + "<br>" + result + "<br>动环工单执行数:" + a + "<br>局内工单执行数:" + b + "<br>无线工单执行数:" + c + "<br>线路工单执行数:" + d;
   }

显示效果如下:


图4.1 高亮显示标题效果图.png

sql多个字段只需查询一次

            var a = FR.remoteEvaluate('=sql("wqmysql", "select \'<br>动环工单执行数:\'||donghuan_num||\'<br>局内工单执行数:\'||junei_num||\'<br>无线工单执行数:\'||wuxian_num||\'<br>线路工单执行数:\'|| xianlu_num from wq_new_bill where region_name=\'' + z + '\'", 1)');
            return  "<hr>" + a ;
        }

5.添加警戒线

在背景->绘图区添加警戒线


图5.1 为组合图中的拆线图设置警戒线

6.设置饼图指定层配色

条件显示中设置


图6.1 条件设置饼图指定层配色

效果图如下


图6.2 设置饼图指定层配色效果图

7.根据下拉框动态显示/隐藏图表

思路:将图表置放在单元格内,需要隐藏将行高或列宽设为0即可。


图7.1 为下拉框控件设定ID

为图表添加条件属性


图7.2 为图表添加条件属性

8.图表数据从单元格读取

此做法适用于图表的系列是动态设定的。单元格中设置好数据源。


图8.1 为图表设置单元格数据源

9.图表中的自定义标题获取控件值

function(){  
var kindId =_g().parameterEl
.getWidgetByName("kindId")
.getValue();    
return kindId+this.category+
this.seriesName+this.value;
}

js设置图表标题


图9.1 图表标题JS设置获取下拉框具体设计

10.树型显示

具体步骤如下:


图10.1 添加树节点按钮
图10.2 树型显示效果图
图10.3 数据列汇总求和设置
图10.4 添加左父格
图10.5 数据结果集结构

11.列表中某一项跳转查看详情

点击已经设置了超级链接的单元格可进行页面跳转,跳转的url比如:http://localhost....jsp

图11.1 为列表元素设置超级链接

12.根据type使用不同的数据源

  • 1.设置多个数据集

这里举例我设置了第一个数据集,名叫'gcphBill'


图12.1 gcphBill数据集
  • 2.添加一个关联数据集

在上一步设置完多个数据集以后,可以添加一个关联数据集,将上面的数据集串起来。


图12.2 添加一个关联数据集
  • 3.设置type

为每一个不同数据集设置不同的type值。如果type=3,它会使用gcphBill。


图12.3 设置type

13.表头动态设置

接上一节,光设置了数据集,但是表头也想动态显示时,那么就需要给表头添加对应的条件属性(这里如果表头字段过多,此方法不适用。可以查看第7节设置表头隐藏/显示来动态控制显示字段。比如这里:gcph的表头设置在第一行,zyjh的表头设置在第二行,再根据type来动态使哪一行来显示,具体原理参照第七节)


图13.1 表头显示值动态设置

注:本文长期更新,有错误不足之外欢迎指正留言!

相关文章

网友评论

      本文标题:FineReport报表工具踩过的坑

      本文链接:https://www.haomeiwen.com/subject/skfcsftx.html