diff --git a/entry/src/main/ets/mock/Judge.ets b/entry/src/main/ets/mock/Judge.ets new file mode 100644 index 00000000..7c569ac6 --- /dev/null +++ b/entry/src/main/ets/mock/Judge.ets @@ -0,0 +1,17 @@ +export const AmplifyArr = [ + { name: '直线', projectCode: '3', projectCodeCenter: '40300' }, + { name: '会车', projectCode: '9', projectCodeCenter: '41300' }, + { name: '变道', projectCode: '4', projectCodeCenter: '40500' }, + { name: '超车', projectCode: '10', projectCodeCenter: '41400' }, + { name: '掉头', projectCode: '12', projectCodeCenter: '41500' }, + { name: '停车', projectCode: '11', projectCodeCenter: '40600' }, +] + +export const AmplifyImages = [ + 'km_zxB.png', + 'km_hcB.png', + 'km_bdB.png', + 'km_ccB.png', + 'km_dtB.png', + 'km_tcB.png', +] \ No newline at end of file diff --git a/entry/src/main/ets/mock/SignDisplay.ets b/entry/src/main/ets/mock/SignDisplay.ets new file mode 100644 index 00000000..b8344fdb --- /dev/null +++ b/entry/src/main/ets/mock/SignDisplay.ets @@ -0,0 +1,67 @@ +export const SignalData = [ + { key: '左方向灯', value: '0' }, + { key: '右方向灯', value: '0' }, + { key: '喇叭', value: '0' }, + { key: '点火1', value: '0' }, + { key: '点火2', value: '0' }, + { key: '近光灯', value: '0' }, + { key: '远光灯', value: '0' }, + { key: '示廓灯', value: '0' }, + { key: '雾灯', value: '0' }, + { key: '雨刮器', value: '0' }, + { key: '脚刹', value: '0' }, + { key: '手刹', value: '0' }, + { key: '主驾驶门', value: '0' }, + { key: '离合', value: '0' }, + { key: '副刹车', value: '0' }, + { key: '安全带', value: '0' }, + { key: '双跳灯', value: '0' }, + { key: '车速', value: '0' }, + { key: '档位', value: '0' }, + { key: '超声波1', value: '0' }, + { key: '超声波2', value: '0' }, + { key: 'NC', value: '0' }, + { key: 'SA15', value: '0' }, + { key: '其他门', value: '0' }, + { key: '转速过高', value: '0' }, + { key: '累计脉冲', value: '0' }, + { key: '熄火次数', value: '0' }, + { key: '发动机转速', value: '0' }, + { key: '方向盘角度', value: '0' }, + { key: '超声波3', value: '0' }, + { key: '超声波4', value: '0' }, + { key: '触摸1', value: '0' }, + { key: '触摸2', value: '0' }, + { key: '触摸3', value: '0' }, + { key: 'SCIO', value: '0' }, + { key: 'SC1A_C', value: '0' }, + { key: 'SC1B_C', value: '0' }, + { key: 'SC2A_C', value: '0' }, + { key: 'SC2B_C', value: '0' }, + { key: 'SC3A_C', value: '0' }, + { key: 'SC3B_C', value: '0' }, + { key: 'SC4A_C', value: '0' }, + { key: 'SC4B_C', value: '0' }, + { key: 'SC5A_C', value: '0' }, + { key: 'SC5B_C', value: '0' }, + { key: 'SC6A_C', value: '0' }, + { key: 'SC6B_C', value: '0' } +] + +export const GPSData = [ + { key: '状态', value: '0' }, + { key: '收星数', value: '0' }, + { key: '海拔高', value: '0' }, + { key: '高度差', value: '0' }, + { key: '龄期', value: '0' }, + { key: '维度因子', value: '0' }, + { key: '经度因子', value: '0' }, + { key: '航向角', value: '0' }, + { key: '俯仰角', value: '0' }, + { key: '航向角状态-收星数', value: '0' }, + { key: '年月日', value: '0' }, + { key: '时分秒', value: '0' }, + { key: '经度', value: '0' }, + { key: '纬度', value: '0' }, + { key: '速度', value: '0' }, +] \ No newline at end of file diff --git a/entry/src/main/ets/mock/index.ets b/entry/src/main/ets/mock/index.ets index 61cf6ef0..8d998cf9 100644 --- a/entry/src/main/ets/mock/index.ets +++ b/entry/src/main/ets/mock/index.ets @@ -1,3 +1,7 @@ export * from "./CandidateData" -export * from "./VideoData" \ No newline at end of file +export * from "./VideoData" + +export * from "./Judge" + +export * from "./SignDisplay" \ No newline at end of file diff --git a/entry/src/main/ets/model/SignDisplay.ets b/entry/src/main/ets/model/SignDisplay.ets new file mode 100644 index 00000000..7ded50b4 --- /dev/null +++ b/entry/src/main/ets/model/SignDisplay.ets @@ -0,0 +1,4 @@ +export type SignalDataType = { + key: string; + value: string; +}; \ No newline at end of file diff --git a/entry/src/main/ets/model/index.ets b/entry/src/main/ets/model/index.ets new file mode 100644 index 00000000..2bb685e1 --- /dev/null +++ b/entry/src/main/ets/model/index.ets @@ -0,0 +1 @@ +export * from "./SignDisplay" \ No newline at end of file diff --git a/entry/src/main/ets/pages/Judge.ets b/entry/src/main/ets/pages/Judge.ets index 7d59c45e..ecd27f36 100644 --- a/entry/src/main/ets/pages/Judge.ets +++ b/entry/src/main/ets/pages/Judge.ets @@ -1,30 +1,106 @@ -import router from '@ohos.router' +import router from '@ohos.router'; import Prompt from '@system.prompt'; import common from '@ohos.app.ability.common'; -import EndPoPup from './compontents/judge/end-popup' -import LoadingPopup from './compontents/judge/loading-popup' -import DeductedPopup from './compontents/judge/deduction-popup' -import AmplifyPopup from './compontents/judge/amplify-popup' -import Judge from './judgeSDK/judge' -import {defaultJudgeConfigObj} from './judgeSDK/utils//judge-common' +import EndPoPup from './compontents/judge/EndPopup'; +import LoadingPopup from './compontents/judge/LoadingPopup'; +import DeductedPopup from './compontents/judge/DeductionPopup'; +import AmplifyPopup from './compontents/judge/AmplifyPopup'; +import Judge from './judgeSDK/judge'; +import { defaultJudgeConfigObj } from './judgeSDK/utils//judge-common'; import { - Project, ProjectObj, MarkRule, CDSBInfo, - SYSTEMPARMARR,CARINFO ,MAPPOINT ,MAPITEMPOINTITEM,SYSSET -} from './judgeSDK/api/judgeSDK.d' -import { getCurrentTime, formatTime, getCurrentHourTime,chunkArr } from '../common/utils/tools' -import { examJudgeEndExam } from './judgeSDK/api/index' -import { getSyncData } from '../common/service/initable' -import { judgeConfig } from './judgeSDK/utils/judge-config' + CARINFO, + CDSBInfo, + MAPITEMPOINTITEM, + MAPPOINT, + MarkRule, + Project, + ProjectObj, + SYSSET, + SYSTEMPARMARR +} from './judgeSDK/api/judgeSDK.d'; +import { chunkArr, formatTime, getCurrentHourTime, getCurrentTime } from '../common/utils/tools'; +import { examJudgeEndExam } from './judgeSDK/api/index'; +import { getSyncData } from '../common/service/initable'; +import { judgeConfig } from './judgeSDK/utils/judge-config'; import FileUtil from '../common/utils/File'; -import SignDisplayCom from './compontents/signDisplayCom' -import {testMarkRules} from './judgeSDK/dataTest/index' +import SignDisplayCom from './compontents/signDisplayCom'; + @Entry @Component struct Index { scroller: Scroller = new Scroller() + //页面通用字体大小 + @State FONTSIZE: number = 28 + @State BIGFONTSIZE: number = 28 + //结束考试弹窗 + @State endPopupVisible: boolean = false + //等待弹窗(考试及格,考试不及格使用) + @State loadingPopupVisible: boolean = false + //实时轨迹弹窗 + @State signDisplayComVisible: boolean = false + @State isDdxk: boolean = false; + @State time: string = '' + //考试用时 + @State examTime: number = 0 + //开始时间 + @State startTime: string = '00:00:00' + @State startFullTime: string = '' + @State startHourTime: string = '' + //科目类型 + @State examSubject: 2 | 3 = 3; + @State ddxkTime: number = 0; + @State ddxkKsxmArr: string[] = [''] + @State ddxkKfArr: string[] = [''] + @State xmmcStr: string = '' + @State carztStr: string = '' + @State kfArr: { + xmmcStr?: string, + score: string, + desc: string + }[] = [] + @State name: string = '' + @State idCard: string = '' + @State totalScore: number = 100 + //模拟考试项目 + @State projects: Project[] = [] + @State projectsObj: ProjectObj = {} + @State projectsCenterObj: ProjectObj = {} + @State markRuleListObj: MarkRule = {} + @State cdsbInfoObj: CDSBInfo = {} + @State timer: number = 0 + @State judgeConfig: { [k: string]: string }[] = [] + @State judgeConfigObj: { [k: string]: any } = defaultJudgeConfigObj + //流水号 + @State lsh: string = '' + @State kszp: string = '' + @State ksdd: string = '' + @State kssycs: string = '' + @State kslx: string = '' + //监管接口序列号 + @State serialNumber: number = 0 + @State carType: string = '' + @State carName: string = '' + @State isDeductedPopShow: boolean = false + @State isAmplifyPopShow: boolean = false + @State amplifiedImgIndex: number = 0 + @State judge: any = {} + //行驶距离 + @State jl: number = 0 + //应考里程 + @State examMileage: string = '0' + @State artSubject3Projects: string[] = ['直线', '会车', '变道', '超车', '掉头', '停车'] + @State artSubject3ProjectsCodesArr: string[] = ['3', '9', '4', '10', '12', '11'] + @State manualMarkRules: MarkRule[] = [] + //科目三评判初始化数据 + @State systemparmArr: SYSTEMPARMARR[] = [] + @State mapPointItemArr: MAPITEMPOINTITEM[] = [] + @State carinfoArrr: CARINFO[] = [] + @State mapPointArr: MAPPOINT[] = [] private context = getContext(this) as common.UIAbilityContext; private img: ImageBitmap = new ImageBitmap("/resources/base/media/1.png") + //已考的考试项目 + private wantInfos = [] async aboutToAppear() { globalThis.windowClass.setWindowSystemBarEnable(['']) @@ -51,16 +127,16 @@ struct Index { } //初始化相关数据库表 - async initDb(){ + async initDb() { const examSubject = globalThis.carInfo.examSubject; const {isTrajectoryOpen,trajectoryPath} = judgeConfig await this.initStudent(); await this.initCar(); //是否开启轨迹回放模式 - if(isTrajectoryOpen){ + if (isTrajectoryOpen) { this.initTrajectoryParam(trajectoryPath) - }else{ + } else { examSubject == 2 ? await this.initSystemKm2Param() : await this.initSystemKm3Param() @@ -70,11 +146,12 @@ struct Index { await this.initCDSBInfo() // 科目三新增读取表数据 - if(examSubject == 3){ + if (examSubject == 3) { await this.initMapPoint() await this.initMapPointItem() } } + // 查询考车信息 async initCar() { const result = await getSyncData('ES_CARINFO') @@ -82,14 +159,14 @@ struct Index { this.carName = decodeURI(carInfo.carclass) this.carType = carInfo.kscx this.carinfoArrr.push({ - CARID:carInfo.carid, - IPADDR:'', - CARCLASS:decodeURI(carInfo.carclass), - KSCX:carInfo.kscx, - CARNAME:decodeURI(carInfo.carclass), - FLAG:carInfo.flag, - BK1:carInfo.bk1, - BK2:carInfo.bk2, + CARID: carInfo.carid, + IPADDR: '', + CARCLASS: decodeURI(carInfo.carclass), + KSCX: carInfo.kscx, + CARNAME: decodeURI(carInfo.carclass), + FLAG: carInfo.flag, + BK1: carInfo.bk1, + BK2: carInfo.bk2, }) } @@ -109,36 +186,36 @@ struct Index { // 获取扣分代码信息 async initMarkRules(markRules ?: MarkRule[]) { - const markRuleParams = markRules ||( await getSyncData('MA_MARKRULE') as MarkRule[]) + const markRuleParams = markRules || (await getSyncData('MA_MARKRULE') as MarkRule[]) - markRuleParams .forEach(mark => { + markRuleParams.forEach(mark => { const tempObj = { - itemno:mark.itemno * 1, - markcatalog:mark.markcatalog, - markshow:decodeURI(mark.markshow), - markreal:mark.markreal * 1, - markserial:mark.markserial, - kfxh:mark.kfxh, - OnlyOneKind:mark.onlyoneid * 1, - NoCancelId:mark.nocancelid * 1, - GPS_SID:mark.gps_sid == 0 ? false : true + itemno: mark.itemno * 1, + markcatalog: mark.markcatalog, + markshow: decodeURI(mark.markshow), + markreal: mark.markreal * 1, + markserial: mark.markserial, + kfxh: mark.kfxh, + OnlyOneKind: mark.onlyoneid * 1, + NoCancelId: mark.nocancelid * 1, + GPS_SID: mark.gps_sid == 0 ? false : true } const markserial = mark.markserial * 1; //筛选出人工评判的扣分 - if(markserial > 100 && markserial < 200){ + if (markserial > 100 && markserial < 200) { this.manualMarkRules.push(tempObj) } this.markRuleListObj[`${mark.itemno}_${mark.markserial}`] = { - ...tempObj, + ...tempObj, markserial: mark.markserial, }; }) } // 获取sysset表信息 - async initSysset(sysset?:SYSSET[]) { - const syssetParams = sysset || await getSyncData('MA_SYSSET') + async initSysset(sysset?: SYSSET[]) { + const syssetParams = sysset || await getSyncData('MA_SYSSET') //@ts-ignore const serialNumberArr = syssetParams.filter(sys => sys.v_no === '901'); this.serialNumber = (serialNumberArr[0] && serialNumberArr[0].v_value) || '123456' @@ -147,7 +224,7 @@ struct Index { //@ts-ignore syssetParams.forEach((sys) => { - if(isTrajectoryOpen){ + if (isTrajectoryOpen) { sys.v_no = sys.key; sys.v_name = sys.name; sys.v_value = sys.value @@ -156,14 +233,14 @@ struct Index { const {v_no,v_value} = sys; const v_no_num = v_no * 1; const value = decodeURIComponent(v_value) - if(v_no_num >= 10 &&v_no_num <= 900){ + if (v_no_num >= 10 && v_no_num <= 900) { syssetJudgeConfigArr.push({ - key: v_no_num,value: value, + key: v_no_num, value: value, name: decodeURI(sys.v_name) }) } //科目三应行驶距离参数 - if(sys.v_no == '303'){ + if (sys.v_no == '303') { this.examMileage = sys.v_value + ''; } @@ -173,35 +250,35 @@ struct Index { } // 初始化systemParam表 - async initSystemKm2Param(sysParam?:SYSTEMPARMARR[]){ - const systemParms:any = sysParam || await getSyncData('MA_SYSTEMPARM') + async initSystemKm2Param(sysParam?: SYSTEMPARMARR[]) { + const systemParms: any = sysParam || await getSyncData('MA_SYSTEMPARM') const carName = this.carName; - let carNo2 = '',allItems = []; - systemParms.forEach((systemParm)=>{ + let carNo2 = '', allItems = []; + systemParms.forEach((systemParm) => { const {no1,no2,no3} = systemParm; //获取当前考车的no2 - if(no1 == 3 && no3 == 1){ + if (no1 == 3 && no3 == 1) { const txt1 = decodeURI(systemParm.txt1) - if(txt1 === carName){ + if (txt1 === carName) { carNo2 = no2; } } //获取当前考车的考试项目 - if(carNo2 !== '' && no2 == carNo2 && no3 == 10){ + if (carNo2 !== '' && no2 == carNo2 && no3 == 10) { allItems = decodeURIComponent(systemParm.txt1).split(',') } // 存储当前考车考试项目 - if(allItems.length && no1 == 6 && allItems.includes(no2)){ + if (allItems.length && no1 == 6 && allItems.includes(no2)) { const txt2 = decodeURIComponent(systemParm.txt2) const currentProject = { - name:decodeURI(systemParm.txt1), - abbreviation:decodeURI(systemParm.txt3), - projectCode:no2, - projectCodeCenter:txt2 + name: decodeURI(systemParm.txt1), + abbreviation: decodeURI(systemParm.txt3), + projectCode: no2, + projectCodeCenter: txt2 // sbxh:project.type } this.projectsObj[no2] = currentProject @@ -211,7 +288,7 @@ struct Index { }) const projects = this.projects; - if(!projects.length){ + if (!projects.length) { Prompt.showToast({ message: '读取数据库信息失败,请重新考试!', duration: 8000 @@ -221,14 +298,14 @@ struct Index { } //初始化systemParam表 - async initSystemKm3Param(sysParam?:SYSTEMPARMARR[]) { + async initSystemKm3Param(sysParam?: SYSTEMPARMARR[]) { const systemParms: any = sysParam || await getSyncData('MA_SYSTEMPARM') const {isTrajectoryOpen} = judgeConfig systemParms.forEach((systemParm) => { - if(isTrajectoryOpen){ + if (isTrajectoryOpen) { systemParm.no1 = systemParm.NO1; systemParm.no2 = systemParm.NO2; systemParm.no3 = systemParm.NO3; @@ -239,10 +316,12 @@ struct Index { const {no1,no2,no3,} = systemParm; this.systemparmArr.push({ - 'NO1':no1*1,'NO2':no2*1,'NO3':no3*1, - 'TXT1':decodeURIComponent(systemParm.txt1), - 'TXT2':decodeURIComponent(systemParm.txt2), - 'TXT3':decodeURIComponent(systemParm.txt3), + 'NO1': no1 * 1, + 'NO2': no2 * 1, + 'NO3': no3 * 1, + 'TXT1': decodeURIComponent(systemParm.txt1), + 'TXT2': decodeURIComponent(systemParm.txt2), + 'TXT3': decodeURIComponent(systemParm.txt3), }) const txt2 = decodeURIComponent(systemParm.txt2) @@ -306,7 +385,7 @@ struct Index { // 断点续考判断 async goDdxkItems() { const judgeConfigObj = this.judgeConfigObj - if(judgeConfigObj['369'] != 1 || judgeConfigObj['432'] != 1){ + if (judgeConfigObj['369'] != 1 || judgeConfigObj['432'] != 1) { return } //断点续考判断 @@ -351,55 +430,67 @@ struct Index { } // 初始化mapPoint表 - async initMapPoint(){ + async initMapPoint() { const pointParams = await getSyncData('MA_MAP_POINT') //@ts-ignore - pointParams.forEach(point=>{ - const {point_no,gps_e,gps_n,point_no_f,point_type,road_code,gps_e_Location,gps_n_Location,f_gps_e,f_gps_n,passed} = point; - this.mapPointArr.push({ - point_no:point_no * 1, - gps_e:gps_e * 1, - gps_n:gps_n * 1, - point_no_f:point_no_f * 1, - point_type:point_type * 1, + pointParams.forEach(point => { + const { + point_no, + gps_e, + gps_n, + point_no_f, + point_type, road_code, - gps_e_Location:(gps_e_Location || 0 ) * 1, - gps_n_Location:(gps_n_Location || 0 ) * 1, - f_gps_e:f_gps_e * 1, - f_gps_n:f_gps_n * 1, - passed:passed * 1 + gps_e_Location, + gps_n_Location, + f_gps_e, + f_gps_n, + passed + } = point; + this.mapPointArr.push({ + point_no: point_no * 1, + gps_e: gps_e * 1, + gps_n: gps_n * 1, + point_no_f: point_no_f * 1, + point_type: point_type * 1, + road_code, + gps_e_Location: (gps_e_Location || 0) * 1, + gps_n_Location: (gps_n_Location || 0) * 1, + f_gps_e: f_gps_e * 1, + f_gps_n: f_gps_n * 1, + passed: passed * 1 }) }) } // 初始化mapPointItem表 - async initMapPointItem(){ + async initMapPointItem() { const pointItemPoints = await getSyncData('MA_MAP_POINT_ITEM'); //@ts-ignore pointItemPoints.forEach(itemPoint => { const {point_no,itemno,itemno1,subname} = itemPoint this.mapPointItemArr.push({ - point_no:point_no * 1, - itemno:itemno * 1, - itemno1:itemno1 * 1, - subname + point_no: point_no * 1, + itemno: itemno * 1, + itemno1: itemno1 * 1, + subname }) }) } // 初始化本地systemparam表、markrule表 - async initTrajectoryParam(trajectoryPath:string){ + async initTrajectoryParam(trajectoryPath: string) { const {isTrajectoryOpen} = judgeConfig //轨迹回放读取 systemparam表、markrule表 - const fileUtil = new FileUtil(this.context); + const fileUtil = new FileUtil(this.context); const folderPath = await fileUtil.initFolder(trajectoryPath); const str = await fileUtil.readFile(folderPath); const strArr = str.split('\n'); - const [initData,beginData] = [strArr[0],strArr[1]]; + const [initData, beginData] = [strArr[0], strArr[1]]; const initDataObj = JSON.parse(initData) const systemparm = initDataObj.systemparm; const examSubject = globalThis.carInfo.examSubject; - this.examSubject = isTrajectoryOpen ? (initDataObj.kskm*1):examSubject; + this.examSubject = isTrajectoryOpen ? (initDataObj.kskm * 1) : examSubject; globalThis.carInfo.examSubject = this.examSubject examSubject == 2 ? await this.initSystemKm2Param(systemparm) @@ -409,7 +500,6 @@ struct Index { await this.initSysset(initDataObj.sysset); } - build() { Column() { Row() { @@ -417,7 +507,7 @@ struct Index { Image($rawfile('judge/signal_logoS.png')).width(120) Text(this.time).fontColor('#CCB48F').fontSize(32).padding({ left: 10, right: 5 }) Image($rawfile('judge/xh_green.png')).width(50) - }.padding({left:20}) + }.padding({ left: 20 }) Row() { Text(`当前项目:${this.xmmcStr || '无'} `).fontColor('#E5CCA1').fontSize(32) @@ -445,7 +535,7 @@ struct Index { Text(this.startTime).fontColor('#FFF').fontSize(this.FONTSIZE) }.margin({ bottom: 10 }) - if(this.examSubject == 3){ + if (this.examSubject == 3) { Row() { Text('考试路线:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) Text('线路6').fontColor('#FFAD33').fontSize(this.FONTSIZE) @@ -465,10 +555,13 @@ struct Index { Text(formatTime(this.examTime)).fontColor('#FFF').fontSize(this.FONTSIZE) }.margin({ bottom: 10 }) - if(this.examSubject == 3){ + if (this.examSubject == 3) { Row() { - if(this.judgeConfigObj['375'] == '0'){ - Text(`应行驶:${this.examMileage}m`).fontColor('#E5CCA1').fontSize(this.FONTSIZE).padding({right:20}) + if (this.judgeConfigObj['375'] == '0') { + Text(`应行驶:${this.examMileage}m`) + .fontColor('#E5CCA1') + .fontSize(this.FONTSIZE) + .padding({ right: 20 }) } Text(`已行驶:${this.jl}m`).fontColor('#FFAD33').fontSize(this.FONTSIZE) } @@ -479,13 +572,14 @@ struct Index { }.width('100%') Column() { - Row(){ + Row() { Text(this.carztStr).fontColor('#FFA500').fontSize(this.FONTSIZE) }.height(40) + Row() { Flex({ direction: FlexDirection.Column }) { - if(this.kfArr.length){ + if (this.kfArr.length) { List({}) { ForEach(this.kfArr, (item) => { ListItem() { @@ -505,10 +599,10 @@ struct Index { .margin({ top: 10, bottom: 8, left: 5, right: 5 }) }.margin({ top: 15 }).alignItems(HorizontalAlign.Start) - }.margin({bottom:25}) + }.margin({ bottom: 25 }) }) - }.padding({left:15,right:15,top:30,bottom:5}) - }else{ + }.padding({ left: 15, right: 15, top: 30, bottom: 5 }) + } else { Column() { Row() { Text('暂无扣分项').fontSize(this.BIGFONTSIZE).fontColor('#FFF') @@ -518,73 +612,115 @@ struct Index { .justifyContent(FlexAlign.SpaceBetween) .padding({ top: 12, bottom: 12, left: 8, right: 3 }) - }.margin({ top: 35 }).padding({left:20,right:20}).alignItems(HorizontalAlign.Start) + }.margin({ top: 35 }).padding({ left: 20, right: 20 }).alignItems(HorizontalAlign.Start) } } - .backgroundImage($rawfile('judge/score_bg.png'), ImageRepeat.NoRepeat) - .backgroundImageSize({ width: '100%', height: '100%' }) - .width(514) - .height(618) - .padding({ top: 18, bottom: 15, left: 13, right: 14 }) + .backgroundImage($rawfile('judge/score_bg.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .width(514) + .height(618) + .padding({ top: 18, bottom: 15, left: 13, right: 14 }) //科目二 - if(this.examSubject == 2){ - Flex({wrap:FlexWrap.Wrap,direction:FlexDirection.Row,justifyContent:FlexAlign.SpaceBetween}){ - List({}){ - ForEach(chunkArr(this.projects,2),(item)=>{ - ListItem(){ - Row(){ - Row(){ + if (this.examSubject == 2) { + Flex({ wrap: FlexWrap.Wrap, direction: FlexDirection.Row, justifyContent: FlexAlign.SpaceBetween }) { + List({}) { + ForEach(chunkArr(this.projects, 2), (item) => { + ListItem() { + Row() { + Row() { //#FF7566 #00FFD5 #E6DECF // Text(this.projectsObj[item[0].projectCode]) - Text(item[0].abbreviation).fontSize(item[0].abbreviation.length > 5?28:32).fontColor(this.getProjectColor(this.projectsObj[item[0].projectCode].type)) - }.backgroundImage($rawfile('judge/project_item.png'),ImageRepeat.NoRepeat).backgroundImageSize({width:'100%',height:'100%'}).width('48.5%').height(115).margin({bottom:5}).justifyContent(FlexAlign.Center) - if(item[1]){ - Row(){ + Text(item[0].abbreviation) + .fontSize(item[0].abbreviation.length > 5 ? 28 : 32) + .fontColor(this.getProjectColor(this.projectsObj[item[0].projectCode].type)) + } + .backgroundImage($rawfile('judge/project_item.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .width('48.5%') + .height(115) + .margin({ bottom: 5 }) + .justifyContent(FlexAlign.Center) + + if (item[1]) { + Row() { //#FF7566 #00FFD5 #E6DECF - Text(item[1].abbreviation).fontSize(item[1].abbreviation.length > 5?28:32).fontColor(this.getProjectColor(this.projectsObj[item[1].projectCode].type)) - }.backgroundImage($rawfile('judge/project_item.png'),ImageRepeat.NoRepeat).backgroundImageSize({width:'100%',height:'100%'}).width('48.5%').height(115).margin({left:5,bottom:5}).justifyContent(FlexAlign.Center) + Text(item[1].abbreviation) + .fontSize(item[1].abbreviation.length > 5 ? 28 : 32) + .fontColor(this.getProjectColor(this.projectsObj[item[1].projectCode].type)) + } + .backgroundImage($rawfile('judge/project_item.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .width('48.5%') + .height(115) + .margin({ left: 5, bottom: 5 }) + .justifyContent(FlexAlign.Center) } } } }); } - }.backgroundImage($rawfile('judge/project_bg.png'),ImageRepeat.NoRepeat).backgroundImageSize({width:'100%',height:'100%'}).width('57%').height('100%').padding(30).margin({right:10}) + } + .backgroundImage($rawfile('judge/project_bg.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .width('57%') + .height('100%') + .padding(30) + .margin({ right: 10 }) } //科目三 - if(this.examSubject == 3){ - Column(){ - Flex({wrap:FlexWrap.Wrap,direction:FlexDirection.Row,justifyContent:FlexAlign.SpaceBetween}){ - List({}){ - ForEach(this.projects,(project)=>{ - ListItem(){ - Text(project.name){ + if (this.examSubject == 3) { + Column() { + Flex({ + wrap: FlexWrap.Wrap, + direction: FlexDirection.Row, + justifyContent: FlexAlign.SpaceBetween + }) { + List({}) { + ForEach(this.projects, (project) => { + ListItem() { + Text(project.name) { - }.fontColor(this.getProjectColor(this.projectsObj[project.projectCode].type)).margin({bottom:5}).fontSize(26) - }.margin({bottom:8}) + } + .fontColor(this.getProjectColor(this.projectsObj[project.projectCode].type)) + .margin({ bottom: 5 }) + .fontSize(26) + }.margin({ bottom: 8 }) }) - }.lanes(2).margin({left:25}) - }.width('100%').height('50%').backgroundImage($rawfile('judge/project_km3_bg.png'),ImageRepeat.NoRepeat).backgroundImageSize({width:'100%',height:'100%'}).padding(30).margin({right:5}) + }.lanes(2).margin({ left: 25 }) + } + .width('100%') + .height('50%') + .backgroundImage($rawfile('judge/project_km3_bg.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .padding(30) + .margin({ right: 5 }) - Flex({wrap:FlexWrap.Wrap,direction:FlexDirection.Row,justifyContent:FlexAlign.SpaceAround}){ - List(){ - ForEach(this.artSubject3Projects,(item,index)=>{ - ListItem(){}.backgroundImage( + Flex({ wrap: FlexWrap.Wrap, direction: FlexDirection.Row, justifyContent: FlexAlign.SpaceAround }) { + List() { + ForEach(this.artSubject3Projects, (item, index) => { + ListItem() { + } + .backgroundImage( $rawfile( - `judge/km3/${this.getIsExitManualProject(index) ? item : (item+'_gray')}.png` - ),ImageRepeat.NoRepeat) - .backgroundImageSize({width:'100%',height:'100%'}).width(174).height(118).margin({bottom:15}) - .onClick(()=>{ - if(this.getIsExitManualProject(index)){ + `judge/km3/${this.getIsExitManualProject(index) ? item : (item + '_gray')}.png` + ), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .width(174) + .height(118) + .margin({ bottom: 15 }) + .onClick(() => { + if (this.getIsExitManualProject(index)) { // 靠边停车时候可以触发 - if(this.judgeConfigObj['343'] == 0 ){ + if (this.judgeConfigObj['343'] == 0) { const xmmcStr = this.xmmcStr; - if(xmmcStr == '无' || xmmcStr == ''){ - this.amplifiedImgIndex = index;this.isAmplifyPopShow = true - } else{ - if(index === 5){ + if (xmmcStr == '无' || xmmcStr == '') { + this.amplifiedImgIndex = index; + this.isAmplifyPopShow = true + } else { + if (index === 5) { Prompt.showToast({ message: `${xmmcStr}未结束,不允许靠边停车`, duration: 8000 @@ -592,15 +728,22 @@ struct Index { } } - }else{ - this.amplifiedImgIndex = index;this.isAmplifyPopShow = true + } else { + this.amplifiedImgIndex = index; + this.isAmplifyPopShow = true } } }) }) - }.lanes(3).margin({left:5,top:18}) + }.lanes(3).margin({ left: 5, top: 18 }) } - }.backgroundImage($rawfile('judge/project_bg.png'),ImageRepeat.NoRepeat).backgroundImageSize({width:'100%',height:'100%'}).width(660).height(640).padding(44).margin({right:10}) + } + .backgroundImage($rawfile('judge/project_bg.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .width(660) + .height(640) + .padding(44) + .margin({ right: 10 }) } }.margin({ top: 15 }).height('80%').justifyContent(FlexAlign.SpaceBetween) }.width('100%').height('100%').alignItems(HorizontalAlign.Start).margin({ top: 10 }) @@ -631,22 +774,32 @@ struct Index { .backgroundImageSize({ width: '100%', height: '100%' }) .justifyContent(FlexAlign.Center) .alignItems(VerticalAlign.Center) - .margin({ top: 30 ,bottom:15}) + .margin({ top: 30, bottom: 15 }) } - Column(){ - if(this.examSubject == 3){ - Row(){ - Row(){}.width(60).height(60).backgroundImage($rawfile('judge/manual_judge.png'), ImageRepeat.NoRepeat).backgroundImageSize({ width: '100%', height: '100%' }) - Text('人工评判').fontColor('#FFF').fontSize(32).padding({right:12}) - }.width(334).height(110).justifyContent(FlexAlign.Center).alignItems(VerticalAlign.Center) - .backgroundImage($rawfile('judge/button_nor.png'), ImageRepeat.NoRepeat) - .backgroundImageSize({ width: '100%', height: '100%' }) - .margin({bottom:10}) - .onClick(()=>{ - if(this.judgeConfigObj['342'] == 0){ + Column() { + if (this.examSubject == 3) { + Row() { + Row() { + } + .width(60) + .height(60) + .backgroundImage($rawfile('judge/manual_judge.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + + Text('人工评判').fontColor('#FFF').fontSize(32).padding({ right: 12 }) + } + .width(334) + .height(110) + .justifyContent(FlexAlign.Center) + .alignItems(VerticalAlign.Center) + .backgroundImage($rawfile('judge/button_nor.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .margin({ bottom: 10 }) + .onClick(() => { + if (this.judgeConfigObj['342'] == 0) { this.isDeductedPopShow = true - }else{ + } else { Prompt.showToast({ message: '平台配置不允许人工评判!', duration: 4000 @@ -655,30 +808,41 @@ struct Index { }) } - Row(){ - Row(){}.width(60).height(60).backgroundImage($rawfile('judge/phone.png'), ImageRepeat.NoRepeat).backgroundImageSize({ width: '100%', height: '100%' }) - Text('呼叫请求').fontColor('#FFF').fontSize(32).padding({right:12}) - }.width(334).height(110).justifyContent(FlexAlign.Center).alignItems(VerticalAlign.Center) + Row() { + Row() { + } + .width(60) + .height(60) + .backgroundImage($rawfile('judge/phone.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + + Text('呼叫请求').fontColor('#FFF').fontSize(32).padding({ right: 12 }) + } + .width(334) + .height(110) + .justifyContent(FlexAlign.Center) + .alignItems(VerticalAlign.Center) .backgroundImage($rawfile('judge/button_nor.png'), ImageRepeat.NoRepeat) .backgroundImageSize({ width: '100%', height: '100%' }) - .margin({bottom:10}) + .margin({ bottom: 10 }) - Row() {} + Row() { + } .width(334) .height(100) .backgroundImage($rawfile('judge/anniu_nor.png'), ImageRepeat.NoRepeat) .backgroundImageSize({ width: '100%', height: '100%' }) .onClick(() => { - if(this.judgeConfigObj['353'] == '0' ){ + if (this.judgeConfigObj['353'] == '0') { this.endPopupVisible = true - }else{ + } else { Prompt.showToast({ message: '车上不允许手动结束考试!', duration: 4000 }); } }) - }.margin({bottom:30}) + }.margin({ bottom: 30 }) } .width('25%') @@ -724,7 +888,8 @@ struct Index { msgStr: this.judge.plcStr || '' }).margin({ top: 100 }) - Row() {} + Row() { + } .width(240) .height(240) .position({ x: '81%', y: 80 }) @@ -739,30 +904,32 @@ struct Index { //科目三人工扣分弹窗 if (this.isDeductedPopShow) { DeductedPopup({ - currentItems:Reflect.ownKeys(this.projectsObj).map(projectKey => { + currentItems: Reflect.ownKeys(this.projectsObj).map(projectKey => { const project = this.projectsObj[projectKey] - return project.type == '2'?project.projectCode:'' + return project.type == '2' ? project.projectCode : '' }).filter(project => project !== ''), - markRules:this.manualMarkRules, - closePopup:()=>{this.isDeductedPopShow = false}, - confirmMark:async (itemno,serial) => { + markRules: this.manualMarkRules, + closePopup: () => { + this.isDeductedPopShow = false + }, + confirmMark: async (itemno, serial) => { const judge = this.judge - await judge.setJudgeMark(itemno,serial); + await judge.setJudgeMark(itemno, serial); this.isDeductedPopShow = false } }) } //科目三人工项目确认框 - if(this.isAmplifyPopShow){ + if (this.isAmplifyPopShow) { AmplifyPopup({ - amplifyImgIndex:this.amplifiedImgIndex, - confirmAmplify:async (amplify)=>{ + amplifyImgIndex: this.amplifiedImgIndex, + confirmAmplify: async (amplify) => { const judge = this.judge await judge.setJudgeItem(amplify.projectCode); this.isAmplifyPopShow = false }, - closeAmplifyPop:()=>{ + closeAmplifyPop: () => { this.isAmplifyPopShow = false } }) @@ -792,108 +959,30 @@ struct Index { } // 获取是否能人工进项目 - getIsExitManualProject = (index:number)=>{ + getIsExitManualProject = (index: number) => { const {judgeConfigObj,artSubject3ProjectsCodesArr,projectsObj} = this; const unExitManualProjects = judgeConfigObj['332'].split(',') || []; const param348 = judgeConfigObj['348'] || '0'; const param387 = judgeConfigObj['387'] || '0'; - if(judgeConfigObj['342'] === '3' || judgeConfigObj['342'] === '2'){ + if (judgeConfigObj['342'] === '3' || judgeConfigObj['342'] === '2') { return false } - if(unExitManualProjects.includes(artSubject3ProjectsCodesArr[index])){ + if (unExitManualProjects.includes(artSubject3ProjectsCodesArr[index])) { return false } - if(param348 == '0' && projectsObj['9']?.type == 2){ + if (param348 == '0' && projectsObj['9']?.type == 2) { return index === 0 ? true : false } - if(param387 === '0' && index === 5){ + if (param387 === '0' && index === 5) { const {examMileage,jl} = this return jl >= Number(examMileage) } return true } - - //页面通用字体大小 - @State FONTSIZE: number = 28 - @State BIGFONTSIZE: number = 28 - //结束考试弹窗 - @State endPopupVisible: boolean = false - //等待弹窗(考试及格,考试不及格使用) - @State loadingPopupVisible: boolean = false - //实时轨迹弹窗 - @State signDisplayComVisible: boolean = false - @State isDdxk: boolean = false; - @State time: string = '' - //考试用时 - @State examTime: number = 0 - //开始时间 - @State startTime: string = '00:00:00' - @State startFullTime: string = '' - @State startHourTime: string = '' - //科目类型 - @State examSubject: 2 | 3 = 3; - @State ddxkTime: number = 0; - @State ddxkKsxmArr: string[] = [''] - @State ddxkKfArr: string[] = [''] - @State xmmcStr: string = '' - @State carztStr: string = '' - @State kfArr: { - xmmcStr?: string, - score: string, - desc: string - }[] = [] - - @State name: string = '' - @State idCard: string = '' - @State totalScore: number = 100 - //模拟考试项目 - @State projects: Project[] = [] - @State projectsObj: ProjectObj = {} - @State projectsCenterObj: ProjectObj = {} - @State markRuleListObj: MarkRule = {} - @State cdsbInfoObj: CDSBInfo = {} - @State timer: number = 0 - @State judgeConfig: {[k:string]:string}[] = [] - @State judgeConfigObj: {[k:string]:any} = defaultJudgeConfigObj - - //流水号 - @State lsh: string = '' - @State kszp: string = '' - @State ksdd: string = '' - @State kssycs: string = '' - @State kslx: string = '' - - //监管接口序列号 - @State serialNumber: number = 0 - @State carType: string = '' - @State carName: string = '' - @State isDeductedPopShow: boolean = false - @State isAmplifyPopShow: boolean = false - @State amplifiedImgIndex: number = 0 - @State judge:any = {} - - //行驶距离 - @State jl:number =0 - //应考里程 - @State examMileage:string = '0' - //已考的考试项目 - private wantInfos = [] - - @State artSubject3Projects: string[] = ['直线', '会车', '变道','超车', '掉头', '停车'] - @State artSubject3ProjectsCodesArr: string[] = ['3', '9', '4','10', '12', '11'] - - @State manualMarkRules:MarkRule[] = [] - - //科目三评判初始化数据 - @State systemparmArr:SYSTEMPARMARR[] = [] - @State mapPointItemArr:MAPITEMPOINTITEM[] = [] - @State carinfoArrr:CARINFO[] = [] - @State mapPointArr:MAPPOINT[] = [] - } diff --git a/entry/src/main/ets/pages/compontents/FaceCompare.ets b/entry/src/main/ets/pages/compontents/FaceCompare.ets index 650bb765..01d5796c 100644 --- a/entry/src/main/ets/pages/compontents/FaceCompare.ets +++ b/entry/src/main/ets/pages/compontents/FaceCompare.ets @@ -1,23 +1,16 @@ -//@ts-ignore - -import util from '@ohos.util'; - -import { voiceService } from '../../common/service/voiceService' -import { faceCompare } from '../../api/userInfo' -import FileUtil from '../../common/utils/File' -import { VideoConfig } from '../interfaces' +import { voiceService } from '../../common/service/voiceService'; +import { faceCompare } from '../../api/userInfo'; +import FileUtil from '../../common/utils/File'; +import { VideoConfig } from '../interfaces'; import common from '@ohos.app.ability.common'; -import { string2Bytes } from '../../common/utils/tools' -import { takePhoto } from '../../common/service/videoService' -import { GlobalConfig } from '../../config/index' +import { string2Bytes } from '../../common/utils/tools'; +import { takePhoto } from '../../common/service/videoService'; +import { GlobalConfig } from '../../config/index'; +import { VideoConfigData } from '../../mock'; @Component export default struct FaceCompare { - constructor() { - super() - } - @State imageBase64: string = 'data:image/jpeg;base64,' @Prop sfzh: string; @Prop lsh: string; @@ -27,46 +20,26 @@ export default struct FaceCompare { @Link getqkFlag: boolean; @Link faceCatchImg: string; @State imageThumbnail: string = ''; - private times = 1; //人脸比对失败次数, 超过3次将不会自动比对,需要点击重新打开重新触发 - private vocObj = null; @State callBackFlag: boolean = false; @State @Watch('clearIntervalFn') showFaceCompareFlag: Boolean = false; @State video_url: string = 'rtsp://admin:12345qwe@192.168.5.41:8000/h264/ch2/main/av_stream' @State previewUri: Resource = $r('app.media.2_nor') @State curRate: PlaybackSpeed = PlaybackSpeed.Speed_Forward_1_00_X @State showControls: boolean = false - private controller: VideoController = new VideoController() @State isAutoPlay: boolean = true @State signNum: number = 0; + @State param: VideoConfig = VideoConfigData + private times = 1; //人脸比对失败次数, 超过3次将不会自动比对,需要点击重新打开重新触发 + private vocObj = null; + private controller: VideoController = new VideoController() private fileUtil: FileUtil private interval: any - @State param: VideoConfig = { - spls: '', - videoNum: '1', - faceFlag: false, - pztd: '1', - ljlx: '', - ip: '192.168.7.112', - port: '554', - userName: 'admin', - pwd: '12345qwe', - td1: '1', - td2: '2', - td3: '3', - td4: '4', - videoRecord1: false, - videoRecord2: false, - videoRecord3: false, - videoRecord4: false, - rlls: '1', - spzd4:false, - spzd3:false, - spzd2:false, - spzd1:false, - zdyz:'500', - } private context = getContext(this) as common.UIAbilityContext; + constructor() { + super() + } + build() { Column() { Column() { @@ -162,7 +135,7 @@ export default struct FaceCompare { this.controller.stop() this.vocObj && this.vocObj.releasePlayer() this.showFaceCompare = !this.showFaceCompare - this.showFaceCompareFlag=!this.showFaceCompareFlag + this.showFaceCompareFlag = !this.showFaceCompareFlag this.faceCompareSucess = -1 globalThis.statue = 2 @@ -203,9 +176,9 @@ export default struct FaceCompare { } async faceComparFn() { - console.log('mmmmm0',1) + console.log('mmmmm0', 1) - takePhoto(this.param, this.context, 'jt/',0,({base64})=>{ + takePhoto(this.param, this.context, 'jt/', 0, ({base64}) => { faceCompare({ sfzh: this.sfzh, firstImage: this.firstImage.substr(22), @@ -213,12 +186,12 @@ export default struct FaceCompare { type: 2, verifyType: 1 }).then(res => { - console.log('mmmmm8',res) + console.log('mmmmm8', res) if (res) { this.controller.stop() this.showFaceCompare = !this.showFaceCompare - this.showFaceCompareFlag=!this.showFaceCompareFlag + this.showFaceCompareFlag = !this.showFaceCompareFlag this.faceCompareSucess = 1; // this.faceCatchImg = result this.vocObj.playAudio({ @@ -236,9 +209,7 @@ export default struct FaceCompare { } }) }) - console.log('mmmmm8',9) - - + console.log('mmmmm8', 9) } @@ -246,7 +217,7 @@ export default struct FaceCompare { async heartMsg(context) { let tmpList = [] const str = this.lsh - for (let i = 0;i < str.length; i++) { + for (let i = 0; i < str.length; i++) { tmpList.push(string2Bytes(str.charCodeAt(i), 1 * 8)[0]) } const param = { @@ -274,7 +245,7 @@ export default struct FaceCompare { globalThis.udpClient2.setMsgCallBack((val) => { if (val.id == '48') { if (val.body[13] == '1') { - this.showFaceCompareFlag=!this.showFaceCompareFlag + this.showFaceCompareFlag = !this.showFaceCompareFlag this.showFaceCompare = !this.showFaceCompare this.vocObj && this.vocObj.releasePlayer() this.faceCompareSucess = 1 @@ -311,7 +282,7 @@ export default struct FaceCompare { } } else if (val == 'yzcg.wav') { this.showFaceCompare = !this.showFaceCompare - this.showFaceCompareFlag=!this.showFaceCompareFlag + this.showFaceCompareFlag = !this.showFaceCompareFlag globalThis.statue = 4 this.faceCompareSucess = 1; this.vocObj && this.vocObj.releasePlayer() @@ -320,13 +291,13 @@ export default struct FaceCompare { this.vocObj && this.vocObj.releasePlayer() this.faceCompareSucess = -1 this.showFaceCompare = !this.showFaceCompare - this.showFaceCompareFlag=!this.showFaceCompareFlag + this.showFaceCompareFlag = !this.showFaceCompareFlag } } }); const data = await this.fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/config3.txt'); - console.log('faceEnterIn,data',data) + console.log('faceEnterIn,data', data) setTimeout(() => { this.vocObj && this.vocObj.playAudio({ @@ -343,8 +314,6 @@ export default struct FaceCompare { this.controller.start() } - - async aboutToDisappear() { } diff --git a/entry/src/main/ets/pages/compontents/SignDisplayCom.ets b/entry/src/main/ets/pages/compontents/SignDisplayCom.ets index 19affe5f..cb308267 100644 --- a/entry/src/main/ets/pages/compontents/SignDisplayCom.ets +++ b/entry/src/main/ets/pages/compontents/SignDisplayCom.ets @@ -1,95 +1,36 @@ -import router from '@ohos.router' +import router from '@ohos.router'; import UdpClient from '../../common/utils/UdpClient'; -import FileLog from '../judgeSDK/utils/file-log' -import { voiceService } from '../../common/service/voiceService' -import prompt from '@ohos.prompt' -import RealTime from '../compontents/judge/real-time' +import FileLog from '../judgeSDK/utils/file-log'; +import RealTime from '../compontents/judge/RealTime'; +import { GPSData, SignalData } from '../../mock'; +import { SignalDataType } from '../../model'; + @Component export default struct SignDisplayCom { - constructor() { - super() - } - @State showBack: boolean = false @State scaleNum: number = 1 @State msg: string = '' @State signArr: Array = [] - @State sjxhColum: Array = [ - { key: '左方向灯', value: '0' }, { key: '右方向灯', value: '0' }, { - key: '喇叭', - value: '0' - }, { key: '点火1', value: '0' }, { key: '点火2', value: '0' }, { key: '近光灯', value: '0' }, { - key: '远光灯', - value: '0' - }, { key: '示廓灯', value: '0' }, { key: '雾灯', value: '0' }, { key: '雨刮器', value: '0' }, { - key: '脚刹', - value: '0' - }, { key: '手刹', value: '0' }, { key: '主驾驶门', value: '0' }, { key: '离合', value: '0' }, { - key: '副刹车', - value: '0' - }, { - key: '安全带', - value: '0' - }, { key: '双跳灯', value: '0' }, { key: '车速', value: '0' }, { key: '档位', value: '0' }, { - key: '超声波1', - value: '0' - }, { - key: '超声波2', - value: '0' - }, { - key: 'NC', - value: '0' - }, { key: 'SA15', value: '0' }, { key: '其他门', value: '0' }, { key: '转速过高', value: '0' }, { - key: '累计脉冲', - value: '0' - }, { key: '熄火次数', value: '0' }, { key: '发动机转速', value: '0' }, { key: '方向盘角度', value: '0' }, { - key: '超声波3', - value: '0' - }, { key: '超声波4', value: '0' }, { key: '触摸1', value: '0' }, { key: '触摸2', value: '0' }, { - key: '触摸3', - value: '0' - }, { key: 'SCIO', value: '0' } - , { key: 'SC1A_C', value: '0' }, { key: 'SC1B_C', value: '0' }, { key: 'SC2A_C', value: '0' }, { - key: 'SC2B_C', - value: '0' - }, { key: 'SC3A_C', value: '0' }, { key: 'SC3B_C', value: '0' }, { key: 'SC4A_C', value: '0' }, { - key: 'SC4B_C', - value: '0' - }, { key: 'SC5A_C', value: '0' }, { key: 'SC5B_C', value: '0' }, { key: 'SC6A_C', value: '0' }, { - key: 'SC6B_C', - value: '0' - }] - @State GPSColum:Array=[ - { key: '状态', value: '0' }, - { key: '收星数', value: '0' }, - { key: '海拔高', value: '0' }, - { key: '高度差', value: '0' }, - { key: '龄期', value: '0' }, - { key: '维度因子', value: '0' }, - { key: '经度因子', value: '0' }, - { key: '航向角', value: '0' }, - { key: '俯仰角', value: '0' }, - { key: '航向角状态-收星数', value: '0' }, - { key: '年月日', value: '0' }, - { key: '时分秒', value: '0' }, - { key: '经度', value: '0' }, - { key: '纬度', value: '0' }, - { key: '速度', value: '0' }, - ] + @State sjxhColum: Array = SignalData + @State GPSColum: Array = GPSData @State ratio: number = 850 / 960 @State gpsActive: number = 1 @Prop active: number = 0 @State msgStr: string = '' - @State interval: number=0 - + @State interval: number = 0 @State @Watch('outClick') outFlag: boolean = false; + @State url: string = '' private timer = null private udpClient: UdpClient = null private FileLog: FileLog private vocObj = null; - @State url: string = '' + + constructor() { + super() + } + build() { - Column(){ + Column() { Column() { Flex({ justifyContent: FlexAlign.SpaceBetween }) { Row() { @@ -137,7 +78,7 @@ export default struct SignDisplayCom { } Row() { - if(this.showBack){ + if (this.showBack) { Image($r('app.media.topB_back')).height('12.2%') .onClick(() => { router.back() @@ -259,8 +200,14 @@ export default struct SignDisplayCom { Text('海拔高:' + this.signArr[85]).fontColor('#FFB433').fontSize(14 * this.ratio).height(18 * this.ratio) Text('高度差:' + this.signArr[86]).fontColor('#FFB433').fontSize(14 * this.ratio).height(18 * this.ratio) Text('龄期:' + this.signArr[87]).fontColor('#FFB433').fontSize(14 * this.ratio).height(18 * this.ratio) - Text('维度因子:' + this.signArr[88]).fontColor('#FFB433').fontSize(14 * this.ratio).height(18 * this.ratio) - Text('经度因子:' + this.signArr[89]).fontColor('#FFB433').fontSize(14 * this.ratio).height(18 * this.ratio) + Text('维度因子:' + this.signArr[88]) + .fontColor('#FFB433') + .fontSize(14 * this.ratio) + .height(18 * this.ratio) + Text('经度因子:' + this.signArr[89]) + .fontColor('#FFB433') + .fontSize(14 * this.ratio) + .height(18 * this.ratio) Text('航向角:' + this.signArr[90]).fontColor('#FFB433').fontSize(14 * this.ratio).height(18 * this.ratio) Text('俯仰角:' + this.signArr[91]).fontColor('#FFB433').fontSize(14 * this.ratio).height(18 * this.ratio) Text('航向角状态-收星数:' + this.signArr[92]) @@ -293,16 +240,17 @@ export default struct SignDisplayCom { Row() { Text('GPS').fontColor(this.gpsActive == 0 ? '#2D3C5A' : '#fff') } - .width(316*this.ratio) - .height(24*this.ratio) + .width(316 * this.ratio) + .height(24 * this.ratio) .backgroundColor(this.gpsActive == 0 ? '#fff' : '#1A1A1A') - .margin({ left: 10*this.ratio, right: 10*this.ratio }) + .margin({ left: 10 * this.ratio, right: 10 * this.ratio }) .justifyContent(FlexAlign.Center) .onClick(() => { this.gpsActive = 0 }) - }.margin({ top: 10*this.ratio }) + }.margin({ top: 10 * this.ratio }) + Flex({ direction: FlexDirection.Column }) { ForEach(this.GPSColum, (item) => { Column() { @@ -314,7 +262,7 @@ export default struct SignDisplayCom { }) } } - .width(168 *2* this.ratio) + .width(168 * 2 * this.ratio) .height(380 * this.ratio) .backgroundColor('#282828') .margin({ top: 6 * this.ratio, left: 10 * this.ratio }) @@ -325,8 +273,8 @@ export default struct SignDisplayCom { Row() { RealTime({ - width:Math.floor(550 * this.ratio), - height:Math.floor(380 * this.ratio), + widthNumber: Math.floor(550 * this.ratio), + heightNumber: Math.floor(380 * this.ratio), }) } .width(550 * this.ratio) @@ -352,63 +300,64 @@ export default struct SignDisplayCom { aboutToDisappear() { clearInterval(this.interval) } - aboutToAppear(){ + + aboutToAppear() { this.ratio = this.ratio * (this.scaleNum || 1); const that = this const {showBack,getSignal} = this - if(showBack){ + if (showBack) { globalThis.udpClient.onMessage((msg) => { - console.log('msgmsg',msg) - if(msg){ + console.log('msgmsg', msg) + if (msg) { getSignal(msg) } }) - }else{ + } else { clearInterval(globalThis.signalTimer) - globalThis.signalTimer = setInterval(()=>{ + globalThis.signalTimer = setInterval(() => { const msgStr = globalThis.msgStr - if(msgStr){ + if (msgStr) { getSignal(msgStr) } - },200) + }, 200) } } onPageShow() { - console.info('SURENJUN',123) + console.info('SURENJUN', 123) const getSignal = this.getSignal; const that = this const showBack = this.showBack; - if(showBack){ + if (showBack) { globalThis.udpClient.onMessage((msg) => { getSignal(msg) }) - }else{ + } else { clearInterval(globalThis.signalTimer) - globalThis.signalTimer = setInterval(()=>{ + globalThis.signalTimer = setInterval(() => { //TODO 临时方案 const msgStr = globalThis.msgStr getSignal(msgStr) - },200) + }, 200) } } - getSignal= (msg)=> { - console.log('msgmsgmsg',msg) + getSignal = (msg) => { + console.log('msgmsgmsg', msg) const that = this; that.msg = msg - const strachArr=msg.split(',') + const strachArr = msg.split(',') if (strachArr[0] != '#DN_GD') { return } this.signArr = strachArr - for (let i = 0;i <= 12; i++) { + for (let i = 0; i <= 12; i++) { this.sjxhColum[i].value = this.signArr[i+2] } @@ -417,7 +366,7 @@ export default struct SignDisplayCom { this.sjxhColum[15].value = this.signArr[19] this.sjxhColum[16].value = this.signArr[20] this.sjxhColum[17].value = this.signArr[23] //车速 - this.sjxhColum[18].value=this.signArr[28] + this.sjxhColum[18].value = this.signArr[28] this.sjxhColum[19].value = this.signArr[29] this.sjxhColum[20].value = this.signArr[30] this.sjxhColum[21].value = this.signArr[15] //NC @@ -433,11 +382,11 @@ export default struct SignDisplayCom { this.sjxhColum[31].value = this.signArr[33] this.sjxhColum[32].value = this.signArr[34] this.sjxhColum[33].value = this.signArr[35] - for (let i = 34;i <= 46; i++) { + for (let i = 34; i <= 46; i++) { this.sjxhColum[i].value = this.signArr[i+2] } - let t=0 - for (let i = 83;i <= 97; i++) { + let t = 0 + for (let i = 83; i <= 97; i++) { this.GPSColum[t].value = this.signArr[i] t++ } @@ -445,11 +394,11 @@ export default struct SignDisplayCom { that.signArr = JSON.parse(JSON.stringify((this.signArr))) that.GPSColum = JSON.parse(JSON.stringify((this.GPSColum))) } + outClick() { } saveLog() { } - } diff --git a/entry/src/main/ets/pages/compontents/judge/AmplifyPopup.ets b/entry/src/main/ets/pages/compontents/judge/AmplifyPopup.ets new file mode 100644 index 00000000..c22fe3aa --- /dev/null +++ b/entry/src/main/ets/pages/compontents/judge/AmplifyPopup.ets @@ -0,0 +1,43 @@ +import { AmplifyArr, AmplifyImages } from '../../../mock' + +const folder = 'judge/km3/amplify/' + + +@Component +export default struct EndPopup { + private amplifyImgIndex: number = 0 + + constructor() { + super() + } + + build() { + Column() { + Column() { + + } + .width(530) + .height(386) + .backgroundImage($rawfile(`${folder}${AmplifyImages[this.amplifyImgIndex]}`)) + .backgroundImageSize({ width: '100%', height: '100%' }) + .position({ y: '25%', x: '37%' }) + .justifyContent(FlexAlign.Center) + .onClick((e: ClickEvent) => { + this.confirmAmplify(AmplifyArr[this.amplifyImgIndex]) + }) + + } + .width('100%') + .height('100%') + .position({ y: 0 }) + .backgroundColor('rgba(0,0,0,0.9)') + .onClick(() => { + this.closeAmplifyPop() + }) + } + + private closeAmplifyPop: Function = () => { + } + private confirmAmplify: Function = () => { + } +} diff --git a/entry/src/main/ets/pages/compontents/judge/deduction-popup.ets b/entry/src/main/ets/pages/compontents/judge/DeductionPopup.ets similarity index 100% rename from entry/src/main/ets/pages/compontents/judge/deduction-popup.ets rename to entry/src/main/ets/pages/compontents/judge/DeductionPopup.ets diff --git a/entry/src/main/ets/pages/compontents/judge/end-popup.ets b/entry/src/main/ets/pages/compontents/judge/EndPopup.ets similarity index 100% rename from entry/src/main/ets/pages/compontents/judge/end-popup.ets rename to entry/src/main/ets/pages/compontents/judge/EndPopup.ets diff --git a/entry/src/main/ets/pages/compontents/judge/loading-popup.ets b/entry/src/main/ets/pages/compontents/judge/LoadingPopup.ets similarity index 100% rename from entry/src/main/ets/pages/compontents/judge/loading-popup.ets rename to entry/src/main/ets/pages/compontents/judge/LoadingPopup.ets diff --git a/entry/src/main/ets/pages/compontents/judge/real-time.ets b/entry/src/main/ets/pages/compontents/judge/RealTime.ets similarity index 69% rename from entry/src/main/ets/pages/compontents/judge/real-time.ets rename to entry/src/main/ets/pages/compontents/judge/RealTime.ets index 397ecee2..9a69e4b2 100644 --- a/entry/src/main/ets/pages/compontents/judge/real-time.ets +++ b/entry/src/main/ets/pages/compontents/judge/RealTime.ets @@ -1,34 +1,27 @@ -// @ts-nocheck -import hilog from '@ohos.hilog'; import apiJudgeSdk from 'libJudgeSdk.so'; -// import apiJudgeSdk from '@ohos.judgesdk'; - -import Judge from '../../judgeSDK/utils/judge-real' -import {Project,ProjectObj,MarkRule} from '../../judgeSDK/api/judgeSDK.d' +import Judge from '../../judgeSDK/utils/judge-real'; +import { MarkRule, Project, ProjectObj } from '../../judgeSDK/api/judgeSDK.d'; import common from '@ohos.app.ability.common'; @Component -struct RealTime { - constructor() { - super() - } - - private height:number = 0 - private width:number = 0 - +export default struct RealTime { @State message: string = '开始绘制' - // 控制XComponent组件的创建和销毁 @State draw: boolean = false //监管接口序列号 - @State serialNumber:number = 0 - + @State serialNumber: number = 0 //模拟考试项目 - @State projects:Project[] = [] - @State projectsObj:ProjectObj = {} - @State markRuleListObj:MarkRule ={} + @State projects: Project[] = [] + @State projectsObj: ProjectObj = {} + @State markRuleListObj: MarkRule = {} + private widthNumber: string | number | Resource = 0 + private heightNumber: string | number | Resource = 0 private context = getContext(this) as common.UIAbilityContext; + constructor() { + super() + } + // xcomponentController: XComponentController = new XComponentController() build() { @@ -41,8 +34,8 @@ struct RealTime { libraryname: 'JudgeSdk' // libraryname: 'judgesdk' }) - .width(this.width) - .height(this.height) + .width(this.widthNumber) + .height(this.heightNumber) .onLoad(() => { apiJudgeSdk.examJudgeMapSetDrawing(true); //停止绘制地图轨迹,false:表示结束绘制 }) @@ -52,9 +45,10 @@ struct RealTime { clearInterval(globalThis.realTimer) }) } else { - Column() {} - .width(this.width) - .height(this.height) + Column() { + } + .width(this.widthNumber) + .height(this.heightNumber) } } .width('100%') @@ -72,7 +66,5 @@ struct RealTime { //apiJudgeSdk.stopRender(); } - } -export default RealTime diff --git a/entry/src/main/ets/pages/compontents/judge/amplify-popup.ets b/entry/src/main/ets/pages/compontents/judge/amplify-popup.ets deleted file mode 100644 index 264e03be..00000000 --- a/entry/src/main/ets/pages/compontents/judge/amplify-popup.ets +++ /dev/null @@ -1,37 +0,0 @@ -const folder = 'judge/km3/amplify/' -const amplifyImgs = [ - 'km_zxB.png','km_hcB.png', - 'km_bdB.png', - 'km_ccB.png','km_dtB.png','km_tcB.png', -] -const amplifyArrs = [ - {name:'直线',projectCode:'3',projectCodeCenter:'40300'}, - {name:'会车',projectCode:'9',projectCodeCenter:'41300'}, - {name:'变道',projectCode:'4',projectCodeCenter:'40500'}, - {name:'超车',projectCode:'10',projectCodeCenter:'41400'}, - {name:'掉头',projectCode:'12',projectCodeCenter:'41500'}, - {name:'停车',projectCode:'11',projectCodeCenter:'40600'}, -] - -@Component -export default struct EndPopup { - constructor() { - super() - } - private amplifyImgIndex:number = 0 - private closeAmplifyPop:Function = ()=>{} - private confirmAmplify:Function = ()=>{} - - build(){ - Column(){ - Column(){ - - }.width(530).height(386).backgroundImage($rawfile(`${folder}${amplifyImgs[this.amplifyImgIndex]}`)).backgroundImageSize({width:'100%',height:'100%'}).position({y:'25%',x:'37%'}).justifyContent(FlexAlign.Center) - .onClick((e:ClickEvent)=>{ - this.confirmAmplify(amplifyArrs[this.amplifyImgIndex]) - }) - - }.width('100%').height('100%').position({y:0}).backgroundColor('rgba(0,0,0,0.9)') - .onClick(()=>{this.closeAmplifyPop()}) - } -}