From 7645ab8c14eee6e5499b949f616c5aedb2a8d54b Mon Sep 17 00:00:00 2001 From: lixiao <932184220@qq.com> Date: Tue, 13 May 2025 18:06:03 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/pages/Index.ets | 7 +- entry/src/main/ets/pages/UserInfo.ets | 145 +++++++----- entry/src/main/ets/pages/judgeSDK/judge.ts | 255 +++++++++++---------- 3 files changed, 218 insertions(+), 189 deletions(-) diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index a6959ca7..a46b48b9 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -134,10 +134,13 @@ struct Index { }, router.RouterMode.Single) } }) + }).finally(() => { + this.loading = false }); - } - }) + }).finally(() => { + this.loading = false + }); } async heartMsg() { diff --git a/entry/src/main/ets/pages/UserInfo.ets b/entry/src/main/ets/pages/UserInfo.ets index 3dcee346..ac13ecd5 100644 --- a/entry/src/main/ets/pages/UserInfo.ets +++ b/entry/src/main/ets/pages/UserInfo.ets @@ -884,14 +884,25 @@ struct UserInfo { const {carId,examinationRoomId} = carInfo; let examItems = { getExaminationItemRsp: { body: { ykxx: '', jdxx: '' } } }; if (!globalThis.singlePlay) { - //获取已考项目 - // @ts-ignore - examItems = await getExaminationItem({ - time: getCurrentTime(), - carId, - lsh: this.currentUser.lsh || '', - examinationRoomId - }); + try { + + //获取已考项目 + // @ts-ignore + examItems = await getExaminationItem({ + time: getCurrentTime(), + carId, + lsh: this.currentUser.lsh || '', + examinationRoomId + }); + } catch (e) { + promptAction.showToast({ + message: "获取考试信息失败,请重试", + duration: 3000 + }) + this.isLoadingPopupVisible = false + this.isExamStart = false + return + } } this.currentUser.id = '1' const avPlayer = this.avPlayer; @@ -899,66 +910,74 @@ struct UserInfo { avPlayer.playAudio([`voice/监管通信中.mp3`], false, async () => { console.info('surenjun', '播放结束开始考试接口调用') - const {code,keystr,message} = await this.beginExam() || {}; - console.info('surenjun', '开始考试接口调用结束') - // console.info('surenjun',code +'') - //@ts-ignore TODO code转换 + try { + const {code,keystr,message} = await this.beginExam() || {}; + console.info('surenjun', '开始考试接口调用结束') - if (code != 1) { - avPlayer.playAudio([code == -200 ? 'voice/photo_error.mp3' : 'voice/监管审核未通过.mp3']); + if (code != 1) { + avPlayer.playAudio([code == -200 ? 'voice/photo_error.mp3' : 'voice/监管审核未通过.mp3']); + this.isLoadingPopupVisible = false + this.isExamStart = false + promptAction.showToast({ + message, + duration: 4000 + }) + return + } + this.currentUser.id = '0' + await upDateTableByArray('USER', [this.currentUser]) + this.stepFlag = false + this.isLoadingPopupVisible = false + let kStringArr = decodeURIComponent(keystr || '').split(",").filter(item => item) + console.log("lixiao kStringArr", JSON.stringify(kStringArr)) + await this.getExamMode(kStringArr) + console.log("lixiao mode", this.mode) + let score = Number(this.currentUser.jdxx?.split("^")[0]) + let kfxm = this.currentUser.jdxx?.split("^")[1] + if (this.mode === 2 && !this.currentUser.jdxx) { + promptAction.showToast({ + message: "当前尚未进行白考,无法开始夜考!" + }) + this.updateTimeLimit = false + this.stopDeviceById() + this.stepFlag = false + this.ksksLimit = false + return + } else if (this.mode === 1 && this.currentUser.jdxx) { + promptAction.showToast({ + message: "当前尚未进入夜考时间,无法开始夜考!" + }) + this.updateTimeLimit = false + this.stopDeviceById() + this.stepFlag = false + this.ksksLimit = false + return + } + router.pushUrl({ + url: 'pages/Judge', + params: { + examItems: [examItems?.getExaminationItemRsp?.body?.ykxx, kfxm], + sczb: Number(this.isBoardPrePareSetPopupOpen), + kfdm: this.sczbkf, + mode: this.mode, + //真实监管项目 + kString: decodeURIComponent(keystr || ''), + // 白考分数 + score + } + }, router.RouterMode.Single); + this.updateTimeLimit = false + this.stopDeviceById() + this.stepFlag = false + } catch (e) { + promptAction.showToast({ + message: "监管审核失败,请重试", + duration: 3000 + }) this.isLoadingPopupVisible = false this.isExamStart = false - promptAction.showToast({ - message, - duration: 4000 - }) return } - this.currentUser.id = '0' - await upDateTableByArray('USER', [this.currentUser]) - this.stepFlag = false - this.isLoadingPopupVisible = false - let kStringArr = decodeURIComponent(keystr || '').split(",").filter(item => item) - console.log("lixiao kStringArr", JSON.stringify(kStringArr)) - await this.getExamMode(kStringArr) - console.log("lixiao mode", this.mode) - let score = Number(this.currentUser.jdxx?.split("^")[0]) - let kfxm = this.currentUser.jdxx?.split("^")[1] - if (this.mode === 2 && !this.currentUser.jdxx) { - promptAction.showToast({ - message: "当前尚未进行白考,无法开始夜考!" - }) - this.updateTimeLimit = false - this.stopDeviceById() - this.stepFlag = false - this.ksksLimit = false - return - } else if (this.mode === 1 && this.currentUser.jdxx) { - promptAction.showToast({ - message: "当前尚未进入夜考时间,无法开始夜考!" - }) - this.updateTimeLimit = false - this.stopDeviceById() - this.stepFlag = false - this.ksksLimit = false - return - } - router.pushUrl({ - url: 'pages/Judge', - params: { - examItems: [examItems?.getExaminationItemRsp?.body?.ykxx, kfxm], - sczb: Number(this.isBoardPrePareSetPopupOpen), - kfdm: this.sczbkf, - mode: this.mode, - //真实监管项目 - kString: decodeURIComponent(keystr || ''), - // 白考分数 - score - } - }, router.RouterMode.Single); - this.updateTimeLimit = false - this.stopDeviceById() - this.stepFlag = false }) } diff --git a/entry/src/main/ets/pages/judgeSDK/judge.ts b/entry/src/main/ets/pages/judgeSDK/judge.ts index 34f21673..6fd27706 100644 --- a/entry/src/main/ets/pages/judgeSDK/judge.ts +++ b/entry/src/main/ets/pages/judgeSDK/judge.ts @@ -1320,122 +1320,132 @@ export default class Judge { const {lsh,idCard,serialNumber,kssycs,totalScore,judgeConfigObj,isAllProjectsEnd,passingScore} = judgeUI //TODO 断网考试结束补传 // await uploadDisConnectData(); - const time = await getCurrentTime(); - const photoBase64 = await getPhoto(); - const {d1,d2,d3,d4,d5} = ksjs - const data = { - xtlb: '17', jkxlh: serialNumber, jkid: '17C56', - drvexam: { - lsh, - kchp: encodeURI(plateNo), - kskm: examSubject, - sfzmhm: idCard, - //@ts-ignore - zp: photoBase64, - jssj: time, - kscj: (totalScore * 1) > 0 ? totalScore : 0, - kslc: Math.ceil(((ksjs?.qjjl + ksjs?.dcjl) || 0) / 100), - // 1,22;2,560;3,128;4,0;5,0; - dwlc: [d1, d2, d3, d4, d5].map((d, index) => `${index + 1},${Math.floor(d / 100)}`).join(';'), + try { + const time = await getCurrentTime(); + const photoBase64 = await getPhoto(); + const {d1,d2,d3,d4,d5} = ksjs + const data = { + xtlb: '17', jkxlh: serialNumber, jkid: '17C56', + drvexam: { + lsh, + kchp: encodeURI(plateNo), + kskm: examSubject, + sfzmhm: idCard, + //@ts-ignore + zp: photoBase64, + jssj: time, + kscj: (totalScore * 1) > 0 ? totalScore : 0, + kslc: Math.ceil(((ksjs?.qjjl + ksjs?.dcjl) || 0) / 100), + // 1,22;2,560;3,128;4,0;5,0; + dwlc: [d1, d2, d3, d4, d5].map((d, index) => `${index + 1},${Math.floor(d / 100)}`).join(';'), + } } - } - let backTimeOut = setTimeout(() => { - router.back() - }, 90 * 1000) - const {code,keystr,message} = await this.sendWriteObjectOut(data, filePath); - promptWxCode('17C56', code) + let backTimeOut = setTimeout(() => { + router.back() + }, 90 * 1000) + const {code,keystr,message} = await this.sendWriteObjectOut(data, filePath); + promptWxCode('17C56', code) - if (code != 1) { - avPlayer.playAudio(['voice/监管失败.mp3']) - this.judgeUI.errorMsg = decodeURIComponent(message) + if (code != 1) { + avPlayer.playAudio(['voice/监管失败.mp3']) + this.judgeUI.errorMsg = decodeURIComponent(message) - if (code == 2300028 || code == 2300007) { - this.judgeUI.errorMsg = '当前的考试过程信息监管审核未通过,程序将退出!' + if (code == 2300028 || code == 2300007) { + this.judgeUI.errorMsg = '当前的考试过程信息监管审核未通过,程序将退出!' + } + this.isUdpEnd = true; + closeAllFiles() + this.judgeUI.loadingPopupVisible = false; + return } - this.isUdpEnd = true; - closeAllFiles() - this.judgeUI.loadingPopupVisible = false; - return - } - console.info(judgeTag, '考试结束 end') - const param302 = judgeConfigObj['302']; - judgeUI.loadingPopupVisible = true; - let currentKssycs = 0; - let voiceURL = '' - if (examSubject == 2) { - if (isAllProjectsEnd) { - voiceURL = (totalScore < passingScore ? `voice/unqualified_${kssycs == 1 ? 'one' : 'two'}.wav` : 'voice/qualified.mp3') - } else { - voiceURL = `voice/unqualified_${kssycs == 1 ? 'one' : 'two'}.wav` - currentKssycs = kssycs == 1 ? 0 : 1 - } - switch (voiceURL) { - case 'voice/unqualified_one.wav': - currentKssycs = 0; - break; + console.info(judgeTag, '考试结束 end') + const param302 = judgeConfigObj['302']; + judgeUI.loadingPopupVisible = true; + let currentKssycs = 0; + let voiceURL = '' + if (examSubject == 2) { + if (isAllProjectsEnd) { + voiceURL = (totalScore < passingScore ? `voice/unqualified_${kssycs == 1 ? 'one' : 'two'}.wav` : 'voice/qualified.mp3') + } else { + voiceURL = `voice/unqualified_${kssycs == 1 ? 'one' : 'two'}.wav` + currentKssycs = kssycs == 1 ? 0 : 1 + } + switch (voiceURL) { + case 'voice/unqualified_one.wav': + currentKssycs = 0; + break; - case 'voice/unqualified_two.wav': - currentKssycs = 1; - break; + case 'voice/unqualified_two.wav': + currentKssycs = 1; + break; - case 'voice/qualified.mp3': - currentKssycs = 0; - break; + case 'voice/qualified.mp3': + currentKssycs = 0; + break; + } } - } - if (examSubject == 3) { - console.log(judgeTag, "exam end", isAllProjectsEnd); - if (isAllProjectsEnd) { - if (totalScore < passingScore) { + if (examSubject == 3) { + console.log(judgeTag, "exam end", isAllProjectsEnd); + if (isAllProjectsEnd) { + if (totalScore < passingScore) { + voiceURL = `voice/${kssycs == 1 ? 'exam_no_pass_finish' : 'exam_no_pass'}.mp3` + currentKssycs = kssycs == 1 ? 0 : 1 + } else { + voiceURL = 'voice/exam_pass.mp3' + currentKssycs = 0 + } + } else { voiceURL = `voice/${kssycs == 1 ? 'exam_no_pass_finish' : 'exam_no_pass'}.mp3` currentKssycs = kssycs == 1 ? 0 : 1 - } else { - voiceURL = 'voice/exam_pass.mp3' - currentKssycs = 0 } - } else { - voiceURL = `voice/${kssycs == 1 ? 'exam_no_pass_finish' : 'exam_no_pass'}.mp3` - currentKssycs = kssycs == 1 ? 0 : 1 + switch (voiceURL) { + case 'voice/exam_no_pass_finish.mp3': + currentKssycs = 0; + break; + + case 'voice/exam_no_pass.mp3': + currentKssycs = 1; + break; + + case 'voice/exam_pass.mp3': + currentKssycs = 0; + break; + + } } - switch (voiceURL) { - case 'voice/exam_no_pass_finish.mp3': - currentKssycs = 0; - break; - case 'voice/exam_no_pass.mp3': - currentKssycs = 1; - break; - - case 'voice/exam_pass.mp3': - currentKssycs = 0; - break; + const USER = await getSyncData('USER'); + await upDateTableByArray('USER', [{ + ...USER[0], + kssycs: currentKssycs + }]) + console.info(judgeTag, `考试成绩:${totalScore}`) + if (!singlePlay) { + // await uploadProgressData(); } - } - - const USER = await getSyncData('USER'); - await upDateTableByArray('USER', [{ - ...USER[0], - kssycs: currentKssycs - }]) - - console.info(judgeTag, `考试成绩:${totalScore}`) - if (!singlePlay) { - // await uploadProgressData(); - } - clearTimeout(backTimeOut) - //语音播放扣分项 - let score = 0; - //结束考试时候是否播报一遍所有扣分 - const param634 = judgeConfigObj['634']; - if (kfArr.length && ((examSubject == 2 && param634 == 1) || examSubject == 3)) { - avPlayer.playAudio([`voice/kfdesc.mp3`], false, () => { - try { - kfArr.forEach((kf, index) => { - score += Math.abs(Number(kf.score)); - //TODO 考试分数待替换 - if (score <= (examSubject == 3 ? 10 : 20)) { - if (kfArr.length - 1 === index) { + clearTimeout(backTimeOut) + //语音播放扣分项 + let score = 0; + //结束考试时候是否播报一遍所有扣分 + const param634 = judgeConfigObj['634']; + if (kfArr.length && ((examSubject == 2 && param634 == 1) || examSubject == 3)) { + avPlayer.playAudio([`voice/kfdesc.mp3`], false, () => { + try { + kfArr.forEach((kf, index) => { + score += Math.abs(Number(kf.score)); + //TODO 考试分数待替换 + if (score <= (examSubject == 3 ? 10 : 20)) { + if (kfArr.length - 1 === index) { + avPlayer.playAudio([`voice/${kf.markcatalog}.mp3`, voiceURL], false, () => { + this.isUdpEnd = true; + closeAllFiles() + router.back(); + }) + throw new Error('End Loop') + } + avPlayer.playAudio([`voice/${kf.markcatalog}.mp3`]) + } else { avPlayer.playAudio([`voice/${kf.markcatalog}.mp3`, voiceURL], false, () => { this.isUdpEnd = true; closeAllFiles() @@ -1443,30 +1453,27 @@ export default class Judge { }) throw new Error('End Loop') } - avPlayer.playAudio([`voice/${kf.markcatalog}.mp3`]) - } else { - avPlayer.playAudio([`voice/${kf.markcatalog}.mp3`, voiceURL], false, () => { - this.isUdpEnd = true; - closeAllFiles() - router.back(); - }) - throw new Error('End Loop') - } - }) - } catch (e) { - console.info(judgeTag, JSON.stringify(e)) - } - }) - } else { - avPlayer.playAudio([voiceURL], true, () => { - setTimeout(() => { - this.isUdpEnd = true - closeAllFiles() - router.back(); - }, param302 == 8 ? 3000 : 0) + }) + } catch (e) { + console.info(judgeTag, JSON.stringify(e)) + } + }) + } else { + avPlayer.playAudio([voiceURL], true, () => { + setTimeout(() => { + this.isUdpEnd = true + closeAllFiles() + router.back(); + }, param302 == 8 ? 3000 : 0) + }) + } + } catch (e) { + promptAction.showToast({ + message: "考试结束异常,请尝试重新结束", + duration: 3000 }) + judgeUI.loadingPopupVisible = false } - } // 当前项目转换