fix: handleSave 增加 try-catch & 深拷贝去代理后再 IPC
This commit is contained in:
@@ -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 => ({
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user