| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  | import common from '@ohos.app.ability.common'; | 
					
						
							|  |  |  |  | import router from '@ohos.router'; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-11 14:08:48 +08:00
										 |  |  |  | import { JudgeConfig } from "../config"; | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  | import promptAction from '@ohos.promptAction'; | 
					
						
							|  |  |  |  | import errorMsgDialog from './compontents/errorMsgDialog'; | 
					
						
							|  |  |  |  | import imageBtn from './compontents/imageBtn'; | 
					
						
							|  |  |  |  | import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements'; | 
					
						
							|  |  |  |  | import { BaseInfoType, centerCallBackMsgType } from '../model/Common'; | 
					
						
							|  |  |  |  | import { | 
					
						
							|  |  |  |  |   CarInfoType, | 
					
						
							|  |  |  |  |   InitializeTheCentralTableType, | 
					
						
							|  |  |  |  |   MASYSSETTableType, | 
					
						
							|  |  |  |  |   TimeSynchronizationRspBody | 
					
						
							|  |  |  |  | } from '../model'; | 
					
						
							|  |  |  |  | import { GetCarInfo, GetDeviceInfo, SetCurrentTime, SetSerialNumber, UseAuth } from './Index/utils'; | 
					
						
							|  |  |  |  | import { GetSyncData, InitializeTheCentralTable } from '../utils/table/Operation'; | 
					
						
							|  |  |  |  | import { BusinessError } from '@ohos.base'; | 
					
						
							|  |  |  |  | import { delPic } from '../utils/Video'; | 
					
						
							|  |  |  |  | import { FileHelper } from '../utils/FileHelp'; | 
					
						
							|  |  |  |  | import { GetCurrentTime } from '../utils/Common'; | 
					
						
							|  |  |  |  | import { ObtainUdpBusinessInstance } from '../utils/business/ObtainUdpBusiness'; | 
					
						
							| 
									
										
										
										
											2025-04-10 15:10:31 +08:00
										 |  |  |  | import { CenterUDPBusinessInstance } from '../utils/business/CenterUdpBusiness'; | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  | import { DrivingDataStorage } from '../utils/business/DrivingDataStorage'; | 
					
						
							|  |  |  |  | import { JudgeUdpBusinessInstance } from '../utils/business/JudgeUdpBusiness'; | 
					
						
							|  |  |  |  | import { JudgeEmitterInstance } from '../utils/business/UdpEvent'; | 
					
						
							| 
									
										
										
										
											2025-04-11 10:13:29 +08:00
										 |  |  |  | import { LoadingDialog } from './Index/Loading'; | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-10 09:30:47 +08:00
										 |  |  |  | @Entry | 
					
						
							|  |  |  |  | @Component | 
					
						
							|  |  |  |  | struct Index { | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |   @State url: string = '' | 
					
						
							|  |  |  |  |   @State hasAuth: boolean = false; | 
					
						
							|  |  |  |  |   @State dialogVisible: boolean = false; | 
					
						
							|  |  |  |  |   @State singlePlay: boolean = false; | 
					
						
							|  |  |  |  |   @State baseInfo: BaseInfoType = {}; | 
					
						
							|  |  |  |  |   @State deviceId: string = ''; | 
					
						
							|  |  |  |  |   @State angle: number = 0 | 
					
						
							|  |  |  |  |   @State dialogRatio: number = 0.8 | 
					
						
							|  |  |  |  |   @State ratio: number = 1700 / 960 | 
					
						
							|  |  |  |  |   @State delLoading: boolean = false | 
					
						
							|  |  |  |  |   @State initParamFlag: boolean = false | 
					
						
							|  |  |  |  |   @State fd: number = -1; | 
					
						
							|  |  |  |  |   @State carInfo: CarInfoType = {}; | 
					
						
							|  |  |  |  |   @State num: number = 0; | 
					
						
							| 
									
										
										
										
											2025-04-10 15:10:31 +08:00
										 |  |  |  |   private context = getContext(this) as common.UIAbilityContext; | 
					
						
							| 
									
										
										
										
											2025-04-11 10:13:29 +08:00
										 |  |  |  |   private fileHelper: FileHelper = new FileHelper(this.context) | 
					
						
							|  |  |  |  |   private interval = -1; | 
					
						
							|  |  |  |  |   private avPlayer: VoiceAnnounce = new VoiceAnnounce(this.context) | 
					
						
							|  |  |  |  |   private timeInfo: TimeSynchronizationRspBody = {} | 
					
						
							|  |  |  |  |   private loadingDialog: CustomDialogController = new CustomDialogController({ | 
					
						
							|  |  |  |  |     builder: LoadingDialog(), | 
					
						
							|  |  |  |  |     customStyle: true, | 
					
						
							|  |  |  |  |     alignment: DialogAlignment.Center, | 
					
						
							|  |  |  |  |     autoCancel: false | 
					
						
							|  |  |  |  |   }) | 
					
						
							|  |  |  |  |   private errorDialog: CustomDialogController = new CustomDialogController({ | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |     builder: errorMsgDialog({ | 
					
						
							|  |  |  |  |       title: AppStorage.get('title'), | 
					
						
							|  |  |  |  |       type: AppStorage.get('type'), | 
					
						
							|  |  |  |  |       cancel: () => { | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       confirm: () => { | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }), | 
					
						
							|  |  |  |  |     customStyle: true, | 
					
						
							|  |  |  |  |     alignment: DialogAlignment.Center, | 
					
						
							| 
									
										
										
										
											2025-04-11 10:13:29 +08:00
										 |  |  |  |   }) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   @Styles | 
					
						
							|  |  |  |  |   commStyle(){ | 
					
						
							|  |  |  |  |     .width(220 * this.ratio * this.dialogRatio) | 
					
						
							|  |  |  |  |     .height(69 * this.ratio * this.dialogRatio) | 
					
						
							|  |  |  |  |     .backgroundImage($r('app.media.button_nor')) | 
					
						
							|  |  |  |  |     .backgroundImageSize({ width: '100%', height: '100%' }) | 
					
						
							|  |  |  |  |     // .margin({ bottom: 12 * this.ratio }) | 
					
						
							|  |  |  |  |   } | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   async aboutToAppear() { | 
					
						
							|  |  |  |  |     this.ratio = AppStorage.get<BaseInfoType>('baseInfo')?.ratio || 1.4 | 
					
						
							|  |  |  |  |     this.angle = 0 | 
					
						
							|  |  |  |  |     AppStorage.set('lsh', '1111111111111') | 
					
						
							|  |  |  |  |     // TODO 未改 | 
					
						
							|  |  |  |  |     // globalThis.errorDialog = this.errorDialog | 
					
						
							|  |  |  |  |     JudgeEmitterInstance.init() | 
					
						
							|  |  |  |  |     GetSyncData<MASYSSETTableType>("MA_SYSSET").then((res: MASYSSETTableType[]) => { | 
					
						
							|  |  |  |  |       res.forEach((element) => { | 
					
						
							|  |  |  |  |         if (element.v_no === "305") { | 
					
						
							|  |  |  |  |           delPic(Number(element.v_value), 1, this.context) | 
					
						
							|  |  |  |  |           delPic(Number(element.v_value), 2, this.context) | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   async onPageShow(): Promise<void> { | 
					
						
							|  |  |  |  |     this.baseInfo = AppStorage.get<BaseInfoType>('baseInfo')! | 
					
						
							| 
									
										
										
										
											2025-04-11 10:13:29 +08:00
										 |  |  |  |     await UseAuth(this.context) | 
					
						
							|  |  |  |  |     this.initParams() | 
					
						
							|  |  |  |  |     AppStorage.setOrCreate('singlePlay', false) | 
					
						
							|  |  |  |  |     this.context.resourceManager.getRawFileContent("welcome.wav") | 
					
						
							|  |  |  |  |       .then(() => { | 
					
						
							|  |  |  |  |         this.avPlayer.playAudio(['welcome.wav']) | 
					
						
							|  |  |  |  |       }) | 
					
						
							|  |  |  |  |       .catch((error: BusinessError) => { | 
					
						
							|  |  |  |  |         console.log("getRawFileContent promise error is " + error); | 
					
						
							|  |  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |     this.num = 0 | 
					
						
							|  |  |  |  |     AppStorage.setOrCreate('lsh', '1111111111111') | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   async testXMLToJSONInWorker() { | 
					
						
							|  |  |  |  |     const param: InitializeTheCentralTableType = { | 
					
						
							|  |  |  |  |       carId: this.carInfo?.carId, | 
					
						
							|  |  |  |  |       examinationRoomId: this.carInfo?.examinationRoomId, | 
					
						
							|  |  |  |  |       judgeVersion: this.baseInfo?.judgeVersion, | 
					
						
							| 
									
										
										
										
											2025-04-10 15:10:31 +08:00
										 |  |  |  |       shellVersion: this.baseInfo?.version || "", | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |       paraKdid: this.timeInfo?.paraKdid || this.timeInfo?.kdid, | 
					
						
							|  |  |  |  |       kdid: this.timeInfo?.kdid || this.timeInfo?.paraKdid, | 
					
						
							|  |  |  |  |       mode: this.timeInfo?.mode, | 
					
						
							|  |  |  |  |       context: this.context, | 
					
						
							|  |  |  |  |       host: AppStorage.get<string>('host'), | 
					
						
							|  |  |  |  |       centerHost: this.timeInfo?.url, | 
					
						
							|  |  |  |  |       singlePlay: this.singlePlay | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     InitializeTheCentralTable(param).then((ret) => { | 
					
						
							| 
									
										
										
										
											2025-04-11 10:13:29 +08:00
										 |  |  |  |       this.loadingDialog.close() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |       if (ret) { | 
					
						
							|  |  |  |  |         GetSyncData<MASYSSETTableType>("MA_SYSSET").then(data => { | 
					
						
							|  |  |  |  |           data.forEach(sys => { | 
					
						
							|  |  |  |  |             //判断是否能点开始考试 | 
					
						
							|  |  |  |  |             if (sys.v_no === '854') { | 
					
						
							|  |  |  |  |               AppStorage.setOrCreate('param854Str', sys.v_value) | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (sys.v_no === '824' && decodeURIComponent(sys.v_value || '') == '0') { | 
					
						
							|  |  |  |  |               router.pushUrl({ | 
					
						
							|  |  |  |  |                 url: 'pages/CarCheck', | 
					
						
							|  |  |  |  |                 params: { | 
					
						
							|  |  |  |  |                   'fromIndex': true | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |               }, router.RouterMode.Single) | 
					
						
							|  |  |  |  |             } else { | 
					
						
							|  |  |  |  |               router.pushUrl({ | 
					
						
							|  |  |  |  |                 url: 'pages/ExaminerLogin', | 
					
						
							|  |  |  |  |               }, router.RouterMode.Single) | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           }) | 
					
						
							|  |  |  |  |         }); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }) | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   async heartMsg() { | 
					
						
							|  |  |  |  |     // const signNum = AppStorage.get<number>('signNum') | 
					
						
							|  |  |  |  |     // const statue = AppStorage.get<string>('statue') | 
					
						
							|  |  |  |  |     // const lsh = AppStorage.get<string>('lsh') | 
					
						
							|  |  |  |  |     // const arr = [signNum || 0, statue || 1] | 
					
						
							|  |  |  |  |     // let tmpList: number[] = []; | 
					
						
							|  |  |  |  |     // tmpList.push(NumberToByteArray(Number(arr[0]), 1 * 8)[0]) | 
					
						
							|  |  |  |  |     // tmpList.push(NumberToByteArray(Number(arr[1]), 1 * 8)[0]) | 
					
						
							|  |  |  |  |     // const str = lsh || '0000000000000' | 
					
						
							|  |  |  |  |     // for (let i = 0; i < str.length; i++) { | 
					
						
							|  |  |  |  |     //   tmpList.push(NumberToByteArray(str.charCodeAt(i), 1 * 8)[0]) | 
					
						
							|  |  |  |  |     // } | 
					
						
							|  |  |  |  |     // TODO 未改 | 
					
						
							|  |  |  |  |     // const param = { | 
					
						
							|  |  |  |  |     //   id: 31, | 
					
						
							|  |  |  |  |     //   list: tmpList, | 
					
						
							|  |  |  |  |     //   carNo: this.carInfo.carNo, | 
					
						
							|  |  |  |  |     //   placeId: this.carInfo.examinationRoomId | 
					
						
							|  |  |  |  |     // } | 
					
						
							|  |  |  |  |     // globalThis.udpClient2.initHeartSendMsg(param,this.context) | 
					
						
							|  |  |  |  |     // if (globalThis.udpClient2.getStatus()) { | 
					
						
							|  |  |  |  |     //   globalThis.udpClient2.sendMsgExt(param, this.context) | 
					
						
							|  |  |  |  |     // } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   async createAlbum() { | 
					
						
							|  |  |  |  |     const time = GetCurrentTime() | 
					
						
							|  |  |  |  |     const date = time.split(' ')[0] | 
					
						
							|  |  |  |  |     this.fileHelper.createAlbum('jt') | 
					
						
							|  |  |  |  |     this.fileHelper.createAlbum('pz'); | 
					
						
							|  |  |  |  |     this.fileHelper.createAlbum(date); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   async initParams() { | 
					
						
							| 
									
										
										
										
											2025-04-11 10:13:29 +08:00
										 |  |  |  |     console.log("test1111") | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |     ObtainUdpBusinessInstance.init(); | 
					
						
							| 
									
										
										
										
											2025-04-10 15:10:31 +08:00
										 |  |  |  |     CenterUDPBusinessInstance.init(); | 
					
						
							|  |  |  |  |     CenterUDPBusinessInstance.startHeartBeat() | 
					
						
							|  |  |  |  |     CenterUDPBusinessInstance.onMsg((data: centerCallBackMsgType) => { | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |       if (data.id == 32) { | 
					
						
							|  |  |  |  |         AppStorage.setOrCreate('signNum', data.body[1]) | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     },) | 
					
						
							|  |  |  |  |     await GetDeviceInfo(this.context) | 
					
						
							|  |  |  |  |     await GetCarInfo() | 
					
						
							|  |  |  |  |     // getTCP() | 
					
						
							|  |  |  |  |     this.carInfo = AppStorage.get<CarInfoType>('carInfo')! | 
					
						
							|  |  |  |  |     this.deviceId = this.carInfo.carNo || "" | 
					
						
							|  |  |  |  |     await SetCurrentTime() | 
					
						
							|  |  |  |  |     this.timeInfo = AppStorage.get<TimeSynchronizationRspBody>('timeInfo')! | 
					
						
							|  |  |  |  |     DrivingDataStorage.init(this.context) | 
					
						
							|  |  |  |  |     DrivingDataStorage.initializeTheDrivingDataFolder() | 
					
						
							|  |  |  |  |     JudgeUdpBusinessInstance.init() | 
					
						
							|  |  |  |  |     // TODO 摄像头遮挡 | 
					
						
							|  |  |  |  |     // takePhotoFn(this.context) | 
					
						
							|  |  |  |  |     clearInterval(this.interval) | 
					
						
							|  |  |  |  |     this.interval = setInterval(() => { | 
					
						
							|  |  |  |  |       this.num++ | 
					
						
							|  |  |  |  |       SetSerialNumber() | 
					
						
							|  |  |  |  |       if (this.num >= 3) { | 
					
						
							|  |  |  |  |         this.heartMsg() | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }, 1000) | 
					
						
							|  |  |  |  |     this.createAlbum() | 
					
						
							|  |  |  |  |   } | 
					
						
							| 
									
										
										
										
											2025-04-10 09:30:47 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   build() { | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |     Column() { | 
					
						
							|  |  |  |  |       Column() { | 
					
						
							|  |  |  |  |         Row() { | 
					
						
							|  |  |  |  |           Image($r('app.media.logo')).width('30%').height('5.5%').margin({ left: 24 }) | 
					
						
							|  |  |  |  |           Row() { | 
					
						
							|  |  |  |  |             Image($r('app.media.btn_setting')).width('16.7%').height('12.2%') | 
					
						
							|  |  |  |  |               .onClick(async () => { | 
					
						
							|  |  |  |  |                 // this.vocObj.playAudio({ | 
					
						
							|  |  |  |  |                 //   type: 1, | 
					
						
							|  |  |  |  |                 //   name: 'button_media.wav' | 
					
						
							|  |  |  |  |                 // }) | 
					
						
							|  |  |  |  |                 // deleteAllPicturesFn() | 
					
						
							|  |  |  |  |                 router.pushUrl({ | 
					
						
							|  |  |  |  |                   url: 'pages/Settings', | 
					
						
							|  |  |  |  |                 }, router.RouterMode.Single); | 
					
						
							|  |  |  |  |               }) | 
					
						
							|  |  |  |  |             Image($r('app.media.btn_back')).width('14.4%').height('12.2%') | 
					
						
							|  |  |  |  |               .onClick(() => { | 
					
						
							|  |  |  |  |                 // this.vocObj.playAudio({ | 
					
						
							|  |  |  |  |                 //   type: 1, | 
					
						
							|  |  |  |  |                 //   name: 'button_media.wav' | 
					
						
							|  |  |  |  |                 // }) | 
					
						
							|  |  |  |  |                 this.dialogVisible = true | 
					
						
							|  |  |  |  |               }) | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         .width('100%') | 
					
						
							|  |  |  |  |         .justifyContent(FlexAlign.SpaceBetween) | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       Column() { | 
					
						
							|  |  |  |  |         Row() { | 
					
						
							|  |  |  |  |           if (!this.singlePlay) { | 
					
						
							|  |  |  |  |             imageBtn({ btnWidth: '28%', btnHeight: '71%', imgSrc: $r('app.media.index_lw') }) | 
					
						
							|  |  |  |  |               .margin({ left: 80 * this.ratio }) | 
					
						
							|  |  |  |  |               .onClick(async () => { | 
					
						
							| 
									
										
										
										
											2025-04-11 10:13:29 +08:00
										 |  |  |  |                 this.loadingDialog.open() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |                 // this.vocObj.playAudio({ | 
					
						
							|  |  |  |  |                 //   type: 1, | 
					
						
							|  |  |  |  |                 //   name: 'button_media.wav' | 
					
						
							|  |  |  |  |                 // }) | 
					
						
							|  |  |  |  |                 // ||!this.initParamFlag | 
					
						
							|  |  |  |  |                 if (!this.timeInfo) { | 
					
						
							|  |  |  |  |                   AppStorage.setOrCreate('type', 1) | 
					
						
							|  |  |  |  |                   AppStorage.setOrCreate('title', '时间同步接口连接失败') | 
					
						
							|  |  |  |  |                   this.errorDialog.open() | 
					
						
							|  |  |  |  |                   promptAction.showToast({ | 
					
						
							|  |  |  |  |                     message: `时间同步接口连接失败`, | 
					
						
							|  |  |  |  |                     duration: 3000 | 
					
						
							|  |  |  |  |                   }); | 
					
						
							| 
									
										
										
										
											2025-04-11 10:13:29 +08:00
										 |  |  |  |                   this.loadingDialog.close() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |                   return | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 if (!this.carInfo) { | 
					
						
							|  |  |  |  |                   promptAction.showToast({ | 
					
						
							|  |  |  |  |                     message: `车辆信息接口获取失败`, | 
					
						
							|  |  |  |  |                     duration: 3000 | 
					
						
							|  |  |  |  |                   }); | 
					
						
							|  |  |  |  |                   AppStorage.setOrCreate('type', 1) | 
					
						
							|  |  |  |  |                   AppStorage.setOrCreate('title', '车辆信息接口获取失败') | 
					
						
							|  |  |  |  |                   this.errorDialog.open() | 
					
						
							| 
									
										
										
										
											2025-04-11 10:13:29 +08:00
										 |  |  |  |                   this.loadingDialog.close() | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |                   return | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 this.testXMLToJSONInWorker() | 
					
						
							|  |  |  |  |               }) | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |           if (this.singlePlay) { | 
					
						
							|  |  |  |  |             imageBtn({ btnWidth: '28%', btnHeight: '71%', imgSrc: $r('app.media.index_dj') }) | 
					
						
							|  |  |  |  |               .margin({ left: 80 * this.ratio }) | 
					
						
							|  |  |  |  |               .onClick(() => { | 
					
						
							|  |  |  |  |                 // this.vocObj.playAudio({ | 
					
						
							|  |  |  |  |                 //   type: 1, | 
					
						
							|  |  |  |  |                 //   name: 'button_media.wav' | 
					
						
							|  |  |  |  |                 // }) | 
					
						
							|  |  |  |  |                 if (JudgeConfig.isTrajectoryOpen) { | 
					
						
							|  |  |  |  |                   router.pushUrl({ | 
					
						
							|  |  |  |  |                     url: 'pages/UserInfo', | 
					
						
							|  |  |  |  |                   }, router.RouterMode.Single) | 
					
						
							|  |  |  |  |                   return | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 //判断数据库是否有表数据,有则直接跳转,没有则读取本地数据 | 
					
						
							|  |  |  |  |                 GetSyncData<MASYSSETTableType>('MA_SYSSET').then((data: Array<MASYSSETTableType>) => { | 
					
						
							|  |  |  |  |                   console.log('datadata', JSON.stringify(data)) | 
					
						
							|  |  |  |  |                   if (data?.[0]) { | 
					
						
							|  |  |  |  |                     router.pushUrl({ | 
					
						
							|  |  |  |  |                       url: 'pages/UserInfo', | 
					
						
							|  |  |  |  |                     }, router.RouterMode.Single) | 
					
						
							|  |  |  |  |                   } else { | 
					
						
							|  |  |  |  |                     this.testXMLToJSONInWorker() | 
					
						
							|  |  |  |  |                   } | 
					
						
							|  |  |  |  |                 }); | 
					
						
							|  |  |  |  |               }) | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |           imageBtn({ btnWidth: '28%', btnHeight: '71%', imgSrc: $r('app.media.index_zj') }) | 
					
						
							|  |  |  |  |             .margin({ right: 80 * this.ratio }) | 
					
						
							|  |  |  |  |             .onClick(() => { | 
					
						
							|  |  |  |  |               // this.vocObj.playAudio({ | 
					
						
							|  |  |  |  |               //   type: 1, | 
					
						
							|  |  |  |  |               //   name: 'button_media.wav' | 
					
						
							|  |  |  |  |               // }) | 
					
						
							|  |  |  |  |               router.pushUrl({ | 
					
						
							|  |  |  |  |                 url: 'pages/CarCheck' | 
					
						
							|  |  |  |  |               }, router.RouterMode.Single); | 
					
						
							|  |  |  |  |             }) | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         .width('100%') | 
					
						
							|  |  |  |  |         .justifyContent(FlexAlign.SpaceAround) | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-10 09:30:47 +08:00
										 |  |  |  |       Column() { | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |         Row() { | 
					
						
							|  |  |  |  |           Column() { | 
					
						
							|  |  |  |  |             Text('V外壳:' + this.baseInfo?.version) | 
					
						
							|  |  |  |  |               .fontColor('#CCAE7A') | 
					
						
							|  |  |  |  |               .fontSize(18 * this.ratio) | 
					
						
							|  |  |  |  |               .width('30%') | 
					
						
							|  |  |  |  |               .margin({ bottom: 10 }) | 
					
						
							|  |  |  |  |             Text('V评判:' + this.baseInfo.judgeVersion) | 
					
						
							|  |  |  |  |               .fontColor('#CCAE7A') | 
					
						
							|  |  |  |  |               .fontSize(18 * this.ratio) | 
					
						
							|  |  |  |  |               .width('30%') | 
					
						
							|  |  |  |  |               .margin({ bottom: 10 }) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             Text('授权信息:' + (this.baseInfo.hasAuth ? '已授权' : '未授权')) | 
					
						
							|  |  |  |  |               .fontColor('#CCAE7A') | 
					
						
							|  |  |  |  |               .fontSize(18 * this.ratio) | 
					
						
							|  |  |  |  |               .width('30%') | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |           .margin({ left: 24 }) | 
					
						
							|  |  |  |  |           .gesture( | 
					
						
							|  |  |  |  |             GestureGroup(GestureMode.Exclusive, | 
					
						
							|  |  |  |  |               TapGesture({ count: 2 }) | 
					
						
							|  |  |  |  |                 .onAction(() => { | 
					
						
							|  |  |  |  |                   // takePhotoFn(this.context) | 
					
						
							|  |  |  |  |                   this.singlePlay = !this.singlePlay | 
					
						
							|  |  |  |  |                   AppStorage.setOrCreate('singlePlay', this.singlePlay) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 }) | 
					
						
							|  |  |  |  |             ) | 
					
						
							|  |  |  |  |           ) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           Text('考车号:' + this.deviceId) | 
					
						
							|  |  |  |  |             .fontColor('#CCAE7A') | 
					
						
							|  |  |  |  |             .fontSize(22 * this.ratio) | 
					
						
							|  |  |  |  |             .margin({ right: 24 }) | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         .width('100%') | 
					
						
							|  |  |  |  |         .justifyContent(FlexAlign.SpaceBetween) | 
					
						
							|  |  |  |  |         .margin({ bottom: 10 }) | 
					
						
							|  |  |  |  |       }.height(100) | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-11 10:13:29 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |       if (this.dialogVisible) { | 
					
						
							|  |  |  |  |         Flex({ justifyContent: FlexAlign.Center }) { | 
					
						
							|  |  |  |  |           Text('确认是否退出应用') | 
					
						
							|  |  |  |  |             .fontSize(28 * this.ratio * this.dialogRatio) | 
					
						
							|  |  |  |  |             .margin({ top: 100 * this.ratio * this.dialogRatio }) | 
					
						
							|  |  |  |  |           Row() { | 
					
						
							|  |  |  |  |             Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { | 
					
						
							|  |  |  |  |               Text('  取   消  ') | 
					
						
							|  |  |  |  |                 .fontSize(24 * this.ratio * this.dialogRatio) | 
					
						
							|  |  |  |  |                 .fontColor('#fff') | 
					
						
							|  |  |  |  |                 .width(100 * this.ratio * this.dialogRatio) | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             .commStyle() | 
					
						
							|  |  |  |  |             .onClick(() => { | 
					
						
							|  |  |  |  |               this.dialogVisible = false | 
					
						
							|  |  |  |  |               // this.vocObj.playAudio({ | 
					
						
							|  |  |  |  |               //   type: 1, | 
					
						
							|  |  |  |  |               //   name: 'button_media.wav' | 
					
						
							|  |  |  |  |               // }) | 
					
						
							|  |  |  |  |             }).margin({ right: 10 * this.ratio }) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { | 
					
						
							|  |  |  |  |               Text('  确   定  ') | 
					
						
							|  |  |  |  |                 .fontSize(24 * this.ratio * this.dialogRatio) | 
					
						
							|  |  |  |  |                 .fontColor('#fff') | 
					
						
							|  |  |  |  |                 .width(100 * this.ratio * this.dialogRatio) | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             .commStyle() | 
					
						
							|  |  |  |  |             .onClick(() => { | 
					
						
							|  |  |  |  |               // this.vocObj.playAudio({ | 
					
						
							|  |  |  |  |               //   type: 1, | 
					
						
							|  |  |  |  |               //   name: 'button_media.wav' | 
					
						
							|  |  |  |  |               // }) | 
					
						
							|  |  |  |  |               router.back() | 
					
						
							|  |  |  |  |             }) | 
					
						
							|  |  |  |  |           }.position({ y: 265 * this.ratio * this.dialogRatio, x: 115 * this.ratio * this.dialogRatio }) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         .width(660 * this.ratio * this.dialogRatio) | 
					
						
							|  |  |  |  |         .height(360 * this.ratio * this.dialogRatio) | 
					
						
							|  |  |  |  |         .position({ x: 220 * this.ratio, y: 98 * this.ratio - 265 / 2 * (1 - this.ratio * this.dialogRatio) }) | 
					
						
							|  |  |  |  |         .backgroundColor('#E6E3DF') | 
					
						
							|  |  |  |  |         .borderRadius(19 * this.ratio * this.dialogRatio) | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       if (this.delLoading) { | 
					
						
							|  |  |  |  |         Column() { | 
					
						
							|  |  |  |  |           Image($r('app.media.open_loading')) | 
					
						
							|  |  |  |  |             .width(200 * this.ratio) | 
					
						
							|  |  |  |  |             .rotate({ angle: this.angle }) | 
					
						
							|  |  |  |  |             .height(200 * this.ratio) | 
					
						
							|  |  |  |  |             .animation({ | 
					
						
							|  |  |  |  |               duration: 5000, // 动画时长 | 
					
						
							|  |  |  |  |               curve: Curve.EaseOut, // 动画曲线 | 
					
						
							|  |  |  |  |               delay: 500, // 动画延迟 | 
					
						
							|  |  |  |  |               iterations: -1, // 播放次数 | 
					
						
							|  |  |  |  |               playMode: PlayMode.Normal, // 动画模式 | 
					
						
							|  |  |  |  |             }) | 
					
						
							|  |  |  |  |             .margin({ top: 30 * this.ratio }) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           Text('正在清理本地数据,请稍候……') | 
					
						
							|  |  |  |  |             .fontSize(24 * this.ratio) | 
					
						
							|  |  |  |  |             .margin({ top: 20 * this.ratio }) | 
					
						
							|  |  |  |  |             .fontWeight(400) | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         .visibility(this.delLoading ? Visibility.Visible : Visibility.Hidden) | 
					
						
							|  |  |  |  |         .width(660 * this.ratio) | 
					
						
							|  |  |  |  |         .height(360 * this.ratio) | 
					
						
							|  |  |  |  |         .position({ x: 150 * this.ratio, y: 98 * this.ratio }) | 
					
						
							|  |  |  |  |         .backgroundColor('#E6E3DF') | 
					
						
							|  |  |  |  |         .borderRadius(19 * this.ratio) | 
					
						
							|  |  |  |  |       } | 
					
						
							| 
									
										
										
										
											2025-04-10 09:30:47 +08:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |     .width('100%') | 
					
						
							| 
									
										
										
										
											2025-04-10 09:30:47 +08:00
										 |  |  |  |     .height('100%') | 
					
						
							| 
									
										
										
										
											2025-04-10 10:27:28 +08:00
										 |  |  |  |     .justifyContent(FlexAlign.SpaceBetween) | 
					
						
							|  |  |  |  |     .backgroundImage($r('app.media.index_bg')) | 
					
						
							|  |  |  |  |     .backgroundImageSize({ width: '100%', height: '100%' }) | 
					
						
							| 
									
										
										
										
											2025-04-10 09:30:47 +08:00
										 |  |  |  |   } | 
					
						
							|  |  |  |  | } |