本章节主要讲述如何通过页面方式访问乐创者智能报表(lczReport)。
1 集成说明
智能报表需要以独立页面方式呈现,根据业务情景不同,可分为以下两种情景:
1.1 通过浏览器直接访问
包括以下几种方式:
1)、在新开页面中打开
2)、从当前页面跳转到报表页面
以上方式直接通过URL地址即可访问报表页面,PC、移动端都支持。
1.2 将智能报表页面作为业务系统页面的一部分
当把智能报表页面作为子页面集成到业务系统的某个页面中(常见的业务系统左边是菜单,点击菜单项时,右边显示报表内容)时,需要通过iframe标签方式进行加载。
<iframe src="智能报表访问URL" style="width:100%;height:600px;border:0px;" border="0" frameborder="0" ></iframe>
2 访问规范
智能报表页面URL规范:
Request Method:GET
Request URL:{http}://{ip}:{port}/{lczServer}/hrServlet?请求参数
Request URL(适用于单点登录):{http}://{ip}:{port}/{lczServer}/hrServletEx?请求参数
组成说明
{http} 网络协议名称,支持http或https两种协议
{ip} 乐创者服务部署所在的 Internet 主机名,支持ip地址或域名
{port} 乐创者服务部署所在Web应用服务器的访问端口。如果是80或443端口,可缺省
{lczServer} 乐创者服务应用名,乐创者服务部署时的应用上下文根目录(Web Context-root),可根据业务需要调整为其他名称。当乐创者服务代码发布在“ROOT”目录下时,内容为空即可。
3 请求参数
支持明文
和密文
两种传参方式。
注意:
参数值包含中文或特殊字符时需URL编码。
javascript代码示例:url += ‘&variants=’ + encodeURIComponent(‘年份=2019;月份=1’)
java代码示例:url += “&variants=” + java.net.URLEncoder.encode(“年份=2019;月份=1”, “UTF-8”)
3.1 通过明文方式访问
必选参数
参数名 |
类型 |
默认值 |
说明 |
---|---|---|---|
targetVolume | string | 报表模板文件所属应用内部名称。 | |
fileName | string | 报表模板文件内部名称。 | |
authId | string | 可使用登录乐创者服务成功后返回的authId或匿名authId。 非匿名方式访问:&authId=xxxxxxxxxxxx 如果系统配置中开启了‘允许匿名登录’,则可通过匿名方式直接查看报表。 匿名方式访问:&authId=anonymous_admin |
可选参数
参数名 |
类型 |
默认值 |
说明 |
---|---|---|---|
variants | string | 拼接格式:&variants=参数1=参数值1;@参数1=参数显示值1;参数2={year()};…参数n=参数值n; 注意: 1、参数值使用”{“、”}”括起来的代表支持脚本解析,如:年份={year()}。 2、通过variants传入的同名报表参数将默认不在参数页面显示,如需要显示则 需要通过displayVarNames传入要显示的参数名。 |
|
fileAlias | string | 缺省使用报表模板文件的显示名称作为标题。 |
显示在浏览器或窗体上的标题内容,允许通过传参进行个性化显示。 |
displayVarNames | string | 在参数区域显示的报表参数名称。 如果通过variants传递了参数或变量的默认值,某些参数需求在参数页面中显示出来的,则通过本参数指定。 值格式:参数1,参数2,…参数n |
|
hideToolbar | boolean | false,v6.6.3版本以后,默认按照报表属性中工具栏的开启状态 |
是否隐藏顶部工具栏。 |
showParamPanel | boolean | true | 是否显示参数面板 |
acceptLanguage | string | 【v7.3.0版本新增】强制指定客户端访问语言,中文:zh_CN,英文: en 注意:未传递此参数时仍默认按照浏览器语言进行处理。 |
|
templateCustomized | string | 【不推荐使用】报表/单元格表单模板的局部个性化配置,通过该参数动态改变执行模板相关对象的属性设置。参数值为json结构,详见:templateCustomized的结构说明; |
templateCustomized的josn结构说明:
{
"sheets": [
{
"name": "sheet1", //工作表名称
"delete": false, //【可选】工作表剔除属性:true/false
"deleteMoment": 0, //【可选】工作表剔除时机属性:0:执行前、1 :执行后
"hide": false, //【可选】工作表隐藏属性:true/false
"writeable": false, //【可选】工作表可填报属性:true/false
"columns": [//待个性化的列
{
"index": 1 //列号,从1开始,
"hide": true //【可选】列隐藏属性:true/false
}
],
"rows": [//待个性化的行
{
"index": 2, //行号,从1开始
"hide": true //【可选】行隐藏属性:true/false
}
]
}
]
}
3.2 通过密文方式访问(推荐使用)
通过密文方式情况,安全性比较高,可以有效的防止用户恶意访问报表或随意篡改传参值。
参数说明
参数名 |
类型 |
默认值 |
说明 |
---|---|---|---|
v | string | 加密后的请求参数串。 加密前请求参数串格式: 参数名=参数值;参数名=参数值 例如:targetVolume=xxx;fileName=xxxxx;variants=xxxxx 注意:v的参数值,需要通过privilege_type参数传入解密处理的认证类,缺省为:default。 |
|
privilege_type | string | 缺省使用乐创者门户中指定的认证类型 |
【可选】传入第三方认证的认证类型。 |
validateVariants | string | 【可选】传入第三方认证相关参数。 可传递多个参数,格式如下: &validateVariants=认证参数1=参数值;认证参数2={year()};…认证参数n=参数值 |
例如: http://192.168.0.x:8081/lczServer/hrServlet?v=xxxxxxxxxxx&privilege_type=xxxx
4 前端事件
Web端在页面渲染、操作过程中触发的各类事件,便于二次开发比较方便的进行一些个性化的业务处理。
事件名 |
说明 |
---|---|
loadReportBefore | 报表加载前事件。 |
loadReportAfter | 报表加载完成后事件。 |
loadParamsAfter | 参数面板加载后事件。 |
beforeRedirect | 报表页面跳转前事件。 |
linkageParamAfter | 参数联动变更后。 |
5 工具栏
当不启用工具栏时,二次开发程序也可以调用相应的方法触发工具栏上的功能。
功能 |
方法 |
---|---|
刷新报表 | ER.remake() |
打印 | ER.print() |
导出Excel | ER.exportMSExcel() |
导出Word | ER.exportMSWord() |
导出PDF | ER.exportPDF() |
导出Txt | ER.exportTxt() |
导出Csv | ER.exportCsv() |
6 整合示例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>二次示例</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<script type="text/javascript" src="js/jquery.min.js" ></script>
<script type="text/javascript" src="所属目录路径/ER_toolkit.js" ></script>
</head>
<body style="-webkit-touch-callout:none;width:100%;height:100%;padding:0;overflow:hidden;margin:0;border:0 none;" >
<iframe id="myRpt" style="width:1024px;height:650px;" ></iframe>
<script type="text/javascript">
ER_load_jquery_js(); //注意:标识整合页面已经加载过jQuery了
var rptUrl='http://127.0.0.1:8081/lczServer/hrServlet?fileName=hte_xxxxxxx&targetVolume=xxxxxxx&authId=anonymous_admin';
var rptframe = $('#myRpt');
if (rptframe && rptframe.length > 0) {
rptframe.attr('src', rptUrl);
rptframe.bind('load', function() {
if (this.contentWindow.ER) { //注意:整合时,如果存在跨域情况,ER对象将访问不到。
var rptFn = this.contentWindow.ER.fn;
var rptEvents = this.contentWindow.ER.events;
if (rptEvents && rptFn) {
rptEvents.loadReportAfter(function() {
//绑定报表加载后事件
});
rptEvents.linkageParamAfter(function(dissParams) {
//绑定报表参数联动后事件
});
}
}
});
}
</script>
</body>
</html>
7 常见问题
问题1、跨域访问乐创者报表时有什么注意事项?
答:跨域访问时,以下功能将会受限:
(1) 乐创者报表中的超链接弹窗将无法显示到Window.top中;
(2) 第三方页面将无法调用iframe中报表对象及方法。
建议通过以下解决方案解决跨域问题:
(1) 业务系统和乐创者服务部署到一个Web服务器中;
(2) 通过nginx代理将业务系统和乐创者服务代理成同源。
问题2、移动端如何访问报表?
答:与PC端URL请求地址一致,乐创者服务会自动识别客户端类型;当某些特定的设备无法识别为移动设备时,可追加&mobileClient=true,强制按照移动模式渲染。
问题3、参数值已经URL编码了,但是中文仍然显示乱码
答:检查一下Web应用服务器的配置是否符合要求。
以Tomcat为例,需检查Tomcat安装目录下的server.xml中,对应‘Connector’配置中是否配置了‘URIEncoding’、‘useBodyEncodingForURI’选项,建议配置如下:
1、如果2个属性都没有配置,建议配置‘useBodyEncodingForURI=”true”即可;
2、如果配置了‘useBodyEncodingForURI=”false”,则需要配置URIEncoding,建议配置为‘UTF-8’;
3、如果配置了URIEncoding,但编码方式不是‘UTF-8’的,需要调整lczServer/WEB-INF/classes/erservice.xml配置文件中Charset值(默认为:UTF-8),应改为与URIEncoding值一致。
问题4、如何将链接弹窗显示到Window.top?
答:报表超链接弹窗依赖layer.js,可以在顶级窗口中加载layer的js、css文件即可。
最后编辑:柳杨 更新时间:2025-04-22 15:31
