576 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			576 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| import common from '@ohos.app.ability.common';
 | ||
| import router from '@ohos.router';
 | ||
| import { getCarInfo, getDeviceInfo } from '../common/service/terminalService';
 | ||
| import { setCurrentTime } from '../common/service/timeService';
 | ||
| import { getCurrentTime, string2Bytes } from '../common/utils/tools';
 | ||
| import { FileHelper } from '../common/service/FileHelper';
 | ||
| import { getEsCarModel, getSyncData, } from '../common/service/initable';
 | ||
| import { getUDP, getUDP2, getUDPGps2 } from '../common/utils/GlobalUdp';
 | ||
| import { initJudgeUdp } from '../common/utils/UdpJudge';
 | ||
| import { judgeConfig } from './judgeSDK/utils/judgeConfig';
 | ||
| import { getTCP } from '../common/utils/GlobalTcp';
 | ||
| import { getSingleCenterTable, setliushuiNum, takePhotoFn } from '../common/service/indexService';
 | ||
| import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
 | ||
| import promptAction from '@ohos.promptAction';
 | ||
| import errorMsgDialog from './compontents/errorMsgDialog';
 | ||
| import GetDistance from '../common/utils/GetDistance';
 | ||
| import UdpEvent from '../common/utils/UdpEvent';
 | ||
| import { delPic } from '../common/service/videoService';
 | ||
| import imageBtn from './compontents/imageBtn';
 | ||
| import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements';
 | ||
| import { examJudgeVersion } from './judgeSDK/api';
 | ||
| 
 | ||
| @Entry
 | ||
| @Component
 | ||
| struct Index {
 | ||
|   @State carNum: string = ''
 | ||
|   @State version: string = '2025.05.13.01'
 | ||
|   @State judgeVersion: string = ''
 | ||
|   @State url: string = ''
 | ||
|   @State hasAuth: boolean = false;
 | ||
|   @State dialogVisiable: boolean = false;
 | ||
|   @State isSingle: boolean = false;
 | ||
|   @State deviceId: string = '';
 | ||
|   @State angle: number = 0
 | ||
|   @State dialogRatio: number = 0.8
 | ||
|   @State ratio: number = 1700 / 960
 | ||
|   @State delLoading: boolean = false
 | ||
|   @State loading: boolean = false
 | ||
|   @State initParamFlag: boolean = false
 | ||
|   @State fd: number = -1;
 | ||
|   @State num: number = 0;
 | ||
|   private fileHelper = null;
 | ||
|   private errorDialog: CustomDialogController = new CustomDialogController({
 | ||
|     builder: errorMsgDialog({
 | ||
|       title: globalThis.title,
 | ||
|       type: globalThis.type,
 | ||
|       cancel: () => {
 | ||
|       },
 | ||
|       confirm: () => {
 | ||
|       }
 | ||
|     }),
 | ||
|     customStyle: true,
 | ||
|     alignment: DialogAlignment.Center,
 | ||
|   },
 | ||
|   )
 | ||
|   private interval = null;
 | ||
|   private avPlayer
 | ||
|   private context = getContext(this) as common.UIAbilityContext;
 | ||
| 
 | ||
|   @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 })
 | ||
|   }
 | ||
| 
 | ||
|   build() {
 | ||
|     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 () => {
 | ||
|                 if (this.loading) {
 | ||
|                   return
 | ||
|                 }
 | ||
|                 router.pushUrl({
 | ||
|                   url: 'pages/Settings',
 | ||
|                 }, router.RouterMode.Single);
 | ||
|               })
 | ||
|             Image($r('app.media.btn_back')).width('14.4%').height('12.2%')
 | ||
|               .onClick(() => {
 | ||
|                 this.dialogVisiable = true
 | ||
|               })
 | ||
|           }
 | ||
|         }
 | ||
|         .width('100%')
 | ||
|         .justifyContent(FlexAlign.SpaceBetween)
 | ||
|       }
 | ||
| 
 | ||
