Merge remote-tracking branch 'origin/api10' into api10
This commit is contained in:
commit
313998c531
@ -4,7 +4,7 @@ import TopLogo from './compontents/TopLogo';
|
|||||||
import testNapi from '@ohos.hiserialsdk';
|
import testNapi from '@ohos.hiserialsdk';
|
||||||
import { DwMapData, PassData, RealNumData, StackValueData, WarnFlagData, WarnFlagTipData } from '../mock';
|
import { DwMapData, PassData, RealNumData, StackValueData, WarnFlagData, WarnFlagTipData } from '../mock';
|
||||||
import { BaseInfoType, RouteParamsType } from '../model/Common';
|
import { BaseInfoType, RouteParamsType } from '../model/Common';
|
||||||
import { CarCheckDataType, CarConfigurationParams, CarInfoType, SpzdType } from '../model';
|
import { CarCheckDataType, CarConfigurationParams, CarInfoType } from '../model';
|
||||||
import { BusinessError } from '@ohos.base';
|
import { BusinessError } from '@ohos.base';
|
||||||
import { voiceService } from '../utils/Voice';
|
import { voiceService } from '../utils/Voice';
|
||||||
import dayTs from '../utils/Date';
|
import dayTs from '../utils/Date';
|
||||||
@ -144,7 +144,7 @@ struct Index {
|
|||||||
const param: CarConfigurationParams = {
|
const param: CarConfigurationParams = {
|
||||||
body: {
|
body: {
|
||||||
"carIdString": this.carInfo.carId || "", //考车ID
|
"carIdString": this.carInfo.carId || "", //考车ID
|
||||||
"deviceNo": baseInfo.deviceNo || ""
|
"deviceNo": baseInfo?.deviceNo || ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,8 +221,7 @@ struct Index {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if ((this.warnFlagTip.get(that.index) || []).length > 1) {
|
||||||
if (this.warnFlagTip.get(that.index).length > 1) {
|
|
||||||
if (that.stachValue[that.index] != that.signArr[that.realNum[that.index]]) {
|
if (that.stachValue[that.index] != that.signArr[that.realNum[that.index]]) {
|
||||||
that.warnFlag[that.index] = '2'
|
that.warnFlag[that.index] = '2'
|
||||||
}
|
}
|
||||||
@ -327,9 +326,10 @@ struct Index {
|
|||||||
// if (!flag) {
|
// if (!flag) {
|
||||||
// that.warnFlag[index] = '2';
|
// that.warnFlag[index] = '2';
|
||||||
// }
|
// }
|
||||||
const spzd: SpzdType = AppStorage.get('spzd')!;
|
// TODO 视频遮挡
|
||||||
const hasTruthyValue = Object.values(spzd).some((value: string) => value);
|
// const spzd: SpzdType = AppStorage.get('spzd')!;
|
||||||
that.warnFlag[index] = hasTruthyValue ? '1' : '2';
|
// const hasTruthyValue = Object.values(spzd).some((value: string) => value);
|
||||||
|
// that.warnFlag[index] = hasTruthyValue ? '1' : '2';
|
||||||
} else {
|
} else {
|
||||||
that.warnFlag[index] = '2'
|
that.warnFlag[index] = '2'
|
||||||
}
|
}
|
||||||
@ -346,16 +346,16 @@ struct Index {
|
|||||||
this.passArray[this.index] = true
|
this.passArray[this.index] = true
|
||||||
this.passArray = JSON.parse(JSON.stringify(this.passArray))
|
this.passArray = JSON.parse(JSON.stringify(this.passArray))
|
||||||
this.subFlag = true
|
this.subFlag = true
|
||||||
let name: string = this.warnFlagTip.get(this.index)[0]
|
let name: string = this.warnFlagTip.get(this.index)?.[0] || '';
|
||||||
if (this.warnFlagTip.get(this.index).length == 1) {
|
if (this.warnFlagTip.get(this.index)?.length == 1) {
|
||||||
this.vocObj.playAudio({
|
this.vocObj!.playAudio({
|
||||||
type: 1,
|
type: 1,
|
||||||
name,
|
name,
|
||||||
})
|
})
|
||||||
} else if (this.warnFlagTip.get(this.index).length == 2) {
|
} else if (this.warnFlagTip.get(this.index)?.length == 2) {
|
||||||
if (this.signArr[this.realNum[this.index]] && this.signArr[this.realNum[this.index]] != '0') {
|
if (this.signArr[this.realNum[this.index]] && this.signArr[this.realNum[this.index]] != '0') {
|
||||||
name = this.warnFlagTip.get(this.index)[1]
|
name = this.warnFlagTip.get(this.index)?.[1] || '';
|
||||||
this.vocObj.playAudio({
|
this.vocObj!.playAudio({
|
||||||
type: 1,
|
type: 1,
|
||||||
name,
|
name,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -94,7 +94,7 @@ struct Index {
|
|||||||
if (this.limit) {
|
if (this.limit) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')
|
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')!
|
||||||
let password: string = CryptoJS.MD5(this.inputTextArr[1]).toString();
|
let password: string = CryptoJS.MD5(this.inputTextArr[1]).toString();
|
||||||
const param: UserLoginType = {
|
const param: UserLoginType = {
|
||||||
carId: carInfo.carId as string,
|
carId: carInfo.carId as string,
|
||||||
|
|||||||
@ -44,7 +44,6 @@ struct Index {
|
|||||||
@State fd: number = -1;
|
@State fd: number = -1;
|
||||||
@State carInfo: CarInfoType = {};
|
@State carInfo: CarInfoType = {};
|
||||||
@State num: number = 0;
|
@State num: number = 0;
|
||||||
fileHelper: FileHelper = null;
|
|
||||||
errorDialog: CustomDialogController = new CustomDialogController({
|
errorDialog: CustomDialogController = new CustomDialogController({
|
||||||
builder: errorMsgDialog({
|
builder: errorMsgDialog({
|
||||||
title: AppStorage.get('title'),
|
title: AppStorage.get('title'),
|
||||||
@ -58,14 +57,15 @@ struct Index {
|
|||||||
alignment: DialogAlignment.Center,
|
alignment: DialogAlignment.Center,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
private fileHelper!: FileHelper
|
||||||
private interval = -1;
|
private interval = -1;
|
||||||
private avPlayer: VoiceAnnounce
|
private avPlayer!: VoiceAnnounce
|
||||||
private timeInfo: TimeSynchronizationRspBody
|
private timeInfo: TimeSynchronizationRspBody
|
||||||
private context = getContext(this) as common.UIAbilityContext;
|
private context = getContext(this) as common.UIAbilityContext;
|
||||||
|
|
||||||
async aboutToAppear() {
|
async aboutToAppear() {
|
||||||
this.avPlayer = new VoiceAnnounce();
|
this.avPlayer = new VoiceAnnounce(this.context);
|
||||||
this.ratio = AppStorage.get<number>('ratio')
|
this.ratio = AppStorage.get<number>('ratio') || 0
|
||||||
this.initParamFlag = false
|
this.initParamFlag = false
|
||||||
this.delLoading = false
|
this.delLoading = false
|
||||||
this.dialogVisible = false
|
this.dialogVisible = false
|
||||||
@ -88,8 +88,8 @@ struct Index {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async onPageShow(): Promise<void> {
|
async onPageShow(): Promise<void> {
|
||||||
this.singlePlay = AppStorage.get<boolean>('singlePlay')
|
this.singlePlay = AppStorage.get<boolean>('singlePlay') || false
|
||||||
this.baseInfo = AppStorage.get<BaseInfoType>('baseInfo')
|
this.baseInfo = AppStorage.get<BaseInfoType>('baseInfo')!
|
||||||
|
|
||||||
UseAuth(this.context).then(() => {
|
UseAuth(this.context).then(() => {
|
||||||
this.initParams()
|
this.initParams()
|
||||||
@ -153,7 +153,7 @@ struct Index {
|
|||||||
if (sys.v_no === '854') {
|
if (sys.v_no === '854') {
|
||||||
AppStorage.setOrCreate('param854Str', sys.v_value)
|
AppStorage.setOrCreate('param854Str', sys.v_value)
|
||||||
}
|
}
|
||||||
if (sys.v_no === '824' && decodeURIComponent(sys.v_value) == '0') {
|
if (sys.v_no === '824' && decodeURIComponent(sys.v_value || '') == '0') {
|
||||||
router.pushUrl({
|
router.pushUrl({
|
||||||
url: 'pages/CarCheck',
|
url: 'pages/CarCheck',
|
||||||
params: {
|
params: {
|
||||||
@ -199,7 +199,7 @@ struct Index {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async createAlbum() {
|
async createAlbum() {
|
||||||
this.fileHelper = new FileHelper();
|
this.fileHelper = new FileHelper(this.context);
|
||||||
const time = GetCurrentTime()
|
const time = GetCurrentTime()
|
||||||
const date = time.split(' ')[0]
|
const date = time.split(' ')[0]
|
||||||
this.fileHelper.createAlbum('jt')
|
this.fileHelper.createAlbum('jt')
|
||||||
@ -223,10 +223,10 @@ struct Index {
|
|||||||
await GetDeviceInfo(this.context)
|
await GetDeviceInfo(this.context)
|
||||||
await GetCarInfo()
|
await GetCarInfo()
|
||||||
// getTCP()
|
// getTCP()
|
||||||
this.carInfo = AppStorage.get<CarInfoType>('carInfo')
|
this.carInfo = AppStorage.get<CarInfoType>('carInfo')!
|
||||||
this.deviceId = this.carInfo.carNo
|
this.deviceId = this.carInfo.carNo || ""
|
||||||
await SetCurrentTime()
|
await SetCurrentTime()
|
||||||
this.timeInfo = AppStorage.get<TimeSynchronizationRspBody>('timeInfo')
|
this.timeInfo = AppStorage.get<TimeSynchronizationRspBody>('timeInfo')!
|
||||||
DrivingDataStorage.init(this.context)
|
DrivingDataStorage.init(this.context)
|
||||||
DrivingDataStorage.initializeTheDrivingDataFolder()
|
DrivingDataStorage.initializeTheDrivingDataFolder()
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
|||||||
@ -44,11 +44,11 @@ export async function GetCarInfo() {
|
|||||||
let date = new Date();
|
let date = new Date();
|
||||||
let params: ObtainCarExamInfoParams = {
|
let params: ObtainCarExamInfoParams = {
|
||||||
time: dayTs(date).format("YYYY-MM-DD HH:mm:ss"),
|
time: dayTs(date).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
deviceNo: AppStorage.get<string>('deviceNo')
|
deviceNo: AppStorage.get<string>('deviceNo') || ""
|
||||||
};
|
};
|
||||||
let res: ApiResponseType = await obtainCarExamInfo(params)
|
let res: ApiResponseType = await obtainCarExamInfo(params)
|
||||||
if (res.obtainCarExamInfoRsp.body) {
|
if (res.obtainCarExamInfoRsp && res.obtainCarExamInfoRsp.body) {
|
||||||
const carInfo: ObtainCarExamInfoRspBody = res?.obtainCarExamInfoRsp?.body
|
const carInfo: ObtainCarExamInfoRspBody = res?.obtainCarExamInfoRsp?.body!
|
||||||
carInfo.plateNo = decodeURIComponent(carInfo.plateNo)
|
carInfo.plateNo = decodeURIComponent(carInfo.plateNo)
|
||||||
AppStorage.setOrCreate('carInfo', carInfo)
|
AppStorage.setOrCreate('carInfo', carInfo)
|
||||||
}
|
}
|
||||||
@ -82,18 +82,25 @@ export async function UseAuth(context: common.UIAbilityContext): Promise<boolean
|
|||||||
|
|
||||||
//获取时间同步
|
//获取时间同步
|
||||||
export async function SetCurrentTime(): Promise<void> {
|
export async function SetCurrentTime(): Promise<void> {
|
||||||
let deviceNo: string = AppStorage.get<string>('deviceNo');
|
let deviceNo: string = AppStorage.get<string>('deviceNo')!;
|
||||||
let baseInfo: BaseInfoType = AppStorage.get<BaseInfoType>('baseInfo')
|
let baseInfo: BaseInfoType = AppStorage.get<BaseInfoType>('baseInfo')!
|
||||||
let params: TimeSynchronizationParams = {
|
let params: TimeSynchronizationParams = {
|
||||||
time: dayTs(new Date()).format("YYYY-MM-DD HH:mm:ss"),
|
time: dayTs(new Date()).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
deviceNo,
|
deviceNo,
|
||||||
version: baseInfo.version,
|
version: baseInfo.version!,
|
||||||
judgeVersion: baseInfo.judgeVersion
|
judgeVersion: baseInfo.judgeVersion!
|
||||||
}
|
}
|
||||||
let res: ApiResponseType = await timeSynchronization(params);
|
let res: ApiResponseType = await timeSynchronization(params);
|
||||||
AppStorage.setOrCreate<TimeSynchronizationRspBody>('timeInfo', res.timeSynchronizationRsp.body)
|
if (res.timeSynchronizationRsp?.body) {
|
||||||
let currentTime = res.timeSynchronizationRsp.head.time;
|
AppStorage.setOrCreate<TimeSynchronizationRspBody>('timeInfo', res.timeSynchronizationRsp.body);
|
||||||
let times = new Date(currentTime).getTime();
|
}
|
||||||
|
let currentTime = res.timeSynchronizationRsp?.head?.time;
|
||||||
|
let times = 0
|
||||||
|
if (currentTime) {
|
||||||
|
times = new Date(currentTime).getTime();
|
||||||
|
} else {
|
||||||
|
console.error("currentTime is undefined");
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
await systemTime.setTime(times)
|
await systemTime.setTime(times)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -129,7 +136,7 @@ async function obtainSerialNumber(data: string) {
|
|||||||
|
|
||||||
//设置流水号
|
//设置流水号
|
||||||
export async function SetSerialNumber() {
|
export async function SetSerialNumber() {
|
||||||
const data = AppStorage.get<string>("liushuiNo");
|
const data = AppStorage.get<string>("liushuiNo") || "";
|
||||||
const serialNumberTime = AppStorage.get<string>("liushuiDate");
|
const serialNumberTime = AppStorage.get<string>("liushuiDate");
|
||||||
obtainSerialNumber(data);
|
obtainSerialNumber(data);
|
||||||
const date = dayTs().format('YYYY-MM-DD HH:mm:ss');
|
const date = dayTs().format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import router from '@ohos.router'
|
import router from '@ohos.router'
|
||||||
import { CarCheckDataType } from '../model/CarCheck'
|
|
||||||
import { BaseInfoType, CarInfoType } from '../model/Common'
|
import { BaseInfoType, CarInfoType } from '../model/Common'
|
||||||
import TopLogo from './compontents/TopLogo'
|
import TopLogo from './compontents/TopLogo'
|
||||||
|
|
||||||
@ -88,8 +87,8 @@ struct Index {
|
|||||||
aboutToAppear() {
|
aboutToAppear() {
|
||||||
// this.vocObj = new voiceService(async (status, val, next) => {
|
// this.vocObj = new voiceService(async (status, val, next) => {
|
||||||
// });
|
// });
|
||||||
this.carInfo = AppStorage.get<CarInfoType>('carInfo')
|
this.carInfo = AppStorage.get<CarInfoType>('carInfo')!
|
||||||
this.baseInfo = AppStorage.get<BaseInfoType>('baseInfo')
|
this.baseInfo = AppStorage.get<BaseInfoType>('baseInfo')!
|
||||||
}
|
}
|
||||||
|
|
||||||
outClick() {
|
outClick() {
|
||||||
|
|||||||
@ -22,7 +22,7 @@ struct Index {
|
|||||||
'192.168.7.124', '20022', '192.168.7.170', '20122']
|
'192.168.7.124', '20022', '192.168.7.170', '20122']
|
||||||
@State @Watch('outClick') outFlag: boolean = false;
|
@State @Watch('outClick') outFlag: boolean = false;
|
||||||
scroller: Scroller = new Scroller()
|
scroller: Scroller = new Scroller()
|
||||||
private fileUtil: FileUtils
|
private fileUtil!: FileUtils
|
||||||
private context = getContext(this) as common.UIAbilityContext;
|
private context = getContext(this) as common.UIAbilityContext;
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
@ -145,17 +145,17 @@ struct Index {
|
|||||||
} else {
|
} else {
|
||||||
const result: EnvironmentConfigurationType = JSON.parse(data)
|
const result: EnvironmentConfigurationType = JSON.parse(data)
|
||||||
AppStorage.setOrCreate<EnvironmentConfigurationType>("EnvironmentConfiguration", result)
|
AppStorage.setOrCreate<EnvironmentConfigurationType>("EnvironmentConfiguration", result)
|
||||||
this.inputTextList1[9] = result.udplocalIp
|
this.inputTextList1[9] = result.udplocalIp ?? ''
|
||||||
this.inputTextList1[10] = result.udplocalIpPort
|
this.inputTextList1[10] = result.udplocalIpPort ?? ''
|
||||||
this.inputTextList1[7] = result.udpOppositeIp
|
this.inputTextList1[7] = result.udpOppositeIp ?? ''
|
||||||
this.inputTextList1[8] = result.udpOppositeIpPort
|
this.inputTextList1[8] = result.udpOppositeIpPort ?? ''
|
||||||
this.inputTextList1[0] = result.tcpOppositeIp
|
this.inputTextList1[0] = result.tcpOppositeIp ?? ''
|
||||||
this.inputTextList1[1] = result.tcpOppositePort
|
this.inputTextList1[1] = result.tcpOppositePort ?? ''
|
||||||
this.inputTextList1[5] = result.gateway
|
this.inputTextList1[5] = result.gateway ?? ''
|
||||||
this.inputTextList1[4] = result.netMask
|
this.inputTextList1[4] = result.netMask ?? ''
|
||||||
this.inputTextList1[6] = result.dnsServers
|
this.inputTextList1[6] = result.dnsServers ?? ''
|
||||||
this.inputTextList1[2] = result.centerIp
|
this.inputTextList1[2] = result.centerIp ?? ''
|
||||||
this.inputTextList1[3] = result.centerPort
|
this.inputTextList1[3] = result.centerPort ?? ''
|
||||||
}
|
}
|
||||||
|
|
||||||
ethernet.getIfaceConfig("eth0").then(value => {
|
ethernet.getIfaceConfig("eth0").then(value => {
|
||||||
|
|||||||
@ -15,7 +15,6 @@ import LoadingPopup from './compontents/judge/LoadingPopup';
|
|||||||
import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements';
|
import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements';
|
||||||
import { JudgeConfig } from './judgeSDK/utils/judgeConfig';
|
import { JudgeConfig } from './judgeSDK/utils/judgeConfig';
|
||||||
// import { initJudgeUdp } from '../common/utils/UdpJudge';
|
// import { initJudgeUdp } from '../common/utils/UdpJudge';
|
||||||
import errorMsgDialog from './compontents/errorMsgDialog';
|
|
||||||
import imageBtn from './compontents/imageBtn';
|
import imageBtn from './compontents/imageBtn';
|
||||||
import { CryptoJS } from '@ohos/crypto-js';
|
import { CryptoJS } from '@ohos/crypto-js';
|
||||||
|
|
||||||
@ -45,6 +44,7 @@ import { GetCurrentTime, NumberToByteArray } from '../utils/Common';
|
|||||||
import DB from '../utils/DbSql';
|
import DB from '../utils/DbSql';
|
||||||
import { CenterUDPClientInstance } from '../utils/business/CenterUdpBusiness';
|
import { CenterUDPClientInstance } from '../utils/business/CenterUdpBusiness';
|
||||||
import { JudgeEmitterInstance } from '../utils/business/UdpEvent';
|
import { JudgeEmitterInstance } from '../utils/business/UdpEvent';
|
||||||
|
import errorMsgDialog from './compontents/errorMsgDialog';
|
||||||
|
|
||||||
@Entry
|
@Entry
|
||||||
@Component
|
@Component
|
||||||
@ -210,7 +210,7 @@ struct UserInfo {
|
|||||||
]
|
]
|
||||||
|
|
||||||
aboutToAppear() {
|
aboutToAppear() {
|
||||||
this.avPlayer = new VoiceAnnounce();
|
this.avPlayer = new VoiceAnnounce(this.context);
|
||||||
}
|
}
|
||||||
|
|
||||||
async onPageShow() {
|
async onPageShow() {
|
||||||
@ -799,7 +799,7 @@ struct UserInfo {
|
|||||||
const arr = [this.signNum || 0, 1]
|
const arr = [this.signNum || 0, 1]
|
||||||
let tmpList: number[] = [];
|
let tmpList: number[] = [];
|
||||||
tmpList.push(NumberToByteArray(arr[0], 1 * 8)[0])
|
tmpList.push(NumberToByteArray(arr[0], 1 * 8)[0])
|
||||||
tmpList.push(NumberToByteArray(arr[1], 1 * 8)[0])
|
tmpList.push(NumberToByteArray(arr[1] ?? 0, 1 * 8)[0])
|
||||||
|
|
||||||
const param: UDPParamType = {
|
const param: UDPParamType = {
|
||||||
id: 43,
|
id: 43,
|
||||||
@ -809,7 +809,8 @@ struct UserInfo {
|
|||||||
}
|
}
|
||||||
CenterUDPClientInstance.sendData(param)
|
CenterUDPClientInstance.sendData(param)
|
||||||
// globalThis.udpClient2.sendMsgExt(param, this.context)
|
// globalThis.udpClient2.sendMsgExt(param, this.context)
|
||||||
if (res.examinationStuAbsentRsp.head.resultCode == '0') {
|
if (res.examinationStuAbsentRsp && res.examinationStuAbsentRsp.head &&
|
||||||
|
res.examinationStuAbsentRsp.head.resultCode == '0') {
|
||||||
this.pageIndex = 0
|
this.pageIndex = 0
|
||||||
this.qkFlag = false
|
this.qkFlag = false
|
||||||
this.currentUser = EmptyCandidateObject
|
this.currentUser = EmptyCandidateObject
|
||||||
@ -829,9 +830,9 @@ struct UserInfo {
|
|||||||
// const { carId, examinationRoomId } = this.carInfo;
|
// const { carId, examinationRoomId } = this.carInfo;
|
||||||
const examItems = await getExaminationItem({
|
const examItems = await getExaminationItem({
|
||||||
time: GetCurrentTime() || "",
|
time: GetCurrentTime() || "",
|
||||||
carId: this.carInfo.carId,
|
carId: this.carInfo.carId || "",
|
||||||
lsh: this.currentUser.lsh || '',
|
lsh: this.currentUser.lsh || '',
|
||||||
examinationRoomId: this.carInfo.examinationRoomId
|
examinationRoomId: this.carInfo.examinationRoomId || ""
|
||||||
});
|
});
|
||||||
|
|
||||||
if (examItems?.getExaminationItemRsp?.body?.kssycs != 0) {
|
if (examItems?.getExaminationItemRsp?.body?.kssycs != 0) {
|
||||||
@ -856,9 +857,9 @@ struct UserInfo {
|
|||||||
//获取已考项目
|
//获取已考项目
|
||||||
examItems = await getExaminationItem({
|
examItems = await getExaminationItem({
|
||||||
time: GetCurrentTime(),
|
time: GetCurrentTime(),
|
||||||
carId: this.carInfo.carId,
|
carId: this.carInfo.carId || "",
|
||||||
lsh: this.currentUser.lsh || '',
|
lsh: this.currentUser.lsh || '',
|
||||||
examinationRoomId: this.carInfo.examinationRoomId
|
examinationRoomId: this.carInfo.examinationRoomId || ""
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
this.currentUser.id = '1'
|
this.currentUser.id = '1'
|
||||||
@ -1032,7 +1033,7 @@ struct UserInfo {
|
|||||||
ksxl: this.currentUser.xldm,
|
ksxl: this.currentUser.xldm,
|
||||||
zp: photoBase64,
|
zp: photoBase64,
|
||||||
kssj: dayTs(date).format("YYYY-MM-DD HH:mm:ss") || '',
|
kssj: dayTs(date).format("YYYY-MM-DD HH:mm:ss") || '',
|
||||||
kchp: decodeURI(this.carInfo.plateNo),
|
kchp: decodeURI(this.carInfo.plateNo || ""),
|
||||||
Ksy2sfzmhm: this.currentUser.ksy2sfzmhm || ''
|
Ksy2sfzmhm: this.currentUser.ksy2sfzmhm || ''
|
||||||
}
|
}
|
||||||
const param: RegulatoryInterfaceParams = {
|
const param: RegulatoryInterfaceParams = {
|
||||||
@ -1130,7 +1131,7 @@ struct UserInfo {
|
|||||||
AppStorage.setOrCreate('lsh', item.lsh)
|
AppStorage.setOrCreate('lsh', item.lsh)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.currentUser = item
|
this.currentUser = item
|
||||||
this.currentUser.ksy2 = this.examinerLoginInfo.kgxm
|
this.currentUser.ksy2 = this.examinerLoginInfo.kgxm || ""
|
||||||
|
|
||||||
}, 200)
|
}, 200)
|
||||||
|
|
||||||
|
|||||||
@ -37,7 +37,7 @@ struct Index {
|
|||||||
{ key: '第三路' },
|
{ key: '第三路' },
|
||||||
{ key: '第四路' },
|
{ key: '第四路' },
|
||||||
]
|
]
|
||||||
private fileUtil: FileUtils
|
private fileUtil!: FileUtils
|
||||||
private context = getContext(this) as common.UIAbilityContext;
|
private context = getContext(this) as common.UIAbilityContext;
|
||||||
private controller1: VideoController = new VideoController()
|
private controller1: VideoController = new VideoController()
|
||||||
private controller2: VideoController = new VideoController()
|
private controller2: VideoController = new VideoController()
|
||||||
@ -240,7 +240,7 @@ struct Index {
|
|||||||
}.margin({ left: 5 * this.ratio, right: 10 * this.ratio })
|
}.margin({ left: 5 * this.ratio, right: 10 * this.ratio })
|
||||||
|
|
||||||
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
||||||
.select(this.param.faceFlag)
|
.select(this.param.faceFlag || false)
|
||||||
.width(22 * this.ratio)
|
.width(22 * this.ratio)
|
||||||
.height(22 * this.ratio)
|
.height(22 * this.ratio)
|
||||||
.onChange((value: boolean) => {
|
.onChange((value: boolean) => {
|
||||||
@ -420,7 +420,7 @@ struct Index {
|
|||||||
Column() {
|
Column() {
|
||||||
Row() {
|
Row() {
|
||||||
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
||||||
.select(this.param.videoRecord1)
|
.select(this.param.videoRecord1 || false)
|
||||||
.width(22 * this.ratio)
|
.width(22 * this.ratio)
|
||||||
.height(22 * this.ratio)
|
.height(22 * this.ratio)
|
||||||
.onChange((value: boolean) => {
|
.onChange((value: boolean) => {
|
||||||
@ -429,7 +429,7 @@ struct Index {
|
|||||||
})
|
})
|
||||||
Text('一路').fontSize(16 * this.ratio).fontColor('#333333')
|
Text('一路').fontSize(16 * this.ratio).fontColor('#333333')
|
||||||
Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
|
Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
|
||||||
.select(this.param.videoRecord2)
|
.select(this.param.videoRecord2 || false)
|
||||||
.width(22 * this.ratio)
|
.width(22 * this.ratio)
|
||||||
.height(22 * this.ratio)
|
.height(22 * this.ratio)
|
||||||
.onChange((value: boolean) => {
|
.onChange((value: boolean) => {
|
||||||
@ -441,7 +441,7 @@ struct Index {
|
|||||||
|
|
||||||
Row() {
|
Row() {
|
||||||
Checkbox({ name: 'checkbox3', group: 'checkboxGroup' })
|
Checkbox({ name: 'checkbox3', group: 'checkboxGroup' })
|
||||||
.select(this.param.videoRecord3)
|
.select(this.param.videoRecord3 || false)
|
||||||
.width(22 * this.ratio)
|
.width(22 * this.ratio)
|
||||||
.height(22 * this.ratio)
|
.height(22 * this.ratio)
|
||||||
.onChange((value: boolean) => {
|
.onChange((value: boolean) => {
|
||||||
@ -450,7 +450,7 @@ struct Index {
|
|||||||
})
|
})
|
||||||
Text('三路').fontSize(16 * this.ratio).fontColor('#333333')
|
Text('三路').fontSize(16 * this.ratio).fontColor('#333333')
|
||||||
Checkbox({ name: 'checkbox4', group: 'checkboxGroup' })
|
Checkbox({ name: 'checkbox4', group: 'checkboxGroup' })
|
||||||
.select(this.param.videoRecord4)
|
.select(this.param.videoRecord4 || false)
|
||||||
.width(22 * this.ratio)
|
.width(22 * this.ratio)
|
||||||
.height(22 * this.ratio)
|
.height(22 * this.ratio)
|
||||||
.onChange((value: boolean) => {
|
.onChange((value: boolean) => {
|
||||||
@ -469,7 +469,7 @@ struct Index {
|
|||||||
Column() {
|
Column() {
|
||||||
Row() {
|
Row() {
|
||||||
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
||||||
.select(this.param.spzd1)
|
.select(this.param.spzd1 || false)
|
||||||
.width(22 * this.ratio)
|
.width(22 * this.ratio)
|
||||||
.height(22 * this.ratio)
|
.height(22 * this.ratio)
|
||||||
.onChange((value: boolean) => {
|
.onChange((value: boolean) => {
|
||||||
@ -477,7 +477,7 @@ struct Index {
|
|||||||
})
|
})
|
||||||
Text('一路').fontSize(16 * this.ratio).fontColor('#333333')
|
Text('一路').fontSize(16 * this.ratio).fontColor('#333333')
|
||||||
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
||||||
.select(this.param.spzd2)
|
.select(this.param.spzd2 || false)
|
||||||
.width(22 * this.ratio)
|
.width(22 * this.ratio)
|
||||||
.height(22 * this.ratio)
|
.height(22 * this.ratio)
|
||||||
.onChange((value: boolean) => {
|
.onChange((value: boolean) => {
|
||||||
@ -488,7 +488,7 @@ struct Index {
|
|||||||
|
|
||||||
Row() {
|
Row() {
|
||||||
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
||||||
.select(this.param.spzd3)
|
.select(this.param.spzd3 || false)
|
||||||
.width(22 * this.ratio)
|
.width(22 * this.ratio)
|
||||||
.height(22 * this.ratio)
|
.height(22 * this.ratio)
|
||||||
.onChange((value: boolean) => {
|
.onChange((value: boolean) => {
|
||||||
@ -496,7 +496,7 @@ struct Index {
|
|||||||
})
|
})
|
||||||
Text('三路').fontSize(16 * this.ratio).fontColor('#333333')
|
Text('三路').fontSize(16 * this.ratio).fontColor('#333333')
|
||||||
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
||||||
.select(this.param.spzd4)
|
.select(this.param.spzd4 || false)
|
||||||
.width(22 * this.ratio)
|
.width(22 * this.ratio)
|
||||||
.height(22 * this.ratio)
|
.height(22 * this.ratio)
|
||||||
.onChange((value: boolean) => {
|
.onChange((value: boolean) => {
|
||||||
@ -513,7 +513,7 @@ struct Index {
|
|||||||
|
|
||||||
Row() {
|
Row() {
|
||||||
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
|
||||||
.select(this.param.shuiying)
|
.select(this.param.shuiying || false)
|
||||||
.width(22 * this.ratio)
|
.width(22 * this.ratio)
|
||||||
.height(22 * this.ratio)
|
.height(22 * this.ratio)
|
||||||
.onChange((value: boolean) => {
|
.onChange((value: boolean) => {
|
||||||
@ -591,7 +591,7 @@ struct Index {
|
|||||||
|
|
||||||
aboutToAppear() {
|
aboutToAppear() {
|
||||||
// this.ratio = globalThis.ratio
|
// this.ratio = globalThis.ratio
|
||||||
this.ratio = AppStorage.get<number>('ratio')
|
this.ratio = AppStorage.get<number>('ratio') || 0
|
||||||
this.openFlag = true
|
this.openFlag = true
|
||||||
const fileUtil = new FileUtils(this.context)
|
const fileUtil = new FileUtils(this.context)
|
||||||
this.fileUtil = fileUtil
|
this.fileUtil = fileUtil
|
||||||
|
|||||||
@ -41,9 +41,9 @@ export default struct FaceCompare {
|
|||||||
@State carInfo: CarInfoType = {};
|
@State carInfo: CarInfoType = {};
|
||||||
@State param: VideoConfig = VideoConfigData
|
@State param: VideoConfig = VideoConfigData
|
||||||
private times = 1; //人脸比对失败次数, 超过3次将不会自动比对,需要点击重新打开重新触发
|
private times = 1; //人脸比对失败次数, 超过3次将不会自动比对,需要点击重新打开重新触发
|
||||||
private vocObj: voiceService = null;
|
private vocObj!: voiceService;
|
||||||
private controller: VideoController = new VideoController()
|
private controller: VideoController = new VideoController()
|
||||||
private fileUtil: FileUtils
|
private fileUtil!: FileUtils
|
||||||
private interval: number = -1
|
private interval: number = -1
|
||||||
private context = getContext(this) as common.UIAbilityContext;
|
private context = getContext(this) as common.UIAbilityContext;
|
||||||
|
|
||||||
@ -175,7 +175,7 @@ export default struct FaceCompare {
|
|||||||
|
|
||||||
async aboutToAppear() {
|
async aboutToAppear() {
|
||||||
const fileUtil = new FileUtils(this.context)
|
const fileUtil = new FileUtils(this.context)
|
||||||
this.carInfo = AppStorage.get<CarInfoType>('carInfo')
|
this.carInfo = AppStorage.get<CarInfoType>('carInfo')!
|
||||||
this.fileUtil = fileUtil
|
this.fileUtil = fileUtil
|
||||||
this.getVideoConfig()
|
this.getVideoConfig()
|
||||||
}
|
}
|
||||||
@ -195,13 +195,13 @@ export default struct FaceCompare {
|
|||||||
faceCompare({
|
faceCompare({
|
||||||
sfzh: this.sfzh,
|
sfzh: this.sfzh,
|
||||||
firstImage: this.firstImage.substr(22),
|
firstImage: this.firstImage.substr(22),
|
||||||
secondImage: data.base64,
|
secondImage: data.base64 || "",
|
||||||
type: "2",
|
type: "2",
|
||||||
verifyType: "1"
|
verifyType: "1"
|
||||||
})
|
})
|
||||||
.then(res => {
|
.then(res => {
|
||||||
console.log('mmmmm8', JSON.stringify(res))
|
console.log('mmmmm8', JSON.stringify(res))
|
||||||
if (res.imageCompareRsp.head.resultCode == '0') {
|
if (res.imageCompareRsp?.head?.resultCode == '0') {
|
||||||
this.controller.stop()
|
this.controller.stop()
|
||||||
this.showFaceCompare = !this.showFaceCompare
|
this.showFaceCompare = !this.showFaceCompare
|
||||||
this.showFaceCompareFlag = !this.showFaceCompareFlag
|
this.showFaceCompareFlag = !this.showFaceCompareFlag
|
||||||
@ -231,7 +231,9 @@ export default struct FaceCompare {
|
|||||||
const str = this.lsh
|
const str = this.lsh
|
||||||
console.log('this.lshbitbit', this.lsh, this.carInfo.carNo, this.carInfo.examinationRoomId)
|
console.log('this.lshbitbit', this.lsh, this.carInfo.carNo, this.carInfo.examinationRoomId)
|
||||||
for (let i = 0; i < str.length; i++) {
|
for (let i = 0; i < str.length; i++) {
|
||||||
tmpList.push(NumberToByteArray(str.charCodeAt(i), 1 * 8)[0])
|
if (str && str.charCodeAt(i) !== undefined) {
|
||||||
|
tmpList.push(NumberToByteArray(str.charCodeAt(i), 1 * 8)[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const param: UDPParamType = {
|
const param: UDPParamType = {
|
||||||
id: 46,
|
id: 46,
|
||||||
@ -282,34 +284,33 @@ export default struct FaceCompare {
|
|||||||
|
|
||||||
async getVideoConfig() {
|
async getVideoConfig() {
|
||||||
console.log('faceEnterIn')
|
console.log('faceEnterIn')
|
||||||
this.vocObj = new voiceService(async (status: string, val: string) => {
|
this.vocObj = new voiceService(async (status: string, val?: string) => {
|
||||||
if (status == 'idle') {
|
if (status == 'idle') {
|
||||||
if (val == 'face_check.mp3' || val == 'face_fail.mp3') {
|
if (val === 'face_check.mp3' || val === 'face_fail.mp3') {
|
||||||
if (this.times >= 3) {
|
if (this.times >= 3) {
|
||||||
AppStorage.setOrCreate('statue', 3)
|
AppStorage.setOrCreate('statue', 3);
|
||||||
this.faceCompareSucess = -1;
|
this.faceCompareSucess = -1;
|
||||||
this.vocObj && this.vocObj.playAudio({
|
this.vocObj && this.vocObj.playAudio({
|
||||||
type: 1,
|
type: 1,
|
||||||
name: 'face_checking.wav'
|
name: 'face_checking.wav',
|
||||||
})
|
});
|
||||||
this.heartMsg()
|
this.heartMsg();
|
||||||
} else {
|
} else {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.faceComparFn()
|
this.faceComparFn();
|
||||||
}, 2000)
|
}, 2000);
|
||||||
}
|
}
|
||||||
} else if (val == 'yzcg.wav') {
|
} else if (val === 'yzcg.wav') {
|
||||||
this.showFaceCompare = !this.showFaceCompare
|
this.showFaceCompare = !this.showFaceCompare;
|
||||||
this.showFaceCompareFlag = !this.showFaceCompareFlag
|
this.showFaceCompareFlag = !this.showFaceCompareFlag;
|
||||||
AppStorage.setOrCreate('statue', 4)
|
AppStorage.setOrCreate('statue', 4);
|
||||||
this.faceCompareSucess = 1;
|
this.faceCompareSucess = 1;
|
||||||
this.vocObj && this.vocObj.releasePlayer()
|
this.vocObj && this.vocObj.releasePlayer();
|
||||||
|
} else if (val === 'face_chekc_fail.wav') {
|
||||||
} else if (val == 'face_chekc_fail.wav') {
|
this.vocObj && this.vocObj.releasePlayer();
|
||||||
this.vocObj && this.vocObj.releasePlayer()
|
this.faceCompareSucess = -1;
|
||||||
this.faceCompareSucess = -1
|
this.showFaceCompare = !this.showFaceCompare;
|
||||||
this.showFaceCompare = !this.showFaceCompare
|
this.showFaceCompareFlag = !this.showFaceCompareFlag;
|
||||||
this.showFaceCompareFlag = !this.showFaceCompareFlag
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, this.context);
|
}, this.context);
|
||||||
|
|||||||
@ -1,156 +1,173 @@
|
|||||||
import router from '@ohos.router';
|
// import router from '@ohos.router';
|
||||||
|
|
||||||
@CustomDialog
|
@CustomDialog
|
||||||
export default struct errorMsgDialog {
|
export default struct errorMsgDialog {
|
||||||
|
dialogRatio: number = 0.8
|
||||||
|
title?: string
|
||||||
|
type?: string
|
||||||
|
@State angle: number = 0
|
||||||
private controller?: CustomDialogController
|
private controller?: CustomDialogController
|
||||||
cancel: () => void = () => {
|
cancel: () => void = () => {
|
||||||
}
|
}
|
||||||
confirm: () => void = () => {
|
confirm: () => void = () => {
|
||||||
}
|
}
|
||||||
dialogRatio: number = 0.8
|
|
||||||
title?: string
|
|
||||||
type: string //1 tip 2loading 3Dialog
|
|
||||||
@State angle: number = 0
|
|
||||||
|
|
||||||
@Styles
|
|
||||||
commStyle(){
|
|
||||||
.width(220 * globalThis.ratio * this.dialogRatio * 0.6)
|
|
||||||
.height(69 * globalThis.ratio * this.dialogRatio * 0.6)
|
|
||||||
.backgroundImage($r('app.media.button_nor'))
|
|
||||||
.backgroundImageSize({ width: '100%', height: '100%' })
|
|
||||||
// .margin({ bottom: 12 * this.ratio })
|
|
||||||
}
|
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
Column() {
|
|
||||||
if (this.title) {
|
|
||||||
Text(this.title)
|
|
||||||
.fontSize(30 * this.dialogRatio)
|
|
||||||
.margin(120 * this.dialogRatio)
|
|
||||||
}
|
|
||||||
if (this.type == '2') {
|
|
||||||
Image($r('app.media.open_loading'))
|
|
||||||
.width(200)
|
|
||||||
.rotate({ angle: this.angle })
|
|
||||||
.height(200)
|
|
||||||
.animation({
|
|
||||||
duration: 5000, // 动画时长
|
|
||||||
curve: Curve.EaseOut, // 动画曲线
|
|
||||||
delay: 500, // 动画延迟
|
|
||||||
iterations: -1, // 播放次数
|
|
||||||
playMode: PlayMode.Normal, // 动画模式
|
|
||||||
})
|
|
||||||
.margin(50)
|
|
||||||
}
|
|
||||||
if (this.type == '3') {
|
|
||||||
Row() {
|
|
||||||
Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
|
|
||||||
Text(' 取 消 ')
|
|
||||||
.fontSize(24 * globalThis.ratio * this.dialogRatio * 0.6)
|
|
||||||
.fontColor('#fff')
|
|
||||||
.width(60 * globalThis.ratio * this.dialogRatio)
|
|
||||||
}
|
|
||||||
.commStyle()
|
|
||||||
.onClick(() => {
|
|
||||||
if (this.controller != undefined) {
|
|
||||||
const errorCode = AppStorage.Get('errorMsg');
|
|
||||||
// const errorCodeFlage=AppStorage.Get('errorCodeFlage');
|
|
||||||
// console.log('errorCode',errorCode,errorCodeFlage)
|
|
||||||
if (errorCode == 0) {
|
|
||||||
router.replaceUrl({
|
|
||||||
url: 'pages/Index',
|
|
||||||
}, router.RouterMode.Single);
|
|
||||||
router.clear();
|
|
||||||
|
|
||||||
}
|
|
||||||
this.cancel()
|
|
||||||
this.controller.close()
|
|
||||||
}
|
|
||||||
}).margin({ right: 10 * globalThis.ratio * this.dialogRatio })
|
|
||||||
|
|
||||||
Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
|
|
||||||
Text(' 确 定 ')
|
|
||||||
.fontSize(24 * globalThis.ratio * this.dialogRatio * 0.6)
|
|
||||||
.fontColor('#fff')
|
|
||||||
.width(60 * globalThis.ratio * this.dialogRatio)
|
|
||||||
}
|
|
||||||
.commStyle()
|
|
||||||
.onClick(() => {
|
|
||||||
const errorCode = AppStorage.Get('errorCode');
|
|
||||||
const errorCodeFlage = AppStorage.Get('errorCodeFlage');
|
|
||||||
console.log('errorCode', errorCode, errorCodeFlage)
|
|
||||||
if (errorCode == 0 && errorCodeFlage) {
|
|
||||||
router.replaceUrl({
|
|
||||||
url: 'pages/Index',
|
|
||||||
}, router.RouterMode.Single);
|
|
||||||
router.clear();
|
|
||||||
|
|
||||||
}
|
|
||||||
console.log('errorCode', errorCode, errorCodeFlage)
|
|
||||||
|
|
||||||
if (this.controller != undefined) {
|
|
||||||
this.confirm()
|
|
||||||
this.controller.close()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
.padding({ bottom: 20 })
|
|
||||||
}
|
|
||||||
if (this.type == '4') {
|
|
||||||
Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
|
|
||||||
Text(' 确 定 ')
|
|
||||||
.fontSize(24 * globalThis.ratio * this.dialogRatio * 0.6)
|
|
||||||
.fontColor('#fff')
|
|
||||||
.width(60 * globalThis.ratio * this.dialogRatio)
|
|
||||||
}
|
|
||||||
.commStyle()
|
|
||||||
.onClick(() => {
|
|
||||||
const errorCode = AppStorage.Get('errorCode');
|
|
||||||
const errorCodeFlage = AppStorage.Get('errorCodeFlage');
|
|
||||||
console.log('errorCode', errorCode, errorCodeFlage)
|
|
||||||
if (errorCode == 0 && errorCodeFlage) {
|
|
||||||
router.replaceUrl({
|
|
||||||
url: 'pages/Index',
|
|
||||||
}, router.RouterMode.Single);
|
|
||||||
router.clear();
|
|
||||||
|
|
||||||
}
|
|
||||||
console.log('errorCode', errorCode, errorCodeFlage)
|
|
||||||
|
|
||||||
if (this.controller != undefined) {
|
|
||||||
this.confirm()
|
|
||||||
this.controller.close()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.backgroundColor('#E6E3DF')
|
|
||||||
.borderRadius(19 * globalThis.ratio)
|
|
||||||
.constraintSize({ minWidth: 520 })
|
|
||||||
}
|
|
||||||
|
|
||||||
aboutToAppear() {
|
|
||||||
AppStorage.SetOrCreate('errorMsg', 0);
|
|
||||||
setTimeout(() => {
|
|
||||||
console.log('this.type', this.type, this.angle)
|
|
||||||
if (this.type == '2') {
|
|
||||||
this.angle = 360
|
|
||||||
}
|
|
||||||
}, 1000)
|
|
||||||
if (this.type == '1') {
|
|
||||||
setTimeout(() => {
|
|
||||||
this.controller.close()
|
|
||||||
}, 2000)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
aboutToDisappear() {
|
|
||||||
this.title = ''
|
|
||||||
this.angle = 0
|
|
||||||
AppStorage.SetOrCreate('errorCodeFlage', false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @CustomDialog
|
||||||
|
// export default struct errorMsgDialog {
|
||||||
|
// private controller?: CustomDialogController
|
||||||
|
// cancel: () => void = () => {
|
||||||
|
// }
|
||||||
|
// confirm: () => void = () => {
|
||||||
|
// }
|
||||||
|
// dialogRatio: number = 0.8
|
||||||
|
// title?: string
|
||||||
|
// type: string //1 tip 2loading 3Dialog
|
||||||
|
// @State angle: number = 0
|
||||||
|
//
|
||||||
|
// @Styles
|
||||||
|
// commStyle(){
|
||||||
|
// .width(220 * globalThis.ratio * this.dialogRatio * 0.6)
|
||||||
|
// .height(69 * globalThis.ratio * this.dialogRatio * 0.6)
|
||||||
|
// .backgroundImage($r('app.media.button_nor'))
|
||||||
|
// .backgroundImageSize({ width: '100%', height: '100%' })
|
||||||
|
// // .margin({ bottom: 12 * this.ratio })
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// build() {
|
||||||
|
// Column() {
|
||||||
|
// if (this.title) {
|
||||||
|
// Text(this.title)
|
||||||
|
// .fontSize(30 * this.dialogRatio)
|
||||||
|
// .margin(120 * this.dialogRatio)
|
||||||
|
// }
|
||||||
|
// if (this.type == '2') {
|
||||||
|
// Image($r('app.media.open_loading'))
|
||||||
|
// .width(200)
|
||||||
|
// .rotate({ angle: this.angle })
|
||||||
|
// .height(200)
|
||||||
|
// .animation({
|
||||||
|
// duration: 5000, // 动画时长
|
||||||
|
// curve: Curve.EaseOut, // 动画曲线
|
||||||
|
// delay: 500, // 动画延迟
|
||||||
|
// iterations: -1, // 播放次数
|
||||||
|
// playMode: PlayMode.Normal, // 动画模式
|
||||||
|
// })
|
||||||
|
// .margin(50)
|
||||||
|
// }
|
||||||
|
// if (this.type == '3') {
|
||||||
|
// Row() {
|
||||||
|
// Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
|
||||||
|
// Text(' 取 消 ')
|
||||||
|
// .fontSize(24 * globalThis.ratio * this.dialogRatio * 0.6)
|
||||||
|
// .fontColor('#fff')
|
||||||
|
// .width(60 * globalThis.ratio * this.dialogRatio)
|
||||||
|
// }
|
||||||
|
// .commStyle()
|
||||||
|
// .onClick(() => {
|
||||||
|
// if (this.controller != undefined) {
|
||||||
|
// const errorCode = AppStorage.Get('errorMsg');
|
||||||
|
// // const errorCodeFlage=AppStorage.Get('errorCodeFlage');
|
||||||
|
// // console.log('errorCode',errorCode,errorCodeFlage)
|
||||||
|
// if (errorCode == 0) {
|
||||||
|
// router.replaceUrl({
|
||||||
|
// url: 'pages/Index',
|
||||||
|
// }, router.RouterMode.Single);
|
||||||
|
// router.clear();
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// this.cancel()
|
||||||
|
// this.controller.close()
|
||||||
|
// }
|
||||||
|
// }).margin({ right: 10 * globalThis.ratio * this.dialogRatio })
|
||||||
|
//
|
||||||
|
// Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
|
||||||
|
// Text(' 确 定 ')
|
||||||
|
// .fontSize(24 * globalThis.ratio * this.dialogRatio * 0.6)
|
||||||
|
// .fontColor('#fff')
|
||||||
|
// .width(60 * globalThis.ratio * this.dialogRatio)
|
||||||
|
// }
|
||||||
|
// .commStyle()
|
||||||
|
// .onClick(() => {
|
||||||
|
// const errorCode = AppStorage.Get('errorCode');
|
||||||
|
// const errorCodeFlage = AppStorage.Get('errorCodeFlage');
|
||||||
|
// console.log('errorCode', errorCode, errorCodeFlage)
|
||||||
|
// if (errorCode == 0 && errorCodeFlage) {
|
||||||
|
// router.replaceUrl({
|
||||||
|
// url: 'pages/Index',
|
||||||
|
// }, router.RouterMode.Single);
|
||||||
|
// router.clear();
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// console.log('errorCode', errorCode, errorCodeFlage)
|
||||||
|
//
|
||||||
|
// if (this.controller != undefined) {
|
||||||
|
// this.confirm()
|
||||||
|
// this.controller.close()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// )
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// .padding({ bottom: 20 })
|
||||||
|
// }
|
||||||
|
// if (this.type == '4') {
|
||||||
|
// Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
|
||||||
|
// Text(' 确 定 ')
|
||||||
|
// .fontSize(24 * globalThis.ratio * this.dialogRatio * 0.6)
|
||||||
|
// .fontColor('#fff')
|
||||||
|
// .width(60 * globalThis.ratio * this.dialogRatio)
|
||||||
|
// }
|
||||||
|
// .commStyle()
|
||||||
|
// .onClick(() => {
|
||||||
|
// const errorCode = AppStorage.Get('errorCode');
|
||||||
|
// const errorCodeFlage = AppStorage.Get('errorCodeFlage');
|
||||||
|
// console.log('errorCode', errorCode, errorCodeFlage)
|
||||||
|
// if (errorCode == 0 && errorCodeFlage) {
|
||||||
|
// router.replaceUrl({
|
||||||
|
// url: 'pages/Index',
|
||||||
|
// }, router.RouterMode.Single);
|
||||||
|
// router.clear();
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// console.log('errorCode', errorCode, errorCodeFlage)
|
||||||
|
//
|
||||||
|
// if (this.controller != undefined) {
|
||||||
|
// this.confirm()
|
||||||
|
// this.controller.close()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// )
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// .backgroundColor('#E6E3DF')
|
||||||
|
// .borderRadius(19 * globalThis.ratio)
|
||||||
|
// .constraintSize({ minWidth: 520 })
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// aboutToAppear() {
|
||||||
|
// AppStorage.SetOrCreate('errorMsg', 0);
|
||||||
|
// setTimeout(() => {
|
||||||
|
// console.log('this.type', this.type, this.angle)
|
||||||
|
// if (this.type == '2') {
|
||||||
|
// this.angle = 360
|
||||||
|
// }
|
||||||
|
// }, 1000)
|
||||||
|
// if (this.type == '1') {
|
||||||
|
// setTimeout(() => {
|
||||||
|
// this.controller.close()
|
||||||
|
// }, 2000)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// aboutToDisappear() {
|
||||||
|
// this.title = ''
|
||||||
|
// this.angle = 0
|
||||||
|
// AppStorage.SetOrCreate('errorCodeFlage', false);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
@ -83,7 +83,7 @@ export default struct DeductedPopup {
|
|||||||
async aboutToAppear() {
|
async aboutToAppear() {
|
||||||
this.carInfo = AppStorage.get<CarInfoType>('carInfo')
|
this.carInfo = AppStorage.get<CarInfoType>('carInfo')
|
||||||
this.singlePlay = AppStorage.get<boolean>('singlePlay')
|
this.singlePlay = AppStorage.get<boolean>('singlePlay')
|
||||||
this.avPlayer = new VoiceAnnounce();
|
this.avPlayer = new VoiceAnnounce(this.context);
|
||||||
this.judgeTask = new JudgeTask();
|
this.judgeTask = new JudgeTask();
|
||||||
const mediaTest = new FilePhoto(this.context);
|
const mediaTest = new FilePhoto(this.context);
|
||||||
this.filePhoto = mediaTest
|
this.filePhoto = mediaTest
|
||||||
|
|||||||
@ -1,198 +1,204 @@
|
|||||||
import apiJudgeSdk from 'libJudgeSdk.so';
|
// import apiJudgeSdk from 'libJudgeSdk.so';
|
||||||
import Judge from '../../judgeSDK/utils/judgeReal';
|
// import Judge from '../../judgeSDK/utils/judgeReal';
|
||||||
import { MarkRule, Project, ProjectObj } from '../../judgeSDK/api/judgeSDK.d';
|
// import { MarkRule, Project, ProjectObj } from '../../judgeSDK/api/judgeSDK.d';
|
||||||
import common from '@ohos.app.ability.common';
|
// import common from '@ohos.app.ability.common';
|
||||||
import {
|
// import {
|
||||||
examJudgeMapSetScaling
|
// examJudgeMapSetScaling
|
||||||
} from '../../judgeSDK/api'
|
// } from '../../judgeSDK/api'
|
||||||
|
//
|
||||||
interface RoadDataType {
|
// interface RoadDataType {
|
||||||
name: string,
|
// name: string,
|
||||||
key: string | string[]
|
// key: string | string[]
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
export default struct RealTime {
|
export default struct RealTime {
|
||||||
@State message: string = '开始绘制'
|
|
||||||
// 控制XComponent组件的创建和销毁
|
|
||||||
@State draw: boolean = false
|
|
||||||
//监管接口序列号
|
|
||||||
@State serialNumber: number = 0
|
|
||||||
//模拟考试项目
|
|
||||||
@State projects: Project[] = []
|
|
||||||
@State projectsObj: ProjectObj = {}
|
|
||||||
@State markRuleListObj: MarkRule = {}
|
|
||||||
@State scaleNum: number = 100
|
|
||||||
@State gpsActive: number = 1
|
|
||||||
private widthNumber: string | number | Resource = 0
|
|
||||||
private heightNumber: string | number | Resource = 0
|
|
||||||
private context = getContext(this) as common.UIAbilityContext;
|
|
||||||
@State ratio: number = 1
|
|
||||||
@State lane: Object = {}
|
|
||||||
@State timer:number = 0
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
super()
|
|
||||||
}
|
|
||||||
|
|
||||||
// xcomponentController: XComponentController = new XComponentController()
|
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
Row() {
|
|
||||||
Column() {
|
|
||||||
Row() {
|
|
||||||
Text('车道信息').fontColor(this.gpsActive == 0 ? '#2D3C5A' : '#fff').fontSize(20)
|
|
||||||
}
|
}
|
||||||
.width('100%')
|
|
||||||
.height(37)
|
|
||||||
.backgroundColor(this.gpsActive == 0 ? '#fff' : '#1A1A1A')
|
|
||||||
.margin({ top: 10 * this.ratio, right: 10 })
|
|
||||||
.justifyContent(FlexAlign.Center)
|
|
||||||
|
|
||||||
Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Start }) {
|
|
||||||
ForEach(this.RoadData, (item) => {
|
|
||||||
Column() {
|
|
||||||
Text(`${item.name}:${this.getValues(item)}`)
|
|
||||||
.fontSize(20)
|
|
||||||
.lineHeight(30)
|
|
||||||
.fontColor('#fff')
|
|
||||||
}.height(30).justifyContent(FlexAlign.Start).width('100%')
|
|
||||||
})
|
|
||||||
}.margin({top:5})
|
|
||||||
|
|
||||||
}.width(168 * 1.5)
|
|
||||||
.height(this.heightNumber)
|
|
||||||
.backgroundColor('#282828')
|
|
||||||
.margin({ top: 6 * this.ratio, })
|
|
||||||
|
|
||||||
Column() {
|
|
||||||
if (this.draw) {
|
|
||||||
XComponent({
|
|
||||||
id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变
|
|
||||||
type: 'surface',
|
|
||||||
libraryname: 'JudgeSdk'
|
|
||||||
// libraryname: 'judgesdk'
|
|
||||||
})
|
|
||||||
.width(this.widthNumber)
|
|
||||||
.height(this.heightNumber)
|
|
||||||
.onLoad(() => {
|
|
||||||
apiJudgeSdk.examJudgeMapSetDrawing(true); //停止绘制地图轨迹,false:表示结束绘制
|
|
||||||
})
|
|
||||||
.onDestroy(() => {
|
|
||||||
apiJudgeSdk.examJudgeMapSetDrawing(false); //停止绘制地图轨迹,false:表示结束绘制
|
|
||||||
this.draw = false;
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
Column() {
|
|
||||||
}
|
|
||||||
.width(this.widthNumber)
|
|
||||||
.height(this.heightNumber)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.width('100%')
|
|
||||||
.backgroundColor('#fff')
|
|
||||||
|
|
||||||
Row(){
|
|
||||||
Image($rawfile('judge/big.png')).width(60).onClick(()=>{
|
|
||||||
this.scaleFn( -this.getScaleNum() )
|
|
||||||
})
|
|
||||||
Image($rawfile('judge/small.png')).width(60).onClick(()=>{
|
|
||||||
this.scaleFn( this.getScaleNum() )
|
|
||||||
}).margin({left:20})
|
|
||||||
}.position({x:'32%',y:60})
|
|
||||||
}
|
|
||||||
.height('100%')
|
|
||||||
}
|
|
||||||
|
|
||||||
async aboutToDisappear() {
|
|
||||||
clearInterval(this.timer)
|
|
||||||
}
|
|
||||||
async aboutToAppear() {
|
|
||||||
const judge = new Judge(this)
|
|
||||||
let timer = setInterval(()=>{
|
|
||||||
this.lane = AppStorage.get('laneData');
|
|
||||||
},1000)
|
|
||||||
this.timer = timer
|
|
||||||
}
|
|
||||||
|
|
||||||
getScaleNum = ()=>{
|
|
||||||
const scaleNum = this.scaleNum;
|
|
||||||
if(scaleNum < 200){
|
|
||||||
return 10
|
|
||||||
}
|
|
||||||
if(scaleNum >= 200 && scaleNum < 400){
|
|
||||||
return 30
|
|
||||||
}
|
|
||||||
|
|
||||||
if(scaleNum >= 400 && scaleNum < 600){
|
|
||||||
return 50
|
|
||||||
}
|
|
||||||
|
|
||||||
if(scaleNum >= 600 && scaleNum < 800){
|
|
||||||
return 70
|
|
||||||
}
|
|
||||||
|
|
||||||
if(scaleNum >= 800 && scaleNum < 1000){
|
|
||||||
return 100
|
|
||||||
}
|
|
||||||
|
|
||||||
if(scaleNum >= 1000 && scaleNum < 2000){
|
|
||||||
return 500
|
|
||||||
}
|
|
||||||
if(scaleNum >= 2000 && scaleNum <= 5000){
|
|
||||||
return 1000
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1000
|
|
||||||
}
|
|
||||||
|
|
||||||
getValues(roadColumn) {
|
|
||||||
const lane = this.lane || {};
|
|
||||||
let key = roadColumn.key;
|
|
||||||
let str = ''
|
|
||||||
if (Array.isArray(key)) {
|
|
||||||
key.forEach((k, index) => {
|
|
||||||
str += (lane[k] === undefined ? '' : lane[k]) + (index == key.length - 1 ? '' : '/')
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
str = lane[key] === undefined ? '' : lane[key]
|
|
||||||
}
|
|
||||||
return str
|
|
||||||
}
|
|
||||||
|
|
||||||
private RoadData: Array<RoadDataType> = [
|
|
||||||
{ name: '路段组号', key: 'MapRoad_Code_No' },
|
|
||||||
{ name: '路段编码', key: 'MapRoad_Name' },
|
|
||||||
{ name: '车轮压线', key: ['TouchLineType', 'TouchDir'] },
|
|
||||||
{ name: '车身碰线', key: ['TouchLineTypeCS', 'TouchLineDirCS'] },
|
|
||||||
{ name: '基准车道', key: ['BasePointInLaneNo', 'BaseLaneCount'] },
|
|
||||||
{ name: '前点车道', key: ['FrontPointLaneNo', 'FrontPointLaneCount'] },
|
|
||||||
{ name: '后车点道', key: ['BackPointLaneNo','BackPointLaneCount'] },
|
|
||||||
{ name: '左前/后车身距离', key: ['Body_LF_ToLeftEdge', 'Body_LB_ToLeftEdge'] },
|
|
||||||
{ name: '右前/后车身距离', key: ['Body_RF_ToRightEdge', 'Body_RB_ToRightEdge'] },
|
|
||||||
{ name: '右前/后车身边线', key: ['Body_RF_ToBaseLine','Body_RB_ToBaseLine'] },
|
|
||||||
{ name: '右前/后轮距离', key: ['Wheel_RF_ToRightEdge', 'Wheel_RB_ToRightEdge'] },
|
|
||||||
{ name: '右前/后轮边线', key: ['Wheel_RF_ToBaseLine', 'Wheel_RB_ToBaseLine'] },
|
|
||||||
{ name: '左前/后轮距离', key: ['Wheel_LF_ToRightEdge', 'Wheel_LB_ToRightEdge'] },
|
|
||||||
{ name: '左前/后轮边线', key: ['Wheel_LF_ToBaseLine', 'Wheel_LB_ToBaseLine'] },
|
|
||||||
{ name: '车道属性', key: ['BasePointInLaneDir', 'CrossLineAttr','DirInverse'] },
|
|
||||||
{ name: '形状', key: ['InShapeAttr', 'ShapeNo','ShapeNoWheel'] },
|
|
||||||
{ name: '路段点', key: ['CrossPointNo'] },
|
|
||||||
]
|
|
||||||
|
|
||||||
scaleFn = async (num)=>{
|
|
||||||
const scaleNum = this.scaleNum
|
|
||||||
if(scaleNum >0 && scaleNum < 5000){
|
|
||||||
this.scaleNum += num;
|
|
||||||
}
|
|
||||||
if(scaleNum === 0 && num > 0){
|
|
||||||
this.scaleNum += num;
|
|
||||||
}
|
|
||||||
if(scaleNum > 5000 && num < 0){
|
|
||||||
this.scaleNum += num;
|
|
||||||
}
|
|
||||||
await examJudgeMapSetScaling(this.scaleNum);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Component
|
||||||
|
// export default struct RealTime {
|
||||||
|
// @State message: string = '开始绘制'
|
||||||
|
// // 控制XComponent组件的创建和销毁
|
||||||
|
// @State draw: boolean = false
|
||||||
|
// //监管接口序列号
|
||||||
|
// @State serialNumber: number = 0
|
||||||
|
// //模拟考试项目
|
||||||
|
// @State projects: Project[] = []
|
||||||
|
// @State projectsObj: ProjectObj = {}
|
||||||
|
// @State markRuleListObj: MarkRule = {}
|
||||||
|
// @State scaleNum: number = 100
|
||||||
|
// @State gpsActive: number = 1
|
||||||
|
// private widthNumber: string | number | Resource = 0
|
||||||
|
// private heightNumber: string | number | Resource = 0
|
||||||
|
// private context = getContext(this) as common.UIAbilityContext;
|
||||||
|
// @State ratio: number = 1
|
||||||
|
// @State lane: Object = {}
|
||||||
|
// @State timer:number = 0
|
||||||
|
//
|
||||||
|
// constructor() {
|
||||||
|
// super()
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // xcomponentController: XComponentController = new XComponentController()
|
||||||
|
//
|
||||||
|
// build() {
|
||||||
|
// Row() {
|
||||||
|
// Column() {
|
||||||
|
// Row() {
|
||||||
|
// Text('车道信息').fontColor(this.gpsActive == 0 ? '#2D3C5A' : '#fff').fontSize(20)
|
||||||
|
// }
|
||||||
|
// .width('100%')
|
||||||
|
// .height(37)
|
||||||
|
// .backgroundColor(this.gpsActive == 0 ? '#fff' : '#1A1A1A')
|
||||||
|
// .margin({ top: 10 * this.ratio, right: 10 })
|
||||||
|
// .justifyContent(FlexAlign.Center)
|
||||||
|
//
|
||||||
|
// Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Start }) {
|
||||||
|
// ForEach(this.RoadData, (item) => {
|
||||||
|
// Column() {
|
||||||
|
// Text(`${item.name}:${this.getValues(item)}`)
|
||||||
|
// .fontSize(20)
|
||||||
|
// .lineHeight(30)
|
||||||
|
// .fontColor('#fff')
|
||||||
|
// }.height(30).justifyContent(FlexAlign.Start).width('100%')
|
||||||
|
// })
|
||||||
|
// }.margin({top:5})
|
||||||
|
//
|
||||||
|
// }.width(168 * 1.5)
|
||||||
|
// .height(this.heightNumber)
|
||||||
|
// .backgroundColor('#282828')
|
||||||
|
// .margin({ top: 6 * this.ratio, })
|
||||||
|
//
|
||||||
|
// Column() {
|
||||||
|
// if (this.draw) {
|
||||||
|
// XComponent({
|
||||||
|
// id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变
|
||||||
|
// type: 'surface',
|
||||||
|
// libraryname: 'JudgeSdk'
|
||||||
|
// // libraryname: 'judgesdk'
|
||||||
|
// })
|
||||||
|
// .width(this.widthNumber)
|
||||||
|
// .height(this.heightNumber)
|
||||||
|
// .onLoad(() => {
|
||||||
|
// apiJudgeSdk.examJudgeMapSetDrawing(true); //停止绘制地图轨迹,false:表示结束绘制
|
||||||
|
// })
|
||||||
|
// .onDestroy(() => {
|
||||||
|
// apiJudgeSdk.examJudgeMapSetDrawing(false); //停止绘制地图轨迹,false:表示结束绘制
|
||||||
|
// this.draw = false;
|
||||||
|
// })
|
||||||
|
// } else {
|
||||||
|
// Column() {
|
||||||
|
// }
|
||||||
|
// .width(this.widthNumber)
|
||||||
|
// .height(this.heightNumber)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// .width('100%')
|
||||||
|
// .backgroundColor('#fff')
|
||||||
|
//
|
||||||
|
// Row(){
|
||||||
|
// Image($rawfile('judge/big.png')).width(60).onClick(()=>{
|
||||||
|
// this.scaleFn( -this.getScaleNum() )
|
||||||
|
// })
|
||||||
|
// Image($rawfile('judge/small.png')).width(60).onClick(()=>{
|
||||||
|
// this.scaleFn( this.getScaleNum() )
|
||||||
|
// }).margin({left:20})
|
||||||
|
// }.position({x:'32%',y:60})
|
||||||
|
// }
|
||||||
|
// .height('100%')
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// async aboutToDisappear() {
|
||||||
|
// clearInterval(this.timer)
|
||||||
|
// }
|
||||||
|
// async aboutToAppear() {
|
||||||
|
// const judge = new Judge(this)
|
||||||
|
// let timer = setInterval(()=>{
|
||||||
|
// this.lane = AppStorage.get('laneData');
|
||||||
|
// },1000)
|
||||||
|
// this.timer = timer
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// getScaleNum = ()=>{
|
||||||
|
// const scaleNum = this.scaleNum;
|
||||||
|
// if(scaleNum < 200){
|
||||||
|
// return 10
|
||||||
|
// }
|
||||||
|
// if(scaleNum >= 200 && scaleNum < 400){
|
||||||
|
// return 30
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if(scaleNum >= 400 && scaleNum < 600){
|
||||||
|
// return 50
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if(scaleNum >= 600 && scaleNum < 800){
|
||||||
|
// return 70
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if(scaleNum >= 800 && scaleNum < 1000){
|
||||||
|
// return 100
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if(scaleNum >= 1000 && scaleNum < 2000){
|
||||||
|
// return 500
|
||||||
|
// }
|
||||||
|
// if(scaleNum >= 2000 && scaleNum <= 5000){
|
||||||
|
// return 1000
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return 1000
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// getValues(roadColumn) {
|
||||||
|
// const lane = this.lane || {};
|
||||||
|
// let key = roadColumn.key;
|
||||||
|
// let str = ''
|
||||||
|
// if (Array.isArray(key)) {
|
||||||
|
// key.forEach((k, index) => {
|
||||||
|
// str += (lane[k] === undefined ? '' : lane[k]) + (index == key.length - 1 ? '' : '/')
|
||||||
|
// })
|
||||||
|
// } else {
|
||||||
|
// str = lane[key] === undefined ? '' : lane[key]
|
||||||
|
// }
|
||||||
|
// return str
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// private RoadData: Array<RoadDataType> = [
|
||||||
|
// { name: '路段组号', key: 'MapRoad_Code_No' },
|
||||||
|
// { name: '路段编码', key: 'MapRoad_Name' },
|
||||||
|
// { name: '车轮压线', key: ['TouchLineType', 'TouchDir'] },
|
||||||
|
// { name: '车身碰线', key: ['TouchLineTypeCS', 'TouchLineDirCS'] },
|
||||||
|
// { name: '基准车道', key: ['BasePointInLaneNo', 'BaseLaneCount'] },
|
||||||
|
// { name: '前点车道', key: ['FrontPointLaneNo', 'FrontPointLaneCount'] },
|
||||||
|
// { name: '后车点道', key: ['BackPointLaneNo','BackPointLaneCount'] },
|
||||||
|
// { name: '左前/后车身距离', key: ['Body_LF_ToLeftEdge', 'Body_LB_ToLeftEdge'] },
|
||||||
|
// { name: '右前/后车身距离', key: ['Body_RF_ToRightEdge', 'Body_RB_ToRightEdge'] },
|
||||||
|
// { name: '右前/后车身边线', key: ['Body_RF_ToBaseLine','Body_RB_ToBaseLine'] },
|
||||||
|
// { name: '右前/后轮距离', key: ['Wheel_RF_ToRightEdge', 'Wheel_RB_ToRightEdge'] },
|
||||||
|
// { name: '右前/后轮边线', key: ['Wheel_RF_ToBaseLine', 'Wheel_RB_ToBaseLine'] },
|
||||||
|
// { name: '左前/后轮距离', key: ['Wheel_LF_ToRightEdge', 'Wheel_LB_ToRightEdge'] },
|
||||||
|
// { name: '左前/后轮边线', key: ['Wheel_LF_ToBaseLine', 'Wheel_LB_ToBaseLine'] },
|
||||||
|
// { name: '车道属性', key: ['BasePointInLaneDir', 'CrossLineAttr','DirInverse'] },
|
||||||
|
// { name: '形状', key: ['InShapeAttr', 'ShapeNo','ShapeNoWheel'] },
|
||||||
|
// { name: '路段点', key: ['CrossPointNo'] },
|
||||||
|
// ]
|
||||||
|
//
|
||||||
|
// scaleFn = async (num)=>{
|
||||||
|
// const scaleNum = this.scaleNum
|
||||||
|
// if(scaleNum >0 && scaleNum < 5000){
|
||||||
|
// this.scaleNum += num;
|
||||||
|
// }
|
||||||
|
// if(scaleNum === 0 && num > 0){
|
||||||
|
// this.scaleNum += num;
|
||||||
|
// }
|
||||||
|
// if(scaleNum > 5000 && num < 0){
|
||||||
|
// this.scaleNum += num;
|
||||||
|
// }
|
||||||
|
// await examJudgeMapSetScaling(this.scaleNum);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
|||||||
@ -13,13 +13,7 @@ import { JudgeConfig } from './utils/judgeConfig';
|
|||||||
import { LANE } from '../judgeSDK/api/judgeSDK.d';
|
import { LANE } from '../judgeSDK/api/judgeSDK.d';
|
||||||
import { GetSyncData, SqlInsertTable } from '../../utils/table/Operation';
|
import { GetSyncData, SqlInsertTable } from '../../utils/table/Operation';
|
||||||
|
|
||||||
import {
|
import { getCarStatus, getCenterProjectStatus, plcStrToJson, plcStrToWXJson, promptWxCode } from './utils/judgeCommon';
|
||||||
getCarStatus,
|
|
||||||
getCenterProjectStatus,
|
|
||||||
plcStrToJson,
|
|
||||||
plcStrToWXJson,
|
|
||||||
promptWxCode
|
|
||||||
} from './utils/judgeCommon';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
examCalcGpsDistance,
|
examCalcGpsDistance,
|
||||||
@ -53,6 +47,7 @@ import {
|
|||||||
JudgeBeginObj,
|
JudgeBeginObj,
|
||||||
JudgeCallBackData,
|
JudgeCallBackData,
|
||||||
JudgeConfigObj,
|
JudgeConfigObj,
|
||||||
|
JudgeConfigObjKmItems,
|
||||||
JudgeEventKf,
|
JudgeEventKf,
|
||||||
JudgeInitObj,
|
JudgeInitObj,
|
||||||
JudgeKFXM,
|
JudgeKFXM,
|
||||||
@ -64,7 +59,6 @@ import {
|
|||||||
JudgeXMJS,
|
JudgeXMJS,
|
||||||
Km3JudgeInitConfig,
|
Km3JudgeInitConfig,
|
||||||
KmItem,
|
KmItem,
|
||||||
JudgeConfigObjKmItems,
|
|
||||||
MarkRule,
|
MarkRule,
|
||||||
Plc,
|
Plc,
|
||||||
ProjectInfo,
|
ProjectInfo,
|
||||||
@ -185,38 +179,6 @@ export default class Judge {
|
|||||||
private isExamEnd: boolean
|
private isExamEnd: boolean
|
||||||
// 是否发送udp
|
// 是否发送udp
|
||||||
private isUdpEnd: boolean = false
|
private isUdpEnd: boolean = false
|
||||||
// 处理udp plc信号
|
|
||||||
handleUdp = async (msg: string) => {
|
|
||||||
console.info('plc信号', msg)
|
|
||||||
const stachArr = msg.split(',')
|
|
||||||
if (stachArr[0] != '#DN_GD' || this.isUdpEnd) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const plcData = await this.getPlcData(msg);
|
|
||||||
// 4.过程数据
|
|
||||||
await this.fileLog.setExamJudgeData(JSON.stringify(plcData))
|
|
||||||
//检测到有无锡所设备接入,需要发送特定的数据,供检测
|
|
||||||
// if (this.usbService.isWXUSBDevice) {
|
|
||||||
// const str = await senorToWXDataStr(msg);
|
|
||||||
// this.usbService.sendUSB(str)
|
|
||||||
// }
|
|
||||||
const param350: number = Reflect.get(this.judgeUI.judgeConfigObj, '350')
|
|
||||||
this.judgeUI.sd = ((param350 == 0 ? plcData.gps.sd : plcData.sensor.cs) as number * 1.852).toFixed(0) + ''
|
|
||||||
this.judgeUI.dw = (Math.floor(plcData.sensor.dw as number) || 0) + ''
|
|
||||||
//TODO 暂时关闭差分检测异常
|
|
||||||
// await this.checkDwzt(plcData.gps.dwzt,plcData.gps.jdzt);
|
|
||||||
if (!this.isExamEnd) {
|
|
||||||
await examJudgeRealExam(plcData)
|
|
||||||
}
|
|
||||||
let udpIndex = AppStorage.get<number>('udpIndex');
|
|
||||||
if (udpIndex % 5 === 0 && !this.isUdpEnd) {
|
|
||||||
// TODO UPD缺失
|
|
||||||
// const judgeUdp = globalThis.judgeUdp
|
|
||||||
// const bytes = await this.getMessageHeartbeat(this.isExamEnd);
|
|
||||||
// judgeUdp.send(bytes)
|
|
||||||
}
|
|
||||||
AppStorage.setOrCreate('udpIndex', udpIndex++)
|
|
||||||
}
|
|
||||||
//是否手动结束考试
|
//是否手动结束考试
|
||||||
private isManual: boolean
|
private isManual: boolean
|
||||||
//UDP服务序列号
|
//UDP服务序列号
|
||||||
@ -264,6 +226,60 @@ export default class Judge {
|
|||||||
console.info(judgeTag, '过程数据文件上传 end')
|
console.info(judgeTag, '过程数据文件上传 end')
|
||||||
}
|
}
|
||||||
private judgeTask: JudgeTask
|
private judgeTask: JudgeTask
|
||||||
|
// 检测扣分、结束项目时该项目是否开始
|
||||||
|
checkProjectIsStart = async (xmdm: number, currentType: 1 | 2, kf?: JudgeEventKf) => {
|
||||||
|
if (xmdm == 20) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
const judgeUI = this.judgeUI;
|
||||||
|
const judgeTask = this.judgeTask;
|
||||||
|
const projectsObj = this.judgeUI.projectsObj
|
||||||
|
const currentProject: ProjectInfo = Reflect.get(projectsObj, xmdm)
|
||||||
|
const isUpload = currentProject.isUpload
|
||||||
|
|
||||||
|
//如果项目没有开始
|
||||||
|
console.info('surenjun isUpload=>', isUpload)
|
||||||
|
if (!isUpload) {
|
||||||
|
console.info(judgeTag, '项目补传开始')
|
||||||
|
//项目开始补传
|
||||||
|
judgeTask.addTask(async () => {
|
||||||
|
await this.beginProject(xmdm)
|
||||||
|
}, {
|
||||||
|
isDelay: true
|
||||||
|
})
|
||||||
|
judgeTask.addTask(async () => {
|
||||||
|
await this.uploadProgressPhoto(xmdm)
|
||||||
|
}, {
|
||||||
|
isDelay: true
|
||||||
|
})
|
||||||
|
currentProject.isUpload = true;
|
||||||
|
Reflect.set(this.judgeUI.projectsObj, xmdm, currentProject)
|
||||||
|
//扣分补传
|
||||||
|
if (currentType == 2) {
|
||||||
|
judgeTask.addTask(async () => {
|
||||||
|
await this.pointsDedute(xmdm, kf)
|
||||||
|
}, {
|
||||||
|
isDelay: true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//扣分补传判断是否合格 不合格补传项目结束
|
||||||
|
if (currentType == 1 || (currentType == 2 && this.totalScore < judgeUI.passingScore)) {
|
||||||
|
judgeTask.addTask(async () => {
|
||||||
|
await this.endProject(xmdm)
|
||||||
|
}, {
|
||||||
|
isDelay: true
|
||||||
|
})
|
||||||
|
currentProject.isEnd = true;
|
||||||
|
Reflect.set(this.judgeUI.projectsObj, xmdm, currentProject)
|
||||||
|
}
|
||||||
|
judgeTask.addTask(async () => {
|
||||||
|
this.checkExamIsEnd()
|
||||||
|
})
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
private tempData: Plc
|
private tempData: Plc
|
||||||
//实时计算gps经纬度距离
|
//实时计算gps经纬度距离
|
||||||
handDistance = async () => {
|
handDistance = async () => {
|
||||||
@ -427,6 +443,38 @@ export default class Judge {
|
|||||||
AppStorage.setOrCreate('msgStr', plc)
|
AppStorage.setOrCreate('msgStr', plc)
|
||||||
return tempData
|
return tempData
|
||||||
}
|
}
|
||||||
|
// 处理udp plc信号
|
||||||
|
handleUdp = async (msg: string) => {
|
||||||
|
console.info('plc信号', msg)
|
||||||
|
const stachArr = msg.split(',')
|
||||||
|
if (stachArr[0] != '#DN_GD' || this.isUdpEnd) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const plcData = await this.getPlcData(msg);
|
||||||
|
// 4.过程数据
|
||||||
|
await this.fileLog.setExamJudgeData(JSON.stringify(plcData))
|
||||||
|
//检测到有无锡所设备接入,需要发送特定的数据,供检测
|
||||||
|
// if (this.usbService.isWXUSBDevice) {
|
||||||
|
// const str = await senorToWXDataStr(msg);
|
||||||
|
// this.usbService.sendUSB(str)
|
||||||
|
// }
|
||||||
|
const param350: number = Reflect.get(this.judgeUI.judgeConfigObj, '350')
|
||||||
|
this.judgeUI.sd = ((param350 == 0 ? plcData.gps.sd : plcData.sensor.cs) as number * 1.852).toFixed(0) + ''
|
||||||
|
this.judgeUI.dw = (Math.floor(plcData.sensor.dw as number) || 0) + ''
|
||||||
|
//TODO 暂时关闭差分检测异常
|
||||||
|
// await this.checkDwzt(plcData.gps.dwzt,plcData.gps.jdzt);
|
||||||
|
if (!this.isExamEnd) {
|
||||||
|
await examJudgeRealExam(plcData)
|
||||||
|
}
|
||||||
|
let udpIndex = AppStorage.get<number>('udpIndex');
|
||||||
|
if (udpIndex % 5 === 0 && !this.isUdpEnd) {
|
||||||
|
// TODO UPD缺失
|
||||||
|
// const judgeUdp = globalThis.judgeUdp
|
||||||
|
// const bytes = await this.getMessageHeartbeat(this.isExamEnd);
|
||||||
|
// judgeUdp.send(bytes)
|
||||||
|
}
|
||||||
|
AppStorage.setOrCreate('udpIndex', udpIndex++)
|
||||||
|
}
|
||||||
// 处理轨迹plc信号
|
// 处理轨迹plc信号
|
||||||
handleTrajectoryUdp = async (strArr: string[]) => {
|
handleTrajectoryUdp = async (strArr: string[]) => {
|
||||||
// const { fileLog, setJudgeItem, setJudgeMark, endExam } = this;
|
// const { fileLog, setJudgeItem, setJudgeMark, endExam } = this;
|
||||||
@ -465,9 +513,9 @@ export default class Judge {
|
|||||||
}
|
}
|
||||||
//本地轨迹回放地址
|
//本地轨迹回放地址
|
||||||
private trajectoryPath: string
|
private trajectoryPath: string
|
||||||
|
//当前科目二的考试项目
|
||||||
// private currentKm2ItemsObj: any
|
// private currentKm2ItemsObj: any
|
||||||
private isTrajectoryOpen: boolean;
|
private isTrajectoryOpen: boolean;
|
||||||
//当前科目二的考试项目
|
|
||||||
// 调代理接口是否断网了
|
// 调代理接口是否断网了
|
||||||
private isJudgeDisConnect: boolean;
|
private isJudgeDisConnect: boolean;
|
||||||
// 断网数据补传
|
// 断网数据补传
|
||||||
@ -482,67 +530,6 @@ export default class Judge {
|
|||||||
const code = await writeObjectOut(JSON.parse(examDataStr));
|
const code = await writeObjectOut(JSON.parse(examDataStr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 考试过程照片
|
|
||||||
uploadProgressPhoto = async (ksxm: number) => {
|
|
||||||
const time = GetCurrentTime();
|
|
||||||
const judgeUI = this.judgeUI
|
|
||||||
const plcData = this.plcData
|
|
||||||
const photoBase64 = await this.getPhoto();
|
|
||||||
const carInfo = AppStorage.get<CarInfoType>('carInfo');
|
|
||||||
|
|
||||||
const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm)
|
|
||||||
const judgeConfig_305: number = Reflect.get(judgeUI.judgeConfigObj, '305')
|
|
||||||
const drvexam: DrvexamType = {
|
|
||||||
lsh: judgeUI.lsh,
|
|
||||||
kskm: carInfo.examSubject,
|
|
||||||
ksxm: project.projectCodeCenter,
|
|
||||||
sfzmhm: judgeUI.idCard,
|
|
||||||
kchp: encodeURI(carInfo.plateNo),
|
|
||||||
zpsj: time,
|
|
||||||
zp: photoBase64,
|
|
||||||
cs: Math.floor((judgeConfig_305 == 0 ? plcData.gps.sd : plcData.sensor.cs) * 1.852),
|
|
||||||
ksdd: encodeURI(judgeUI.ksdd)
|
|
||||||
}
|
|
||||||
const data: RegulatoryInterfaceParams = {
|
|
||||||
xtlb: '17',
|
|
||||||
jkxlh: judgeUI.serialNumber,
|
|
||||||
jkid: '17C54',
|
|
||||||
drvexam
|
|
||||||
};
|
|
||||||
const temp: WR = await this.sendWriteObjectOut(data, this.filePath);
|
|
||||||
if (temp.code === 2300007) {
|
|
||||||
this.isJudgeDisConnect = true
|
|
||||||
}
|
|
||||||
promptWxCode('17C54', temp.code)
|
|
||||||
console.info(judgeTag, '上传照片 end')
|
|
||||||
}
|
|
||||||
private artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11]
|
|
||||||
private lane: LANE = {
|
|
||||||
road: '', num: 0, count: 0
|
|
||||||
}
|
|
||||||
private videoData: RecordHandleType
|
|
||||||
private disConnectNum: number = 0;
|
|
||||||
//调用监管接口
|
|
||||||
sendWriteObjectOut: SendWriteObjectOut = async (data, filePath) => {
|
|
||||||
const temp = await writeObjectOut(data, filePath);
|
|
||||||
console.log("wzj", JSON.stringify(temp))
|
|
||||||
//断网&网络超时次数计算
|
|
||||||
if (temp.code == 2300007 || temp.code == 2300028) {
|
|
||||||
this.disConnectNum += 1;
|
|
||||||
if (this.disConnectNum < 5) {
|
|
||||||
return await this.sendWriteObjectOut(data, filePath)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.disConnectNum >= 5) {
|
|
||||||
console.info('surenjun', '123')
|
|
||||||
this.judgeUI.errorMsg = '当前的考试过程信息网络传输异常,程序点击确认将重启!';
|
|
||||||
this.judgeUI.disConnectErrorOpen = true
|
|
||||||
}
|
|
||||||
|
|
||||||
this.disConnectNum = 0
|
|
||||||
return temp
|
|
||||||
}
|
|
||||||
// 项目开始接口同步
|
// 项目开始接口同步
|
||||||
beginProject = async (ksxm: number) => {
|
beginProject = async (ksxm: number) => {
|
||||||
const carInfo = AppStorage.get<CarInfoType>('carInfo');
|
const carInfo = AppStorage.get<CarInfoType>('carInfo');
|
||||||
@ -612,66 +599,73 @@ export default class Judge {
|
|||||||
console.info(judgeTag, '项目结束 end')
|
console.info(judgeTag, '项目结束 end')
|
||||||
promptWxCode('17C55', temp.code)
|
promptWxCode('17C55', temp.code)
|
||||||
}
|
}
|
||||||
// 检测扣分、结束项目时该项目是否开始
|
private artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11]
|
||||||
checkProjectIsStart = async (xmdm: number, currentType: 1 | 2, kf?: JudgeEventKf) => {
|
private lane: LANE = {
|
||||||
if (xmdm == 20) {
|
road: '', num: 0, count: 0
|
||||||
return true
|
}
|
||||||
|
private videoData: RecordHandleType
|
||||||
|
private disConnectNum: number = 0;
|
||||||
|
//调用监管接口
|
||||||
|
sendWriteObjectOut: SendWriteObjectOut = async (data, filePath) => {
|
||||||
|
const temp = await writeObjectOut(data, filePath);
|
||||||
|
console.log("wzj", JSON.stringify(temp))
|
||||||
|
//断网&网络超时次数计算
|
||||||
|
if (temp.code == 2300007 || temp.code == 2300028) {
|
||||||
|
this.disConnectNum += 1;
|
||||||
|
if (this.disConnectNum < 5) {
|
||||||
|
return await this.sendWriteObjectOut(data, filePath)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const judgeUI = this.judgeUI;
|
|
||||||
const judgeTask = this.judgeTask;
|
|
||||||
const projectsObj = this.judgeUI.projectsObj
|
|
||||||
const currentProject: ProjectInfo = Reflect.get(projectsObj, xmdm)
|
|
||||||
const isUpload = currentProject.isUpload
|
|
||||||
|
|
||||||
//如果项目没有开始
|
if (this.disConnectNum >= 5) {
|
||||||
console.info('surenjun isUpload=>', isUpload)
|
console.info('surenjun', '123')
|
||||||
if (!isUpload) {
|
this.judgeUI.errorMsg = '当前的考试过程信息网络传输异常,程序点击确认将重启!';
|
||||||
console.info(judgeTag, '项目补传开始')
|
this.judgeUI.disConnectErrorOpen = true
|
||||||
//项目开始补传
|
|
||||||
judgeTask.addTask(async () => {
|
|
||||||
await this.beginProject(xmdm)
|
|
||||||
}, {
|
|
||||||
isDelay: true
|
|
||||||
})
|
|
||||||
judgeTask.addTask(async () => {
|
|
||||||
await this.uploadProgressPhoto(xmdm)
|
|
||||||
}, {
|
|
||||||
isDelay: true
|
|
||||||
})
|
|
||||||
currentProject.isUpload = true;
|
|
||||||
Reflect.set(this.judgeUI.projectsObj, xmdm, currentProject)
|
|
||||||
//扣分补传
|
|
||||||
if (currentType == 2) {
|
|
||||||
judgeTask.addTask(async () => {
|
|
||||||
await this.pointsDedute(xmdm, kf)
|
|
||||||
}, {
|
|
||||||
isDelay: true
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
//扣分补传判断是否合格 不合格补传项目结束
|
|
||||||
if (currentType == 1 || (currentType == 2 && this.totalScore < judgeUI.passingScore)) {
|
this.disConnectNum = 0
|
||||||
judgeTask.addTask(async () => {
|
return temp
|
||||||
await this.endProject(xmdm)
|
|
||||||
}, {
|
|
||||||
isDelay: true
|
|
||||||
})
|
|
||||||
currentProject.isEnd = true;
|
|
||||||
Reflect.set(this.judgeUI.projectsObj, xmdm, currentProject)
|
|
||||||
}
|
}
|
||||||
judgeTask.addTask(async () => {
|
// 考试过程照片
|
||||||
this.checkExamIsEnd()
|
uploadProgressPhoto = async (ksxm: number) => {
|
||||||
})
|
const time = GetCurrentTime();
|
||||||
return false;
|
const judgeUI = this.judgeUI
|
||||||
} else {
|
const plcData = this.plcData
|
||||||
return true
|
const photoBase64 = await this.getPhoto();
|
||||||
|
const carInfo = AppStorage.get<CarInfoType>('carInfo');
|
||||||
|
|
||||||
|
const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm)
|
||||||
|
const judgeConfig_305: number = Reflect.get(judgeUI.judgeConfigObj, '305')
|
||||||
|
const drvexam: DrvexamType = {
|
||||||
|
lsh: judgeUI.lsh,
|
||||||
|
kskm: carInfo.examSubject,
|
||||||
|
ksxm: project.projectCodeCenter,
|
||||||
|
sfzmhm: judgeUI.idCard,
|
||||||
|
kchp: encodeURI(carInfo.plateNo),
|
||||||
|
zpsj: time,
|
||||||
|
zp: photoBase64,
|
||||||
|
cs: Math.floor((judgeConfig_305 == 0 ? plcData.gps.sd : plcData.sensor.cs) * 1.852),
|
||||||
|
ksdd: encodeURI(judgeUI.ksdd)
|
||||||
}
|
}
|
||||||
|
const data: RegulatoryInterfaceParams = {
|
||||||
|
xtlb: '17',
|
||||||
|
jkxlh: judgeUI.serialNumber,
|
||||||
|
jkid: '17C54',
|
||||||
|
drvexam
|
||||||
|
};
|
||||||
|
const temp: WR = await this.sendWriteObjectOut(data, this.filePath);
|
||||||
|
if (temp.code === 2300007) {
|
||||||
|
this.isJudgeDisConnect = true
|
||||||
|
}
|
||||||
|
promptWxCode('17C54', temp.code)
|
||||||
|
console.info(judgeTag, '上传照片 end')
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(judgeUI: JudgeUI) {
|
constructor(judgeUI: JudgeUI) {
|
||||||
this.serialIndex = 1;
|
this.serialIndex = 1;
|
||||||
this.judgeUI = judgeUI
|
this.judgeUI = judgeUI
|
||||||
//语音播放工具
|
//语音播放工具
|
||||||
this.avPlayer = new VoiceAnnounce();
|
this.avPlayer = new VoiceAnnounce(this.context);
|
||||||
//模型工具
|
//模型工具
|
||||||
this.fileModel = new FileModel(judgeUI.context);
|
this.fileModel = new FileModel(judgeUI.context);
|
||||||
//文件工具
|
//文件工具
|
||||||
|
|||||||
@ -17,11 +17,11 @@ export default class VoiceAnnounce {
|
|||||||
//队列时候立马终止
|
//队列时候立马终止
|
||||||
private isStopped: Boolean
|
private isStopped: Boolean
|
||||||
private queue: Queue[]
|
private queue: Queue[]
|
||||||
private newQueue: Queue[]
|
private newQueue?: Queue[]
|
||||||
private pendingQueue: String[]
|
private context: common.UIAbilityContext
|
||||||
private callback: Function;
|
|
||||||
|
|
||||||
constructor() {
|
constructor(context: common.UIAbilityContext) {
|
||||||
|
this.context = context
|
||||||
this.isStopped = false;
|
this.isStopped = false;
|
||||||
this.queue = []
|
this.queue = []
|
||||||
}
|
}
|
||||||
@ -60,16 +60,17 @@ export default class VoiceAnnounce {
|
|||||||
const queue = this.queue;
|
const queue = this.queue;
|
||||||
const isStopped = this.isStopped;
|
const isStopped = this.isStopped;
|
||||||
const newQueue = this.newQueue;
|
const newQueue = this.newQueue;
|
||||||
const avPlayer = new AVPlayer();
|
const avPlayer = new AVPlayer(this.context);
|
||||||
if (isStopped) {
|
if (isStopped) {
|
||||||
//清空原来队列
|
//清空原来队列
|
||||||
this.queue = newQueue
|
this.queue = newQueue ?? []
|
||||||
this.isStopped = false;
|
this.isStopped = false;
|
||||||
await go()
|
await go()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
console.info(TAG, '当前播放队列' + JSON.stringify(queue))
|
console.info(TAG, '当前播放队列' + JSON.stringify(queue))
|
||||||
await avPlayer.play(queue[0].url, queue[0].callback);
|
await avPlayer.play(queue[0].url, queue[0].callback || (() => {
|
||||||
|
}));
|
||||||
this.queue.shift();
|
this.queue.shift();
|
||||||
console.info(TAG, '当前播放队列播放完成退出');
|
console.info(TAG, '当前播放队列播放完成退出');
|
||||||
avPlayer.avPlayerStop();
|
avPlayer.avPlayerStop();
|
||||||
@ -84,11 +85,11 @@ export default class VoiceAnnounce {
|
|||||||
|
|
||||||
class AVPlayer {
|
class AVPlayer {
|
||||||
public avPlayer?: media.AVPlayer;
|
public avPlayer?: media.AVPlayer;
|
||||||
private voiceUrl: string[];
|
private endCallback?: Function
|
||||||
private voiceStatus: 'completed' | 'playing'
|
private context: common.UIAbilityContext
|
||||||
private endCallback: Function
|
|
||||||
|
|
||||||
constructor() {
|
constructor(context: common.UIAbilityContext) {
|
||||||
|
this.context = context
|
||||||
}
|
}
|
||||||
|
|
||||||
// 以下为使用资源管理接口获取打包在HAP内的媒体资源文件并通过fdSrc属性进行播放示例
|
// 以下为使用资源管理接口获取打包在HAP内的媒体资源文件并通过fdSrc属性进行播放示例
|
||||||
@ -103,14 +104,14 @@ class AVPlayer {
|
|||||||
// console.info('surenjun fdPath=>',fdPath)
|
// console.info('surenjun fdPath=>',fdPath)
|
||||||
console.info(TAG, 'audioPlayer => 准备加载资源播放')
|
console.info(TAG, 'audioPlayer => 准备加载资源播放')
|
||||||
audioPlayer.on('dataLoad', () => {
|
audioPlayer.on('dataLoad', () => {
|
||||||
this.voiceStatus = 'playing'
|
// this.voiceStatus = 'playing'
|
||||||
console.info(TAG, 'audioPlayer => 播放资源开始')
|
console.info(TAG, 'audioPlayer => 播放资源开始')
|
||||||
audioPlayer.play()
|
audioPlayer.play()
|
||||||
})
|
})
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
audioPlayer.on('finish', () => {
|
audioPlayer.on('finish', () => {
|
||||||
console.info(TAG, 'audioPlayer => 播放资源播放')
|
console.info(TAG, 'audioPlayer => 播放资源播放')
|
||||||
this.voiceStatus = 'completed'
|
// this.voiceStatus = 'completed'
|
||||||
if (callback) {
|
if (callback) {
|
||||||
callback()
|
callback()
|
||||||
}
|
}
|
||||||
@ -131,8 +132,9 @@ class AVPlayer {
|
|||||||
resolve(true)
|
resolve(true)
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
const context: common.UIAbilityContext = AppStorage.get('context')
|
if (this.avPlayer) {
|
||||||
this.avPlayer.fdSrc = await context.resourceManager.getRawFd(name);
|
this.avPlayer.fdSrc = await this.context.resourceManager.getRawFd(name);
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Prompt.showToast({
|
Prompt.showToast({
|
||||||
message: `${name}语音文件不存在`,
|
message: `${name}语音文件不存在`,
|
||||||
@ -164,7 +166,7 @@ class AVPlayer {
|
|||||||
|
|
||||||
//音频播放队列
|
//音频播放队列
|
||||||
public releasePlayer() {
|
public releasePlayer() {
|
||||||
this.avPlayer.release();
|
this.avPlayer!.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
avPlayerStop = () => {
|
avPlayerStop = () => {
|
||||||
@ -175,7 +177,7 @@ class AVPlayer {
|
|||||||
|
|
||||||
// 注册avplayer回调函数
|
// 注册avplayer回调函数
|
||||||
setAVPlayerCallback(callBack: Function) {
|
setAVPlayerCallback(callBack: Function) {
|
||||||
this.avPlayer.on('error', (err: BusinessError) => {
|
this.avPlayer!.on('error', (err: BusinessError) => {
|
||||||
console.log(TAG, '播放器错误', JSON.stringify(err))
|
console.log(TAG, '播放器错误', JSON.stringify(err))
|
||||||
this.avPlayer && this.avPlayer.stop()
|
this.avPlayer && this.avPlayer.stop()
|
||||||
this.avPlayer && this.avPlayer.reset()
|
this.avPlayer && this.avPlayer.reset()
|
||||||
@ -184,29 +186,29 @@ class AVPlayer {
|
|||||||
|
|
||||||
let num = 0;
|
let num = 0;
|
||||||
// 状态机变化回调函数
|
// 状态机变化回调函数
|
||||||
this.avPlayer.on('stateChange', async (state, reason) => {
|
this.avPlayer!.on('stateChange', async (state, reason) => {
|
||||||
const endCallback = this.endCallback;
|
const endCallback = this.endCallback;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case 'idle': // 成功调用reset接口后触发该状态机上报
|
case 'idle': // 成功调用reset接口后触发该状态机上报
|
||||||
break;
|
break;
|
||||||
case 'initialized': // avplayer 设置播放源后触发该状态上报
|
case 'initialized': // avplayer 设置播放源后触发该状态上报
|
||||||
this.avPlayer.prepare()
|
this.avPlayer!.prepare()
|
||||||
break;
|
break;
|
||||||
case 'prepared': // prepare调用成功后上报该状态机
|
case 'prepared': // prepare调用成功后上报该状态机
|
||||||
console.info(TAG, '播放资源播放')
|
console.info(TAG, '播放资源播放')
|
||||||
this.avPlayer.play();
|
this.avPlayer!.play();
|
||||||
this.voiceStatus = 'playing'
|
// this.voiceStatus = 'playing'
|
||||||
break;
|
break;
|
||||||
case 'playing': // play成功调用后触发该状态机上报
|
case 'playing': // play成功调用后触发该状态机上报
|
||||||
break;
|
break;
|
||||||
case 'paused': // pause成功调用后触发该状态机上报
|
case 'paused': // pause成功调用后触发该状态机上报
|
||||||
break;
|
break;
|
||||||
case 'completed': // 播放结束后触发该状态机上报
|
case 'completed': // 播放结束后触发该状态机上报
|
||||||
this.voiceStatus = 'completed'
|
// this.voiceStatus = 'completed'
|
||||||
this.avPlayer.stop(); //调用播放结束接口
|
this.avPlayer!.stop(); //调用播放结束接口
|
||||||
break;
|
break;
|
||||||
case 'stopped': // stop接口成功调用后触发该状态机上报
|
case 'stopped': // stop接口成功调用后触发该状态机上报
|
||||||
this.avPlayer.reset(); // 调用reset接口初始化avplayer状态
|
this.avPlayer!.reset(); // 调用reset接口初始化avplayer状态
|
||||||
console.info(TAG, '播放资源释放')
|
console.info(TAG, '播放资源释放')
|
||||||
if (endCallback) {
|
if (endCallback) {
|
||||||
endCallback()
|
endCallback()
|
||||||
|
|||||||
@ -23,10 +23,9 @@ export class FileHelper {
|
|||||||
photoAccessHelper.PhotoKeys.DATE_TRASHED,
|
photoAccessHelper.PhotoKeys.DATE_TRASHED,
|
||||||
photoAccessHelper.PhotoKeys.HIDDEN
|
photoAccessHelper.PhotoKeys.HIDDEN
|
||||||
];
|
];
|
||||||
private userFileMgr: photoAccessHelper.PhotoAccessHelper = undefined;
|
private userFileMgr!: photoAccessHelper.PhotoAccessHelper
|
||||||
|
|
||||||
constructor() {
|
constructor(context: common.UIAbilityContext) {
|
||||||
const context: common.UIAbilityContext = AppStorage.get('context')
|
|
||||||
this.userFileMgr = photoAccessHelper.getPhotoAccessHelper(context);
|
this.userFileMgr = photoAccessHelper.getPhotoAccessHelper(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -81,7 +81,7 @@ export async function endRecordVideo(record_handleObj: RecordHandleType) {
|
|||||||
export async function saveStartRecordVideo(path: string, context?: common.UIAbilityContext): Promise<RecordHandleType> {
|
export async function saveStartRecordVideo(path: string, context?: common.UIAbilityContext): Promise<RecordHandleType> {
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve, reject) => {
|
||||||
const fileUtil = new FileUtils(context)
|
const fileUtil = new FileUtils(context)
|
||||||
const fileHelper = new FileHelper();
|
const fileHelper = new FileHelper(context);
|
||||||
// const date = dateFormat(new Date).split(' ')[0]
|
// const date = dateFormat(new Date).split(' ')[0]
|
||||||
const date = dayTs().format('YYYY-MM-DD HH:mm:ss').split(' ')[0]
|
const date = dayTs().format('YYYY-MM-DD HH:mm:ss').split(' ')[0]
|
||||||
fileHelper.createAlbum(date);
|
fileHelper.createAlbum(date);
|
||||||
@ -97,7 +97,7 @@ export async function saveStartRecordVideo(path: string, context?: common.UIAbil
|
|||||||
for (let i = 1; i <= 4; i++) {
|
for (let i = 1; i <= 4; i++) {
|
||||||
if (Reflect.get(param, 'videoRecord' + i)) {
|
if (Reflect.get(param, 'videoRecord' + i)) {
|
||||||
// Reflect.set(record_handle, i, await getFileHandleCode(i, param, date, path, i));
|
// Reflect.set(record_handle, i, await getFileHandleCode(i, param, date, path, i));
|
||||||
const data = await startRecordVideo(param, i, context, date, path, i);
|
const data = await startRecordVideo(param, i, context!, date, path, i);
|
||||||
Reflect.set(record_handle, i, data);
|
Reflect.set(record_handle, i, data);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -129,7 +129,6 @@ interface takePhotoParam {
|
|||||||
* @param callback
|
* @param callback
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
const fileHelper = new FileHelper();
|
|
||||||
|
|
||||||
export async function delPic(day: number, type: number, context?: common.UIAbilityContext) {
|
export async function delPic(day: number, type: number, context?: common.UIAbilityContext) {
|
||||||
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
|
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
|
||||||
@ -150,7 +149,7 @@ export async function delPic(day: number, type: number, context?: common.UIAbili
|
|||||||
for (let i = 0; i <= albums.length; i++) {
|
for (let i = 0; i <= albums.length; i++) {
|
||||||
let albumName = albums[i].albumName
|
let albumName = albums[i].albumName
|
||||||
if (IsDaysAgo(albumName, day) && albumName != 'jt' && albumName != 'pz') {
|
if (IsDaysAgo(albumName, day) && albumName != 'jt' && albumName != 'pz') {
|
||||||
deleteAllFileByPiC(albumName, type)
|
deleteAllFileByPiC(albumName, type, context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -196,8 +195,8 @@ export async function takePhoto(param: VideoConfig, context: common.UIAbilityCon
|
|||||||
|
|
||||||
|
|
||||||
//type:1 是图片 2是视频
|
//type:1 是图片 2是视频
|
||||||
export async function deleteAllFileByPiC(dirName: string, type = 1) {
|
export async function deleteAllFileByPiC(dirName: string, type = 1, context: common.UIAbilityContext) {
|
||||||
// const fileHelper = new FileHelper();
|
const fileHelper = new FileHelper(context);
|
||||||
fileHelper.deleteFileOfAlbum(dirName, type);
|
fileHelper.deleteFileOfAlbum(dirName, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user