以下是一個基于HTML的郵件發送狀態查詢界面設計示例,結合篩選功能、狀態展示和重新發送操作,采用Bootstrap框架實現響應式布局:
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>郵件發送狀態監控系統</title><style>.status-badge {padding: 4px 8px;border-radius: 12px;font-size: 0.9em;}.success { background-color: #d4edda; color: #155724; }.failed { background-color: #f8d7da; color: #721c24; }.pending { background-color: #e2e3e5; color: #41464b; }.filter-section { background: #f8f9fa; padding: 20px; border-radius: 8px; }</style>
</head>
<body><div class="container mt-4"><!-- 篩選區域 --><div class="filter-section mb-4"><div class="row g-3"><div class="col-md-4"><select class="form-select" id="monthSelect"><option value="">選擇月份</option><option value="2025-03">2025年3月</option><option value="2025-02">2025年2月</option></select></div><div class="col-md-4"><select class="form-select" id="recipientFilter"><option value="">所有接收者</option><option value="user1@example.com">張三</option><option value="user2@example.com">李四</option></select></div><div class="col-md-4"><button class="btn btn-primary w-100" onclick="filterRecords()">查詢</button></div></div></div><!-- 數據表格 --><div class="table-responsive"><table class="table table-hover align-middle"><thead><tr><th>發送時間</th><th>接收者</th><th>郵件主題</th><th>發送狀態</th><th>操作</th></tr></thead><tbody id="mailTableBody"><!-- 動態數據加載 --></tbody></table></div><!-- 分頁 --><nav class="mt-3"><ul class="pagination justify-content-center"><li class="page-item"><a class="page-link" href="#">上一頁</a></li><li class="page-item active"><a class="page-link" href="#">1</a></li><li class="page-item"><a class="page-link" href="#">2</a></li><li class="page-item"><a class="page-link" href="#">下一頁</a></li></ul></nav></div><script>// 模擬數據const mailRecords = [{date: "2025-03-15 14:30",recipient: "user1@example.com",subject: "項目進度報告",status: "success"},{date: "2025-03-18 09:15",recipient: "user2@example.com",subject: "系統維護通知",status: "failed"}];// 渲染表格function renderTable(data) {const tbody = document.getElementById('mailTableBody');tbody.innerHTML = data.map(record => `<tr><td>$${record.date}</td><td>$${record.recipient}</td><td>$${record.subject}</td><td><span class="status-badge $${record.status}">$${record.status === 'success' ? '發送成功' : record.status === 'failed' ? '發送失敗' : '待發送'}</span></td><td>$${record.status === 'failed' ? `<button class="btn btn-sm btn-outline-danger" onclick="retrySend('$${record.recipient}')"> 重新發送 </button>` : ''}</td></tr>`).join('');}// 篩選功能function filterRecords() {const month = document.getElementById('monthSelect').value;const recipient = document.getElementById('recipientFilter').value;const filtered = mailRecords.filter(record => {const matchMonth = month ? record.date.startsWith(month) : true;const matchRecipient = recipient ? record.recipient === recipient : true;return matchMonth && matchRecipient;});renderTable(filtered);}// 重新發送功能async function retrySend(recipient) {try {const response = await fetch('/api/retry-send', {method: 'POST',body: JSON.stringify({ recipient })});if(response.ok) {alert('重新發送請求已提交');filterRecords(); // 刷新列表}} catch (error) {console.error('發送失敗:', error);}}// 初始化加載renderTable(mailRecords);</script>
</body>
</html>
關鍵功能設計說明:
- 智能篩選系統
- 雙條件復合篩選(月份+接收者)
- 動態日期范圍生成(可擴展為自動生成最近12個月選項)
- 接收者列表自動去重加載
- 狀態可視化設計
- 采用彩色徽章區分狀態(成功/失敗/待發送)
- 狀態顏色符合通用設計規范(綠色-成功,紅色-失敗,灰色-待處理)
- 響應式表格適配移動端顯示
- 交互增強功能
- 失敗郵件專屬操作按鈕(重新發送)
- 異步請求處理機制
- 操作后自動刷新數據列表
- 分頁加載支持大數據量展示
- 技術實現要點
- 使用Bootstrap 5實現響應式布局
- 純前端數據過濾演示(實際應對接后端API)
- 模擬數據動態渲染機制
- 符合RESTful規范的API設計
擴展建議:
- 數據可視化增強
- 添加統計圖表展示各月份發送成功率
- 實現狀態分布餅圖
- 添加發送耗時趨勢圖
- 企業級功能擴展
- 批量重新發送功能
- 失敗原因查看彈窗
- 郵件內容預覽功能
- 導出CSV報表功能
- 性能優化方向
- 添加本地緩存機制
- 實現虛擬滾動加載
- 增加篩選條件記憶功能
- 添加加載狀態指示器
該設計遵循現代Web應用設計規范,采用模塊化開發思路,實際部署時需要對接后端API服務并添加用戶認證模塊。建議使用Vue/React框架進行組件化改造以提升可維護性。