|       Column() {
 | ||
|         Row() {
 | ||
|           if (!this.isSingle) {
 | ||
|             imageBtn({ btnWidth: '28%', btnHeight: '71%', imgSrc: $r('app.media.index_lw') })
 | ||
|               .margin({ left: 80 * globalThis.ratio })
 | ||
|               .onClick(async () => {
 | ||
|                 // this.vocObj.playAudio({
 | ||
|                 //   type: 1,
 | ||
|                 //   name: 'button_media.wav'
 | ||
|                 // })
 | ||
|                 // ||!this.initParamFlag
 | ||
|                 if (this.loading) {
 | ||
|                   // globalThis.title = '正在初始化,请等待5s后重试'
 | ||
|                   // this.errorDialog.open()
 | ||
|                   return
 | ||
|                 }
 | ||
|                 setTimeout(() => {
 | ||
|                   this.angle = 360
 | ||
|                 }, 1000)
 | ||
|                 this.angle = 0
 | ||
|                 if (!globalThis.timeInfo) {
 | ||
|                   globalThis.type = '1'
 | ||
|                   globalThis.title = '时间同步接口连接失败'
 | ||
|                   this.errorDialog.open()
 | ||
|                   promptAction.showToast({
 | ||
|                     message: `时间同步接口连接失败`,
 | ||
|                     duration: 3000
 | ||
|                   });
 | ||
|                   this.loading = false
 | ||
|                   return
 | ||
|                 }
 | ||
|                 if (!globalThis.carInfo) {
 | ||
|                   promptAction.showToast({
 | ||
|                     message: `车辆信息接口获取失败`,
 | ||
|                     duration: 3000
 | ||
|                   });
 | ||
|                   globalThis.type = '1'
 | ||
|                   globalThis.title = '车辆信息接口获取失败'
 | ||
|                   this.errorDialog.open()
 | ||
|                   this.loading = false
 | ||
|                   return
 | ||
|                 }
 | ||
|                 this.testXMLToJSONInWorker()
 | ||
| 
 | ||
| 
 | ||
|               })
 | ||
|           }
 | ||
|           if (this.isSingle) {
 | ||
|             imageBtn({ btnWidth: '28%', btnHeight: '71%', imgSrc: $r('app.media.index_dj') })
 | ||
|               .margin({ left: 80 * globalThis.ratio })
 | ||
|               .onClick(() => {
 | ||
|                 if (this.loading) {
 | ||
|                   return
 | ||
|                 }
 | ||
|                 // this.vocObj.playAudio({
 | ||
|                 //   type: 1,
 | ||
|                 //   name: 'button_media.wav'
 | ||
|                 // })
 | ||
|                 if (judgeConfig.isTrajectoryOpen) {
 | ||
|                   router.pushUrl({
 | ||
|                     url: 'pages/UserInfo',
 | ||
|                   }, router.RouterMode.Single)
 | ||
|                   return
 | ||
|                 }
 | ||
|                 //判断数据库是否有表数据,有则直接跳转,没有则读取本地数据
 | ||
|                 getSyncData('MA_SYSSET').then(data => {
 | ||
|                   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 * globalThis.ratio })
 | ||
|             .onClick(() => {
 | ||
|               if (this.loading) {
 | ||
|                 return
 | ||
|               }
 | ||
|               // this.vocObj.playAudio({
 | ||
|               //   type: 1,
 | ||
|               //   name: 'button_media.wav'
 | ||
|               // })
 | ||
|               router.pushUrl({
 | ||
|                 url: 'pages/CarCheck'
 | ||
|               }, router.RouterMode.Single);
 | ||
|             })
 | ||
|         }
 | ||
|         .width('100%')
 | ||
|         .justifyContent(FlexAlign.SpaceAround)
 | ||
|       }
 | ||
| 
 | ||
|       Column() {
 | ||
|         Row() {
 | ||
|           Column() {
 | ||
|             Text('V外壳:' + this.version)
 | ||
|               .fontColor('#CCAE7A')
 | ||
|               .fontSize(18 * globalThis.ratio)
 | ||
|               .width('30%')
 | ||
|               .margin({ bottom: 10 })
 | ||
|             Text('V评判:' + this.judgeVersion)
 | ||
|               .fontColor('#CCAE7A')
 | ||
|               .fontSize(18 * globalThis.ratio)
 | ||
|               .width('30%')
 | ||
|               .margin({ bottom: 10 })
 | ||
|             // Text('V 1.0')
 | ||
|             //   .fontColor('#CCAE7A')
 | ||
|             //   .fontSize(22 * globalThis.ratio)
 | ||
|             //   .width('30%')
 | ||
|             //   .margin({ bottom: 10 })
 | ||
|             Text('授权信息:' + (this.hasAuth ? '已授权' : '未授权'))
 | ||
|               .fontColor('#CCAE7A')
 | ||
|               .fontSize(18 * globalThis.ratio)
 | ||
|               .width('30%')
 | ||
|           }
 | ||
|           .margin({ left: 24 })
 | ||
|           .gesture(
 | ||
|             GestureGroup(GestureMode.Exclusive,
 | ||
|               TapGesture({ count: 2 })
 | ||
|                 .onAction(() => {
 | ||
|                   // takePhotoFn(this.context)
 | ||
| 
 | ||
|                   globalThis.singlePlay = !globalThis.singlePlay
 | ||
|                   this.isSingle = globalThis.singlePlay
 | ||
|                 })
 | ||
|             )
 | ||
|           )
 | ||
| 
 | ||
|           Text('考车号:' + this.deviceId)
 | ||
|             .fontColor('#CCAE7A')
 | ||
|             .fontSize(22 * globalThis.ratio)
 | ||
|             .margin({ right: 24 })
 | ||
|         }
 | ||
|         .width('100%')
 | ||
|         .justifyContent(FlexAlign.SpaceBetween)
 | ||
|         .margin({ bottom: 10 })
 | ||
|       }
 | ||
| 
 | ||
|       //
 | ||
|       if (this.dialogVisiable) {
 | ||
|         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.dialogVisiable = 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.context.terminateSelf()
 | ||
|             })
 | ||
|           }.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 * globalThis.ratio)
 | ||
