Merge remote-tracking branch 'origin/api10' into api10
This commit is contained in:
commit
aa878365fe
@ -1,11 +1,17 @@
|
||||
import { getSyncData } from '../common/service/initable';
|
||||
import request from '../utils/Request';
|
||||
|
||||
|
||||
import http from '@ohos.net.http';
|
||||
import common from '@ohos.app.ability.common';
|
||||
import { DrvexamType, GetJudgeParamsType } from '../model';
|
||||
import {
|
||||
CarInfoType,
|
||||
DrvexamType,
|
||||
GetJudgeParamsType,
|
||||
MASYSSETTableType,
|
||||
RegulatoryInterfaceParams,
|
||||
WuxiExamType
|
||||
} from '../model';
|
||||
import FileUtils from '../utils/FileUtils';
|
||||
import { GetSyncData } from '../utils/table/Operation';
|
||||
|
||||
//监管接口序列号映射
|
||||
const gjxlhObj: Record<string, string> = {
|
||||
@ -22,34 +28,35 @@ interface WR {
|
||||
code: number
|
||||
}
|
||||
|
||||
export default async function writeObjectOutNew(data, filePath: string): Promise<WR> {
|
||||
export default async function writeObjectOutNew(data: RegulatoryInterfaceParams, filePath: string): Promise<WR> {
|
||||
const context: common.UIAbilityContext = AppStorage.get('context')
|
||||
const fileUtil = new FileUtils(context);
|
||||
// const { jkid, drvexam } = data;
|
||||
const basic = await getBasicConfig(data.jkid);
|
||||
const params = await getParams(data.jkid, data.drvexam);
|
||||
// const { wglb, jkxlh, glbm, jgbh, sjbs } = basic;
|
||||
|
||||
if (filePath) {
|
||||
await fileUtil.editFile(`${filePath}/wuxi_exam_data.txt`, JSON.stringify({
|
||||
let examData: WuxiExamType = {
|
||||
wglb: basic.wglb,
|
||||
jkxlh: basic.jkxlh,
|
||||
jkxlh: basic.jkxlh || "",
|
||||
glbm: basic.glbm,
|
||||
jgbh: basic.jgbh,
|
||||
sjbs: basic.sjbs,
|
||||
data: params.data,
|
||||
file: {
|
||||
...params.file, param: []
|
||||
},
|
||||
}));
|
||||
sjbs: params.file.sjbs,
|
||||
// params: []
|
||||
}
|
||||
}
|
||||
await fileUtil.editFile(`${filePath}/wuxi_exam_data.txt`, JSON.stringify(examData));
|
||||
}
|
||||
|
||||
// let connectTimeout = sjbs === '02-21-000014' ?60000:1
|
||||
console.info('surenjun', '调用新监管')
|
||||
let temp: WR
|
||||
try {
|
||||
const JGHOST: string = AppStorage.get<string>('JGHOST')
|
||||
temp = await request<WR>({
|
||||
host: globalThis.JGHOST as string,
|
||||
host: JGHOST,
|
||||
method: http.RequestMethod.POST,
|
||||
//是否是新中心
|
||||
isNewCenter: true,
|
||||
@ -86,7 +93,8 @@ export default async function writeObjectOutNew(data, filePath: string): Promise
|
||||
}
|
||||
|
||||
export async function getParams(jkid: string, drvexam: DrvexamType): Promise<GetJudgeParamsType> {
|
||||
const examSubject: number = globalThis.carInfo.examSubject;
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')!
|
||||
const examSubject: string = carInfo.examSubject;
|
||||
switch (jkid) {
|
||||
//开始考试
|
||||
case '17C51':
|
||||
@ -97,7 +105,7 @@ export async function getParams(jkid: string, drvexam: DrvexamType): Promise<Get
|
||||
sfzmhm: drvexam.sfzmhm,
|
||||
kchp: decodeURI(drvexam.kchp),
|
||||
kskm: examSubject.toString(),
|
||||
ksxl: examSubject == 3 ? drvexam.ksxl : undefined,
|
||||
ksxl: examSubject == "3" ? drvexam.ksxl : undefined,
|
||||
kssj: drvexam.kssj
|
||||
}
|
||||
},
|
||||
@ -120,10 +128,10 @@ export async function getParams(jkid: string, drvexam: DrvexamType): Promise<Get
|
||||
param: {
|
||||
sfzmhm: drvexam.sfzmhm,
|
||||
kskm: drvexam.kskm,
|
||||
ksxl: examSubject == 3 ? drvexam.ksxl : undefined,
|
||||
ksxl: examSubject == "3" ? drvexam.ksxl : undefined,
|
||||
kchp: decodeURI(drvexam.kchp),
|
||||
//TODO 待验证 科目三无
|
||||
sbbh: examSubject == 3 ? undefined : drvexam.sbxh,
|
||||
sbbh: examSubject == "3" ? undefined : drvexam.sbxh,
|
||||
kssj: drvexam.kssj,
|
||||
ksxm: drvexam.ksxm,
|
||||
}
|
||||
@ -139,7 +147,7 @@ export async function getParams(jkid: string, drvexam: DrvexamType): Promise<Get
|
||||
data: {
|
||||
sjbs: gjxlhObj[jkid],
|
||||
param: {
|
||||
kffs: drvexam.kffs,
|
||||
kffs: drvexam.kffs.toString(),
|
||||
kfsj: drvexam.kfsj,
|
||||
kfxm: drvexam.kfxm,
|
||||
kfxmmx: drvexam.kfxmmx,
|
||||
@ -180,7 +188,7 @@ export async function getParams(jkid: string, drvexam: DrvexamType): Promise<Get
|
||||
jssj: drvexam.jssj,
|
||||
kskm: examSubject.toString(),
|
||||
ksxl: drvexam.ksxl,
|
||||
sbbh: examSubject == 3 ? undefined : drvexam.sbxh,
|
||||
sbbh: examSubject == "3" ? undefined : drvexam.sbxh,
|
||||
ksxm: drvexam.ksxm,
|
||||
sfzmhm: drvexam.sfzmhm
|
||||
},
|
||||
@ -212,17 +220,18 @@ export async function getParams(jkid: string, drvexam: DrvexamType): Promise<Get
|
||||
}
|
||||
|
||||
//获取基础信息
|
||||
async function getBasicConfig(jkid) {
|
||||
const examSubject = globalThis.carInfo.examSubject;
|
||||
const syssetParam = await getSyncData('MA_SYSSET');
|
||||
let syssetObj = {};
|
||||
async function getBasicConfig(jkid: string): Promise<WuxiExamType> {
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')!
|
||||
const examSubject: string = carInfo.examSubject;
|
||||
const syssetParam: MASYSSETTableType[] = await GetSyncData<MASYSSETTableType>('MA_SYSSET');
|
||||
let syssetObj: Record<string, string> = {};
|
||||
syssetParam.forEach(sys => {
|
||||
syssetObj[sys.v_no] = decodeURIComponent(sys.v_value)
|
||||
});
|
||||
return {
|
||||
let obj: WuxiExamType = {
|
||||
//外挂类别
|
||||
wglb: examSubject == 2 ? "700203" : "700204",
|
||||
//监管接口序列号
|
||||
wglb: examSubject == "2" ? "700203" : "700204",
|
||||
// //监管接口序列号
|
||||
jkxlh: syssetObj['901'],
|
||||
//管理部门
|
||||
glbm: syssetObj['903'],
|
||||
@ -231,4 +240,5 @@ async function getBasicConfig(jkid) {
|
||||
//接口id
|
||||
sjbs: gjxlhObj[jkid],
|
||||
}
|
||||
return obj
|
||||
}
|
||||
@ -805,3 +805,16 @@ export interface WR {
|
||||
}
|
||||
|
||||
|
||||
// 无锡所数据
|
||||
export interface WuxiExamType {
|
||||
wglb: string
|
||||
jkxlh: string,
|
||||
glbm: string,
|
||||
jgbh: string,
|
||||
sjbs: string,
|
||||
data?: JudgeData,
|
||||
file?: JudgeFile
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -51,6 +51,7 @@ export interface TimeSynchronizationRspBody {
|
||||
paraKdid?: string
|
||||
kdid?: string
|
||||
}
|
||||
|
||||
export interface examinerLoginRsp {
|
||||
bz1?: string;
|
||||
fieldid?: string
|
||||
|
||||
@ -130,7 +130,11 @@ struct Index {
|
||||
}, router.RouterMode.Single);
|
||||
|
||||
console.log('res11', JSON.stringify(res))
|
||||
const examinerLoginInfo: ExaminerLoginInfo = res.examinerLoginRsp.body
|
||||
const examinerLoginInfo: ExaminerLoginInfo | undefined = res.examinerLoginRsp?.body;
|
||||
if (!examinerLoginInfo) {
|
||||
console.error('examinerLoginRsp.body is undefined');
|
||||
return;
|
||||
}
|
||||
examinerLoginInfo.username = this.inputTextArr[0]
|
||||
AppStorage.setOrCreate<ExaminerLoginInfo>('examinerInfo', examinerLoginInfo)
|
||||
}).catch((err: BusinessError) => {
|
||||
|
||||
@ -60,7 +60,7 @@ struct Index {
|
||||
private fileHelper!: FileHelper
|
||||
private interval = -1;
|
||||
private avPlayer!: VoiceAnnounce
|
||||
private timeInfo: TimeSynchronizationRspBody
|
||||
private timeInfo!: TimeSynchronizationRspBody
|
||||
private context = getContext(this) as common.UIAbilityContext;
|
||||
|
||||
async aboutToAppear() {
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import TopLogo from './compontents/TopLogo'
|
||||
import { registrationDeviceNo } from '../api/checkCar'
|
||||
import deviceManager from '@ohos.distributedHardware.deviceManager'
|
||||
import promptAction from '@ohos.promptAction'
|
||||
|
||||
import common from '@ohos.app.ability.common'
|
||||
import { ApiResponseType, DeviceParamType } from '../model'
|
||||
import dayTs from '../utils/Date'
|
||||
import FileUtils from '../utils/FileUtils'
|
||||
import Prompt from '@system.prompt'
|
||||
|
||||
@Entry
|
||||
@Component
|
||||
@ -128,8 +128,9 @@ struct Index {
|
||||
AppStorage.setOrCreate('deviceNo', this.ip)
|
||||
// upDateTableByArray('DeviceInfoTable', [{ deviceId: this.ip }])
|
||||
registrationDeviceNo(param).then((res: ApiResponseType) => {
|
||||
if (res.registrationDeviceNoRsp.head.resultCode == '0') {
|
||||
promptAction.showToast({
|
||||
if (res.registrationDeviceNoRsp && res.registrationDeviceNoRsp.head &&
|
||||
res.registrationDeviceNoRsp.head.resultCode == '0') {
|
||||
Prompt.showToast({
|
||||
message: decodeURIComponent(res.registrationDeviceNoRsp.head.resultMessage),
|
||||
duration: 3000
|
||||
});
|
||||
|
||||
@ -187,18 +187,18 @@ struct UserInfo {
|
||||
alignment: DialogAlignment.Center,
|
||||
},
|
||||
)
|
||||
private filePhoto: FilePhoto
|
||||
private filePhoto!: FilePhoto
|
||||
// 过程照片拍照
|
||||
getPhoto = async () => {
|
||||
//单机模式返回空照片
|
||||
if (this.singlePlay) {
|
||||
return ''
|
||||
} else {
|
||||
const photoBase64: string = await this.filePhoto.getPhoto();
|
||||
const photoBase64: string = (await this.filePhoto.getPhoto()) || "";
|
||||
return photoBase64
|
||||
}
|
||||
}
|
||||
private avPlayer: VoiceAnnounce
|
||||
private avPlayer!: VoiceAnnounce
|
||||
private context = getContext(this) as common.UIAbilityContext;
|
||||
private labelBlocks: LabelBlockType[] = [
|
||||
{ label: '考生姓名', key: 'xm' },
|
||||
@ -220,9 +220,9 @@ struct UserInfo {
|
||||
this.ksksLimit = false
|
||||
this.currentUser = EmptyCandidateObject
|
||||
this.filePhoto = new FilePhoto(this.context);
|
||||
this.singlePlay = AppStorage.get<boolean>('singlePlay')
|
||||
this.examinerLoginInfo = AppStorage.get<ExaminerLoginInfo>('examinerInfo')
|
||||
this.carInfo = AppStorage.get<CarInfoType>('carInfo')
|
||||
this.singlePlay = AppStorage.get<boolean>('singlePlay') || false
|
||||
this.examinerLoginInfo = AppStorage.get<ExaminerLoginInfo>('examinerInfo')!
|
||||
this.carInfo = AppStorage.get<CarInfoType>('carInfo')!
|
||||
//语音功能on
|
||||
// new WebRTCVoice(this.context);
|
||||
//初始化数据
|
||||
@ -264,7 +264,7 @@ struct UserInfo {
|
||||
if (this.dataList.length) {
|
||||
setTimeout(() => {
|
||||
this.currentUser = this.dataList[0]
|
||||
this.currentUser.ksy2 = this.examinerLoginInfo.kgxm
|
||||
this.currentUser.ksy2 = this.examinerLoginInfo.kgxm || ""
|
||||
AppStorage.setOrCreate('lsh', this.currentUser.lsh)
|
||||
}, 200)
|
||||
} else {
|
||||
@ -341,7 +341,7 @@ struct UserInfo {
|
||||
this.currentUser = EmptyCandidateObject
|
||||
setTimeout(() => {
|
||||
this.currentUser = res
|
||||
this.currentUser.ksy2 = this.examinerLoginInfo.kgxm
|
||||
this.currentUser.ksy2 = this.examinerLoginInfo.kgxm || ""
|
||||
}, 200)
|
||||
|
||||
this.examinerLoginInfo.ksyh = res.ksy1sfzmhm
|
||||
@ -371,7 +371,7 @@ struct UserInfo {
|
||||
await SqlInsertTable('USER', [])
|
||||
setTimeout(() => {
|
||||
this.currentUser = this.list[0]
|
||||
this.currentUser.ksy2 = this.examinerLoginInfo.kgxm
|
||||
this.currentUser.ksy2 = this.examinerLoginInfo.kgxm || ""
|
||||
AppStorage.setOrCreate('lsh', this.currentUser.lsh)
|
||||
}, 200)
|
||||
|
||||
@ -384,7 +384,7 @@ struct UserInfo {
|
||||
|
||||
onReadCard(ret: IDCardSDK.IDCardInfo) {
|
||||
console.info(`zzctest xx Read Card ret =${ret.status}`)
|
||||
let thisVar: IdCard = AppStorage.get('indexComponent');
|
||||
let thisVar: IdCard = AppStorage.get('indexComponent')!;
|
||||
|
||||
if (ret.status == 0) { // status = 1 为读到身份证信息; status = 1 为身份证离开读卡器
|
||||
// 收到身份证离开读卡器的事件通知,根据实际业务需要决定是否需要清空之前已读取的身份证信息。
|
||||
@ -517,28 +517,28 @@ struct UserInfo {
|
||||
// this.fileUtil.addFile("temp.log", JSON.stringify(syssetParams))
|
||||
syssetParams.forEach(sys => {
|
||||
//364 绕车一周评判时机(1-开始考试后判 2-开始考试前判)
|
||||
if (sys.v_no === '364' && decodeURIComponent(sys.v_value) == '2') {
|
||||
this.systemParam.Param364 = sys.v_value
|
||||
if (sys.v_no === '364' && decodeURIComponent(sys.v_value || "") == '2') {
|
||||
this.systemParam.Param364 = sys.v_value || ""
|
||||
that.isBoardPrePareSetPopupOpen = true;
|
||||
that.isFirstBoardPrePareSetPopupBtnShow = false
|
||||
}
|
||||
|
||||
//398参数为1 第二场考试上车准备不考
|
||||
if (sys.v_no === '398' && decodeURIComponent(sys.v_value) == '1') {
|
||||
that.systemParam.Param398 = decodeURIComponent(sys.v_value)
|
||||
if (sys.v_no === '398' && decodeURIComponent(sys.v_value || "") == '1') {
|
||||
that.systemParam.Param398 = decodeURIComponent(sys.v_value || "")
|
||||
that.isSecondBoardPrePareSetPopupOpen = true;
|
||||
}
|
||||
|
||||
// 车上没有缺考功能
|
||||
if (sys.v_no === '770') {
|
||||
that.systemParam.Param770Str = sys.v_value;
|
||||
that.systemParam.Param770Str = sys.v_value || "";
|
||||
}
|
||||
// 开始考试前必须解开安全带或关车门
|
||||
if (sys.v_no === '803') {
|
||||
that.systemParam.Param803Str = sys.v_value + '';
|
||||
}
|
||||
//判断是否考生是否按顺序考试
|
||||
if (sys.v_no === '341' && decodeURIComponent(sys.v_value) == '1') {
|
||||
if (sys.v_no === '341' && decodeURIComponent(sys.v_value || "") == '1') {
|
||||
that.systemParam.Param341 = true
|
||||
} else {
|
||||
//todo
|
||||
@ -546,15 +546,15 @@ struct UserInfo {
|
||||
}
|
||||
//开始考试触发方式
|
||||
if (sys.v_no === '612') {
|
||||
that.systemParam.Param612Str = decodeURIComponent(sys.v_value)
|
||||
that.systemParam.Param612Str = decodeURIComponent(sys.v_value || "")
|
||||
}
|
||||
//车上考试过一次就不能缺考
|
||||
if (sys.v_no === '352') {
|
||||
that.systemParam.Param352Str = decodeURIComponent(sys.v_value)
|
||||
that.systemParam.Param352Str = decodeURIComponent(sys.v_value || "")
|
||||
}
|
||||
//828考生待考界面,安全员显示考试员
|
||||
if (sys.v_no === '828') {
|
||||
that.systemParam.Param828Str = decodeURIComponent(sys.v_value)
|
||||
that.systemParam.Param828Str = decodeURIComponent(sys.v_value || "")
|
||||
if (that.systemParam.Param828Str == '1') {
|
||||
that.labelBlocks[5].label = '安全员名'
|
||||
} else {
|
||||
@ -565,7 +565,7 @@ struct UserInfo {
|
||||
}
|
||||
//视频保存天数
|
||||
if (sys.v_no === '305') {
|
||||
that.systemParam.Param305Str = decodeURIComponent(sys.v_value)
|
||||
that.systemParam.Param305Str = decodeURIComponent(sys.v_value || "")
|
||||
if (!Number(this.systemParam.Param305Str)) {
|
||||
that.systemParam.Param305Str = '2'
|
||||
}
|
||||
@ -654,9 +654,9 @@ struct UserInfo {
|
||||
this.type = '2'
|
||||
this.errorDialog.open()
|
||||
this.updateTimeLimit = true
|
||||
let md5Message: string = CryptoJS.MD5(this.carInfo.carId +
|
||||
this.carInfo.examinationRoomId +
|
||||
this.examinerLoginInfo.username).toString();
|
||||
let md5Message: string = CryptoJS.MD5(this.carInfo.carId! +
|
||||
this.carInfo.examinationRoomId! +
|
||||
this.examinerLoginInfo.username!).toString();
|
||||
const param =
|
||||
`<getExaminationStudentInfoReq><head><checkCode>${md5Message}</checkCode></head><body><carId>${this.carInfo.carId}</carId><examinationRoomId>${this.carInfo.examinationRoomId}</examinationRoomId><examinerName>${this.examinerLoginInfo.username}</examinerName><sfzmhm></sfzmhm></body></getExaminationStudentInfoReq>`
|
||||
try {
|
||||
@ -712,10 +712,10 @@ struct UserInfo {
|
||||
});
|
||||
if (this.systemParam.Param828Str == '1' || this.systemParam.Param828Str == '2') {
|
||||
// listData.ksy2=listData.ksy1;
|
||||
listData.ksy2 = this.examinerLoginInfo.kgxm
|
||||
listData.ksy2 = this.examinerLoginInfo.kgxm || ""
|
||||
} else {
|
||||
// listData.ksy2=listData.ksy2;
|
||||
listData.ksy2 = this.examinerLoginInfo.kgxm
|
||||
listData.ksy2 = this.examinerLoginInfo.kgxm || ""
|
||||
}
|
||||
listData.kszp = this.photo + listData.kszp
|
||||
listData.ksmjzp = this.photo + listData.ksmjzp
|
||||
@ -737,7 +737,7 @@ struct UserInfo {
|
||||
if (this.dataList.length) {
|
||||
setTimeout(() => {
|
||||
this.currentUser = user.length ? user[0] : this.dataList[0]
|
||||
this.currentUser.ksy2 = this.examinerLoginInfo.kgxm
|
||||
this.currentUser.ksy2 = this.examinerLoginInfo.kgxm || ""
|
||||
AppStorage.setOrCreate('lsh', this.currentUser.lsh)
|
||||
this.examinerLoginInfo.ksyh = this.currentUser.ksy1sfzmhm
|
||||
AppStorage.setOrCreate('examinerInfo', this.examinerLoginInfo)
|
||||
@ -787,10 +787,10 @@ struct UserInfo {
|
||||
}
|
||||
console.log('JsonJson', JSON.stringify(this.currentUser))
|
||||
const param: ExaminationStuAbsentParams = {
|
||||
carId: this.carInfo.carId,
|
||||
carId: this.carInfo.carId || "",
|
||||
sfzmhm: this.currentUser.sfzmhm,
|
||||
examinationRoomId: this.carInfo.examinationRoomId,
|
||||
username: this.examinerLoginInfo.username,
|
||||
examinationRoomId: this.carInfo.examinationRoomId || "",
|
||||
username: this.examinerLoginInfo.username || "",
|
||||
lsh: this.lsh
|
||||
}
|
||||
console.log('carNo1111', param)
|
||||
@ -804,8 +804,8 @@ struct UserInfo {
|
||||
const param: UDPParamType = {
|
||||
id: 43,
|
||||
list: tmpList,
|
||||
carNo: this.carInfo.carNo,
|
||||
placeId: this.carInfo.examinationRoomId
|
||||
carNo: this.carInfo.carNo || "",
|
||||
placeId: this.carInfo.examinationRoomId || ""
|
||||
}
|
||||
CenterUDPClientInstance.sendData(param)
|
||||
// globalThis.udpClient2.sendMsgExt(param, this.context)
|
||||
|
||||
@ -190,7 +190,7 @@ export default struct FaceCompare {
|
||||
console.log('mmmmm0', 2)
|
||||
this.param.pztd = this.param.rlls
|
||||
const data = await takePhoto(this.param, this.context, 'jt/', 1,)
|
||||
this.base64 = this.imageBase64 + data.base64
|
||||
this.base64 = this.imageBase64 + (data.base64 || "")
|
||||
console.log('mmmmt', this.base64)
|
||||
faceCompare({
|
||||
sfzh: this.sfzh,
|
||||
@ -238,8 +238,8 @@ export default struct FaceCompare {
|
||||
const param: UDPParamType = {
|
||||
id: 46,
|
||||
list: tmpList,
|
||||
carNo: this.carInfo.carNo,
|
||||
placeId: this.carInfo.examinationRoomId,
|
||||
carNo: this.carInfo.carNo || "",
|
||||
placeId: this.carInfo.examinationRoomId || "",
|
||||
sendCallback: () => {
|
||||
this.callBackFlag = true
|
||||
}
|
||||
@ -253,8 +253,8 @@ export default struct FaceCompare {
|
||||
const param2: UDPParamType = {
|
||||
id: 47,
|
||||
list: tmpList,
|
||||
carNo: this.carInfo.carNo,
|
||||
placeId: this.carInfo.examinationRoomId,
|
||||
carNo: this.carInfo.carNo || "",
|
||||
placeId: this.carInfo.examinationRoomId || "",
|
||||
}
|
||||
CenterUDPClientInstance.sendData(param2)
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ import { MarkRule } from '../../judgeSDK/api/judgeSDK.d';
|
||||
import { writeObjectOut } from '../../../api/judge';
|
||||
import JudgeTask from '../../judgeSDK/utils/judgeTask';
|
||||
import FilePhoto from '../../judgeSDK/utils/filePhoto';
|
||||
import { CarInfoType, MASYSSETTableType } from '../../../model';
|
||||
import { CarInfoType, MASYSSETTableType, RegulatoryInterfaceParams, User } from '../../../model';
|
||||
import { GetCurrentTime } from '../../../utils/Common';
|
||||
import FileUtils from '../../../utils/FileUtils';
|
||||
import { GetSyncData } from '../../../utils/table/Operation';
|
||||
@ -16,6 +16,14 @@ interface SEL {
|
||||
bgColor: string
|
||||
}
|
||||
|
||||
interface kfdmItemType {
|
||||
xmdm: number,
|
||||
kfdm: string,
|
||||
markreal: number,
|
||||
markcatalog: string
|
||||
score: number
|
||||
}
|
||||
|
||||
//考前模拟人工扣分
|
||||
@Component
|
||||
export default struct DeductedPopup {
|
||||
@ -28,14 +36,8 @@ export default struct DeductedPopup {
|
||||
@State kslx: string = ''
|
||||
@State ksxl: string = ''
|
||||
@State score: number = 100;
|
||||
@State judgeConfigObj: { [k: string]: any } = {}
|
||||
@State kfdmArr: {
|
||||
xmdm: number,
|
||||
kfdm: string,
|
||||
markreal: number,
|
||||
markcatalog: string
|
||||
score: number
|
||||
}[] = []
|
||||
@State judgeConfigObj: Record<string, string> = {}
|
||||
@State kfdmArr: kfdmItemType[] = []
|
||||
//开始考试前判绕车一周评判是否开启
|
||||
@State isOpen: boolean = false
|
||||
//监管序列号
|
||||
@ -52,7 +54,7 @@ export default struct DeductedPopup {
|
||||
@State universalMarkRules: MarkRule[] = []
|
||||
@State manualMarkRules: MarkRule[] = []
|
||||
@State lineBg: Array<string> = ['#4D4136', '#26231E']
|
||||
@State selectedLine: number = undefined
|
||||
@State selectedLine: number = -1
|
||||
@State carInfo: CarInfoType = {
|
||||
carId: '',
|
||||
examinationRoomId: '',
|
||||
@ -66,23 +68,23 @@ export default struct DeductedPopup {
|
||||
bgColor: '#B36E00'
|
||||
}
|
||||
private context = getContext(this) as common.UIAbilityContext;
|
||||
private judgeTask: JudgeTask
|
||||
private filePhoto: FilePhoto
|
||||
private judgeTask!: JudgeTask
|
||||
private filePhoto!: FilePhoto
|
||||
// 过程照片拍照
|
||||
getPhoto = async (empty?: boolean) => {
|
||||
//单机模式返回空照片
|
||||
if (this.singlePlay) {
|
||||
return ''
|
||||
} else {
|
||||
const photoBase64: string = await this.filePhoto.getPhoto();
|
||||
const photoBase64: string = await this.filePhoto.getPhoto() || "";
|
||||
return photoBase64
|
||||
}
|
||||
}
|
||||
private avPlayer: VoiceAnnounce
|
||||
private avPlayer!: VoiceAnnounce
|
||||
|
||||
async aboutToAppear() {
|
||||
this.carInfo = AppStorage.get<CarInfoType>('carInfo')
|
||||
this.singlePlay = AppStorage.get<boolean>('singlePlay')
|
||||
this.carInfo = AppStorage.get<CarInfoType>('carInfo')!
|
||||
this.singlePlay = AppStorage.get<boolean>('singlePlay')!
|
||||
this.avPlayer = new VoiceAnnounce(this.context);
|
||||
this.judgeTask = new JudgeTask();
|
||||
const mediaTest = new FilePhoto(this.context);
|
||||
@ -131,13 +133,13 @@ export default struct DeductedPopup {
|
||||
async pointsDedute() {
|
||||
const index = this.currentIndex ? this.currentUniversalPageIndex : this.currentPageIndex;
|
||||
const mark = this.universalMarkRules[index * 7 + this.selectedLine];
|
||||
const { judgeConfigObj, kssycs, avPlayer, judgeTask } = this;
|
||||
// const { judgeConfigObj, kssycs, avPlayer, judgeTask } = this;
|
||||
this.kfdmArr.push({
|
||||
xmdm: 1,
|
||||
kfdm: mark.markserial,
|
||||
markreal: mark.markreal,
|
||||
markcatalog: mark.markcatalog,
|
||||
score: mark.score
|
||||
kfdm: mark.markserial || "",
|
||||
markreal: mark.markreal || 0,
|
||||
markcatalog: mark.markcatalog || "",
|
||||
score: mark.score || 0
|
||||
})
|
||||
const kfdmArr = this.kfdmArr
|
||||
|
||||
@ -148,13 +150,14 @@ export default struct DeductedPopup {
|
||||
}, 0);
|
||||
this.score = score
|
||||
|
||||
this.confirmMark(this.kfdmArr.map((kf) => ({
|
||||
xmdm: kf.xmdm,
|
||||
kfdm: kf.kfdm,
|
||||
})))
|
||||
// this.confirmMark(this.kfdmArr.map((kf) => ({
|
||||
// xmdm: kf.xmdm.toString(),
|
||||
// kfdm: kf.kfdm,
|
||||
// })))
|
||||
|
||||
if (judgeConfigObj['418'] == '1' || JudgeConfig.kfVoiceOpen) {
|
||||
avPlayer.playAudio([`voice/${mark.markcatalog}.mp3`, `voice/mark_${Math.abs(mark.score)}.mp3`], false, () => {
|
||||
if (this.judgeConfigObj['418'] == '1' || JudgeConfig.kfVoiceOpen) {
|
||||
this.avPlayer.playAudio([`voice/${mark.markcatalog}.mp3`, `voice/mark_${Math.abs(mark.score!)}.mp3`], false,
|
||||
() => {
|
||||
this.closePopup(true)
|
||||
});
|
||||
return
|
||||
@ -162,75 +165,29 @@ export default struct DeductedPopup {
|
||||
this.closePopup();
|
||||
return;
|
||||
|
||||
if (score < 90) {
|
||||
this.closePopup(true)
|
||||
avPlayer.playAudio(['voice/exam_waiting.mp3', `voice/kfdesc.mp3`])
|
||||
judgeTask.addTask(async () => {
|
||||
//扣分
|
||||
await this.kfFn();
|
||||
}, { isDelay: true })
|
||||
|
||||
judgeTask.addTask(async () => {
|
||||
//项目结束
|
||||
await this.endProject();
|
||||
}, { isDelay: true })
|
||||
|
||||
judgeTask.addTask(async () => {
|
||||
//结束考试
|
||||
await this.endFn()
|
||||
}, { isDelay: true })
|
||||
}
|
||||
;
|
||||
|
||||
let voiceURL =
|
||||
score < 90 ? `voice/${kssycs == '1' ? 'exam_no_pass_finish' : 'exam_no_pass'}.mp3` : 'voice/exam_pass.mp3'
|
||||
|
||||
let kfScore = 0;
|
||||
if (kfdmArr.length) {
|
||||
kfdmArr.forEach((kf, index) => {
|
||||
kfScore += Math.abs(Number(kf.markreal));
|
||||
if (kfScore <= 100) {
|
||||
judgeTask.addTask(() => {
|
||||
if (index === kfdmArr.length - 1) {
|
||||
avPlayer.playAudio([`voice/${kf.markcatalog}.mp3`, voiceURL], false, () => {
|
||||
this.endLoading(true)
|
||||
})
|
||||
} else {
|
||||
avPlayer.playAudio([`voice/${kf.markcatalog}.mp3`])
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
this.confirmMark(this.kfdmArr.map((kf) => ({
|
||||
xmdm: kf.xmdm,
|
||||
kfdm: kf.kfdm,
|
||||
})))
|
||||
|
||||
}
|
||||
|
||||
//项目开始
|
||||
async beginProject() {
|
||||
//项目开始 //过程照片 //扣分 //结束考试
|
||||
const carInfo: CarInfoType = this.carInfo;
|
||||
const { examSubject, plateNo } = carInfo;
|
||||
const { serialNumber, lsh, idCard, ksxl, kslx, ksdd } = this
|
||||
// const carInfo: CarInfoType = this.carInfo;
|
||||
// const { examSubject, plateNo } = carInfo;
|
||||
// const { serialNumber, lsh, idCard, ksxl, kslx, ksdd } = this
|
||||
const time = GetCurrentTime();
|
||||
const beginData = {
|
||||
const beginData: RegulatoryInterfaceParams = {
|
||||
xtlb: '17',
|
||||
jkxlh: serialNumber,
|
||||
jkxlh: this.serialNumber.toString(),
|
||||
jkid: '17C52',
|
||||
drvexam: {
|
||||
// 考试科目 身份证号码
|
||||
lsh,
|
||||
kskm: examSubject,
|
||||
sfzmhm: idCard,
|
||||
lsh: this.lsh,
|
||||
kskm: this.carInfo.examSubject,
|
||||
sfzmhm: this.idCard,
|
||||
ksxm: '40100',
|
||||
ksxl,
|
||||
kchp: decodeURI(plateNo),
|
||||
ksdd: decodeURI(ksdd),
|
||||
kslx: decodeURI(kslx) || '',
|
||||
ksxl: this.ksxl,
|
||||
kchp: decodeURI(this.carInfo.plateNo || ""),
|
||||
ksdd: decodeURI(this.ksdd),
|
||||
kslx: decodeURI(this.kslx) || '',
|
||||
kssj: time
|
||||
},
|
||||
}
|
||||
@ -243,27 +200,27 @@ export default struct DeductedPopup {
|
||||
|
||||
//过程照片
|
||||
async uploadProgressPhoto() {
|
||||
const { serialNumber, lsh, idCard, ksdd, kfdmArr, getPhoto } = this;
|
||||
const carInfo = this.carInfo;
|
||||
const { examSubject, plateNo, carNo } = carInfo;
|
||||
// const { serialNumber, lsh, idCard, ksdd, kfdmArr, getPhoto } = this;
|
||||
// const carInfo = this.carInfo;
|
||||
// const { examSubject, plateNo, carNo } = carInfo;
|
||||
const time = GetCurrentTime();
|
||||
console.info('surenjun uploadProgressPhoto',)
|
||||
const photoBase64 = await getPhoto()
|
||||
const photoData = {
|
||||
const photoBase64 = await this.getPhoto()
|
||||
const photoData: RegulatoryInterfaceParams = {
|
||||
xtlb: '17',
|
||||
jkxlh: serialNumber,
|
||||
jkxlh: this.serialNumber.toString(),
|
||||
jkid: '17C54',
|
||||
drvexam: {
|
||||
lsh,
|
||||
kskm: examSubject,
|
||||
lsh: this.lsh,
|
||||
kskm: this.carInfo.examSubject,
|
||||
ksxm: '40100',
|
||||
sfzmhm: idCard,
|
||||
kchp: decodeURI(plateNo),
|
||||
sfzmhm: this.idCard,
|
||||
kchp: decodeURI(this.carInfo.plateNo || ""),
|
||||
zpsj: time,
|
||||
// zp: encodeURIComponent(photoBase64),
|
||||
zp: photoBase64,
|
||||
cs: 0,
|
||||
ksdd: decodeURI(ksdd)
|
||||
ksdd: decodeURI(this.ksdd)
|
||||
}
|
||||
};
|
||||
const code = await writeObjectOut(photoData);
|
||||
@ -272,27 +229,24 @@ export default struct DeductedPopup {
|
||||
|
||||
// 扣分
|
||||
async kfFn() {
|
||||
const { serialNumber, lsh, idCard, ksdd, kfdmArr } = this;
|
||||
const kfLen = kfdmArr.length;
|
||||
const kf = kfdmArr[kfLen -1];
|
||||
const carInfo: CarInfoType = this.carInfo;
|
||||
const { examSubject } = this.carInfo;
|
||||
const kfLen = this.kfdmArr.length;
|
||||
const kf = this.kfdmArr[kfLen -1];
|
||||
const time = GetCurrentTime();
|
||||
const kfData = {
|
||||
const kfData: RegulatoryInterfaceParams = {
|
||||
xtlb: '17',
|
||||
jkxlh: serialNumber,
|
||||
jkxlh: this.serialNumber.toString(),
|
||||
jkid: '17C53',
|
||||
drvexam: {
|
||||
lsh,
|
||||
kskm: examSubject,
|
||||
lsh: this.lsh,
|
||||
kskm: this.carInfo.examSubject,
|
||||
// 通用评判科二10000,科三30000
|
||||
ksxm: 40100,
|
||||
ksxm: "40100",
|
||||
kfxm: kf.markcatalog,
|
||||
kfxmmx: `${'1'},${kf.kfdm}`,
|
||||
sfzmhm: idCard,
|
||||
kchp: decodeURI(carInfo.plateNo),
|
||||
sfzmhm: this.idCard,
|
||||
kchp: decodeURI(this.carInfo.plateNo || ""),
|
||||
kffs: 2,
|
||||
ksdd: decodeURI(ksdd),
|
||||
ksdd: decodeURI(this.ksdd),
|
||||
kfsj: time
|
||||
}
|
||||
}
|
||||
@ -301,24 +255,21 @@ export default struct DeductedPopup {
|
||||
|
||||
// 项目结束
|
||||
async endProject() {
|
||||
const carInfo = this.carInfo;
|
||||
const { examSubject, plateNo, carNo } = carInfo;
|
||||
const { lsh, idCard, serialNumber, ksdd, kslx, ksxl, } = this;
|
||||
const time = GetCurrentTime();
|
||||
const endProjectData = {
|
||||
const endProjectData: RegulatoryInterfaceParams = {
|
||||
xtlb: '17',
|
||||
jkxlh: serialNumber,
|
||||
jkxlh: this.serialNumber.toString(),
|
||||
jkid: '17C55',
|
||||
drvexam: {
|
||||
lsh,
|
||||
kskm: examSubject,
|
||||
sfzmhm: idCard,
|
||||
lsh: this.lsh,
|
||||
kskm: this.carInfo.examSubject,
|
||||
sfzmhm: this.idCard,
|
||||
ksxm: '40100',
|
||||
czlx: '1',
|
||||
ksxl,
|
||||
kchp: decodeURI(plateNo),
|
||||
ksdd: decodeURI(ksdd),
|
||||
kslx: encodeURI(kslx) || '',
|
||||
ksxl: this.ksxl,
|
||||
kchp: decodeURI(this.carInfo.plateNo || ""),
|
||||
ksdd: decodeURI(this.ksdd),
|
||||
kslx: encodeURI(this.kslx) || '',
|
||||
jssj: time
|
||||
}
|
||||
}
|
||||
@ -327,24 +278,21 @@ export default struct DeductedPopup {
|
||||
|
||||
//考试结束
|
||||
async endFn() {
|
||||
const { serialNumber, lsh, idCard, score, getPhoto } = this;
|
||||
const carInfo: CarInfoType = this.carInfo;
|
||||
const { examSubject, plateNo } = carInfo;
|
||||
const time = GetCurrentTime();
|
||||
const photoBase64 = await getPhoto();
|
||||
const endData = {
|
||||
const photoBase64 = await this.getPhoto()
|
||||
const endData: RegulatoryInterfaceParams = {
|
||||
xtlb: '17',
|
||||
jkxlh: serialNumber,
|
||||
jkxlh: this.serialNumber.toString(),
|
||||
jkid: '17C56',
|
||||
drvexam: {
|
||||
lsh,
|
||||
kchp: decodeURI(plateNo),
|
||||
kskm: examSubject,
|
||||
sfzmhm: idCard,
|
||||
lsh: this.lsh,
|
||||
kchp: decodeURI(this.carInfo.plateNo || ""),
|
||||
kskm: this.carInfo.examSubject,
|
||||
sfzmhm: this.idCard,
|
||||
// zp: encodeURIComponent(photoBase64),
|
||||
zp: photoBase64,
|
||||
jssj: time,
|
||||
kscj: (score * 1) > 0 ? score : 0,
|
||||
kscj: (this.score * 1) > 0 ? this.score : 0,
|
||||
kslc: 0,
|
||||
dwlc: '',
|
||||
}
|
||||
@ -359,41 +307,52 @@ export default struct DeductedPopup {
|
||||
syssetParams.forEach(sys => {
|
||||
//监管序列号
|
||||
if (sys.v_no == '901') {
|
||||
this.serialNumber = sys.v_value || '123456'
|
||||
this.serialNumber = Number(sys.v_value) || 123456
|
||||
}
|
||||
//364 绕车一周评判时机(1-开始考试后判 2-开始考试前判)
|
||||
if (sys.v_no == '364') {
|
||||
const isOpen = sys.v_value == 2
|
||||
const isOpen = sys.v_value == "2"
|
||||
if (isOpen) {
|
||||
this.avPlayer.playAudio(['voice/上车准备.mp3'])
|
||||
}
|
||||
}
|
||||
this.judgeConfigObj[sys.v_no] = decodeURIComponent(sys.v_value)
|
||||
if (sys.v_no) {
|
||||
this.judgeConfigObj[sys.v_no] = decodeURIComponent(sys.v_value || '');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//获取markrule表数据
|
||||
async initMarkRules(markRules ?: MarkRule[]) {
|
||||
const markRuleParams = markRules || (await getSyncData('MA_MARKRULE') as MarkRule[])
|
||||
const markRuleParams = markRules || (await GetSyncData('MA_MARKRULE') as MarkRule[])
|
||||
markRuleParams.forEach(mark => {
|
||||
const tempObj = {
|
||||
itemno: mark.itemno * 1,
|
||||
const tempObj: MarkRule = {
|
||||
itemno: Number(mark.itemno),
|
||||
markcatalog: mark.markcatalog,
|
||||
markshow: decodeURI(mark.markshow),
|
||||
markreal: mark.markreal * 1,
|
||||
markstandard: mark.markstandard * 1,
|
||||
markshow: decodeURI(mark.markshow || ""),
|
||||
markreal: Number(mark.markreal),
|
||||
markstandard: Number(mark.markstandard),
|
||||
markserial: mark.markserial,
|
||||
kfxh: mark.kfxh,
|
||||
OnlyOneKind: mark.onlyoneid * 1,
|
||||
NoCancelId: mark.nocancelid * 1,
|
||||
OnlyOneKind: Number(mark.onlyoneid),
|
||||
NoCancelId: Number(mark.nocancelid),
|
||||
GPS_SID: mark.gps_sid == 0 ? false : true
|
||||
}
|
||||
|
||||
if (mark.itemno == 1 && Number(mark.markserial) > 100 && Number(mark.markserial) < 200) {
|
||||
this.markRuleListObj[`${mark.itemno}_${mark.markserial}`] = {
|
||||
...tempObj,
|
||||
itemno: tempObj.itemno,
|
||||
markcatalog: tempObj.markcatalog,
|
||||
markshow: tempObj.markshow,
|
||||
markreal: tempObj.markreal,
|
||||
markstandard: tempObj.markstandard,
|
||||
markserial: mark.markserial,
|
||||
kfxh: tempObj.kfxh,
|
||||
OnlyOneKind: tempObj.OnlyOneKind,
|
||||
NoCancelId: tempObj.NoCancelId,
|
||||
GPS_SID: tempObj.GPS_SID,
|
||||
};
|
||||
|
||||
this.universalMarkRules.push(tempObj)
|
||||
}
|
||||
|
||||
@ -403,22 +362,22 @@ export default struct DeductedPopup {
|
||||
|
||||
// 获取考生信息
|
||||
async initStudent() {
|
||||
const students = await getSyncData('USER')
|
||||
const stuInfo = students[0] || {};
|
||||
const students = await GetSyncData<User>('USER')
|
||||
const stuInfo: User = students[0];
|
||||
|
||||
const { xm, sfzmhm, lsh, kszp, ksdd, kssycs, kslx, ksxl } = stuInfo;
|
||||
this.name = xm || '测试考生';
|
||||
this.idCard = sfzmhm || '01234567891010';
|
||||
this.lsh = lsh;
|
||||
this.kszp = kszp;
|
||||
this.ksdd = ksdd;
|
||||
this.kssycs = kssycs;
|
||||
this.kslx = kslx;
|
||||
this.ksxl = ksxl;
|
||||
// const { xm, sfzmhm, lsh, kszp, ksdd, kssycs, kslx, ksxl } = stuInfo;
|
||||
this.name = stuInfo.xm || '测试考生';
|
||||
this.idCard = stuInfo.sfzmhm || '01234567891010';
|
||||
this.lsh = stuInfo.lsh;
|
||||
this.kszp = stuInfo.kszp;
|
||||
this.ksdd = stuInfo.ksdd;
|
||||
this.kssycs = stuInfo.kssycs;
|
||||
this.kslx = stuInfo.kslx || "";
|
||||
this.ksxl = stuInfo.ksxl;
|
||||
}
|
||||
|
||||
//上一页 下一页
|
||||
goPage(typeIndex) {
|
||||
goPage(typeIndex: number) {
|
||||
const currentIndex = this.currentIndex
|
||||
if (currentIndex) {
|
||||
//通用评判
|
||||
@ -430,26 +389,24 @@ export default struct DeductedPopup {
|
||||
}
|
||||
|
||||
//选中扣分项
|
||||
getSelectedLine(index) {
|
||||
const { selectedLine, selectedLineStyle, lineBg } = this;
|
||||
if (selectedLine === index) {
|
||||
return selectedLineStyle.bgColor
|
||||
getSelectedLine(index: number) {
|
||||
if (this.selectedLine === index) {
|
||||
return this.selectedLineStyle.bgColor
|
||||
}
|
||||
if (index % 2 === 0) {
|
||||
return lineBg[0]
|
||||
return this.lineBg[0]
|
||||
} else {
|
||||
return lineBg[1]
|
||||
return this.lineBg[1]
|
||||
}
|
||||
}
|
||||
|
||||
//获取当前页的数据
|
||||
getCurrentMarkRuleList() {
|
||||
const { currentIndex, currentUniversalPageIndex, currentPageIndex, universalMarkRules } = this;
|
||||
if (currentIndex) {
|
||||
if (this.currentIndex) {
|
||||
//通用评判
|
||||
return universalMarkRules.slice(currentUniversalPageIndex * 7, (currentUniversalPageIndex + 1) * 7)
|
||||
return this.universalMarkRules.slice(this.currentUniversalPageIndex * 7, (this.currentUniversalPageIndex + 1) * 7)
|
||||
} else {
|
||||
return universalMarkRules.slice(currentPageIndex * 7, (currentPageIndex + 1) * 7)
|
||||
return this.universalMarkRules.slice(this.currentPageIndex * 7, (this.currentPageIndex + 1) * 7)
|
||||
}
|
||||
}
|
||||
|
||||
@ -459,7 +416,7 @@ export default struct DeductedPopup {
|
||||
Column() {
|
||||
Row() {
|
||||
Row() {
|
||||
ForEach(['人工评判'], (text, index) => {
|
||||
ForEach(['人工评判'], (text: string, index) => {
|
||||
|
||||
Row() {
|
||||
Text(text)
|
||||
@ -549,7 +506,7 @@ export default struct DeductedPopup {
|
||||
}.width('100%').justifyContent(FlexAlign.SpaceBetween)
|
||||
|
||||
Column() {
|
||||
ForEach(this.getCurrentMarkRuleList(), (item, index) => {
|
||||
ForEach(this.getCurrentMarkRuleList(), (item: MarkRule, index) => {
|
||||
Row() {
|
||||
Text(`${item.markshow} (${item.markcatalog})`).fontColor('#FFF').fontSize(this.fontSize).fontWeight(500)
|
||||
Row() {
|
||||
|
||||
@ -12,6 +12,9 @@
|
||||
// }
|
||||
@Component
|
||||
export default struct RealTime {
|
||||
private widthNumber: string | number | Resource = 0
|
||||
private heightNumber: string | number | Resource = 0
|
||||
|
||||
build() {
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user