diff --git a/frontend/src/pages/cloud-law/video-call.vue b/frontend/src/pages/cloud-law/video-call.vue index 82b3c21..f9a5a7d 100644 --- a/frontend/src/pages/cloud-law/video-call.vue +++ b/frontend/src/pages/cloud-law/video-call.vue @@ -640,17 +640,7 @@ const scheduleEndedRedirect = () => { } const goToConsultDetail = () => { - // 结束页按钮必须强制重试,不能走 notifyMiniProgramCallEndedOnce()。 - // 前面自动跳转可能已经把 miniProgramEndNotified / miniProgramRedirected 置为 true, - // 但实际 wx.miniProgram 导航可能静默失败,导致用户点「查看咨询详情」也被 once guard 拦掉。 - miniProgramEndNotified = false - miniProgramRedirected = false - console.log('[CloudLawVideoCall] 查看咨询详情 CLICK force redirect', { - callId: callId.value, - consultId: consultId.value, - returnUrl: buildMiniProgramReturnUrl() - }) - notifyCloudLawEnd().finally(() => notifyMiniProgramCallEnded()) + notifyCloudLawEnd().finally(() => notifyMiniProgramCallEndedOnce()) } const pollCommandsOnce = async () => { diff --git a/frontend/src/utils/cloudLawVoiceCall.js b/frontend/src/utils/cloudLawVoiceCall.js index c5add60..7780ce2 100644 --- a/frontend/src/utils/cloudLawVoiceCall.js +++ b/frontend/src/utils/cloudLawVoiceCall.js @@ -137,6 +137,11 @@ export function notifyNativeMiniProgramHangup() { return false } try { + const mp = window.wx && window.wx.miniProgram + if (!mp) { + console.warn('[cloudLawVoiceCall] bridge skip: window.wx.miniProgram 不存在(jweixin 未加载/不在小程序 web-view 内)') + return false + } const href = String(window.location.href || '') if (href.includes(`${CLOUD_LAW_HANGUP_QUERY}=1`)) { console.log('[cloudLawVoiceCall] bridge: URL 已含 cloudLawHangup=1,跳过重复重载')