From 7a430b095a4b799be6babe0a27448a3768959e5f Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 28 Jun 2026 15:32:00 +0800 Subject: [PATCH] Limit mobile calendar history and simplify episode tags --- src/@core/utils/formatters.ts | 6 +++--- src/views/subscribe/FullCalendarView.vue | 23 +++++++++++++++++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/@core/utils/formatters.ts b/src/@core/utils/formatters.ts index e64e0499..604b4848 100644 --- a/src/@core/utils/formatters.ts +++ b/src/@core/utils/formatters.ts @@ -92,15 +92,15 @@ export function formatSeasonEpisode( if (currentNumber === end + 1) { end = currentNumber } else { - ranges.push(start === end ? `${seasonText}${formatEpisode(start)}` : `${seasonText}${formatEpisode(start)}-${formatEpisode(end)}`) + ranges.push(start === end ? formatEpisode(start) : `${formatEpisode(start)}-${formatEpisode(end)}`) start = currentNumber end = currentNumber } } - ranges.push(start === end ? `${seasonText}${formatEpisode(start)}` : `${seasonText}${formatEpisode(start)}-${formatEpisode(end)}`) + ranges.push(start === end ? formatEpisode(start) : `${formatEpisode(start)}-${formatEpisode(end)}`) - return ranges.join('、') + return `${seasonText}${ranges.join('、')}` } // 格式化为xx[TGMK]B diff --git a/src/views/subscribe/FullCalendarView.vue b/src/views/subscribe/FullCalendarView.vue index d5850d36..2951d47f 100644 --- a/src/views/subscribe/FullCalendarView.vue +++ b/src/views/subscribe/FullCalendarView.vue @@ -20,6 +20,7 @@ const COLLAPSED_VISIBLE_CARD_LIMIT = COLLAPSED_DAY_CARD_LIMIT const DAY_GROUP_EVENT_PREFIX = 'calendar-day-group-' const ALL_MOBILE_FILTER_VALUE = '__all__' const DAY_TIME = 24 * 60 * 60 * 1000 +const MOBILE_HISTORY_DAY_LIMIT = 30 // 国际化 const { t } = useI18n() @@ -181,6 +182,10 @@ const mobileFilteredCalendarEvents = computed(() => { return false } + if (isDateBeforeMobileHistoryWindow(event.start)) { + return false + } + if (mobileHideExpired.value && isDateBeforeToday(event.start)) { return false } @@ -471,6 +476,13 @@ function isDateBeforeToday(date: Date | null) { return date.getTime() < getTodayStart().getTime() } +// 判断日期是否早于移动端允许展示的历史窗口。 +function isDateBeforeMobileHistoryWindow(date: Date | null) { + if (!date) return false + + return date.getTime() < getTodayStart().getTime() - MOBILE_HISTORY_DAY_LIMIT * DAY_TIME +} + // 判断日期是否是今天。 function isDateToday(date: Date | null) { if (!date) return false @@ -531,6 +543,13 @@ function getMobileEventEpisodeTag(event: CalendarEventInfo) { return formatSeasonEpisode(event.season, event.episodeNumbers) } +// 获取移动端海报角标集号。 +function getMobilePosterEpisodeTag(event: CalendarEventInfo) { + if (event.mediaType === '电影' || !event.episodeNumbers.length) return '' + + return formatSeasonEpisode(undefined, event.episodeNumbers) +} + // 获取移动端时长标识。 function getMobileEventRuntimeTag(event: CalendarEventInfo) { if (!event.runtime) return '' @@ -826,8 +845,8 @@ onActivated(() => { - - {{ getMobileEventEpisodeTag(calendarEvent) }} + + {{ getMobilePosterEpisodeTag(calendarEvent) }}