diff --git a/entry/src/main/ets/pages/Judge.ets b/entry/src/main/ets/pages/Judge.ets index 1c548b55..8bb4d663 100644 --- a/entry/src/main/ets/pages/Judge.ets +++ b/entry/src/main/ets/pages/Judge.ets @@ -7,9 +7,9 @@ import DeductedPopup from './compontents/judge/DeductionPopup'; import AmplifyPopup from './compontents/judge/AmplifyPopup'; import Judge from './judgeSDK/judge'; import { defaultJudgeConfigObj } from './judgeSDK/utils//judgeCommon'; -import {uploadExamMileage} from '../api/judge' +import { uploadExamMileage } from '../api/judge' import DwztErrorPopup from './compontents/judge/DwztErrorPopup' -import {debounce} from '../common/utils/tools' +import { debounce } from '../common/utils/tools' import MsgPopup from './compontents/judge/MsgPopup' import { @@ -37,7 +37,7 @@ import { voiceService } from '../common/service/voiceService'; @Entry @Component struct Index { - async aboutToDisappear(){ + async aboutToDisappear() { clearInterval(this.mileageTimer) } @@ -112,7 +112,7 @@ struct Index { BK2: carInfo.bk2, X_MCH: carInfo.x_mch, }) - console.info('surenjun =>carinfoArrr',JSON.stringify( this.carinfoArr)) + console.info('surenjun =>carinfoArrr', JSON.stringify(this.carinfoArr)) } // 获取考生信息 @@ -122,7 +122,7 @@ struct Index { const {xm,sfzmhm,lsh,kszp,ksdd,kssycs,kslx,ksxl,xldm} = stuInfo; this.name = xm || '测试考生'; this.idCard = sfzmhm || '01234567891010'; - this.lsh = globalThis.singlePlay?'0000000000000':lsh; + this.lsh = globalThis.singlePlay ? '0000000000000' : lsh; this.kszp = kszp; this.ksdd = ksdd; this.kssycs = kssycs; @@ -189,13 +189,13 @@ struct Index { } //623 考试中是否可以查看轨迹画面(0-否+1-是) - if(sys.v_no == '623'){ - this.syssetParam623 = value == '1'?true:false + if (sys.v_no == '623') { + this.syssetParam623 = value == '1' ? true : false } //科目三应行驶距离参数 if (sys.v_no == '303') { - this.examMileage = this.examMileage == '0'?(sys.v_value + ''): this.examMileage; + this.examMileage = this.examMileage == '0' ? (sys.v_value + '') : this.examMileage; } // //地点版本参数 @@ -213,7 +213,7 @@ struct Index { const currentProject = this.projectsObj[xmdm] // 过滤考前绕车一周上车准备的扣分 - if(sczb == 1 && xmdm == '1'){ + if (sczb == 1 && xmdm == '1') { return } @@ -244,7 +244,7 @@ struct Index { //初始化systemParam表 async initSystemParam(sysParam?: SYSTEMPARMARR[]) { const systemParms: any = sysParam || await getSyncData('MA_SYSTEMPARM') - console.info('surenjun => systemParms',JSON.stringify(systemParms)); + console.info('surenjun => systemParms', JSON.stringify(systemParms)); let currentParams: any = router.getParams(); const {carName,carType,examSubject} = this; @@ -255,7 +255,7 @@ struct Index { } //真实监管下发的项目 let kStringArr: string[] = (currentParams.kString?.split(',') || []).filter(item => item); - console.info('surenjun kStringArr',JSON.stringify(kStringArr)) + console.info('surenjun kStringArr', JSON.stringify(kStringArr)) let isInExam = kStringArr.length > 0; const {isTrajectoryOpen} = judgeConfig let carNo = '', allItems = []; @@ -269,8 +269,8 @@ struct Index { systemParm.txt3 = systemParm.TXT3; } const {no1,no2,no3,} = systemParm; - const txt1 = decodeURI(systemParm.txt1) - const txt2 = decodeURI(systemParm.txt2) + const txt1 = decodeURI(systemParm.txt1) + const txt2 = decodeURI(systemParm.txt2) //获取当前考车的no2 if (no1 == 3 && no3 == 1) { if (txt1 === carName) { @@ -280,11 +280,11 @@ struct Index { } //获取及格分数线 - if(no1 == 3 && no3 == 3 && carNo === no2){ + if (no1 == 3 && no3 == 3 && carNo === no2) { this.passingScore = Number(txt1) || 0; } //根据车型获取应行驶里程数 - if(no1 == 3 && no3 ==15 && carNo === no2){ + if (no1 == 3 && no3 == 15 && carNo === no2) { this.examMileage = ((decodeURI(systemParm.txt1)) || '').split('^')[0]; } //获取当前考车的考试项目 @@ -312,20 +312,20 @@ struct Index { projectCode: no2, projectCodeCenter: txt2, //是否是必考 加减档设置成非必考 - isRequired: no2== 14 ? false : allItems.includes(no2 + ''), + isRequired: no2 == 14 ? false : allItems.includes(no2 + ''), //是否考过了 isEnd: false, //项目开始数据是否上传过 - isUpload:false, + isUpload: false, } this.projectsObj[no2*1] = currentProject this.projectsCenterObj[txt2] = currentProject this.projects.push(currentProject); //真实监管下发考试项目 - if(isInExam && !(kStringArr.includes(txt2) || kStringArr.includes(no2+''))){ - console.info('surenjun =>',txt2) - console.info('surenjun => no2',no2) + if (isInExam && !(kStringArr.includes(txt2) || kStringArr.includes(no2 + ''))) { + console.info('surenjun =>', txt2) + console.info('surenjun => no2', no2) this.projectsObj[no2*1].type = '3' this.projectsObj[no2*1].isUpload = true this.projectsObj[no2*1].isEnd = true @@ -347,7 +347,7 @@ struct Index { }) }) const projects = this.projects; - console.info('surenjun',JSON.stringify(this.ddxkKsxmArr)) + console.info('surenjun', JSON.stringify(this.ddxkKsxmArr)) if (!projects.length) { Prompt.showToast({ @@ -369,7 +369,7 @@ struct Index { const newKey = key.split('~').join('_') //@ts-ignore const xmdm = key.split('~')[0] * 1 - if(projectsObj[xmdm]){ + if (projectsObj[xmdm]) { this.cdsbInfoObj[newKey] = { kdid: cdsb.kdid, sbbh: cdsb.sbbh, @@ -384,18 +384,18 @@ struct Index { } // 获取itemInfo表信息 - async initItemInfo(){ + async initItemInfo() { const infoParams = await getSyncData('MA_ITEMINFO'); const carlist = this.carlist; const projectsObj = this.projectsObj //@ts-ignore - infoParams.forEach((info)=>{ + infoParams.forEach((info) => { const key = decodeURI(info.itemsno); const carlistArr = info.carlist === '' ? [] : (decodeURI(info.carlist).split(',') || []); const newKey = key.split('~').join('_') //@ts-ignore const xmdm = key.split('~')[0] * 1 - if(projectsObj[xmdm] && (carlistArr.length == 0 || carlistArr.includes(carlist))){ + if (projectsObj[xmdm] && (carlistArr.length == 0 || carlistArr.includes(carlist))) { this.itemInfoObj[newKey] = { modelKey: newKey, xmdm, @@ -440,7 +440,7 @@ struct Index { //断点续考 ddxkKsxmArr.forEach(xmdm => { const projectCode = this.projectsCenterObj[xmdm].projectCode - if(this.projectsObj[projectCode]){ + if (this.projectsObj[projectCode]) { this.projectsObj[projectCode].type = '3' this.projectsObj[projectCode].isUpload = true this.projectsObj[projectCode].isEnd = true @@ -550,17 +550,45 @@ struct Index { } // 上传考试里程 - async uploadMileage(){ - if(!globalThis.singlePlay){ + async uploadMileage() { + if (!globalThis.singlePlay) { const {lsh,startExamTime:kskssj,jl:kslc} = this const { carId ,examinationRoomId} = globalThis.carInfo; await uploadExamMileage({ - carId,examinationRoomId, - lsh,kskssj,kslc + carId, + examinationRoomId, + lsh, + kskssj, + kslc }) } } + async endExam() { + if (this.isErrorMsgEnd) { + this.judge.closeAllFiles() + router.back() + return + } + if (this.judgeConfigObj['344'] == 1) { + Prompt.showToast({ + message: '考试未结束,不允许手动退出!', + duration: 4000 + }); + return + } + this.endPopupVisible = false; + this.loadingPopupVisible = true + clearInterval(this.timer); + clearInterval(globalThis.judgeTimer) + try { + this.judge.checkExamIsEnd(true); + } catch (e) { + this.judge.closeAllFiles() + router.back() + } + } + build() { Column() { Row() { @@ -890,7 +918,11 @@ struct Index { // name: 'button_media.wav' // }) if (this.judgeConfigObj['353'] == '0') { - this.endPopupVisible = true + if (this.getNotEndProjects().length > 0) { + this.endPopupVisible = true + return + } + this.endExam() } else { Prompt.showToast({ message: '车上不允许手动结束考试!', @@ -923,15 +955,15 @@ struct Index { this.isDeductedPopShow = false; this.defaultTabIndex = 0; }, - confirmMark: async (itemno, serial)=>{ + confirmMark: async (itemno, serial) => { clearTimeout(this.popTimer) this.popTimer = null - this.popTimer = setTimeout(async ()=>{ + this.popTimer = setTimeout(async () => { const judge = this.judge await judge.setJudgeMark(itemno, serial); this.isDeductedPopShow = false this.popTimer = null; - },500) + }, 500) } }) } @@ -942,7 +974,7 @@ struct Index { showBack: false, scaleNum: 1.8, msgStr: this.judge.plcStr || '', - showTrajectory:globalThis.singlePlay ? true : (this.syssetParam623), + showTrajectory: globalThis.singlePlay ? true : (this.syssetParam623), }).margin({ top: 100 }) Row() { @@ -966,15 +998,15 @@ struct Index { if (this.isAmplifyPopShow && this.examSubject == 3) { AmplifyPopup({ amplifyImgIndex: this.amplifiedImgIndex, - confirmAmplify:async (amplify)=>{ + confirmAmplify: async (amplify) => { clearTimeout(this.popTimer) this.popTimer = null - this.popTimer = setTimeout(async ()=>{ + this.popTimer = setTimeout(async () => { const judge = this.judge await judge.setJudgeItem(amplify.projectCode, 1); this.isAmplifyPopShow = false this.popTimer = null; - },500) + }, 500) }, closeAmplifyPop: () => { this.isAmplifyPopShow = false @@ -985,34 +1017,12 @@ struct Index { //结束考试弹窗 if (this.endPopupVisible) { EndPoPup({ - title: this.getNotEndProjects().length ? `当前考试存在未完成的项目:${this.getNotEndProjects().join('、')},确定结束考试吗?` :'确定结束考试吗?', + title: `当前考试存在未完成的项目:${this.getNotEndProjects().join('、')},确定结束考试吗?`, cancelFn: () => { this.endPopupVisible = false; }, confirmFn: async () => { - if(this.isErrorMsgEnd){ - this.judge.closeAllFiles() - router.back() - return - } - if (this.judgeConfigObj['344'] == 1) { - Prompt.showToast({ - message: '考试未结束,不允许手动退出!', - duration: 4000 - }); - return - } - this.endPopupVisible = false; - this.loadingPopupVisible = true - clearInterval(this.timer); - clearInterval(globalThis.judgeTimer) - try { - this.judge.checkExamIsEnd(true); - } catch (e) { - this.judge.closeAllFiles() - router.back() - } - + this.endExam() } }) } @@ -1024,28 +1034,28 @@ struct Index { }) } - if (this.errorMsg){ + if (this.errorMsg) { MsgPopup({ title: this.errorMsg, - confirmFn:()=>{ + confirmFn: () => { this.errorMsg = '' this.isErrorMsgEnd = true; - if(this.disConnectErrorOpen){ + if (this.disConnectErrorOpen) { globalThis.context.terminateSelf() - }else{ + } else { router.back() } }, }) } - if(this.dwztErrorVisible){ + if (this.dwztErrorVisible) { DwztErrorPopup({ - title:'当前差分状态异常,学员将无法正常进行考试评判,请将车辆行驶到开阔地,等待程序自检,差分正常后会自动关闭该对话框', - cancelFn:()=>{ + title: '当前差分状态异常,学员将无法正常进行考试评判,请将车辆行驶到开阔地,等待程序自检,差分正常后会自动关闭该对话框', + cancelFn: () => { this.dwztErrorVisible = false; }, - confirmFn:()=>{ + confirmFn: () => { clearInterval(this.timer); clearInterval(globalThis.judgeTimer) this.judge.checkExamIsEnd(true); @@ -1053,7 +1063,7 @@ struct Index { }) } - if(this.disConnectErrorOpen){ + if (this.disConnectErrorOpen) { } } @@ -1090,14 +1100,14 @@ struct Index { projectsObj } = this; const projectCode = artSubject3ProjectsCodesArr[index]; - if(index === 5) { - console.info('surenjun 靠边停车状态=> ',getIsExitManualProject(index)) + if (index === 5) { + console.info('surenjun 靠边停车状态=> ', getIsExitManualProject(index)) } if (getIsExitManualProject(index)) { // 正在进行的项目 取消项目 if (isManualProjectIn && projectsObj[projectCode].type == '2') { //判断人工是否能取消项目 && 当前项目有扣分的不能取消 - if(judgeConfigObj['340'] == 1 && projectsObj[projectCode].type != '5'){ + if (judgeConfigObj['340'] == 1 && projectsObj[projectCode].type != '5') { await this.judge.setJudgeItem(projectCode, 2); Prompt.showToast({ message: '项目取消', @@ -1113,11 +1123,11 @@ struct Index { if (xmmcStr == '无' || xmmcStr == '') { //512[6] 人工项目按钮放大确认 const param512 = (judgeConfigObj['512'] || '').split(','); - console.info('surenjun',param512) - if(param512[6] !== '0'){ + console.info('surenjun', param512) + if (param512[6] !== '0') { this.amplifiedImgIndex = index; this.isAmplifyPopShow = true - }else{ + } else { const judge = this.judge await judge.setJudgeItem(projectCode, 1); } @@ -1148,7 +1158,7 @@ struct Index { getProjectIsInRoad } = this; const projectCode = artSubject3ProjectsCodesArr[index]; - if(projectsObj[projectCode] === undefined){ + if (projectsObj[projectCode] === undefined) { return false } const projectType = projectsObj[projectCode].type; @@ -1216,7 +1226,6 @@ struct Index { } return true } - // 判断项目是否在当前路段号 getProjectIsInRoad = (projectCode: string,) => { const { @@ -1244,7 +1253,7 @@ struct Index { return false } - if(projectRoads[projectCode].length == 0){ + if (projectRoads[projectCode].length == 0) { return true } @@ -1276,7 +1285,6 @@ struct Index { return true } - // 获取人工项目是否已做 getIsEndManualProject = (index: number) => { const projectName = this.artSubject3Projects[index]; @@ -1287,19 +1295,18 @@ struct Index { } return (type == '3' || type == '4') ? `${projectName}_red` : `${projectName}_green`; } - // 获取是否能进行人工评判 - getIsManualKf = () =>{ + getIsManualKf = () => { const {examSubject} = this; - if(examSubject == 3){ + if (examSubject == 3) { //杭州训练模式不允许人工评判 - if(globalThis.singlePlay && this.judgeConfigObj['211'] == 'zjhz'){ + if (globalThis.singlePlay && this.judgeConfigObj['211'] == 'zjhz') { return false } - if(this.judgeConfigObj['342'] == '0'){ + if (this.judgeConfigObj['342'] == '0') { return true } - }else{ + } else { return false } } @@ -1307,7 +1314,7 @@ struct Index { getNotEndProjects = () => { const projectsObj = this.projectsObj; const notEndProjectsNames = []; - Reflect.ownKeys(projectsObj).forEach((projectKey:string) => { + Reflect.ownKeys(projectsObj).forEach((projectKey: string) => { const { type, isRequired ,name} = projectsObj[projectKey]; if (isRequired) { if (type == undefined || type == '1' || type == '2') { @@ -1317,8 +1324,6 @@ struct Index { }) return notEndProjectsNames; } - - scroller: Scroller = new Scroller() //页面通用字体大小 @State wayno: number = 0 @@ -1422,8 +1427,8 @@ struct Index { @State mileageTimer: number = 0; @State passingScore: number = 80 @State dwztErrorVisible: boolean = false; - @State popTimer:number =0; - @State carlist:string= '' + @State popTimer: number = 0; + @State carlist: string = '' @State errorMsg: string = '' @State isErrorMsgEnd: boolean = false @State disConnectErrorOpen: boolean = false diff --git a/entry/src/main/ets/pages/judgeSDK/utils/judgeConfig.ts b/entry/src/main/ets/pages/judgeSDK/utils/judgeConfig.ts index e1b48489..a6198cf3 100644 --- a/entry/src/main/ets/pages/judgeSDK/utils/judgeConfig.ts +++ b/entry/src/main/ets/pages/judgeSDK/utils/judgeConfig.ts @@ -1,7 +1,7 @@ //考试回放开关 export const judgeConfig = { // 外壳版本号 - version: "2025.05.26.01", + version: "2025.07.24.01", //本地目录开关 isTrajectoryOpen: false, //是否开启拍照