// 加载生成配置列表 async function loadGenerateConfigs() { try { const response = await fetch('/api/config'); const result = await response.json(); if (result.success) { const container = document.getElementById('generate-config-list'); container.innerHTML = result.data.map(c => ` `).join(''); } } catch (error) { console.error('加载配置失败:', error); } } // 全选/取消全选配置 function toggleSelectAllConfigs() { const checkboxes = document.querySelectorAll('.config-checkbox'); if (checkboxes.length === 0) return; // 检查是否所有复选框都被选中 const allChecked = Array.from(checkboxes).every(cb => cb.checked); // 切换所有复选框的状态 checkboxes.forEach(cb => { cb.checked = !allChecked; }); } // 设置预设时间 function setPresetTime(preset) { const now = new Date(); let start, end; if (preset === 'yesterday') { end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 8, 0, 0); start = new Date(end.getTime() - 24 * 60 * 60 * 1000); } else if (preset === 'last3days') { end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 8, 0, 0); start = new Date(end.getTime() - 3 * 24 * 60 * 60 * 1000); } else if (preset === 'last7days') { end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 8, 0, 0); start = new Date(end.getTime() - 7 * 24 * 60 * 60 * 1000); } document.getElementById('start-time').value = formatDateTimeLocal(start); document.getElementById('end-time').value = formatDateTimeLocal(end); } // 格式化日期时间(用于输入框) function formatDateTimeLocal(date) { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); return `${year}-${month}-${day}T${hours}:${minutes}`; } // 格式化日期时间为数字格式(用于显示) function formatDateTimeDisplay(dateTimeStr) { if (!dateTimeStr) return '-'; // 如果是字符串,直接返回(已经是数字格式) if (typeof dateTimeStr === 'string') { // 如果是 ISO 格式或其他格式,转换为 YYYY-MM-DD HH:MM:SS const date = new Date(dateTimeStr); if (!isNaN(date.getTime())) { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0'); return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; } return dateTimeStr; } return String(dateTimeStr); } // 格式化日期为数字格式(只显示日期,用于显示) function formatDateDisplay(dateStr) { if (!dateStr) return '-'; const date = new Date(dateStr); if (!isNaN(date.getTime())) { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } return String(dateStr); } // 生成日报(支持多选) async function generateReport() { const checkboxes = document.querySelectorAll('.config-checkbox:checked'); const startTime = document.getElementById('start-time').value; const endTime = document.getElementById('end-time').value; if (checkboxes.length === 0) { alert('请至少选择一个配置'); return; } if (!startTime || !endTime) { alert('请选择时间范围'); return; } const resultDiv = document.getElementById('generate-result'); resultDiv.innerHTML = '