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 @@ - + + +