From 1d277eabf05f70633903f41381df4ce93ea1f479 Mon Sep 17 00:00:00 2001 From: lyf <2514544224@qq.com> Date: Wed, 24 Jun 2026 23:12:44 +0800 Subject: [PATCH] Update guide presentation and route preview gating --- src/components/more/MorePanel.vue | 4 +- src/components/navigation/GuideMapShell.vue | 16 +- src/components/navigation/GuideTopTabs.vue | 12 +- .../navigation/RoutePlannerPanel.vue | 321 +++++++++++++++--- src/data/providers/staticNavAssetsProvider.ts | 3 +- src/domain/guideReadiness.ts | 32 +- src/manifest.json | 2 +- src/pages/index/index.vue | 266 +++++++++++---- src/pages/route/detail.vue | 8 +- src/repositories/GuideRouteRepository.ts | 26 +- src/usecases/guideRouteUseCase.ts | 7 +- src/usecases/guideUseCase.ts | 5 +- 12 files changed, 560 insertions(+), 142 deletions(-) diff --git a/src/components/more/MorePanel.vue b/src/components/more/MorePanel.vue index 66302d9..239144a 100644 --- a/src/components/more/MorePanel.vue +++ b/src/components/more/MorePanel.vue @@ -98,7 +98,7 @@ interface QuickAction { route?: string } -const props = defineProps<{ +defineProps<{ isOpen: boolean }>() @@ -153,7 +153,7 @@ const handleSettingClick = (setting: string) => { if (setting === 'about') { uni.showModal({ title: '关于', - content: '深圳自然博物馆智能导览系统\n版本 1.0.0\n\n为您的博物馆之旅提供智能导航和语音讲解服务。', + content: '深圳自然博物馆馆内导览服务\n版本 1.0.0\n\n为您的博物馆之旅提供馆内导览、位置预览和讲解服务。', showCancel: false }) } diff --git a/src/components/navigation/GuideMapShell.vue b/src/components/navigation/GuideMapShell.vue index 08032bd..f1631f4 100644 --- a/src/components/navigation/GuideMapShell.vue +++ b/src/components/navigation/GuideMapShell.vue @@ -270,7 +270,7 @@ const props = withDefaults(defineProps<{ routePreview?: GuideRouteResult | null showRoute?: boolean }>(), { - searchText: '搜索设施、展厅、入口', + searchText: '请输入地点进行搜索', activeMode: '3d', activeFloor: '1F', indoorView: 'floor', @@ -579,12 +579,12 @@ const handleAutoSwitch = (event: { from: 'overview' | 'floor'; to: 'overview' | .guide-search-field.variant-home { left: 20px; right: 20px; - height: 48px; + height: 46px; padding: 0 14px; background: rgba(255, 255, 255, 0.96); border: 1px solid #d7dad3; - border-radius: 12px; - box-shadow: 0 8px 22px rgba(36, 49, 42, 0.08); + border-radius: 8px; + box-shadow: 0 8px 18px rgba(36, 49, 42, 0.08); } .search-field-text { @@ -792,7 +792,7 @@ const handleAutoSwitch = (event: { from: 'overview' | 'floor'; to: 'overview' | overflow: visible; background: rgba(255, 255, 255, 0.84); border: 1px solid #dde5df; - border-radius: 10px; + border-radius: 8px; box-shadow: 0 8px 18px rgba(110, 127, 115, 0.12); z-index: 35; } @@ -851,7 +851,7 @@ const handleAutoSwitch = (event: { from: 'overview' | 'floor'; to: 'overview' | box-sizing: border-box; background: #ffffff; border: 1px solid #dde5df; - border-radius: 10px; + border-radius: 8px; box-shadow: 0 8px 18px rgba(110, 127, 115, 0.12); z-index: 36; } @@ -944,7 +944,7 @@ const handleAutoSwitch = (event: { from: 'overview' | 'floor'; to: 'overview' | overflow: hidden; background: rgba(255, 255, 255, 0.94); border: 1px solid #dde5df; - border-radius: 10px; + border-radius: 8px; box-shadow: 0 8px 18px rgba(110, 127, 115, 0.12); z-index: 35; } @@ -978,7 +978,7 @@ const handleAutoSwitch = (event: { from: 'overview' | 'floor'; to: 'overview' | box-sizing: border-box; background: rgba(255, 255, 255, 0.95); border: 1px solid #dde5df; - border-radius: 10px; + border-radius: 8px; box-shadow: 0 8px 18px rgba(110, 127, 115, 0.12); z-index: 35; } diff --git a/src/components/navigation/GuideTopTabs.vue b/src/components/navigation/GuideTopTabs.vue index 26add86..a1902d3 100644 --- a/src/components/navigation/GuideTopTabs.vue +++ b/src/components/navigation/GuideTopTabs.vue @@ -67,12 +67,12 @@ const handleTabTap = (tab: GuideTopTab) => { left: 50%; right: auto; width: 174px; - height: 38px; + height: 36px; padding: 2px; - background: #ffffff; - border: 1px solid #151713; + background: rgba(255, 255, 255, 0.95); + border: 1px solid #d7dad3; border-radius: 8px; - box-shadow: 0 8px 20px rgba(36, 49, 42, 0.08); + box-shadow: 0 8px 18px rgba(36, 49, 42, 0.08); transform: translateX(-50%) translateZ(0); } @@ -88,12 +88,12 @@ const handleTabTap = (tab: GuideTopTab) => { .variant-segmented .guide-top-tab { flex: 1; width: auto; - height: 32px; + height: 30px; border-radius: 6px; } .variant-segmented .guide-top-tab.active { - background: #000000; + background: #151713; } .guide-top-tab-label { diff --git a/src/components/navigation/RoutePlannerPanel.vue b/src/components/navigation/RoutePlannerPanel.vue index a58df7b..1979010 100644 --- a/src/components/navigation/RoutePlannerPanel.vue +++ b/src/components/navigation/RoutePlannerPanel.vue @@ -1,53 +1,89 @@