Files
yunzerwebsiteallinone/uniapp/pages/login/geetest-webview.vue
T
2026-07-15 22:38:33 +08:00

31 lines
847 B
Vue

<template>
<web-view :src="webviewSrc" @message="onMessage" />
</template>
<script setup>
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const webviewSrc = ref('')
let eventChannel = null
onLoad((query) => {
const captchaId = decodeURIComponent(query.captchaId || '')
webviewSrc.value = `/static/html/geetest-captcha.html?captchaId=${encodeURIComponent(captchaId)}`
const pages = getCurrentPages()
const page = pages[pages.length - 1]
eventChannel = page.getOpenerEventChannel?.()
})
function onMessage(e) {
const payload = (e.detail && e.detail.data && e.detail.data[0]) || {}
if (payload.type === 'success') {
eventChannel?.emit('geetestSuccess', payload.result || {})
uni.navigateBack()
return
}
eventChannel?.emit('geetestFail', payload.msg || '人机验证未通过')
uni.navigateBack()
}
</script>