chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,145 @@
|
||||
<%@ Page Title="課程報表" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ClassesReport.aspx.cs" Inherits="報到系統.Forms.ClassesReport" %>
|
||||
|
||||
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
|
||||
<link href="<%= ResolveUrlWithSysVer("~/Content/ClassesList.css") %>" rel="stylesheet" type="text/css" />
|
||||
</asp:Content>
|
||||
|
||||
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
|
||||
<div id="classesReportApp" class="page-container">
|
||||
<div class="page-header">
|
||||
<h1 class="page-title">課程報表</h1>
|
||||
</div>
|
||||
|
||||
<!-- 搜尋面板 -->
|
||||
<div class="search-panel">
|
||||
<div class="search-row">
|
||||
<div class="search-field-inline w-3">
|
||||
<label class="search-label-inline">課程編號</label>
|
||||
<input type="text" v-model="search.courseCode" class="search-input" placeholder="請輸入課程編號">
|
||||
</div>
|
||||
<div class="search-field-inline w-3">
|
||||
<label class="search-label-inline">課程名稱</label>
|
||||
<input type="text" v-model="search.courseName" class="search-input" placeholder="請輸入課程名稱">
|
||||
</div>
|
||||
<div class="search-field-inline w-3">
|
||||
<label class="search-label-inline">課程日期(起)</label>
|
||||
<input type="date" v-model="search.courseDate1" class="search-input">
|
||||
</div>
|
||||
<div class="search-field-inline w-3">
|
||||
<label class="search-label-inline">課程日期(迄)</label>
|
||||
<input type="date" v-model="search.courseDate2" class="search-input">
|
||||
</div>
|
||||
<div class="search-field-inline w-3">
|
||||
<label class="search-label-inline">課程地點</label>
|
||||
<input type="text" v-model="search.courseLocation" class="search-input" placeholder="請輸入課程地點">
|
||||
</div>
|
||||
<div class="search-field-inline w-3">
|
||||
<label class="search-label-inline">結案</label>
|
||||
<select v-model="search.closed" class="search-input">
|
||||
<option value="">全部</option>
|
||||
<option value="true">是</option>
|
||||
<option value="false">否</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="search-field-inline w-3">
|
||||
<label class="search-label-inline">簽到退時間格式</label>
|
||||
<select v-model="search.timeFormat" class="search-input">
|
||||
<option value="datetime">年月日時分秒</option>
|
||||
<option value="time">時分</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="search-field-inline autocomplete-field w-6">
|
||||
<label class="search-label-inline">計畫</label>
|
||||
<div class="autocomplete-container" style="flex: 1;">
|
||||
<input
|
||||
type="text"
|
||||
v-model="search.projectName"
|
||||
@input="searchProjects"
|
||||
@focus="showProjectSuggestions = true"
|
||||
@blur="hideProjectSuggestions"
|
||||
class="search-input autocomplete-input"
|
||||
placeholder="請輸入計畫編號或名稱">
|
||||
<div class="autocomplete-dropdown" v-if="showProjectSuggestions && projectSuggestions.length > 0">
|
||||
<div
|
||||
v-for="suggestion in projectSuggestions"
|
||||
:key="suggestion.Value"
|
||||
class="autocomplete-item"
|
||||
@click="selectProject(suggestion)">
|
||||
<span class="autocomplete-value">{{ suggestion.Value }}</span>
|
||||
<span class="autocomplete-name">{{ suggestion.Name }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-actions">
|
||||
<button class="btn btn-secondary" @click="clearSearch">清除</button>
|
||||
<button class="btn btn-primary" @click="performSearch">搜尋</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 搜尋結果 -->
|
||||
<div class="result-panel">
|
||||
<table class="result-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-center">課程編號</th>
|
||||
<th class="text-center">課程名稱</th>
|
||||
<th class="text-center">課程日期</th>
|
||||
<th class="text-center">開始時間</th>
|
||||
<th class="text-center">結束時間</th>
|
||||
<th class="text-center">講師</th>
|
||||
<th class="text-center">課程地點</th>
|
||||
<th class="text-center">計畫</th>
|
||||
<%-- <th class="text-center">實到</th>
|
||||
<th class="text-center">應到</th>
|
||||
<th class="text-center">缺席</th>
|
||||
<th class="text-center">異常</th>
|
||||
<th class="text-center">現場</th>--%>
|
||||
<th class="text-center">結案</th>
|
||||
<th class="text-center">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-if="loading">
|
||||
<td colspan="10" class="empty-message">載入中...</td>
|
||||
</tr>
|
||||
<tr v-else-if="classes.length === 0">
|
||||
<td colspan="10" class="empty-message">查無資料</td>
|
||||
</tr>
|
||||
<tr v-else v-for="item in classes" :key="item.ID">
|
||||
<td class="text-center">{{ item.CourseCode }}</td>
|
||||
<td class="text-center">{{ item.CourseName }}</td>
|
||||
<td class="text-center">{{ $format.date(item.CourseDate) }}</td>
|
||||
<td class="text-center">{{ item.StartTime }}</td>
|
||||
<td class="text-center">{{ item.EndTime }}</td>
|
||||
<td class="text-center">{{ item.Teacher }}</td>
|
||||
<td class="text-center">{{ item.CourseLocation }}</td>
|
||||
<td class="text-center">{{ item.ProjectValue }} {{ item.ProjectName }}</td>
|
||||
<%-- <td class="text-center">{{ item.Actual }}</td>
|
||||
<td class="text-center">{{ item.Expected }}</td>
|
||||
<td class="text-center">{{ item.Absent }}</td>
|
||||
<td class="text-center">{{ item.Exception }}</td>
|
||||
<td class="text-center">{{ item.OnSite }}</td>--%>
|
||||
<td class="text-center">{{ item.Closed ? '是' : '否' }}</td>
|
||||
<td class="text-center">
|
||||
<button class="btn btn-primary btn-sm" @click="exportReport(item.ID)" :disabled="exporting">
|
||||
<span v-if="exporting && exportingId === item.ID">匯出中...</span>
|
||||
<span v-else>學員簽到表</span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- 分頁 -->
|
||||
<div class="pagination" v-if="totalPages > 1">
|
||||
<button class="btn btn-secondary btn-sm" @click="previousPage" :disabled="currentPage === 1">上一頁</button>
|
||||
<span class="pagination-info">第 {{ currentPage }} / {{ totalPages }} 頁,共 {{ totalCount }} 筆</span>
|
||||
<button class="btn btn-secondary btn-sm" @click="nextPage" :disabled="currentPage === totalPages">下一頁</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="<%= ResolveUrlWithSysVer("~/Scripts/ClassesReport.js") %>"></script>
|
||||
</asp:Content>
|
||||
Reference in New Issue
Block a user