diff --git a/frontend/src/pages/meeting/preview.vue b/frontend/src/pages/meeting/preview.vue index f3123d8..f976b95 100644 --- a/frontend/src/pages/meeting/preview.vue +++ b/frontend/src/pages/meeting/preview.vue @@ -111,6 +111,7 @@ const userStore = useUserStore() const mode = ref('create') const joinCode = ref('') const joinPassword = ref('') +const autoJoin = ref(false) const modeLabel = computed(() => mode.value === 'create' ? '即将创建新会议' : `即将加入会议 ${joinCode.value}`) @@ -430,6 +431,7 @@ const onJoin = async () => { onLoad(async (query) => { mode.value = query?.mode === 'join' ? 'join' : 'create' joinCode.value = query?.code || '' + autoJoin.value = query?.autoJoin === '1' || query?.autoJoin === 'true' || query?.autoJoin === true // P0-4:密码不再从 URL query 读取,改为从 meetingStore.draftJoinPayload 一次性消费 // 防止 URL 历史 / DevTools 留痕;读取后立即清空草稿避免二次写回 if (mode.value === 'join') { @@ -450,6 +452,10 @@ onLoad(async (query) => { if (hasPermission.value && (selectedVideoId.value || selectedAudioId.value)) { await startPreview() } + if (autoJoin.value && canJoin.value) { + await nextTick() + onJoin() + } }) onBeforeUnmount(() => {