From e2b6a331ba70daa393fee3f438790126b398f52c Mon Sep 17 00:00:00 2001
From: lyf <2514544224@qq.com>
Date: Mon, 6 Jul 2026 17:17:58 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=82=B9=E4=BD=8D=E6=90=9C?=
=?UTF-8?q?=E7=B4=A2H5=E5=AE=BD=E5=BA=A6=E9=80=82=E9=85=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/App.vue | 2 +
src/components/search/PoiSearchPanel.vue | 356 ++++++++++++++++++++++-
src/pages/index/index.vue | 81 +++++-
src/pages/search/index.vue | 94 +++++-
4 files changed, 510 insertions(+), 23 deletions(-)
diff --git a/src/App.vue b/src/App.vue
index de3164c..3dbe05d 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -42,6 +42,8 @@ onLaunch(() => {
--radius-button: 8px;
--radius-small: 6px;
--radius-mini: 5.5px;
+ --museum-h5-page-max-width: 430px;
+ --museum-h5-page-width: min(100vw, var(--museum-h5-page-max-width));
/* 间距 */
--space-xs: 4px;
diff --git a/src/components/search/PoiSearchPanel.vue b/src/components/search/PoiSearchPanel.vue
index fab6d56..50a402f 100644
--- a/src/components/search/PoiSearchPanel.vue
+++ b/src/components/search/PoiSearchPanel.vue
@@ -5,8 +5,20 @@
@touchstart="handlePanelTouchStart"
@touchend="handlePanelTouchEnd"
@touchcancel="resetPanelTouch"
+ @mousedown="handlePanelMouseStart"
+ @mousemove="handlePanelMouseMove"
+ @mouseup="handlePanelMouseEnd"
+ @mouseleave="resetPanelMouse"
>
-
+
+
+ ‹
+
+ 点位搜索
+
+
+
+
-
+
@@ -127,7 +142,7 @@
diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue
index 7063859..5e99b79 100644
--- a/src/pages/index/index.vue
+++ b/src/pages/index/index.vue
@@ -137,11 +137,26 @@
+
+
@@ -404,6 +419,10 @@ const isPoiCardCollapsed = ref(false)
const guideMapShellRef = ref<{
clearRoute?: () => void
} | null>(null)
+const homeSearchPanelRef = ref<{
+ expandHomePanel?: () => void
+ collapseHomePanel?: () => void
+} | null>(null)
const homeSearchExpanded = ref(false)
let launchOverlayFallbackTimer: ReturnType | null = null
@@ -1303,6 +1322,18 @@ const handleHomeSearchExpandedChange = (expanded: boolean) => {
homeSearchExpanded.value = expanded
}
+const handleHomeSearchOutsideTap = () => {
+ homeSearchPanelRef.value?.collapseHomePanel?.()
+ homeSearchExpanded.value = false
+}
+
+const handleHomeDockActivate = () => {
+ if (homeSearchExpanded.value) return
+
+ homeSearchPanelRef.value?.expandHomePanel?.()
+ homeSearchExpanded.value = true
+}
+
const handleOutdoorNavClose = () => {
closeOutdoorNavPanel()
}
@@ -1897,8 +1928,10 @@ const handleExplainBack = () => {
.guide-home-dock {
position: absolute;
- left: 12px;
- right: 12px;
+ --museum-h5-page-width: min(100vw, 430px);
+ left: 50%;
+ right: auto;
+ width: calc(var(--museum-h5-page-width) - 24px);
bottom: calc(env(safe-area-inset-bottom) + 16px);
padding: 12px;
box-sizing: border-box;
@@ -1906,9 +1939,53 @@ const handleExplainBack = () => {
border: 1px solid rgba(255, 255, 255, 0.96);
border-radius: 16px;
box-shadow: 0 10px 28px rgba(36, 49, 42, 0.16);
+ transform: translateX(-50%);
z-index: 1003;
}
+.guide-home-dock.expanded {
+ position: fixed;
+ left: 50%;
+ right: auto;
+ top: 0;
+ bottom: auto;
+ width: var(--museum-h5-page-width);
+ height: 100vh;
+ height: 100dvh;
+ height: var(--home-search-viewport-height, 100dvh);
+ max-height: none;
+ display: flex;
+ flex-direction: column;
+ padding: calc(env(safe-area-inset-top) + 12px) 14px calc(env(safe-area-inset-bottom) + 14px);
+ background: #f7f8f2;
+ border: 0;
+ border-radius: 0;
+ box-shadow: none;
+ transform: translateX(-50%);
+ overflow: hidden;
+ overscroll-behavior: contain;
+ touch-action: pan-y;
+ z-index: 1100;
+}
+
+/* #ifdef H5 */
+.guide-home-dock.expanded {
+ min-height: 100vh;
+ min-height: 100dvh;
+ max-width: var(--museum-h5-page-width);
+}
+/* #endif */
+
+.guide-home-search-scrim {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ background: transparent;
+ z-index: 1002;
+}
+
.guide-quick-actions {
position: absolute;
top: clamp(96px, 14vh, 118px);
diff --git a/src/pages/search/index.vue b/src/pages/search/index.vue
index eb869ae..32fe6fd 100644
--- a/src/pages/search/index.vue
+++ b/src/pages/search/index.vue
@@ -10,16 +10,18 @@
-
+
+
+