fix: 错误信息内联显示在结果面板内

This commit is contained in:
2026-07-16 07:05:54 +08:00
parent 5746564825
commit 8ea2dd38d7
+14 -1
View File
@@ -7,6 +7,7 @@
</div> </div>
<div class="drawer-body" v-if="gradingStore.currentResult"> <div class="drawer-body" v-if="gradingStore.currentResult">
<div class="error-message" v-if="errorMsg">{{ errorMsg }}</div>
<div class="question-nav" v-if="questions.length > 1"> <div class="question-nav" v-if="questions.length > 1">
<el-button size="small" @click="prevQuestion" :disabled="isGrading">上一题</el-button> <el-button size="small" @click="prevQuestion" :disabled="isGrading">上一题</el-button>
<span class="question-indicator">{{ currentIdx + 1 }} / {{ questions.length }}</span> <span class="question-indicator">{{ currentIdx + 1 }} / {{ questions.length }}</span>
@@ -88,6 +89,7 @@ const settingsStore = useSettingsStore()
const visible = ref(false) const visible = ref(false)
const isGrading = ref(false) const isGrading = ref(false)
const errorMsg = ref('')
const teacherScore = ref(0) const teacherScore = ref(0)
const teacherComment = ref('') const teacherComment = ref('')
const questions = ref<QuestionItem[]>([]) const questions = ref<QuestionItem[]>([])
@@ -133,6 +135,7 @@ function closeDrawer() {
async function gradeAt(idx: number) { async function gradeAt(idx: number) {
if (!gradingStore.currentImage) return if (!gradingStore.currentImage) return
isGrading.value = true isGrading.value = true
errorMsg.value = ''
try { try {
const q = questions.value[idx] const q = questions.value[idx]
const result = await window.electronAPI.ai.grade({ const result = await window.electronAPI.ai.grade({
@@ -159,7 +162,7 @@ async function gradeAt(idx: number) {
}) })
ElMessage.success(`${idx + 1} 题评分完成`) ElMessage.success(`${idx + 1} 题评分完成`)
} catch (err) { } catch (err) {
ElMessage.error('评分失败:' + (err as Error).message) errorMsg.value = (err as Error).message
} finally { } finally {
isGrading.value = false isGrading.value = false
} }
@@ -333,6 +336,16 @@ async function confirmScore() {
border-radius: 6px; border-radius: 6px;
white-space: pre-wrap; white-space: pre-wrap;
} }
.error-message {
background: #fef0f0;
color: #f56c6c;
border: 1px solid #fde2e2;
border-radius: 6px;
padding: 10px;
font-size: 13px;
line-height: 1.5;
margin-bottom: 12px;
}
.teacher-score-input { .teacher-score-input {
margin-top: 4px; margin-top: 4px;
} }