| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | import { examinationStuAbsent, getExaminationItem, getExaminationStudentInfo } from '../api/userInfo'; | 
					
						
							|  |  |  |  | import router from '@ohos.router'; | 
					
						
							|  |  |  |  | import FaceCompare from './compontents/FaceCompare'; | 
					
						
							|  |  |  |  | import { writeObjectOut } from '../api/judge'; | 
					
						
							|  |  |  |  | import testNapi from '@ohos.idcard'; | 
					
						
							|  |  |  |  | import IDCardSDK from '@ohos.idcard'; | 
					
						
							|  |  |  |  | import common from '@ohos.app.ability.common'; | 
					
						
							|  |  |  |  | import promptAction from '@ohos.promptAction'; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | import { CandidateData, EmptyCandidateObject } from '../mock/CandidateData'; | 
					
						
							|  |  |  |  | import BoardPrePareSetPopup from './compontents/judge/BoardPrePareSetPopup'; | 
					
						
							|  |  |  |  | import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements'; | 
					
						
							| 
									
										
										
										
											2025-04-11 14:08:48 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | import imageBtn from './compontents/imageBtn'; | 
					
						
							|  |  |  |  | import { CryptoJS } from '@ohos/crypto-js'; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | import { | 
					
						
							|  |  |  |  |   BeginExamRequest, | 
					
						
							|  |  |  |  |   CarInfoType, | 
					
						
							| 
									
										
										
										
											2025-06-11 17:50:37 +08:00
										 |  |  |  |   CenterCallBackMsgType, | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |   DrvexamType, | 
					
						
							|  |  |  |  |   ExaminationStuAbsentParams, | 
					
						
							|  |  |  |  |   ExaminerLoginInfo, | 
					
						
							|  |  |  |  |   GetExaminationItemRsp, | 
					
						
							|  |  |  |  |   IdCard, | 
					
						
							|  |  |  |  |   LabelBlockType, | 
					
						
							|  |  |  |  |   MASYSSETTableType, | 
					
						
							|  |  |  |  |   RegulatoryInterfaceParams, | 
					
						
							|  |  |  |  |   RouteParamsType, | 
					
						
							|  |  |  |  |   SckType, | 
					
						
							|  |  |  |  |   SystemParamType, | 
					
						
							|  |  |  |  |   UDPParamType, | 
					
						
							|  |  |  |  |   User | 
					
						
							|  |  |  |  | } from '../model'; | 
					
						
							|  |  |  |  | import { BusinessError } from '@ohos.base'; | 
					
						
							|  |  |  |  | import { GetSyncData, SqlInsertTable } from '../utils/table/Operation'; | 
					
						
							| 
									
										
										
										
											2025-07-25 17:44:57 +08:00
										 |  |  |  | import { CheckSignal, GetCurrentUserKeyValue, InitializeExamProcessData } from './UserInfo/utils'; | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | import dayTs from '../utils/Date'; | 
					
						
							| 
									
										
										
										
											2025-08-06 14:57:59 +08:00
										 |  |  |  | import { GetCurrentTime, GetPhotoBase64, NumberToByteArray } from '../utils/Common'; | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | import DB from '../utils/DbSql'; | 
					
						
							| 
									
										
										
										
											2025-04-10 15:10:31 +08:00
										 |  |  |  | import { CenterUDPBusinessInstance } from '../utils/business/CenterUdpBusiness'; | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | import { JudgeEmitterInstance } from '../utils/business/UdpEvent'; | 
					
						
							| 
									
										
										
										
											2025-07-25 17:44:57 +08:00
										 |  |  |  | import { StartExamTag, UserInfoTag } from '../config'; | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  | import { dConsole } from '../utils/LogWorker'; | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  | import HeaderComponent from './compontents/Header'; | 
					
						
							|  |  |  |  | import AvatarComponent from './UserInfo/Avatar'; | 
					
						
							|  |  |  |  | import CommTextComponent from './UserInfo/CommText'; | 
					
						
							|  |  |  |  | import LabelBlockComponent from './UserInfo/LabelBlock'; | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  | import CarLoadingDialog from './compontents/CarLoading'; | 
					
						
							| 
									
										
										
										
											2025-06-26 17:28:28 +08:00
										 |  |  |  | import ConfirmDialog from './compontents/ConfirmDialog'; | 
					
						
							| 
									
										
										
										
											2025-07-25 17:44:57 +08:00
										 |  |  |  | import { DifferentialAndSignal } from '../utils/business/DifferentialAndSignalWorker'; | 
					
						
							| 
									
										
										
										
											2025-07-28 16:06:15 +08:00
										 |  |  |  | import FaceRecognitionDialog from './UserInfo/FaceRecognition'; | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @Entry | 
					
						
							|  |  |  |  | @Component | 
					
						
							| 
									
										
										
										
											2025-06-24 10:58:43 +08:00
										 |  |  |  | struct UserInfoPage { | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |   @State pageIndex: number = 0 | 
					
						
							|  |  |  |  |   @State index: number = 0 | 
					
						
							|  |  |  |  |   @State stepFlag: boolean = false; | 
					
						
							|  |  |  |  |   @State errorMsg: string = '' | 
					
						
							|  |  |  |  |   @State ksxtbh: string = '' | 
					
						
							|  |  |  |  |   @State pic: string = '' | 
					
						
							|  |  |  |  |   @State jkxlh: string = '' | 
					
						
							|  |  |  |  |   @State @Watch('changeFaceCompareSuccess') faceCompareSucess: number = 0; | 
					
						
							|  |  |  |  |   @State @Watch('changeQkfn') getqkFlag: boolean = false; | 
					
						
							|  |  |  |  |   @State @Watch('outClick') outFlag: boolean = false; | 
					
						
							|  |  |  |  |   @State showFaceCompare: boolean = false; | 
					
						
							|  |  |  |  |   @State url: string = '' | 
					
						
							|  |  |  |  |   @State lsh: string = '' | 
					
						
							|  |  |  |  |   @State qkFlag: boolean = false | 
					
						
							|  |  |  |  |   @State isBoardPrePareSetPopupOpen: boolean = false | 
					
						
							|  |  |  |  |   @State isSecondBoardPrePareSetPopupOpen: boolean = false | 
					
						
							|  |  |  |  |   @State isFirstBoardPrePareSetPopupBtnShow: boolean = false | 
					
						
							|  |  |  |  |   @State isBoardPrePareSetPopupShow: boolean = false | 
					
						
							|  |  |  |  |   @State sczbkf: SckType[] = [] | 
					
						
							|  |  |  |  |   @State currentUser: User = EmptyCandidateObject | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |   // 开始考试弹窗 | 
					
						
							| 
									
										
										
										
											2025-06-26 17:28:28 +08:00
										 |  |  |  |   startExamDialogController: CustomDialogController = new CustomDialogController({ | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |     builder: CarLoadingDialog(), | 
					
						
							| 
									
										
										
										
											2025-06-26 17:28:28 +08:00
										 |  |  |  |     autoCancel: false, | 
					
						
							|  |  |  |  |     customStyle: true | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |   }) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |   @State dataList: Array<User> = [] | 
					
						
							|  |  |  |  |   @State list: Array<User> = [] | 
					
						
							|  |  |  |  |   @State name: string = 'initName'; | 
					
						
							|  |  |  |  |   @State sex: string = ''; | 
					
						
							|  |  |  |  |   @State callBackFlag: boolean = false; | 
					
						
							|  |  |  |  |   @State born?: string = ''; | 
					
						
							|  |  |  |  |   @State address: string = ''; | 
					
						
							|  |  |  |  |   @State nation: string = ''; | 
					
						
							|  |  |  |  |   @State idCard: string = ''; | 
					
						
							|  |  |  |  |   @State grantDept: string = ''; | 
					
						
							|  |  |  |  |   //是否已经开始考试 | 
					
						
							|  |  |  |  |   @State isExamStart: boolean = false; | 
					
						
							|  |  |  |  |   @State effectDate: string = ''; | 
					
						
							|  |  |  |  |   @State interval: number = -1; | 
					
						
							|  |  |  |  |   @State studentRefreshStatue: string = '0'; | 
					
						
							|  |  |  |  |   @State photo: string = 'data:image/bmp;base64,'; | 
					
						
							|  |  |  |  |   @State numCount: number = 0; | 
					
						
							|  |  |  |  |   @State signNum: number = 0; | 
					
						
							|  |  |  |  |   @State isCanClick: boolean = true; | 
					
						
							|  |  |  |  |   @State updateTimeLimit: boolean = false | 
					
						
							| 
									
										
										
										
											2025-06-26 17:28:28 +08:00
										 |  |  |  |   // 缺考弹窗 | 
					
						
							|  |  |  |  |   missAnExamDialogController: CustomDialogController = new CustomDialogController({ | 
					
						
							|  |  |  |  |     builder: ConfirmDialog({ | 
					
						
							|  |  |  |  |       text: `确认考生:${this.currentUser.xm}是否缺考?`, | 
					
						
							|  |  |  |  |       onConfirm: () => { | 
					
						
							|  |  |  |  |         this.qkFn() | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }), | 
					
						
							|  |  |  |  |     customStyle: true, | 
					
						
							|  |  |  |  |     autoCancel: true | 
					
						
							|  |  |  |  |   }) | 
					
						
							| 
									
										
										
										
											2025-07-29 15:35:26 +08:00
										 |  |  |  |   //TODO 人脸对比弹窗 | 
					
						
							| 
									
										
										
										
											2025-07-28 16:06:15 +08:00
										 |  |  |  |   faceCompareController: CustomDialogController = new CustomDialogController({ | 
					
						
							|  |  |  |  |     builder: FaceRecognitionDialog({ | 
					
						
							|  |  |  |  |       sfzh: this.currentUser.sfzmhm, | 
					
						
							|  |  |  |  |       firstImage: this.currentUser.kszp, | 
					
						
							|  |  |  |  |       lsh: AppStorage.get<string>('lsh'), | 
					
						
							|  |  |  |  |     }), | 
					
						
							|  |  |  |  |     customStyle: true, | 
					
						
							|  |  |  |  |     autoCancel: true | 
					
						
							|  |  |  |  |   }) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |   @State faceFlag: string = '0'; | 
					
						
							|  |  |  |  |   @State FaceOpenStatue: string = '0'; //是否开启人脸识别 | 
					
						
							|  |  |  |  |   @State faceCatchImg: string = '' | 
					
						
							|  |  |  |  |   @State carInfo: CarInfoType = { | 
					
						
							|  |  |  |  |     carId: '', | 
					
						
							|  |  |  |  |     examinationRoomId: '', | 
					
						
							|  |  |  |  |     plateNo: '', | 
					
						
							|  |  |  |  |     isNeedCheck: '', | 
					
						
							|  |  |  |  |     examSubject: '' | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   @State examinerLoginInfo: ExaminerLoginInfo = { | 
					
						
							|  |  |  |  |     carId: '', | 
					
						
							|  |  |  |  |     examinationRoomId: '', | 
					
						
							|  |  |  |  |     plateNo: '', | 
					
						
							|  |  |  |  |     isNeedCheck: '', | 
					
						
							|  |  |  |  |     examSubject: '' | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   @State systemParam: SystemParamType = { | 
					
						
							|  |  |  |  |     Param341: true, | 
					
						
							|  |  |  |  |     Param803Str: '0', | 
					
						
							|  |  |  |  |     Param612Str: '0', | 
					
						
							|  |  |  |  |     Param770Str: '0', | 
					
						
							|  |  |  |  |     Param305Str: '0', | 
					
						
							|  |  |  |  |     Param352Str: '0', | 
					
						
							|  |  |  |  |     Param828Str: '0', | 
					
						
							|  |  |  |  |     Param830Str: '0', | 
					
						
							|  |  |  |  |     Param364: '0', | 
					
						
							|  |  |  |  |     Param398: '0' | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   @State startExam: boolean = false | 
					
						
							|  |  |  |  |   @State singlePlay: boolean = false | 
					
						
							| 
									
										
										
										
											2025-04-15 14:24:27 +08:00
										 |  |  |  |   private context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; | 
					
						
							|  |  |  |  |   private avPlayer!: VoiceAnnounce | 
					
						
							|  |  |  |  |   private labelBlocks: LabelBlockType[] = [ | 
					
						
							|  |  |  |  |     { label: '考生姓名', key: 'xm' }, | 
					
						
							|  |  |  |  |     { label: '身份证号', key: 'sfzmhm' }, | 
					
						
							|  |  |  |  |     { label: ' 流 水 号 ', key: 'lsh' }, | 
					
						
							|  |  |  |  |     { label: '考试路线', key: 'ksxl' }, | 
					
						
							|  |  |  |  |     { label: '待考次数', key: 'kssycs' }, | 
					
						
							|  |  |  |  |     { label: '考试员名', key: 'ksy2' }, | 
					
						
							|  |  |  |  |   ] | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |   //开始考试准备 | 
					
						
							|  |  |  |  |   prePareExam = async () => { | 
					
						
							|  |  |  |  |     try { | 
					
						
							| 
									
										
										
										
											2025-07-25 17:44:57 +08:00
										 |  |  |  |       // await this.checkSignal() | 
					
						
							|  |  |  |  |       await CheckSignal(this.systemParam, this.avPlayer) | 
					
						
							|  |  |  |  |       DifferentialAndSignal.clearMsg() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       this.faceCompareSucess = 0 | 
					
						
							|  |  |  |  |       AppStorage.setOrCreate('statue', 2) | 
					
						
							|  |  |  |  |       if (!this.currentUser.xm) { | 
					
						
							|  |  |  |  |         return | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       if (this.singlePlay) { | 
					
						
							|  |  |  |  |         this.currentUser.id = '0' | 
					
						
							| 
									
										
										
										
											2025-07-16 11:28:34 +08:00
										 |  |  |  |         dConsole.log('开始考试3') | 
					
						
							| 
									
										
										
										
											2025-04-11 17:09:27 +08:00
										 |  |  |  |         SqlInsertTable('USER', [this.currentUser]).catch((e: BusinessError) => { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |           dConsole.log("error", JSON.stringify(e)) | 
					
						
							| 
									
										
										
										
											2025-04-11 17:09:27 +08:00
										 |  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2025-07-16 11:28:34 +08:00
										 |  |  |  |         // 初始化开始考试过程数据文件夹 | 
					
						
							|  |  |  |  |         InitializeExamProcessData(this.currentUser) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |         router.pushUrl({ | 
					
						
							|  |  |  |  |           url: this.carInfo.examSubject == '3' ? 'pages/Roads' : 'pages/Judge', | 
					
						
							|  |  |  |  |           params: { | 
					
						
							|  |  |  |  |             sczb: Number(this.isBoardPrePareSetPopupOpen), | 
					
						
							|  |  |  |  |             kfdm: this.sczbkf, | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         }, router.RouterMode.Single); | 
					
						
							|  |  |  |  |         this.stopDeviceById() | 
					
						
							|  |  |  |  |         return | 
					
						
							|  |  |  |  |       } | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.log('this.FaceOpenStatuethis.FaceOpenStatue', this.FaceOpenStatue) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       if (this.FaceOpenStatue != '0') { | 
					
						
							|  |  |  |  |         //   同一学员连续第二次考试时不再验证身份 | 
					
						
							|  |  |  |  |         if (this.currentUser.kssycs == '1' && this.systemParam.Param830Str == '1') { | 
					
						
							|  |  |  |  |           this.sfbdinterfaceFn() | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           this.showFaceCompare = true | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         this.sfbdinterfaceFn() | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } catch (e) { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.info('Throw Error', JSON.stringify(e)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   aboutToAppear() { | 
					
						
							|  |  |  |  |     this.avPlayer = new VoiceAnnounce(this.context); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   async onPageShow() { | 
					
						
							|  |  |  |  |     this.isExamStart = false | 
					
						
							|  |  |  |  |     this.startExam = false | 
					
						
							|  |  |  |  |     this.updateTimeLimit = false | 
					
						
							|  |  |  |  |     this.currentUser = EmptyCandidateObject | 
					
						
							|  |  |  |  |     this.singlePlay = AppStorage.get<boolean>('singlePlay') || false | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |     dConsole.log("this.singlePlay", this.singlePlay) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     this.examinerLoginInfo = AppStorage.get<ExaminerLoginInfo>('examinerInfo')! | 
					
						
							|  |  |  |  |     this.carInfo = AppStorage.get<CarInfoType>('carInfo')! | 
					
						
							|  |  |  |  |     //语音功能on | 
					
						
							|  |  |  |  |     // new WebRTCVoice(this.context); | 
					
						
							|  |  |  |  |     //初始化数据 | 
					
						
							|  |  |  |  |     this.initData() | 
					
						
							|  |  |  |  |     //身份证读卡器初始化 | 
					
						
							|  |  |  |  |     // this.openDeviceByIDCard() | 
					
						
							|  |  |  |  |     const routerParam: RouteParamsType = router.getParams() as RouteParamsType | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |     dConsole.log('routerParam', JSON.stringify(routerParam)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (!this.singlePlay) { | 
					
						
							|  |  |  |  |       if (routerParam.type != "1") { | 
					
						
							|  |  |  |  |         this.list = await GetSyncData<User>("USERLIST") | 
					
						
							|  |  |  |  |         const data = await GetSyncData<User>("USER") | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |         dConsole.log('useruser,', JSON.stringify(this.list)) | 
					
						
							|  |  |  |  |         dConsole.log('useruser1,', JSON.stringify(data)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         const user = data[0] | 
					
						
							|  |  |  |  |         if (user && Number(user.kssycs)) { | 
					
						
							|  |  |  |  |           let flag = false | 
					
						
							|  |  |  |  |           this.list.forEach(res => { | 
					
						
							|  |  |  |  |             if (res.sfzmhm == user.sfzmhm) { | 
					
						
							|  |  |  |  |               flag = true | 
					
						
							|  |  |  |  |               res.kssycs = user.kssycs | 
					
						
							|  |  |  |  |               this.getCurrentStudent(res.sfzmhm) | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           }) | 
					
						
							|  |  |  |  |           if (!flag) { | 
					
						
							|  |  |  |  |             this.currentUser = (this.list.length ? this.list[0] : EmptyCandidateObject) | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         } else if (user && (user.kssycs == '0' || user.kssycs == '')) { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |           dConsole.log('datadatadatadata') | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |           this.list = this.list.filter(res => { | 
					
						
							|  |  |  |  |             return res.sfzmhm != user.sfzmhm | 
					
						
							|  |  |  |  |           }) | 
					
						
							|  |  |  |  |           this.pageIndex = 0 | 
					
						
							|  |  |  |  |           this.dataList = this.list.slice(this.pageIndex * 4, this.pageIndex * 4 + 4) | 
					
						
							|  |  |  |  |           if (this.dataList.length) { | 
					
						
							|  |  |  |  |             setTimeout(() => { | 
					
						
							|  |  |  |  |               this.currentUser = this.dataList[0] | 
					
						
							|  |  |  |  |               this.currentUser.ksy2 = this.examinerLoginInfo.kgxm || "" | 
					
						
							|  |  |  |  |               AppStorage.setOrCreate('lsh', this.currentUser.lsh) | 
					
						
							|  |  |  |  |             }, 200) | 
					
						
							|  |  |  |  |           } else { | 
					
						
							|  |  |  |  |             this.currentUser = EmptyCandidateObject | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         this.list.forEach((res, index) => { | 
					
						
							|  |  |  |  |           res.id = index.toString() | 
					
						
							|  |  |  |  |         }) | 
					
						
							|  |  |  |  |         await SqlInsertTable("USERLIST", this.list || []) | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         await this.getExaminationStudentInfoFn() | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     // 如果是单机模式则模拟假数据 | 
					
						
							|  |  |  |  |     //获取sysset表数据 | 
					
						
							|  |  |  |  |     this.initSysset() | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //心跳处理 | 
					
						
							|  |  |  |  |     this.heartMsg() | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     // if(user[0]){ | 
					
						
							|  |  |  |  |     //   // @ts-ignore | 
					
						
							|  |  |  |  |     //   this.currentUser=user | 
					
						
							|  |  |  |  |     // } | 
					
						
							|  |  |  |  |     this.sczbkf = []; | 
					
						
							|  |  |  |  |     // initJudgeUdp() | 
					
						
							|  |  |  |  |     // TODO UDP更改 | 
					
						
							|  |  |  |  |     //监听远程开始考试 | 
					
						
							|  |  |  |  |     JudgeEmitterInstance.onBeginExam(async () => { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.info('surenjun', 'userInfo收到UdpEvent事件') | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       if (this.isBoardPrePareSetPopupOpen && !this.isFirstBoardPrePareSetPopupBtnShow) { | 
					
						
							|  |  |  |  |         await this.prePareSCZB() | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         await this.prePareExam() | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   async onPageHide(): Promise<void> { | 
					
						
							| 
									
										
										
										
											2025-04-10 15:10:31 +08:00
										 |  |  |  |     CenterUDPBusinessInstance.offMsg(this.onCenterMsg) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   //身份证读卡器初始化 | 
					
						
							|  |  |  |  |   openDeviceByIDCard() { | 
					
						
							|  |  |  |  |     AppStorage.setOrCreate('indexComponent', this) | 
					
						
							|  |  |  |  |     // 应用启动时打开读卡设备 | 
					
						
							|  |  |  |  |     let ret = testNapi.OpenDevice(); | 
					
						
							|  |  |  |  |     if (ret == 0) { | 
					
						
							|  |  |  |  |       testNapi.StartReadCard(this.onReadCard); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.error("zzctest Failed to Open Device"); | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   stopDeviceById() { | 
					
						
							|  |  |  |  |     if (this.faceFlag == '1') { | 
					
						
							|  |  |  |  |       testNapi.StopReadCard() | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   // 通过身份证获取当前学员 | 
					
						
							|  |  |  |  |   async getCurrentStudent(id: string) { | 
					
						
							|  |  |  |  |     let flag = false | 
					
						
							|  |  |  |  |     // this.pageIndex | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |     dConsole.log('currentidid', id) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     this.list.map((res, index) => { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.log('tttt', res.sfzmhm, res.xm) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       if (res.sfzmhm == id) { | 
					
						
							|  |  |  |  |         flag = true | 
					
						
							|  |  |  |  |         this.currentUser = EmptyCandidateObject | 
					
						
							|  |  |  |  |         setTimeout(() => { | 
					
						
							|  |  |  |  |           this.currentUser = res | 
					
						
							|  |  |  |  |           this.currentUser.ksy2 = this.examinerLoginInfo.kgxm || "" | 
					
						
							|  |  |  |  |         }, 200) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         this.examinerLoginInfo.ksyh = res.ksy1sfzmhm | 
					
						
							|  |  |  |  |         AppStorage.setOrCreate('examinerInfo', this.examinerLoginInfo) | 
					
						
							|  |  |  |  |         AppStorage.setOrCreate('lsh', res.lsh) | 
					
						
							|  |  |  |  |         // const { examSubject } = this.carInfo; | 
					
						
							| 
									
										
										
										
											2025-07-16 11:28:34 +08:00
										 |  |  |  |         dConsole.log("开始考试2") | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |         if (this.singlePlay) { | 
					
						
							|  |  |  |  |           this.stopDeviceById() | 
					
						
							| 
									
										
										
										
											2025-07-16 11:28:34 +08:00
										 |  |  |  |           // 初始化开始考试过程数据文件夹 | 
					
						
							|  |  |  |  |           InitializeExamProcessData(this.currentUser) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |           router.pushUrl({ | 
					
						
							|  |  |  |  |             url: this.carInfo.examSubject == "3" ? 'pages/Roads' : 'pages/Judge', | 
					
						
							|  |  |  |  |             params: { | 
					
						
							|  |  |  |  |               sczb: Number(this.isBoardPrePareSetPopupOpen), | 
					
						
							|  |  |  |  |               kfdm: this.sczbkf, | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           }, router.RouterMode.Single); | 
					
						
							|  |  |  |  |           return | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         this.pageIndex = Math.floor(index / 4) | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }) | 
					
						
							|  |  |  |  |     this.dataList = this.list.slice(this.pageIndex * 4, this.pageIndex * 4 + 4) | 
					
						
							|  |  |  |  |     if (!flag) { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       AppStorage.setOrCreate('lsh', '0000000000000') | 
					
						
							|  |  |  |  |       await SqlInsertTable('USER', []) | 
					
						
							|  |  |  |  |       setTimeout(() => { | 
					
						
							|  |  |  |  |         this.currentUser = this.list[0] | 
					
						
							|  |  |  |  |         this.currentUser.ksy2 = this.examinerLoginInfo.kgxm || "" | 
					
						
							|  |  |  |  |         AppStorage.setOrCreate('lsh', this.currentUser.lsh) | 
					
						
							|  |  |  |  |       }, 200) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       // promptAction.showToast({ | 
					
						
							|  |  |  |  |       //   message: '未匹配到对应下载学员', | 
					
						
							|  |  |  |  |       //   duration: 3000 | 
					
						
							|  |  |  |  |       // }); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   onReadCard(ret: IDCardSDK.IDCardInfo) { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |     dConsole.info(`zzctest xx Read Card ret =${ret.status}`) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     let thisVar: IdCard = AppStorage.get('indexComponent')!; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (ret.status == 0) { // status = 1 为读到身份证信息; status = 1 为身份证离开读卡器 | 
					
						
							|  |  |  |  |       // 收到身份证离开读卡器的事件通知,根据实际业务需要决定是否需要清空之前已读取的身份证信息。 | 
					
						
							|  |  |  |  |       // 如果身份证卡片离开读卡器时,需要继续保留UI界面上已读取到的身份信息,以下代码可以注释掉。 | 
					
						
							|  |  |  |  |       thisVar.name = ""; | 
					
						
							|  |  |  |  |       thisVar.sex = ""; | 
					
						
							|  |  |  |  |       thisVar.nation = ""; | 
					
						
							|  |  |  |  |       thisVar.born = ""; | 
					
						
							|  |  |  |  |       thisVar.address = ""; | 
					
						
							|  |  |  |  |       thisVar.idCard = ""; | 
					
						
							|  |  |  |  |       thisVar.photo = ""; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       return true; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (ret.baseInfo.length > 2) { | 
					
						
							|  |  |  |  |       // 收到身份证信息,填充页面 | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.info(`zzctest Read Card 1`); | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       let subIndex = ret.baseInfo.indexOf(":") | 
					
						
							|  |  |  |  |       let baseInfo: string = ret.baseInfo.substring(subIndex + 1, ret.baseInfo.length - 1); | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.info(`zzctest Read Card 2 baseInfo=${baseInfo}`); | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       let baseInfos: string[] = baseInfo.split("|"); | 
					
						
							|  |  |  |  |       thisVar.name = baseInfos[0]; | 
					
						
							|  |  |  |  |       thisVar.sex = baseInfos[1]; | 
					
						
							|  |  |  |  |       thisVar.nation = baseInfos[2]; | 
					
						
							|  |  |  |  |       thisVar.born = baseInfos[3]; | 
					
						
							|  |  |  |  |       thisVar.address = baseInfos[4]; | 
					
						
							|  |  |  |  |       thisVar.idCard = baseInfos[5]; | 
					
						
							|  |  |  |  |       setTimeout(() => { | 
					
						
							|  |  |  |  |         this.getCurrentStudent(baseInfos[5]) | 
					
						
							|  |  |  |  |       }, 1000) | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     // 身份证照片数据处理 | 
					
						
							|  |  |  |  |     if (ret.photo instanceof ArrayBuffer) { | 
					
						
							|  |  |  |  |       let dataView = new DataView(ret.photo) | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.info(`Read Card ret = length = ${dataView.byteLength}`) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       let str = "" | 
					
						
							|  |  |  |  |       for (let i = 0; i < dataView.byteLength; ++i) { | 
					
						
							|  |  |  |  |         let c = String.fromCharCode(dataView.getUint8(i)) | 
					
						
							|  |  |  |  |         if (c !== "\n") { | 
					
						
							|  |  |  |  |           str += c | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       thisVar.photo += str; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |     dConsole.info(`zzctest Read Card end`); | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     return true; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   changeQkfn() { | 
					
						
							|  |  |  |  |     this.qkFn() | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   async initData() { | 
					
						
							|  |  |  |  |     this.isFirstBoardPrePareSetPopupBtnShow = false; | 
					
						
							|  |  |  |  |     this.stepFlag = false | 
					
						
							|  |  |  |  |     this.faceCompareSucess = 0 | 
					
						
							|  |  |  |  |     this.showFaceCompare = false | 
					
						
							|  |  |  |  |     this.lsh = '1111111111111' | 
					
						
							|  |  |  |  |     this.callBackFlag = false | 
					
						
							|  |  |  |  |     AppStorage.setOrCreate('lsh', this.lsh) | 
					
						
							|  |  |  |  |     AppStorage.setOrCreate('statue', 2) | 
					
						
							|  |  |  |  |     // this.currentUser = EmptyCandidateObject | 
					
						
							|  |  |  |  |     this.numCount = 0 | 
					
						
							|  |  |  |  |     if (this.singlePlay) { | 
					
						
							|  |  |  |  |       // TODO 模拟假数据 | 
					
						
							|  |  |  |  |       this.list = CandidateData | 
					
						
							|  |  |  |  |       this.pageIndex = 0 | 
					
						
							|  |  |  |  |       this.dataList = this.list.slice(this.pageIndex * 4, this.pageIndex * 4 + 4) | 
					
						
							|  |  |  |  |       this.currentUser = this.dataList[0] | 
					
						
							|  |  |  |  |       this.currentUser.ksy2 = '' | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       this.lsh = this.currentUser.lsh | 
					
						
							|  |  |  |  |       this.examinerLoginInfo.ksyh = this.currentUser.ksy1sfzmhm | 
					
						
							|  |  |  |  |       AppStorage.setOrCreate('examinerInfo', this.examinerLoginInfo) | 
					
						
							|  |  |  |  |       AppStorage.setOrCreate('lsh', this.lsh) | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     // const syssetParams = await getSyncData('MA_SYSSET'); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   async heartMsg() { | 
					
						
							| 
									
										
										
										
											2025-04-10 15:10:31 +08:00
										 |  |  |  |     CenterUDPBusinessInstance.onMsg(this.onCenterMsg) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   //考点端查询缺考指令内容消息请求 | 
					
						
							|  |  |  |  |   getqkFn() { | 
					
						
							|  |  |  |  |     let tmpList: Array<number> = []; | 
					
						
							| 
									
										
										
										
											2025-04-11 16:23:23 +08:00
										 |  |  |  |     const number = AppStorage.get<number>('signNum')! | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     tmpList.push(NumberToByteArray(number, 1 * 8)[0]) | 
					
						
							|  |  |  |  |     const param: UDPParamType = { | 
					
						
							|  |  |  |  |       id: 41, | 
					
						
							|  |  |  |  |       list: tmpList, | 
					
						
							|  |  |  |  |       carNo: this.carInfo.carNo as string, | 
					
						
							|  |  |  |  |       placeId: this.carInfo.examinationRoomId as string | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     // globalThis.udpClient2.sendMsgExt(param, this.context) | 
					
						
							| 
									
										
										
										
											2025-04-10 15:10:31 +08:00
										 |  |  |  |     CenterUDPBusinessInstance.sendData(param) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   async initSysset() { | 
					
						
							|  |  |  |  |     const that = this; | 
					
						
							|  |  |  |  |     GetSyncData<MASYSSETTableType>("MA_SYSSET").then((syssetParams: MASYSSETTableType[]) => { | 
					
						
							|  |  |  |  |       const serialNumberArr = syssetParams.filter(sys => sys.v_no === '901') | 
					
						
							|  |  |  |  |       that.jkxlh = serialNumberArr?.[0]?.v_value || '' | 
					
						
							|  |  |  |  |       const ksxtbhArr = syssetParams.filter(sys => sys.v_no === '902') | 
					
						
							|  |  |  |  |       that.ksxtbh = ksxtbhArr?.[0]?.v_value || '222' | 
					
						
							|  |  |  |  |       const studentRefreshParam = syssetParams.filter(sys => sys.v_no === '452') //判断自动更新 | 
					
						
							|  |  |  |  |       that.studentRefreshStatue = studentRefreshParam?.[0]?.v_value || '0' | 
					
						
							|  |  |  |  |       const openCheckFlagParam = syssetParams.filter(sys => sys.v_no == '17') //0 | 
					
						
							|  |  |  |  |       const openCheckFlag = openCheckFlagParam?.[0]?.v_value == '1' ? '1' : '0' | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       const faceParam = syssetParams.filter(sys => sys.v_no == '2413') //3 | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.log('FaceOpenStatue', openCheckFlag, this.FaceOpenStatue) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       // 1身份证读卡器 2指纹 3人脸 | 
					
						
							|  |  |  |  |       if (openCheckFlag == '1') { | 
					
						
							|  |  |  |  |         that.FaceOpenStatue = faceParam?.[0]?.v_value == '3' ? '1' : '0' | 
					
						
							|  |  |  |  |         this.faceFlag = faceParam?.[0]?.v_value || '0' | 
					
						
							|  |  |  |  |         if (faceParam?.[0]?.v_value == '1') { | 
					
						
							|  |  |  |  |           that.openDeviceByIDCard() | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       // let a = await this.fileUtil.initFolder("/config/temptable") | 
					
						
							|  |  |  |  |       // this.fileUtil.addFile("temp.log", JSON.stringify(syssetParams)) | 
					
						
							|  |  |  |  |       syssetParams.forEach(sys => { | 
					
						
							|  |  |  |  |         //364	绕车一周评判时机(1-开始考试后判 2-开始考试前判) | 
					
						
							|  |  |  |  |         if (sys.v_no === '364' && decodeURIComponent(sys.v_value || "") == '2') { | 
					
						
							|  |  |  |  |           this.systemParam.Param364 = sys.v_value || "" | 
					
						
							|  |  |  |  |           that.isBoardPrePareSetPopupOpen = true; | 
					
						
							|  |  |  |  |           that.isFirstBoardPrePareSetPopupBtnShow = false | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         //398参数为1 第二场考试上车准备不考 | 
					
						
							|  |  |  |  |         if (sys.v_no === '398' && decodeURIComponent(sys.v_value || "") == '1') { | 
					
						
							|  |  |  |  |           that.systemParam.Param398 = decodeURIComponent(sys.v_value || "") | 
					
						
							|  |  |  |  |           that.isSecondBoardPrePareSetPopupOpen = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         // 车上没有缺考功能 | 
					
						
							|  |  |  |  |         if (sys.v_no === '770') { | 
					
						
							|  |  |  |  |           that.systemParam.Param770Str = sys.v_value || ""; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         // 开始考试前必须解开安全带或关车门 | 
					
						
							|  |  |  |  |         if (sys.v_no === '803') { | 
					
						
							|  |  |  |  |           that.systemParam.Param803Str = sys.v_value + ''; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         //判断是否考生是否按顺序考试 | 
					
						
							|  |  |  |  |         if (sys.v_no === '341' && decodeURIComponent(sys.v_value || "") == '1') { | 
					
						
							|  |  |  |  |           that.systemParam.Param341 = true | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           //todo | 
					
						
							|  |  |  |  |           that.systemParam.Param341 = true | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         //开始考试触发方式 | 
					
						
							|  |  |  |  |         if (sys.v_no === '612') { | 
					
						
							|  |  |  |  |           that.systemParam.Param612Str = decodeURIComponent(sys.v_value || "") | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         //车上考试过一次就不能缺考 | 
					
						
							|  |  |  |  |         if (sys.v_no === '352') { | 
					
						
							|  |  |  |  |           that.systemParam.Param352Str = decodeURIComponent(sys.v_value || "") | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         //828考生待考界面,安全员显示考试员 | 
					
						
							|  |  |  |  |         if (sys.v_no === '828') { | 
					
						
							|  |  |  |  |           that.systemParam.Param828Str = decodeURIComponent(sys.v_value || "") | 
					
						
							|  |  |  |  |           if (that.systemParam.Param828Str == '1') { | 
					
						
							|  |  |  |  |             that.labelBlocks[5].label = '安全员名' | 
					
						
							|  |  |  |  |           } else { | 
					
						
							|  |  |  |  |             that.labelBlocks[5].label = '考试员名' | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |           that.labelBlocks = JSON.parse(JSON.stringify(this.labelBlocks)) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         //视频保存天数 | 
					
						
							|  |  |  |  |         if (sys.v_no === '305') { | 
					
						
							|  |  |  |  |           that.systemParam.Param305Str = decodeURIComponent(sys.v_value || "") | 
					
						
							|  |  |  |  |           if (!Number(this.systemParam.Param305Str)) { | 
					
						
							|  |  |  |  |             that.systemParam.Param305Str = '2' | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       //0不自动更新 1自动更新(不限次数) 2没有考生更新2次 | 
					
						
							|  |  |  |  |       if (that.studentRefreshStatue == '2') { | 
					
						
							|  |  |  |  |         if (that.list.length == 0) { | 
					
						
							|  |  |  |  |           clearInterval(that.interval) | 
					
						
							|  |  |  |  |           that.interval = setInterval(() => { | 
					
						
							|  |  |  |  |             if (that.numCount < 3) { | 
					
						
							|  |  |  |  |               that.numCount++ | 
					
						
							|  |  |  |  |               if (that.list.length == 0) { | 
					
						
							|  |  |  |  |                 that.getExaminationStudentInfoFn() | 
					
						
							|  |  |  |  |               } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           }, 5000) | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           that.getExaminationStudentInfoFn() | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } else if (that.studentRefreshStatue == '1') { | 
					
						
							|  |  |  |  |         if (that.list.length == 0) { | 
					
						
							|  |  |  |  |           clearInterval(that.interval) | 
					
						
							|  |  |  |  |           that.interval = setInterval(() => { | 
					
						
							|  |  |  |  |             if (that.list.length == 0) { | 
					
						
							|  |  |  |  |               that.getExaminationStudentInfoFn() | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           }, 5000) | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           that.getExaminationStudentInfoFn() | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         // this.getExaminationItemFn() | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }) | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   //人脸比对窗口关闭 | 
					
						
							|  |  |  |  |   changeFaceCompareSuccess() { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |     dConsole.log('this.faceCompareSuces', this.faceCompareSucess, JSON.stringify(this.currentUser)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     if (this.faceCompareSucess > 0) { | 
					
						
							|  |  |  |  |       //人脸比对通过 | 
					
						
							|  |  |  |  |       AppStorage.setOrCreate('statue', 4) | 
					
						
							|  |  |  |  |       this.showFaceCompare = false | 
					
						
							|  |  |  |  |       this.sfbdinterfaceFn() | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   nextClick() { | 
					
						
							|  |  |  |  |     if (this.list.length <= 4 || this.pageIndex == Math.floor(this.list.length / 4)) { | 
					
						
							|  |  |  |  |       return | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     this.pageIndex++; | 
					
						
							|  |  |  |  |     this.dataList = this.list.slice(this.pageIndex * 4, this.pageIndex * 4 + 4) | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   prevClick() { | 
					
						
							|  |  |  |  |     if (this.list.length <= 4 || this.pageIndex == 0) { | 
					
						
							|  |  |  |  |       return | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     this.pageIndex--; | 
					
						
							|  |  |  |  |     this.dataList = this.list.slice(this.pageIndex * 4, this.pageIndex * 4 + 4) | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   //获取下载考生 | 
					
						
							|  |  |  |  |   async getExaminationStudentInfoFn() { | 
					
						
							|  |  |  |  |     if (this.singlePlay || this.updateTimeLimit) { | 
					
						
							|  |  |  |  |       return | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     this.isExamStart = false | 
					
						
							|  |  |  |  |     this.startExam = false | 
					
						
							|  |  |  |  |     this.updateTimeLimit = false | 
					
						
							|  |  |  |  |     // this.isBoardPrePareSetPopupOpen=true | 
					
						
							|  |  |  |  |     this.isFirstBoardPrePareSetPopupBtnShow = false | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |     dConsole.log('isFirstBoardPrePareSetPopupBtnShow', this.isFirstBoardPrePareSetPopupBtnShow, | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       this.isBoardPrePareSetPopupOpen) | 
					
						
							|  |  |  |  |     this.startExam = false | 
					
						
							|  |  |  |  |     await DB.clearTable('USER') | 
					
						
							|  |  |  |  |     await DB.clearTable('USERLIST') | 
					
						
							|  |  |  |  |     this.updateTimeLimit = true | 
					
						
							|  |  |  |  |     let md5Message: string = CryptoJS.MD5(this.carInfo.carId! + | 
					
						
							|  |  |  |  |       this.carInfo.examinationRoomId! + | 
					
						
							|  |  |  |  |       this.examinerLoginInfo.username!).toString(); | 
					
						
							|  |  |  |  |     const param = | 
					
						
							|  |  |  |  |       `<getExaminationStudentInfoReq><head><checkCode>${md5Message}</checkCode></head><body><carId>${this.carInfo.carId}</carId><examinationRoomId>${this.carInfo.examinationRoomId}</examinationRoomId><examinerName>${this.examinerLoginInfo.username}</examinerName><sfzmhm></sfzmhm></body></getExaminationStudentInfoReq>` | 
					
						
							|  |  |  |  |     try { | 
					
						
							|  |  |  |  |       getExaminationStudentInfo(param).then(async (res) => { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |         dConsole.log("temp log ", JSON.stringify(res)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |         setTimeout(() => { | 
					
						
							|  |  |  |  |           this.updateTimeLimit = false | 
					
						
							|  |  |  |  |         }, 3000) | 
					
						
							|  |  |  |  |         if (!res || res?.getExaminationStudentInfoRsp?.head?.resultCode == '1') { | 
					
						
							|  |  |  |  |           this.dataList = [] | 
					
						
							|  |  |  |  |           this.list = [] | 
					
						
							|  |  |  |  |           return | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         let dataList: User[] = [] | 
					
						
							|  |  |  |  |         this.list = [] | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         for (const key of Object.keys(res.getExaminationStudentInfoRsp.body)) { | 
					
						
							| 
									
										
										
										
											2025-04-15 14:24:27 +08:00
										 |  |  |  |           const a: User[] | User = Reflect.get(res.getExaminationStudentInfoRsp.body, key); | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |           if (Array.isArray(a)) { | 
					
						
							|  |  |  |  |             dataList = a; | 
					
						
							|  |  |  |  |           } else { | 
					
						
							|  |  |  |  |             dataList = [a]; | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         if (dataList.length) { | 
					
						
							|  |  |  |  |           this.numCount = 0 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         this.list = JSON.parse(JSON.stringify(dataList)) | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |         dConsole.log("temp list", JSON.stringify(this.list)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |         this.list.forEach((listData, index) => { | 
					
						
							|  |  |  |  |           //考过一次不允许切换学员 | 
					
						
							|  |  |  |  |           if (listData.kssycs == '1') { | 
					
						
							|  |  |  |  |             this.startExam = true | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |           listData.id = index.toString() | 
					
						
							|  |  |  |  |           Object.keys(listData).forEach((key) => { | 
					
						
							|  |  |  |  |             Reflect.set(listData, key, decodeURI(Reflect.get(listData, key))); | 
					
						
							|  |  |  |  |           }); | 
					
						
							|  |  |  |  |           if (this.systemParam.Param828Str == '1' || this.systemParam.Param828Str == '2') { | 
					
						
							|  |  |  |  |             // listData.ksy2=listData.ksy1; | 
					
						
							|  |  |  |  |             listData.ksy2 = this.examinerLoginInfo.kgxm || "" | 
					
						
							|  |  |  |  |           } else { | 
					
						
							|  |  |  |  |             // listData.ksy2=listData.ksy2; | 
					
						
							|  |  |  |  |             listData.ksy2 = this.examinerLoginInfo.kgxm || "" | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |           listData.kszp = this.photo + listData.kszp | 
					
						
							|  |  |  |  |           listData.ksmjzp = this.photo + listData.ksmjzp | 
					
						
							|  |  |  |  |         }) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         // await upDateTableByArray('USERLIST', this.list || []) | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |         dConsole.log("temp list", JSON.stringify(this.list)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         // await sqlInsertCommonFn("USERLIST", this.list || []) | 
					
						
							|  |  |  |  |         await SqlInsertTable('USERLIST', this.list || []) | 
					
						
							|  |  |  |  |         dataList = this.list.length > 4 ? this.list.slice(this.pageIndex * 4, this.pageIndex * 4 + 4) : this.list; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         this.dataList = dataList | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |         dConsole.log("temp list", JSON.stringify(this.dataList)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         const user = this.dataList.filter(res => { | 
					
						
							|  |  |  |  |           return res.kssycs == '1' | 
					
						
							|  |  |  |  |         }) | 
					
						
							|  |  |  |  |         if (this.dataList.length) { | 
					
						
							|  |  |  |  |           setTimeout(() => { | 
					
						
							|  |  |  |  |             this.currentUser = user.length ? user[0] : this.dataList[0] | 
					
						
							|  |  |  |  |             this.currentUser.ksy2 = this.examinerLoginInfo.kgxm || "" | 
					
						
							|  |  |  |  |             AppStorage.setOrCreate('lsh', this.currentUser.lsh) | 
					
						
							|  |  |  |  |             this.examinerLoginInfo.ksyh = this.currentUser.ksy1sfzmhm | 
					
						
							|  |  |  |  |             AppStorage.setOrCreate('examinerInfo', this.examinerLoginInfo) | 
					
						
							|  |  |  |  |           }, 200) | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           this.currentUser = EmptyCandidateObject | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         //364	绕车一周评判时机(1-开始考试后判 2-开始考试前判) | 
					
						
							|  |  |  |  |         if (this.systemParam.Param364 == '2') { | 
					
						
							|  |  |  |  |           this.isBoardPrePareSetPopupOpen = true; | 
					
						
							|  |  |  |  |           this.isFirstBoardPrePareSetPopupBtnShow = false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         //398参数为1 第二场考试上车准备不考 | 
					
						
							|  |  |  |  |         if (this.systemParam.Param398 == '1') { | 
					
						
							|  |  |  |  |           this.isSecondBoardPrePareSetPopupOpen = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         this.pageIndex = 0 | 
					
						
							|  |  |  |  |         GetSyncData<User>("USER").then(data => { | 
					
						
							|  |  |  |  |           if (data?.[0]) { | 
					
						
							|  |  |  |  |             this.getCurrentStudent(data[0].sfzmhm) | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         }) | 
					
						
							|  |  |  |  |       }).catch((error: BusinessError) => { | 
					
						
							|  |  |  |  |         this.updateTimeLimit = false | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |         dConsole.log('error12error' + error) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       }) | 
					
						
							|  |  |  |  |     } catch (error) { | 
					
						
							|  |  |  |  |       this.updateTimeLimit = false | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.log('error14error' + error) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-28 16:06:15 +08:00
										 |  |  |  |   // 缺考 | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |   qkFn() { | 
					
						
							|  |  |  |  |     if (this.systemParam.Param352Str == '1' && this.currentUser.kssycs == '1') { | 
					
						
							|  |  |  |  |       return | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     this.faceCompareSucess = 0 | 
					
						
							|  |  |  |  |     if (this.singlePlay) { | 
					
						
							|  |  |  |  |       this.qkFlag = false | 
					
						
							|  |  |  |  |       return | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |     dConsole.log('JsonJson', JSON.stringify(this.currentUser)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     const param: ExaminationStuAbsentParams = { | 
					
						
							|  |  |  |  |       carId: this.carInfo.carId || "", | 
					
						
							|  |  |  |  |       sfzmhm: this.currentUser.sfzmhm, | 
					
						
							|  |  |  |  |       examinationRoomId: this.carInfo.examinationRoomId || "", | 
					
						
							|  |  |  |  |       username: this.examinerLoginInfo.username || "", | 
					
						
							| 
									
										
										
										
											2025-07-15 16:55:14 +08:00
										 |  |  |  |       lsh: this.lsh, | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |     dConsole.log('carNo1111', param) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     examinationStuAbsent(param).then(res => { | 
					
						
							|  |  |  |  |       const arr = [this.signNum || 0, 1] | 
					
						
							|  |  |  |  |       let tmpList: number[] = []; | 
					
						
							|  |  |  |  |       tmpList.push(NumberToByteArray(arr[0], 1 * 8)[0]) | 
					
						
							|  |  |  |  |       tmpList.push(NumberToByteArray(arr[1] ?? 0, 1 * 8)[0]) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       const param: UDPParamType = { | 
					
						
							|  |  |  |  |         id: 43, | 
					
						
							|  |  |  |  |         list: tmpList, | 
					
						
							|  |  |  |  |         carNo: this.carInfo.carNo || "", | 
					
						
							|  |  |  |  |         placeId: this.carInfo.examinationRoomId || "" | 
					
						
							|  |  |  |  |       } | 
					
						
							| 
									
										
										
										
											2025-04-10 15:10:31 +08:00
										 |  |  |  |       CenterUDPBusinessInstance.sendData(param) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       // globalThis.udpClient2.sendMsgExt(param, this.context) | 
					
						
							|  |  |  |  |       if (res.examinationStuAbsentRsp && res.examinationStuAbsentRsp.head && | 
					
						
							|  |  |  |  |         res.examinationStuAbsentRsp.head.resultCode == '0') { | 
					
						
							|  |  |  |  |         this.pageIndex = 0 | 
					
						
							|  |  |  |  |         this.qkFlag = false | 
					
						
							|  |  |  |  |         this.currentUser = EmptyCandidateObject | 
					
						
							| 
									
										
										
										
											2025-07-15 16:55:14 +08:00
										 |  |  |  |         this.missAnExamDialogController.close() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |         this.getExaminationStudentInfoFn() | 
					
						
							|  |  |  |  |         return | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }).catch((error: BusinessError) => { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.log('error12error' + error) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     }) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-28 16:06:15 +08:00
										 |  |  |  |   onCenterMsg = (val: CenterCallBackMsgType) => { | 
					
						
							|  |  |  |  |     if (val.id == 32) { | 
					
						
							|  |  |  |  |       AppStorage.setOrCreate('signNum', val.body[1]) | 
					
						
							|  |  |  |  |       if (val.body[0] == 7) { | 
					
						
							|  |  |  |  |         //缺考处理 | 
					
						
							|  |  |  |  |         this.getqkFn() | 
					
						
							|  |  |  |  |         this.signNum = val.body[1] | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } else if (val.id == 42) { | 
					
						
							|  |  |  |  |       //收到中心缺考确认消息 | 
					
						
							|  |  |  |  |       this.qkFn() | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |   async getExaminationItemFn() { | 
					
						
							|  |  |  |  |     if (!this.currentUser.lsh || this.singlePlay) { | 
					
						
							|  |  |  |  |       return | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     const examItems = await getExaminationItem({ | 
					
						
							|  |  |  |  |       time: GetCurrentTime() || "", | 
					
						
							|  |  |  |  |       carId: this.carInfo.carId || "", | 
					
						
							|  |  |  |  |       lsh: this.currentUser.lsh || '', | 
					
						
							|  |  |  |  |       examinationRoomId: this.carInfo.examinationRoomId || "" | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (examItems?.getExaminationItemRsp?.body?.kssycs != 0) { | 
					
						
							|  |  |  |  |       this.getExaminationStudentInfoFn() | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       this.dataList = [] | 
					
						
							|  |  |  |  |       this.currentUser = EmptyCandidateObject | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   //身份比对 | 
					
						
							|  |  |  |  |   async sfbdinterfaceFn() { | 
					
						
							|  |  |  |  |     AppStorage.setOrCreate('statue', 4) | 
					
						
							|  |  |  |  |     this.stepFlag = true | 
					
						
							|  |  |  |  |     let examItems: GetExaminationItemRsp = { | 
					
						
							|  |  |  |  |       getExaminationItemRsp: | 
					
						
							|  |  |  |  |       { | 
					
						
							|  |  |  |  |         body: { ykxx: '' } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  |     if (!this.singlePlay) { | 
					
						
							|  |  |  |  |       //获取已考项目 | 
					
						
							|  |  |  |  |       examItems = await getExaminationItem({ | 
					
						
							|  |  |  |  |         time: GetCurrentTime(), | 
					
						
							|  |  |  |  |         carId: this.carInfo.carId || "", | 
					
						
							|  |  |  |  |         lsh: this.currentUser.lsh || '', | 
					
						
							|  |  |  |  |         examinationRoomId: this.carInfo.examinationRoomId || "" | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     this.currentUser.id = '1' | 
					
						
							|  |  |  |  |     const avPlayer = this.avPlayer; | 
					
						
							| 
									
										
										
										
											2025-06-26 17:28:28 +08:00
										 |  |  |  |     this.startExamDialogController.open() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     avPlayer.playAudio([`voice/监管通信中.mp3`], false, async () => { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.info('surenjun', '播放结束开始考试接口调用') | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       const res = await this.beginExam() | 
					
						
							| 
									
										
										
										
											2025-07-15 16:55:14 +08:00
										 |  |  |  |       dConsole.info('surenjun', '开始考试接口调用结束', JSON.stringify(res)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       //TODO code转换 | 
					
						
							|  |  |  |  |       if (res.code != 1) { | 
					
						
							|  |  |  |  |         avPlayer.playAudio([res.code == -200 ? 'voice/photo_error.mp3' : 'voice/监管审核未通过.mp3']); | 
					
						
							| 
									
										
										
										
											2025-06-26 17:28:28 +08:00
										 |  |  |  |         this.startExamDialogController.close() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |         this.isExamStart = false | 
					
						
							|  |  |  |  |         promptAction.showToast({ | 
					
						
							|  |  |  |  |           message: res.message, | 
					
						
							|  |  |  |  |           duration: 4000 | 
					
						
							|  |  |  |  |         }) | 
					
						
							|  |  |  |  |         return | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       this.currentUser.id = '0' | 
					
						
							|  |  |  |  |       // await upDateTableByArray('USER', [this.currentUser]) | 
					
						
							|  |  |  |  |       await SqlInsertTable('USER', [this.currentUser]) | 
					
						
							|  |  |  |  |       this.stepFlag = false | 
					
						
							| 
									
										
										
										
											2025-06-26 17:28:28 +08:00
										 |  |  |  |       this.startExamDialogController.close() | 
					
						
							| 
									
										
										
										
											2025-07-16 11:28:34 +08:00
										 |  |  |  |       // 初始化开始考试过程数据文件夹 | 
					
						
							|  |  |  |  |       InitializeExamProcessData(this.currentUser) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       router.pushUrl({ | 
					
						
							|  |  |  |  |         url: 'pages/Judge', | 
					
						
							|  |  |  |  |         params: { | 
					
						
							|  |  |  |  |           examItems: examItems?.getExaminationItemRsp?.body?.ykxx, | 
					
						
							|  |  |  |  |           sczb: Number(this.isBoardPrePareSetPopupOpen), | 
					
						
							|  |  |  |  |           kfdm: this.sczbkf, | 
					
						
							|  |  |  |  |           //真实监管项目 | 
					
						
							|  |  |  |  |           kString: decodeURIComponent(res.keystr || '') | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }, router.RouterMode.Single); | 
					
						
							|  |  |  |  |       this.updateTimeLimit = false | 
					
						
							|  |  |  |  |       this.stopDeviceById() | 
					
						
							|  |  |  |  |       this.stepFlag = false | 
					
						
							|  |  |  |  |     }) | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   // 开始考试 | 
					
						
							|  |  |  |  |   async beginExam(): Promise<BeginExamRequest> { | 
					
						
							| 
									
										
										
										
											2025-07-04 10:50:33 +08:00
										 |  |  |  |     dConsole.log(StartExamTag, "开始考试") | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     const startHourTime = dayTs().format("HHmmssSSS") | 
					
						
							|  |  |  |  |     AppStorage.setOrCreate('startHourTime', startHourTime) | 
					
						
							| 
									
										
										
										
											2025-08-06 14:57:59 +08:00
										 |  |  |  |     const photoBase64 = await GetPhotoBase64(this.context); | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     if (photoBase64 == '') { | 
					
						
							| 
									
										
										
										
											2025-07-04 10:50:33 +08:00
										 |  |  |  |       dConsole.log(StartExamTag, "拍照失败") | 
					
						
							| 
									
										
										
										
											2025-06-26 17:28:28 +08:00
										 |  |  |  |       this.startExamDialogController.close() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       return { code: -200 } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     const drvexam: DrvexamType = { | 
					
						
							| 
									
										
										
										
											2025-07-15 16:55:14 +08:00
										 |  |  |  |       lsh: this.currentUser.lsh, | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       kskm: this.carInfo.examSubject, | 
					
						
							|  |  |  |  |       ksxtbh: this.ksxtbh || '222', | 
					
						
							|  |  |  |  |       sfzmhm: this.currentUser.sfzmhm || '', | 
					
						
							|  |  |  |  |       ksysfzmhm: this.currentUser.ksy1sfzmhm || '', | 
					
						
							|  |  |  |  |       ksxl: this.currentUser.xldm, | 
					
						
							|  |  |  |  |       zp: photoBase64, | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |       kssj: dayTs().format("YYYY-MM-DD HH:mm:ss") || '', | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       kchp: decodeURI(this.carInfo.plateNo || ""), | 
					
						
							|  |  |  |  |       Ksy2sfzmhm: this.currentUser.ksy2sfzmhm || '' | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2025-07-04 10:50:33 +08:00
										 |  |  |  |     dConsole.log(StartExamTag, "开始考试参数", drvexam) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     const param: RegulatoryInterfaceParams = { | 
					
						
							|  |  |  |  |       drvexam, | 
					
						
							|  |  |  |  |       xtlb: '17', | 
					
						
							|  |  |  |  |       //接口序列号 | 
					
						
							|  |  |  |  |       jkxlh: this.jkxlh, | 
					
						
							|  |  |  |  |       //接口标识 | 
					
						
							|  |  |  |  |       jkid: '17C51', | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |     dConsole.info('surenjunjianguan', JSON.stringify(param)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     const temp = await writeObjectOut(param, "", this.context); | 
					
						
							|  |  |  |  |     AppStorage.setOrCreate('lsh', this.currentUser.lsh) | 
					
						
							|  |  |  |  |     this.examinerLoginInfo.ksyh = this.currentUser.ksy1sfzmhm | 
					
						
							|  |  |  |  |     AppStorage.setOrCreate('examinerInfo', this.examinerLoginInfo) | 
					
						
							|  |  |  |  |     return temp | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   //开始上车准备 | 
					
						
							|  |  |  |  |   prePareSCZB = async () => { | 
					
						
							|  |  |  |  |     try { | 
					
						
							| 
									
										
										
										
											2025-07-25 17:44:57 +08:00
										 |  |  |  |       await CheckSignal(this.systemParam, this.avPlayer) | 
					
						
							|  |  |  |  |       DifferentialAndSignal.clearMsg() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       this.isExamStart = true | 
					
						
							|  |  |  |  |       this.currentUser.id = '0' | 
					
						
							|  |  |  |  |       DB.insertData("USER", this.currentUser).then(() => { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |         dConsole.log("USER insert success",) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       }).catch((err: BusinessError) => { | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |         dConsole.log("USER insert fail", JSON.stringify(err)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       }) | 
					
						
							| 
									
										
										
										
											2025-06-23 17:24:47 +08:00
										 |  |  |  |       dConsole.log("User", JSON.stringify(this.currentUser)) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       AppStorage.setOrCreate('statue', 4) | 
					
						
							|  |  |  |  |       this.isBoardPrePareSetPopupShow = true; | 
					
						
							|  |  |  |  |       this.isFirstBoardPrePareSetPopupBtnShow = true; | 
					
						
							|  |  |  |  |       this.stepFlag = false | 
					
						
							|  |  |  |  |       this.stopDeviceById() | 
					
						
							|  |  |  |  |     } catch (e) { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   aboutToDisappear() { | 
					
						
							|  |  |  |  |     this.outClick() | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   outClick() { | 
					
						
							|  |  |  |  |     clearInterval(this.interval) | 
					
						
							|  |  |  |  |     this.stopDeviceById() | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   // 几个按钮公共样式 | 
					
						
							|  |  |  |  |   @Styles | 
					
						
							|  |  |  |  |   commStyle(){ | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |     .width(389) | 
					
						
							|  |  |  |  |     .height(122) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |     .backgroundImage($r('app.media.button_nor')) | 
					
						
							|  |  |  |  |     .backgroundImageSize({ width: '100%', height: '100%' }) | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |     .margin({ bottom: 21 }) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   build() { | 
					
						
							|  |  |  |  |     Column() { | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |       HeaderComponent({ | 
					
						
							|  |  |  |  |         shortLogo: true, | 
					
						
							|  |  |  |  |         shouBackArea: true | 
					
						
							|  |  |  |  |       }) | 
					
						
							|  |  |  |  |       Column() { | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |         Row() { | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |           Row() { | 
					
						
							|  |  |  |  |             ForEach(this.dataList, (item: User) => { | 
					
						
							|  |  |  |  |               Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { | 
					
						
							|  |  |  |  |                 Column() { | 
					
						
							|  |  |  |  |                   CommTextComponent({ | 
					
						
							|  |  |  |  |                     color: item.sfzmhm != this.currentUser.sfzmhm ? '#FFFFFF' : '#000000', | 
					
						
							|  |  |  |  |                     text: item.lsh | 
					
						
							|  |  |  |  |                   }) | 
					
						
							|  |  |  |  |                   CommTextComponent({ | 
					
						
							|  |  |  |  |                     color: item.sfzmhm != this.currentUser.sfzmhm ? '#FFFFFF' : '#000000', | 
					
						
							|  |  |  |  |                     text: decodeURIComponent(item.xm) | 
					
						
							|  |  |  |  |                   }) | 
					
						
							|  |  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |               } | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |               .width(292) // 165 * 1.770833 ≈ 292.187 → 292 | 
					
						
							|  |  |  |  |               .height(151) // 85 * 1.770833 ≈ 150.52 → 151 | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |               .backgroundImage(item.sfzmhm != this.currentUser.sfzmhm ? $r('app.media.userbox2') : | 
					
						
							|  |  |  |  |               $r('app.media.userboxbg')) | 
					
						
							|  |  |  |  |               .backgroundImageSize({ width: '100%', height: '100%' }) | 
					
						
							|  |  |  |  |               .onClick(() => { | 
					
						
							|  |  |  |  |                 dConsole.log('this.startExam', this.startExam, this.systemParam.Param364, this.isExamStart) | 
					
						
							|  |  |  |  |                 if ((this.isExamStart && !this.singlePlay && this.systemParam.Param341) || | 
					
						
							|  |  |  |  |                   (this.startExam && this.systemParam.Param364 == '2')) { | 
					
						
							|  |  |  |  |                   return | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 this.currentUser = EmptyCandidateObject | 
					
						
							|  |  |  |  |                 AppStorage.setOrCreate('lsh', item.lsh) | 
					
						
							|  |  |  |  |                 setTimeout(() => { | 
					
						
							|  |  |  |  |                   this.currentUser = item | 
					
						
							|  |  |  |  |                   this.currentUser.ksy2 = this.examinerLoginInfo.kgxm || "" | 
					
						
							|  |  |  |  |                 }, 200) | 
					
						
							|  |  |  |  |               }) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |             }) | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |           }.width(1133) // 640 * 1.770833 ≈ 1133.33 → 1133 | 
					
						
							|  |  |  |  |           .margin({ left: 53 }) // 30 * 1.770833 ≈ 53.12 → 53 | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |           Image($r('app.media.dk_prev')) | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |             .width(159)// 90 * 1.770833 ≈ 159.37 → 159 | 
					
						
							|  |  |  |  |             .height(124)// 70 * 1.770833 ≈ 123.96 → 124 | 
					
						
							|  |  |  |  |             .margin({ left: 115, right: 18 })// 65→115, 10→18 | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |             .onClick(() => { | 
					
						
							|  |  |  |  |               this.prevClick() | 
					
						
							|  |  |  |  |             }) | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |           Image($r('app.media.dk_next')) | 
					
						
							|  |  |  |  |             .width(159)// 90→159 | 
					
						
							|  |  |  |  |             .height(124)// 70→124 | 
					
						
							|  |  |  |  |             .onClick(() => { | 
					
						
							|  |  |  |  |               this.nextClick() | 
					
						
							|  |  |  |  |             }) | 
					
						
							|  |  |  |  |         }.margin({ top: 71, bottom: 18 }) // 40→71, 10→18 | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |         Flex({ justifyContent: FlexAlign.SpaceBetween }) { | 
					
						
							|  |  |  |  |           Row() { | 
					
						
							|  |  |  |  |             Column() { | 
					
						
							|  |  |  |  |               if (this.currentUser.kszp) { | 
					
						
							|  |  |  |  |                 AvatarComponent({ | 
					
						
							|  |  |  |  |                   url: this.currentUser.kszp ? this.currentUser.kszp : '' | 
					
						
							|  |  |  |  |                 }) | 
					
						
							|  |  |  |  |               } else { | 
					
						
							|  |  |  |  |                 AvatarComponent({ | 
					
						
							|  |  |  |  |                   url: "" | 
					
						
							|  |  |  |  |                 }) | 
					
						
							|  |  |  |  |               } | 
					
						
							|  |  |  |  |               if (this.currentUser.ksmjzp) { | 
					
						
							|  |  |  |  |                 AvatarComponent({ | 
					
						
							|  |  |  |  |                   url: this.currentUser.ksmjzp ? this.currentUser.ksmjzp : '' | 
					
						
							|  |  |  |  |                 }) | 
					
						
							|  |  |  |  |               } else { | 
					
						
							|  |  |  |  |                 AvatarComponent({ | 
					
						
							|  |  |  |  |                   url: "" | 
					
						
							|  |  |  |  |                 }) | 
					
						
							|  |  |  |  |               } | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |             Column() { | 
					
						
							|  |  |  |  |               ForEach(this.labelBlocks, (item: LabelBlockType) => { | 
					
						
							|  |  |  |  |                 LabelBlockComponent({ | 
					
						
							|  |  |  |  |                   label: item.label, | 
					
						
							|  |  |  |  |                   value: GetCurrentUserKeyValue(this.currentUser, item.key) | 
					
						
							|  |  |  |  |                 }) | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |               }) | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           } | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |           .width(1176) // 664→1176 | 
					
						
							|  |  |  |  |           .height(600) // 339→600 | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |           .backgroundImage($r('app.media.dkbg')) | 
					
						
							|  |  |  |  |           .backgroundImageSize({ width: '100%', height: '100%' }) | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |           .margin({ left: 94 }) // 53→94 | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |           Column() { | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |             imageBtn({ btnWidth: 390, btnHeight: 122, imgSrc: $r('app.media.yydj_btn') })// 220→390, 69→122 | 
					
						
							|  |  |  |  |               .margin({ bottom: 21 }) // 12→21 | 
					
						
							|  |  |  |  |             imageBtn({ btnWidth: 390, btnHeight: 122, imgSrc: $r('app.media.gx_btn') }) | 
					
						
							|  |  |  |  |               .margin({ bottom: 21 }) | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |               .onClick(() => { | 
					
						
							|  |  |  |  |                 if (this.isExamStart && !this.singlePlay) { | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |                   return | 
					
						
							|  |  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |                 this.faceCompareSucess = 0 | 
					
						
							|  |  |  |  |                 this.numCount = 0 | 
					
						
							|  |  |  |  |                 this.getExaminationStudentInfoFn() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |               }) | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |             imageBtn({ btnWidth: 390, btnHeight: 122, imgSrc: $r('app.media.qk_btn') }) | 
					
						
							|  |  |  |  |               .margin({ bottom: 21 }) | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |               .onClick(() => { | 
					
						
							| 
									
										
										
										
											2025-06-26 17:28:28 +08:00
										 |  |  |  |                 if ((this.systemParam.Param352Str == '1' && this.currentUser.kssycs == '1') || | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |                   this.systemParam.Param770Str == '1') { | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |                   return | 
					
						
							|  |  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |                 // this.qkFlag = true | 
					
						
							| 
									
										
										
										
											2025-06-26 17:28:28 +08:00
										 |  |  |  |                 console.log("打开缺考") | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |                 this.missAnExamDialogController.open() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |               }) | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (this.isBoardPrePareSetPopupOpen && | 
					
						
							|  |  |  |  |               (this.isSecondBoardPrePareSetPopupOpen && this.currentUser.kssycs == '2') && | 
					
						
							|  |  |  |  |               !this.isFirstBoardPrePareSetPopupBtnShow) { | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |               imageBtn({ btnWidth: 390, btnHeight: 122, imgSrc: $r('app.media.sczb_btn') }) | 
					
						
							|  |  |  |  |                 .margin({ bottom: 21 }) | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |                 .onClick(async () => { | 
					
						
							|  |  |  |  |                   if (this.systemParam.Param612Str == '1') { | 
					
						
							|  |  |  |  |                     return | 
					
						
							|  |  |  |  |                   } | 
					
						
							|  |  |  |  |                   await this.prePareSCZB() | 
					
						
							|  |  |  |  |                 }) | 
					
						
							|  |  |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2025-06-26 14:27:10 +08:00
										 |  |  |  |               imageBtn({ btnWidth: 390, btnHeight: 122, imgSrc: $r('app.media.ksks_btn') }) | 
					
						
							|  |  |  |  |                 .margin({ bottom: 21 }) | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |                 .onClick(async () => { | 
					
						
							|  |  |  |  |                   if (this.systemParam.Param612Str == '1') { | 
					
						
							| 
									
										
										
										
											2025-07-15 16:55:14 +08:00
										 |  |  |  |                     dConsole.log(UserInfoTag, "不给开始考试") | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |                     return | 
					
						
							|  |  |  |  |                   } | 
					
						
							|  |  |  |  |                   await this.prePareExam() | 
					
						
							|  |  |  |  |                 }) | 
					
						
							|  |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |           } | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-06-26 11:18:07 +08:00
										 |  |  |  |       }.backgroundColor("#1E1E1E").width("100%").height("100%") | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |       if (this.showFaceCompare) { | 
					
						
							|  |  |  |  |         FaceCompare({ | 
					
						
							|  |  |  |  |           sfzh: this.currentUser.sfzmhm, | 
					
						
							|  |  |  |  |           firstImage: this.currentUser.kszp, | 
					
						
							| 
									
										
										
										
											2025-07-14 13:23:36 +08:00
										 |  |  |  |           faceCompareSuccess: $faceCompareSucess, | 
					
						
							| 
									
										
										
										
											2025-04-10 10:28:07 +08:00
										 |  |  |  |           getqkFlag: $getqkFlag, | 
					
						
							|  |  |  |  |           faceCatchImg: $faceCatchImg, | 
					
						
							|  |  |  |  |           showFaceCompare: $showFaceCompare, | 
					
						
							|  |  |  |  |           lsh: AppStorage.get<string>('lsh'), | 
					
						
							|  |  |  |  |         }) | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       if (this.isBoardPrePareSetPopupShow) { | 
					
						
							|  |  |  |  |         BoardPrePareSetPopup({ | 
					
						
							|  |  |  |  |           closePopup: () => { | 
					
						
							|  |  |  |  |             this.isBoardPrePareSetPopupShow = false; | 
					
						
							|  |  |  |  |           }, | 
					
						
							|  |  |  |  |           confirmMark: (kfdm: SckType[]) => { | 
					
						
							|  |  |  |  |             this.sczbkf = kfdm | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         }) | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     .height('100%') | 
					
						
							|  |  |  |  |     .width('100%') | 
					
						
							|  |  |  |  |     .backgroundImage($r('app.media.bg')) | 
					
						
							|  |  |  |  |     .backgroundImageSize({ width: '100%', height: '100%' }) | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 |