反饋已提交

網絡繁忙

JS實現記錄填報操作

1. 概述

1.1 問題描述

想要對使用者在填報時操作過的資料進行記錄,比如修改和刪除了哪幾行資料,是誰在什麼時間操作的,該如何實現呢?

1.2 實現思路

修改操作可以透過元件的編輯後事件,將操作時間和操作使用者指派給同行某個儲存格,最後提交到資料庫。

刪除操作可以透過在刪除行按鈕中設定提交事件,讓其在刪除行的同時,將資料提交到記錄表裏。

API說明可以參考:JS APIAPI匯總

注:不支援行動端。

2. 範例

2.1 設計範本

如圖製作範本:

1721895980350899.jpg

E2 儲存格記錄操作人,F2 儲存格記錄操作時間,G2 儲存格為按鈕元件。製作完成後可以將 E 列和F列隱藏。

2.2 設定刪除按鈕

1)將 G2 的按鈕元件設定為普通按鈕,新增點選事件,選擇提交入庫。

注:必須是「普通」類型按鈕,「刪除行」類型按鈕會有邏輯衝突問題。

1721896115303431.jpg

2)新增 2 個提交事件,一個將改動記錄資訊提交到日誌表,另一個將該行資料從原表刪除。

日誌記錄:選擇智慧提交,按下圖所示設定,將操作人:=$fine_username,操作時間:=format(now(),'yyyy-MM-dd HH:mm:ss')和狀態:刪除綁定對應欄位。操作人和時間需要勾選為主鍵。

1721896899483227.jpg

原表刪除:選擇刪除提交,設定對應主鍵欄位即可。

1721896958749447.jpg

3)設定回呼函式,用於彈出刪除結果提示,以及執行刪除行的操作

1721897006883177.jpg

JavaScript 程式碼如下:

if (fr_submitinfo.success) {
_g().deleteReportRC(this.options.location);
//刪除當前行
FR.Msg.toast('刪除成功');
else {
FR.Msg.toast('刪除失敗,錯誤資訊為:' + fr_submitinfo.failinfo);
}

2.3 設定元件編輯後事件

給需要編輯的儲存格元件新增編輯後事件,比如本範例中 C2 和 D2 儲存格的正文框元件。

1721897075241970.jpg

JavaScript 程式碼如下:

注:使用 FR.remoteEvaluate API存在一定安全風險,使用者可根據實際情況使用,詳情可查看:全局API-FR

var username=FR.remoteEvaluate("$fine_username");
//獲取當前帳號
var time=FR.remoteEvaluate("format(now(),'yyyy-MM-dd HH:mm:ss')");
//獲取當前時間
var cell=this.options.location;
//獲取當前元件所在儲存格的編號
var cr=FR.cellStr2ColumnRow(cell);
//獲取當前儲存格的行列號
_g().setCellValue(0,4,cr.row,username);
//給當前行的E列儲存格指派帳號
_g().setCellValue(0,5,cr.row,time);
//給當前行的F列儲存格指派時間

2.4 設定填報屬性

範本>報表填報屬性中新增 2 個內建 SQL ,分別對應日誌記錄和資料提交。

1)按下圖所示設定日誌記錄的填報屬性。綁定操作人為E2儲存格,時間為F2儲存格,狀態為修改。同時,需要設定提交條件來過濾掉 E2 和 F2 為空的資料,也就是過濾掉使用者未修改的那部分資料。提交條件的公式為:len(E2)!=0&&len(F2)!=0

1721897164878232.jpg

2)按下圖所示設定資料提交的填報屬性。

1721897212529555.jpg

2.5 效果預覽

儲存範本,點選填報預覽。任意修改和刪除資料,可以看到修改和刪除的資料資訊都提交到了日誌表裏。

2024-07-25_16-51-47.jpg

3. 範本下載

已完成模板可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填報預覽JS實體\記錄填報操作.cpt

點選下載範本:記錄填報操作(帶刪除確認功能).cpt

4. 注意事項

1)本方案中的修改狀態包括了更新和插入 2 種狀態,由於這兩種狀態的區分需要和資料庫交互後才能知道,所以暫不支援。

2)如果希望刪除行前有確認步驟,可以透過 2 個按鈕來實現。其中一個設定提交事件,最後隱藏,另一個設定刪除行前確認的功能,透過的話則模擬點選設定提交事件的按鈕。如下圖所示:

1721897713759979.jpg

刪除確認按鈕的JavaScript 程式碼如下:

var cell = this.options.location;
//獲取當前元件所在儲存格的編號
var cr = FR.cellStr2ColumnRow(cell);
//獲取當前儲存格的行列號
var delcell = FR.columnRow2CellStr({
col: cr.col + 1,
row: cr.row
})
//獲取當前儲存格後一欄的儲存格編號
FR.Msg.confirm("警告""確定要刪除嗎?"function(value{
if (value) {
_g().getWidgetByCell(delcell).fireEvent("click");
//模擬點選按鈕
}
})

範本下載:記錄填報操作(帶刪除確認功能).cpt

附件列表


主題: 填報應用
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

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

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

不再提示

10s後關閉

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

反馈已提交

网络繁忙