Files
thinkyu/branches/1150807/DOC/個人費用彙整表_實施摘要.md
T
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

4.9 KiB

講師個人費用彙整表 - 實施摘要

已完成部分

1. 前端 UI 實施

檔案: Forms\領據系統\財稅作業與領據關帳.aspx

  • Tab 0: 個人費用彙整表頁面結構
  • 查詢表單 (4 個輸入欄位)
    • 起日 (date input)
    • 迄日 (date input)
    • 身分別 (dropdown)
    • 付款方式 (dropdown)
  • 操作按鈕
    • 查詢按鈕 (綠色)
    • 匯出按鈕 (藍色)
  • 查詢結果表格 (9 欄)
    • 領款人姓名、身分證字號、堂數、扣繳類別、帳戶名、付款金額、匯款帳號、銀行分行代碼、銀行分行
  • 完整 CSS 樣式
    • 按鈕樣式、表格樣式、提示訊息樣式、表單樣式等

2. Vue.js 邏輯實施

檔案: Scripts\財稅作業與領據關帳.js

  • 初始化 summaryTable 物件

    summaryTable: {
        startDate: '',
        endDate: '',
        identity: '',
        paymentMethod: '',
        identityOptions: [],
        paymentMethodOptions: [],
        dataList: [],
        loading: false,
        message: '',
        messageType: 'info'
    }
    
  • 方法實施

    • loadSummaryTableDropdowns() - 加載下拉選項
    • searchSummaryTable() - 執行查詢
    • exportSummaryTable() - 執行匯出
    • parseDate() - 日期解析
    • formatCurrency() - 貨幣格式化
    • downloadExcel() - Excel 下載

3. WebService 框架實施

檔案: Services\領據處理.asmx.cs

  • SearchSummaryTable 方法簽名

    public ServiceResponse SearchSummaryTable(
        string 起日,
        string 迄日,
        string 身分別,
        string 付款方式,
        string 輸出方式)
    
  • 日期解析邏輯

  • 輸出方式驗證 (DATA / EXPORT)

  • 個人費用彙整表Item 資料模型

4. 樣式優化

檔案: Styles\領據資料處理.css 和 ASPX 內部 CSS

  • 新增邊距類 (ml-2, mt-3, mt-4)
  • 表格響應式設計
  • 按鈕樣式 (綠色、藍色)
  • 警告/成功/信息訊息樣式
  • 表單欄位布局

📋 待實施部分(用戶需完成)

1. SearchSummaryTable 查詢邏輯

方法位置: Services\領據處理.asmx.cs 第 688 行

需要完成:

// 1. 連接資料庫
using (var conn = DAC.NewConnection())
{
    // 2. 根據參數查詢資料
    // - startDate (起日)
    // - endDate (迄日)
    // - 身分別 (可空)
    // - 付款方式 (可空)
    
    // 3. 返回 List<個人費用彙整表Item>
    var summaryData = new List<個人費用彙整表Item>();
    
    // TODO: 實現查詢邏輯
    // 可參考現有的 DAC_領據.SelectPageWithRelations() 方法
}

2. Excel 匯出邏輯

方法位置: Services\領據處理.asmx.cs 第 715 行

需要完成:

if (輸出方式 == "EXPORT")
{
    // 1. 生成 Excel 檔案
    // 2. 轉換為 Base64 編碼
    // 3. 返回 { excelData, fileName }
    
    // 可參考現有的 Report.領據列印 實現方式
}

📊 資料模型

public class 個人費用彙整表Item
{
    public string 領款人姓名 { get; set; }      // 講師/非講師姓名
    public string 身分證字號 { get; set; }
    public string 堂數 { get; set; }              // 格式:「數量 + 單位」
    public string 扣繳類別 { get; set; }
    public string 帳戶名 { get; set; }
    public decimal 付款金額 { get; set; }
    public string 匯款帳號 { get; set; }
    public string 銀行分行代碼 { get; set; }
    public string 銀行分行 { get; set; }
}

🔗 方法調用流程

前端查詢按鈕
    ↓
JavaScript: searchSummaryTable()
    ↓
WebService: SearchSummaryTable (輸出方式="DATA")
    ↓
返回 List<個人費用彙整表Item>
    ↓
Vue 綁定結果到表格
前端匯出按鈕
    ↓
JavaScript: exportSummaryTable()
    ↓
WebService: SearchSummaryTable (輸出方式="EXPORT")
    ↓
返回 { excelData: Base64, fileName: "..." }
    ↓
JavaScript: downloadExcel()
    ↓
瀏覽器下載檔案

🛠 設定和相依性

  • Vue.js 2.x (已在頁面加載)
  • Axios (已在頁面加載)
  • ToastMixin (已在頁面加載)
  • ApiMixin (已在頁面加載)

特色功能

  1. 响應式設計 - 適配不同螢幕尺寸
  2. 即時驗證 - 日期範圍檢查
  3. 錯誤提示 - 友好的錯誤訊息
  4. 加載狀態 - 按鈕禁用狀態提示
  5. 貨幣格式 - 自動格式化付款金額 (NTD)
  6. Excel 下載 - Base64 解碼下載

📝 建置狀態

項目已成功構建,無編譯錯誤

🚀 下一步

  1. 實施 SearchSummaryTable 的查詢邏輯
  2. 實施 Excel 匯出邏輯
  3. 測試查詢和匯出功能
  4. 驗證資料正確性
  5. 性能優化 (如需要)

📞 技術支援

  • 有任何問題,請檢查:
    1. WebService 方法是否正確傳遞參數
    2. 資料庫查詢是否返回正確欄位
    3. Excel 生成邏輯是否正確編碼為 Base64
    4. 瀏覽器開發者工具中的網路請求和回應