1. 移动端 H5 支持调用 JS
web事件 | 分页预览 |
---|---|
加载起始事件 | √ |
加载结束事件 | √ |
控件事件 | 参数控件 | 决策报表控件 |
---|---|---|
初始化后 | √ | √ |
编辑前 | ||
编辑后 | √ | |
编辑结束 | √ | |
点击 | √ | √ |
值改变 | ||
节点生成 | ||
状态改变 | √ | √ |
上传后 |
注1:决策报表控件是指决策报表 body 里的控件,不包含决策报表参数面板里的控件
注2:移动端只支持参数界面控件的初始化,但是不支持参数面板的初始化
注3:组件不支持点击事件。
2. 对象
函数名 | 概述 | 使用范围 | 示例 |
---|---|---|---|
contentPane | 存放 CPT 报表内容的容器,即整个 CPT 报表对象 | 1)CPT 中才有,FRM 中没有 2)Web 事件、单元格超链 JS 、填报中单元格控件事件、CPT 的参数界面控件事件,直接通过「contentPane」就可以获取到对象 | 获取 CPT 填报单元格控件:
|
_g() | 1)CPT 中,_g() 就是整个报表对象contentPane,支持contentPane下的所有支持的方法 2)FRM 中,_g() 就是整个表单对象globalForm,支持globalForm下的所有支持的方法 | 1)CPT/FRM 中参数界面控件事件中可以通过_g().parameterCommit()实现自动查询 2)CPT 中填报单元格控件事件中可以通过_g().verifyAndWriteReport()及其它填报方法实现提交入库 3)FRM 中报表块、图标块事件中可以通过_g().options.form获取表单主体中的对象 4)获取 FRM 主体控件: _g().options.form.getWidgetByName("name") | |
parameterEl | 获取参数面板控件: parameterEl.getWidgetByName("name") CPT 和 FRM 中的参数界面都是parameterEl: 1)CPT 中通过contentPane.parameterEl来获取参数界面,主要应用在 CPT 中 Web 事件的加载起始和结束事件、CPT 单元格 JS 中 2)FRM 中通过_g().parameterEl来获取参数界面,主要应用在 FRM 的 body 初始化事件、FRM 主体中的控件、FRM 主体报表块单元格/图表 JS、图表块 JS | CPT 加载结束事件中获取参数界面控件的值:
| |
this | 在控件的事件中,可以通过this直接获取到当前的控件对象 | 「控件」指填报单元格中的控件、参数界面中的控件、表单 body 主体中的控件 | CPT 参数界面文件控件的编辑结束事件中获取控件的值:
|
form | 1)FORM 为表单对象 2)CPT 和 FRM 中的参数界面都是表单,FRM 主体也是表单 2)每个控件的options里都有当前的表单对象 FORM 因此可以在参数界面或者表单主体的控件的事件中,通过this.options.form来获取当前的表单对象 | 获取CPT/FRM参数面板控件、获取FRM主体控件:
|
3. 属性
函数名 | 概述 | 示例 | |
---|---|---|---|
reportTotalPage | 1)contentPane报表对象下面的属性,当前报表的总页数 2)只有分页的时候该属性才会有值,通过contentPane.reportTotalPage来进行调用 注:该函数不能在表单、参数界面、Web 事件中使用 | 在 CPT 单元格超链 JS 中获取当前报表的总页数:
|
4. 查询操作
函数名 | 概述 | 示例 |
---|---|---|
parameterCommit() | 1)查询操作,不管是 CPT 还是 FRM ,参数界面上会有内置查询按钮,用户可以不用内置查询,通过 JS 来触发查询操作 2)通过 contentPane.parameterCommit() 或者_g().parameterCommit()两种方式触发,在表单中只能通过 _g().parameterCommit() 方式触发 | 1)CPT 参数界面中自定义按钮先校验控件,然后根据条件再触发查询:
2)FRM 参数界面中自定义按钮的点击事件中触发查询:
|
5. 翻页操作
函数名 | 概述 | 示例 | |
---|---|---|---|
gotoFirstPage() | 1)contentPane报表对象下的一个方法,用来跳转到报表的第一页 2)只有分页的时候该方法才会有用,通过contentPane.gotoFirstPage()来进行调用 注:该函数不能在表单、参数界面、Web 事件中使用 | 在 CPT 单元格超链 JS 中跳转到第一页:
| |
gotoLastPage() | 1)contentPane报表对象下面的一个方法,用来跳转到报表的最后一页 2)只有分页的时候该方法才会有用,通过contentPane.gotoLastPage()来进行调用 注:该函数不能在表单、参数界面、Web 事件中使用 | 在 CPT 单元格超链 JS中 跳转到报表的最后一页:
| |
gotoPreviousPage() | 1)contentPane报表对象下面的一个方法,用来跳转到当前页的上一页 2)只有分页的时候该方法才会有用,通过contentPane.gotoPreviousPage()来进行调用 3)如果当前是第一页,触发事件应该没有响应,不能出现页码小于等于 0 的情况 注:该函数不能在表单、参数界面、Web 事件中使用 | 在 CPT 单元格超链 JS 中跳转到当前页的上一页:
| |
gotoNextPage() | 1)contentPane报表对象下面的一个方法,用来跳转到当前页的下一页 只有分页的时候该方法才会有用,通过contentPane.gotoNextPage()来进行调用 2)如果当前是最后一页,触发事件应该没有响应,不能出现页码大于总页数的情况 注:该函数不能在表单、参数界面、Web 事件中使用 | 在 CPT 单元格超链 JS 中跳转到当前页的上一页:
|
6. 控件操作
函数名 | 概述 | 示例 | |
---|---|---|---|
getValue() | 1)控件的取值方法 2)获取到控件,例如获取的控件变量为Widget,那么可以通过Widget.getValue()来取控件的值 3)如果控件是下拉框等有显示值和实际值区分,getValue()取的是实际值 | 1)CPT 参数界面下拉框的编辑结束事件中获取当前下拉框的值以及其他控件的值:
2)CPT 填报单元格下拉框的编辑结束事件中获取当前下拉框的值以及其他控件的值:
| |
setValue(value) | 1)控件的赋值方法 2)获取到控件,例如获取的控件变量为Widget,那么可以通过Widget.setValue(value)来设置控件的值。 3)如果控件是下拉框等有显示值和实际值区分,setValue()设置的是实际值 4)参数说明如下所示: 参数:value 参数类型:Object 参数说明:值 | CPT 参数界面按钮点击事件中给其他控件赋值:
| |
getText() | 1)取控件的显示值 2)获取到控件,例如获取的控件变量为Widget,可以通过Widget.getText()来取控件的显示值 3)只有下拉框、下拉复选框、下拉树、单选按钮组、复选框组这 5 个控件有显示值和实际值,这些控件用getValue()获取到的是实际值,getText()获取到的是显示值 4)如果控件是下拉框等有显示值和实际值区分,getValue()和getText()取的是实际值 | CPT 参数界面下拉框的编辑结束事件中获取当前下拉框的实际值和显示值:
| |
reset() | 1)清空控件的数据 2)获取到控件,例如获取的控件变量为Widget,那么可以通过Widget.reset()来清空控件的数据 | CPT 参数界面按钮点击后将参数界面上其他控件统一重置:
| |
isVisible() | 1)判断控件是否可见 2)获取到控件,例如获取的控件变量为Widget,那么可以通过isVisible()来判断控件是否可见。可见则返回true,不可见则返回false | CPT 参数界面按钮点击后判断控件是否可见:
| |
setEnable(enable) 注 1:不支持填报单元格使用 注 2:不支持通过参数面板,去控制单元格中的属性 | 1)设置控件是否可用 2)获取到控件,例如获取的控件变量为Widget,那么可以通过Widgeti.setEnable(enable)来设置控件是否可用 3)参数说明如下所示: 参数:enable 参数类型:Boolean 参数说明:参数为 true 可用, false 不可用 | CPT 参数界面下拉控件 a 的编辑结束事件中控制控件 b 是否可用,当 a 选择江苏的时候,控件 b 可用;当 a 的值为上海的时候,控件b不可用:
| |
isEnabled() | 1)判断控件是否可用 2)获取到控件,例如我们获取的控件变量为Widget,那么可以通过isEnabled()来判断控件是否可用 3)可用则返回 true ,不可用则返回 false | CPT 参数界面按钮点击后判断控件是否可见:
| |
fireEvent(eventName) | 1)触发指定名字的控件事件 2)获取到控件,例如获取的控件变量为Widget,那么可以通过fireEvent(eventName)来触发控件的事件 3)参数说明如下所示: 参数:eventName 参数类型:String 参数说明:要触发的事件的名字 | CPT 参数界面下拉框编辑结束事件中触发内置查询按钮的点击事件:
| |
contentPane.getWidgetByCell("单元格") | 根据控件所在单元格的位置获取控件 参数为单元格名称 |
7. 超链
7.1 FR.doHyperlinkByGet 函数
函数名 | 概述 | 示例 |
---|---|---|
FR.doHyperlinkByGet | 超级链接,FR下的工具类方法可通过FR.doHyperlinkByGet(url,config,target,feature)在任何可以写 JS 的地方进行调用 | 点击 CPT 单元格超链,打开子模板并传递参数:
|
FR.doHyperlinkByGet 的参数说明如下表所示:
参数 | 类型 | 说明 |
---|---|---|
url | Object | 必填,url 或 Json 超链定义,url 支持 绝对路径如http://192.168.100.1:8080/WebReport/ReportServer?reportlet=WorkBook2.cpt 相对路径如/WebReport/ReportServer?reportlet=WorkBook2.cpt 或 ReportServer?reportlet=WorkBook2.cpt |
config | Object | 选填,传递的参数 |
target | Object | 选填,超链子页的打开位置 |
feature | Object | 选填,超链打开位置的属性,这个属性移动端无效 |
7.2 FR.doHyperlinkByPost 函数
函数名 | 概述 | 示例 |
---|---|---|
FR.doHyperlinkByPost | 超级链接,FR 下的工具类方法,可以通过FR.doHyperlinkByPost(url,config,target,feature)在任何可以写 JS 的地方进行调用 | 点击 CPT 单元格超链,打开子模板并传递参数:
|
FR.doHyperlinkByPost 的参数说明如下表所示:
参数 | 类型 | 说明 |
---|---|---|
url | Object | 必填,URL 或 Json 超链定义 绝对路径如:http://192.168.100.1:8080/WebReport/ReportServer?reportlet=WorkBook2.cpt 相对路径如: /WebReport/ReportServer?reportlet=WorkBook2.cpt或 ReportServer?reportlet=WorkBook2.cpt |
config | Object | 选填,传递的参数 |
target | Object | 选填,超链子页的打开位置 |
feature | Object | 选填,超链打开位置的属性,这个属性移动端无效 |
8. 平台操作
函数名 | 概述 | 示例 |
---|---|---|
FS.tabPane.closeActiveTab | 1)关闭当前 Tab 选项页 2)可通过window.parent.FS.tabPane.closeActiveTab()在报表中任何可以用 JS 的地方进行调用 注:不能在参数界面调用 | CPT 单元格超链 JS 中关闭当前 Tab 选项页:
|
FR.logoutApp | 1)登出,FR工具类下的方法 2)可通过FR.logoutApp()在任何可以写 JS 的地方进行调用 注:不能在参数界面调用 | 在 CPT 单元格超链 JS 中登出:
|
FS.tabPane.addItem | 1)向决策平台 Tab 栏新增项目 2)可通过window.parent.FS.tabPane.addItem(entry)在报表中任何可以用 JS 的地方进行调用 | CPT 单元格超链 JS 中将超链的子报表在决策平台的新 Tab 中打开:
注:「title」仅支持在 App 中使用,浏览器中不支持。 |
注:FR.logoutApp 如果在 App 里 H5 解析的报表里面会失效,不会返回到 App 的登录界面;在 H5 中使用,比如微信里面,可以触发登出的。
FS.tabPane.addItem 函数的参数说明如下表所示:
参数 | 类型 | 说明 |
---|---|---|
entry | Object | 必填,Tab 项对应的 entry 对象 |
「entry」以Json格式提供,属性如下表所示:
属性 | 类型 | 说明 |
---|---|---|
title | String,number | 标签页的标题,字符串和数字都可以 |
src | String | 标签页的内容指向的地址 |
9. Tab 组件操作
函数名 | 概述 | 示例 |
---|---|---|
getShowIndex | 通过getShowIndex获取 Tab 组件当前显示的 Tab 号 | 参考showCardByIndex 函数示例 |
setTabVisible | 1)通过setTabVisible(tabName String, isVisible Boolean)可以实现隐藏部分 Tab 标题 2)参数 1 说明如下所示: 参数1:tabName 参数1类型:String 参数1说明:必填,Tab的控件名称,如 Tab0 3)参数 2 说明如下图所示:参数2:isVisible 参数2类型:Boolean 参数2说明:必填,tab 是否可见,ture可见/false隐藏 注:不能在 tablayout 的初始化事件和参数界面中使用 | 不同用户可以看到不同的 Tab:
|
showCardByIndex | showCardByIndex(Number:cardID); 效果:可以实现跳转到指定 Tab 块 参数:cardID 说明:必填,显示的 Tab 序号,从 0 开始 showCardByIndex(Number: cardID, Boolean: animated); 效果:新增 animated 参数,控制切换Tab页是否有动画效果, 仅在移动端标题栏样式允许横向滚动切换时生效 参数:animated 说明:非必填,animated 为 1 开启动画,为 0 关闭动画 | 给 body 添加初始化后事件,实现固定时间间隔内自动循环跳转 Tab:
注:具体示例可参考 JS 实现点击查询后停留在当前查询的 Tab 页、JS实现点击超链切换TAB页 |
10. JSON对象操作
概述 | 示例 |
---|---|
一些请求或者方法返回是 JSON数据, 可以通过json.name来获取 name 属性的值 | 在单元格 JS 中通过FR.Mobile.getDeviceInfo获取设备信息,并且取出其中的Model 设备型号:
|
11. 其他操作
函数名 | 概述 | 示例 |
---|---|---|
FR.ajax | 1)封装过的jQuery.ajax()函数,对 data 参数做了中日韩文编码处理,可以通过FR.ajax(options) 在任何可以用 JS 的地方进行调用 2)参数说明见 12.1 章节 | 在 CPT 的单元格超链 JS 中发 ajax 请求,且在不同的回调函数中处理不同的情况:
|
setInterval | 1)setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式 2)setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由setInterval()返回的 ID 值可用作clearInterval() 方法的参数 3)通过setInterval(code,millisec)进行调用 4)参数说明详见本文 12.2 章节 | 在报表加载结束时间中定义每 3s 刷新一次报表:
|
setTimeout | 1)用于在指定的毫秒数后调用函数或计算表达式。 通过setTimeout(code,millisec)进行调用 2)参数说明详见本文 12.3 章节 注:JS 代码为setTimeout(function(){})格式时,「this」需放在声明外使用 | 1)在报表加载结束时间中 3s 后弹出提示:
2)在报表加载结束时间中 3s 后弹出提示:
|
location.reload | 1)刷新当前页,和手动刷新效果相同 2)如果报表有多页,刷新后返回第一页;如果报表有参数界面,刷新后直接显示上次的参数条件查询后的结果 | 在填报成功事件中写入刷新 JS ,实现填报成功后刷新当前页:
|
window.close | 关闭当前窗口 | 在填报成功事件中写入 JS ,实现填报成功后关闭模板返回目录:
|
FR.remoteEvaluateAsync | 返回公式计算的结果 注1:版本为 10.4.46 之后的 App 支持 注2:使用该接口需要关闭脚本调用公式限制 | 2 个参数,分别表示: 1)formula:必填,具体公式 2)callback:必填,具体回调方法,可以获取公式计算后的值 |
FR.location | 1)使用场景 FR.location 用于实现定位功能,获取经纬度,可以在https、企业微信、钉钉中使用 2)函数用法 FR.location(function(status, message){...}) 3)注意事项 想要在企业微信、钉钉中使用需要将 HTML5 移动端展现插件和微信或钉钉管理插件更新到 10.4.975 版本 | 在单元格 JS 中获取当前经纬度:
|
FR.cellStr2ColumnRow("单元格") | 可以将单元格转换为行列号 知道具体的单元格,能够定位该单元格的行列号 | FR.cellStr2ColumnRow('B1') 返回值为 {"col":1,"row":0} |
11.1 FR.ajax 参数说明
FR.ajax 函数的参数说明如下表所示:
参数 | 类型 | 说明 |
---|---|---|
options | Object | 必填,ajax参数 |
[options]以Json格式提供,属性如下表所示:
属性 | 类型 | 说明 |
---|---|---|
url | String | 必填,发送请求的地址 |
data | Object | 发送到服务器的数据。GET 请求中将自动转换为请求字符串格式,附加在 URL 后 值必须是Key/Value格式,可以是字符串如p1=pavalue&p2=p2value,或者是对象如{p1:p1value,p2:p2value} |
type | String | 请求方式 POST/GET ,默认为GET |
dataType | String | 预期服务器返回的数据类型。如果不指定,将自动根据 HTTP 包 MIME 信息来智能判断。可用值有: Json:返回 JSON 数据 text:返回纯文本字符串 jsonp": 跨域采用 jsonp 方式 |
success | Function | 请求成功后的回调函数:
|
error | Function | 请求失败时调用此函数:
|
complete | Function | 请求完成后回调函数(请求成功或失败之后均调用):
|
timeout | Number | 设置请求超时时间(毫秒) |
async | Boolean | 默认为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false |
11.2 setInterval 参数说明
参数 | 类型 | 说明 |
---|---|---|
code | Object | 必填,要调用的函数或要执行的代码串 |
millisec | Number | 周期性执行或调用 code 之间的时间间隔,以毫秒计 |
11.3 setTimeout 参数说明
参数 | 类型 | 说明 |
---|---|---|
code | Object | 必填,要调用的函数后要执行的 JavaScript 代码串 |
millisec | Number | 在执行代码前需等待的毫秒数 |
11.4 FR.remoteEvaluateAsync 参数说明
参数 | 类型 | 说明 |
---|---|---|
formula | String | 必填,具体公式 |
callback | function | 必填,具体回调方法,可以获取公式计算后的值 |
12. MSG 弹窗
函数名 | 概述 | 示例 |
---|---|---|
FR.Msg.alert | 1)弹出消息的提示对话框 可以通过FR.Msg.alert(Object title, Object message[, Object callback])在任何可以写 JS 的地方进行调用 2)参数说明详见本文 13.1 章节 | 1)点击填报单元格按钮后弹出提示:
2)点击填报单元格按钮后弹出提示,且 2s 后自动关闭:
3)点击填报单元格按钮后弹出提示,点击提示框的确定按钮,触发回调事件并提示:
|
FR.Msg.toast | 1)弹出悬浮提示,5s 自动消失,可以通过FR.Msg.toast(Object message )在任何可以写 JS 的地方进行调用 2)参数说明如下所示: 参数:message 参数类型:Object 参数说明:要显示的消息 | 点击填报单元格按钮后弹出悬浮提示:
|
FR.Msg.confirm | 1)弹出的确认对话框 可通过FR.Msg.confirm(Object title, Object message[,Object callback, Object min_width ])在任何可以写 JS 的地方进行调用 2)参数说明见本文 13.2 章节 | 1)点击填报单元格按钮后弹出确认框:
2)点击填报单元格按钮后弹出弹出确认框,且在点击确定和取消按钮的时候,弹出不同的回调提示:
|
FR.Msg.prompt | 1)弹出的输入对话框 可以通过FR.Msg.confirm(Object title, Object message, Object value, Object callback, Object min_width)在任何可以写js的地方进行调用 2)参数说明详见 本文 13.3 章节 | 1)点击填报单元格按钮后弹出输入框: 2)点击填报单元格按钮后弹出弹出输入框,且在点击确定的时候提示输入的值:
|
12.1 FR.Msg.aler 参数说明
FR.Msg.aler 函数的参数说明如下所示:
参数 | 类型 | 说明 |
---|---|---|
title | Object | 必填,消息提示框的标题 |
message | Object | 必填,消息提示框的提示内容 |
callback | Object | 选填,对话框显示以后的回调函数。如果该参数是数字类型,则表明该对话框在指定的时间(单位:毫秒)后自动关闭 |
12.2 FR.Msg.confirm 参数说明
FR.Msg.confirm 函数的参数说明如下所示:
参数 | 类型 | 说明 |
---|---|---|
title | Object | 必填,消息提示框的标题 |
message | Object | 必填,消息提示框的提示内容 |
callback | Object | 选填,点击确认后的回调函数 |
min_width | Object | 选填,确认对话框的最小宽度,这个属性移动端无效 |
12.3 FR.Msg.prompt 参数说明
FR.Msg.prompt 函数的参数说明如下所示:
参数 | 类型 | 说明 |
---|---|---|
title | Object | 必填,输入对话框的标题 |
message | Object | 选填,输入对话框的显示消息 |
value | Object | 选填,输入对话框的默认值 |
callback | Object | 选填,点击确认后的回调函数 |
min_width | Object | 选填,确认对话框的最小宽度,这个属性移动端无效 |
13. 注意事项
微信钉钉提供的第三方开发的 JS 接口部分支持。