|             .rotate({ angle: this.angle })
 | ||
|             .height(200 * globalThis.ratio)
 | ||
|             .animation({
 | ||
|               duration: 5000, // 动画时长
 | ||
|               curve: Curve.EaseOut, // 动画曲线
 | ||
|               delay: 500, // 动画延迟
 | ||
|               iterations: -1, // 播放次数
 | ||
|               playMode: PlayMode.Normal, // 动画模式
 | ||
|             })
 | ||
|             .margin({ top: 30 * globalThis.ratio })
 | ||
| 
 | ||
|           Text('正在清理本地数据,请稍候……')
 | ||
|             .fontSize(24 * globalThis.ratio)
 | ||
|             .margin({ top: 20 * globalThis.ratio })
 | ||
|             .fontWeight(400)
 | ||
|         }
 | ||
|         .visibility(this.delLoading ? Visibility.Visible : Visibility.Hidden)
 | ||
|         .width(660 * globalThis.ratio)
 | ||
|         .height(360 * globalThis.ratio)
 | ||
|         .position({ x: 150 * globalThis.ratio, y: 98 * globalThis.ratio })
 | ||
|         .backgroundColor('#E6E3DF')
 | ||
|         .borderRadius(19 * globalThis.ratio)
 | ||
|       }
 | ||
| 
 | ||
|       if (this.loading) {
 | ||
|         Column() {
 | ||
|           Image($r('app.media.open_loading'))
 | ||
|             .width(200 * globalThis.ratio)
 | ||
|             .rotate({ angle: this.angle })
 | ||
|             .height(200 * globalThis.ratio)
 | ||
|             .animation({
 | ||
|               duration: 5000, // 动画时长
 | ||
|               curve: Curve.EaseOut, // 动画曲线
 | ||
|               delay: 500, // 动画延迟
 | ||
|               iterations: -1, // 播放次数
 | ||
|               playMode: PlayMode.Normal, // 动画模式
 | ||
|             })
 | ||
|             .margin({ top: 30 * globalThis.ratio })
 | ||
|           Image($r('app.media.car'))
 | ||
|             .width(80 * globalThis.ratio)
 | ||
|             .height(80 * globalThis.ratio)
 | ||
|             .position({ x: 288 * globalThis.ratio, y: 89 * globalThis.ratio })
 | ||
|           Text('获取考车信息,请稍候……')
 | ||
|             .fontSize(24 * globalThis.ratio)
 | ||
|             .margin({ top: 20 * globalThis.ratio })
 | ||
|             .fontWeight(400)
 | ||
|         }
 | ||
|         .visibility(this.loading ? Visibility.Visible : Visibility.Hidden)
 | ||
|         .width(660 * globalThis.ratio)
 | ||
|         .height(360 * globalThis.ratio)
 | ||
|         .position({ x: 150 * globalThis.ratio, y: 98 * globalThis.ratio })
 | ||
|         .backgroundColor('#E6E3DF')
 | ||
|         .borderRadius(19 * globalThis.ratio)
 | ||
|       }
 | ||
