From 0f400c7467043aca77d3b91cf3dc9620e438acc4 Mon Sep 17 00:00:00 2001 From: wangzhongjie Date: Wed, 29 Oct 2025 11:57:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BF=87=E7=A8=8B=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/pages/Judge.ets | 1 + .../ets/pages/Judge/BaseJudgeBussines.ets | 44 ++++++++++++------- entry/src/main/ets/workers/Log.ets | 1 + 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/entry/src/main/ets/pages/Judge.ets b/entry/src/main/ets/pages/Judge.ets index 7a76c0c..1156d14 100644 --- a/entry/src/main/ets/pages/Judge.ets +++ b/entry/src/main/ets/pages/Judge.ets @@ -174,6 +174,7 @@ export struct JudgePage { builder: ConfirmDialog({ text: "确认结束考试?", onConfirm: async () => { + dConsole.log(JudgeTag, "点击确认结束") if (this.isErrorMsgEnd) { dConsole.log(JudgeTag, "router back1") router.back() diff --git a/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets b/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets index d99b995..e533ada 100644 --- a/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets +++ b/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets @@ -282,6 +282,7 @@ export class BaseJudge { if (!judgeUI.singlePlay && that.isManual && !judgeUI.isAllProjectsEnd && judgeUI.totalScore >= judgeUI.passingScore) { that.avPlayer?.playAudio(['voice/empty.mp3'], true, () => { this.isUdpEnd = true + dConsole.log(JudgeTag, "考试结束自动退出1") router.back(); }) return @@ -309,22 +310,27 @@ export class BaseJudge { } catch (e) { console.info(JudgeTag, JSON.stringify(e)) } - TheExamIsOver(judgeUI, that, async (res: WR) => { - dConsole.log(JudgeTag, ExamProcessDataTag, "考试结束接口完成", res) - const code = res.code!.toString() - if (code !== "1") { - that?.avPlayer?.playAudio(['voice/监管失败.mp3']) - judgeUI.errorMsg = decodeURIComponent(res?.message || "") - - if (code.toString() === "2300028" || code.toString() === "2300007") { - judgeUI.errorMsg = '当前的考试过程信息监管审核未通过,程序将退出!' + if (judgeUI.singlePlay) { + // 单机结束 + await this.endExam(judgeUI, that) + } else { + TheExamIsOver(judgeUI, that, async (res: WR) => { + dConsole.log(JudgeTag, ExamProcessDataTag, "考试结束接口完成", res) + const code = res.code!.toString() + if (code !== "1") { + that?.avPlayer?.playAudio(['voice/监管失败.mp3']) + judgeUI.errorMsg = decodeURIComponent(res?.message || "") + if (code.toString() === "2300028" || code.toString() === "2300007") { + judgeUI.errorMsg = '当前的考试过程信息监管审核未通过,程序将退出!' + } + judgeUI.generateExamRecordsDialogController.close(); + return + } else { + await this.endExam(judgeUI, that) } - judgeUI.generateExamRecordsDialogController.close(); - return - } else { - await this.endExam(judgeUI, that) - } - }) + }) + } + }) } @@ -412,6 +418,7 @@ export class BaseJudge { if (judgeUI.kfArr.length - 1 === index) { that.avPlayer?.playAudio([`voice/${kf.markcatalog}.mp3`, voiceURL], false, () => { this.isUdpEnd = true + dConsole.log(JudgeTag, "考试结束自动退出2") router.back(); }) throw new Error('End Loop') @@ -420,6 +427,7 @@ export class BaseJudge { } else { that.avPlayer?.playAudio([`voice/${kf.markcatalog}.mp3`, voiceURL], false, () => { this.isUdpEnd = true + dConsole.log(JudgeTag, "考试结束自动退出3") router.back(); }) throw new Error('End Loop') @@ -433,6 +441,7 @@ export class BaseJudge { that.avPlayer?.playAudio([voiceURL], true, () => { setTimeout(() => { this.isUdpEnd = true + dConsole.log(JudgeTag, "考试结束自动退出5") router.back(); }, param302 === "8" ? 3000 : 0) }) @@ -761,9 +770,12 @@ export class BaseJudge { const passingScore = Number(judgeUI.passingScore) const jl = judgeUI.jl if (that.isExamEnd) { + dConsole.log("JudgeTag", "已经结束考试") return } if (isManual) { + dConsole.log(JudgeTag, '收到远程结束考试消息5') + judgeUI.generateExamRecordsDialogController.close() // 考试不合格 await examJudgeEndExam() that.isExamEnd = true @@ -772,7 +784,7 @@ export class BaseJudge { const param302: number = Reflect.get(judgeConfigObj, '302') const param342: number = Reflect.get(judgeConfigObj, '342') const param512: number[] = (Reflect.get(judgeConfigObj, '512') || '').split(','); - + dConsole.log(JudgeTag, '收到远程结束考试消息4') //单机模式 if (singlePlay) { dConsole.info(JudgeTag + ' 单机模式结束 => ', isAllProjectsEnd) diff --git a/entry/src/main/ets/workers/Log.ets b/entry/src/main/ets/workers/Log.ets index 8ba1511..7ec5bf2 100644 --- a/entry/src/main/ets/workers/Log.ets +++ b/entry/src/main/ets/workers/Log.ets @@ -119,6 +119,7 @@ function CloseProcessData() { fileFdArr.forEach((item: number) => { fs.closeSync(item) }) + fileFdArr = [] } }