Files
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

96 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 活動管理
## 畫面檔:
~/Forms/ClassesList.aspx
## 資料存取類別
~/Models/DAC_Classes1.cs(自動產生,勿修改)
~/Models/DAC_Classes2.cs(自訂擴充)
- DAC_Classes:資料處理類別
- ClassesList:資料集類別
- ClassesItem:資料項目類別
## 畫面排列:
上方:搜尋列
- 使用 CourseCode、CourseName、CourseDate_1CourseDate 起)、CourseDate_2CourseDate 迄)、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 查詢)
- 回傳:BaseResponseSuccess, Message, Data: ClassesList.ToDict(), TotalCount: 總筆數)
- SaveClasses(bool isNew, ClassesItem item):存檔
- isNew:是否為新增
- item:新增或更正的活動資料(型別 ClassesItem
- 回傳:BaseResponseSuccess, Message, Data: 儲存後的 ClassesItem
- DeleteClasses(int id, int dbAppNo):刪除活動
- 呼叫 DAC_Classes.DeleteOne(int ID, int DB_APPNO)
- 回傳:BaseResponseSuccess, Message
- SearchProjects(string keyword):搜尋計畫(用於自動完成)
- 呼叫 DAC_BPAA.Select(keyword)
- 回傳:BaseResponseSuccess, Message, Data: NameValueList
- ExportClassesReport(int classesID, string timeFormat = "datetime"):匯出學員簽到表
- 輸入參數:classesID(課程 ID)、timeFormat(時間格式,"datetime" 或 "time"
- 查詢課程及參加人員資料,使用 NPOI 產生 Excel
- 回傳:BaseResponseSuccess, Message, Data: { FileName, FileBase64, FileSize, DataCount }
- ExportClassesList(DateTime? courseDate1, DateTime? courseDate2, string projectID):匯出課程清單
- 輸入參數:courseDate1(課程日期起)、courseDate2(課程日期迄)、projectID(計畫代號)
- 查詢課程清單及各課程的參加人員統計,使用 NPOI 產生 Excel
- 回傳:BaseResponseSuccess, Message, Data: { FileName, FileBase64, FileSize }