當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

App 端的 JS 接口

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.cjkEncode1)對中日韓文做特殊編碼轉換,返回轉換後的字符串通過FR.cjkEncode(Object text)進行調用,一般配合超鏈 JS ,對超鏈中的中文字符進行轉碼以防止亂碼

2)參數說明如下所示:

參數:text

參數類型:Object

參數說明:必填,需要做編碼的字符串

在 CPT 單元格超鏈 JS 中超鏈到中文名字模板:

var url = FR.cjkEncode("/WebReport/ReportServer
?reportlet=模板1.cpt"
);
var a = "123";
FR.doHyperlinkByGet(url,
{a:a, b:"456"}, "_self")


FR.cjkDecode1)将cjkEncode處理過的字符串轉化爲原始字符串通過FR.cjkDecode(Object text)進行調用

2)參數說明如下所示:

參數:text

參數類型:Object

參數說明:必填,需要做解碼的字符串

在 CPT 單元格超鏈 JS 中先用FR.cjkEncode對中文進行編碼,然後再用FR.cjkDecode進行解碼:

var a = "哈哈";
var b = FR.cjkEncode(a);
var c = FR.cjkDecode(b);
FR.Msg.alert("提示",b + ":" + c)


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(23, 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); //彈出控件顯示值

詳細請查看 控件值(實際值和顯示值

附件列表


主題: 原簡體文檔
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

9s後關閉

反饋已提交

網絡繁忙