4.7 KiB
4.7 KiB
活動管理
畫面檔:
~/Forms/ClassesList.aspx
資料存取類別
~/Models/DAC_Classes1.cs(自動產生,勿修改) ~/Models/DAC_Classes2.cs(自訂擴充)
- DAC_Classes:資料處理類別
- ClassesList:資料集類別
- ClassesItem:資料項目類別
畫面排列:
上方:搜尋列
- 使用 CourseCode、CourseName、CourseDate_1(CourseDate 起)、CourseDate_2(CourseDate 迄)、CourseLocation 為查詢條件 下方:搜尋結果列表
- 顯示欄位為 CourseCode、CourseName、CourseDate、CourseLocation、操作
- 新增按鈕放置在表頭的操作欄
- 更正、刪除按鈕放置在操作欄
- CourseCode、CourseDate 向中對齊,其餘向左對齊
UI 規範:
- 小窗尺寸:700x500px
- 搜尋結果每頁顯示 20 筆
- 操作按鈕使用 Bootstrap 樣式
錯誤處理:
- 使用系統共用的 $message 來顯示
新增更正:
- 新增更正時彈出小窗
- 新增有兩個存檔按鈕 存檔:存檔後關閉小窗 存檔後繼續新增:存檔後清除輸入內容重新進入新增模式
- 更正存檔後關閉小窗
刪除:
- 彈 confirm 確認後刪除
資料輸入:
- CourseCode 不可輸入,不可修改,自動編號(BeforeInsertOne 處理)
- CourseName 必填,可輸入,可修改,單行文字框,最長 100 Unicode 字元
- CourseDate 必填,可輸入,可修改,日期輸入框,YYYY-MM-DD 格式,不必驗證是否晚於今天
- CourseLocation 非必填,可輸入,可修改,單行文字框
- NotificationTitle 非必填,可輸入,可修改,單行文字框,最長 100 Unicode 字元
- NotificationTemplate 非必填,可輸入,可修改,多行文字框,最長 500 Unicode 字元
NotificationTemplate 插入規則:
- 插入格式:{活動日期}、{活動名稱}、{活動地點}
- 插入位置:游標當前位置
- 範例:「提醒您,{活動名稱}將於{活動日期}在{活動地點}舉行」
- AgreedTerms 非必填
前端程式碼:
- 使用 Vue.js 實現動態資料綁定與操作。
- 不使用 Server control
後端程式碼:
- 使用 WebService 實現非同步資料交換。
WebService 端點:
Services/ClassesService.asmx
-
EnableSession(True)
-
SearchClasses(int pageIndex, int pageSize, string courseCode, string courseName, DateTime? courseDate1, DateTime? courseDate2, string courseLocation, bool? closed, string projectID):搜尋活動
- pageIndex 從 1 開始
- 查詢 function 用 DAC_Classes.SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, string CourseCode, string CourseName, DateTime? CourseDate_1, DateTime? CourseDate_2, string CourseLocation, bool? Closed, string ProjectID, string orderBy = "")
- 筆數 function 用 DAC_Classes.SelectCount(bool noInputReturnAll, string CourseCode, string CourseName, DateTime? CourseDate_1, DateTime? CourseDate_2, string CourseLocation, bool? Closed, string ProjectID, string orderBy = "")
- 查詢條件為 AND 關係
- 空白條件視為不限制(noInputReturnAll = true)
- CourseDate 為範圍查詢
- 每筆結果補填 ProjectName(由 DAC_BPAA.SelectProjectName 查詢)
- 回傳:BaseResponse(Success, Message, Data: ClassesList.ToDict(), TotalCount: 總筆數)
-
SaveClasses(bool isNew, ClassesItem item):存檔
- isNew:是否為新增
- item:新增或更正的活動資料(型別 ClassesItem)
- 回傳:BaseResponse(Success, Message, Data: 儲存後的 ClassesItem)
-
DeleteClasses(int id, int dbAppNo):刪除活動
- 呼叫 DAC_Classes.DeleteOne(int ID, int DB_APPNO)
- 回傳:BaseResponse(Success, Message)
-
SearchProjects(string keyword):搜尋計畫(用於自動完成)
- 呼叫 DAC_BPAA.Select(keyword)
- 回傳:BaseResponse(Success, Message, Data: NameValueList)
-
ExportClassesReport(int classesID, string timeFormat = "datetime"):匯出學員簽到表
- 輸入參數:classesID(課程 ID)、timeFormat(時間格式,"datetime" 或 "time")
- 查詢課程及參加人員資料,使用 NPOI 產生 Excel
- 回傳:BaseResponse(Success, Message, Data: { FileName, FileBase64, FileSize, DataCount })
-
ExportClassesList(DateTime? courseDate1, DateTime? courseDate2, string projectID):匯出課程清單
- 輸入參數:courseDate1(課程日期起)、courseDate2(課程日期迄)、projectID(計畫代號)
- 查詢課程清單及各課程的參加人員統計,使用 NPOI 產生 Excel
- 回傳:BaseResponse(Success, Message, Data: { FileName, FileBase64, FileSize })