fix: handleSave 增加 try-catch & 深拷贝去代理后再 IPC

This commit is contained in:
2026-07-16 06:32:14 +08:00
parent daade6ba91
commit aa5f9b2999
2 changed files with 13 additions and 7 deletions
+2
View File
@@ -255,6 +255,7 @@ export function setupIpc(win: BrowserWindow): void {
ipcMain.handle('rubric:storeData', (_event, data: any) => { ipcMain.handle('rubric:storeData', (_event, data: any) => {
const d = getDb() const d = getDb()
const questions = data?.questions || [] 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 if (questions.length === 0) return
d.prepare('DELETE FROM rubric').run() d.prepare('DELETE FROM rubric').run()
const insert = d.prepare('INSERT INTO rubric (question_title, max_score, reference_answer, rubric, sort_order) VALUES (?, ?, ?, ?, ?)') 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', () => { ipcMain.handle('rubric:getData', () => {
const d = getDb() const d = getDb()
const rows: any[] = d.prepare('SELECT * FROM rubric ORDER BY sort_order').all() const rows: any[] = d.prepare('SELECT * FROM rubric ORDER BY sort_order').all()
log.info(`rubric:getData: ${rows.length} rows`)
if (rows.length) { if (rows.length) {
return { return {
questions: rows.map(r => ({ questions: rows.map(r => ({
+11 -7
View File
@@ -84,13 +84,17 @@ function removeQuestion(idx: number) {
} }
async function handleSave() { async function handleSave() {
gradingStore.setQuestions(JSON.parse(JSON.stringify(questions.value))) try {
await window.electronAPI?.rubric.storeData({ gradingStore.setQuestions(JSON.parse(JSON.stringify(questions.value)))
questions: questions.value, await window.electronAPI?.rubric.storeData({
currentIndex: 0 questions: JSON.parse(JSON.stringify(questions.value)),
}) currentIndex: 0
ElMessage.success('评分标准已应用') })
handleClose() ElMessage.success('评分标准已应用')
handleClose()
} catch (err) {
ElMessage.error('保存失败:' + (err as Error).message)
}
} }
function handleClose() { function handleClose() {