From 1a14b7ce70cdca5c81814dccbf09156d8e20d547 Mon Sep 17 00:00:00 2001 From: duoaohui <928970622@qq.com> Date: Sat, 23 May 2026 22:07:36 +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 | 41 +++++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/cloud-law/video-call.vue b/frontend/src/pages/cloud-law/video-call.vue index 4e8ae22..d4a02de 100644 --- a/frontend/src/pages/cloud-law/video-call.vue +++ b/frontend/src/pages/cloud-law/video-call.vue @@ -451,40 +451,70 @@ const swapPrimaryTile = () => { } const onMicToggle = async () => { - if (audioLoading.value || leaving.value) return + console.log('[CloudLawVideoCall] onMicToggle clicked', { + audioLoading: audioLoading.value, + leaving: leaving.value, + audioEnabled: audioEnabled.value, + localAudioEnabled: meetingStore.localAudioEnabled, + localProducerAudio: meetingStore.localProducers?.audio, + isInMeeting: meetingStore.isInMeeting + }) + if (audioLoading.value || leaving.value) { + console.warn('[CloudLawVideoCall] onMicToggle short-circuited by loading/leaving flag') + return + } audioLoading.value = true try { if (audioEnabled.value) { + console.log('[CloudLawVideoCall] -> stopLocalAudio') await meetingStore.stopLocalAudio() + console.log('[CloudLawVideoCall] stopLocalAudio done') } else { + console.log('[CloudLawVideoCall] -> startLocalAudio') await meetingStore.startLocalAudio() + console.log('[CloudLawVideoCall] startLocalAudio done, localAudioEnabled =', meetingStore.localAudioEnabled) localMediaError.value = '' } } catch (err) { console.error('[CloudLawVideoCall] mic toggle failed', err) const msg = err?.message || '麦克风操作失败' localMediaError.value = `麦克风:${msg}` - uni.showModal({ title: '麦克风开启失败', content: msg, showCancel: false }) + uni.showModal({ title: '麦克风操作失败', content: msg, showCancel: false }) } finally { audioLoading.value = false } } const onCamToggle = async () => { - if (videoLoading.value || leaving.value) return + console.log('[CloudLawVideoCall] onCamToggle clicked', { + videoLoading: videoLoading.value, + leaving: leaving.value, + videoEnabled: videoEnabled.value, + localVideoEnabled: meetingStore.localVideoEnabled, + localProducerVideo: meetingStore.localProducers?.video, + isInMeeting: meetingStore.isInMeeting + }) + if (videoLoading.value || leaving.value) { + console.warn('[CloudLawVideoCall] onCamToggle short-circuited by loading/leaving flag') + return + } videoLoading.value = true try { if (videoEnabled.value) { + console.log('[CloudLawVideoCall] -> stopLocalVideo') await meetingStore.stopLocalVideo() + console.log('[CloudLawVideoCall] stopLocalVideo done') } else { + console.log('[CloudLawVideoCall] -> startLocalVideo') await meetingStore.startLocalVideo() + console.log('[CloudLawVideoCall] startLocalVideo done, localVideoEnabled =', meetingStore.localVideoEnabled) localMediaError.value = '' } } catch (err) { console.error('[CloudLawVideoCall] cam toggle failed', err) const msg = err?.message || '摄像头操作失败' localMediaError.value = `摄像头:${msg}` - uni.showModal({ title: '摄像头开启失败', content: msg, showCancel: false }) + uni.showModal({ title: '摄像头操作失败', content: msg, showCancel: false }) } finally { videoLoading.value = false } @@ -868,4 +898,7 @@ onUnload(() => { .clean-video-tile :deep(.tag-self) { display: none; } +.clean-video-tile :deep(.tag-host) { + display: none; +}