@@ -114,20 +114,32 @@
|
||||
v-if="showGuideFloatingActions"
|
||||
class="guide-quick-actions"
|
||||
>
|
||||
<view class="guide-quick-action primary" @tap="handleMoreRouteGuide">
|
||||
<view
|
||||
class="guide-quick-action"
|
||||
:class="{ active: guideQuickActiveAction === 'indoor' }"
|
||||
@tap="handleMoreRouteGuide"
|
||||
>
|
||||
<view class="guide-quick-icon indoor">
|
||||
<view class="guide-quick-icon-floor top"></view>
|
||||
<view class="guide-quick-icon-floor bottom"></view>
|
||||
</view>
|
||||
<text class="guide-quick-action-text primary">馆内</text>
|
||||
<text class="guide-quick-action-text">馆内</text>
|
||||
</view>
|
||||
<view class="guide-quick-action" @tap="handleMoreOutdoorNav">
|
||||
<view
|
||||
class="guide-quick-action"
|
||||
:class="{ active: guideQuickActiveAction === 'arrival' }"
|
||||
@tap="handleMoreOutdoorNav"
|
||||
>
|
||||
<view class="guide-quick-icon arrival">
|
||||
<view class="guide-quick-pin"></view>
|
||||
</view>
|
||||
<text class="guide-quick-action-text">来馆</text>
|
||||
</view>
|
||||
<view class="guide-quick-action" @tap="handleExplainQuickTap">
|
||||
<view
|
||||
class="guide-quick-action"
|
||||
:class="{ active: guideQuickActiveAction === 'explain' }"
|
||||
@tap="handleExplainQuickTap"
|
||||
>
|
||||
<view class="guide-quick-icon explain">
|
||||
<view class="guide-quick-explain-wave top"></view>
|
||||
<view class="guide-quick-explain-wave middle"></view>
|
||||
@@ -637,6 +649,11 @@ const showGuideFloatingActions = computed(() => (
|
||||
&& (!showGuideHomeDock.value || !homeSearchExpanded.value)
|
||||
))
|
||||
|
||||
const guideQuickActiveAction = computed<'indoor' | 'arrival' | 'explain'>(() => {
|
||||
if (currentTab.value === 'explain') return 'explain'
|
||||
return is3DMode.value ? 'indoor' : 'arrival'
|
||||
})
|
||||
|
||||
const toRoutePointOption = (target: GuideRouteTarget): RoutePointOption => ({
|
||||
poiId: target.poiId,
|
||||
name: target.name,
|
||||
@@ -2038,15 +2055,22 @@ const handleExplainBack = () => {
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.2);
|
||||
backdrop-filter: blur(10px);
|
||||
transition:
|
||||
background 0.18s ease,
|
||||
border-color 0.18s ease,
|
||||
box-shadow 0.18s ease,
|
||||
transform 0.16s ease;
|
||||
}
|
||||
|
||||
.guide-quick-action.primary {
|
||||
.guide-quick-action.active {
|
||||
background: var(--museum-accent);
|
||||
border-color: var(--museum-accent);
|
||||
box-shadow: 0 14px 30px rgba(0, 0, 0, 0.24), 0 0 0 1px rgba(224, 225, 0, 0.35);
|
||||
animation: guide-quick-active-in 0.22s ease-out both;
|
||||
}
|
||||
|
||||
.guide-quick-action:active {
|
||||
transform: translateY(1px);
|
||||
transform: translateY(1px) scale(0.98);
|
||||
}
|
||||
|
||||
.guide-quick-icon {
|
||||
@@ -2057,7 +2081,7 @@ const handleExplainBack = () => {
|
||||
color: #151713;
|
||||
}
|
||||
|
||||
.guide-quick-action.primary .guide-quick-icon {
|
||||
.guide-quick-action.active .guide-quick-icon {
|
||||
color: #0a0b08;
|
||||
}
|
||||
|
||||
@@ -2139,10 +2163,20 @@ const handleExplainBack = () => {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.guide-quick-action-text.primary {
|
||||
.guide-quick-action.active .guide-quick-action-text {
|
||||
color: #0a0b08;
|
||||
}
|
||||
|
||||
@keyframes guide-quick-active-in {
|
||||
from {
|
||||
transform: scale(0.96);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
.route-sim-top-pill {
|
||||
position: absolute;
|
||||
top: 126px;
|
||||
|
||||
Reference in New Issue
Block a user