fix: 人脸对比窗口
This commit is contained in:
parent
2d912d4ea3
commit
658e59760b
@ -67,4 +67,7 @@ export const UserInfoTag = '[UserInfo]';
|
|||||||
export const SignDisplayTag = '[SignDisplay]';
|
export const SignDisplayTag = '[SignDisplay]';
|
||||||
|
|
||||||
//开始考试
|
//开始考试
|
||||||
export const StartExamTag = '[StartExam]'
|
export const StartExamTag = '[StartExam]'
|
||||||
|
|
||||||
|
//人脸对比
|
||||||
|
export const FaceCompareTag = '[FaceCompare]';
|
||||||
@ -50,6 +50,7 @@ import LabelBlockComponent from './UserInfo/LabelBlock';
|
|||||||
import CarLoadingDialog from './compontents/CarLoading';
|
import CarLoadingDialog from './compontents/CarLoading';
|
||||||
import ConfirmDialog from './compontents/ConfirmDialog';
|
import ConfirmDialog from './compontents/ConfirmDialog';
|
||||||
import { DifferentialAndSignal } from '../utils/business/DifferentialAndSignalWorker';
|
import { DifferentialAndSignal } from '../utils/business/DifferentialAndSignalWorker';
|
||||||
|
import FaceRecognitionDialog from './UserInfo/FaceRecognition';
|
||||||
|
|
||||||
@Entry
|
@Entry
|
||||||
@Component
|
@Component
|
||||||
@ -72,7 +73,6 @@ struct UserInfoPage {
|
|||||||
@State isSecondBoardPrePareSetPopupOpen: boolean = false
|
@State isSecondBoardPrePareSetPopupOpen: boolean = false
|
||||||
@State isFirstBoardPrePareSetPopupBtnShow: boolean = false
|
@State isFirstBoardPrePareSetPopupBtnShow: boolean = false
|
||||||
@State isBoardPrePareSetPopupShow: boolean = false
|
@State isBoardPrePareSetPopupShow: boolean = false
|
||||||
@State loadingText: string = '正在认证监管信息,请稍后...'
|
|
||||||
@State sczbkf: SckType[] = []
|
@State sczbkf: SckType[] = []
|
||||||
@State currentUser: User = EmptyCandidateObject
|
@State currentUser: User = EmptyCandidateObject
|
||||||
// 开始考试弹窗
|
// 开始考试弹窗
|
||||||
@ -112,6 +112,16 @@ struct UserInfoPage {
|
|||||||
customStyle: true,
|
customStyle: true,
|
||||||
autoCancel: true
|
autoCancel: true
|
||||||
})
|
})
|
||||||
|
// 人脸对比弹窗
|
||||||
|
faceCompareController: CustomDialogController = new CustomDialogController({
|
||||||
|
builder: FaceRecognitionDialog({
|
||||||
|
sfzh: this.currentUser.sfzmhm,
|
||||||
|
firstImage: this.currentUser.kszp,
|
||||||
|
lsh: AppStorage.get<string>('lsh'),
|
||||||
|
}),
|
||||||
|
customStyle: true,
|
||||||
|
autoCancel: true
|
||||||
|
})
|
||||||
@State faceFlag: string = '0';
|
@State faceFlag: string = '0';
|
||||||
@State FaceOpenStatue: string = '0'; //是否开启人脸识别
|
@State FaceOpenStatue: string = '0'; //是否开启人脸识别
|
||||||
@State faceCatchImg: string = ''
|
@State faceCatchImg: string = ''
|
||||||
@ -490,11 +500,6 @@ struct UserInfoPage {
|
|||||||
|
|
||||||
async initSysset() {
|
async initSysset() {
|
||||||
const that = this;
|
const that = this;
|
||||||
// DB.queryListBySql("select * from MA_SYSSET", ['id', 'v_no', 'v_name', 'v_value'].map(item => ({
|
|
||||||
// type: ColumnType.STRING,
|
|
||||||
// name: item,
|
|
||||||
// columnName: item
|
|
||||||
// }))).then((syssetParams: any) => {
|
|
||||||
GetSyncData<MASYSSETTableType>("MA_SYSSET").then((syssetParams: MASYSSETTableType[]) => {
|
GetSyncData<MASYSSETTableType>("MA_SYSSET").then((syssetParams: MASYSSETTableType[]) => {
|
||||||
const serialNumberArr = syssetParams.filter(sys => sys.v_no === '901')
|
const serialNumberArr = syssetParams.filter(sys => sys.v_no === '901')
|
||||||
that.jkxlh = serialNumberArr?.[0]?.v_value || ''
|
that.jkxlh = serialNumberArr?.[0]?.v_value || ''
|
||||||
@ -647,8 +652,6 @@ struct UserInfoPage {
|
|||||||
dConsole.log('isFirstBoardPrePareSetPopupBtnShow', this.isFirstBoardPrePareSetPopupBtnShow,
|
dConsole.log('isFirstBoardPrePareSetPopupBtnShow', this.isFirstBoardPrePareSetPopupBtnShow,
|
||||||
this.isBoardPrePareSetPopupOpen)
|
this.isBoardPrePareSetPopupOpen)
|
||||||
this.startExam = false
|
this.startExam = false
|
||||||
// await upDateTableByArray('USER', [])
|
|
||||||
// await upDateTableByArray('USERLIST', [])
|
|
||||||
await DB.clearTable('USER')
|
await DB.clearTable('USER')
|
||||||
await DB.clearTable('USERLIST')
|
await DB.clearTable('USERLIST')
|
||||||
this.updateTimeLimit = true
|
this.updateTimeLimit = true
|
||||||
@ -689,7 +692,6 @@ struct UserInfoPage {
|
|||||||
this.list.forEach((listData, index) => {
|
this.list.forEach((listData, index) => {
|
||||||
//考过一次不允许切换学员
|
//考过一次不允许切换学员
|
||||||
if (listData.kssycs == '1') {
|
if (listData.kssycs == '1') {
|
||||||
|
|
||||||
this.startExam = true
|
this.startExam = true
|
||||||
}
|
}
|
||||||
listData.id = index.toString()
|
listData.id = index.toString()
|
||||||
@ -743,7 +745,6 @@ struct UserInfoPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.pageIndex = 0
|
this.pageIndex = 0
|
||||||
// getSyncData('USER').then(data => {
|
|
||||||
GetSyncData<User>("USER").then(data => {
|
GetSyncData<User>("USER").then(data => {
|
||||||
if (data?.[0]) {
|
if (data?.[0]) {
|
||||||
this.getCurrentStudent(data[0].sfzmhm)
|
this.getCurrentStudent(data[0].sfzmhm)
|
||||||
@ -759,6 +760,7 @@ struct UserInfoPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 缺考
|
||||||
qkFn() {
|
qkFn() {
|
||||||
if (this.systemParam.Param352Str == '1' && this.currentUser.kssycs == '1') {
|
if (this.systemParam.Param352Str == '1' && this.currentUser.kssycs == '1') {
|
||||||
return
|
return
|
||||||
@ -806,11 +808,24 @@ struct UserInfoPage {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onCenterMsg = (val: CenterCallBackMsgType) => {
|
||||||
|
if (val.id == 32) {
|
||||||
|
AppStorage.setOrCreate('signNum', val.body[1])
|
||||||
|
if (val.body[0] == 7) {
|
||||||
|
//缺考处理
|
||||||
|
this.getqkFn()
|
||||||
|
this.signNum = val.body[1]
|
||||||
|
}
|
||||||
|
} else if (val.id == 42) {
|
||||||
|
//收到中心缺考确认消息
|
||||||
|
this.qkFn()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async getExaminationItemFn() {
|
async getExaminationItemFn() {
|
||||||
if (!this.currentUser.lsh || this.singlePlay) {
|
if (!this.currentUser.lsh || this.singlePlay) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// const { carId, examinationRoomId } = this.carInfo;
|
|
||||||
const examItems = await getExaminationItem({
|
const examItems = await getExaminationItem({
|
||||||
time: GetCurrentTime() || "",
|
time: GetCurrentTime() || "",
|
||||||
carId: this.carInfo.carId || "",
|
carId: this.carInfo.carId || "",
|
||||||
@ -930,7 +945,6 @@ struct UserInfoPage {
|
|||||||
//开始上车准备
|
//开始上车准备
|
||||||
prePareSCZB = async () => {
|
prePareSCZB = async () => {
|
||||||
try {
|
try {
|
||||||
// await this.checkSignal()
|
|
||||||
await CheckSignal(this.systemParam, this.avPlayer)
|
await CheckSignal(this.systemParam, this.avPlayer)
|
||||||
DifferentialAndSignal.clearMsg()
|
DifferentialAndSignal.clearMsg()
|
||||||
this.isExamStart = true
|
this.isExamStart = true
|
||||||
@ -940,9 +954,7 @@ struct UserInfoPage {
|
|||||||
}).catch((err: BusinessError) => {
|
}).catch((err: BusinessError) => {
|
||||||
dConsole.log("USER insert fail", JSON.stringify(err))
|
dConsole.log("USER insert fail", JSON.stringify(err))
|
||||||
})
|
})
|
||||||
// await upDateTableByArray('USER', [this.currentUser])
|
|
||||||
dConsole.log("User", JSON.stringify(this.currentUser))
|
dConsole.log("User", JSON.stringify(this.currentUser))
|
||||||
// await sqlInsertCommonFn("USER", [this.currentUser])
|
|
||||||
AppStorage.setOrCreate('statue', 4)
|
AppStorage.setOrCreate('statue', 4)
|
||||||
this.isBoardPrePareSetPopupShow = true;
|
this.isBoardPrePareSetPopupShow = true;
|
||||||
this.isFirstBoardPrePareSetPopupBtnShow = true;
|
this.isFirstBoardPrePareSetPopupBtnShow = true;
|
||||||
@ -1147,20 +1159,6 @@ struct UserInfoPage {
|
|||||||
.backgroundImage($r('app.media.bg'))
|
.backgroundImage($r('app.media.bg'))
|
||||||
.backgroundImageSize({ width: '100%', height: '100%' })
|
.backgroundImageSize({ width: '100%', height: '100%' })
|
||||||
}
|
}
|
||||||
|
|
||||||
onCenterMsg = (val: CenterCallBackMsgType) => {
|
|
||||||
if (val.id == 32) {
|
|
||||||
AppStorage.setOrCreate('signNum', val.body[1])
|
|
||||||
if (val.body[0] == 7) {
|
|
||||||
//缺考处理
|
|
||||||
this.getqkFn()
|
|
||||||
this.signNum = val.body[1]
|
|
||||||
}
|
|
||||||
} else if (val.id == 42) {
|
|
||||||
//收到中心缺考确认消息
|
|
||||||
this.qkFn()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
279
entry/src/main/ets/pages/UserInfo/FaceRecognition.ets
Normal file
279
entry/src/main/ets/pages/UserInfo/FaceRecognition.ets
Normal file
@ -0,0 +1,279 @@
|
|||||||
|
/**
|
||||||
|
* 人脸识别弹窗
|
||||||
|
*/
|
||||||
|
import common from '@ohos.app.ability.common';
|
||||||
|
import { faceCompare } from '../../api/userInfo';
|
||||||
|
import { FaceCompareTag, GlobalConfig } from '../../config';
|
||||||
|
import { VideoConfigData } from '../../mock';
|
||||||
|
import { CarInfoType, CenterCallBackMsgType, UDPParamType, VideoConfig } from '../../model';
|
||||||
|
import { CenterUDPBusinessInstance } from '../../utils/business/CenterUdpBusiness';
|
||||||
|
import { NumberToByteArray } from '../../utils/Common';
|
||||||
|
import FileUtils from '../../utils/FileUtils';
|
||||||
|
import { dConsole } from '../../utils/LogWorker';
|
||||||
|
import { takePhoto, takePhotoParam } from '../../utils/Video';
|
||||||
|
import { voiceService } from '../../utils/Voice';
|
||||||
|
|
||||||
|
@CustomDialog
|
||||||
|
export default struct FaceRecognitionDialog {
|
||||||
|
// 身份证号
|
||||||
|
@Prop sfzh: string;
|
||||||
|
// 第一张图片
|
||||||
|
@Prop firstImage: string;
|
||||||
|
// 流水号
|
||||||
|
@Prop lsh: string;
|
||||||
|
@State videoConfig: VideoConfig = VideoConfigData
|
||||||
|
@State previewUri: Resource = $r('app.media.index_bg')
|
||||||
|
@State base64: string = ''
|
||||||
|
// 回调标志位
|
||||||
|
@State callBackFlag: boolean = false;
|
||||||
|
// 车辆信息
|
||||||
|
@State carInfo: CarInfoType = {};
|
||||||
|
private context = getContext(this) as common.UIAbilityContext;
|
||||||
|
private controller?: CustomDialogController;
|
||||||
|
private videoController: VideoController = new VideoController()
|
||||||
|
private fileUtil!: FileUtils
|
||||||
|
private voiceController!: voiceService
|
||||||
|
// 人脸对比失败次数
|
||||||
|
private times: number = 0
|
||||||
|
// 采集照片定时器
|
||||||
|
private interval: number = -1
|
||||||
|
// 人脸对比成功
|
||||||
|
FacialComparisonSuccess: () => void = () => {
|
||||||
|
}
|
||||||
|
// 人脸对比失败
|
||||||
|
FacialComparisonFailure: () => void = () => {
|
||||||
|
}
|
||||||
|
|
||||||
|
aboutToAppear(): void {
|
||||||
|
const fileUtil = new FileUtils(this.context)
|
||||||
|
this.carInfo = AppStorage.get<CarInfoType>('carInfo')!
|
||||||
|
this.fileUtil = fileUtil
|
||||||
|
this.getConfig()
|
||||||
|
}
|
||||||
|
|
||||||
|
async getConfig() {
|
||||||
|
try {
|
||||||
|
this.voiceController = new voiceService(async (status: string, val?: string) => {
|
||||||
|
if (status == 'idle') {
|
||||||
|
if (val === 'face_check.mp3' || val === 'face_fail.mp3') {
|
||||||
|
if (this.times >= 3) {
|
||||||
|
AppStorage.setOrCreate('statue', 3);
|
||||||
|
this.FacialComparisonFailure()
|
||||||
|
this.voiceController && this.voiceController.playAudio({
|
||||||
|
type: 1,
|
||||||
|
name: 'face_checking.wav',
|
||||||
|
});
|
||||||
|
this.heartMsg();
|
||||||
|
} else {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.faceCompareFn();
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
} else if (val === 'yzcg.wav') {
|
||||||
|
// 人脸对比成功
|
||||||
|
AppStorage.setOrCreate('statue', 4);
|
||||||
|
this.FacialComparisonSuccess()
|
||||||
|
this.controller?.close();
|
||||||
|
} else if (val === 'face_chekc_fail.wav') {
|
||||||
|
// 人脸对比失败
|
||||||
|
this.FacialComparisonFailure()
|
||||||
|
this.controller?.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, this.context)
|
||||||
|
const data = await this.fileUtil.readFile(GlobalConfig.commonFileWriteAddress + '/config/config3.txt');
|
||||||
|
dConsole.log('faceEnterIn,data', data)
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
this.voiceController && this.voiceController.playAudio({
|
||||||
|
type: 1,
|
||||||
|
name: 'face_check.mp3'
|
||||||
|
})
|
||||||
|
}, 1000)
|
||||||
|
this.videoConfig = JSON.parse(data)
|
||||||
|
this.videoController.start()
|
||||||
|
} catch (e) {
|
||||||
|
dConsole.error(FaceCompareTag, "人脸识别弹窗获取配置失败", e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async faceCompareFn() {
|
||||||
|
this.videoConfig.pztd = this.videoConfig.rlls
|
||||||
|
const data: takePhotoParam = await takePhoto(this.videoConfig, this.context, 'jt/', 1,)
|
||||||
|
this.base64 = "data:image/jpeg;base64," + (data?.base64 || "")
|
||||||
|
dConsole.log(FaceCompareTag, "人脸拿到的图片", this.base64)
|
||||||
|
const result = await faceCompare({
|
||||||
|
sfzh: this.sfzh.toString(),
|
||||||
|
firstImage: this.firstImage.slice(22),
|
||||||
|
secondImage: data?.base64 || "",
|
||||||
|
type: "2",
|
||||||
|
verifyType: "1"
|
||||||
|
})
|
||||||
|
if (result.imageCompareRsp?.head?.resultCode == '0') {
|
||||||
|
this.videoController.stop()
|
||||||
|
this.controller.close()
|
||||||
|
this.FacialComparisonSuccess()
|
||||||
|
this.voiceController.playAudio({
|
||||||
|
type: 1,
|
||||||
|
name: 'yzcg.wav'
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.times++;
|
||||||
|
this.voiceController.playAudio({
|
||||||
|
type: 1,
|
||||||
|
name: 'face_fail.mp3'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async heartMsg() {
|
||||||
|
let tmpList: number[] = []
|
||||||
|
for (let i = 0; i < this.lsh.length; i++) {
|
||||||
|
if (this.lsh && this.lsh.charCodeAt(i) !== undefined) {
|
||||||
|
tmpList.push(NumberToByteArray(this.lsh.charCodeAt(i), 1 * 8)[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const param: UDPParamType = {
|
||||||
|
id: 46,
|
||||||
|
list: tmpList,
|
||||||
|
carNo: this.carInfo.carNo || "",
|
||||||
|
placeId: this.carInfo.examinationRoomId || "",
|
||||||
|
sendCallback: () => {
|
||||||
|
this.callBackFlag = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CenterUDPBusinessInstance.sendData(param)
|
||||||
|
clearInterval(this.interval)
|
||||||
|
this.interval = setInterval(() => {
|
||||||
|
if (this.callBackFlag) {
|
||||||
|
const param2: UDPParamType = {
|
||||||
|
id: 47,
|
||||||
|
list: tmpList,
|
||||||
|
carNo: this.carInfo.carNo || "",
|
||||||
|
placeId: this.carInfo.examinationRoomId || "",
|
||||||
|
}
|
||||||
|
CenterUDPBusinessInstance.sendData(param2)
|
||||||
|
}
|
||||||
|
}, 1000)
|
||||||
|
CenterUDPBusinessInstance.onMsg(this.getUdpMsg)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
getUdpMsg = (val: CenterCallBackMsgType) => {
|
||||||
|
if (AppStorage.get('statue') != 3) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (val.id === 48) {
|
||||||
|
if (val.body[13] == 1) {
|
||||||
|
this.voiceController && this.voiceController.releasePlayer()
|
||||||
|
this.controller?.close()
|
||||||
|
this.FacialComparisonFailure()
|
||||||
|
clearInterval(this.interval)
|
||||||
|
} else if (val.body[13] == 1 && this.callBackFlag) {
|
||||||
|
AppStorage.setOrCreate('statue', 2)
|
||||||
|
this.voiceController && this.voiceController.playAudio({
|
||||||
|
type: 1,
|
||||||
|
name: 'face_chekc_fail.wav'
|
||||||
|
})
|
||||||
|
this.controller.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
aboutToDisappear(): void {
|
||||||
|
clearInterval(this.interval)
|
||||||
|
CenterUDPBusinessInstance.offMsg(this.getUdpMsg)
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
Column() {
|
||||||
|
Column() {
|
||||||
|
// 标题
|
||||||
|
Row() {
|
||||||
|
Text("照片对比").fontSize(24).fontWeight(FontWeight.Bold)
|
||||||
|
}.height(80)
|
||||||
|
|
||||||
|
// 视频图片
|
||||||
|
Flex({
|
||||||
|
alignItems: ItemAlign.Center,
|
||||||
|
justifyContent: FlexAlign.Center
|
||||||
|
}) {
|
||||||
|
// 视频
|
||||||
|
Video({
|
||||||
|
src: `rtsp://${this.videoConfig.userName}:${this.videoConfig.pwd}@${this.videoConfig.ip}:${this.videoConfig.port}/h264/ch${this.videoConfig.rlls}/main/av_stream`,
|
||||||
|
previewUri: this.previewUri,
|
||||||
|
currentProgressRate: PlaybackSpeed.Speed_Forward_1_00_X,
|
||||||
|
controller: this.videoController,
|
||||||
|
})
|
||||||
|
.muted(true)
|
||||||
|
.autoPlay(true)
|
||||||
|
.controls(true)
|
||||||
|
.height("100%")
|
||||||
|
.width(600)
|
||||||
|
// 图片
|
||||||
|
Row() {
|
||||||
|
Image(this.base64).height("100%").width("100%")
|
||||||
|
}
|
||||||
|
.height("100%")
|
||||||
|
.width(600)
|
||||||
|
.backgroundColor(Color.Black)
|
||||||
|
.margin({
|
||||||
|
left: 20
|
||||||
|
})
|
||||||
|
}.width("100%").height(400)
|
||||||
|
|
||||||
|
Text("正在等待拍照...").fontWeight(FontWeight.Bold).fontSize(24).margin({
|
||||||
|
top: 20,
|
||||||
|
bottom: 20
|
||||||
|
}).fontColor("#CC7E00")
|
||||||
|
Flex({
|
||||||
|
justifyContent: FlexAlign.SpaceBetween,
|
||||||
|
alignItems: ItemAlign.Center
|
||||||
|
}) {
|
||||||
|
Text("若验证无响应,点击此处").fontSize(24)
|
||||||
|
Row() {
|
||||||
|
Text("重新打开").fontSize(20).fontColor("#fff")
|
||||||
|
}
|
||||||
|
.width(200)
|
||||||
|
.height(80)
|
||||||
|
.backgroundImage($r("app.media.nor"))
|
||||||
|
.backgroundImageSize({
|
||||||
|
width: "100%",
|
||||||
|
height: "100%"
|
||||||
|
})
|
||||||
|
.justifyContent(FlexAlign.Center)
|
||||||
|
.alignItems(VerticalAlign.Center)
|
||||||
|
.onClick(() => {
|
||||||
|
this.times = 1;
|
||||||
|
this.videoController.stop()
|
||||||
|
this.voiceController && this.voiceController.releasePlayer()
|
||||||
|
this.FacialComparisonFailure()
|
||||||
|
AppStorage.setOrCreate('statue', 2)
|
||||||
|
this.controller?.close();
|
||||||
|
})
|
||||||
|
}.backgroundColor("#CBC4B9").borderRadius({
|
||||||
|
bottomLeft: 20,
|
||||||
|
bottomRight: 20
|
||||||
|
})
|
||||||
|
.padding({
|
||||||
|
left: 20,
|
||||||
|
right: 20,
|
||||||
|
top: 10,
|
||||||
|
bottom: 10
|
||||||
|
})
|
||||||
|
}.backgroundColor("#E5E3DF").borderRadius(20)
|
||||||
|
|
||||||
|
// 关闭按钮
|
||||||
|
Row() {
|
||||||
|
Image($r('app.media.close')).width(80).height(80)
|
||||||
|
}.margin({
|
||||||
|
top: 50
|
||||||
|
}).onClick(() => {
|
||||||
|
this.FacialComparisonFailure()
|
||||||
|
this.videoController && this.videoController.stop();
|
||||||
|
this.controller?.close();
|
||||||
|
AppStorage.setOrCreate('statue', 2)
|
||||||
|
})
|
||||||
|
}.width("80%")
|
||||||
|
}
|
||||||
|
}
|
||||||
12
entry/src/main/ets/pages/UserInfo/GetReadyToBoardTheCar.ets
Normal file
12
entry/src/main/ets/pages/UserInfo/GetReadyToBoardTheCar.ets
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* 上车准备弹窗
|
||||||
|
*/
|
||||||
|
|
||||||
|
@CustomDialog
|
||||||
|
export default struct GetReadyToBoardTheCarDialog {
|
||||||
|
private controller?: CustomDialogController;
|
||||||
|
|
||||||
|
build() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,9 +0,0 @@
|
|||||||
// 开始考试弹窗
|
|
||||||
|
|
||||||
@CustomDialog
|
|
||||||
export default struct StartTheExamDialog {
|
|
||||||
private controller?: CustomDialogController;
|
|
||||||
|
|
||||||
build() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -559,6 +559,4 @@ export default struct DeductedPopup {
|
|||||||
}
|
}
|
||||||
private confirmMark: Function = (itemno: number, serial: string) => {
|
private confirmMark: Function = (itemno: number, serial: string) => {
|
||||||
}
|
}
|
||||||
private endLoading: Function = () => {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,18 +0,0 @@
|
|||||||
@Component
|
|
||||||
export default struct LoadingPopup {
|
|
||||||
constructor() {
|
|
||||||
super()
|
|
||||||
}
|
|
||||||
|
|
||||||
private title:string = ''
|
|
||||||
|
|
||||||
build(){
|
|
||||||
Column(){
|
|
||||||
Column(){
|
|
||||||
Image($rawfile('judge/loading-car.gif')).width(250).margin({top:20,bottom:20})
|
|
||||||
Text(this.title).fontSize(32).margin({top:15})
|
|
||||||
}.width('45%').height('50%').backgroundColor('#E6E3DF').borderRadius(38).position({y:'27.5%',x:'25%'}).justifyContent(FlexAlign.Center)
|
|
||||||
|
|
||||||
}.width('100%').height('100%').position({y:0}).backgroundColor('rgba(0,0,0,0.7)')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
|
|
||||||
@Component
|
|
||||||
export default struct EndPopup {
|
|
||||||
constructor() {
|
|
||||||
super()
|
|
||||||
}
|
|
||||||
|
|
||||||
private title:string = ''
|
|
||||||
private cancelFn:(event?: ClickEvent) => void
|
|
||||||
private confirmFn:(event?: ClickEvent) => void
|
|
||||||
|
|
||||||
build(){
|
|
||||||
Column(){
|
|
||||||
Column(){
|
|
||||||
Text(this.title).fontSize(38).margin({bottom:20})
|
|
||||||
Row(){}.height(50)
|
|
||||||
Row(){
|
|
||||||
Text('取消').backgroundImage($rawfile('judge/end-btn.png'),ImageRepeat.NoRepeat).backgroundImageSize({width:'100%',height:'100%'}).width(250).height(100).fontSize(30).fontColor('#FFF').textAlign(TextAlign.Center).onClick(this.cancelFn)
|
|
||||||
Text('确定').backgroundImage($rawfile('judge/end-btn.png'),ImageRepeat.NoRepeat).backgroundImageSize({width:'100%',height:'100%'}).width(250).height(100).fontSize(30).fontColor('#FFF').textAlign(TextAlign.Center).margin({left:45}).onClick(this.confirmFn)
|
|
||||||
}
|
|
||||||
}.width('80%').height('70%').backgroundColor('#E6E3DF').borderRadius(38).position({y:'12%',x:'10%'}).justifyContent(FlexAlign.Center)
|
|
||||||
|
|
||||||
}.width('100%').height('100%').position({y:0}).backgroundColor('rgba(0,0,0,0.7)')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user