diff --git a/frontend/src/pages/cloud-law/video-call.vue b/frontend/src/pages/cloud-law/video-call.vue index 35117bf..3e5a052 100644 --- a/frontend/src/pages/cloud-law/video-call.vue +++ b/frontend/src/pages/cloud-law/video-call.vue @@ -166,7 +166,8 @@ import { minimizeCloudLawMeeting } from '@/utils/cloudLawMiniProgram' import { notifyCloudLawBackendEnd, notifyCloudLawParentCallEnded, - isCloudLawPcIframe + isCloudLawPcIframe, + notifyNativeMiniProgramHangup } from '@/utils/cloudLawVoiceCall' import bgImage from '@/static/bg.png' import hangupIcon from '@/static/cacel.png' @@ -1050,14 +1051,17 @@ const hangup = async () => { } finally { ended.value = true leaving.value = false - // 用户端:优先尝试跳转小程序咨询详情;失败则依赖小程序页轮询 /end 状态兜底 - notifyMiniProgramCallEndedOnce() - if (!isLawRole.value) { + if (isLawRole.value) { + notifyMiniProgramCallEndedOnce() + } else { + // 用户端跳转咨询详情:postMessage 仅作辅助。 + // 房间已 endMeeting 同源结束,这里用 URL 桥接(cloudLawHangup=1)触发原生页 onWebViewLoad, + // 由原生页用 uni.reLaunch 跳转——web-view JSSDK 的 reLaunch 无成功回调,当前微信环境会 + // navigateTo:fail timeout 静默失败却误标记已跳转,导致停不到咨询详情,故不依赖它。 + notifyMiniProgramCallEndedOnce() setTimeout(() => { - if (ended.value && !miniProgramRedirected) { - goToConsultDetail() - } - }, 600) + notifyNativeMiniProgramHangup() + }, 300) } } }