反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

App 端的 JS 接口

  • 文档创建者:lu123
  • 历史版本:79
  • 最近更新:April陶 于 2021-12-27
  • 1. 移动端 App 支持调用 JS

    Web 事件   分页预览填报预览  
      加载起始 √√  
      加载结束 √√  
      填报前
    √  
      填报后
    √  
      填报成功
    √   
      填报失败
    √   


    报表内部 JS 单元格  图表  
    超级链接 JS  √  √  

    注:图表的内部JS是可以实现超级链接的;但当图表作为决策报表组件时,为该组件添加的JS点击事件是不支持的。

    控件事件  参数控件  填报控件  决策报表控件  
    初始化后事件   √
    编辑前  


    编辑后   √
    编辑结束   √  √
    点击   √ √ √
    值改变  


    节点生成


    状态改变 √  √ √
     上传后


    注1:决策报表控件是指决策报表 body 里的控件,不包含决策报表参数面板里的控件

    注2:移动端只支持参数界面控件的初始化,但是不支持参数面板的初始化

    注3:目前组件是不支持点击事件的。

    2. 对象

    注:下面函数支持在 App 9.0 和 App 10.0 中使用。

    函数名概述使用范围示例
    contentPane存放 CPT 报表内容的容器,即整个 CPT 报表对象1)CPT 中才有,FRM 中没有  

    2)Web 事件、单元格超链 JS 、填报中单元格控件事件、CPT 的参数界面控件事件,直接通过「contentPane」就可以获取到对象

    获取 CPT 填报单元格控件: 

    contentPane.getWidgetBycell("cell")


    _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 加载结束事件中获取参数界面控件的值:

    var a = contentPane.parameterEl.
    getWidgetByName("aa").getValue();
    FR.Msg.alert("提示",a)


    this在控件的事件中,可以通过this直接获取到当前的控件对象控件指填报单元格中的控件、参数界面中的控件、表单 body 主体中的控件CPT 参数界面文件控件的编辑结束事件中获取控件的值: 
    var a = this.getValue();
    FR.Msg.alert("提示",a)


    form1)FORM 为表单对象

    2)CPT 和 FRM 中的参数界面都是表单,FRM 主体也是表单

    3)每个控件的options里都有当前的表单对象 FORM

    因此可以在参数界面或者表单主体的控件的事件中,通过this.options.form来获取当前的表单对象

    CPT 参数界面的按钮点击事件中获取其他控件的值:

    var a = this.options.form.getWidgetByName("a")
    .getValue();
    FR.Msg.alert("提示",a)


    3. 属性

    注:下面函数支持在 App 9.0 和 App 10.0 中使用。

    函数名概述使用范围示例
    reportTotalPage1)contentPane报表对象下面的属性,当前报表的总页数 

    2)只有分页的时候该属性才会有值,通过contentPane.reportTotalPage来进行调用

    注:该函数不能在表单、参数界面、Web 事件中使用。

    在 CPT 单元格超链 JS 中获取当前报表的总页数:

    FR.Msg.alert("提示",contentPane.reportTotalPage)


    4. 查询操作

    注:下面函数支持在 App 9.0 和 App 10.0 中使用。

    函数名概述示例
    parameterCommit() 1)查询操作,不管是 CPT 还是 FRM ,参数界面上会有内置查询按钮,用户可以不用内置查询,通过 JS 来触发查询操作 

    2)通过contentPane.parameterCommit() 或者_g().parameterCommit()两种方式触发,在表单中只能通过 _g().parameterCommit()方式触发

    1)CPT 参数界面中自定义按钮先校验控件,然后根据条件再触发查询:
    var a = this.options.form.getWidgetByName("a").getValue();
    var b = this.options.form.getWidgetByName("b").getValue();
    if (a > b) {
        FR.Msg.alert("警告","开始月不能大于结束月!")
    } else {
        contentPane.parameterCommit();
        // or _g().parameterCommit();

    2)FRM 参数界面中自定义按钮的点击事件中触发查询:

    _g().parameterCommit()

    5. 翻页操作

    注:下面函数支持在 App 9.0 和 App 10.0 中使用。

    函数名概述
    使用范围示例
    gotoFirstPage()1)contentPane报表对象下的一个方法,用来跳转到报表的第一页

     2)只有分页的时候该方法才会有用,通过contentPane.gotoFirstPage()来进行调用

    注:该函数不能在表单、参数界面、Web 事件中使用。

    在 CPT 单元格超链 JS 中跳转到第一页:
    contentPane.gotoFirstPage()


    gotoLastPage()1)contentPane报表对象下面的一个方法,用来跳转到报表的最后一页

     2)只有分页的时候该方法才会有用,通过contentPane.gotoLastPage()来进行调用

    注:该函数不能在表单、参数界面、Web 事件中使用。

    在 CPT 单元格超链 JS中 跳转到报表的最后一页:

    contentPane.gotoLastPage()


    gotoPreviousPage()1)contentPane报表对象下面的一个方法,用来跳转到当前页的上一页

     2)只有分页的时候该方法才会有用,通过contentPane.gotoPreviousPage()来进行调用

    3)如果当前是第一页,触发事件应该没有响应,不能出现页码小于等于 0 的情况

    注:该函数不能在表单、参数界面、Web 事件中使用。

    在 CPT 单元格超链 JS 中跳转到当前页的上一页:
    contentPane.gotoPreviousPage()


    gotoNextPage()1)contentPane报表对象下面的一个方法,用来跳转到当前页的下一页

     只有分页的时候该方法才会有用,通过contentPane.gotoNextPage()来进行调用

    2)如果当前是最后一页,触发事件应该没有响应,不能出现页码大于总页数的情况

    注:该函数不能在表单、参数界面、Web 事件中使用。

    在 CPT 单元格超链 JS 中跳转到当前页的上一页:
    contentPane.gotoNextPage()


    6. 控件操作

    注:下面函数支持在 App 9.0 和 App 10.0 中使用。

    函数名概述示例
    getValue()1)控件的取值方法

    2)获取到控件,例如获取的控件变量为Widget,那么可以通过Widget.getValue()来取控件的值

    3)如果控件是下拉框等有显示值和实际值区分,getValue()取的是实际值

    1)CPT 参数界面下拉框的编辑结束事件中获取当前下拉框的值以及其他控件的值:
    var comboBox = this.getValue();
    var textEditor = this.options.form.getWidgetByName
    ("textEditor").getValue();
    FR.Msg.alert("提示",comboBox + " - "
    + textEditor)

    2)CPT 填报单元格下拉框的编辑结束事件中获取当前下拉框的值以及其他控件的值:

    var comboBox = this.getValue();
    var textEditor = contentPane.getWidgetByName
    ("textEditor").getValue();
    FR.Msg.alert("提示",comboBox + " - " 
    + textEditor)
    setValue(value1)控件的赋值方法

    2)获取到控件,例如获取的控件变量为Widget,那么可以通过Widget.setValue(value)来设置控件的值。

    3)如果控件是下拉框等有显示值和实际值区分,setValue()设置的是实际值

    4)参数说明如下所示:

    参数:value

    参数类型:Object

    参数说明:值

    CPT 参数界面按钮点击事件中给其他控件赋值:

    this.options.form.getWidgetByName("textEditor")
    .setValue("哈哈")


    getText()1)取控件的显示值

    2)获取到控件,例如获取的控件变量为Widget,可以通过Widget.getText()来取控件的显示值

    3)只有下拉框、下拉复选框、下拉树、单选按钮组、复选框组这 5 个控件有显示值和实际值,这些控件用getValue()获取到的是实际值,getText()获取到的是显示值

    4)如果控件是下拉框等有显示值和实际值区分,getValue()getText()取的是实际值

    CPT 参数界面下拉框的编辑结束事件中获取当前下拉框的实际值和显示值:
    var shijizhi = this.getValue();
    var xianshizhi = this.getText();
    FR.Msg.alert("提示","实际值" + shijizhi + " ;
    显示值" + xianshizhi)


    reset()1)清空控件的数据

    2)获取到控件,例如获取的控件变量为Widget,那么可以通过Widget.reset()来清空控件的数据

    CPT 参数界面按钮点击后将参数界面上其他控件统一重置:
    this.options.form.getWidgetByName("a").reset();
    this.options.form.getWidgetByName("b").reset()
    isVisible()1)判断控件是否可见

    2)获取到控件,例如获取的控件变量为Widget,那么可以通过isVisible()来判断控件是否可见。可见则返回true,不可见则返回false

    CPT 参数界面按钮点击后判断控件是否可见:
    var a = this.options.form.
    getWidgetByName("a").isVisible();
    var b = this.options.form.
    getWidgetByName("b").isVisible();
    FR.Msg.alert("提示",a + " - " + b)
    setVisible(visible)1)设置控件是否可见

    2)获取到控件,例如获取的控件变量为Widget,那么可以通过Widgeti.setVisible(visible)来设置控件是否可见

    3)参数说明如下所示:

    参数:visible

    参数类型:Boolean

    参数说明:参数为 true 可见,false 不可见

    CPT 参数界面下拉控件 a 的编辑结束事件中控制控件 b 是否可见,当 a 选择江苏的时候,控件 b 显示;当 a 的值为上海的时候,控件 b 不显示:

    var a = this.getValue();
    var b = this.options.form.getWidgetByName("b");
    if(a == "江苏"){
        b.setVisible(true);
    }else if (a == "上海"){
        b.setVisible(false);

    setEnable(enable)1)设置控件是否可用

    2)获取到控件,例如获取的控件变量为Widget,那么可以通过Widgeti.setEnable(enable)来设置控件是否可用

    3)参数说明如下所示:

    参数:enable

    参数类型:Boolean

    参数说明:参数为 true 可用, false 不可用

    CPT 参数界面下拉控件 a 的编辑结束事件中控制控件 b 是否可用,当 a 选择江苏的时候,控件 b 可用;当 a 的值为上海的时候,控件b不可用:
    var a = this.getValue();
    var b = this.options.form.
    getWidgetByName("b");
    if(a == "江苏"){
        b.setEnable(true);
    }else if (a == "上海"){
        b.setEnable(false);

    isEnabled()1)判断控件是否可用

    2)获取到控件,例如我们获取的控件变量为Widget,那么可以通过isEnabled()来判断控件是否可用

    3)可用则返回 true ,不可用则返回 false

    CPT 参数界面按钮点击后判断控件是否可见:
    var a = this.options.form.getWidgetByName("a")
    .isEnabled();
    var b = this.options.form.getWidgetByName("b")
    .isEnabled();
    FR.Msg.alert("提示",a + " - " + b)
    fireEvent(eventName)1)触发指定名字的控件事件

    2)获取到控件,例如获取的控件变量为Widget,那么可以通过fireEvent(eventName)来触发控件的事件

    3)参数说明如下所示:

    参数:eventName

    参数类型:String

    参数说明:要触发的事件的名字

    CPT 参数界面下拉框编辑结束事件中触发内置查询按钮的点击事件:
    this.options.form.getWidgetByName("formSubmit0")
    .fireEvent("click")


    contentPane.getWidgetByCell("单元格")

    根据控件所在单元格的位置获取控件

    参数为单元格名称


    7. 填报操作

    注:下面函数支持在 App 9.0 和 App 10.0 中使用。

    函数名概述示例
    verifyReport()1)触发填报表的数据校验,只有 CPT 填报表才可以用

    2)单 sheet 下设置填报数据校验和控件的及时校验,并且在填报单元格控件(任意选一个控件就可以如按钮)中触发数据校验

    3)多 sheet 下每个 sheet 设置填报数据校验和控件的及时校验,并且在填报单元格控件中触发数据校验

    通过contentPane().verifyReport()来进行调用,如果填报表有多个 sheet ,则所有 sheet 中设置的数据校验都会进行,且控件的即时校验也会验证
    writeReport([Object reportIndex])

    1)提交报表,只有 CPT 填报表才可以用,通过contentPane.writeReport()来进行调用,如果填报表有多个 sheet ,则所有 sheet 都会提交

    2)也可通过contentPane.writeReport(reportIndex)来提交指定的 sheet ,writeReport为强制提交,不会进行校验

    3)参数说明如下所示:

    参数:reportIndex

    参数类型:Object

    参数说明:选填,sheet 编号,从 0 开始

    点击填报单元格按钮后触发填报提交:

    contentPane.writeReport()


    verifyAndWriteReport([Object isAllSheet])

    1)校验并提交报表,只有 CPT 填报表才可以用

    2)可通过contentPane.verifyAndWriteReport()来进行调用,如果填报表有多个 sheet ,则contentPane.verifyAndWriteReport()提交当前 sheet 

    通过contentPane.verifyAndWriteReport(true)提交所有 sheet

    3)参数说明如下所示:

    参数:isAllSheet

    参数类型:Object

    参数说明:

    不填或者填 0 时,都为提交当前 sheet 

    填 true 或者填非 0 数字时,提交所有 sheet 

    参数不能是非 true 或者数字字符串,不支持,无法提交

    点击填报单元格按钮后触发校验并提交报表:

    contentPane.verifyAndWriteReport()


    refreshAllSheets()1)刷新所有 sheet ,只有填报表下可以用

    2)多 sheet 填报中,可以通过contentPane.refreshAllSheets()来刷新所有 sheet ,且刷新后会停留在上次查看的 sheet 页

    在填报表的第二个 sheet 中,点击某单元格按钮后触发所有 sheet 刷新:

    contentPane.refreshAllSheets()


    getCellValue(Object o)1)获取单元格的值

    2)在填报报表的 Web 事件、单元格按钮或者 JS 中可以通过contentPane.getCellValue(o)来获取单元格的值

    3)参数说明详见本文 7.1 章节

    1)在填报表单元格按钮中取 A1 单元格的值:

    var a = contentPane.getCellValue(0,0);
    //如果只有2个参数值,则第一个是列号,第二个是行号
    FR.Msg.alert("提示",a)

    2)在填报表单元格按钮中取 shee2 的 A1 单元格的值:

    var a = contentPane.getCellValue(1,0,0);
    FR.Msg.alert("提示",a)
    setCellValue(Object o)

    1)在填报报表的 Web 事件、单元格按钮或者 JS 中可以通过contentPane.setCellValue(o)来给单元格的赋值,赋的是实际值,可提交入库 

    2)参数说明详见本文 7.2 章节

    在填报表单元格按钮中给 A1 单元格赋值,然后提交入库:

    contentPane.setCellValue(0,0,"aa");
    //如果只有3个参数值,则第一个是列号,
    第二个是行号,第三个是值


    7.1 getCellValue(Object o) 参数说明

    getCellValue(Object o) 的参数说明如下表所示:

    参数类型说明
    oObject单元格定位描述

    o参数的格式{reportIndex:0, columnIndex: 2, rowIndex: 1},具体说明如下表所示:

    名字
    类型说明
    reportIndexNumber选填,sheet 编号,从 0 开始
    columnIndexNumber必填,列号,从 0 开始
    rowIndexNumber必填,行号,从 0 开始

    返回值说明如下表所示:

    单元格元素
    返回值类型结果
    普通文本

    取决于单元格值类型

    数字(number)

    字符串(string)

    对应的值

    数据列

    注:getCellValue 获取的是结果报表对应位置的值;如果是数据列,获取的是扩展后对应位置的值

    取决于最终单元格值类型

    可以是字符串(string)、数字(number)、

    日期或数组(object)

    字符串 - 对应的值

    数字 - 对应的值

    日期或数组 - [object Object]

    富文本字符串(string)富文本中的内容,不包括 html 标签

    图表

    字符串(string)如 com.fr.chart.chartattr.ChartPainter@795d0ccf

    图片

    objectobject
    公式

    取决于公式返回类型

    可以是字符串(string)、数字(number)、

    日期或数组(object)

    字符串 - 对应的值

    数字 - 对应的值

    日期或数组 - [object Object]

    7.2 setCellValue(o) 参数说明

    setCellValue(o) 的参数说明如下表所示:

    参数类型说明
    oObject单元格定位描述,及赋的值

    o参数的格式{reportIndex:0, columnIndex: 2, rowIndex: 1, value: 'aa'},具体说明如下表所示:

    名字
    类型说明
    reportIndexNumber选填,sheet 编号,从 0 开始
    columnIndexNumber必填,列号,从 0 开始
    rowIndexNumber必填,行号,从 0 开始
    valueString\number必填,值

    8. 超链

    注:下面函数支持在 App 9.0 和 App 10.0 中使用。

    8.1 FR.doHyperlinkByGet 函数

    函数名概述示例
    FR.doHyperlinkByGet
    超级链接,FR 下的工具类方法

    可通过FR.doHyperlinkByGet(url,config,target,feature)在任何可以写 JS 的地方进行调用


    1)点击 CPT 单元格超链,打开子模板并传递参数:
    var url = "/WebReport/ReportServer?reportlet=
    WorkBook2.cpt";
    var a = "123";
    FR.doHyperlinkByGet(url,{a:a, b:"456"}, 
    "_self")

    2)点击 CPT 单元格超链,打开子模板并设置标题:

    var url = "/WebReport/ReportServer?reportlet
    =WorkBook2.cpt";
    var a = "123";
    FR.doHyperlinkByGet({url : url, title:
    "我是标题", para : {a:a, b: "456"}, 
    target : "_self"})

    FR.doHyperlinkByGet 的参数说明如下表所示:

    参数类型说明
    urlObject必填,URL 或 Json 超链定义

    URL 支持绝对路径如http://192.168.100.1:8080/WebReport/ReportServer?reportlet=WorkBook2.cpt

    相对路径如/WebReport/ReportServer?reportlet=WorkBook2.cpt 或

    ReportServer?reportlet=WorkBook2.cpt 

    configObject选填,传递的参数
    targetObject选填,超链子页的打开位置
    featureObject选填,超链打开位置的属性,这个属性移动端无效

    8.2 FR.doHyperlinkByPost 函数

    函数名概述示例
    FR.doHyperlinkByPost

    超级链接,FR 下的工具类方法,可以通过FR.doHyperlinkByPost(url,config,target,feature)在任何可以写 JS 的地方进行调

    1)点击 CPT 单元格超链,打开子模板并传递参数: 
    var url = "/WebReport/ReportServer?reportlet=WorkBook2.cpt";
    var a = "123";
    FR.doHyperlinkByPost(url,{a:a, b:"456"},"_self")

    2)点击 CPT 单元格超链,打开子模板并设置标题:

    var url = "/WebReport/ReportServer?reportlet=WorkBook2.cpt";
    var a = "123";
    FR.doHyperlinkByPost({url : url, title : "我是标题", 
    para : {a:a, b: "456"}, target : "_self"})

    FR.doHyperlinkByPost 的参数说明如下表所示:

    参数
    类型说明
    urlObject

    必填,URL 或 Json 超链定义

    URL 支持绝对路径如http://192.168.100.1:8080/WebReport/ReportServer?reportlet=WorkBook2.cpt

    相对路径如/WebReport/ReportServer?reportlet=WorkBook2.cpt 

    ReportServer?reportlet=WorkBook2.cpt 

    configObject选填,传递的参数
    targetObject选填,超链子页的打开位置
    featureObject选填,超链打开位置的属性,这个属性移动端无效

    9. 平台操作

    注:下面函数支持在 App 9.0 和 App 10.0 中使用。

    函数名概述示例
    FS.tabPane.closeActiveTab1)关闭当前 Tab 选项页

    2)可通过window.parent.FS.tabPane.closeActiveTab()在报表中任何可以用 JS 的地方进行调用

    注:不能在参数界面调用。

    CPT 单元格超链 JS 中关闭当前 Tab 选项页:

    window.parent.FS.tabPane.closeActiveTab()


    FR.logoutApp1)登出,FR工具类下的方法

    2)可通过FR.logoutApp()在任何可以写 JS 的地方进行调用

    注:不能在参数界面调用。

    在 CPT 单元格超链 JS 中登出:

    FR.logoutApp()


    FS.tabPane.addItem1)向决策平台 Tab 栏新增项目

    2)可通过window.parent.FS.tabPane.addItem(entry)在报表中任何可以用 JS 的地方进行调用

    CPT 单元格超链 JS 中将超链的子报表在决策平台的新 Tab 中打开:

    window.parent.FS.tabPane.addItem({title:"子报表",
    src:"/WebReport/ReportServer?reportlet=模板1.cpt"})


    FS.tabPane.addItem 函数的参数说明如下表所示:

    参数
    类型说明
    entryObject必填,Tab 项对应的 entry 对象

    「entry」以json格式提供,属性如下表所示:

    属性
    类型说明
    titleString,number标签页的标题,字符串和数字都可
    srcString标签页的内容指向的地址

    10. Tab 组件操作

    函数名概述示例
    getShowIndex

    通过getShowIndex获取 Tab 组件当前显示的 Tab 号 

    注:该函数支持在 App10.0 中使用。

    参考showCardByIndex函数示例
    setTabVisible1)通过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隐藏

    注1:该函数支持在 App 10.0 中使用。

    注2:不能在 tablayout 的初始化事件和参数界面中使用。

    不同用户可以看到不同的 Tab:

    var user = this.options.form.getWidgetByName("user")
    .getValue();
    if(user=='a'){
        this.options.form.getWidgetByName("tabpane0")
        .setTabVisible("Tab0", true);
        this.options.form.getWidgetByName("tabpane0")
        .setTabVisible("Tab1", true);
        this.options.form.getWidgetByName("tabpane0")
        .setTabVisible("Tab2", true);
    }else{
        this.options.form.getWidgetByName("tabpane0")
        .setTabVisible("Tab0", false);
        this.options.form.getWidgetByName("tabpane0")
        .setTabVisible("Tab1", true);
        this.options.form.getWidgetByName("tabpane0")
        .setTabVisible("Tab2", false);

    showCardByIndex

    showCardByIndex(Number:cardID);

    效果:可以实现跳转到指定 Tab 块

    参数:cardID

    说明:必填,显示的 Tab 序号,从 0 开始


    showCardByIndex(Number: cardID, Boolean: animated);

    效果:新增 animated 参数,控制切换Tab页是否有动画效果,

              仅在移动端标题栏样式允许横向滚动切换时生效

    参数:animated

    说明:非必填,animated 为 1 开启动画,为 0 关闭动画

    给 body 添加初始化后事件,实现固定时间间隔内自动循环跳转 Tab :

    setInterval(function(){   
        var aa=_g().getWidgetByName("tabpane0")
        .getShowIndex(); 
        if(aa==2){ 
          _g().getWidgetByName('tabpane0')
          .showCardByIndex(0); 
        }
        else { 
          _g().getWidgetByName('tabpane0')
          .showCardByIndex(aa+1); 
        } 
    },2000)

    注:具体示例可参考:

    JS 实现点击查询后停留在当前查询的 Tab 页

    JS实现点击超链切换TAB页

    11. JSON对象操作

    概述操作

    一些请求或者方法返回是 Json 数据,可以通过json.name来获取 name 属性的值

    注:该函数支持在 App 9.0 和 App 10.0 中使用。

    在单元格js中通过FR.Mobile.getDeviceInfo获取设备信息,并且取出其中的 Model 设备型号: 

    var a = FR.Mobile.getDeviceInfo();
    FR.Msg.alert(a.Model)


    12. 其他操作

    函数名概述示例
    FR.ajax

    1)封装过的jQuery.ajax()函数,对 data 参数做了中日韩文编码处理,可以通过FR.ajax(options) 在任何可以用 JS 的地方进行调

    2)参数说明详见 13.1 章节


    在 CPT 的单元格超链 JS 中发 ajax 请求,且在不同的回调函数中处理不同的情况:

    var username = "1";
    var password = "1";
    FR.ajax({   
       url:"http://env.finedevelop.com:59204/Test
    /ReportServer?op=fs_load&cmd=sso",
       data:{
            fr_username:username,
            fr_password:password
       },
       dataType:"jsonp",//跨域采用jsonp方式     
       timeout:5000,//超时时间(单位:毫秒)
       //success:function(data) { //data参数视返回值情况而定
            //FR.Msg.alert("success",data.status);
       //},   
       //error:function(errorThrown){   
            //FR.Msg.alert("error",errorThrown);
       //},
       complete: function(res,textStatus){ 
            FR.Msg.alert("complete",textStatus); 
       }  
    })
    setInterval1)setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

    2)setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

    3)通过setInterval(code,millisec)进行调用

    4)参数说明详见 13.2 章节

    在报表加载结束时间中定义每 3s 刷新一次报表:

    setInterval("self.location.reload();",3000)


    setTimeout1)用于在指定的毫秒数后调用函数或计算表达式。通过setTimeout(code,millisec)进行调用

    2)参数说明详见 13.3 章节

    注:JS 代码为setTimeout(function(){})格式时,「this」需放在声明外使用。

    1)在报表加载结束时间中 3s 后弹出提示:
    setTimeout("FR.Msg.alert('提示','我是延迟提示')",3000)

    2)在报表加载结束时间中 3s 后弹出提示:

    setTimeout(function() {
        FR.Msg.alert('提示','我是延迟提示');
    }, 3000)
    FR.location

    1)使用场景

    FR.location 用于实现定位功能,获取经纬度,可以在App、企业微信、钉钉中使用

    2)函数用法

    FR.location(function(status, message){...})

    3)注意事项

    想要在企业微信、钉钉中使用需要将 HTML5 移动端展现插件和微信或钉钉管理插件更新到 10.4.975 版本

    在单元格 JS 中获取当前经纬度:

    FR.location(function(status, message){ 
    //获取地理位置 
    if(status=="success") { 
        //定位成功,message返回经纬度值 
        FR.Msg.alert("当前位置是" + message);   
    } else { 
        //定位失败,message返回对应的错误信息 
        FR.Msg.alert(message); //定位失败 

    })


    FR.Mobile.getDeviceInfo

    获取设备信息,通过FR.Mobile.getDeviceInfo()进行调用,返回 Json 对象,包含两个属性,一个是设备型号,另外一个是设备唯一 id 

    在填报加载结束后事件中,将设备机型和设备唯一 id 赋值给单元格:

    var b = FR.Mobile.getDeviceInfo();
    contentPane.setCellValue(0,0,b.Model);
    contentPane.setCellValue(0,1,b.DeviceID)
    location.reload1)刷新当前页,和手动刷新效果相同

    2)如果报表有多页,刷新后返回第一页;如果报表有参数界面,刷新后直接显示上次的参数条件查询后的结果

    在填报成功事件中写入刷新 JS ,实现填报成功后刷新当前页:

    location.reload()


    window.close关闭当前窗口

    在填报成功事件中写入 JS ,实现填报成功后关闭模板返回目录:

    window.close()
    FR.remoteEvaluateAsync

    返回公式计算的结果

    注1:版本为 10.4.46 之后的 App 支持

    注2:使用该接口需要关闭脚本调用公式限制

    2 个参数,分别表示:

    1)formula:必填,具体公式

    2)callback:必填,具体回调方法,可以获取公式计算后的值

    FR.cellStr2ColumnRow("单元格")

    可以将单元格转换为行列号

    知道具体的单元格,能够定位该单元格的行列号

    FR.cellStr2ColumnRow('B1') 

    返回值为 {"col":1,"row":0}

    12.1 FR.ajax 参数说明

    FR.ajax 函数的参数说明如下表所示:

    参数类型说明
    optionsObject必填,ajax参数

    [options]以json格式提供,属性如下表所示:

    属性类型说明
    urlString必填,发送请求的地址
    dataObject发送到服务器的数据。GET 请求中将自动转换为请求字符串格式,附加在 URL 后。

    值必须是Key/Value格式,可以是字符串如p1=pavalue&p2=p2value,或者是对象如{p1:p1value,p2:p2value}

    typeString请求方式 POST/GET ,默认为 GET
    dataTypeString

    预期服务器返回的数据类型。如果不指定,将自动根据 HTTP 包 MIME 信息来智能判断。可用值有:

    json:返回 JSON 数据。

    text:返回纯文本字符串。

    jsonp": 跨域采用 jsonp 方式

    successFunction请求成功后的回调函数:
    success: function(data, textStatus){  
    //data为服务器返回的,并根据dataType参数
    //进行处理后的数据。textStatus为状态值success
    }&nbsp
    errorFunction请求失败时调用此函数:
    error: function(XMLHttpRequest, textStatus, errorThrown){ 
    //参数分别为XMLHttpRequest 对象、错误信息、捕获的异常对象。
    //通常textStatus和errorThrown之中只有一个会包含信息
     }&nbsp
    completeFunction请求完成后回调函数(请求成功或失败之后均调用):
    complete: function(XMLHttpRequest, textStatus){  
    //参数分别为XMLHttpRequest
    //对象和一个描述成功请求是否成功的字符串
     } &nbsp
    timeoutNumber设置请求超时时间(毫秒)
    async Boolean默认为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false 

    12.2 setInterval 参数说明

    参数类型说明
    codeObject必填,要调用的函数或要执行的代码串
    millisecNumber周期性执行或调用 code 之间的时间间隔,以毫秒计

    12.3 setTimeout 参数说明

    参数类型说明
    codeObject必填,要调用的函数后要执行的 JavaScript 代码串
    millisecNumber在执行代码前需等待的毫秒数

    12.4 FR.remoteEvaluateAsync 参数说明

    参数类型说明
    formulaString必填,具体公式
    callbackfunction必填,具体回调方法,可以获取公式计算后的值

    13. MSG 弹窗

    函数名概述示例
    FR.Msg.alert1)弹出消息的提示对话框

    可以通过FR.Msg.alert(Object title, Object message[, Object callback])在任何可以写 JS 的地方进行调用

    2)参数说明详见本文 14.1 章节

    1)点击填报单元格按钮后弹出提示:
    FR.Msg.alert("提示","我是第一个提示")

    2)点击填报单元格按钮后弹出提示,且 2s 后自动关闭:

    FR.Msg.alert("提示","我是第二个提示",2000)

    3)点击填报单元格按钮后弹出提示,点击提示框的确定按钮,触发回调事件并提示:

    FR.Msg.alert("提示","我是第三个提示",function(value){
        FR.Msg.alert("提示",value);
    })
    FR.Msg.toast1)弹出悬浮提示,5s 自动消失,可以通过FR.Msg.toast(Object message )在任何可以写 JS 的地方进行调用

    2)参数说明如下所示:

    参数:message

    参数类型:Object

    参数说明:要显示的消息

    点击填报单元格按钮后弹出悬浮提示:

    FR.Msg.toast("提示","我是第一个悬浮提示")


    FR.Msg.confirm1)弹出的确认对话框

    可以通过FR.Msg.confirm(Object title, Object message[,Object callback, Object min_width ])在任何可以写 JS 的地方进行调用

    2)参数说明详见本文 14.2 章节

    1)点击填报单元格按钮后弹出确认框:
    FR.Msg.confirm("提示","我是第一个确认")

    2)点击填报单元格按钮后弹出弹出确认框,且在点击确定和取消按钮的时候,弹出不同的回调提示:

    FR.Msg.confirm("提示","我是第二个确认",function(value){
        FR.Msg.alert("提示",value);
    })
    FR.Msg.prompt1)弹出的输入对话框

    可以通过FR.Msg.confirm(Object title, Object message, Object value, Object callback, Object min_width)在任何可以写 JS 的地方进行调用

    2)参数说明详见 本文 14.3 章节

    1)点击填报单元格按钮后弹出输入框:
    FR.Msg.toast("提示","我是第一个悬浮提示")
    2)点击填报单元格按钮后弹出弹出输入框,且在点击确定的时候提示输入的值:
    FR.Msg.prompt("提示","我是第二个输入",
    null,function(value){
        FR.Msg.alert("提示",value);
    }

    13.1 FR.Msg.alert 参数说明

    FR.Msg.alert 参数说明如下所示:

    参数类型说明
    titleObject必填,消息提示框的标题
    messageObject必填,消息提示框的提示内容
    callbackObject选填,对话框显示以后的回调函数。如果该参数是数字类型,则表明该对话框在指定的时间(单位:毫秒)后自动关闭

    13.2 FR.Msg.confirm 参数说明

    FR.Msg.confirm 参数说明如下所示:

    参数类型说明
    titleObject必填,消息提示框的标题
    messageObject必填,消息提示框的提示内容
    callbackObject选填,点击确认后的回调函数
    min_widthObject选填,确认对话框的最小宽度,这个属性移动端无效

    13.3 FR.Msg.prompt 参数说明

    FR.Msg.prompt 参数说明如下所示:

    参数类型说明
    titleObject必填,输入对话框的标题
    messageObject选填,输入对话框的显示消息
    valueObject选填,输入对话框的默认值
    callbackObject选填,点击确认后的回调函数
    min_widthObject选填,确认对话框的最小宽度,这个属性移动端无效

    14. 具体使用示例

    14.1 获取控件的一系列方法

    this.options.form.getWidgetByName("控件名");  //参数界面及决策报表中获取控件  
    contentPane.getWidgetByCell("单元格");  //填报界面获取控件  
    contentPane.getWidgetByName("控件名");   //填报界面获取控名

    详细请查看 填报成功后自动刷新

    14.2 JS 获取决策报表图表、报表块

    JS 获取决策报表图表组件并刷新数据

    详细请查看 JS 获取决策报表图表组件并刷新数据

    14.3 延时函数

    setTimeout(function(){},500)

    14.4 刷新

    1)当前页刷新

    location.reload(

    详细请查看 当前页刷新

    2)定时刷新,支持定时 JS,以及取消定时

    setInterval('location.reload();',10000);//时间单位为 ms,即每 10s 刷新一次页面
    var timer = setInterval('location.reload();',10000);clearInterval(timer);//取消定时&nbsp

    详细请查看 定时刷新 JS

    14.5 获取地理位置

    FR.location(function(status, message){ //获取地理位置
    if(status=="success") {
      //定位成功,message 返回经纬度值
      FR.Msg.alert("当前位置是" + message);
      contentPane.setCellValue(2, 3, message);  
    } else {
      //定位失败,message返回对应的错误信息
      FR.Msg.alert(message); //定位失败
    }
    })

    详细请查看 获取地理位置

    14.6 查询

    查询操作,不管是 cpt 还是 frm,参数界面上会有内置查询按钮,用户可以不用内置查询,通过 JS 来触发查询操作

    1)普通报表可以通过下面两种方式触发

    contentPane.parameterCommit()
    _g().parameterCommit(

    2)决策报表只能通过下面一种方式触发

    _g().parameterCommit(

    详细请查看 决策报表自动查询 JS

    详细请查看 扫码输入查询

    14.7 超级链接

    FR.doHyperlinkByGet({url:'${servletURL}?viewlet=JS 超链自定义标题子表.cpt',title:'
    标题是我',para:{area:'华北'}})

    注:title 只在 App 中支持

    详细请查看 JS 超链自定义标题

    14.8 登出 App

    FR.logoutApp()

    详细请查看 登出 App 的 JS

    14.9 获取控件显示值与实际值

    var Widget = this.options.form.getWidgetByName("t1"); 
    //在参数界面获取控件的方法,先获取决策报表,再通过控件名称来获取控件 
    var value_1 =Widget.getValue(); //获取控件实际值 
    alert('我的实际值是:'+value_1); //弹出控件实际值 
    var value_2 =Widget.getText(); //获取控件显示值 
    alert('我的显示值是:'+value_2); //弹出控件显示值

    详细请查看 控件值(实际值和显示值

    附件列表


    主题: 移动端应用
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526