JS實現填報校驗後傳回錯誤資訊

1. 概述

1.1 問題描述

填報報表,透過 內建校驗 可以設定校驗規則,校驗成功就提交入庫,校驗不成功則提示錯誤資訊,錯誤資訊彈窗位置固定在左上角。

如果使用者不想使用 FineReport 內建左上角的校驗提示,希望能夠以彈出框的形式提示錯誤資訊,如下圖所示,並且根據錯誤資訊決定下一步的操作,該如何實現呢?

1723427701550648.jpg

1.2 實現思路

範本新增「內建校驗」後,在「範本 Web 屬性>填報頁面設定」中,重新整理增一個「校驗後」事件,事件內容為根據校驗結果執行相關彈窗操作。

1.3 API介紹

校驗後事件會傳回參數 fr_verifyinfo,此參數包含校驗傳回的資訊,為一個物件,該物件包含兩個屬性:

fr_verifyinfo.success傳回 true/false, true 表示校驗成功,false 表示校驗失敗;

fr_verifyinfo.info傳回具體的錯誤提示資訊,為一個陣列物件,比如傳回A12 儲存格、B13 儲存格的錯誤,分別存為陣列點的一個元素。

2. 範例

校驗不透過,可以傳回單個彈窗提示,也可以傳回多個彈窗提示,這取決於「校驗後」事件中的 JS ,以下給出單個彈窗和多個彈窗的範例。

2.1 傳回單個彈窗

1)準備範本,設計報表樣式,其中 A3-F3 儲存格中都新增「正文元件」,如下圖所示:

1723426242945291.jpg

2)點選「範本>報表填報屬性>資料校驗」,新增「內建校驗」規則,如下圖所示:

校驗規則:當 D3 儲存格值小於等於0的時候,提示錯誤資訊“0”;大於等於 1000 的時候,提示錯誤資訊“1”。

1723426334627806.png

3)點選「範本>範本 Web 屬性>填報頁面設定」,選擇「為該範本單獨設定」,新增「校驗後」事件,如下圖所示:

QQ图片20240812093423.png

JavaScript 程式碼如下:

if (fr_verifyinfo.success) {
alert("校驗成功");
return false;
} else {
if (fr_verifyinfo.info == "D3:0") {
alert("成本價小於0!!!");
location.reload();
return false;
} else {
FR.Msg.confirm("警告", "成本價大於1000,確認要提交嗎?", function(result) {
if (result) {
_g().writeReport();
//強制提交
location.reload();
//重新整理頁面
}
})
return false;
}
}
显示代码

4)儲存範本後,點選「填報預覽」,效果如下圖所示:

动画1.gif

注:不支援行動端。

2.2 傳回多個彈窗

1)點選「範本>報表填報屬性>資料校驗」,修改內建校驗規則,如下圖所示:

校驗規則:當 D3 儲存格值小於等於 0 的時候,提示錯誤資訊“0”; E3 儲存格值小於 0 的時候,就提示錯誤資訊“1”。

1723427237333771.png

2)點選「範本>範本 Web 屬性>填報頁面設定」,修改「校驗後」事件,如下圖所示:

QQ图片20240812094848.png

JavaScript 程式碼如下:

if (fr_verifyinfo.success) {
alert("校驗成功");
return false;
//不再觸發原來的校驗成功提示
} else {
for (var i = 0; i < fr_verifyinfo.info.length; i++) {
if (fr_verifyinfo.info[i] == "D3:0") {
alert("D3儲存格校驗出錯");
} else if (fr_verifyinfo.info[i] == "E3:1") {
alert("E3儲存格校驗出錯");
}
}
return false;
//不再觸發原來的校驗失敗提示
}
显示代码

3)儲存後,點選「填報預覽」,效果如下圖所示:

銷售成本、其他支出輸入小於 0 的值

按確定後彈出提示 E3 儲存格校驗出錯。
动画2.gif

注:不支援行動端。

3. 範本下載

1)傳回單個彈窗

點選下載範本:56-JS實現填報校驗後傳回錯誤資訊範例一.cpt

2)傳回多個彈窗

點選下載範本:56-JS實現填報校驗後傳回錯誤資訊範例二.cpt


附件列表


主題: 填報應用
  • 有幫助
  • 沒幫助
  • 只是瀏覽
中文(繁體)

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

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

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙

反饋已提交

網絡繁忙