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

330 lines
5.3 KiB
CSS
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.
/* ========================================
* 匯入參加人員頁面專屬樣式
*
* 共同樣式已移至 Site.css
* - 搜尋面板 (.search-panel, .search-row, .search-field-inline, .search-label-inline, .search-input)
* ======================================== */
/* 上傳面板 */
.upload-panel {
display: flex;
flex-direction: column;
gap: var(--spacing-lg);
}
/* 上傳區域 */
.upload-area {
border: 2px dashed #ddd;
border-radius: 8px;
padding: var(--spacing-lg);
text-align: center;
background: #f9f9f9;
transition: all 0.3s ease;
}
.upload-area.dragging {
border-color: #0066cc;
background: #f0f7ff;
}
.upload-area:hover {
border-color: #0066cc;
}
/* 上傳文字 */
.upload-text {
display: block;
color: #999;
font-size: 14px;
margin-top: 8px;
}
/* 檔案資訊 */
.file-info {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
margin-top: var(--spacing-md);
padding: 12px;
background: white;
border: 1px solid #ddd;
border-radius: 4px;
}
.file-name {
font-weight: 500;
color: #333;
}
.file-size {
color: #999;
font-size: 12px;
}
/* 各步驟區域 */
.upload-section,
.preview-section,
.import-section,
.result-section {
background: white;
border: 1px solid #ddd;
border-radius: 8px;
padding: var(--spacing-lg);
}
/* 區域標題 */
.section-title {
margin: 0 0 var(--spacing-md) 0;
font-size: 16px;
font-weight: 600;
color: #333;
}
/* 驗證摘要 */
.validation-summary {
margin-bottom: var(--spacing-md);
}
.error-box {
background: #fff5f5;
border: 1px solid #ffdbdb;
border-radius: 4px;
padding: var(--spacing-md);
}
.error-title {
color: #d32f2f;
font-weight: 600;
margin-bottom: 8px;
}
.error-list {
max-height: 200px;
overflow-y: auto;
}
.error-item {
color: #d32f2f;
font-size: 13px;
margin-bottom: 4px;
padding-left: 20px;
position: relative;
}
.error-item::before {
content: '\2717 '; /* ✗ */
position: absolute;
left: 0;
color: #d32f2f;
}
/* 預覽資訊 */
.preview-info {
background: #f0f7ff;
border: 1px solid #d4e4f9;
border-radius: 4px;
padding: 12px;
margin-bottom: var(--spacing-md);
color: #0066cc;
font-size: 14px;
font-weight: 500;
}
/* 預覽表格 */
.preview-table-wrapper {
overflow-x: auto;
max-height: 500px;
overflow-y: auto;
border: 1px solid #ddd;
border-radius: 4px;
}
.preview-table {
width: 100%;
border-collapse: collapse;
margin-top: 0;
border: none;
font-size: 14px;
}
.preview-table thead {
background: #f5f5f5;
position: sticky;
top: 0;
z-index: 10;
}
.preview-table th,
.preview-table td {
padding: 10px 12px;
text-align: left;
border: 1px solid #ddd;
}
.preview-table th {
font-weight: 600;
color: #333;
}
.preview-table tbody tr:hover {
background: #f9f9f9;
}
.preview-table tbody tr.error-row {
background: #fff5f5;
}
.preview-table .text-center {
text-align: center;
}
/* 狀態徽章 */
.status-badge {
display: inline-block;
padding: 2px 8px;
border-radius: 3px;
font-size: 13px;
font-weight: 600;
}
.status-badge.ok {
background: #e6f7e6;
color: #2e7d32;
}
.status-badge.error {
background: #ffebee;
color: #d32f2f;
}
/* 匯入選項 */
.import-options {
background: #f9f9f9;
border: 1px solid #e0e0e0;
border-radius: 4px;
padding: var(--spacing-md);
margin-bottom: var(--spacing-md);
}
.checkbox-label {
display: flex;
align-items: center;
gap: 8px;
cursor: pointer;
font-size: 14px;
color: #333;
user-select: none;
}
.checkbox-label input[type="checkbox"] {
cursor: pointer;
width: 18px;
height: 18px;
accent-color: #0066cc;
}
.checkbox-label input[type="checkbox"]:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.checkbox-label:hover {
color: #0066cc;
}
/* 匯入動作 */
.import-section {
display: flex;
gap: var(--spacing-md);
flex-wrap: wrap;
}
.import-section .btn {
flex: 1;
min-width: 150px;
}
/* 結果框 */
.result-section {
margin-top: var(--spacing-lg);
}
.result-box {
border-left: 4px solid #ddd;
padding: var(--spacing-md);
border-radius: 4px;
}
.result-box.success {
background: #f1f8f4;
border-color: #4caf50;
}
.result-box.error {
background: #fff5f5;
border-color: #d32f2f;
}
.result-title {
font-weight: 600;
font-size: 16px;
margin-bottom: 8px;
}
.result-box.success .result-title {
color: #2e7d32;
}
.result-box.error .result-title {
color: #d32f2f;
}
.result-message {
color: #666;
font-size: 14px;
margin-bottom: 8px;
}
.result-details {
font-size: 13px;
color: #999;
}
.result-details span {
margin-right: 16px;
}
/* 跳過記錄部分 */
.skipped-records {
margin-top: var(--spacing-md);
padding-top: var(--spacing-md);
border-top: 1px solid #ddd;
}
.skipped-title {
color: #f57c00;
font-weight: 600;
margin-bottom: 8px;
font-size: 14px;
}
.skipped-list {
max-height: 150px;
overflow-y: auto;
}
.skipped-item {
color: #f57c00;
font-size: 13px;
margin-bottom: 4px;
padding-left: 20px;
position: relative;
}
.skipped-item::before {
content: '⊘ ';
position: absolute;
left: 0;
}