From 724bbcd30995b8b4a8039a6b550bfef1cf91c1bc Mon Sep 17 00:00:00 2001 From: duoaohui <928970622@qq.com> Date: Sat, 23 May 2026 22:10:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=86=E9=A2=91=E4=BC=9A=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/cloud-law/video-call.vue | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/frontend/src/pages/cloud-law/video-call.vue b/frontend/src/pages/cloud-law/video-call.vue index d4a02de..d99599c 100644 --- a/frontend/src/pages/cloud-law/video-call.vue +++ b/frontend/src/pages/cloud-law/video-call.vue @@ -525,16 +525,19 @@ const hangup = async () => { leaving.value = true try { // 云律视频咨询:发起人(小程序端用户)在 CreateRoomForInternal 时被加成 host, - // 用户挂机即视为整个咨询结束,直接 endMeeting 让另一端(律师 iframe)也收到 room.ended 退出。 - // 非 host 兜底走 leave,避免异常会议状态下挂机被卡住。 - if (meetingStore.isHost) { - await meetingStore.endMeeting() - } else { - await meetingStore.leave() - } + // 用户挂机 = 咨询结束,无条件 endMeeting 让律师 iframe 收到 room.ended 自动退出。 + // 不依赖 meetingStore.isHost(host_id/userId 偶发类型不一致导致误判 false 只走 leave, + // 表现就是"用户端挂机后 PC 还停在会议里")。 + console.log('[CloudLawVideoCall] hangup -> endMeeting', { + roomCode: meetingStore.currentRoom?.room_code, + hostId: meetingStore.currentRoom?.host_id, + myUserId: userStore.userInfo?.id || userStore.userInfo?.user_id, + isHostComputed: meetingStore.isHost + }) + await meetingStore.endMeeting() } catch (err) { - console.warn('[CloudLawVideoCall] hangup failed', err) - // endMeeting 失败时兜底 leave,至少自己先退出 + console.warn('[CloudLawVideoCall] endMeeting failed, fallback leave', err) + // endMeeting 失败时兜底 leave,至少自己先退出,避免卡死 try { await meetingStore.leave() } catch (leaveErr) { console.warn('[CloudLawVideoCall] fallback leave failed', leaveErr) } } finally { ended.value = true