72 lines
1.6 KiB
Vue
72 lines
1.6 KiB
Vue
<template>
|
|
<view class="container">
|
|
<web-view v-if="src" :src="src" bindmessage="handleGetMessage"></web-view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data() {
|
|
return {
|
|
src: '' // WebView URL
|
|
}
|
|
},
|
|
|
|
// 页面加载
|
|
onLoad(e) {
|
|
let url = e.url || ''
|
|
try {
|
|
url = decodeURIComponent(url)
|
|
} catch (err) {
|
|
console.warn('decode error', url)
|
|
}
|
|
console.log("签署链接:" + url)
|
|
// 强制刷新 WebView
|
|
this.src = ''
|
|
this.$nextTick(() => {
|
|
this.src = url
|
|
console.log('webview src set:', this.src)
|
|
})
|
|
},
|
|
|
|
methods: {
|
|
/**
|
|
* 刷脸完成后重新加载页面
|
|
*/
|
|
reloadPage(redirectUrl) {
|
|
console.log('---webview reloadPage', redirectUrl)
|
|
this.src = redirectUrl || this.src
|
|
},
|
|
|
|
/**
|
|
* 消息通知回调处理
|
|
* H5 / App / 小程序都可以调用
|
|
*/
|
|
handleGetMessage(e) {
|
|
console.log('handleGetMessage', e)
|
|
const data = e.detail?.data?.[0]
|
|
if (data && data.result === 'success') {
|
|
// 跳转中转页
|
|
// #ifdef MP-WEIXIN
|
|
wx.navigateBack()
|
|
// #endif
|
|
|
|
// #ifdef H5
|
|
if (window.history.length > 1) {
|
|
window.history.go(-delta)
|
|
} else {
|
|
// 没有上一页就跳首页
|
|
this.$router.replace('/')
|
|
}
|
|
return
|
|
// #endif
|
|
|
|
// #ifdef APP-PLUS
|
|
// 这里根据你 APP 路由跳转方法
|
|
// plus.webview.open('/redirect/bizpage')
|
|
// #endif
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script> |