|     }
 | ||
|     .width('100%')
 | ||
|     .height('100%')
 | ||
|     .justifyContent(FlexAlign.SpaceBetween)
 | ||
|     .backgroundImagePosition({ x: 0, y: 0 })
 | ||
|     .backgroundImage($r('app.media.index_bg'))
 | ||
|     .backgroundImageSize({ width: '100%', height: '100%' })
 | ||
|   }
 | ||
| 
 | ||
|   async aboutToAppear() {
 | ||
|     this.avPlayer = new VoiceAnnounce();
 | ||
|     this.judgeVersion = await examJudgeVersion()
 | ||
|     this.initParamFlag = false
 | ||
|     this.delLoading = false
 | ||
|     this.dialogVisiable = false
 | ||
|     this.angle = 0
 | ||
|     this.loading = false
 | ||
|     globalThis.lsh = '1111111111111'
 | ||
|     globalThis.errorDialog = this.errorDialog
 | ||
|     globalThis.udpEvent = new UdpEvent();
 | ||
|     getSyncData('MA_SYSSET').then(async data => {
 | ||
| 
 | ||
|       console.log('datadata', JSON.stringify(data))
 | ||
|       // @ts-ignore
 | ||
| 
 | ||
|       // @ts-ignore
 | ||
|       data.forEach(async sys => {
 | ||
|         //判断是否能点开始考试
 | ||
|         if (sys.v_no === '305') {
 | ||
|           console.log('syssyssyssys')
 | ||
|           // this.delLoading=true
 | ||
|           // globalThis.param854Str=sys.v_value
 | ||
|           delPic(Number(sys.v_value), 1)
 | ||
|           delPic(Number(sys.v_value), 2)
 | ||
|           // this.delLoading=false
 | ||
|         }
 | ||
|       })
 | ||
|     });
 | ||
| 
 | ||
|   }
 | ||
| 
 | ||
|   aboutToDisappear() {
 | ||
|     // this.vocObj && this.vocObj.releasePlayer()
 | ||
|   }
 | ||
| 
 | ||
