本章节主要讲述如何通过页面方式访问乐创者智能报表(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文件即可。

作者:柳杨  创建时间:2023-06-07 12:07
最后编辑:柳杨  更新时间:2025-04-22 15:31