From ad692e233acb140c09142819ddba9457d5fbc12b Mon Sep 17 00:00:00 2001 From: lyf <2514544224@qq.com> Date: Sun, 5 Jul 2026 22:14:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A6=96=E9=A1=B5=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=B5=AE=E5=B1=82=E4=B8=8E=E5=AF=BC=E8=A7=88=E5=85=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/navigation/GuideBottomNav.vue | 175 --- src/components/navigation/GuidePageFrame.vue | 10 +- .../navigation/RoutePlannerPanel.vue | 2 +- src/components/search/PoiSearchPanel.vue | 1014 +++++++++++++++++ src/pages.json | 7 - src/pages/explain/list.vue | 1 - src/pages/facility/detail.vue | 5 +- src/pages/index/index.vue | 100 +- src/pages/route/detail.vue | 11 +- src/pages/search/index.vue | 983 +--------------- 10 files changed, 1094 insertions(+), 1214 deletions(-) delete mode 100644 src/components/navigation/GuideBottomNav.vue create mode 100644 src/components/search/PoiSearchPanel.vue diff --git a/src/components/navigation/GuideBottomNav.vue b/src/components/navigation/GuideBottomNav.vue deleted file mode 100644 index 8fa2ec2..0000000 --- a/src/components/navigation/GuideBottomNav.vue +++ /dev/null @@ -1,175 +0,0 @@ - - - - - diff --git a/src/components/navigation/GuidePageFrame.vue b/src/components/navigation/GuidePageFrame.vue index b1aa5bd..c5d7793 100644 --- a/src/components/navigation/GuidePageFrame.vue +++ b/src/components/navigation/GuidePageFrame.vue @@ -1,7 +1,7 @@ + + diff --git a/src/pages.json b/src/pages.json index 10dcb7e..884f4df 100644 --- a/src/pages.json +++ b/src/pages.json @@ -60,12 +60,5 @@ "navigationBarTitleText": "深圳自然博物馆", "navigationBarBackgroundColor": "#FFFFFF", "backgroundColor": "#F3F3F3" - }, - "tabBar": { - "color": "#333333", - "selectedColor": "#E0E100", - "backgroundColor": "#FFFFFF", - "borderStyle": "black", - "list": [] } } diff --git a/src/pages/explain/list.vue b/src/pages/explain/list.vue index 29d18d3..3ef55a2 100644 --- a/src/pages/explain/list.vue +++ b/src/pages/explain/list.vue @@ -3,7 +3,6 @@ active-tab="explain" variant="static" :show-top-tabs="false" - show-bottom-nav show-back back-label="讲解首页" @tab-change="handleTopTabChange" diff --git a/src/pages/facility/detail.vue b/src/pages/facility/detail.vue index f1dc7e2..ed83b1a 100644 --- a/src/pages/facility/detail.vue +++ b/src/pages/facility/detail.vue @@ -3,7 +3,6 @@ active-tab="guide" variant="overlay" :show-top-tabs="false" - show-bottom-nav show-back @tab-change="handleTopTabChange" @back="handlePageBack" @@ -375,7 +374,7 @@ const handlePageBack = () => { position: absolute; left: 84px; right: 16px; - bottom: calc(env(safe-area-inset-bottom) + 116px); + bottom: calc(env(safe-area-inset-bottom) + 24px); min-height: 110px; padding: 14px 14px 12px; box-sizing: border-box; @@ -498,7 +497,7 @@ const handlePageBack = () => { .detail-restore { position: absolute; right: 18px; - bottom: calc(env(safe-area-inset-bottom) + 266px); + bottom: calc(env(safe-area-inset-bottom) + 152px); height: 40px; min-width: 74px; padding: 0 12px; diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index a0d5a62..25d1610 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -3,7 +3,6 @@ :active-tab="currentTab" variant="overlay" :show-top-tabs="false" - show-bottom-nav @tab-change="handleTabChange" > @@ -127,7 +126,7 @@ 来馆 - + @@ -137,6 +136,16 @@ + + + + void } | null>(null) +const homeSearchExpanded = ref(false) let launchOverlayFallbackTimer: ReturnType | null = null let launchOverlayFadeTimer: ReturnType | null = null @@ -527,12 +538,22 @@ const disableIndoorAutoExit = computed(() => ( || isSimulatingRoute.value )) -const showGuideQuickActions = computed(() => ( +const showGuideHomeDock = computed(() => ( currentTab.value === 'guide' && !showRoutePlanner.value && !showOutdoorNavPanel.value && !selectedGuidePoi.value && !isSimulatingRoute.value + && !(guideOutdoorState.value === 'entrance' && !is3DMode.value) +)) + +const showGuideFloatingActions = computed(() => ( + currentTab.value === 'guide' + && !showRoutePlanner.value + && !showOutdoorNavPanel.value + && !selectedGuidePoi.value + && !isSimulatingRoute.value + && (!showGuideHomeDock.value || !homeSearchExpanded.value) )) const toRoutePointOption = (target: GuideRouteTarget): RoutePointOption => ({ @@ -780,12 +801,6 @@ const buildExplainHallItems = ( }) } -const handleGuideSearchTap = () => { - uni.navigateTo({ - url: '/pages/search/index' - }) -} - const handleFloorRequest = ({ floorId, floorLabel }: { floorId: string; floorLabel: string }) => { requestedFloorId.value = floorId requestedFloorLabel.value = floorLabel @@ -1222,6 +1237,10 @@ const handleExplainQuickTap = () => { handleTabChange('explain') } +const handleHomeSearchExpandedChange = (expanded: boolean) => { + homeSearchExpanded.value = expanded +} + const handleOutdoorNavClose = () => { closeOutdoorNavPanel() } @@ -1618,7 +1637,7 @@ const handleExplainBack = () => { position: absolute; left: 12px; right: 12px; - bottom: calc(env(safe-area-inset-bottom) + 112px); + bottom: calc(env(safe-area-inset-bottom) + 24px); box-sizing: border-box; background: rgba(255, 255, 255, 0.96); border: 1px solid #e5e6de; @@ -1777,35 +1796,45 @@ const handleExplainBack = () => { color: var(--museum-accent); } -.guide-quick-actions { - --guide-floating-control-width: 48px; - +.guide-home-dock { position: absolute; - top: 118px; + left: 12px; + right: 12px; + bottom: calc(env(safe-area-inset-bottom) + 16px); + padding: 12px; + box-sizing: border-box; + background: rgba(255, 255, 255, 0.96); + border: 1px solid rgba(255, 255, 255, 0.96); + border-radius: 16px; + box-shadow: 0 10px 28px rgba(36, 49, 42, 0.16); + z-index: 1003; +} + +.guide-quick-actions { + position: absolute; + top: clamp(96px, 14vh, 118px); right: 18px; - width: var(--guide-floating-control-width); + width: 48px; display: flex; flex-direction: column; - align-items: stretch; gap: 8px; z-index: 1002; } .guide-quick-action { - width: 100%; - height: 56px; - min-height: 0; - padding: 6px 4px; + width: 48px; + min-height: 56px; + padding: 7px 4px 6px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; box-sizing: border-box; - background: rgba(255, 255, 255, 0.95); - border: 1px solid #dde5df; + background: rgba(255, 255, 255, 0.96); + border: 1px solid rgba(230, 233, 224, 0.96); border-radius: 8px; - box-shadow: 0 8px 18px rgba(110, 127, 115, 0.12); + box-shadow: 0 8px 22px rgba(36, 49, 42, 0.14); } .guide-quick-action.primary { @@ -1813,11 +1842,6 @@ const handleExplainBack = () => { border-color: #151713; } -.guide-quick-action.explain { - background: rgba(245, 245, 237, 0.96); - border-color: #dfe4d8; -} - .guide-quick-action:active { transform: translateY(1px); } @@ -1834,10 +1858,6 @@ const handleExplainBack = () => { color: var(--museum-accent); } -.guide-quick-action.explain .guide-quick-icon { - color: #151713; -} - .guide-quick-icon-floor { position: absolute; left: 3px; @@ -1910,7 +1930,7 @@ const handleExplainBack = () => { width: 100%; font-size: 12px; line-height: 16px; - font-weight: 600; + font-weight: 700; color: #151713; text-align: center; white-space: nowrap; @@ -1951,7 +1971,7 @@ const handleExplainBack = () => { position: absolute; left: 12px; right: 12px; - bottom: calc(env(safe-area-inset-bottom) + 112px); + bottom: calc(env(safe-area-inset-bottom) + 24px); min-height: 54px; padding: 10px 10px 10px 14px; display: flex; @@ -2053,7 +2073,7 @@ const handleExplainBack = () => { position: absolute; left: 12px; right: 12px; - bottom: calc(env(safe-area-inset-bottom) + 216px); + bottom: calc(env(safe-area-inset-bottom) + 128px); height: 84px; padding: 16px 10px 8px; display: flex; @@ -2191,7 +2211,7 @@ const handleExplainBack = () => { position: absolute; left: 12px; right: 12px; - bottom: calc(env(safe-area-inset-bottom) + 216px); + bottom: calc(env(safe-area-inset-bottom) + 128px); z-index: 1003; } @@ -2199,7 +2219,7 @@ const handleExplainBack = () => { position: absolute; left: 12px; right: 12px; - bottom: calc(env(safe-area-inset-bottom) + 112px); + bottom: calc(env(safe-area-inset-bottom) + 24px); height: 94px; padding: 16px 16px 10px; display: flex; @@ -2255,7 +2275,7 @@ const handleExplainBack = () => { position: absolute; left: 12px; right: 12px; - bottom: calc(env(safe-area-inset-bottom) + 116px); + bottom: calc(env(safe-area-inset-bottom) + 24px); height: 158px; padding: 18px 16px 14px; box-sizing: border-box; diff --git a/src/pages/route/detail.vue b/src/pages/route/detail.vue index b448aa3..36067cc 100644 --- a/src/pages/route/detail.vue +++ b/src/pages/route/detail.vue @@ -3,7 +3,6 @@ active-tab="guide" variant="overlay" :show-top-tabs="false" - show-bottom-nav show-back :show-cancel="isManualLocationPanelOpen" @tab-change="handleTopTabChange" @@ -846,7 +845,7 @@ const handlePageBack = () => { position: absolute; left: 16px; right: 16px; - bottom: calc(env(safe-area-inset-bottom) + 116px); + bottom: calc(env(safe-area-inset-bottom) + 24px); min-height: 170px; padding: 22px 20px 20px; display: flex; @@ -863,7 +862,7 @@ const handlePageBack = () => { position: absolute; left: 16px; right: 16px; - bottom: calc(env(safe-area-inset-bottom) + 116px); + bottom: calc(env(safe-area-inset-bottom) + 24px); min-height: 156px; padding: 24px 18px 16px; display: flex; @@ -897,7 +896,7 @@ const handlePageBack = () => { .indoor-guide-peek { position: absolute; left: 50%; - bottom: calc(env(safe-area-inset-bottom) + 104px); + bottom: calc(env(safe-area-inset-bottom) + 24px); width: 132px; height: 38px; display: flex; @@ -1135,7 +1134,7 @@ const handlePageBack = () => { position: absolute; left: 0; right: 0; - bottom: calc(env(safe-area-inset-bottom) + 116px); + bottom: calc(env(safe-area-inset-bottom) + 24px); height: 196px; padding: 21px 20px 14px; box-sizing: border-box; @@ -1275,7 +1274,7 @@ const handlePageBack = () => { position: absolute; left: 12px; right: 12px; - bottom: calc(env(safe-area-inset-bottom) + 116px); + bottom: calc(env(safe-area-inset-bottom) + 24px); height: 158px; padding: 18px 16px 14px; box-sizing: border-box; diff --git a/src/pages/search/index.vue b/src/pages/search/index.vue index db116b2..eb869ae 100644 --- a/src/pages/search/index.vue +++ b/src/pages/search/index.vue @@ -10,322 +10,29 @@ - - - - - × - - - - - - - - - - - - {{ item.label }} - - - - - 服务设施 - - - - - - {{ item.label }} - - - - - - 深圳自然博物馆 - {{ floorResults.length }} 个点位 - - - - - - {{ floor.label }} - - - - - - - - {{ item.name }} - {{ item.floorLabel }} · {{ item.primaryCategory.label }} - - - - - - {{ emptyTitle }} - 可切换楼层或搜索服务设施 - - - - +