diff --git a/apps/player/src/components/desktop/BetSlipPanel.vue b/apps/player/src/components/desktop/BetSlipPanel.vue index 6f364ec..a39bfc1 100644 --- a/apps/player/src/components/desktop/BetSlipPanel.vue +++ b/apps/player/src/components/desktop/BetSlipPanel.vue @@ -857,6 +857,16 @@ onUnmounted(() => {

{{ t('bet.bet_slip') || '投注单' }}

+
@@ -1173,6 +1183,24 @@ onUnmounted(() => { color: var(--primary-light); } +.panel-close-btn { + border: none; + background: transparent; + color: var(--text-muted); + cursor: pointer; + padding: 4px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 4px; + transition: background 0.2s, color 0.2s; +} + +.panel-close-btn:hover { + background: var(--bg-hover); + color: var(--primary); +} + .clear-slip-btn { background: transparent; border: 1px solid var(--border); diff --git a/apps/player/src/components/desktop/DesktopBetSlipRail.vue b/apps/player/src/components/desktop/DesktopBetSlipRail.vue new file mode 100644 index 0000000..6ba9a76 --- /dev/null +++ b/apps/player/src/components/desktop/DesktopBetSlipRail.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/apps/player/src/components/desktop/DesktopShell.vue b/apps/player/src/components/desktop/DesktopShell.vue index 1ed6b87..3e7d9e3 100644 --- a/apps/player/src/components/desktop/DesktopShell.vue +++ b/apps/player/src/components/desktop/DesktopShell.vue @@ -7,16 +7,28 @@ import DesktopOddsBetPopover from './DesktopOddsBetPopover.vue'; import SportsCategoryBar from './SportsCategoryBar.vue'; import LeagueSidebar from './LeagueSidebar.vue'; import MatchSidebar from './MatchSidebar.vue'; -import BetSlipPanel from './BetSlipPanel.vue'; +import DesktopBetSlipRail from './DesktopBetSlipRail.vue'; import FloatingMailbox from '../FloatingMailbox.vue'; import { usePlayerHome } from '../../composables/usePlayerHome'; import { useAuthStore } from '../../stores/auth'; +import { useBetSlipStore } from '../../stores/betSlip'; const route = useRoute(); const { locale } = useI18n(); const auth = useAuthStore(); +const slip = useBetSlipStore(); const { load: loadPlayerHome } = usePlayerHome(); +const showBetSlipRail = computed(() => { + const p = route.path; + if (p === '/bets' || p.startsWith('/bets/')) return false; + if (p.startsWith('/wallet') || p.startsWith('/profile')) return false; + if (route.params.id && (p.startsWith('/announcements/') || p.startsWith('/messages/'))) { + return false; + } + return true; +}); + const layoutMode = computed<'betting' | 'account' | 'hub' | 'marketing'>(() => { const p = route.path; if (p === '/bet' || p.startsWith('/match/') || p.startsWith('/outright/')) { @@ -61,11 +73,18 @@ watch(