diff --git a/apps/player/src/components/BannerCarousel.vue b/apps/player/src/components/BannerCarousel.vue index e4a84f6..8ddbb9d 100644 --- a/apps/player/src/components/BannerCarousel.vue +++ b/apps/player/src/components/BannerCarousel.vue @@ -13,7 +13,11 @@ export interface BannerItem { translation?: { title?: string; body?: string; imageUrl?: string }; } -const props = defineProps<{ banners: BannerItem[] }>(); +const props = defineProps<{ + banners: BannerItem[]; + /** 未配置跳转链接时的默认路由 */ + fallbackTo?: string; +}>(); const router = useRouter(); const active = ref(0); @@ -51,14 +55,12 @@ function prev() { } function onBannerClick(banner: BannerItem) { - if (banner.linkType === 'ROUTE' && banner.linkTarget) { - router.push(banner.linkTarget); + if (banner.id) { + void router.push(`/announcements/${banner.id}`); return; } - if (banner.linkType === 'URL' && banner.linkTarget) { - let url = banner.linkTarget.trim(); - if (!/^https?:\/\//i.test(url)) url = `https://${url}`; - window.open(url, '_blank'); + if (props.fallbackTo) { + void router.push(props.fallbackTo); } } diff --git a/apps/player/src/constants/defaultBanner.ts b/apps/player/src/constants/defaultBanner.ts index f2a22b5..ad7b183 100644 --- a/apps/player/src/constants/defaultBanner.ts +++ b/apps/player/src/constants/defaultBanner.ts @@ -7,8 +7,6 @@ const FALLBACK_BANNER_URL = '/uploads/banners/welcome.svg'; export const DEFAULT_BANNER: BannerItem = { id: 'default', - linkType: 'ROUTE', - linkTarget: '/bet', translation: { title: '', imageUrl: defaultBannerImg,