From aa5f9b29994942d28e2b3e77bf3f1b58cbb59aa6 Mon Sep 17 00:00:00 2001 From: brianling Date: Thu, 16 Jul 2026 06:32:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20handleSave=20=E5=A2=9E=E5=8A=A0=20try-ca?= =?UTF-8?q?tch=20&=20=E6=B7=B1=E6=8B=B7=E8=B4=9D=E5=8E=BB=E4=BB=A3?= =?UTF-8?q?=E7=90=86=E5=90=8E=E5=86=8D=20IPC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/main/ipc.ts | 2 ++ src/components/RubricEditor.vue | 18 +++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/electron/main/ipc.ts b/electron/main/ipc.ts index 0fb10a7..b72bcc7 100644 --- a/electron/main/ipc.ts +++ b/electron/main/ipc.ts @@ -255,6 +255,7 @@ export function setupIpc(win: BrowserWindow): void { ipcMain.handle('rubric:storeData', (_event, data: any) => { const d = getDb() const questions = data?.questions || [] + log.info(`rubric:storeData: ${questions.length} questions`, JSON.stringify(questions.map((q: any) => ({ title: q.questionTitle, rubricLen: q.rubric?.length })))) if (questions.length === 0) return d.prepare('DELETE FROM rubric').run() const insert = d.prepare('INSERT INTO rubric (question_title, max_score, reference_answer, rubric, sort_order) VALUES (?, ?, ?, ?, ?)') @@ -267,6 +268,7 @@ export function setupIpc(win: BrowserWindow): void { ipcMain.handle('rubric:getData', () => { const d = getDb() const rows: any[] = d.prepare('SELECT * FROM rubric ORDER BY sort_order').all() + log.info(`rubric:getData: ${rows.length} rows`) if (rows.length) { return { questions: rows.map(r => ({ diff --git a/src/components/RubricEditor.vue b/src/components/RubricEditor.vue index 6c89756..af7946c 100644 --- a/src/components/RubricEditor.vue +++ b/src/components/RubricEditor.vue @@ -84,13 +84,17 @@ function removeQuestion(idx: number) { } async function handleSave() { - gradingStore.setQuestions(JSON.parse(JSON.stringify(questions.value))) - await window.electronAPI?.rubric.storeData({ - questions: questions.value, - currentIndex: 0 - }) - ElMessage.success('评分标准已应用') - handleClose() + try { + gradingStore.setQuestions(JSON.parse(JSON.stringify(questions.value))) + await window.electronAPI?.rubric.storeData({ + questions: JSON.parse(JSON.stringify(questions.value)), + currentIndex: 0 + }) + ElMessage.success('评分标准已应用') + handleClose() + } catch (err) { + ElMessage.error('保存失败:' + (err as Error).message) + } } function handleClose() {