diff --git a/public/quiz-results.html b/public/quiz-results.html index 3e5ddd1..7720c49 100644 --- a/public/quiz-results.html +++ b/public/quiz-results.html @@ -595,7 +595,14 @@ if (this.results.sessionStatus === 'report_generated') { // 报告已生成,按钮可点击 - this.showReportButton(); + reportBtn.textContent = '查看详细报告'; + reportBtn.disabled = false; + reportBtn.style.opacity = '1'; + reportBtn.style.cursor = 'pointer'; + reportBtn.onclick = () => { + // 获取报告ID并跳转到报告页面 + this.navigateToReport(); + }; } else { // 报告未生成,显示"报告生成中"且不可点击 reportBtn.textContent = '报告生成中'; @@ -606,15 +613,45 @@ } } + async navigateToReport() { + try { + // 首先尝试从 results 中获取报告ID + if (this.results.reportId) { + window.location.href = `/report.html?id=${this.results.reportId}`; + return; + } + + // 如果没有,则通过 API 获取报告列表 + const response = await fetch('/api/reports'); + const data = await response.json(); + + const report = data.reports.find(r => r.session_id === this.sessionId); + + if (report) { + window.location.href = `/report.html?id=${report.id}`; + } else { + // 如果找不到报告,显示提示信息 + alert('报告正在生成中,请稍后再试'); + // 刷新页面重新检查状态 + setTimeout(() => { + window.location.reload(); + }, 1000); + } + } catch (error) { + console.error('获取报告失败:', error); + alert('获取报告失败,请稍后再试'); + } + } + showReportButton() { const reportBtn = document.getElementById('checkReportBtn'); - reportBtn.style.display = 'inline-block'; reportBtn.textContent = '查看详细报告'; reportBtn.disabled = false; reportBtn.style.opacity = '1'; + reportBtn.style.cursor = 'pointer'; reportBtn.onclick = () => { - // 跳转到报告页面,使用 session_id 作为参数 - window.location.href = `/report.html?session_id=${this.sessionId}`; + // 获取报告ID并跳转到报告页面 + this.navigateToReport(); }; }