From 11a3acb13712de9d1e125ac85d610f8321d989cc Mon Sep 17 00:00:00 2001 From: lyf <2514544224@qq.com> Date: Fri, 10 Jul 2026 09:42:01 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=90=E5=88=B6=E8=AE=B2=E8=A7=A3=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=92=AD=E6=94=BE=E5=99=A8=E4=B8=BA=E6=94=B6=E8=B5=B7?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/audio/AudioPlayer.vue | 8 ++++++-- src/components/audio/GlobalAudioPlayerHost.vue | 7 ++++++- src/components/navigation/GuidePageFrame.vue | 3 +++ src/pages/exhibit/detail.vue | 5 +++-- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/components/audio/AudioPlayer.vue b/src/components/audio/AudioPlayer.vue index a4b6657..c2f8e5a 100644 --- a/src/components/audio/AudioPlayer.vue +++ b/src/components/audio/AudioPlayer.vue @@ -83,7 +83,7 @@ - + @@ -105,7 +105,7 @@ - + 展开 @@ -147,6 +147,7 @@ const props = defineProps<{ currentTime?: number durationValue?: number closable?: boolean + expandable?: boolean }>() const emit = defineEmits<{ @@ -201,6 +202,7 @@ const displayPlaybackError = computed(() => props.controlled ? props.playbackErr const displayCurrentTime = computed(() => props.controlled ? props.currentTime || 0 : localCurrentTime.value) const displayMode = computed(() => props.mode || 'mini') const closable = computed(() => props.closable !== false) +const expandable = computed(() => props.expandable !== false) const displayAudioLanguage = computed(() => ( displayAudio.value?.language === 'en-US' ? 'en-US' : 'zh-CN' )) @@ -497,6 +499,8 @@ const handleSeek = (e: any) => { // 展开播放器 const handleExpand = () => { + if (!expandable.value) return + emit('expand') } diff --git a/src/components/audio/GlobalAudioPlayerHost.vue b/src/components/audio/GlobalAudioPlayerHost.vue index 92521e3..2b2d3cc 100644 --- a/src/components/audio/GlobalAudioPlayerHost.vue +++ b/src/components/audio/GlobalAudioPlayerHost.vue @@ -10,6 +10,7 @@ :current-time="currentTime" :duration-value="duration" :closable="closable" + :expandable="expandable" :avoid-bottom-nav="avoidBottomNav" :mode="currentDisplayMode" @toggle="handleToggle" @@ -34,10 +35,12 @@ const props = withDefaults(defineProps<{ avoidBottomNav?: boolean displayMode?: AudioDisplayMode closable?: boolean + expandable?: boolean }>(), { avoidBottomNav: true, displayMode: 'mini', - closable: true + closable: true, + expandable: true }) const player = useGlobalAudioPlayer() @@ -99,6 +102,8 @@ const handleVisibleChange = (visible: boolean) => { } const handleExpand = () => { + if (!props.expandable) return + if (currentDisplayMode.value === 'floating') { player.setDisplayMode('mini') return diff --git a/src/components/navigation/GuidePageFrame.vue b/src/components/navigation/GuidePageFrame.vue index 5685b58..591efb6 100644 --- a/src/components/navigation/GuidePageFrame.vue +++ b/src/components/navigation/GuidePageFrame.vue @@ -37,6 +37,7 @@ :avoid-bottom-nav="audioPlayerAvoidBottomNav" :display-mode="audioPlayerMode" :closable="audioPlayerClosable" + :expandable="audioPlayerExpandable" /> @@ -60,6 +61,7 @@ withDefaults(defineProps<{ audioPlayerAvoidBottomNav?: boolean audioPlayerMode?: AudioDisplayMode audioPlayerClosable?: boolean + audioPlayerExpandable?: boolean showAudioPlayerHost?: boolean }>(), { activeTab: 'guide', @@ -74,6 +76,7 @@ withDefaults(defineProps<{ audioPlayerAvoidBottomNav: true, audioPlayerMode: 'mini', audioPlayerClosable: true, + audioPlayerExpandable: true, showAudioPlayerHost: false }) diff --git a/src/pages/exhibit/detail.vue b/src/pages/exhibit/detail.vue index baf4ffd..50c5bbf 100644 --- a/src/pages/exhibit/detail.vue +++ b/src/pages/exhibit/detail.vue @@ -5,8 +5,9 @@ :show-top-tabs="false" :audio-player-avoid-bottom-nav="false" :audio-player-closable="false" + :audio-player-expandable="false" :show-audio-player-host="true" - audio-player-mode="expanded" + audio-player-mode="mini" @back="handleBack" > @@ -610,7 +611,7 @@ const handlePlayAudio = async () => { detailRoute: buildDetailRoute() }, retryOnError: refreshCurrentAudioOnce, - displayMode: 'expanded' + displayMode: 'mini' }) }