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 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ tab.label }}
-
-
-
-
-
-
-
-
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 }}
-
-
-
-
-
-
-
-
-
- {{ floor.label }}
-
-
-
-
-
-
-
- {{ item.name }}
- {{ item.floorLabel }} · {{ item.primaryCategory.label }}
-
- ›
-
-
-
- {{ emptyTitle }}
- 可切换楼层或搜索服务设施
-
-
-
-
+