|   async testXMLToJSONInWorker() {
 | ||
|     if (this.loading) {
 | ||
|       return
 | ||
|     }
 | ||
| 
 | ||
|     const param = {
 | ||
|       carId: globalThis.carInfo?.carId,
 | ||
|       examinationRoomId: globalThis.carInfo?.examinationRoomId,
 | ||
|       judgeVersion: globalThis.judgeVersion,
 | ||
|       shellVersion: globalThis.version,
 | ||
|       paraKdid: globalThis.timeInfo?.paraKdid || globalThis.timeInfo?.kdid,
 | ||
|       kdid: globalThis.timeInfo?.kdid || globalThis.timeInfo?.paraKdid,
 | ||
|       mode: globalThis.timeInfo?.mode,
 | ||
|       context: this.context,
 | ||
|       host: globalThis.host,
 | ||
|       centerHost: globalThis.timeInfo?.url,
 | ||
|       singlePlay: globalThis.singlePlay
 | ||
|     }
 | ||
|     this.loading = true
 | ||
|     console.log("sql 1111")
 | ||
| 
 | ||
|     getSingleCenterTable(param).then(async (ret) => {
 | ||
|       if (ret) {
 | ||
|         const result = await getSyncData('ES_CARINFO')
 | ||
|         const carInfo = result[0] || {};
 | ||
|         if (carInfo.kscx == 'A2' && !globalThis.udpClientGps2) {
 | ||
|           // A2牵引车2号导航仪
 | ||
|           await getUDPGps2(this.context, false)
 | ||
|         }
 | ||
|         getSyncData('MA_SYSSET').then(data => {
 | ||
|           console.log('datadata', JSON.stringify(data))
 | ||
|           // @ts-ignore
 | ||
|           data.forEach(sys => {
 | ||
|             //判断是否能点开始考试
 | ||
|             if (sys.v_no === '854') {
 | ||
|               globalThis.param854Str = sys.v_value
 | ||
|             }
 | ||
|             if (sys.v_no === '824' && decodeURIComponent(sys.v_value) == '0') {
 | ||
|               // this.Param612Str= decodeURIComponent(sys.v_value)
 | ||
|               router.pushUrl({
 | ||
|                 url: 'pages/CarCheck',
 | ||
|                 params: {
 | ||
|                   'fromIndex': true
 | ||
|                 }
 | ||
|               }, router.RouterMode.Single)
 | ||
|             } else {
 | ||
|               router.pushUrl({
 | ||
|                 url: 'pages/ExaminerLogin',
 | ||
|               }, router.RouterMode.Single)
 | ||
|             }
 | ||
|           })
 | ||
|         });
 | ||
| 
 | ||
|       }
 | ||
|     })
 | ||
|   }
 | ||
| 
 | ||
