2024-01-05 11:11:15 +08:00
|
|
|
|
import common from '@ohos.app.ability.common';
|
2024-07-02 11:39:46 +08:00
|
|
|
|
import router from '@ohos.router';
|
|
|
|
|
|
import { getCarInfo, getDeviceInfo } from '../common/service/terminalService';
|
|
|
|
|
|
import { setCurrentTime } from '../common/service/timeService';
|
2025-01-03 10:25:31 +08:00
|
|
|
|
import { getCurrentTime, string2Bytes } from '../common/utils/tools';
|
2025-01-20 08:50:40 +08:00
|
|
|
|
import { FileHelper } from '../common/service/FileHelper';
|
|
|
|
|
|
import { getEsCarModel, getSyncData, } from '../common/service/initable';
|
2024-07-02 11:39:46 +08:00
|
|
|
|
import FileUtil from '../common/utils/File';
|
|
|
|
|
|
import { getUDP, getUDP2 } from '../common/utils/GlobalUdp';
|
|
|
|
|
|
import { initJudgeUdp } from '../common/utils/UdpJudge';
|
2024-08-26 19:27:23 +08:00
|
|
|
|
import { judgeConfig } from './judgeSDK/utils/judgeConfig';
|
2024-07-02 11:39:46 +08:00
|
|
|
|
import { getTCP } from '../common/utils/GlobalTcp';
|
2025-01-20 08:50:40 +08:00
|
|
|
|
import { getSingleCenterTable, setliushuiNum, takePhotoFn } from '../common/service/indexService';
|
2024-03-12 15:32:48 +08:00
|
|
|
|
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
|
2025-01-20 08:50:40 +08:00
|
|
|
|
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';
|
2025-01-02 11:01:09 +08:00
|
|
|
|
import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements';
|
2025-03-04 21:34:12 +08:00
|
|
|
|
import IdlServiceExtProxy from '../IdlServiceExt/idl_service_ext_proxy';
|
|
|
|
|
|
import Want from '@ohos.app.ability.Want';
|
|
|
|
|
|
import emitter from '@ohos.events.emitter';
|
2025-04-17 15:01:19 +08:00
|
|
|
|
import { examJudgeVersion } from './judgeSDK/api';
|
2025-04-17 16:39:01 +08:00
|
|
|
|
import { delLog } from '../common/service/logService';
|
2024-08-27 19:41:15 +08:00
|
|
|
|
|
2024-01-05 11:11:15 +08:00
|
|
|
|
@Entry
|
|
|
|
|
|
@Component
|
|
|
|
|
|
struct Index {
|
|
|
|
|
|
@State carNum: string = ''
|
|
|
|
|
|
@State url: string = ''
|
|
|
|
|
|
@State hasAuth: boolean = false;
|
2024-08-10 14:00:18 +08:00
|
|
|
|
@State dialogVisiable: boolean = false;
|
2024-01-05 11:11:15 +08:00
|
|
|
|
@State isSingle: boolean = false;
|
|
|
|
|
|
@State deviceId: string = '';
|
|
|
|
|
|
@State angle: number = 0
|
2024-08-12 09:28:12 +08:00
|
|
|
|
@State dialogRatio: number = 0.8
|
2024-05-16 09:53:10 +08:00
|
|
|
|
@State ratio: number = 1700 / 960
|
2025-01-04 13:51:34 +08:00
|
|
|
|
@State delLoading: boolean = false
|
|
|
|
|
|
@State loading: boolean = false
|
2024-12-29 21:43:12 +08:00
|
|
|
|
@State initParamFlag: boolean = false
|
2024-01-05 11:11:15 +08:00
|
|
|
|
@State fd: number = -1;
|
2024-07-03 16:21:56 +08:00
|
|
|
|
@State num: number = 0;
|
2024-07-02 11:39:46 +08:00
|
|
|
|
fileHelper = null;
|
2024-08-19 14:54:11 +08:00
|
|
|
|
errorDialog: CustomDialogController = new CustomDialogController({
|
|
|
|
|
|
builder: errorMsgDialog({
|
|
|
|
|
|
title: globalThis.title,
|
|
|
|
|
|
type: globalThis.type,
|
|
|
|
|
|
cancel: () => {
|
|
|
|
|
|
},
|
|
|
|
|
|
confirm: () => {
|
|
|
|
|
|
}
|
|
|
|
|
|
}),
|
|
|
|
|
|
customStyle: true,
|
|
|
|
|
|
alignment: DialogAlignment.Center,
|
2025-03-13 10:09:12 +08:00
|
|
|
|
})
|
2025-01-20 08:50:40 +08:00
|
|
|
|
private interval = null;
|
|
|
|
|
|
private avPlayer
|
|
|
|
|
|
private context = getContext(this) as common.UIAbilityContext;
|
2025-03-04 21:34:12 +08:00
|
|
|
|
private serviceExtProxy: IdlServiceExtProxy
|
2025-04-17 15:01:19 +08:00
|
|
|
|
@State judgeVersion: string = ""
|
2025-04-21 09:14:30 +08:00
|
|
|
|
private version: string = "2025.04.21.01"
|
2024-07-02 11:39:46 +08:00
|
|
|
|
|
2024-08-10 14:00:18 +08:00
|
|
|
|
@Styles
|
|
|
|
|
|
commStyle(){
|
2024-08-19 09:32:41 +08:00
|
|
|
|
.width(220 * this.ratio * this.dialogRatio)
|
|
|
|
|
|
.height(69 * this.ratio * this.dialogRatio)
|
2024-08-10 14:00:18 +08:00
|
|
|
|
.backgroundImage($r('app.media.button_nor'))
|
|
|
|
|
|
.backgroundImageSize({ width: '100%', height: '100%' })
|
2024-08-20 09:12:02 +08:00
|
|
|
|
// .margin({ bottom: 12 * this.ratio })
|
2024-08-10 14:00:18 +08:00
|
|
|
|
}
|
2024-08-19 09:32:41 +08:00
|
|
|
|
|
2024-01-05 11:11:15 +08:00
|
|
|
|
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 () => {
|
2024-12-29 21:43:12 +08:00
|
|
|
|
// this.vocObj.playAudio({
|
|
|
|
|
|
// type: 1,
|
|
|
|
|
|
// name: 'button_media.wav'
|
|
|
|
|
|
// })
|
2025-01-03 10:25:31 +08:00
|
|
|
|
// deleteAllPicturesFn()
|
2024-01-05 11:11:15 +08:00
|
|
|
|
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(() => {
|
2024-12-29 21:43:12 +08:00
|
|
|
|
// this.vocObj.playAudio({
|
|
|
|
|
|
// type: 1,
|
|
|
|
|
|
// name: 'button_media.wav'
|
|
|
|
|
|
// })
|
2024-08-19 09:32:41 +08:00
|
|
|
|
this.dialogVisiable = true
|
2024-01-05 11:11:15 +08:00
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.width('100%')
|
|
|
|
|
|
.justifyContent(FlexAlign.SpaceBetween)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Column() {
|
|
|
|
|
|
Row() {
|
|
|
|
|
|
if (!this.isSingle) {
|
2025-01-20 08:50:40 +08:00
|
|
|
|
imageBtn({ btnWidth: '28%', btnHeight: '71%', imgSrc: $r('app.media.index_lw') })
|
2024-08-19 09:32:41 +08:00
|
|
|
|
.margin({ left: 80 * globalThis.ratio })
|
|
|
|
|
|
.onClick(async () => {
|
|
|
|
|
|
if (this.loading) {
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
2024-08-22 13:59:33 +08:00
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
this.angle = 360
|
|
|
|
|
|
}, 1000)
|
2024-08-19 09:32:41 +08:00
|
|
|
|
this.angle = 0
|
|
|
|
|
|
if (!globalThis.timeInfo) {
|
2024-08-26 15:09:13 +08:00
|
|
|
|
globalThis.type = '1'
|
2025-03-13 10:09:12 +08:00
|
|
|
|
globalThis.title = '时间同步接口连接失败,尝试重新同步,请稍后'
|
2024-08-23 13:44:42 +08:00
|
|
|
|
this.errorDialog.open()
|
2024-08-19 09:32:41 +08:00
|
|
|
|
promptAction.showToast({
|
2025-03-13 10:09:12 +08:00
|
|
|
|
message: `时间同步接口连接失败,尝试重新同步,请稍后`,
|
2024-08-19 09:32:41 +08:00
|
|
|
|
duration: 3000
|
|
|
|
|
|
});
|
|
|
|
|
|
this.loading = false
|
2025-03-14 09:28:20 +08:00
|
|
|
|
await this.initParams()
|
2024-08-19 09:32:41 +08:00
|
|
|
|
return
|
|
|
|
|
|
}
|
2024-08-21 08:53:26 +08:00
|
|
|
|
if (!globalThis.carInfo) {
|
2025-03-14 09:28:20 +08:00
|
|
|
|
globalThis.type = '1'
|
|
|
|
|
|
globalThis.title = '车辆信息接口获取失败,尝试重新获取,请稍后'
|
|
|
|
|
|
this.errorDialog.open()
|
2024-08-21 08:53:26 +08:00
|
|
|
|
promptAction.showToast({
|
2025-03-13 10:09:12 +08:00
|
|
|
|
message: `车辆信息接口获取失败,尝试重新获取,请稍后`,
|
2024-08-21 08:53:26 +08:00
|
|
|
|
duration: 3000
|
|
|
|
|
|
});
|
|
|
|
|
|
this.loading = false
|
2025-03-14 09:28:20 +08:00
|
|
|
|
await this.initParams()
|
2024-08-21 08:53:26 +08:00
|
|
|
|
return
|
|
|
|
|
|
}
|
2024-08-19 09:32:41 +08:00
|
|
|
|
this.testXMLToJSONInWorker()
|
|
|
|
|
|
})
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (this.isSingle) {
|
2025-01-20 08:50:40 +08:00
|
|
|
|
imageBtn({ btnWidth: '28%', btnHeight: '71%', imgSrc: $r('app.media.index_dj') })
|
2024-08-19 09:32:41 +08:00
|
|
|
|
.margin({ left: 80 * globalThis.ratio })
|
|
|
|
|
|
.onClick(() => {
|
|
|
|
|
|
if (this.loading) {
|
|
|
|
|
|
return
|
2024-08-15 13:42:36 +08:00
|
|
|
|
}
|
2024-12-29 21:43:12 +08:00
|
|
|
|
// this.vocObj.playAudio({
|
|
|
|
|
|
// type: 1,
|
|
|
|
|
|
// name: 'button_media.wav'
|
|
|
|
|
|
// })
|
2024-08-27 19:41:15 +08:00
|
|
|
|
if (judgeConfig.isTrajectoryOpen) {
|
2024-08-26 19:27:23 +08:00
|
|
|
|
router.pushUrl({
|
|
|
|
|
|
url: 'pages/UserInfo',
|
|
|
|
|
|
}, router.RouterMode.Single)
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
2024-08-19 09:32:41 +08:00
|
|
|
|
//判断数据库是否有表数据,有则直接跳转,没有则读取本地数据
|
|
|
|
|
|
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()
|
|
|
|
|
|
}
|
2024-08-22 13:59:33 +08:00
|
|
|
|
});
|
2024-08-19 09:32:41 +08:00
|
|
|
|
})
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
2025-01-20 08:50:40 +08:00
|
|
|
|
imageBtn({ btnWidth: '28%', btnHeight: '71%', imgSrc: $r('app.media.index_zj') })
|
2024-08-19 09:32:41 +08:00
|
|
|
|
.margin({ right: 80 * globalThis.ratio })
|
|
|
|
|
|
.onClick(() => {
|
|
|
|
|
|
if (this.loading) {
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
2024-12-29 21:43:12 +08:00
|
|
|
|
// this.vocObj.playAudio({
|
|
|
|
|
|
// type: 1,
|
|
|
|
|
|
// name: 'button_media.wav'
|
|
|
|
|
|
// })
|
2024-08-19 09:32:41 +08:00
|
|
|
|
router.pushUrl({
|
|
|
|
|
|
url: 'pages/CarCheck'
|
|
|
|
|
|
}, router.RouterMode.Single);
|
|
|
|
|
|
})
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
.width('100%')
|
|
|
|
|
|
.justifyContent(FlexAlign.SpaceAround)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Column() {
|
|
|
|
|
|
Row() {
|
|
|
|
|
|
Column() {
|
2025-04-17 15:01:19 +08:00
|
|
|
|
Text('V外壳:' + this.version)
|
2024-01-05 11:11:15 +08:00
|
|
|
|
.fontColor('#CCAE7A')
|
2024-10-28 13:47:03 +08:00
|
|
|
|
.fontSize(18 * globalThis.ratio)
|
2024-01-05 11:11:15 +08:00
|
|
|
|
.width('30%')
|
|
|
|
|
|
.margin({ bottom: 10 })
|
2025-04-17 15:01:19 +08:00
|
|
|
|
Text('V评判:' + this.judgeVersion)
|
2024-10-28 13:47:03 +08:00
|
|
|
|
.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 })
|
2024-01-05 11:11:15 +08:00
|
|
|
|
Text('授权信息:' + (this.hasAuth ? '已授权' : '未授权'))
|
|
|
|
|
|
.fontColor('#CCAE7A')
|
2024-10-28 13:47:03 +08:00
|
|
|
|
.fontSize(18 * globalThis.ratio)
|
2024-01-05 11:11:15 +08:00
|
|
|
|
.width('30%')
|
|
|
|
|
|
}
|
|
|
|
|
|
.margin({ left: 24 })
|
|
|
|
|
|
.gesture(
|
|
|
|
|
|
GestureGroup(GestureMode.Exclusive,
|
2024-01-31 14:35:16 +08:00
|
|
|
|
TapGesture({ count: 2 })
|
2024-01-05 11:11:15 +08:00
|
|
|
|
.onAction(() => {
|
2024-06-27 20:53:36 +08:00
|
|
|
|
// takePhotoFn(this.context)
|
|
|
|
|
|
|
2024-01-05 11:11:15 +08:00
|
|
|
|
globalThis.singlePlay = !globalThis.singlePlay
|
|
|
|
|
|
this.isSingle = globalThis.singlePlay
|
|
|
|
|
|
})
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2024-07-17 10:19:16 +08:00
|
|
|
|
Text('考车号:' + this.deviceId)
|
2024-07-02 11:39:46 +08:00
|
|
|
|
.fontColor('#CCAE7A')
|
|
|
|
|
|
.fontSize(22 * globalThis.ratio)
|
|
|
|
|
|
.margin({ right: 24 })
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
.width('100%')
|
|
|
|
|
|
.justifyContent(FlexAlign.SpaceBetween)
|
|
|
|
|
|
.margin({ bottom: 10 })
|
|
|
|
|
|
}
|
2024-07-02 11:39:46 +08:00
|
|
|
|
|
2024-05-09 13:42:56 +08:00
|
|
|
|
//
|
2024-08-10 14:00:18 +08:00
|
|
|
|
if (this.dialogVisiable) {
|
2024-08-19 09:32:41 +08:00
|
|
|
|
Flex({ justifyContent: FlexAlign.Center }) {
|
2024-08-10 14:00:18 +08:00
|
|
|
|
Text('确认是否退出应用')
|
2024-08-19 09:32:41 +08:00
|
|
|
|
.fontSize(28 * this.ratio * this.dialogRatio)
|
|
|
|
|
|
.margin({ top: 100 * this.ratio * this.dialogRatio })
|
2024-08-10 14:00:18 +08:00
|
|
|
|
Row() {
|
|
|
|
|
|
Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
|
2024-08-19 09:32:41 +08:00
|
|
|
|
Text(' 取 消 ')
|
|
|
|
|
|
.fontSize(24 * this.ratio * this.dialogRatio)
|
|
|
|
|
|
.fontColor('#fff')
|
|
|
|
|
|
.width(100 * this.ratio * this.dialogRatio)
|
2024-08-10 14:00:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
.commStyle()
|
|
|
|
|
|
.onClick(() => {
|
|
|
|
|
|
this.dialogVisiable = false
|
2024-12-29 21:43:12 +08:00
|
|
|
|
// this.vocObj.playAudio({
|
|
|
|
|
|
// type: 1,
|
|
|
|
|
|
// name: 'button_media.wav'
|
|
|
|
|
|
// })
|
2024-08-19 09:32:41 +08:00
|
|
|
|
}).margin({ right: 10 * this.ratio })
|
2024-08-10 14:00:18 +08:00
|
|
|
|
|
|
|
|
|
|
Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
|
2024-08-19 09:32:41 +08:00
|
|
|
|
Text(' 确 定 ')
|
|
|
|
|
|
.fontSize(24 * this.ratio * this.dialogRatio)
|
|
|
|
|
|
.fontColor('#fff')
|
|
|
|
|
|
.width(100 * this.ratio * this.dialogRatio)
|
2024-08-10 14:00:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
.commStyle()
|
|
|
|
|
|
.onClick(() => {
|
2024-12-29 21:43:12 +08:00
|
|
|
|
// this.vocObj.playAudio({
|
|
|
|
|
|
// type: 1,
|
|
|
|
|
|
// name: 'button_media.wav'
|
|
|
|
|
|
// })
|
2025-03-05 16:22:24 +08:00
|
|
|
|
let ctx = getContext(this) as common.UIAbilityContext
|
|
|
|
|
|
ctx.terminateSelf()
|
2024-08-10 14:00:18 +08:00
|
|
|
|
})
|
2024-08-19 09:32:41 +08:00
|
|
|
|
}.position({ y: 265 * this.ratio * this.dialogRatio, x: 115 * this.ratio * this.dialogRatio })
|
2024-08-10 14:00:18 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
2024-08-19 09:32:41 +08:00
|
|
|
|
.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) })
|
2024-08-10 14:00:18 +08:00
|
|
|
|
.backgroundColor('#E6E3DF')
|
2024-08-19 09:32:41 +08:00
|
|
|
|
.borderRadius(19 * this.ratio * this.dialogRatio)
|
2024-08-10 14:00:18 +08:00
|
|
|
|
}
|
2025-01-04 13:51:34 +08:00
|
|
|
|
if (this.delLoading) {
|
2025-01-03 17:24:11 +08:00
|
|
|
|
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 })
|
|
|
|
|
|
|
2025-01-04 13:51:34 +08:00
|
|
|
|
Text('正在清理本地数据,请稍候……')
|
2025-01-03 17:24:11 +08:00
|
|
|
|
.fontSize(24 * globalThis.ratio)
|
|
|
|
|
|
.margin({ top: 20 * globalThis.ratio })
|
|
|
|
|
|
.fontWeight(400)
|
|
|
|
|
|
}
|
2025-01-04 13:51:34 +08:00
|
|
|
|
.visibility(this.delLoading ? Visibility.Visible : Visibility.Hidden)
|
2025-01-03 17:24:11 +08:00
|
|
|
|
.width(660 * globalThis.ratio)
|
|
|
|
|
|
.height(360 * globalThis.ratio)
|
|
|
|
|
|
.position({ x: 150 * globalThis.ratio, y: 98 * globalThis.ratio })
|
|
|
|
|
|
.backgroundColor('#E6E3DF')
|
|
|
|
|
|
.borderRadius(19 * globalThis.ratio)
|
|
|
|
|
|
}
|
2025-01-04 13:51:34 +08:00
|
|
|
|
|
2024-01-05 11:11:15 +08:00
|
|
|
|
if (this.loading) {
|
2024-07-02 11:39:46 +08:00
|
|
|
|
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)
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.width('100%')
|
|
|
|
|
|
.height('100%')
|
|
|
|
|
|
.justifyContent(FlexAlign.SpaceBetween)
|
|
|
|
|
|
.backgroundImagePosition({ x: 0, y: 0 })
|
|
|
|
|
|
.backgroundImage($r('app.media.index_bg'))
|
|
|
|
|
|
.backgroundImageSize({ width: '100%', height: '100%' })
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-04 21:34:12 +08:00
|
|
|
|
async startServiceAbility() {
|
|
|
|
|
|
let want: Want = {
|
|
|
|
|
|
deviceId: '',
|
|
|
|
|
|
bundleName: 'com.oh.dts',
|
|
|
|
|
|
abilityName: 'ServiceExtAbility'
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
await this.context.startServiceExtensionAbility(want).then(() => {
|
|
|
|
|
|
// 成功启动后台服务
|
|
|
|
|
|
console.log('js-test index.ets Succeeded in starting ServiceExtensionAbility.');
|
|
|
|
|
|
let self = this;
|
|
|
|
|
|
let options: common.ConnectOptions = {
|
|
|
|
|
|
onConnect(elementName, remote): void {
|
|
|
|
|
|
console.log('js-test index.ets onConnect callback');
|
|
|
|
|
|
if (remote === null) {
|
|
|
|
|
|
console.log(`js-test index.ets onConnect remote is null`);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
self.serviceExtProxy = new IdlServiceExtProxy(remote);
|
|
|
|
|
|
globalThis.serviceExtProxy = self.serviceExtProxy
|
|
|
|
|
|
console.log(`js-test index.ets processData, this.serviceExtProxy == `, self.serviceExtProxy);
|
|
|
|
|
|
// 通过接口调用的方式进行通信,屏蔽了RPC通信的细节,简洁明了
|
|
|
|
|
|
// self.serviceExtProxy.processData(1, (errorCode: number, retVal: object) => {
|
|
|
|
|
|
// console.log(`js-test index.ets processData, errorCode: ${errorCode}, retVal: ${retVal}`);
|
|
|
|
|
|
// });
|
|
|
|
|
|
},
|
|
|
|
|
|
onDisconnect(elementName): void {
|
|
|
|
|
|
console.log('js-test index.ets onDisconnect callback');
|
|
|
|
|
|
},
|
|
|
|
|
|
onFailed(code): void {
|
|
|
|
|
|
console.log('js-test index.ets onFailed callback', JSON.stringify(code));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 建立连接后返回的Id需要保存下来,在解绑服务时需要作为参数传入
|
|
|
|
|
|
// let connectionId = context.connectServiceExtensionAbility(want, options);
|
|
|
|
|
|
try {
|
|
|
|
|
|
this.context.connectServiceExtensionAbility(want, options);
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
console.log('js-test index.ets connectServiceExtensionAbility err == ', JSON.stringify(e));
|
|
|
|
|
|
}
|
|
|
|
|
|
// 成功连接后台服务
|
|
|
|
|
|
console.log('js-test index.ets connectServiceExtensionAbility success');
|
|
|
|
|
|
|
|
|
|
|
|
}).catch((err) => {
|
|
|
|
|
|
console.log(`js-test index.ets Failed to start ServiceExtensionAbility. Code is ${err.code}, message is ${err.message}`);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-08-22 13:59:33 +08:00
|
|
|
|
async aboutToAppear() {
|
2025-03-04 21:34:12 +08:00
|
|
|
|
emitter.on({
|
|
|
|
|
|
eventId: 1
|
|
|
|
|
|
}, async () => {
|
|
|
|
|
|
let want: Want = {
|
|
|
|
|
|
deviceId: '',
|
|
|
|
|
|
bundleName: 'com.oh.dts',
|
|
|
|
|
|
abilityName: 'ServiceExtAbility'
|
|
|
|
|
|
};
|
|
|
|
|
|
try {
|
|
|
|
|
|
console.log("lixiao, 开始重启服务")
|
|
|
|
|
|
await this.context.stopServiceExtensionAbility(want)
|
|
|
|
|
|
await this.startServiceAbility()
|
|
|
|
|
|
console.log("lixiao, 重启服务成功")
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
console.log("lixiao, 重启服务失败", JSON.stringify(e))
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
await this.startServiceAbility()
|
2025-01-04 13:51:34 +08:00
|
|
|
|
|
2025-01-02 11:01:09 +08:00
|
|
|
|
this.avPlayer = new VoiceAnnounce();
|
2025-01-20 08:50:40 +08:00
|
|
|
|
this.initParamFlag = false
|
|
|
|
|
|
this.delLoading = false
|
2024-08-19 09:32:41 +08:00
|
|
|
|
this.dialogVisiable = false
|
2024-01-05 11:11:15 +08:00
|
|
|
|
this.angle = 0
|
|
|
|
|
|
this.loading = false
|
2024-08-19 10:11:22 +08:00
|
|
|
|
globalThis.lsh = '1111111111111'
|
2024-08-26 15:09:13 +08:00
|
|
|
|
globalThis.errorDialog = this.errorDialog
|
2024-10-28 13:47:03 +08:00
|
|
|
|
globalThis.udpEvent = new UdpEvent();
|
2025-01-04 13:51:34 +08:00
|
|
|
|
getSyncData('MA_SYSSET').then(async data => {
|
|
|
|
|
|
|
|
|
|
|
|
console.log('datadata', JSON.stringify(data))
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
|
|
data.forEach(async sys => {
|
|
|
|
|
|
//判断是否能点开始考试
|
2025-01-20 08:50:40 +08:00
|
|
|
|
if (sys.v_no === '305') {
|
2025-01-04 13:51:34 +08:00
|
|
|
|
console.log('syssyssyssys')
|
|
|
|
|
|
// this.delLoading=true
|
|
|
|
|
|
// globalThis.param854Str=sys.v_value
|
2025-01-20 08:50:40 +08:00
|
|
|
|
delPic(Number(sys.v_value), 1)
|
|
|
|
|
|
delPic(Number(sys.v_value), 2)
|
2025-04-17 16:39:01 +08:00
|
|
|
|
delLog(Number(sys.v_value))
|
2025-01-04 13:51:34 +08:00
|
|
|
|
// this.delLoading=false
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
});
|
2025-01-03 17:24:11 +08:00
|
|
|
|
|
2024-06-27 20:53:36 +08:00
|
|
|
|
}
|
2024-07-02 11:39:46 +08:00
|
|
|
|
|
2025-01-02 11:01:09 +08:00
|
|
|
|
aboutToDisappear() {
|
|
|
|
|
|
// this.vocObj && this.vocObj.releasePlayer()
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-07-02 11:39:46 +08:00
|
|
|
|
async testXMLToJSONInWorker() {
|
2024-08-21 08:53:26 +08:00
|
|
|
|
if (this.loading) {
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
2024-08-26 19:27:23 +08:00
|
|
|
|
// let mode=globalThis.timeInfo?.mode?globalThis.timeInfo?.mode:1
|
|
|
|
|
|
|
|
|
|
|
|
// console.log('mode',mode)
|
2024-10-28 13:47:03 +08:00
|
|
|
|
|
2024-07-02 11:39:46 +08:00
|
|
|
|
const param = {
|
|
|
|
|
|
carId: globalThis.carInfo?.carId,
|
|
|
|
|
|
examinationRoomId: globalThis.carInfo?.examinationRoomId,
|
|
|
|
|
|
judgeVersion: globalThis.judgeVersion,
|
|
|
|
|
|
shellVersion: globalThis.version,
|
2025-01-20 08:50:40 +08:00
|
|
|
|
paraKdid: globalThis.timeInfo?.paraKdid || globalThis.timeInfo?.kdid,
|
|
|
|
|
|
kdid: globalThis.timeInfo?.kdid || globalThis.timeInfo?.paraKdid,
|
2024-06-27 20:53:36 +08:00
|
|
|
|
mode: globalThis.timeInfo?.mode,
|
2024-08-21 18:05:24 +08:00
|
|
|
|
context: this.context,
|
2024-08-22 13:59:33 +08:00
|
|
|
|
host: globalThis.host,
|
2024-08-26 19:27:23 +08:00
|
|
|
|
centerHost: globalThis.timeInfo?.url,
|
2024-08-22 13:59:33 +08:00
|
|
|
|
singlePlay: globalThis.singlePlay
|
2024-06-27 20:53:36 +08:00
|
|
|
|
}
|
2024-08-21 08:53:26 +08:00
|
|
|
|
this.loading = true
|
2025-01-20 08:50:40 +08:00
|
|
|
|
console.log("sql 1111")
|
|
|
|
|
|
|
|
|
|
|
|
getSingleCenterTable(param).then((ret) => {
|
|
|
|
|
|
console.log('teststetfinsh1', ret)
|
|
|
|
|
|
// DB.queryListBySql('select * from MA_SYSSET', [{
|
|
|
|
|
|
// name: "v_no",
|
|
|
|
|
|
// type: ColumnType.STRING,
|
|
|
|
|
|
// columnName: "v_no"
|
|
|
|
|
|
// }]).then((res) => {
|
|
|
|
|
|
// console.log('sql success', JSON.stringify(res))
|
|
|
|
|
|
// }).catch((err) => {
|
|
|
|
|
|
// console.log('sql error1', err)
|
|
|
|
|
|
// })
|
|
|
|
|
|
if (ret) {
|
2025-01-04 13:51:34 +08:00
|
|
|
|
getSyncData('MA_SYSSET').then(data => {
|
2024-10-28 13:47:03 +08:00
|
|
|
|
console.log('datadata', JSON.stringify(data))
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
|
|
data.forEach(sys => {
|
|
|
|
|
|
//判断是否能点开始考试
|
2025-01-20 08:50:40 +08:00
|
|
|
|
if (sys.v_no === '854') {
|
|
|
|
|
|
globalThis.param854Str = sys.v_value
|
2024-10-28 17:11:22 +08:00
|
|
|
|
}
|
2025-01-20 08:50:40 +08:00
|
|
|
|
if (sys.v_no === '824' && decodeURIComponent(sys.v_value) == '0') {
|
2024-10-28 13:47:03 +08:00
|
|
|
|
// this.Param612Str= decodeURIComponent(sys.v_value)
|
|
|
|
|
|
router.pushUrl({
|
2025-01-20 08:50:40 +08:00
|
|
|
|
url: 'pages/CarCheck',
|
2024-10-28 13:47:03 +08:00
|
|
|
|
params: {
|
2025-01-20 08:50:40 +08:00
|
|
|
|
'fromIndex': true
|
2024-10-28 13:47:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
}, router.RouterMode.Single)
|
2025-01-20 08:50:40 +08:00
|
|
|
|
} else {
|
2024-10-28 13:47:03 +08:00
|
|
|
|
router.pushUrl({
|
|
|
|
|
|
url: 'pages/ExaminerLogin',
|
|
|
|
|
|
}, router.RouterMode.Single)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
});
|
|
|
|
|
|
|
2024-07-01 12:36:46 +08:00
|
|
|
|
}
|
2025-01-20 08:50:40 +08:00
|
|
|
|
})
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
2024-07-02 11:39:46 +08:00
|
|
|
|
|
2024-02-26 15:01:27 +08:00
|
|
|
|
async heartMsg() {
|
2024-07-02 11:39:46 +08:00
|
|
|
|
const arr = [globalThis.signNum || 0, globalThis.statue || 1]
|
2024-08-26 15:09:13 +08:00
|
|
|
|
let tmpList = [];
|
2024-02-22 10:40:35 +08:00
|
|
|
|
tmpList.push(string2Bytes(arr[0], 1 * 8)[0])
|
|
|
|
|
|
tmpList.push(string2Bytes(arr[1], 1 * 8)[0])
|
2024-07-02 11:39:46 +08:00
|
|
|
|
const str = globalThis.lsh || '0000000000000'
|
|
|
|
|
|
for (let i = 0; i < str.length; i++) {
|
2024-02-22 10:40:35 +08:00
|
|
|
|
tmpList.push(string2Bytes(str.charCodeAt(i), 1 * 8)[0])
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
2024-06-27 20:53:36 +08:00
|
|
|
|
|
2024-07-02 11:39:46 +08:00
|
|
|
|
const param = {
|
|
|
|
|
|
id: 31,
|
|
|
|
|
|
list: tmpList,
|
|
|
|
|
|
carNo: globalThis.carInfo.carNo,
|
|
|
|
|
|
placeId: globalThis.carInfo.examinationRoomId
|
|
|
|
|
|
}
|
2024-06-27 20:53:36 +08:00
|
|
|
|
// globalThis.udpClient2.initHeartSendMsg(param,this.context)
|
2024-07-09 11:11:31 +08:00
|
|
|
|
if (globalThis.udpClient2.getStatus()) {
|
|
|
|
|
|
globalThis.udpClient2.sendMsgExt(param, this.context)
|
2024-07-02 08:59:03 +08:00
|
|
|
|
}
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
2025-01-20 08:50:40 +08:00
|
|
|
|
|
2024-07-19 09:21:47 +08:00
|
|
|
|
async onPageShow() {
|
2025-01-01 10:40:23 +08:00
|
|
|
|
await this.userAuth();
|
2024-08-19 09:32:41 +08:00
|
|
|
|
console.log('globalThis.singlePlay', globalThis.singlePlay)
|
2024-08-12 14:46:16 +08:00
|
|
|
|
if (globalThis.singlePlay == undefined || globalThis.singlePlay == null) {
|
2025-01-02 11:01:09 +08:00
|
|
|
|
// setVideoParam()
|
|
|
|
|
|
console.log('diyidiy')
|
2025-01-20 08:50:40 +08:00
|
|
|
|
this.context.resourceManager.getRawFileContent("welcome.wav")
|
|
|
|
|
|
.then(value => {
|
|
|
|
|
|
this.avPlayer.playAudio(['welcome.wav'])
|
|
|
|
|
|
|
|
|
|
|
|
// this.vocObj.playAudio({
|
|
|
|
|
|
// type: 1,
|
|
|
|
|
|
// name: 'welcome.wav'
|
|
|
|
|
|
// })
|
|
|
|
|
|
// let rawFile = value;
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
console.log("getRawFileContent promise error is " + error);
|
|
|
|
|
|
});
|
2024-08-29 11:04:10 +08:00
|
|
|
|
|
2024-08-22 13:59:33 +08:00
|
|
|
|
globalThis.singlePlay = false
|
2024-08-12 14:46:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
this.isSingle = globalThis.singlePlay
|
2025-01-02 17:53:34 +08:00
|
|
|
|
// this.loading = false
|
2024-08-19 09:32:41 +08:00
|
|
|
|
this.num = 0
|
2024-06-27 20:53:36 +08:00
|
|
|
|
// const TcpClient: TcpClient =new TcpClient(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort)
|
2024-08-20 09:13:43 +08:00
|
|
|
|
globalThis.lsh = '1111111111111'
|
2024-05-09 13:42:56 +08:00
|
|
|
|
}
|
2024-06-27 20:53:36 +08:00
|
|
|
|
|
2024-05-09 13:42:56 +08:00
|
|
|
|
async createAlbum() {
|
2025-01-20 08:50:40 +08:00
|
|
|
|
this.fileHelper = new FileHelper();
|
2025-01-03 10:25:31 +08:00
|
|
|
|
const time = await getCurrentTime()
|
|
|
|
|
|
const date = time.split(' ')[0]
|
2025-01-20 08:50:40 +08:00
|
|
|
|
this.fileHelper.createAlbum('jt')
|
2025-01-04 13:51:34 +08:00
|
|
|
|
// this.fileHelper.createAlbum('2025-01-02')
|
2025-01-20 08:50:40 +08:00
|
|
|
|
this.fileHelper.createAlbum('pz');
|
|
|
|
|
|
this.fileHelper.createAlbum(date);
|
2024-05-09 13:42:56 +08:00
|
|
|
|
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
2024-07-03 16:21:56 +08:00
|
|
|
|
|
2024-03-12 15:32:48 +08:00
|
|
|
|
userAuth() {
|
2025-01-20 08:50:40 +08:00
|
|
|
|
return new Promise((reslove, reject) => {
|
2025-01-01 10:40:23 +08:00
|
|
|
|
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;
|
|
|
|
|
|
}
|
2024-03-12 15:32:48 +08:00
|
|
|
|
}
|
2025-01-01 10:40:23 +08:00
|
|
|
|
// 授权成功
|
|
|
|
|
|
}).catch((err) => {
|
|
|
|
|
|
console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
|
|
|
|
|
|
})
|
2024-03-12 15:32:48 +08:00
|
|
|
|
})
|
2025-01-01 10:40:23 +08:00
|
|
|
|
|
2024-03-12 15:32:48 +08:00
|
|
|
|
}
|
2024-07-02 11:39:46 +08:00
|
|
|
|
|
2024-01-05 11:11:15 +08:00
|
|
|
|
async initParams() {
|
2025-04-17 15:01:19 +08:00
|
|
|
|
this.judgeVersion = await examJudgeVersion()
|
2024-08-19 09:32:41 +08:00
|
|
|
|
await getUDP(this.context, false)
|
2024-07-02 11:39:46 +08:00
|
|
|
|
this.loading = false
|
2024-08-26 19:27:23 +08:00
|
|
|
|
await getDeviceInfo(this.context)
|
2024-08-14 14:46:33 +08:00
|
|
|
|
await getCarInfo()
|
2024-08-19 09:32:41 +08:00
|
|
|
|
await getUDP2(this.context, false)
|
2024-08-14 14:46:33 +08:00
|
|
|
|
getTCP()
|
2024-08-19 09:32:41 +08:00
|
|
|
|
this.deviceId = globalThis.carInfo.carNo
|
2024-01-05 11:11:15 +08:00
|
|
|
|
await setCurrentTime();
|
2025-01-20 08:50:40 +08:00
|
|
|
|
if (!globalThis.distanceClass) {
|
2024-10-28 13:47:03 +08:00
|
|
|
|
const distanceClass = new GetDistance(globalThis.context)
|
|
|
|
|
|
await distanceClass.initFolder()
|
|
|
|
|
|
globalThis.distanceClass = distanceClass
|
2025-01-20 08:50:40 +08:00
|
|
|
|
console.info('surenjun', 'distanceClass=>初始化完成')
|
2024-10-28 13:47:03 +08:00
|
|
|
|
}
|
2024-01-05 11:11:15 +08:00
|
|
|
|
this.carNum = globalThis.carInfo.plateNo;
|
|
|
|
|
|
this.hasAuth = globalThis.hasAuth;
|
2025-01-20 08:50:40 +08:00
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
this.initParamFlag = true
|
|
|
|
|
|
}, 3000)
|
2024-01-31 14:35:16 +08:00
|
|
|
|
initJudgeUdp()
|
2024-08-14 14:46:33 +08:00
|
|
|
|
takePhotoFn(this.context)
|
|
|
|
|
|
clearInterval(this.interval)
|
|
|
|
|
|
this.interval = setInterval(() => {
|
|
|
|
|
|
this.num++
|
2024-12-29 21:43:12 +08:00
|
|
|
|
setliushuiNum()
|
|
|
|
|
|
// getliushuiNum(this.context)
|
2024-08-19 09:32:41 +08:00
|
|
|
|
if (this.num >= 3) {
|
2024-08-14 14:46:33 +08:00
|
|
|
|
this.heartMsg()
|
|
|
|
|
|
}
|
|
|
|
|
|
}, 1000)
|
2025-01-03 17:24:11 +08:00
|
|
|
|
this.createAlbum()
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
2024-07-02 11:39:46 +08:00
|
|
|
|
|
2024-01-05 11:11:15 +08:00
|
|
|
|
async getModel() {
|
|
|
|
|
|
const context = this.context;
|
|
|
|
|
|
//下载模型
|
|
|
|
|
|
await getEsCarModel(context)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|