refactor(train_management): 优化人脸认证页面代码结构
-调整代码格式,提高可读性 - 移除冗余的空行和注释 - 统一代码风格 -优化部分变量和方法的命名hyx_2025-01-13_xgf2.0
parent
25d047341a
commit
4934e79c45
|
@ -5,7 +5,8 @@
|
|||
</view>
|
||||
<view class="livefater">
|
||||
<view style="width: 700upx; height: 700upx; border-radius: 700upx; overflow: hidden">
|
||||
<live-pusher id="livePusher" ref="livePusher" class="livePusher" url="" mode="SD" :muted="true" :enable-camera="true" :auto-focus="true" :beauty="1" whiteness="2" aspect="1:1" />
|
||||
<live-pusher id="livePusher" ref="livePusher" class="livePusher" url="" mode="SD" :muted="true"
|
||||
:enable-camera="true" :auto-focus="true" :beauty="1" whiteness="2" aspect="1:1" />
|
||||
</view>
|
||||
<cover-image src="/static/images/gaiz.png" class="gaiimg"></cover-image>
|
||||
</view>
|
||||
|
@ -17,189 +18,200 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
// import {setMeetingFace, setScanCodeToVerifyFace, setUserFace, setVerifyFace} from "@/api";
|
||||
import { submitEditUserFace, compareUserFaceCertify, compareUserExamFaceCertify } from '@/api';
|
||||
// import {setMeetingFace, setScanCodeToVerifyFace, setUserFace, setVerifyFace} from "@/api";
|
||||
import {
|
||||
submitEditUserFace,
|
||||
compareUserFaceCertify,
|
||||
compareUserExamFaceCertify
|
||||
} from '@/api';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
startPreviewTimer: null, // 开始预览计时器实例
|
||||
isFirst: '', // 是否为第一次开启摄像头
|
||||
type: '', // 摄像头使用类别
|
||||
// showButton: "yes",
|
||||
routeQueryparams: {}, // 额外携带的参数
|
||||
btnTextStr: '拍照'
|
||||
}
|
||||
},
|
||||
onReady() {
|
||||
this.context = uni.createLivePusherContext('livePusher', this)
|
||||
this.startPreviewTimer = setInterval(() => {
|
||||
this.startPreview()
|
||||
}, 1000)
|
||||
},
|
||||
onLoad(query) {
|
||||
// facial_input 人脸认证 isFirst 1 第一次登录添加人脸
|
||||
// scan_face 扫码
|
||||
// update_facial_input 更新人脸
|
||||
// learning_certification 学习认证
|
||||
// meeting_attendance 会议签到
|
||||
const typeKey = ['facial_input', 'scan_face', 'learning_certification', 'update_facial_input']
|
||||
if (!typeKey.includes(query.type)) {
|
||||
uni.$u.toast('type参数错误')
|
||||
return
|
||||
}
|
||||
this.isFirst = query.isFirst || ''
|
||||
if (query.type === 'facial_input' || 'update_facial_input') this.btnTextStr = '人脸认证'
|
||||
if (query.type === 'scan_face') this.btnTextStr = '签到'
|
||||
if (query.type === 'learning_certification') this.btnTextStr = '开始考试'
|
||||
this.type = query.type
|
||||
// this.showButton = query.showButton || "yes";
|
||||
this.routeQueryparams = query ?? {}
|
||||
},
|
||||
onBackPress(event) {
|
||||
if (event.from === 'backbutton') {
|
||||
if ((this.type === 'scan_face' && this.isFirst === '1') || this.type === 'learning_certification' || this.type === 'facial_input') {
|
||||
uni.$u.toast('请完成人脸验证')
|
||||
return true
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
startPreviewTimer: null, // 开始预览计时器实例
|
||||
isFirst: '', // 是否为第一次开启摄像头
|
||||
type: '', // 摄像头使用类别
|
||||
// showButton: "yes",
|
||||
routeQueryparams: {}, // 额外携带的参数
|
||||
btnTextStr: '拍照'
|
||||
}
|
||||
},
|
||||
onReady() {
|
||||
this.context = uni.createLivePusherContext('livePusher', this)
|
||||
this.startPreviewTimer = setInterval(() => {
|
||||
this.startPreview()
|
||||
}, 1000)
|
||||
},
|
||||
onLoad(query) {
|
||||
// facial_input 人脸认证 isFirst 1 第一次登录添加人脸
|
||||
// scan_face 扫码
|
||||
// update_facial_input 更新人脸
|
||||
// learning_certification 学习认证
|
||||
// meeting_attendance 会议签到
|
||||
const typeKey = ['facial_input', 'scan_face', 'learning_certification', 'update_facial_input']
|
||||
if (!typeKey.includes(query.type)) {
|
||||
uni.$u.toast('type参数错误')
|
||||
return
|
||||
}
|
||||
this.isFirst = query.isFirst || ''
|
||||
if (query.type === 'facial_input' || 'update_facial_input') this.btnTextStr = '人脸认证'
|
||||
if (query.type === 'scan_face') this.btnTextStr = '签到'
|
||||
if (query.type === 'learning_certification') this.btnTextStr = '开始考试'
|
||||
this.type = query.type
|
||||
// this.showButton = query.showButton || "yes";
|
||||
this.routeQueryparams = query ?? {}
|
||||
},
|
||||
onBackPress(event) {
|
||||
// if (event.from === 'backbutton') {
|
||||
// if ((this.type === 'scan_face' && this.isFirst === '1') || this.type === 'learning_certification' || this.type === 'facial_input') {
|
||||
// uni.$u.toast('请完成人脸验证')
|
||||
// return true
|
||||
// }
|
||||
// }
|
||||
if (this.type === 'facial_input') {
|
||||
uni.$u.route({
|
||||
type: 'redirect',
|
||||
url: '/pages/index/index',
|
||||
})
|
||||
}
|
||||
return false
|
||||
},
|
||||
onUnload() {
|
||||
this.startPreviewTimer && clearInterval(this.startPreviewTimer)
|
||||
},
|
||||
methods: {
|
||||
snapshot() {
|
||||
uni.showLoading({
|
||||
title: '加载中'
|
||||
})
|
||||
this.context.snapshot({
|
||||
success: (e) => {
|
||||
this.getMinImage(e.message.tempImagePath)
|
||||
}
|
||||
})
|
||||
},
|
||||
startPreview() {
|
||||
this.context.stopPreview()
|
||||
this.context.startPreview({
|
||||
success: () => {
|
||||
this.startPreviewTimer && clearInterval(this.startPreviewTimer)
|
||||
// this.showButton === "no" && this.snapshot();
|
||||
}
|
||||
})
|
||||
},
|
||||
getMinImage(imgPath) {
|
||||
plus.zip.compressImage({
|
||||
src: imgPath,
|
||||
dst: imgPath,
|
||||
overwrite: true,
|
||||
quality: 40
|
||||
},
|
||||
(zipRes) => {
|
||||
setTimeout(() => {
|
||||
const reader = new plus.io.FileReader()
|
||||
reader.onloadend = async (res) => {
|
||||
const speech = res.target.result
|
||||
// 获取 base 64 图片编码的前缀
|
||||
const USERAVATARPREFIX = speech.substring(0, speech.indexOf(
|
||||
'base64,') + 7)
|
||||
// 获取 base 64 图片的二进制到文本
|
||||
const USERAVATARURL = speech.substring(speech.indexOf('base64,') + 7)
|
||||
try {
|
||||
const otherParams = {
|
||||
...this.routeQueryparams
|
||||
}
|
||||
delete otherParams.type
|
||||
if (this.type === 'facial_input' || this.type ===
|
||||
'update_facial_input') {
|
||||
await submitEditUserFace({
|
||||
...otherParams,
|
||||
USERAVATARPREFIX,
|
||||
USERAVATARURL
|
||||
})
|
||||
await this.$store.dispatch('setVerification', '1')
|
||||
uni.$u.toast('人脸信息认证成功')
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}, 1000)
|
||||
} else if (this.type === 'scan_face') {
|
||||
await compareUserFaceCertify({
|
||||
...otherParams,
|
||||
USERAVATARPREFIX,
|
||||
USERAVATARURL
|
||||
})
|
||||
uni.$u.toast('人脸认证成功')
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({
|
||||
delta: 2
|
||||
})
|
||||
}, 1000)
|
||||
} else if (this.type === 'learning_certification') {
|
||||
const res = await compareUserExamFaceCertify({
|
||||
...otherParams,
|
||||
USERAVATARPREFIX,
|
||||
USERAVATARURL
|
||||
})
|
||||
await uni.$u.toast('人脸认证成功, 请进入考试答题')
|
||||
setTimeout(() => {
|
||||
uni.$u.route({
|
||||
url: '/pages/train_management/course_exam',
|
||||
params: {
|
||||
...this.routeQueryparams
|
||||
}
|
||||
})
|
||||
}, 1000)
|
||||
}
|
||||
} catch (e) {
|
||||
console.log('扫描人脸过程中捕获的错误 :>>> ', e)
|
||||
if (e && e.msg) {
|
||||
uni.$u.toast(e.msg)
|
||||
}
|
||||
// this.showButton === "no" && this.snapshot();
|
||||
}
|
||||
}
|
||||
reader.readAsDataURL(plus.io.convertLocalFileSystemURL(zipRes.target))
|
||||
}, 4000)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
return false
|
||||
},
|
||||
onUnload() {
|
||||
this.startPreviewTimer && clearInterval(this.startPreviewTimer)
|
||||
},
|
||||
methods: {
|
||||
snapshot() {
|
||||
uni.showLoading({
|
||||
title: '加载中'
|
||||
})
|
||||
this.context.snapshot({
|
||||
success: (e) => {
|
||||
this.getMinImage(e.message.tempImagePath)
|
||||
}
|
||||
})
|
||||
},
|
||||
startPreview() {
|
||||
this.context.stopPreview()
|
||||
this.context.startPreview({
|
||||
success: () => {
|
||||
this.startPreviewTimer && clearInterval(this.startPreviewTimer)
|
||||
// this.showButton === "no" && this.snapshot();
|
||||
}
|
||||
})
|
||||
},
|
||||
getMinImage(imgPath) {
|
||||
plus.zip.compressImage(
|
||||
{
|
||||
src: imgPath,
|
||||
dst: imgPath,
|
||||
overwrite: true,
|
||||
quality: 40
|
||||
},
|
||||
(zipRes) => {
|
||||
setTimeout(() => {
|
||||
const reader = new plus.io.FileReader()
|
||||
reader.onloadend = async (res) => {
|
||||
const speech = res.target.result
|
||||
// 获取 base 64 图片编码的前缀
|
||||
const USERAVATARPREFIX = speech.substring(0, speech.indexOf('base64,') + 7)
|
||||
// 获取 base 64 图片的二进制到文本
|
||||
const USERAVATARURL = speech.substring(speech.indexOf('base64,') + 7)
|
||||
try {
|
||||
const otherParams = {
|
||||
...this.routeQueryparams
|
||||
}
|
||||
delete otherParams.type
|
||||
if (this.type === 'facial_input' || this.type === 'update_facial_input') {
|
||||
await submitEditUserFace({
|
||||
...otherParams,
|
||||
USERAVATARPREFIX,
|
||||
USERAVATARURL
|
||||
})
|
||||
await this.$store.dispatch('setVerification', '1')
|
||||
uni.$u.toast('人脸信息认证成功')
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}, 1000)
|
||||
} else if (this.type === 'scan_face') {
|
||||
await compareUserFaceCertify({
|
||||
...otherParams,
|
||||
USERAVATARPREFIX,
|
||||
USERAVATARURL
|
||||
})
|
||||
uni.$u.toast('人脸认证成功')
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({
|
||||
delta: 2
|
||||
})
|
||||
}, 1000)
|
||||
} else if (this.type === 'learning_certification') {
|
||||
const res = await compareUserExamFaceCertify({
|
||||
...otherParams,
|
||||
USERAVATARPREFIX,
|
||||
USERAVATARURL
|
||||
})
|
||||
await uni.$u.toast('人脸认证成功, 请进入考试答题')
|
||||
setTimeout(() => {
|
||||
uni.$u.route({
|
||||
url: '/pages/train_management/course_exam',
|
||||
params: {
|
||||
...this.routeQueryparams
|
||||
}
|
||||
})
|
||||
}, 1000)
|
||||
}
|
||||
} catch (e) {
|
||||
console.log('扫描人脸过程中捕获的错误 :>>> ', e)
|
||||
if (e && e.msg) {
|
||||
uni.$u.toast(e.msg)
|
||||
}
|
||||
// this.showButton === "no" && this.snapshot();
|
||||
}
|
||||
}
|
||||
reader.readAsDataURL(plus.io.convertLocalFileSystemURL(zipRes.target))
|
||||
}, 4000)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.container {
|
||||
background-color: #fff;
|
||||
}
|
||||
.container {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.livePusher {
|
||||
width: 700upx;
|
||||
height: 700upx;
|
||||
}
|
||||
.livePusher {
|
||||
width: 700upx;
|
||||
height: 700upx;
|
||||
}
|
||||
|
||||
.livefater {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-bottom: 100upx;
|
||||
height: 700upx;
|
||||
}
|
||||
.livefater {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-bottom: 100upx;
|
||||
height: 700upx;
|
||||
}
|
||||
|
||||
.fat {
|
||||
margin: 100upx;
|
||||
}
|
||||
.fat {
|
||||
margin: 100upx;
|
||||
}
|
||||
|
||||
.fatt {
|
||||
text-align: center;
|
||||
font-size: 36upx;
|
||||
font-weight: 800;
|
||||
}
|
||||
.fatt {
|
||||
text-align: center;
|
||||
font-size: 36upx;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.gaiimg {
|
||||
width: 700upx;
|
||||
height: 700upx;
|
||||
margin-top: -700upx;
|
||||
}
|
||||
</style>
|
||||
.gaiimg {
|
||||
width: 700upx;
|
||||
height: 700upx;
|
||||
margin-top: -700upx;
|
||||
}
|
||||
</style>
|
Loading…
Reference in New Issue