chore: 首次簽入 Thinkyu ASP.NET 專案

- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
2026-09-10 09:42:37 +08:00
commit 577060bc78
2496 changed files with 501389 additions and 0 deletions
@@ -0,0 +1,227 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="領據查詢.ascx.cs" Inherits="Education.Forms.領據系統.領據查詢" %>
<link rel="stylesheet" href="<%= ResolveClientUrl("~/Styles/領據資料處理.css") %>" />
<div id="receiptSearchApp">
<!-- Loading 指示器 -->
<div v-if="loading" class="loading-overlay">
<div class="loading-spinner">
<div class="spinner"></div>
<p>處理中...</p>
</div>
</div>
<!-- Toast 訊息顯示容器 -->
<div v-if="ShowMessage" v-bind:class="['toast-message', 'toast-' + MessageType]">
{{ MessageText }}
</div>
<!-- 查詢條件區塊 -->
<div class="control-panel search-panel card">
<div class="card-body">
<div class="row g-3">
<div class="col-sm-6 col-md-4 col-lg-2">
<div class="field-wrapper">
<label class="form-label">計畫代號</label>
<input type="text" class="form-control" v-model="searchParams.計畫代號">
</div>
</div>
<div class="col-sm-6 col-md-4 col-lg-2">
<div class="field-wrapper">
<label class="form-label">計畫名稱</label>
<input type="text" class="form-control" v-model="searchParams.計畫名稱">
</div>
</div>
<div class="col-sm-6 col-md-4 col-lg-2">
<div class="field-wrapper">
<label class="form-label">活動日期(起)</label>
<input type="date" class="form-control" v-model="searchParams.活動日期_1">
</div>
</div>
<div class="col-sm-6 col-md-4 col-lg-2">
<div class="field-wrapper">
<label class="form-label">活動日期(迄)</label>
<input type="date" class="form-control" v-model="searchParams.活動日期_2">
</div>
</div>
<div class="col-sm-6 col-md-4 col-lg-2">
<div class="field-wrapper">
<label class="form-label">身分別</label>
<select class="form-select" v-model="searchParams.身分別">
<option v-for="item in dropdown.身分別" v-bind:key="item.Value" v-bind:value="item.Value">{{item.Name}}</option>
</select>
</div>
</div>
<div class="col-sm-6 col-md-4 col-lg-2">
<div class="field-wrapper">
<label class="form-label">憑證類別</label>
<select class="form-select" v-model="searchParams.憑證類別">
<option v-for="item in dropdown.憑證類別" v-bind:key="item.Value" v-bind:value="item.Value">{{item.Name}}</option>
</select>
</div>
</div>
<div class="col-sm-6 col-md-4 col-lg-2">
<div class="field-wrapper">
<label class="form-label">活動類別</label>
<input type="text" class="form-control" v-model="searchParams.活動類別">
</div>
</div>
<div class="col-sm-6 col-md-4 col-lg-2">
<div class="field-wrapper">
<label class="form-label">付款方式</label>
<select class="form-select" v-model="searchParams.付款方式">
<option v-for="item in dropdown.付款方式" v-bind:key="item.Value" v-bind:value="item.Value">{{item.Name}}</option>
</select>
</div>
</div>
<div class="col-sm-6 col-md-4 col-lg-2">
<div class="field-wrapper">
<label class="form-label">領款人姓名</label>
<input type="text" class="form-control" v-model="searchParams.領款人姓名">
</div>
</div>
</div>
<div class="row mt-3 button-panel">
<div class="col-12">
<button type="button" class="button blue80" v-on:click.prevent="searchButtonClick" v-bind:disabled="loading">
<span v-if="loading">查詢中...</span>
<span v-else>查詢</span>
</button>
<button type="button" class="button gray80" v-on:click.prevent="clearSearch">清除查詢</button>
<button type="button" class="button blue80" v-on:click.prevent="addNew">新增領據</button>
<button type="button" class="button gray80" v-on:click.prevent="printSelected" v-bind:disabled="selectedItems.length === 0">列印領據</button>
<button type="button" class="button gray80" v-on:click.prevent="doExport" v-bind:disabled="dataList.length === 0">匯出領據</button>
</div>
</div>
</div>
</div>
<!-- 結果列表區塊 -->
<div class="results-panel card">
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered table-hover" style="table-layout: fixed">
<thead>
<tr class="text-center">
<th style="min-width: 2rem; max-width: 2rem;">
<input type="checkbox" v-on:change="toggleSelectAll" v-model="selectAll">
</th>
<th style="min-width: 7rem; max-width: 7rem;">表單編號</th>
<th style="min-width: 7rem; max-width: 7rem;">計畫代號</th>
<th style="min-width: 6rem; max-width: 6rem;">活動日期</th>
<th style="min-width: 5rem; max-width: 5rem;">領款人<br />
姓名</th>
<th style="min-width: 6rem; max-width: 6rem;">身分證字號</th>
<th style="min-width: 5rem; max-width: 5rem;">憑證類別</th>
<th style="min-width: 5rem; max-width: 5rem;">活動類別</th>
<th style="min-width: 10rem; max-width: 10rem;">活動名稱/事由</th>
<th style="min-width: 5rem; max-width: 5rem;">費用別</th>
<th style="min-width: 3rem; max-width: 3rem;">單價</th>
<th style="min-width: 3rem; max-width: 3rem;">數量</th>
<th style="min-width: 3rem; max-width: 3rem;">單位</th>
<th style="min-width: 10rem; max-width: 10rem;">扣繳類別</th>
<th style="min-width: 4rem; max-width: 4rem;">勞務費<br />
合計金額</th>
<th style="min-width: 4rem; max-width: 4rem;">應扣繳<br />
稅額</th>
<th style="min-width: 4rem; max-width: 4rem;">服務費</th>
<th style="min-width: 4rem; max-width: 4rem;">差旅費<br />
合計金額</th>
<th style="min-width: 4rem; max-width: 4rem;">付款金額</th>
<th style="min-width: 7rem; max-width: 7rem;">建檔人員<br />
日期</th>
<th style="min-width: 7rem; max-width: 7rem;">更正人員<br />
日期</th>
<th style="min-width: 2rem; max-width: 2rem;">作廢<br />
紀錄</th>
<th style="min-width: 2rem; max-width: 2rem;">列印<br />
次數</th>
</tr>
</thead>
<tbody>
<tr v-for="item in dataList" v-bind:key="item.編號" v-bind:class="{ 'row-voided': item.作廢 === 1 }">
<td class="ta-center">
<input type="checkbox" v-bind:value="item" v-model="selectedItems">
</td>
<td class="ta-center">
<button class="button gray120" v-on:click="edit(item.編號)">{{item.表單編號 || '尚未列印'}}</button>
</td>
<td class="ta-center">{{item.計畫代號}}</td>
<td class="ta-center">{{item.活動日期}}</td>
<td class="ta-center">{{item.領款人姓名}}</td>
<td class="ta-center">{{item.身分證字號}}</td>
<td class="ta-center">{{item.憑證類別}}</td>
<td class="ta-center">{{item.活動類別}}</td>
<td class="ta-center">{{item.活動名稱事由}}</td>
<td class="ta-center">{{item.勞務費_費用別}}</td>
<td class="ta-center">{{item.勞務費_單價}}</td>
<td class="ta-center">{{item.勞務費_數量}}</td>
<td class="ta-center">{{item.勞務費_單位}}</td>
<td class="ta-center">{{item.勞務費_扣繳類別名稱}}</td>
<td class="ta-center">{{item.勞務費_合計金額}}</td>
<td class="ta-center">{{item.勞務費_應扣繳稅額}}</td>
<td class="ta-center">{{item.勞務費_服務費}}</td>
<td class="ta-center">{{item.差旅費_合計}}</td>
<td class="ta-center">{{(item.勞務費_合計金額 || 0) - (item.勞務費_應扣繳稅額 || 0) - (item.勞務費_服務費 || 0) + (item.差旅費_合計 || 0)}}</td>
<td class="ta-center">{{item.DB_CRUSR}} {{item.DB_CRUSR_NAME}}<br />
{{item.DB_CRDAT}}</td>
<td class="ta-center"><span v-html="item.DB_TRDAT > '0001-01-01' ? `${item.DB_TRUSR} ${item.DB_TRUSR_NAME}<br />${item.DB_TRDAT}` : ''"></span></td>
<td class="ta-center">{{item.作廢 === 1 ? '是' : '否'}}</td>
<td class="ta-center">{{item.列印次數}}</td>
</tr>
<tr v-if="dataList.length === 0">
<td colspan="21" class="text-center">無資料</td>
</tr>
</tbody>
</table>
</div>
<!-- 分頁 -->
<div class="row mt-3">
<div class="col-12">
<div class="pagination-wrapper">
<!-- 第一頁 -->
<button type="button" class="button gray60" v-on:click="changePage(1)" v-bind:disabled="totalPages === 0 || currentPage === 1" title="第一頁">第一頁</button>
<!-- 上一頁 -->
<button type="button" class="button gray60" v-on:click="changePage(currentPage - 1)" v-bind:disabled="totalPages === 0 || currentPage === 1">上一頁</button>
<!-- 頁數下拉 -->
<div class="field-wrapper" style="margin: 0;">
<select class="form-select d-inline-block w-auto" v-model.number="currentPage" v-on:change="changePage(currentPage)" v-bind:disabled="totalPages === 0">
<option v-for="page in totalPages" v-bind:key="page" v-bind:value="page">第 {{page}} 頁</option>
</select>
</div>
<!-- 下一頁 -->
<button type="button" class="button gray60" v-on:click="changePage(currentPage + 1)" v-bind:disabled="totalPages === 0 || currentPage === totalPages">下一頁</button>
<!-- 最後頁 -->
<button type="button" class="button gray60" v-on:click="changePage(totalPages)" v-bind:disabled="totalPages === 0 || currentPage === totalPages" title="最後頁">最後頁</button>
<!-- 分隔線 -->
<span style="margin: 0 5px;">|</span>
<!-- 每頁筆數 -->
<label class="form-label" style="margin: 0;">每頁</label>
<div class="field-wrapper" style="margin: 0;">
<select class="form-select d-inline-block w-auto" v-model.number="pageSize" v-on:change="search">
<option v-bind:value="10">10</option>
<option v-bind:value="20">20</option>
<option v-bind:value="30">30</option>
</select>
</div>
<label class="form-label" style="margin: 0;">筆</label>
<!-- 分隔線 -->
<span style="margin: 0 5px;">|</span>
<!-- 筆數信息 -->
<span>共 <strong>{{totalCount}}</strong> 筆</span>
</div>
</div>
</div>
</div>
</div>
</div>