|   async heartMsg() {
 | ||
|     const arr = [globalThis.signNum || 0, globalThis.statue || 1]
 | ||
|     let tmpList = [];
 | ||
|     tmpList.push(string2Bytes(arr[0], 1 * 8)[0])
 | ||
|     tmpList.push(string2Bytes(arr[1], 1 * 8)[0])
 | ||
|     const str = globalThis.lsh || '0000000000000'
 | ||
|     for (let i = 0; i < str.length; i++) {
 | ||
|       tmpList.push(string2Bytes(str.charCodeAt(i), 1 * 8)[0])
 | ||
|     }
 | ||
| 
 | ||
|     const param = {
 | ||
|       id: 31,
 | ||
|       list: tmpList,
 | ||
|       carNo: globalThis.carInfo.carNo,
 | ||
|       placeId: globalThis.carInfo.examinationRoomId
 | ||
|     }
 | ||
|     // globalThis.udpClient2.initHeartSendMsg(param,this.context)
 | ||
|     if (globalThis.udpClient2.getStatus()) {
 | ||
|       globalThis.udpClient2.sendMsgExt(param, this.context)
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   async onPageShow() {
 | ||
|     console.log('ttttt', 1111)
 | ||
|     await this.userAuth();
 | ||
|     console.log('globalThis.singlePlay', globalThis.singlePlay)
 | ||
|     if (globalThis.singlePlay == undefined || globalThis.singlePlay == null) {
 | ||
|       // setVideoParam()
 | ||
|       console.log('diyidiy')
 | ||
|       this.context.resourceManager.getRawFileContent("welcome.wav")
 | ||
|         .then(value => {
 | ||
|           this.avPlayer.playAudio(['welcome.wav'])
 | ||
|         })
 | ||
|         .catch(error => {
 | ||
|           console.log("getRawFileContent promise error is " + error);
 | ||
|         });
 | ||
| 
 | ||
|       globalThis.singlePlay = false
 | ||
|     }
 | ||
|     this.isSingle = globalThis.singlePlay
 | ||
|     // this.loading = false
 | ||
|     this.num = 0
 | ||
|     // const TcpClient: TcpClient =new TcpClient(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort)
 | ||
|     globalThis.lsh = '1111111111111'
 | ||
|   }
 | ||
| 
 | ||
|   async createAlbum() {
 | ||
|     this.fileHelper = new FileHelper();
 | ||
|     const time = await getCurrentTime()
 | ||
|     const date = time.split(' ')[0]
 | ||
|     this.fileHelper.createAlbum('jt')
 | ||
|     // this.fileHelper.createAlbum('2025-01-02')
 | ||
|     this.fileHelper.createAlbum('pz');
 | ||
|     this.fileHelper.createAlbum(date);
 | ||
| 
 | ||
|   }
 | ||
| 
 | ||
|   userAuth() {
 | ||
|     return new Promise((reslove, reject) => {
 | ||
|       const permissions: Array<Permissions> = ["ohos.permission.SET_TIME", "ohos.permission.READ_IMAGEVIDEO", "ohos.permission.DISTRIBUTED_DATASYNC", 'ohos.permission.CONNECTIVITY_INTERNAL', 'ohos.permission.CAMERA', 'ohos.permission.READ_MEDIA', 'ohos.permission.WRITE_MEDIA', 'ohos.permission.FILE_ACCESS_MANAGER'];
 | ||
|       let context = this.context;
 | ||
|       let atManager = abilityAccessCtrl.createAtManager();
 | ||
|       // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
 | ||
| 
 | ||
|       atManager.requestPermissionsFromUser(context, permissions).then((data) => {
 | ||
|         this.initParams()
 | ||
|         let grantStatus: Array<number> = data.authResults;
 | ||
|         let length: number = grantStatus.length;
 | ||
|         for (let i = 0; i < length; i++) {
 | ||
|           if (grantStatus[i] === 0) {
 | ||
|             // 用户授权,可以继续访问目标操作
 | ||
|             reslove(true)
 | ||
|           } else {
 | ||
|             reject()
 | ||
|             // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
 | ||
|             return;
 | ||
|           }
 | ||
|         }
 | ||
|         // 授权成功
 | ||
|       }).catch((err) => {
 | ||
|         console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
 | ||
|       })
 | ||
|     })
 | ||
| 
 | ||
|   }
 | ||
| 
 | ||
|   async initParams() {
 | ||
|     // deleteAllFIleLog(GlobalConfig.comoonfileWriteAddress + '/PLC/')
 | ||
|     //设置plc udp 同步requesthost
 | ||
|     await getUDP(this.context, false)
 | ||
| 
 | ||
|     getSyncData('ES_CARINFO').then(result => {
 | ||
|       console.log("CARINFO", JSON.stringify(result))
 | ||
|       const carInfo = result[0] || {};
 | ||
|       if (carInfo.kscx == 'A2') {
 | ||
|         console.log("GPS2 udp")
 | ||
|         // A2牵引车2号导航仪
 | ||
|         getUDPGps2(this.context, false)
 | ||
|       }
 | ||
|     })
 | ||
| 
 | ||
|     this.loading = false
 | ||
|     await getDeviceInfo(this.context)
 | ||
| 
 | ||
|     await getCarInfo()
 | ||
|     await getUDP2(this.context, false)
 | ||
|     getTCP()
 | ||
|     this.deviceId = globalThis.carInfo.carNo
 | ||
|     await setCurrentTime();
 | ||
|     if (!globalThis.distanceClass) {
 | ||
|       const distanceClass = new GetDistance(globalThis.context)
 | ||
|       await distanceClass.initFolder()
 | ||
|       globalThis.distanceClass = distanceClass
 | ||
|       console.info('surenjun', 'distanceClass=>初始化完成')
 | ||
|     }
 | ||
|     this.carNum = globalThis.carInfo.plateNo;
 | ||
|     this.hasAuth = globalThis.hasAuth;
 | ||
|     setTimeout(() => {
 | ||
|       this.initParamFlag = true
 | ||
|     }, 3000)
 | ||
|     initJudgeUdp()
 | ||
|     takePhotoFn(this.context)
 | ||
|     clearInterval(this.interval)
 | ||
|     this.interval = setInterval(() => {
 | ||
|       this.num++
 | ||
|       setliushuiNum()
 | ||
|       // getliushuiNum(this.context)
 | ||
|       if (this.num >= 3) {
 | ||
|         this.heartMsg()
 | ||
|       }
 | ||
|     }, 1000)
 | ||
|     this.createAlbum()
 | ||
|   }
 | ||
| 
 | ||
|   async getModel() {
 | ||
|     const context = this.context;
 | ||
|     //下载模型
 | ||
|     await getEsCarModel(context)
 | ||
|   }
 | ||
| } |