逻辑优化

This commit is contained in:
lixiao 2025-05-13 18:06:03 +08:00
parent b446c9442a
commit 7645ab8c14
3 changed files with 218 additions and 189 deletions

View File

@ -134,10 +134,13 @@ struct Index {
}, router.RouterMode.Single)
}
})
}).finally(() => {
this.loading = false
});
}
})
}).finally(() => {
this.loading = false
});
}
async heartMsg() {

View File

@ -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
})
}

View File

@ -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
}
}
// 当前项目转换