diff --git a/build-profile.json5 b/build-profile.json5 index a84a149..24f59df 100644 --- a/build-profile.json5 +++ b/build-profile.json5 @@ -5,9 +5,9 @@ "name": "default", "material": { "certpath": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.cer", - "storePassword": "0000001B8E9DDF652EF92FEE3FEA48705C778A1477A239E20DF0355D7EB87B3674868AFF199387F065F4FF", + "storePassword": "0000001BF61E21FB976B39E89B0A4C96C700B26D123A135B19960F46FB1AD287C476CBC184970AADEAE427", "keyAlias": "debugKey", - "keyPassword": "0000001B5154009358EC6DAB38F99A25239BD735D77777640200E7EF810C1330F87F76DAA287AAC62AED71", + "keyPassword": "0000001B1780EFE659F33C63102C1B0B4C88158F0C099302DEFA08FD4D797DA70DF2B7EE539D79F697B31D", "profile": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.p7b", "signAlg": "SHA256withECDSA", "storeFile": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.p12" @@ -18,13 +18,9 @@ { "name": "default", "signingConfig": "default", - "compatibleSdkVersion": "4.0.0(10)", - "runtimeOS": "HarmonyOS", - "buildOption": { - "strictMode": { - "caseSensitiveCheck": true, - } - } + "compatibleSdkVersion": 10, + "compileSdkVersion": 10, + "runtimeOS": "OpenHarmony" } ], "buildModeSet": [ diff --git a/entry/oh-package-lock.json5 b/entry/oh-package-lock.json5 index 82ec2e0..3f4c904 100644 --- a/entry/oh-package-lock.json5 +++ b/entry/oh-package-lock.json5 @@ -1,18 +1,6 @@ { - "meta": { - "stableOrder": true - }, - "lockfileVersion": 3, + "lockfileVersion": 2, "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", - "specifiers": { - "libjudgesdk.so@src/cpp/libJudgeSdk": "libjudgesdk.so@src/cpp/libJudgeSdk" - }, - "packages": { - "libjudgesdk.so@src/cpp/libJudgeSdk": { - "name": "libjudgesdk.so", - "version": "1.0.0", - "resolved": "src/cpp/libJudgeSdk", - "registryType": "local" - } - } + "specifiers": {}, + "packages": {} } \ 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 0136686..2283ff4 100644 --- a/entry/src/main/ets/pages/Judge.ets +++ b/entry/src/main/ets/pages/Judge.ets @@ -1,1466 +1,1466 @@ -// import router from '@ohos.router'; -// import Prompt from '@system.prompt'; -// import common from '@ohos.app.ability.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//judgeCommon'; -// import { uploadExamMileage } from '../api/judge'; -// import DwztErrorPopup from './compontents/judge/DwztErrorPopup'; -// import MsgPopup from './compontents/judge/MsgPopup'; -// import { -// CARINFO, -// CDSBInfo, -// LANE, -// MAPITEMPOINTITEM, -// MAPPOINT, -// MarkRule, -// Project, SYSTEMPARMARR -// } from './judgeSDK/api/judgeSDK.d'; -// -// import { JudgeConfig } from './judgeSDK/utils/judgeConfig'; -// -// import SignDisplayCom from './compontents/SignDisplayCom'; -// import { -// AmplifyItem, -// CarInfoType, -// CDSBInfos, DefaultJudgeConfigObj, -// ES_CARINFOType, -// ItemInfos, -// JudgeBeginObj, -// JudgeCallBacData, -// JudgeInitObj, -// JudgeUI, MA_CDSBINFOType, -// MA_ITEMINFOType, -// MA_MAP_POINT_ITEMType, -// MA_MAP_POINTType, MA_SYSTEMPARMType, -// MarkRules, -// MASYSSETTableType, ProjectInfo, -// ProjectInfos, -// ProjectRoads, -// RouteParamsType, -// SYSSET, -// SyssetConfig, User -// } from '../model'; -// import { GetSyncData } from '../utils/table/Operation'; -// import dayTs from '../utils/Date'; -// import { GetCurrentTime } from '../utils/Common'; -// import { chunkArr } from './judgeSDK/utils/Common'; -// import FileUtils from '../utils/FileUtils'; -// -// -// @Entry -// @Component -// struct Index { -// scroller: Scroller = new Scroller() -// //页面通用字体大小 -// @State wayno: number = 0 -// @State FONTSIZE: number = 30 -// @State BIGFONTSIZE: number = 32 -// //结束考试弹窗 -// @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 startExamTime: string = '' -// //科目类型 -// @State examSubject: string = '3'; -// @State ddxkTime: number = 0; -// @State ddxkKsxmArr: string[] = [] -// @State ddxkKfArr: string[] = [] -// @State xmmcStr: string = '' -// @State carztStr: string = '' -// @State kfArr: MarkRule[] = [] -// @State name: string = '' -// @State idCard: string = '' -// @State singlePlay: boolean = false; -// @State totalScore: number = 100 -// //模拟考试项目 -// @State projects: ProjectInfo[] = [] -// @State projectsObj: ProjectInfos = {} -// @State projectsCenterObj: ProjectInfos = {} -// @State markRuleListObj: MarkRules = {} -// @State cdsbInfoObj?: CDSBInfos = {} -// @State itemInfoObj?: ItemInfos = {} -// @State timer: number = 0 -// @State judgeConfig: SyssetConfig[] = [] -// @State judgeConfigObj: DefaultJudgeConfigObj = defaultJudgeConfigObj -// //流水号 -// @State lsh: string = '' -// @State kszp: string = '' -// @State ksdd: string = '' -// @State kssycs: string = '' -// @State ksxl: string = '' -// @State kslx: string = '' -// //监管线路代码 -// @State xldm: string = '' -// //监管接口序列号 -// @State serialNumber: string = '' -// @State syssetParam623: boolean = false; -// @State syssetParam211: string = ''; -// @State carType: string = '' -// @State carName: string = '' -// @State isDeductedPopShow: boolean = false -// @State isAmplifyPopShow: boolean = false -// @State amplifiedImgIndex: number = 0 -// judge: Judge -// //行驶距离 -// @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 carinfoArr: CARINFO[] = [] -// @State mapPointArr: MAPPOINT[] = [] -// //手动项目是否在进行中 -// @State isManualProjectIn: boolean = false; -// //项目是否进行中 -// @State isProjectIn: boolean = false; -// //正在进行的项目代码 -// @State currentXmdm?: number = 0 -// // 必考项目除靠边停车是否全部完成 -// @State isRequiredProjectsEnd: boolean = false; -// @State isAllProjectsEnd: boolean = false; -// @State draw: boolean = false; -// @State lane: LANE = { road: '', num: 0, count: 0 } -// //定位差分状态时候正常 -// @State isDwztRight: boolean = true; -// @State defaultTabIndex: number = 0; -// public kfArrScroller: Scroller = new Scroller() -// //档位 -// @State dw: string = '' -// //速度 -// @State sd: string = '' -// @State mileageTimer: number = 0; -// @State passingScore: number = 80 -// @State dwztErrorVisible: boolean = false; -// @State popTimer: number = 0; -// @State carlist: string = '' -// @State errorMsg: string = '' -// @State carInfo: CarInfoType = {} -// @State isErrorMsgEnd: boolean = false -// @State disConnectErrorOpen: boolean = false -// public context = getContext(this) as common.UIAbilityContext; -// -// async aboutToDisappear() { -// clearInterval(this.mileageTimer) -// } -// -// async aboutToAppear() { -// const time = GetCurrentTime() -// this.carInfo = AppStorage.get('carInfo') -// this.singlePlay = AppStorage.get('singlePlay') -// this.startTime = time.split(' ')[1] -// this.startFullTime = GetCurrentTime(1); -// // this.startHourTime = await getCurrentHourTime() -// this.startTime = dayTs().format("HHmmssSSS") -// this.startExamTime = time -// setInterval(async () => { -// this.time = GetCurrentTime(); -// this.examTime += 1; -// }, 1000); -// //初始化数据库表 -// await this.initDb() -// //断点续考 -// await this.goDdxkItems() -// //初始化评判 -// const judge = await this.initJudge(); -// this.judge = judge -// } -// -// //初始化相关数据库表 -// async initDb() { -// this.examSubject = this.carInfo.examSubject; -// // const { isTrajectoryOpen, trajectoryPath } = judgeConfig -// await this.initStudent(); -// await this.initCar(); -// -// //是否开启轨迹回放模式 -// if (JudgeConfig.isTrajectoryOpen) { -// this.initTrajectoryParam(JudgeConfig.trajectoryPath) -// } else { -// await this.initSystemParam() -// await this.initMarkRules(); -// await this.initSysset(); -// } -// await this.initCDSBInfo() -// await this.initItemInfo() -// -// // 科目三新增读取表数据 -// if (this.examSubject == '3') { -// await this.initMapPoint() -// await this.initMapPointItem() -// //定时上传考试里程 -// // let mileageTimer = setInterval(()=>{ -// // this.uploadMileage() -// // },5000) -// // this.mileageTimer = mileageTimer -// } -// } -// -// // 查询考车信息 -// async initCar() { -// // const result = await getSyncData('ES_CARINFO') -// const result = await GetSyncData("ES_CARINFO") -// const carInfo = result[0] || {}; -// this.carName = decodeURI(carInfo.carclass) -// this.carType = carInfo.kscx -// this.carinfoArr.push({ -// CARID: carInfo.carid, -// IPADDR: '', -// CARCLASS: decodeURI(carInfo.carclass), -// KSCX: carInfo.kscx, -// // CARNAME: decodeURI(carInfo.carname), -// CARNAME: "", -// FLAG: carInfo.flag, -// BK1: carInfo.bk1, -// BK2: carInfo.bk2, -// }) -// console.info('surenjun =>carinfoArrr', JSON.stringify(this.carinfoArr)) -// } -// -// // 获取考生信息 -// async initStudent() { -// const students = await GetSyncData('USER') -// const stuInfo = students[0]; -// this.name = stuInfo.xm || '测试考生'; -// this.idCard = stuInfo.sfzmhm || '01234567891010'; -// this.lsh = this.singlePlay ? '0000000000000' : stuInfo.lsh; -// this.kszp = stuInfo.kszp; -// this.ksdd = stuInfo.ksdd; -// this.kssycs = stuInfo.kssycs; -// this.ksxl = stuInfo.ksxl; -// this.wayno = Number(stuInfo.ksxl); -// this.xldm = stuInfo.xldm; -// this.kslx = stuInfo.kslx; -// } -// -// // 获取扣分代码信息 -// async initMarkRules(markRules ?: MarkRule[]) { -// const markRuleParams = markRules || await GetSyncData('MA_MARKRULE') -// -// markRuleParams.forEach(mark => { -// const tempObj: MarkRule = { -// 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 -// } -// -// //筛选出人工评判的扣分 -// if (Number(tempObj.markserial) > 100 && Number(tempObj.markserial) < 200) { -// this.manualMarkRules.push(tempObj) -// } -// tempObj.markserial = mark.markserial -// Reflect.set(this.markRuleListObj, `${mark.itemno}_${mark.markserial}`, tempObj) -// }) -// } -// -// // 考试项目是否全部完成 -// -// // 获取sysset表信息 -// async initSysset(sysset?: SYSSET[]) { -// const syssetParams: SYSSET[] | MASYSSETTableType[] = sysset || await GetSyncData('MA_SYSSET') -// const serialNumberArr = (syssetParams as SYSSET[]).filter(sys => sys.v_no === '901'); -// console.info('surenjun serialNumberArr' + JSON.stringify(serialNumberArr)) -// this.serialNumber = (serialNumberArr[0] && serialNumberArr[0].v_value) || ''; -// // const { isTrajectoryOpen } = judgeConfig -// const syssetJudgeConfigArr: SyssetConfig[] = [] -// -// syssetParams.forEach((sys: SYSSET) => { -// if (JudgeConfig.isTrajectoryOpen) { -// sys.v_no = String(sys.key); -// sys.v_name = sys.name; -// sys.v_value = sys.value -// } -// -// // const { v_no, v_value } = sys; -// const v_no_num = Number(sys.v_no) -// const value = decodeURIComponent(sys.v_value) -// if (v_no_num >= 10 && v_no_num <= 900) { -// const name = -// syssetJudgeConfigArr.push({ -// key: v_no_num, value: value, -// name: decodeURI(sys.v_name) -// }) -// } -// -// //623 考试中是否可以查看轨迹画面(0-否+1-是) -// if (sys.v_no == '623') { -// this.syssetParam623 = value == '1' ? true : false -// } -// -// //科目三应行驶距离参数 -// if (sys.v_no == '303') { -// this.examMileage = this.examMileage == '0' ? (sys.v_value + '') : this.examMileage; -// } -// -// // //地点版本参数 -// // if (sys.v_no == '211') { -// // this.syssetParam211 = decodeURIComponent(sys.v_value + '') -// // } -// -// //364 绕车一周评判时机(1-开始考试后判 2-开始考试前判) -// if (sys.v_no == '364' && sys.v_value == "2") { -// let currentParams: RouteParamsType = router.getParams() as RouteParamsType; -// // const { sczb, kfdm } = currentParams; -// const kfdm = currentParams.kfdm; -// currentParams.kfdm.forEach(kf => { -// // const { xmdm, kfdm } = kf -// -// const currentKf: MarkRule = Reflect.get(this.markRuleListObj, `${kf.xmdm}_${kf.kfdm}`) -// const currentProject: ProjectInfo = Reflect.get(this.projectsObj, kf.xmdm) -// -// // 过滤考前绕车一周上车准备的扣分 -// if (currentParams.sczb == "1" && kf.xmdm == 1) { -// return -// } -// -// this.kfArr.push({ -// //扣分项目名称 -// xmmcStr: currentProject.name, -// xmdm: kf.xmdm, -// desc: currentKf.markshow, -// score: currentKf.markreal, -// markcatalog: currentKf.markcatalog, -// markserial: currentKf.markserial, -// kfxh: currentKf.kfxh -// }) -// this.totalScore += currentKf.markreal * 1; -// }) -// const project_1 = Reflect.get(this.projectsObj, 1) -// project_1.type = kfdm.length ? '4' : '3'; -// Reflect.set(this.projectsObj, 1, project_1) -// -// } -// Reflect.set(this.judgeConfigObj, sys.v_no, value) -// }); -// this.judgeConfig = syssetJudgeConfigArr; -// } -// -// //初始化systemParam表 -// async initSystemParam(sysParam?: MA_SYSTEMPARMType[]) { -// let systemParms: MA_SYSTEMPARMType[] = sysParam || await GetSyncData('MA_SYSTEMPARM') -// -// let currentParams: RouteParamsType = router.getParams() as RouteParamsType; -// // const { carName, carType, examSubject } = this; -// //小车车型列表 -// const sCarTypes = ['C1', 'C2', 'C5'] -// if (this.singlePlay) { -// this.wayno = Number(currentParams.wayno) || 1; -// } -// //真实监管下发的项目 -// let kStringArr: string[] = (currentParams.kString?.split(',') || []).filter(item => item); -// console.info('surenjun kStringArr', JSON.stringify(kStringArr)) -// let isInExam = kStringArr.length > 0; -// // const { isTrajectoryOpen } = judgeConfig -// let carNo = '', allItems: string[] = []; -// systemParms.forEach((systemParm) => { -// if (JudgeConfig.isTrajectoryOpen) { -// systemParm.no1 = systemParm.NO1 + ''; -// systemParm.no2 = systemParm.NO2 + ''; -// systemParm.no3 = systemParm.NO3 + ''; -// systemParm.txt1 = systemParm.TXT1; -// systemParm.txt2 = systemParm.TXT2; -// systemParm.txt3 = systemParm.TXT3; -// } -// // const { no1, no2, no3, } = systemParm; -// const txt1 = decodeURI(systemParm.txt1) -// const txt2 = decodeURI(systemParm.txt2) -// -// const no1 = systemParm.no1; -// const no2 = systemParm.no2; -// const no3 = systemParm.no3; -// -// //获取当前考车的no2 -// if (systemParm.no1 == "3" && systemParm.no3 == "1") { -// if (txt1 === this.carName) { -// carNo = systemParm.no2 -// this.carlist = carNo -// } -// } -// -// //获取及格分数线 -// if (systemParm.no1 == "3" && systemParm.no3 == "3" && carNo === systemParm.no2) { -// this.passingScore = Number(txt1) || 0; -// } -// //根据车型获取应行驶里程数 -// if (systemParm.no1 == "3" && systemParm.no3 == "15" && carNo === systemParm.no2) { -// this.examMileage = ((decodeURI(systemParm.txt1)) || '').split('^')[0]; -// } -// //获取当前考车的考试项目 -// if (carNo !== '' && systemParm.no1 == "3" && systemParm.no2 == carNo && systemParm.no3 == "10") { -// allItems = decodeURIComponent(systemParm.txt1).split(',').filter(txt => txt !== '') -// console.info('surenjun', JSON.stringify(allItems)) -// } -// if ( -// //科目二获取项目 -// (this.examSubject == "2" && allItems.length && systemParm.no1 == '6' && allItems.includes(systemParm.no2)) -// || -// //科目三获取项目 -// (this.examSubject == "3" && systemParm.no1 == "6") -// ) { -// const name = decodeURI(systemParm.txt1) -// //小车过滤掉 夜间模拟行驶 -// if (sCarTypes.includes(this.carType) && name === '夜间行驶') { -// return -// } -// const currentProject: ProjectInfo = { -// name, -// abbreviation: decodeURI(systemParm.txt3), -// projectCode: no2, -// projectCodeCenter: txt2, -// //是否是必考 加减档设置成非必考 -// isRequired: no2 == '14' ? false : allItems.includes(no2 + ''), -// //是否考过了 -// isEnd: false, -// //项目开始数据是否上传过 -// isUpload: false, -// } -// const no2Num = Number(systemParm.no2) -// //真实监管下发考试项目 -// if (isInExam && !(kStringArr.includes(txt2) || kStringArr.includes(no2 + ''))) { -// console.info('surenjun =>', txt2) -// console.info('surenjun => no2', systemParm.no2) -// currentProject.type = '3' -// currentProject.isUpload = true -// currentProject.isEnd = true -// this.ddxkKsxmArr.push(txt2) -// } -// Reflect.set(this.projectsObj, no2Num, currentProject) -// Reflect.set(this.projectsCenterObj, txt2, currentProject) -// this.projects.push(currentProject); -// } -// -// this.systemparmArr.push({ -// 'NO1': Number(systemParm.no1), -// 'NO2': Number(systemParm.no2), -// 'NO3': Number(systemParm.no3), -// 'TXT1': decodeURIComponent(systemParm.txt1), -// 'TXT2': decodeURIComponent(systemParm.txt2), -// 'TXT3': decodeURIComponent(systemParm.txt3), -// }) -// }) -// const projects = this.projects; -// console.info('surenjun', JSON.stringify(this.ddxkKsxmArr)) -// -// if (!projects.length) { -// Prompt.showToast({ -// message: '读取数据库信息失败,请重新联网更新!', -// duration: 8000 -// }); -// router.back(); -// } -// } -// -// // 获取场地设备信息 -// async initCDSBInfo() { -// const cdsbParams: MA_CDSBINFOType[] = await GetSyncData('MA_CDSBINFO') -// //只记录考试项目的模型 -// const projectsObj = this.projectsObj -// cdsbParams.forEach((cdsb) => { -// const key = decodeURI(cdsb.itemsno) -// const newKey = key.split('~').join('_') -// const xmdm = Number(key.split('~')[0]) -// const currentProject: ProjectInfo = Reflect.get(projectsObj, xmdm) -// if (currentProject) { -// const cdsbInfo: CDSBInfo = { -// kdid: cdsb.kdid, -// sbbh: cdsb.sbbh, -// sbbm: cdsb.sbbm, -// itemsno: key, -// modelKey: newKey, -// xmdm, -// xmxh: key.split('~')[1], -// } -// Reflect.set(this.cdsbInfoObj, newKey, cdsbInfo) -// } -// }) -// } -// -// // 获取itemInfo表信息 -// async initItemInfo() { -// const infoParams: MA_ITEMINFOType[] = await GetSyncData('MA_ITEMINFO'); -// const carlist = this.carlist; -// const projectsObj = this.projectsObj -// infoParams.forEach((info) => { -// const key = decodeURI(info.itemsno); -// const carlistArr = info.carlist === '' ? [] : (decodeURI(info.carlist).split(',') || []); -// const newKey = key.split('~').join('_') -// const xmdm = Number(key.split('~')[0]) -// const currentProject: ProjectInfo = Reflect.get(projectsObj, xmdm) -// if (currentProject && (carlistArr.length == 0 || carlistArr.includes(carlist))) { -// Reflect.set(this.itemInfoObj, newKey, { -// modelKey: newKey, -// xmdm, -// xmxh: key.split('~')[1], -// }) -// } -// }) -// } -// -// // 评判相关初始化 -// async initJudge() { -// const JUDGEUI: JudgeUI = this; -// const judge = new Judge(JUDGEUI); -// // await judge.init() -// await judge.onJudgeFn(async (judgeData: JudgeCallBacData) => { -// // const { xmmcStr, carztStr, kfArr } = judgeData; -// this.xmmcStr = judgeData.xmmcStr; -// this.carztStr = judgeData.carztStr; -// this.kfArr = judgeData.kfArr; -// }); -// return judge -// } -// -// // 断点续考判断 -// async goDdxkItems() { -// const judgeConfigObj = this.judgeConfigObj -// -// const config_432: string = Reflect.get(judgeConfigObj, '432') -// //科目二强制开始断点续考 -// if (config_432 != '0' || this.examSubject == "2") { -// //断点续考判断 -// let currentParams: RouteParamsType = router.getParams() as RouteParamsType; -// const examItems: string = currentParams?.examItems; -// // 2024-01-03 16:29:26;0;20300,;2,4^2,4;null; -// if (examItems !== '' && examItems !== undefined) { -// console.info('surenjun examItems=>', JSON.stringify(examItems)) -// const examItemsArrs = examItems.split(';'); -// const startTime = examItemsArrs[0] -// const ddxkKsxmArr = examItemsArrs[2]?.split(',').filter(item => item) || [] -// const ddxkKfArr = examItemsArrs[3]?.split('^').filter(item => item) || [] -// if (config_432 == '2' || this.examSubject == "2") { -// //TODO 带项目带里程 -// if (ddxkKsxmArr?.length) { -// //断点续考 -// ddxkKsxmArr.forEach(xmdm => { -// const currentProjectCenter: Project = Reflect.get(this.projectsCenterObj, xmdm) -// const projectCode = currentProjectCenter.projectCode -// const currentProject: Project = Reflect.get(this.projectsObj, projectCode) -// if (currentProject) { -// currentProject.type = '3' -// currentProject.isUpload = true -// currentProject.isEnd = true -// Reflect.set(this.projectsObj, projectCode, currentProject) -// } -// }) -// this.ddxkKsxmArr = ddxkKsxmArr -// } -// } -// //扣分续考 -// ddxkKfArr.forEach((kf) => { -// const xmdm = kf.split(',')[0] -// const kfdm = kf.split(',')[1] -// const currentKf: MarkRule = Reflect.get(this.markRuleListObj, `${xmdm}_${kfdm}`) -// const currentProject: ProjectInfo = Reflect.get(this.projectsObj, xmdm) || { name: '通用评判' } -// -// if (currentProject) { -// currentProject.type = '4' -// Reflect.set(this.projectsObj, xmdm, currentProject) -// } -// this.kfArr.push({ -// //扣分项目名称 -// xmmcStr: currentProject.name, -// desc: currentKf.markshow, -// score: currentKf.markreal, -// markcatalog: currentKf.markcatalog, -// markserial: currentKf.markserial, -// kfxh: currentKf.kfxh -// }) -// this.totalScore += currentKf.markreal * 1; -// }) -// this.ddxkKfArr = ddxkKfArr -// this.ddxkTime = Date.parse(startTime); -// this.isDdxk = true -// } -// } -// -// } -// -// // 初始化mapPoint表 -// async initMapPoint() { -// const pointParams: MA_MAP_POINTType[] = await GetSyncData('MA_MAP_POINT') -// pointParams.forEach(item => { -// -// this.mapPointArr.push({ -// point_no: Number(item.point_no), -// gps_e: Number(item.gps_e), -// gps_n: Number(item.gps_n), -// point_no_f: Number(item.point_no_f), -// point_type: Number(item.point_type), -// road_code: item.road_code, -// gps_e_Location: Number(item.gps_e_location), -// gps_n_Location: Number(item.gps_n_location), -// f_gps_e: Number(item.f_gps_e), -// f_gps_n: Number(item.f_gps_n), -// passed: Number(item.passed) -// }) -// }) -// } -// -// // 初始化mapPointItem表 -// async initMapPointItem() { -// const pointItemPoints: MA_MAP_POINT_ITEMType[] = await GetSyncData('MA_MAP_POINT_ITEM'); -// pointItemPoints.forEach(item => { -// // const { point_no, itemno, itemno1, subname } = itemPoint -// this.mapPointItemArr.push({ -// point_no: Number(item.point_no), -// itemno: Number(item.itemno), -// itemno1: Number(item.itemno1), -// subname: item.subname -// }) -// }) -// } -// -// // 初始化本地systemparam表、markrule表 -// async initTrajectoryParam(trajectoryPath: string) { -// const isTrajectoryOpen = JudgeConfig.isTrajectoryOpen -// //轨迹回放读取 systemparam表、markrule表 -// const fileUtil = new FileUtils(this.context); -// const folderPath = await fileUtil.initFolder(trajectoryPath); -// const str = await fileUtil.readFile(folderPath); -// const strArr = str.split('\n'); -// const initData = strArr[0] -// const beginData = strArr[1] -// -// const initDataObj: JudgeInitObj = JSON.parse(initData) -// const beginDataObj: JudgeBeginObj = JSON.parse(beginData) -// -// const examSubject = this.carInfo.examSubject; -// this.examSubject = (isTrajectoryOpen ? (initDataObj.kskm) : examSubject) + ''; -// this.carInfo.examSubject = this.examSubject -// this.singlePlay = beginDataObj.exam == 0; -// this.carName = initDataObj.name; -// await this.initSystemParam(initDataObj.systemparm) -// await this.initMarkRules(initDataObj.mark); -// await this.initSysset(initDataObj.sysset); -// } -// -// // 上传考试里程 -// async uploadMileage() { -// if (!this.singlePlay) { -// const carInfo = this.carInfo -// -// await uploadExamMileage({ -// carId: carInfo.carId, -// examinationRoomId: carInfo.examinationRoomId, -// lsh: this.lsh, -// kskssj: this.startExamTime, -// kslc: this.jl -// }) -// } -// } -// -// build() { -// Column() { -// Row() { -// Row() { -// Image($rawfile('judge/signal_logoS.png')).width(120) -// Text(this.time).fontColor('#CCB48F').fontSize(34).padding({ left: 10, right: 5 }) -// Image($rawfile(this.isDwztRight ? 'judge/xh_green.png' : 'judge/xh_red.png')).width(50) -// }.padding({ left: 20 }) -// -// Row() { -// Text(`当前项目:${this.xmmcStr || '无'} `).fontColor('#E5CCA1').fontSize(34) -// } -// } -// .width('100%') -// .height('96') -// .backgroundColor('#001A33') -// .padding({ left: 15, right: 15 }) -// .justifyContent(FlexAlign.SpaceBetween) -// .alignItems(VerticalAlign.Center) -// -// Row() { -// Row() { -// Column() { -// Row() { -// Column() { -// Row() { -// Text('考生姓名:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) -// Text(this.name).fontColor('#FFF').fontSize(this.FONTSIZE) -// }.margin({ bottom: 10 }) -// -// Row() { -// Text('开始时间:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) -// Text(this.startTime).fontColor('#FFF').fontSize(this.FONTSIZE) -// }.margin({ bottom: 10 }) -// -// if (this.examSubject == "3") { -// Row() { -// Text('考试路线:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) -// Text(`线路${this.wayno || 3}`).fontColor('#FFAD33').fontSize(this.FONTSIZE) -// } -// } -// -// }.width('45%').alignItems(HorizontalAlign.Start) -// -// Column() { -// Row() { -// Text('身份证号:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) -// Text(this.idCard).fontColor('#FFF').fontSize(this.FONTSIZE) -// }.margin({ bottom: 10 }) -// -// Row() { -// Text('考试用时:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) -// // Text(formatTime(this.examTime)).fontColor('#FFF').fontSize(this.FONTSIZE) -// Text(dayTs(this.examTime).format("YYYY-MM-DD HH:mm:ss")).fontColor('#FFF').fontSize(this.FONTSIZE) -// }.margin({ bottom: 10 }) -// -// if (this.examSubject == "3") { -// Row() { -// if (Reflect.get(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) -// } -// } -// -// }.alignItems(HorizontalAlign.Start) -// -// }.width('100%') -// -// Column() { -// Row() { -// Text(this.carztStr).fontColor('#FFA500').fontSize(this.FONTSIZE) -// if (Reflect.get(this.judgeConfigObj, '342') == '0') { -// Text(`${this.dw}挡`).fontColor('#FFA500').fontSize(this.FONTSIZE).padding({ left: 15, right: 15 }) -// Text(`${this.sd}km/h`).fontColor('#FFA500').fontSize(this.FONTSIZE) -// } -// }.height(40) -// -// Row() { -// Flex({ direction: FlexDirection.Column }) { -// if (this.kfArr.length) { -// List({ scroller: this.kfArrScroller }) { -// ForEach(this.kfArr, (item: MarkRule) => { -// ListItem() { -// Column() { -// Row() { -// Text(item.xmmcStr).fontSize(this.BIGFONTSIZE).fontColor('#FFF') -// Text(`${item.score}分`).fontSize(this.BIGFONTSIZE).fontColor('#FFF') -// } -// .width('100%') -// .backgroundColor('#38260B') -// .justifyContent(FlexAlign.SpaceBetween) -// .padding({ -// top: 12, -// bottom: 12, -// left: 8, -// right: 5 -// }) -// -// Text(item.desc + `(${item.markcatalog})`) -// .fontSize(this.BIGFONTSIZE) -// .fontColor('#E5CBA1') -// .margin({ -// top: 10, -// bottom: 8, -// left: 5, -// right: 5 -// }) -// }.margin({ top: 15 }).alignItems(HorizontalAlign.Start) -// -// }.margin({ bottom: 25 }) -// }) -// } -// .padding({ -// left: 15, -// right: 15, -// top: 30, -// bottom: 5 -// }) -// } else { -// Column() { -// Row() { -// Text('暂无扣分项').fontSize(this.BIGFONTSIZE).fontColor('#FFF') -// } -// .width('100%') -// .backgroundColor('#38260B') -// .justifyContent(FlexAlign.SpaceBetween) -// .padding({ -// top: 12, -// bottom: 12, -// left: 8, -// right: 3 -// }) -// }.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 -// }) -// -// //科目二 -// if (this.examSubject == "2") { -// Flex({ wrap: FlexWrap.Wrap, direction: FlexDirection.Row, justifyContent: FlexAlign.SpaceBetween }) { -// List({}) { -// ForEach(chunkArr(this.projects, 2), (item: [ProjectInfo, ProjectInfo]) => { -// 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(item[0])) -// } -// .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(item[1])) -// } -// .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 }) -// } -// //科目三 -// if (this.examSubject == '3') { -// Column() { -// Flex({ -// wrap: FlexWrap.Wrap, -// direction: FlexDirection.Row, -// justifyContent: FlexAlign.SpaceBetween -// }) { -// List({}) { -// ForEach(this.projects, (project: ProjectInfo) => { -// ListItem() { -// Text(project.name) { -// } -// .fontColor(this.getProjectColor(project)) -// .margin({ bottom: 2 }) -// .fontSize(24) -// }.margin({ bottom: 2 }) -// }) -// }.lanes(2).margin({ left: 25 }) -// } -// .width('100%') -// .height('57%') -// .backgroundImage($rawfile('judge/project_km3_bg.png'), ImageRepeat.NoRepeat) -// .backgroundImageSize({ width: '100%', height: '100%' }) -// .padding(30) -// .margin({ right: 5 }) -// -// if (this.projects.length) { -// Flex({ -// wrap: FlexWrap.Wrap, -// direction: FlexDirection.Row, -// justifyContent: FlexAlign.SpaceAround -// }) { -// List() { -// ForEach(this.artSubject3Projects, (item: string, index) => { -// ListItem() { -// } -// .backgroundImage( -// $rawfile( -// `judge/km3/${this.getIsExitManualProject(index) ? (this.getIsEndManualProject(index)) : -// (item + '_gray')}.png` -// ), ImageRepeat.NoRepeat) -// .backgroundImageSize({ width: '100%', height: '100%' }) -// .width(174) -// .height(118 * 0.95) -// .margin({ bottom: 8 }) -// .onClick(() => { -// // this.vocObj.playAudio({ -// // type: 1, -// // name: 'button_media.wav' -// // }) -// this.setManualProjectFn(index) -// }) -// }) -// }.lanes(3).margin({ left: 5, top: 12 }) -// } -// } -// -// } -// .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 }) -// }.height('100%').alignItems(HorizontalAlign.Start) -// }.width('75%').height('100%') -// -// Column() { -// Column() { -// Row() { -// Text(this.totalScore <= 0 ? '0' : this.totalScore + '').fontColor('#FFEECC').fontSize(55) -// Text('分').fontColor('#FFEECC').fontSize(30).padding({ top: 5 }) -// } -// .width(334) -// .height(120) -// .justifyContent(FlexAlign.Center) -// .alignItems(VerticalAlign.Center) -// .border({ width: 5, color: '#4D4136', radius: 30 }) -// .onClick(() => { -// // this.vocObj.playAudio({ -// // type: 1, -// // name: 'button_media.wav' -// // }) -// this.signDisplayComVisible = true -// }) -// -// Row() { -// Image(this.kszp).width('85%').height('85%') -// } -// .width(226) -// .height(312) -// .backgroundImage($rawfile('judge/photo_bg.png'), ImageRepeat.NoRepeat) -// .backgroundImageSize({ width: '100%', height: '100%' }) -// .justifyContent(FlexAlign.Center) -// .alignItems(VerticalAlign.Center) -// .margin({ top: 30, bottom: 15 }) -// } -// -// Column() { -// if (this.getIsManualKf()) { -// 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(() => { -// // this.vocObj.playAudio({ -// // type: 1, -// // name: 'button_media.wav' -// // }) -// this.isDeductedPopShow = true -// }) -// } -// -// 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 }) -// -// Row() { -// } -// .width(334) -// .height(100) -// .backgroundImage($rawfile('judge/anniu_nor.png'), ImageRepeat.NoRepeat) -// .backgroundImageSize({ width: '100%', height: '100%' }) -// .onClick(() => { -// // this.vocObj.playAudio({ -// // type: 1, -// // name: 'button_media.wav' -// // }) -// if (Reflect.get(this.judgeConfigObj, '353') == '0') { -// this.endPopupVisible = true -// } else { -// Prompt.showToast({ -// message: '车上不允许手动结束考试!', -// duration: 4000 -// }); -// } -// }) -// }.margin({ bottom: 30 }) -// -// } -// .width('25%') -// .height('100%') -// .justifyContent(FlexAlign.SpaceBetween) -// .alignItems(HorizontalAlign.Center) -// .margin({ bottom: 20 }) -// } -// .height('90%') -// .justifyContent(FlexAlign.Start) -// .padding({ -// top: 37, -// left: 60, -// bottom: 35, -// right: 60 -// }) -// -// -// //科目三人工扣分弹窗 -// if (this.isDeductedPopShow && this.examSubject == '3' && Reflect.get(this.judgeConfigObj, '342') == '0') { -// DeductedPopup({ -// defaultTabIndex: this.defaultTabIndex, -// currentItems: Reflect.ownKeys(this.projectsObj).map(projectKey => { -// const project: ProjectInfo = Reflect.get(this.projectsObj, projectKey) -// return project.type == '2' ? project.projectCode : undefined -// }).filter(project => project !== undefined), -// markRules: this.manualMarkRules, -// closePopup: () => { -// this.isDeductedPopShow = false; -// this.defaultTabIndex = 0; -// }, -// confirmMark: async (itemno: string, serial: string) => { -// clearTimeout(this.popTimer) -// this.popTimer = null -// this.popTimer = setTimeout(async () => { -// const judge = this.judge -// await judge.setJudgeMark(itemno, serial); -// this.isDeductedPopShow = false -// this.popTimer = null; -// }, 500) -// } -// }) -// } -// -// if (this.signDisplayComVisible) { -// Column() { -// SignDisplayCom({ -// showBack: false, -// scaleNum: 1.8, -// msgStr: this.judge.plcStr || '', -// showTrajectory: this.singlePlay ? true : (this.syssetParam623), -// }).margin({ top: 100 }) -// -// Row() { -// } -// .width(240) -// .height(240) -// .position({ x: '81%', y: 80 }) -// .backgroundImage($rawfile('judge/close.png'), ImageRepeat.NoRepeat) -// .backgroundImageSize({ width: '33.33%', height: '33.33%' }) -// .onClick(() => { -// // this.vocObj.playAudio({ -// // type: 1, -// // name: 'button_media.wav' -// // }) -// this.signDisplayComVisible = false -// }) -// }.width('100%').height('100%').position({ y: 0 }).backgroundColor('rgba(0,0,0,0.6)') -// } -// -// //科目三人工项目确认框 -// if (this.isAmplifyPopShow && this.examSubject == '3') { -// AmplifyPopup({ -// amplifyImgIndex: this.amplifiedImgIndex, -// confirmAmplify: async (amplify: AmplifyItem) => { -// clearTimeout(this.popTimer) -// this.popTimer = null -// this.popTimer = setTimeout(async () => { -// const judge = this.judge -// await judge.setJudgeItem(amplify.projectCode, 1); -// this.isAmplifyPopShow = false -// this.popTimer = null; -// }, 500) -// }, -// closeAmplifyPop: () => { -// this.isAmplifyPopShow = false -// } -// }) -// } -// -// //结束考试弹窗 -// if (this.endPopupVisible) { -// EndPoPup({ -// title: '确定结束考试吗?', -// cancelFn: () => { -// this.endPopupVisible = false; -// }, -// confirmFn: async () => { -// if (this.isErrorMsgEnd) { -// this.judge.closeAllFiles() -// router.back() -// return -// } -// if (Reflect.get(this.judgeConfigObj, '344') == 1) { -// Prompt.showToast({ -// message: '考试未结束,不允许手动退出!', -// duration: 4000 -// }); -// return -// } -// this.endPopupVisible = false; -// this.loadingPopupVisible = true -// clearInterval(this.timer); -// clearInterval(AppStorage.get('judgeTimer')) -// try { -// this.judge.checkExamIsEnd(true); -// } catch (e) { -// this.judge.closeAllFiles() -// router.back() -// } -// -// } -// }) -// } -// -// //loading 弹窗 -// if (this.loadingPopupVisible) { -// LoadingPopup({ -// title: '正在生成考试记录,请稍后...', -// }) -// } -// -// if (this.errorMsg) { -// MsgPopup({ -// title: this.errorMsg, -// confirmFn: () => { -// this.errorMsg = '' -// this.isErrorMsgEnd = true; -// if (this.disConnectErrorOpen) { -// this.context.terminateSelf() -// } else { -// router.back() -// } -// }, -// }) -// } -// -// if (this.dwztErrorVisible) { -// DwztErrorPopup({ -// title: '当前差分状态异常,学员将无法正常进行考试评判,请将车辆行驶到开阔地,等待程序自检,差分正常后会自动关闭该对话框', -// cancelFn: () => { -// this.dwztErrorVisible = false; -// }, -// confirmFn: () => { -// clearInterval(this.timer); -// clearInterval(AppStorage.get('judgeTimer')) -// this.judge.checkExamIsEnd(true); -// }, -// }) -// } -// -// if (this.disConnectErrorOpen) { -// -// } -// } -// .height('100%').backgroundColor('#000').justifyContent(FlexAlign.Start) -// } -// -// getProjectColor(project: ProjectInfo) { -// const type = project.type; -// switch (type) { -// case '1': -// return '#E6DECF'; -// break; -// case '2': -// return '#FFAD33'; -// break; -// case '3': -// return '#ff109d0a'; -// break; -// case '4': -// return '#FF7566'; -// break; -// default: -// return '#E6DECF'; -// break; -// } -// } -// -// //人工项目操作 -// async setManualProjectFn(index: number) { -// -// const judgeConfigObj = this.judgeConfigObj; -// const isManualProjectIn = this.isManualProjectIn; -// const getIsExitManualProject = this.getIsExitManualProject; -// const artSubject3ProjectsCodesArr = this.artSubject3ProjectsCodesArr; -// const projectsObj = this.projectsObj; -// -// const projectCode = Reflect.get(artSubject3ProjectsCodesArr, index) -// if (index === 5) { -// console.info('surenjun 靠边停车状态=> ', getIsExitManualProject(index)) -// } -// const currentProject: ProjectInfo = Reflect.get(projectsObj, projectCode) -// if (getIsExitManualProject(index)) { -// // 正在进行的项目 取消项目 -// if (isManualProjectIn && currentProject.type == '2') { -// //判断人工是否能取消项目 && 当前项目有扣分的不能取消 -// if (Reflect.get(this.judgeConfigObj, '340') == 1) { -// await this.judge.setJudgeItem(projectCode, 2); -// Prompt.showToast({ -// message: '项目取消', -// duration: 2000 -// }) -// return -// } -// } -// -// // 靠边停车时候可以触发 -// if (Reflect.get(this.judgeConfigObj, '343') === '0') { -// const xmmcStr = this.xmmcStr; -// if (xmmcStr == '无' || xmmcStr == '') { -// //512[6] 人工项目按钮放大确认 -// const param512: string[] = (Reflect.get(this.judgeConfigObj, '512') || '').split(','); -// console.info('surenjun', param512) -// if (param512[6] !== '0') { -// this.amplifiedImgIndex = index; -// this.isAmplifyPopShow = true -// } else { -// const judge = this.judge -// await judge.setJudgeItem(projectCode, 1); -// } -// } else { -// if (index === 5) { -// Prompt.showToast({ -// message: `${xmmcStr}未结束,不允许靠边停车`, -// duration: 8000 -// }); -// } -// } -// } else { -// this.amplifiedImgIndex = index; -// this.isAmplifyPopShow = true -// } -// } -// } -// -// // 获取是否能人工进项目 -// getIsExitManualProject = (index: number) => { -// -// const judgeConfigObj = this.judgeConfigObj; -// const artSubject3ProjectsCodesArr = this.artSubject3ProjectsCodesArr; -// const projectsObj = this.projectsObj; -// const carztStr = this.carztStr; -// const isManualProjectIn = this.isManualProjectIn; -// const isProjectIn = this.isProjectIn; -// const getProjectIsInRoad = this.getProjectIsInRoad; -// -// const projectCode = artSubject3ProjectsCodesArr[index]; -// const currentProject: ProjectInfo = Reflect.get(projectsObj, projectCode) -// if (currentProject === undefined) { -// return false -// } -// const projectType = currentProject.type; -// -// //不允许人工触发的项目列表,以","分隔 -// const unExitManualProjects: string[] = Reflect.get(this.judgeConfigObj, '332').split(',') || []; -// //直线行驶中不进其他考试项目(0-否 1-是) -// const param348: string = Reflect.get(this.judgeConfigObj, '348') || '0', -// //里程不够允许手工点靠边停车(0-否 1-是) -// param387: string = Reflect.get(this.judgeConfigObj, '387') || '0', -// //里程不够不报靠边停车(0-否+1-是+2-必考项目未完成且里程不够不报项目) -// param319: string = Reflect.get(this.judgeConfigObj, '319') || '0', -// //人工项目是否能取消 1:可取消; -// param340: string = Reflect.get(this.judgeConfigObj, '340') || '0', -// //307参数里设置的项目,项目已经做过,后续不能人工触发; -// param307: string[] = (Reflect.get(this.judgeConfigObj, '307') || '').split(','); -// -// //非行驶状态(没有速度),人工项目不能触发(按钮灰色) -// if (carztStr === '停车') { -// return false -// } -// -// //车上是否能进行人工操作(0-能1-不能人工评判2-不能人工进项目3-都不能) -// if (Reflect.get(this.judgeConfigObj, '342') === '3' || Reflect.get(this.judgeConfigObj, '342') === '2') { -// return false -// } -// -// //不允许人工触发的项目列表 -// if (unExitManualProjects.includes(artSubject3ProjectsCodesArr[index])) { -// return false -// } -// -// //项目进行中不能人工触发 -// if (isProjectIn) { -// if (param340 == '1') { -// if (isManualProjectIn && (currentProject.type == '2')) { -// return true -// } else { -// return false -// } -// } -// return false -// } -// -// //项目路段信息判断 -// if (!getProjectIsInRoad(projectCode + '')) { -// return false -// } -// -// const project_9: ProjectInfo = Reflect.get(projectsObj, '9') -// // 直线行驶中不进其他考试项目(0-否 1-是) -// if (param348 == '0' && project_9.type == '2') { -// return index === 0 ? true : false -// } -// -// //项目已经做过,后续不能人工触发 -// if (param307.includes(projectCode) && (projectType == '3' || projectType == '4')) { -// return false -// } -// -// //319不为0,或者387不为1,里程不够时,靠边停车项目不能触发 -// if ((param387 != '1' || param319 != '0') && index === 5) { -// const examMileage = this.examMileage -// const isRequiredProjectsEnd = this.isRequiredProjectsEnd -// const jl = this.jl -// //里程是否达标 && 必考项目是否全完成 -// return jl >= Number(examMileage) && isRequiredProjectsEnd -// } -// return true -// } -// // 判断项目是否在当前路段号 -// getProjectIsInRoad = (projectCode: string,) => { -// const judgeConfigObj = this.judgeConfigObj; -// const lane = this.lane; -// const road = lane.road; -// const num = lane.num; -// const count = lane.count; -// -// const param_3: string[] = (Reflect.get(this.judgeConfigObj, '514')?.split(',') || []); -// const param_4: string[] = (Reflect.get(this.judgeConfigObj, '515')?.split(',') || []); -// const param_10: string[] = (Reflect.get(this.judgeConfigObj, '516')?.split(',') || []); -// const param_11: string[] = (Reflect.get(this.judgeConfigObj, '517')?.split(',') || []); -// const param_9: string[] = (Reflect.get(this.judgeConfigObj, '518')?.split(',') || []); -// const param_12: string[] = (Reflect.get(this.judgeConfigObj, '519')?.split(',') || []); -// -// const projectRoads: ProjectRoads = { -// //直线行驶 -// param_3, -// //变更车道 -// param_4, -// //超车 -// param_10, -// //靠边停车 -// param_11, -// //会车 -// param_9, -// //掉头 -// param_12, -// }; -// -// -// //未测绘得道路上或者不在差分状态 -// if (road === '') { -// return false -// } -// const currentProjectRoad: string[] = Reflect.get(projectRoads, `param_${projectCode}`) -// if (currentProjectRoad.length == 0) { -// return true -// } -// -// //设置了514-519参数,只能在设置的路段触发对应项目 -// if (currentProjectRoad.includes(road)) { -// //如果525为1,则514-519设置的路段不能触发对应项目 -// if (Reflect.get(this.judgeConfigObj, '525') == '1') { -// return false -// } -// } else { -// return false -// } -// -// //405参数为2是,如果在最左侧车道,超车项目不能触发; -// if (projectCode == '10' && -// Reflect.get(this.judgeConfigObj, '405') == '2' && -// (num === count) && -// num > 0 -// ) { -// return false -// } -// -// // 车道总数少于2条,超车和变道不能触发 -// if (projectCode == '10' || projectCode == '4') { -// if (count < 2) { -// return false -// } -// } -// return true -// -// } -// // 获取人工项目是否已做 -// getIsEndManualProject = (index: number) => { -// const projectName = this.artSubject3Projects[index]; -// const projectCode = this.artSubject3ProjectsCodesArr[index]; -// const currentProject: ProjectInfo = Reflect.get(this.projectsObj, projectCode) -// const type = currentProject.type -// if (type == '2') { -// return projectName -// } -// return (type == '3' || type == '4') ? `${projectName}_red` : `${projectName}_green`; -// } -// // 获取是否能进行人工评判 -// getIsManualKf = () => { -// if (this.examSubject == '3') { -// //杭州训练模式不允许人工评判 -// if (this.singlePlay && Reflect.get(this.judgeConfigObj, '211') == 'zjhz') { -// return false -// } -// if (Reflect.get(this.judgeConfigObj, '342') == '0') { -// return true -// } -// } else { -// return false -// } -// } -// } -// -// export const JudgePage = Index +import router from '@ohos.router'; +import Prompt from '@system.prompt'; +import common from '@ohos.app.ability.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//judgeCommon'; +import { uploadExamMileage } from '../api/judge'; +import DwztErrorPopup from './compontents/judge/DwztErrorPopup'; +import MsgPopup from './compontents/judge/MsgPopup'; +import { + CARINFO, + CDSBInfo, + LANE, + MAPITEMPOINTITEM, + MAPPOINT, + MarkRule, + Project, SYSTEMPARMARR +} from './judgeSDK/api/judgeSDK.d'; + +import { JudgeConfig } from './judgeSDK/utils/judgeConfig'; + +import SignDisplayCom from './compontents/SignDisplayCom'; +import { + AmplifyItem, + CarInfoType, + CDSBInfos, DefaultJudgeConfigObj, + ES_CARINFOType, + ItemInfos, + JudgeBeginObj, + JudgeCallBacData, + JudgeInitObj, + JudgeUI, MA_CDSBINFOType, + MA_ITEMINFOType, + MA_MAP_POINT_ITEMType, + MA_MAP_POINTType, MA_SYSTEMPARMType, + MarkRules, + MASYSSETTableType, ProjectInfo, + ProjectInfos, + ProjectRoads, + RouteParamsType, + SYSSET, + SyssetConfig, User +} from '../model'; +import { GetSyncData } from '../utils/table/Operation'; +import dayTs from '../utils/Date'; +import { GetCurrentTime } from '../utils/Common'; +import { chunkArr } from './judgeSDK/utils/Common'; +import FileUtils from '../utils/FileUtils'; + + +@Entry +@Component +struct Index { + scroller: Scroller = new Scroller() + //页面通用字体大小 + @State wayno: number = 0 + @State FONTSIZE: number = 30 + @State BIGFONTSIZE: number = 32 + //结束考试弹窗 + @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 startExamTime: string = '' + //科目类型 + @State examSubject: string = '3'; + @State ddxkTime: number = 0; + @State ddxkKsxmArr: string[] = [] + @State ddxkKfArr: string[] = [] + @State xmmcStr: string = '' + @State carztStr: string = '' + @State kfArr: MarkRule[] = [] + @State name: string = '' + @State idCard: string = '' + @State singlePlay: boolean = false; + @State totalScore: number = 100 + //模拟考试项目 + @State projects: ProjectInfo[] = [] + @State projectsObj: ProjectInfos = {} + @State projectsCenterObj: ProjectInfos = {} + @State markRuleListObj: MarkRules = {} + @State cdsbInfoObj?: CDSBInfos = {} + @State itemInfoObj?: ItemInfos = {} + @State timer: number = 0 + @State judgeConfig: SyssetConfig[] = [] + @State judgeConfigObj: DefaultJudgeConfigObj = defaultJudgeConfigObj + //流水号 + @State lsh: string = '' + @State kszp: string = '' + @State ksdd: string = '' + @State kssycs: string = '' + @State ksxl: string = '' + @State kslx: string = '' + //监管线路代码 + @State xldm: string = '' + //监管接口序列号 + @State serialNumber: string = '' + @State syssetParam623: boolean = false; + @State syssetParam211: string = ''; + @State carType: string = '' + @State carName: string = '' + @State isDeductedPopShow: boolean = false + @State isAmplifyPopShow: boolean = false + @State amplifiedImgIndex: number = 0 + judge: Judge + //行驶距离 + @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 carinfoArr: CARINFO[] = [] + @State mapPointArr: MAPPOINT[] = [] + //手动项目是否在进行中 + @State isManualProjectIn: boolean = false; + //项目是否进行中 + @State isProjectIn: boolean = false; + //正在进行的项目代码 + @State currentXmdm?: number = 0 + // 必考项目除靠边停车是否全部完成 + @State isRequiredProjectsEnd: boolean = false; + @State isAllProjectsEnd: boolean = false; + @State draw: boolean = false; + @State lane: LANE = { road: '', num: 0, count: 0 } + //定位差分状态时候正常 + @State isDwztRight: boolean = true; + @State defaultTabIndex: number = 0; + public kfArrScroller: Scroller = new Scroller() + //档位 + @State dw: string = '' + //速度 + @State sd: string = '' + @State mileageTimer: number = 0; + @State passingScore: number = 80 + @State dwztErrorVisible: boolean = false; + @State popTimer: number = 0; + @State carlist: string = '' + @State errorMsg: string = '' + @State carInfo: CarInfoType = {} + @State isErrorMsgEnd: boolean = false + @State disConnectErrorOpen: boolean = false + public context = getContext(this) as common.UIAbilityContext; + + async aboutToDisappear() { + clearInterval(this.mileageTimer) + } + + async aboutToAppear() { + const time = GetCurrentTime() + this.carInfo = AppStorage.get('carInfo') + this.singlePlay = AppStorage.get('singlePlay') + this.startTime = time.split(' ')[1] + this.startFullTime = GetCurrentTime(1); + // this.startHourTime = await getCurrentHourTime() + this.startTime = dayTs().format("HHmmssSSS") + this.startExamTime = time + setInterval(async () => { + this.time = GetCurrentTime(); + this.examTime += 1; + }, 1000); + //初始化数据库表 + await this.initDb() + //断点续考 + await this.goDdxkItems() + //初始化评判 + const judge = await this.initJudge(); + this.judge = judge + } + + //初始化相关数据库表 + async initDb() { + this.examSubject = this.carInfo.examSubject; + // const { isTrajectoryOpen, trajectoryPath } = judgeConfig + await this.initStudent(); + await this.initCar(); + + //是否开启轨迹回放模式 + if (JudgeConfig.isTrajectoryOpen) { + this.initTrajectoryParam(JudgeConfig.trajectoryPath) + } else { + await this.initSystemParam() + await this.initMarkRules(); + await this.initSysset(); + } + await this.initCDSBInfo() + await this.initItemInfo() + + // 科目三新增读取表数据 + if (this.examSubject == '3') { + await this.initMapPoint() + await this.initMapPointItem() + //定时上传考试里程 + // let mileageTimer = setInterval(()=>{ + // this.uploadMileage() + // },5000) + // this.mileageTimer = mileageTimer + } + } + + // 查询考车信息 + async initCar() { + // const result = await getSyncData('ES_CARINFO') + const result = await GetSyncData("ES_CARINFO") + const carInfo = result[0] || {}; + this.carName = decodeURI(carInfo.carclass) + this.carType = carInfo.kscx + this.carinfoArr.push({ + CARID: carInfo.carid, + IPADDR: '', + CARCLASS: decodeURI(carInfo.carclass), + KSCX: carInfo.kscx, + // CARNAME: decodeURI(carInfo.carname), + CARNAME: "", + FLAG: carInfo.flag, + BK1: carInfo.bk1, + BK2: carInfo.bk2, + }) + console.info('surenjun =>carinfoArrr', JSON.stringify(this.carinfoArr)) + } + + // 获取考生信息 + async initStudent() { + const students = await GetSyncData('USER') + const stuInfo = students[0]; + this.name = stuInfo.xm || '测试考生'; + this.idCard = stuInfo.sfzmhm || '01234567891010'; + this.lsh = this.singlePlay ? '0000000000000' : stuInfo.lsh; + this.kszp = stuInfo.kszp; + this.ksdd = stuInfo.ksdd; + this.kssycs = stuInfo.kssycs; + this.ksxl = stuInfo.ksxl; + this.wayno = Number(stuInfo.ksxl); + this.xldm = stuInfo.xldm; + this.kslx = stuInfo.kslx; + } + + // 获取扣分代码信息 + async initMarkRules(markRules ?: MarkRule[]) { + const markRuleParams = markRules || await GetSyncData('MA_MARKRULE') + + markRuleParams.forEach(mark => { + const tempObj: MarkRule = { + 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 + } + + //筛选出人工评判的扣分 + if (Number(tempObj.markserial) > 100 && Number(tempObj.markserial) < 200) { + this.manualMarkRules.push(tempObj) + } + tempObj.markserial = mark.markserial + Reflect.set(this.markRuleListObj, `${mark.itemno}_${mark.markserial}`, tempObj) + }) + } + + // 考试项目是否全部完成 + + // 获取sysset表信息 + async initSysset(sysset?: SYSSET[]) { + const syssetParams: SYSSET[] | MASYSSETTableType[] = sysset || await GetSyncData('MA_SYSSET') + const serialNumberArr = (syssetParams as SYSSET[]).filter(sys => sys.v_no === '901'); + console.info('surenjun serialNumberArr' + JSON.stringify(serialNumberArr)) + this.serialNumber = (serialNumberArr[0] && serialNumberArr[0].v_value) || ''; + // const { isTrajectoryOpen } = judgeConfig + const syssetJudgeConfigArr: SyssetConfig[] = [] + + syssetParams.forEach((sys: SYSSET) => { + if (JudgeConfig.isTrajectoryOpen) { + sys.v_no = String(sys.key); + sys.v_name = sys.name; + sys.v_value = sys.value + } + + // const { v_no, v_value } = sys; + const v_no_num = Number(sys.v_no) + const value = decodeURIComponent(sys.v_value) + if (v_no_num >= 10 && v_no_num <= 900) { + const name = + syssetJudgeConfigArr.push({ + key: v_no_num, value: value, + name: decodeURI(sys.v_name) + }) + } + + //623 考试中是否可以查看轨迹画面(0-否+1-是) + if (sys.v_no == '623') { + this.syssetParam623 = value == '1' ? true : false + } + + //科目三应行驶距离参数 + if (sys.v_no == '303') { + this.examMileage = this.examMileage == '0' ? (sys.v_value + '') : this.examMileage; + } + + // //地点版本参数 + // if (sys.v_no == '211') { + // this.syssetParam211 = decodeURIComponent(sys.v_value + '') + // } + + //364 绕车一周评判时机(1-开始考试后判 2-开始考试前判) + if (sys.v_no == '364' && sys.v_value == "2") { + let currentParams: RouteParamsType = router.getParams() as RouteParamsType; + // const { sczb, kfdm } = currentParams; + const kfdm = currentParams.kfdm; + currentParams.kfdm.forEach(kf => { + // const { xmdm, kfdm } = kf + + const currentKf: MarkRule = Reflect.get(this.markRuleListObj, `${kf.xmdm}_${kf.kfdm}`) + const currentProject: ProjectInfo = Reflect.get(this.projectsObj, kf.xmdm) + + // 过滤考前绕车一周上车准备的扣分 + if (currentParams.sczb == "1" && kf.xmdm == 1) { + return + } + + this.kfArr.push({ + //扣分项目名称 + xmmcStr: currentProject.name, + xmdm: kf.xmdm, + desc: currentKf.markshow, + score: currentKf.markreal, + markcatalog: currentKf.markcatalog, + markserial: currentKf.markserial, + kfxh: currentKf.kfxh + }) + this.totalScore += currentKf.markreal * 1; + }) + const project_1 = Reflect.get(this.projectsObj, 1) + project_1.type = kfdm.length ? '4' : '3'; + Reflect.set(this.projectsObj, 1, project_1) + + } + Reflect.set(this.judgeConfigObj, sys.v_no, value) + }); + this.judgeConfig = syssetJudgeConfigArr; + } + + //初始化systemParam表 + async initSystemParam(sysParam?: MA_SYSTEMPARMType[]) { + let systemParms: MA_SYSTEMPARMType[] = sysParam || await GetSyncData('MA_SYSTEMPARM') + + let currentParams: RouteParamsType = router.getParams() as RouteParamsType; + // const { carName, carType, examSubject } = this; + //小车车型列表 + const sCarTypes = ['C1', 'C2', 'C5'] + if (this.singlePlay) { + this.wayno = Number(currentParams.wayno) || 1; + } + //真实监管下发的项目 + let kStringArr: string[] = (currentParams.kString?.split(',') || []).filter(item => item); + console.info('surenjun kStringArr', JSON.stringify(kStringArr)) + let isInExam = kStringArr.length > 0; + // const { isTrajectoryOpen } = judgeConfig + let carNo = '', allItems: string[] = []; + systemParms.forEach((systemParm) => { + if (JudgeConfig.isTrajectoryOpen) { + systemParm.no1 = systemParm.NO1 + ''; + systemParm.no2 = systemParm.NO2 + ''; + systemParm.no3 = systemParm.NO3 + ''; + systemParm.txt1 = systemParm.TXT1; + systemParm.txt2 = systemParm.TXT2; + systemParm.txt3 = systemParm.TXT3; + } + // const { no1, no2, no3, } = systemParm; + const txt1 = decodeURI(systemParm.txt1) + const txt2 = decodeURI(systemParm.txt2) + + const no1 = systemParm.no1; + const no2 = systemParm.no2; + const no3 = systemParm.no3; + + //获取当前考车的no2 + if (systemParm.no1 == "3" && systemParm.no3 == "1") { + if (txt1 === this.carName) { + carNo = systemParm.no2 + this.carlist = carNo + } + } + + //获取及格分数线 + if (systemParm.no1 == "3" && systemParm.no3 == "3" && carNo === systemParm.no2) { + this.passingScore = Number(txt1) || 0; + } + //根据车型获取应行驶里程数 + if (systemParm.no1 == "3" && systemParm.no3 == "15" && carNo === systemParm.no2) { + this.examMileage = ((decodeURI(systemParm.txt1)) || '').split('^')[0]; + } + //获取当前考车的考试项目 + if (carNo !== '' && systemParm.no1 == "3" && systemParm.no2 == carNo && systemParm.no3 == "10") { + allItems = decodeURIComponent(systemParm.txt1).split(',').filter(txt => txt !== '') + console.info('surenjun', JSON.stringify(allItems)) + } + if ( + //科目二获取项目 + (this.examSubject == "2" && allItems.length && systemParm.no1 == '6' && allItems.includes(systemParm.no2)) + || + //科目三获取项目 + (this.examSubject == "3" && systemParm.no1 == "6") + ) { + const name = decodeURI(systemParm.txt1) + //小车过滤掉 夜间模拟行驶 + if (sCarTypes.includes(this.carType) && name === '夜间行驶') { + return + } + const currentProject: ProjectInfo = { + name, + abbreviation: decodeURI(systemParm.txt3), + projectCode: no2, + projectCodeCenter: txt2, + //是否是必考 加减档设置成非必考 + isRequired: no2 == '14' ? false : allItems.includes(no2 + ''), + //是否考过了 + isEnd: false, + //项目开始数据是否上传过 + isUpload: false, + } + const no2Num = Number(systemParm.no2) + //真实监管下发考试项目 + if (isInExam && !(kStringArr.includes(txt2) || kStringArr.includes(no2 + ''))) { + console.info('surenjun =>', txt2) + console.info('surenjun => no2', systemParm.no2) + currentProject.type = '3' + currentProject.isUpload = true + currentProject.isEnd = true + this.ddxkKsxmArr.push(txt2) + } + Reflect.set(this.projectsObj, no2Num, currentProject) + Reflect.set(this.projectsCenterObj, txt2, currentProject) + this.projects.push(currentProject); + } + + this.systemparmArr.push({ + 'NO1': Number(systemParm.no1), + 'NO2': Number(systemParm.no2), + 'NO3': Number(systemParm.no3), + 'TXT1': decodeURIComponent(systemParm.txt1), + 'TXT2': decodeURIComponent(systemParm.txt2), + 'TXT3': decodeURIComponent(systemParm.txt3), + }) + }) + const projects = this.projects; + console.info('surenjun', JSON.stringify(this.ddxkKsxmArr)) + + if (!projects.length) { + Prompt.showToast({ + message: '读取数据库信息失败,请重新联网更新!', + duration: 8000 + }); + router.back(); + } + } + + // 获取场地设备信息 + async initCDSBInfo() { + const cdsbParams: MA_CDSBINFOType[] = await GetSyncData('MA_CDSBINFO') + //只记录考试项目的模型 + const projectsObj = this.projectsObj + cdsbParams.forEach((cdsb) => { + const key = decodeURI(cdsb.itemsno) + const newKey = key.split('~').join('_') + const xmdm = Number(key.split('~')[0]) + const currentProject: ProjectInfo = Reflect.get(projectsObj, xmdm) + if (currentProject) { + const cdsbInfo: CDSBInfo = { + kdid: cdsb.kdid, + sbbh: cdsb.sbbh, + sbbm: cdsb.sbbm, + itemsno: key, + modelKey: newKey, + xmdm, + xmxh: key.split('~')[1], + } + Reflect.set(this.cdsbInfoObj, newKey, cdsbInfo) + } + }) + } + + // 获取itemInfo表信息 + async initItemInfo() { + const infoParams: MA_ITEMINFOType[] = await GetSyncData('MA_ITEMINFO'); + const carlist = this.carlist; + const projectsObj = this.projectsObj + infoParams.forEach((info) => { + const key = decodeURI(info.itemsno); + const carlistArr = info.carlist === '' ? [] : (decodeURI(info.carlist).split(',') || []); + const newKey = key.split('~').join('_') + const xmdm = Number(key.split('~')[0]) + const currentProject: ProjectInfo = Reflect.get(projectsObj, xmdm) + if (currentProject && (carlistArr.length == 0 || carlistArr.includes(carlist))) { + Reflect.set(this.itemInfoObj, newKey, { + modelKey: newKey, + xmdm, + xmxh: key.split('~')[1], + }) + } + }) + } + + // 评判相关初始化 + async initJudge() { + const JUDGEUI: JudgeUI = this; + const judge = new Judge(JUDGEUI); + // await judge.init() + await judge.onJudgeFn(async (judgeData: JudgeCallBacData) => { + // const { xmmcStr, carztStr, kfArr } = judgeData; + this.xmmcStr = judgeData.xmmcStr; + this.carztStr = judgeData.carztStr; + this.kfArr = judgeData.kfArr; + }); + return judge + } + + // 断点续考判断 + async goDdxkItems() { + const judgeConfigObj = this.judgeConfigObj + + const config_432: string = Reflect.get(judgeConfigObj, '432') + //科目二强制开始断点续考 + if (config_432 != '0' || this.examSubject == "2") { + //断点续考判断 + let currentParams: RouteParamsType = router.getParams() as RouteParamsType; + const examItems: string = currentParams?.examItems; + // 2024-01-03 16:29:26;0;20300,;2,4^2,4;null; + if (examItems !== '' && examItems !== undefined) { + console.info('surenjun examItems=>', JSON.stringify(examItems)) + const examItemsArrs = examItems.split(';'); + const startTime = examItemsArrs[0] + const ddxkKsxmArr = examItemsArrs[2]?.split(',').filter(item => item) || [] + const ddxkKfArr = examItemsArrs[3]?.split('^').filter(item => item) || [] + if (config_432 == '2' || this.examSubject == "2") { + //TODO 带项目带里程 + if (ddxkKsxmArr?.length) { + //断点续考 + ddxkKsxmArr.forEach(xmdm => { + const currentProjectCenter: Project = Reflect.get(this.projectsCenterObj, xmdm) + const projectCode = currentProjectCenter.projectCode + const currentProject: Project = Reflect.get(this.projectsObj, projectCode) + if (currentProject) { + currentProject.type = '3' + currentProject.isUpload = true + currentProject.isEnd = true + Reflect.set(this.projectsObj, projectCode, currentProject) + } + }) + this.ddxkKsxmArr = ddxkKsxmArr + } + } + //扣分续考 + ddxkKfArr.forEach((kf) => { + const xmdm = kf.split(',')[0] + const kfdm = kf.split(',')[1] + const currentKf: MarkRule = Reflect.get(this.markRuleListObj, `${xmdm}_${kfdm}`) + const currentProject: ProjectInfo = Reflect.get(this.projectsObj, xmdm) || { name: '通用评判' } + + if (currentProject) { + currentProject.type = '4' + Reflect.set(this.projectsObj, xmdm, currentProject) + } + this.kfArr.push({ + //扣分项目名称 + xmmcStr: currentProject.name, + desc: currentKf.markshow, + score: currentKf.markreal, + markcatalog: currentKf.markcatalog, + markserial: currentKf.markserial, + kfxh: currentKf.kfxh + }) + this.totalScore += currentKf.markreal * 1; + }) + this.ddxkKfArr = ddxkKfArr + this.ddxkTime = Date.parse(startTime); + this.isDdxk = true + } + } + + } + + // 初始化mapPoint表 + async initMapPoint() { + const pointParams: MA_MAP_POINTType[] = await GetSyncData('MA_MAP_POINT') + pointParams.forEach(item => { + + this.mapPointArr.push({ + point_no: Number(item.point_no), + gps_e: Number(item.gps_e), + gps_n: Number(item.gps_n), + point_no_f: Number(item.point_no_f), + point_type: Number(item.point_type), + road_code: item.road_code, + gps_e_Location: Number(item.gps_e_location), + gps_n_Location: Number(item.gps_n_location), + f_gps_e: Number(item.f_gps_e), + f_gps_n: Number(item.f_gps_n), + passed: Number(item.passed) + }) + }) + } + + // 初始化mapPointItem表 + async initMapPointItem() { + const pointItemPoints: MA_MAP_POINT_ITEMType[] = await GetSyncData('MA_MAP_POINT_ITEM'); + pointItemPoints.forEach(item => { + // const { point_no, itemno, itemno1, subname } = itemPoint + this.mapPointItemArr.push({ + point_no: Number(item.point_no), + itemno: Number(item.itemno), + itemno1: Number(item.itemno1), + subname: item.subname + }) + }) + } + + // 初始化本地systemparam表、markrule表 + async initTrajectoryParam(trajectoryPath: string) { + const isTrajectoryOpen = JudgeConfig.isTrajectoryOpen + //轨迹回放读取 systemparam表、markrule表 + const fileUtil = new FileUtils(this.context); + const folderPath = await fileUtil.initFolder(trajectoryPath); + const str = await fileUtil.readFile(folderPath); + const strArr = str.split('\n'); + const initData = strArr[0] + const beginData = strArr[1] + + const initDataObj: JudgeInitObj = JSON.parse(initData) + const beginDataObj: JudgeBeginObj = JSON.parse(beginData) + + const examSubject = this.carInfo.examSubject; + this.examSubject = (isTrajectoryOpen ? (initDataObj.kskm) : examSubject) + ''; + this.carInfo.examSubject = this.examSubject + this.singlePlay = beginDataObj.exam == 0; + this.carName = initDataObj.name; + await this.initSystemParam(initDataObj.systemparm) + await this.initMarkRules(initDataObj.mark); + await this.initSysset(initDataObj.sysset); + } + + // 上传考试里程 + async uploadMileage() { + if (!this.singlePlay) { + const carInfo = this.carInfo + + await uploadExamMileage({ + carId: carInfo.carId, + examinationRoomId: carInfo.examinationRoomId, + lsh: this.lsh, + kskssj: this.startExamTime, + kslc: this.jl + }) + } + } + + build() { + Column() { + Row() { + Row() { + Image($rawfile('judge/signal_logoS.png')).width(120) + Text(this.time).fontColor('#CCB48F').fontSize(34).padding({ left: 10, right: 5 }) + Image($rawfile(this.isDwztRight ? 'judge/xh_green.png' : 'judge/xh_red.png')).width(50) + }.padding({ left: 20 }) + + Row() { + Text(`当前项目:${this.xmmcStr || '无'} `).fontColor('#E5CCA1').fontSize(34) + } + } + .width('100%') + .height('96') + .backgroundColor('#001A33') + .padding({ left: 15, right: 15 }) + .justifyContent(FlexAlign.SpaceBetween) + .alignItems(VerticalAlign.Center) + + Row() { + Row() { + Column() { + Row() { + Column() { + Row() { + Text('考生姓名:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) + Text(this.name).fontColor('#FFF').fontSize(this.FONTSIZE) + }.margin({ bottom: 10 }) + + Row() { + Text('开始时间:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) + Text(this.startTime).fontColor('#FFF').fontSize(this.FONTSIZE) + }.margin({ bottom: 10 }) + + if (this.examSubject == "3") { + Row() { + Text('考试路线:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) + Text(`线路${this.wayno || 3}`).fontColor('#FFAD33').fontSize(this.FONTSIZE) + } + } + + }.width('45%').alignItems(HorizontalAlign.Start) + + Column() { + Row() { + Text('身份证号:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) + Text(this.idCard).fontColor('#FFF').fontSize(this.FONTSIZE) + }.margin({ bottom: 10 }) + + Row() { + Text('考试用时:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) + // Text(formatTime(this.examTime)).fontColor('#FFF').fontSize(this.FONTSIZE) + Text(dayTs(this.examTime).format("YYYY-MM-DD HH:mm:ss")).fontColor('#FFF').fontSize(this.FONTSIZE) + }.margin({ bottom: 10 }) + + if (this.examSubject == "3") { + Row() { + if (Reflect.get(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) + } + } + + }.alignItems(HorizontalAlign.Start) + + }.width('100%') + + Column() { + Row() { + Text(this.carztStr).fontColor('#FFA500').fontSize(this.FONTSIZE) + if (Reflect.get(this.judgeConfigObj, '342') == '0') { + Text(`${this.dw}挡`).fontColor('#FFA500').fontSize(this.FONTSIZE).padding({ left: 15, right: 15 }) + Text(`${this.sd}km/h`).fontColor('#FFA500').fontSize(this.FONTSIZE) + } + }.height(40) + + Row() { + Flex({ direction: FlexDirection.Column }) { + if (this.kfArr.length) { + List({ scroller: this.kfArrScroller }) { + ForEach(this.kfArr, (item: MarkRule) => { + ListItem() { + Column() { + Row() { + Text(item.xmmcStr).fontSize(this.BIGFONTSIZE).fontColor('#FFF') + Text(`${item.score}分`).fontSize(this.BIGFONTSIZE).fontColor('#FFF') + } + .width('100%') + .backgroundColor('#38260B') + .justifyContent(FlexAlign.SpaceBetween) + .padding({ + top: 12, + bottom: 12, + left: 8, + right: 5 + }) + + Text(item.desc + `(${item.markcatalog})`) + .fontSize(this.BIGFONTSIZE) + .fontColor('#E5CBA1') + .margin({ + top: 10, + bottom: 8, + left: 5, + right: 5 + }) + }.margin({ top: 15 }).alignItems(HorizontalAlign.Start) + + }.margin({ bottom: 25 }) + }) + } + .padding({ + left: 15, + right: 15, + top: 30, + bottom: 5 + }) + } else { + Column() { + Row() { + Text('暂无扣分项').fontSize(this.BIGFONTSIZE).fontColor('#FFF') + } + .width('100%') + .backgroundColor('#38260B') + .justifyContent(FlexAlign.SpaceBetween) + .padding({ + top: 12, + bottom: 12, + left: 8, + right: 3 + }) + }.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 + }) + + //科目二 + if (this.examSubject == "2") { + Flex({ wrap: FlexWrap.Wrap, direction: FlexDirection.Row, justifyContent: FlexAlign.SpaceBetween }) { + List({}) { + ForEach(chunkArr(this.projects, 2), (item: [ProjectInfo, ProjectInfo]) => { + 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(item[0])) + } + .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(item[1])) + } + .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 }) + } + //科目三 + if (this.examSubject == '3') { + Column() { + Flex({ + wrap: FlexWrap.Wrap, + direction: FlexDirection.Row, + justifyContent: FlexAlign.SpaceBetween + }) { + List({}) { + ForEach(this.projects, (project: ProjectInfo) => { + ListItem() { + Text(project.name) { + } + .fontColor(this.getProjectColor(project)) + .margin({ bottom: 2 }) + .fontSize(24) + }.margin({ bottom: 2 }) + }) + }.lanes(2).margin({ left: 25 }) + } + .width('100%') + .height('57%') + .backgroundImage($rawfile('judge/project_km3_bg.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .padding(30) + .margin({ right: 5 }) + + if (this.projects.length) { + Flex({ + wrap: FlexWrap.Wrap, + direction: FlexDirection.Row, + justifyContent: FlexAlign.SpaceAround + }) { + List() { + ForEach(this.artSubject3Projects, (item: string, index) => { + ListItem() { + } + .backgroundImage( + $rawfile( + `judge/km3/${this.getIsExitManualProject(index) ? (this.getIsEndManualProject(index)) : + (item + '_gray')}.png` + ), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .width(174) + .height(118 * 0.95) + .margin({ bottom: 8 }) + .onClick(() => { + // this.vocObj.playAudio({ + // type: 1, + // name: 'button_media.wav' + // }) + this.setManualProjectFn(index) + }) + }) + }.lanes(3).margin({ left: 5, top: 12 }) + } + } + + } + .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 }) + }.height('100%').alignItems(HorizontalAlign.Start) + }.width('75%').height('100%') + + Column() { + Column() { + Row() { + Text(this.totalScore <= 0 ? '0' : this.totalScore + '').fontColor('#FFEECC').fontSize(55) + Text('分').fontColor('#FFEECC').fontSize(30).padding({ top: 5 }) + } + .width(334) + .height(120) + .justifyContent(FlexAlign.Center) + .alignItems(VerticalAlign.Center) + .border({ width: 5, color: '#4D4136', radius: 30 }) + .onClick(() => { + // this.vocObj.playAudio({ + // type: 1, + // name: 'button_media.wav' + // }) + this.signDisplayComVisible = true + }) + + Row() { + Image(this.kszp).width('85%').height('85%') + } + .width(226) + .height(312) + .backgroundImage($rawfile('judge/photo_bg.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .justifyContent(FlexAlign.Center) + .alignItems(VerticalAlign.Center) + .margin({ top: 30, bottom: 15 }) + } + + Column() { + if (this.getIsManualKf()) { + 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(() => { + // this.vocObj.playAudio({ + // type: 1, + // name: 'button_media.wav' + // }) + this.isDeductedPopShow = true + }) + } + + 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 }) + + Row() { + } + .width(334) + .height(100) + .backgroundImage($rawfile('judge/anniu_nor.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '100%', height: '100%' }) + .onClick(() => { + // this.vocObj.playAudio({ + // type: 1, + // name: 'button_media.wav' + // }) + if (Reflect.get(this.judgeConfigObj, '353') == '0') { + this.endPopupVisible = true + } else { + Prompt.showToast({ + message: '车上不允许手动结束考试!', + duration: 4000 + }); + } + }) + }.margin({ bottom: 30 }) + + } + .width('25%') + .height('100%') + .justifyContent(FlexAlign.SpaceBetween) + .alignItems(HorizontalAlign.Center) + .margin({ bottom: 20 }) + } + .height('90%') + .justifyContent(FlexAlign.Start) + .padding({ + top: 37, + left: 60, + bottom: 35, + right: 60 + }) + + + //科目三人工扣分弹窗 + if (this.isDeductedPopShow && this.examSubject == '3' && Reflect.get(this.judgeConfigObj, '342') == '0') { + DeductedPopup({ + defaultTabIndex: this.defaultTabIndex, + currentItems: Reflect.ownKeys(this.projectsObj).map(projectKey => { + const project: ProjectInfo = Reflect.get(this.projectsObj, projectKey) + return project.type == '2' ? project.projectCode : undefined + }).filter(project => project !== undefined), + markRules: this.manualMarkRules, + closePopup: () => { + this.isDeductedPopShow = false; + this.defaultTabIndex = 0; + }, + confirmMark: async (itemno: string, serial: string) => { + clearTimeout(this.popTimer) + this.popTimer = null + this.popTimer = setTimeout(async () => { + const judge = this.judge + await judge.setJudgeMark(itemno, serial); + this.isDeductedPopShow = false + this.popTimer = null; + }, 500) + } + }) + } + + if (this.signDisplayComVisible) { + Column() { + SignDisplayCom({ + showBack: false, + scaleNum: 1.8, + msgStr: this.judge.plcStr || '', + showTrajectory: this.singlePlay ? true : (this.syssetParam623), + }).margin({ top: 100 }) + + Row() { + } + .width(240) + .height(240) + .position({ x: '81%', y: 80 }) + .backgroundImage($rawfile('judge/close.png'), ImageRepeat.NoRepeat) + .backgroundImageSize({ width: '33.33%', height: '33.33%' }) + .onClick(() => { + // this.vocObj.playAudio({ + // type: 1, + // name: 'button_media.wav' + // }) + this.signDisplayComVisible = false + }) + }.width('100%').height('100%').position({ y: 0 }).backgroundColor('rgba(0,0,0,0.6)') + } + + //科目三人工项目确认框 + if (this.isAmplifyPopShow && this.examSubject == '3') { + AmplifyPopup({ + amplifyImgIndex: this.amplifiedImgIndex, + confirmAmplify: async (amplify: AmplifyItem) => { + clearTimeout(this.popTimer) + this.popTimer = null + this.popTimer = setTimeout(async () => { + const judge = this.judge + await judge.setJudgeItem(amplify.projectCode, 1); + this.isAmplifyPopShow = false + this.popTimer = null; + }, 500) + }, + closeAmplifyPop: () => { + this.isAmplifyPopShow = false + } + }) + } + + //结束考试弹窗 + if (this.endPopupVisible) { + EndPoPup({ + title: '确定结束考试吗?', + cancelFn: () => { + this.endPopupVisible = false; + }, + confirmFn: async () => { + if (this.isErrorMsgEnd) { + this.judge.closeAllFiles() + router.back() + return + } + if (Reflect.get(this.judgeConfigObj, '344') == 1) { + Prompt.showToast({ + message: '考试未结束,不允许手动退出!', + duration: 4000 + }); + return + } + this.endPopupVisible = false; + this.loadingPopupVisible = true + clearInterval(this.timer); + clearInterval(AppStorage.get('judgeTimer')) + try { + this.judge.checkExamIsEnd(true); + } catch (e) { + this.judge.closeAllFiles() + router.back() + } + + } + }) + } + + //loading 弹窗 + if (this.loadingPopupVisible) { + LoadingPopup({ + title: '正在生成考试记录,请稍后...', + }) + } + + if (this.errorMsg) { + MsgPopup({ + title: this.errorMsg, + confirmFn: () => { + this.errorMsg = '' + this.isErrorMsgEnd = true; + if (this.disConnectErrorOpen) { + this.context.terminateSelf() + } else { + router.back() + } + }, + }) + } + + if (this.dwztErrorVisible) { + DwztErrorPopup({ + title: '当前差分状态异常,学员将无法正常进行考试评判,请将车辆行驶到开阔地,等待程序自检,差分正常后会自动关闭该对话框', + cancelFn: () => { + this.dwztErrorVisible = false; + }, + confirmFn: () => { + clearInterval(this.timer); + clearInterval(AppStorage.get('judgeTimer')) + this.judge.checkExamIsEnd(true); + }, + }) + } + + if (this.disConnectErrorOpen) { + + } + } + .height('100%').backgroundColor('#000').justifyContent(FlexAlign.Start) + } + + getProjectColor(project: ProjectInfo) { + const type = project.type; + switch (type) { + case '1': + return '#E6DECF'; + break; + case '2': + return '#FFAD33'; + break; + case '3': + return '#ff109d0a'; + break; + case '4': + return '#FF7566'; + break; + default: + return '#E6DECF'; + break; + } + } + + //人工项目操作 + async setManualProjectFn(index: number) { + + const judgeConfigObj = this.judgeConfigObj; + const isManualProjectIn = this.isManualProjectIn; + const getIsExitManualProject = this.getIsExitManualProject; + const artSubject3ProjectsCodesArr = this.artSubject3ProjectsCodesArr; + const projectsObj = this.projectsObj; + + const projectCode = Reflect.get(artSubject3ProjectsCodesArr, index) + if (index === 5) { + console.info('surenjun 靠边停车状态=> ', getIsExitManualProject(index)) + } + const currentProject: ProjectInfo = Reflect.get(projectsObj, projectCode) + if (getIsExitManualProject(index)) { + // 正在进行的项目 取消项目 + if (isManualProjectIn && currentProject.type == '2') { + //判断人工是否能取消项目 && 当前项目有扣分的不能取消 + if (Reflect.get(this.judgeConfigObj, '340') == 1) { + await this.judge.setJudgeItem(projectCode, 2); + Prompt.showToast({ + message: '项目取消', + duration: 2000 + }) + return + } + } + + // 靠边停车时候可以触发 + if (Reflect.get(this.judgeConfigObj, '343') === '0') { + const xmmcStr = this.xmmcStr; + if (xmmcStr == '无' || xmmcStr == '') { + //512[6] 人工项目按钮放大确认 + const param512: string[] = (Reflect.get(this.judgeConfigObj, '512') || '').split(','); + console.info('surenjun', param512) + if (param512[6] !== '0') { + this.amplifiedImgIndex = index; + this.isAmplifyPopShow = true + } else { + const judge = this.judge + await judge.setJudgeItem(projectCode, 1); + } + } else { + if (index === 5) { + Prompt.showToast({ + message: `${xmmcStr}未结束,不允许靠边停车`, + duration: 8000 + }); + } + } + } else { + this.amplifiedImgIndex = index; + this.isAmplifyPopShow = true + } + } + } + + // 获取是否能人工进项目 + getIsExitManualProject = (index: number) => { + + const judgeConfigObj = this.judgeConfigObj; + const artSubject3ProjectsCodesArr = this.artSubject3ProjectsCodesArr; + const projectsObj = this.projectsObj; + const carztStr = this.carztStr; + const isManualProjectIn = this.isManualProjectIn; + const isProjectIn = this.isProjectIn; + const getProjectIsInRoad = this.getProjectIsInRoad; + + const projectCode = artSubject3ProjectsCodesArr[index]; + const currentProject: ProjectInfo = Reflect.get(projectsObj, projectCode) + if (currentProject === undefined) { + return false + } + const projectType = currentProject.type; + + //不允许人工触发的项目列表,以","分隔 + const unExitManualProjects: string[] = Reflect.get(this.judgeConfigObj, '332').split(',') || []; + //直线行驶中不进其他考试项目(0-否 1-是) + const param348: string = Reflect.get(this.judgeConfigObj, '348') || '0', + //里程不够允许手工点靠边停车(0-否 1-是) + param387: string = Reflect.get(this.judgeConfigObj, '387') || '0', + //里程不够不报靠边停车(0-否+1-是+2-必考项目未完成且里程不够不报项目) + param319: string = Reflect.get(this.judgeConfigObj, '319') || '0', + //人工项目是否能取消 1:可取消; + param340: string = Reflect.get(this.judgeConfigObj, '340') || '0', + //307参数里设置的项目,项目已经做过,后续不能人工触发; + param307: string[] = (Reflect.get(this.judgeConfigObj, '307') || '').split(','); + + //非行驶状态(没有速度),人工项目不能触发(按钮灰色) + if (carztStr === '停车') { + return false + } + + //车上是否能进行人工操作(0-能1-不能人工评判2-不能人工进项目3-都不能) + if (Reflect.get(this.judgeConfigObj, '342') === '3' || Reflect.get(this.judgeConfigObj, '342') === '2') { + return false + } + + //不允许人工触发的项目列表 + if (unExitManualProjects.includes(artSubject3ProjectsCodesArr[index])) { + return false + } + + //项目进行中不能人工触发 + if (isProjectIn) { + if (param340 == '1') { + if (isManualProjectIn && (currentProject.type == '2')) { + return true + } else { + return false + } + } + return false + } + + //项目路段信息判断 + if (!getProjectIsInRoad(projectCode + '')) { + return false + } + + const project_9: ProjectInfo = Reflect.get(projectsObj, '9') + // 直线行驶中不进其他考试项目(0-否 1-是) + if (param348 == '0' && project_9.type == '2') { + return index === 0 ? true : false + } + + //项目已经做过,后续不能人工触发 + if (param307.includes(projectCode) && (projectType == '3' || projectType == '4')) { + return false + } + + //319不为0,或者387不为1,里程不够时,靠边停车项目不能触发 + if ((param387 != '1' || param319 != '0') && index === 5) { + const examMileage = this.examMileage + const isRequiredProjectsEnd = this.isRequiredProjectsEnd + const jl = this.jl + //里程是否达标 && 必考项目是否全完成 + return jl >= Number(examMileage) && isRequiredProjectsEnd + } + return true + } + // 判断项目是否在当前路段号 + getProjectIsInRoad = (projectCode: string,) => { + const judgeConfigObj = this.judgeConfigObj; + const lane = this.lane; + const road = lane.road; + const num = lane.num; + const count = lane.count; + + const param_3: string[] = (Reflect.get(this.judgeConfigObj, '514')?.split(',') || []); + const param_4: string[] = (Reflect.get(this.judgeConfigObj, '515')?.split(',') || []); + const param_10: string[] = (Reflect.get(this.judgeConfigObj, '516')?.split(',') || []); + const param_11: string[] = (Reflect.get(this.judgeConfigObj, '517')?.split(',') || []); + const param_9: string[] = (Reflect.get(this.judgeConfigObj, '518')?.split(',') || []); + const param_12: string[] = (Reflect.get(this.judgeConfigObj, '519')?.split(',') || []); + + const projectRoads: ProjectRoads = { + //直线行驶 + param_3, + //变更车道 + param_4, + //超车 + param_10, + //靠边停车 + param_11, + //会车 + param_9, + //掉头 + param_12, + }; + + + //未测绘得道路上或者不在差分状态 + if (road === '') { + return false + } + const currentProjectRoad: string[] = Reflect.get(projectRoads, `param_${projectCode}`) + if (currentProjectRoad.length == 0) { + return true + } + + //设置了514-519参数,只能在设置的路段触发对应项目 + if (currentProjectRoad.includes(road)) { + //如果525为1,则514-519设置的路段不能触发对应项目 + if (Reflect.get(this.judgeConfigObj, '525') == '1') { + return false + } + } else { + return false + } + + //405参数为2是,如果在最左侧车道,超车项目不能触发; + if (projectCode == '10' && + Reflect.get(this.judgeConfigObj, '405') == '2' && + (num === count) && + num > 0 + ) { + return false + } + + // 车道总数少于2条,超车和变道不能触发 + if (projectCode == '10' || projectCode == '4') { + if (count < 2) { + return false + } + } + return true + + } + // 获取人工项目是否已做 + getIsEndManualProject = (index: number) => { + const projectName = this.artSubject3Projects[index]; + const projectCode = this.artSubject3ProjectsCodesArr[index]; + const currentProject: ProjectInfo = Reflect.get(this.projectsObj, projectCode) + const type = currentProject.type + if (type == '2') { + return projectName + } + return (type == '3' || type == '4') ? `${projectName}_red` : `${projectName}_green`; + } + // 获取是否能进行人工评判 + getIsManualKf = () => { + if (this.examSubject == '3') { + //杭州训练模式不允许人工评判 + if (this.singlePlay && Reflect.get(this.judgeConfigObj, '211') == 'zjhz') { + return false + } + if (Reflect.get(this.judgeConfigObj, '342') == '0') { + return true + } + } else { + return false + } + } +} + +export const JudgePage = Index diff --git a/entry/src/main/ets/pages/judgeSDK/utils/Common.ets b/entry/src/main/ets/pages/judgeSDK/utils/Common.ets index 2bdab66..3d1dc23 100644 --- a/entry/src/main/ets/pages/judgeSDK/utils/Common.ets +++ b/entry/src/main/ets/pages/judgeSDK/utils/Common.ets @@ -23,7 +23,7 @@ export function deepClone(target: T): T { const result: ESObject = Array.isArray(target) ? [] : {}; const keys = Object.keys(target) as Array; //注解二 keys.forEach(key => { - Reflect.set(result, key, deepClone(Reflect.get(target, key))); + // Reflect.set(result, key, deepClone(Reflect.get(target, key))); }); return result; } diff --git a/entry/src/main/module.json5 b/entry/src/main/module.json5 index 27575cf..8ea5837 100644 --- a/entry/src/main/module.json5 +++ b/entry/src/main/module.json5 @@ -5,9 +5,8 @@ "description": "$string:module_desc", "mainElement": "EntryAbility", "deviceTypes": [ - "phone", - "tablet", - "2in1" + "default", + "tablet" ], "deliveryWithInstall": true, "installationFree": false, @@ -45,7 +44,7 @@ "name": "ohos.extension.backup", "resource": "$profile:backup_config" } - ], + ] } ], "requestPermissions": [ @@ -82,13 +81,13 @@ "reason": "$string:Permission_application" }, { - "name": "ohos.permission.GET_NETWORK_INFO", + "name": "ohos.permission.GET_NETWORK_INFO" }, { - "name": "ohos.permission.SET_NETWORK_INFO", + "name": "ohos.permission.SET_NETWORK_INFO" }, { - "name": "ohos.permission.REBOOT", + "name": "ohos.permission.REBOOT" }, { "name": "ohos.permission.MICROPHONE", diff --git a/entry/src/ohosTest/module.json5 b/entry/src/ohosTest/module.json5 index 55725a9..6902687 100644 --- a/entry/src/ohosTest/module.json5 +++ b/entry/src/ohosTest/module.json5 @@ -3,9 +3,8 @@ "name": "entry_test", "type": "feature", "deviceTypes": [ - "phone", - "tablet", - "2in1" + "default", + "tablet" ], "deliveryWithInstall": true, "installationFree": false diff --git a/hvigor/hvigor-config.json5 b/hvigor/hvigor-config.json5 index 06b2783..76acde4 100644 --- a/hvigor/hvigor-config.json5 +++ b/hvigor/hvigor-config.json5 @@ -1,6 +1,7 @@ { - "modelVersion": "5.0.0", + "hvigorVersion": "3.2.4", "dependencies": { + "@ohos/hvigor-ohos-plugin": "3.2.4" }, "execution": { // "analyze": "normal", /* Define the build analyze mode. Value: [ "normal" | "advanced" | false ]. Default: "normal" */ @@ -19,4 +20,4 @@ // "maxOldSpaceSize": 8192 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process. Default: 8192*/ // "exposeGC": true /* Enable to trigger garbage collection explicitly. Default: true*/ } -} +} \ No newline at end of file diff --git a/hvigor/hvigor-wrapper.js b/hvigor/hvigor-wrapper.js new file mode 100755 index 0000000..372eae8 --- /dev/null +++ b/hvigor/hvigor-wrapper.js @@ -0,0 +1 @@ +"use strict";var u=require("path"),D=require("os"),e=require("fs"),t=require("crypto"),r=require("child_process"),n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},i={},C={},F=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(C,"__esModule",{value:!0}),C.maxPathLength=C.isMac=C.isLinux=C.isWindows=void 0;const E=F(D),A="Windows_NT",o="Darwin";function a(){return E.default.type()===A}function c(){return E.default.type()===o}C.isWindows=a,C.isLinux=function(){return"Linux"===E.default.type()},C.isMac=c,C.maxPathLength=function(){return c()?1016:a()?259:4095},function(e){var t=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),r=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),i=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&t(D,u,e);return r(D,u),D};Object.defineProperty(e,"__esModule",{value:!0}),e.WORK_SPACE=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.PROJECT_CACHES=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const F=i(D),E=i(u),A=C;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,A.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,A.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=E.resolve(F.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=E.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.PROJECT_CACHES="project_caches",e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=E.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=E.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=E.resolve(e.HVIGOR_USER_HOME,e.PROJECT_CACHES),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_WRAPPER_HOME=E.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.WORK_SPACE="workspace"}(i);var s={},l={};Object.defineProperty(l,"__esModule",{value:!0}),l.logInfoPrintConsole=l.logErrorAndExit=void 0,l.logErrorAndExit=function(u){u instanceof Error?console.error(u.message):console.error(u),process.exit(-1)},l.logInfoPrintConsole=function(u){console.log(u)};var B=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),d=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),f=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&B(D,u,e);return d(D,u),D};Object.defineProperty(s,"__esModule",{value:!0});var _=s.executeBuild=void 0;const p=f(e),O=f(u),h=l;_=s.executeBuild=function(u){const D=O.resolve(u,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const u=p.realpathSync(D);require(u)}catch(e){(0,h.logErrorAndExit)(`Error: ENOENT: no such file ${D},delete ${u} and retry.`)}};var P={},v={};!function(u){var D=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(u,"__esModule",{value:!0}),u.hashFile=u.hash=u.createHash=void 0;const r=D(t),i=D(e);u.createHash=(u="MD5")=>r.default.createHash(u);u.hash=(D,e)=>(0,u.createHash)(e).update(D).digest("hex");u.hashFile=(D,e)=>{if(i.default.existsSync(D))return(0,u.hash)(i.default.readFileSync(D,"utf-8"),e)}}(v);var g={},m={},R={};Object.defineProperty(R,"__esModule",{value:!0}),R.Unicode=void 0;class y{}R.Unicode=y,y.SPACE_SEPARATOR=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,y.ID_START=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,y.ID_CONTINUE=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(m,"__esModule",{value:!0}),m.JudgeUtil=void 0;const I=R;m.JudgeUtil=class{static isIgnoreChar(u){return"string"==typeof u&&("\t"===u||"\v"===u||"\f"===u||" "===u||" "===u||"\ufeff"===u||"\n"===u||"\r"===u||"\u2028"===u||"\u2029"===u)}static isSpaceSeparator(u){return"string"==typeof u&&I.Unicode.SPACE_SEPARATOR.test(u)}static isIdStartChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||I.Unicode.ID_START.test(u))}static isIdContinueChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||"‌"===u||"‍"===u||I.Unicode.ID_CONTINUE.test(u))}static isDigitWithoutZero(u){return/[1-9]/.test(u)}static isDigit(u){return"string"==typeof u&&/[0-9]/.test(u)}static isHexDigit(u){return"string"==typeof u&&/[0-9A-Fa-f]/.test(u)}};var N=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(g,"__esModule",{value:!0}),g.parseJsonText=g.parseJsonFile=void 0;const b=N(e),S=N(D),w=N(u),H=m;var x;!function(u){u[u.Char=0]="Char",u[u.EOF=1]="EOF",u[u.Identifier=2]="Identifier"}(x||(x={}));let M,T,V,G,j,J,W="start",U=[],L=0,$=1,k=0,K=!1,z="default",q="'",Z=1;function X(u,D=!1){T=String(u),W="start",U=[],L=0,$=1,k=0,G=void 0,K=D;do{M=Q(),nu[W]()}while("eof"!==M.type);return G}function Q(){for(z="default",j="",q="'",Z=1;;){J=Y();const u=Du[z]();if(u)return u}}function Y(){if(T[L])return String.fromCodePoint(T.codePointAt(L))}function uu(){const u=Y();return"\n"===u?($++,k=0):u?k+=u.length:k++,u&&(L+=u.length),u}g.parseJsonFile=function(u,D=!1,e="utf-8"){const t=b.default.readFileSync(w.default.resolve(u),{encoding:e});try{return X(t,D)}catch(D){if(D instanceof SyntaxError){const e=D.message.split("at");if(2===e.length)throw new Error(`${e[0].trim()}${S.default.EOL}\t at ${u}:${e[1].trim()}`)}throw new Error(`${u} is not in valid JSON/JSON5 format.`)}},g.parseJsonText=X;const Du={default(){switch(J){case"/":return uu(),void(z="comment");case void 0:return uu(),eu("eof")}if(!H.JudgeUtil.isIgnoreChar(J)&&!H.JudgeUtil.isSpaceSeparator(J))return Du[W]();uu()},start(){z="value"},beforePropertyName(){switch(J){case"$":case"_":return j=uu(),void(z="identifierName");case"\\":return uu(),void(z="identifierNameStartEscape");case"}":return eu("punctuator",uu());case'"':case"'":return q=J,uu(),void(z="string")}if(H.JudgeUtil.isIdStartChar(J))return j+=uu(),void(z="identifierName");throw Eu(x.Char,uu())},afterPropertyName(){if(":"===J)return eu("punctuator",uu());throw Eu(x.Char,uu())},beforePropertyValue(){z="value"},afterPropertyValue(){switch(J){case",":case"}":return eu("punctuator",uu())}throw Eu(x.Char,uu())},beforeArrayValue(){if("]"===J)return eu("punctuator",uu());z="value"},afterArrayValue(){switch(J){case",":case"]":return eu("punctuator",uu())}throw Eu(x.Char,uu())},end(){throw Eu(x.Char,uu())},comment(){switch(J){case"*":return uu(),void(z="multiLineComment");case"/":return uu(),void(z="singleLineComment")}throw Eu(x.Char,uu())},multiLineComment(){switch(J){case"*":return uu(),void(z="multiLineCommentAsterisk");case void 0:throw Eu(x.Char,uu())}uu()},multiLineCommentAsterisk(){switch(J){case"*":return void uu();case"/":return uu(),void(z="default");case void 0:throw Eu(x.Char,uu())}uu(),z="multiLineComment"},singleLineComment(){switch(J){case"\n":case"\r":case"\u2028":case"\u2029":return uu(),void(z="default");case void 0:return uu(),eu("eof")}uu()},value(){switch(J){case"{":case"[":return eu("punctuator",uu());case"n":return uu(),tu("ull"),eu("null",null);case"t":return uu(),tu("rue"),eu("boolean",!0);case"f":return uu(),tu("alse"),eu("boolean",!1);case"-":case"+":return"-"===uu()&&(Z=-1),void(z="numerical");case".":case"0":case"I":case"N":return void(z="numerical");case'"':case"'":return q=J,uu(),j="",void(z="string")}if(void 0===J||!H.JudgeUtil.isDigitWithoutZero(J))throw Eu(x.Char,uu());z="numerical"},numerical(){switch(J){case".":return j=uu(),void(z="decimalPointLeading");case"0":return j=uu(),void(z="zero");case"I":return uu(),tu("nfinity"),eu("numeric",Z*(1/0));case"N":return uu(),tu("aN"),eu("numeric",NaN)}if(void 0!==J&&H.JudgeUtil.isDigitWithoutZero(J))return j=uu(),void(z="decimalInteger");throw Eu(x.Char,uu())},zero(){switch(J){case".":case"e":case"E":return void(z="decimal");case"x":case"X":return j+=uu(),void(z="hexadecimal")}return eu("numeric",0)},decimalInteger(){switch(J){case".":case"e":case"E":return void(z="decimal")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimal(){switch(J){case".":j+=uu(),z="decimalFraction";break;case"e":case"E":j+=uu(),z="decimalExponent"}},decimalPointLeading(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalFraction");throw Eu(x.Char,uu())},decimalFraction(){switch(J){case"e":case"E":return j+=uu(),void(z="decimalExponent")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimalExponent(){switch(J){case"+":case"-":return j+=uu(),void(z="decimalExponentSign")}if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentSign(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentInteger(){if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},hexadecimal(){if(H.JudgeUtil.isHexDigit(J))return j+=uu(),void(z="hexadecimalInteger");throw Eu(x.Char,uu())},hexadecimalInteger(){if(!H.JudgeUtil.isHexDigit(J))return eu("numeric",Z*Number(j));j+=uu()},identifierNameStartEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":break;default:if(!H.JudgeUtil.isIdStartChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},identifierName(){switch(J){case"$":case"_":case"‌":case"‍":return void(j+=uu());case"\\":return uu(),void(z="identifierNameEscape")}if(!H.JudgeUtil.isIdContinueChar(J))return eu("identifier",j);j+=uu()},identifierNameEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":case"‌":case"‍":break;default:if(!H.JudgeUtil.isIdContinueChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},string(){switch(J){case"\\":return uu(),void(j+=function(){const u=Y(),D=function(){switch(Y()){case"b":return uu(),"\b";case"f":return uu(),"\f";case"n":return uu(),"\n";case"r":return uu(),"\r";case"t":return uu(),"\t";case"v":return uu(),"\v"}return}();if(D)return D;switch(u){case"0":if(uu(),H.JudgeUtil.isDigit(Y()))throw Eu(x.Char,uu());return"\0";case"x":return uu(),function(){let u="",D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());if(u+=uu(),D=Y(),!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());return u+=uu(),String.fromCodePoint(parseInt(u,16))}();case"u":return uu(),ru();case"\n":case"\u2028":case"\u2029":return uu(),"";case"\r":return uu(),"\n"===Y()&&uu(),""}if(void 0===u||H.JudgeUtil.isDigitWithoutZero(u))throw Eu(x.Char,uu());return uu()}());case'"':case"'":if(J===q){const u=eu("string",j);return uu(),u}return void(j+=uu());case"\n":case"\r":case void 0:throw Eu(x.Char,uu());case"\u2028":case"\u2029":!function(u){console.warn(`JSON5: '${Fu(u)}' in strings is not valid ECMAScript; consider escaping.`)}(J)}j+=uu()}};function eu(u,D){return{type:u,value:D,line:$,column:k}}function tu(u){for(const D of u){if(Y()!==D)throw Eu(x.Char,uu());uu()}}function ru(){let u="",D=4;for(;D-- >0;){const D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());u+=uu()}return String.fromCodePoint(parseInt(u,16))}const nu={start(){if("eof"===M.type)throw Eu(x.EOF);iu()},beforePropertyName(){switch(M.type){case"identifier":case"string":return V=M.value,void(W="afterPropertyName");case"punctuator":return void Cu();case"eof":throw Eu(x.EOF)}},afterPropertyName(){if("eof"===M.type)throw Eu(x.EOF);W="beforePropertyValue"},beforePropertyValue(){if("eof"===M.type)throw Eu(x.EOF);iu()},afterPropertyValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforePropertyName");case"}":Cu()}},beforeArrayValue(){if("eof"===M.type)throw Eu(x.EOF);"punctuator"!==M.type||"]"!==M.value?iu():Cu()},afterArrayValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforeArrayValue");case"]":Cu()}},end(){}};function iu(){const u=function(){let u;switch(M.type){case"punctuator":switch(M.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=M.value}return u}();if(K&&"object"==typeof u&&(u._line=$,u._column=k),void 0===G)G=u;else{const D=U[U.length-1];Array.isArray(D)?K&&"object"!=typeof u?D.push({value:u,_line:$,_column:k}):D.push(u):D[V]=K&&"object"!=typeof u?{value:u,_line:$,_column:k}:u}!function(u){if(u&&"object"==typeof u)U.push(u),W=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}}(u)}function Cu(){U.pop();const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}function Fu(u){const D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){const D=u.charCodeAt(0).toString(16);return`\\x${`00${D}`.substring(D.length)}`}return u}function Eu(u,D){let e="";switch(u){case x.Char:e=void 0===D?`JSON5: invalid end of input at ${$}:${k}`:`JSON5: invalid character '${Fu(D)}' at ${$}:${k}`;break;case x.EOF:e=`JSON5: invalid end of input at ${$}:${k}`;break;case x.Identifier:k-=5,e=`JSON5: invalid identifier character at ${$}:${k}`}const t=new Au(e);return t.lineNumber=$,t.columnNumber=k,t}class Au extends SyntaxError{}var ou={},au=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),cu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),su=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&au(D,u,e);return cu(D,u),D},lu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(ou,"__esModule",{value:!0}),ou.isFileExists=ou.offlinePluginConversion=ou.executeCommand=ou.getNpmPath=ou.hasNpmPackInPaths=void 0;const Bu=r,du=lu(e),fu=su(u),_u=i,pu=l;ou.hasNpmPackInPaths=function(u,D){try{return require.resolve(u,{paths:[...D]}),!0}catch(u){return!1}},ou.getNpmPath=function(){const u=process.execPath;return fu.join(fu.dirname(u),_u.NPM_TOOL)},ou.executeCommand=function(u,D,e){0!==(0,Bu.spawnSync)(u,D,e).status&&(0,pu.logErrorAndExit)(`Error: ${u} ${D} execute failed.See above for details.`)},ou.offlinePluginConversion=function(u,D){return D.startsWith("file:")||D.endsWith(".tgz")?fu.resolve(u,_u.HVIGOR,D.replace("file:","")):D},ou.isFileExists=function(u){return du.default.existsSync(u)&&du.default.statSync(u).isFile()};var Ou=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),hu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),Pu=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&Ou(D,u,e);return hu(D,u),D},vu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(P,"__esModule",{value:!0});var gu=P.initProjectWorkSpace=void 0;const mu=Pu(e),Ru=vu(D),yu=Pu(u),Iu=v,Nu=i,bu=g,Su=l,wu=ou;let Hu,xu,Mu;function Tu(u,D,e){return void 0!==e.dependencies&&(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,D.dependencies[u])===yu.normalize(e.dependencies[u])}function Vu(){const u=yu.join(Mu,Nu.WORK_SPACE);if((0,Su.logInfoPrintConsole)("Hvigor cleaning..."),!mu.existsSync(u))return;const D=mu.readdirSync(u);if(!D||0===D.length)return;const e=yu.resolve(Mu,"node_modules","@ohos","hvigor","bin","hvigor.js");mu.existsSync(e)&&(0,wu.executeCommand)(process.argv[0],[e,"--stop-daemon"],{});try{D.forEach((D=>{mu.rmSync(yu.resolve(u,D),{recursive:!0})}))}catch(D){(0,Su.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${u}.`)}}gu=P.initProjectWorkSpace=function(){if(Hu=function(){const u=yu.resolve(Nu.HVIGOR_PROJECT_WRAPPER_HOME,Nu.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);mu.existsSync(u)||(0,Su.logErrorAndExit)(`Error: Hvigor config file ${u} does not exist.`);return(0,bu.parseJsonFile)(u)}(),Mu=function(u){let D;D=function(u){let D=u.hvigorVersion;if(D.startsWith("file:")||D.endsWith(".tgz"))return!1;const e=u.dependencies,t=Object.getOwnPropertyNames(e);for(const u of t){const D=e[u];if(D.startsWith("file:")||D.endsWith(".tgz"))return!1}if(1===t.length&&"@ohos/hvigor-ohos-plugin"===t[0])return D>"2.5.0";return!1}(u)?function(u){let D=`${Nu.HVIGOR_ENGINE_PACKAGE_NAME}@${u.hvigorVersion}`;const e=u.dependencies;if(e){Object.getOwnPropertyNames(e).sort().forEach((u=>{D+=`,${u}@${e[u]}`}))}return(0,Iu.hash)(D)}(u):(0,Iu.hash)(process.cwd());return yu.resolve(Ru.default.homedir(),".hvigor","project_caches",D)}(Hu),xu=function(){const u=yu.resolve(Mu,Nu.WORK_SPACE,Nu.DEFAULT_PACKAGE_JSON);return mu.existsSync(u)?(0,bu.parseJsonFile)(u):{dependencies:{}}}(),!(0,wu.hasNpmPackInPaths)(Nu.HVIGOR_ENGINE_PACKAGE_NAME,[yu.join(Mu,Nu.WORK_SPACE)])||(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion)!==xu.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]||!function(){function u(u){const D=null==u?void 0:u.dependencies;return void 0===D?0:Object.getOwnPropertyNames(D).length}const D=u(Hu),e=u(xu);if(D+1!==e)return!1;for(const u in null==Hu?void 0:Hu.dependencies)if(!(0,wu.hasNpmPackInPaths)(u,[yu.join(Mu,Nu.WORK_SPACE)])||!Tu(u,Hu,xu))return!1;return!0}()){Vu();try{!function(){(0,Su.logInfoPrintConsole)("Hvigor installing...");for(const u in Hu.dependencies)Hu.dependencies[u]&&(Hu.dependencies[u]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.dependencies[u]));const u={dependencies:{...Hu.dependencies}};u.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion);const D=yu.join(Mu,Nu.WORK_SPACE);try{mu.mkdirSync(D,{recursive:!0});const e=yu.resolve(D,Nu.DEFAULT_PACKAGE_JSON);mu.writeFileSync(e,JSON.stringify(u))}catch(u){(0,Su.logErrorAndExit)(u)}(function(){const u=["config","set","store-dir",Nu.HVIGOR_PNPM_STORE_PATH],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)})(),function(){const u=["install"],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)}(),(0,Su.logInfoPrintConsole)("Hvigor install success.")}()}catch(u){Vu()}}return Mu};var Gu={};!function(t){var C=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),F=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),E=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&C(D,u,e);return F(D,u),D},A=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(t,"__esModule",{value:!0}),t.executeInstallPnpm=t.isPnpmInstalled=t.environmentHandler=t.checkNpmConifg=t.PNPM_VERSION=void 0;const o=r,a=E(e),c=A(D),s=E(u),B=i,d=l,f=ou;t.PNPM_VERSION="7.30.0",t.checkNpmConifg=function(){const u=s.resolve(B.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),D=s.resolve(c.default.homedir(),".npmrc");if((0,f.isFileExists)(u)||(0,f.isFileExists)(D))return;const e=(0,f.getNpmPath)(),t=(0,o.spawnSync)(e,["config","get","prefix"],{cwd:B.HVIGOR_PROJECT_ROOT_DIR});if(0!==t.status||!t.stdout)return void(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const r=s.resolve(`${t.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,f.isFileExists)(r)||(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},t.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},t.isPnpmInstalled=function(){return!!a.existsSync(B.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,f.hasNpmPackInPaths)("pnpm",[B.HVIGOR_WRAPPER_TOOLS_HOME])},t.executeInstallPnpm=function(){(0,d.logInfoPrintConsole)(`Installing pnpm@${t.PNPM_VERSION}...`);const u=(0,f.getNpmPath)();!function(){const u=s.resolve(B.HVIGOR_WRAPPER_TOOLS_HOME,B.DEFAULT_PACKAGE_JSON);try{a.existsSync(B.HVIGOR_WRAPPER_TOOLS_HOME)||a.mkdirSync(B.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const D={dependencies:{}};D.dependencies[B.PNPM]=t.PNPM_VERSION,a.writeFileSync(u,JSON.stringify(D))}catch(D){(0,d.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${u} failed.`)}}(),(0,f.executeCommand)(u,["install","pnpm"],{cwd:B.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,d.logInfoPrintConsole)("Pnpm install success.")}}(Gu),function(){Gu.checkNpmConifg(),Gu.environmentHandler(),Gu.isPnpmInstalled()||Gu.executeInstallPnpm();const D=gu();_(u.join(D,i.WORK_SPACE))}(); \ No newline at end of file diff --git a/oh-package-lock.json5 b/oh-package-lock.json5 index c1bf6e0..d61f840 100644 --- a/oh-package-lock.json5 +++ b/oh-package-lock.json5 @@ -1,26 +1,19 @@ { - "meta": { - "stableOrder": true - }, - "lockfileVersion": 3, + "lockfileVersion": 2, "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", "specifiers": { "@ohos/crypto-js@2.0.3": "@ohos/crypto-js@2.0.3", "@ohos/hypium@1.0.19": "@ohos/hypium@1.0.19" }, "packages": { - "@ohos/crypto-js@2.0.3": { - "name": "@ohos/crypto-js", - "version": "2.0.3", - "integrity": "sha512-LuHaR1kD5PxnOXnuR1fWvPwGtbed9Q/QGzk6JOh8y5Wdzvi8brPesODZiaWf9scOVRHsbTPOtZw91vWB35p1vQ==", - "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/crypto-js/-/crypto-js-2.0.3.har", + "@ohos/hypium@1.0.19": { + "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.19.har", + "integrity": "sha512-cEjDgLFCm3cWZDeRXk7agBUkPqjWxUo6AQeiu0gEkb3J8ESqlduQLSIXeo3cCsm8U/asL7iKjF85ZyOuufAGSQ==", "registryType": "ohpm" }, - "@ohos/hypium@1.0.19": { - "name": "@ohos/hypium", - "version": "1.0.19", - "integrity": "sha512-cEjDgLFCm3cWZDeRXk7agBUkPqjWxUo6AQeiu0gEkb3J8ESqlduQLSIXeo3cCsm8U/asL7iKjF85ZyOuufAGSQ==", - "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.19.har", + "@ohos/crypto-js@2.0.3": { + "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/crypto-js/-/crypto-js-2.0.3.har", + "integrity": "sha512-LuHaR1kD5PxnOXnuR1fWvPwGtbed9Q/QGzk6JOh8y5Wdzvi8brPesODZiaWf9scOVRHsbTPOtZw91vWB35p1vQ==", "registryType": "ohpm" } }