[FineReport帆软]填报全选及批量打印

[FineReport帆软]填报全选及批量打印_第1张图片

1. 填报全选

1) 需要在全选复选框设置中设置状态改变事件:

状态改变事件js代码:

var flag=this.getValue();               //获取当前复选框控件的状态,true /false
for(var i=0;i

2) 为保证报表及字体风格一致性,需要设置复选框的文本颜色为白色,此处需要设置初始化后事件:

初始化事件js代码:

$('.fr-checkbox-checkoff').css('color','white');

3) 需要设置明细复选框的初始化事件及状态改变事件:

初始化事件js代码:

if (!window.lineboxes) {  
    window.lineboxes = [];        //控件加入到一个全局数组里
}  
lineboxes[lineboxes.length] = this;

状态改变事件js代码1:

//当前复选框未选择时,设置全选不选中
if(this.getValue()==false){
_g().setCellValue('A2',null,false);
} else {
var allChecked=true;
//循环判断所有复选框都选中时,将全选复选框选中
for(var i=1;i

状态改变事件js代码2:

var location = this.options.location;  //获取当前控件的位置
var cr = FR.cellStr2ColumnRow(location);
var col = cr.col;  //列号
var ro = cr.row;  //行号
var zybck = contentPane.getWidgetByCell(FR.columnRow2CellStr({col: col, row: ro}));
//根据单元格获取控件
//alert(zybck.getValue());  //获取对应的值
if(zybck.getValue()){
contentPane.setCellValue(FR.columnRow2CellStr({col: col+1, row: ro}),null,1)}
if(!zybck.getValue())
{
contentPane.setCellValue(FR.columnRow2CellStr({col: col+1, row: ro}),null,0)}

2. 批量打印

1) 概述

为实现批量打印,需要使用js调用FR打印的接口:

JAR 包时间在 2018-04-09 之前的设计器,有两种办法实现 Flash、PDF 两种客户端打印:doURLFlashPrint、doURLPDFPrint;

JAR 包时间在 2018-04-09 及之后的设计器,有一种办法实现新客户端打印:doURLPrint;

2) 接口说明

JS 打印接口:FR.doURLPrint(config),使用 get 传参,具体 config 参数如下表所示:

参数 含义
printurl 需要打印的模板的应用地址和服务,如"http://localhost:8075/webroot/decision/view/report"

允许为空。如果为空的话,就使用当前的 servlet 地址。如果需要跨域,则此参数不能为空。

isPopUp

是否弹出设置窗口

true:弹出

false:不弹出

data 为需要打印的模板列表及其参数,如"[{reportlet: '1.cpt', p1: 'a'}, {reportlet: '1.cpt', p1: 'b'}]"
printType

打印类型

0:零客户端打印

1:本地打印


 

 

3) 批量打印点击事件js代码:

var printurl="http://192.168.0.5:8090/webroot/decision/view/report";
var run_ids = [];    
var paths = [];    
var singlepaths = [];    
var $span = $('.fr-checkbox-checkon');    
var $tds = $("td").has($span); 
var $trs = $("tr").has($tds);   
var p=[]; 
if($trs.length==0){
	alert('勾选项不可全为空!');//未选中时不可打印
}
else
{
for(var i=0; i<$trs.length;i++){   
	var run_id = $("td:eq(2)",$($trs[i])).html();
	var flow_id = $("td:eq(3)",$($trs[i])).html();
	if(flow_id=='152'){
		var cptpath ="oa/oa_print.cpt";
	}
	if(flow_id=='157'){
		var cptpath ="oa/oa_print2.cpt";	
	}
	if(flow_id=='159'){
		var cptpath ="oa/oa_print3.cpt";	
	}
	var urlstring = "{reportlet:" + "'" + FR.cjkEncode(cptpath) + "'" + ",runID:" + "'" + run_id +"'}"; 
	debugger;
	paths.push(urlstring);
	debugger;
}  
if(paths.length>0){
	var rpaths=paths.join(","); 
	var reportlets="["+rpaths+"]";  
	var config = {
			printUrl : printurl,
			printType : 0, 
			isPopUp : false,
			data : {reportlets:reportlets}
		     };    
}          	
debugger; 
FR.doURLPrint(config);
}

说明:因为在本次打印需要根据流程不同调用不同的打印模板,所以for循环中添加if判断;

3. 模板下载

https://download.csdn.net/download/tao_yf1989/13070720

你可能感兴趣的:(FineReport帆软)