完整呈現列印功能

This commit is contained in:
2025-10-12 03:59:04 +08:00
parent 18dc227e40
commit 22291ca310

View File

@@ -434,6 +434,14 @@ function AdminResultDetailContent() {
let creativeTest = '' let creativeTest = ''
let recommendations = ['繼續保持現有的學習節奏,持續提升各方面能力'] // 默認建議 let recommendations = ['繼續保持現有的學習節奏,持續提升各方面能力'] // 默認建議
// 定義默認變數,避免作用域問題
let logicScore = 0
let creativityScore = 0
let balanceScore = 0
let logicStatus = '需要加強'
let creativityStatus = '需要提升'
let balanceStatus = '失衡嚴重'
if (result.type === 'combined' && result.details) { if (result.type === 'combined' && result.details) {
// 調試:輸出數據結構 // 調試:輸出數據結構
console.log('Print Data Debug:', { console.log('Print Data Debug:', {
@@ -470,11 +478,30 @@ function AdminResultDetailContent() {
const logicLevelData = getScoreLevel(result.details.logicScore || 0, 'logic') const logicLevelData = getScoreLevel(result.details.logicScore || 0, 'logic')
const creativeLevelData = getScoreLevel(result.details.creativeScore || 0, 'creative') const creativeLevelData = getScoreLevel(result.details.creativeScore || 0, 'creative')
// 使用與 CombinedAnalysis 組件相同的邏輯
logicScore = result.details.logicScore || 0
creativityScore = result.details.creativeScore || 0
balanceScore = ((logicScore + creativityScore) / 2)
// 獲取能力狀態(與 CombinedAnalysis 組件相同)
const getAbilityStatus = (score: number) => {
if (score >= 80) return "表現優秀"
if (score >= 60) return "表現良好"
if (score >= 40) return "需要提升"
return "需要加強"
}
// 獲取平衡狀態(與 CombinedAnalysis 組件相同)
const getBalanceStatus = (score: number) => {
if (score >= 80) return "非常均衡"
if (score >= 60) return "相對均衡"
if (score >= 40) return "需要平衡"
return "失衡嚴重"
}
// 生成發展建議(與 CombinedAnalysis 組件相同的邏輯) // 生成發展建議(與 CombinedAnalysis 組件相同的邏輯)
const generateRecommendations = () => { const generateRecommendations = () => {
const recommendations = [] const recommendations = []
const logicScore = result.details.logicScore || 0
const creativityScore = result.details.creativeScore || 0
if (logicScore < 70) { if (logicScore < 70) {
recommendations.push("建議加強邏輯思維訓練,多做推理題和數學題") recommendations.push("建議加強邏輯思維訓練,多做推理題和數學題")
@@ -503,7 +530,10 @@ function AdminResultDetailContent() {
return recommendations.length > 0 ? recommendations : ["繼續保持現有的學習節奏,持續提升各方面能力"] return recommendations.length > 0 ? recommendations : ["繼續保持現有的學習節奏,持續提升各方面能力"]
} }
const recommendations = generateRecommendations() recommendations = generateRecommendations()
logicStatus = getAbilityStatus(logicScore)
creativityStatus = getAbilityStatus(creativityScore)
balanceStatus = getBalanceStatus(balanceScore)
console.log('Generated recommendations:', recommendations) console.log('Generated recommendations:', recommendations)
@@ -599,11 +629,15 @@ function AdminResultDetailContent() {
body { body {
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;
margin: 0; margin: 0;
padding: 0.5rem; padding: 0.8rem;
background: #f8fafc; background: #f8fafc;
color: #0f172a; color: #0f172a;
line-height: 1.4; line-height: 1.5;
font-size: 0.75rem; font-size: 0.8rem;
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: space-between;
} }
.header { .header {
text-align: center; text-align: center;
@@ -1052,10 +1086,10 @@ function AdminResultDetailContent() {
</svg> </svg>
</div> </div>
<div class="ability-title">邏輯思維</div> <div class="ability-title">邏輯思維</div>
<div class="ability-score logic">${result.details.logicScore || 0}</div> <div class="ability-score logic">${logicScore}</div>
<div class="ability-status">需要加強</div> <div class="ability-status">${logicStatus}</div>
<div class="progress-bar"> <div class="progress-bar">
<div class="progress-fill" style="width: ${Math.min((result.details.logicScore || 0) / 100 * 100, 100)}%"></div> <div class="progress-fill" style="width: ${Math.min(logicScore, 100)}%"></div>
</div> </div>
</div> </div>
<div class="ability-card"> <div class="ability-card">
@@ -1065,10 +1099,10 @@ function AdminResultDetailContent() {
</svg> </svg>
</div> </div>
<div class="ability-title">創意能力</div> <div class="ability-title">創意能力</div>
<div class="ability-score creative">${result.details.creativeScore || 0}</div> <div class="ability-score creative">${creativityScore}</div>
<div class="ability-status">需要提升</div> <div class="ability-status">${creativityStatus}</div>
<div class="progress-bar"> <div class="progress-bar">
<div class="progress-fill" style="width: ${Math.min((result.details.creativeScore || 0) / 100 * 100, 100)}%"></div> <div class="progress-fill" style="width: ${Math.min(creativityScore, 100)}%"></div>
</div> </div>
</div> </div>
<div class="ability-card"> <div class="ability-card">
@@ -1078,10 +1112,10 @@ function AdminResultDetailContent() {
</svg> </svg>
</div> </div>
<div class="ability-title">能力平衡</div> <div class="ability-title">能力平衡</div>
<div class="ability-score balance">${Math.round(((result.details.logicScore || 0) + (result.details.creativeScore || 0)) / 2)}</div> <div class="ability-score balance">${Math.round(balanceScore)}</div>
<div class="ability-status">相對均衡</div> <div class="ability-status">${balanceStatus}</div>
<div class="progress-bar"> <div class="progress-bar">
<div class="progress-fill" style="width: ${Math.min(((result.details.logicScore || 0) + (result.details.creativeScore || 0)) / 2 / 100 * 100, 100)}%"></div> <div class="progress-fill" style="width: ${Math.min(balanceScore, 100)}%"></div>
</div> </div>
</div> </div>
</div> </div>