diff --git a/src/views/discover/MediaDetailView.vue b/src/views/discover/MediaDetailView.vue index e20a4d9a..b9dea95c 100644 --- a/src/views/discover/MediaDetailView.vue +++ b/src/views/discover/MediaDetailView.vue @@ -3,7 +3,7 @@ import { useToast } from 'vue-toastification' import PersonCardSlideView from './PersonCardSlideView.vue' import MediaCardSlideView from './MediaCardSlideView.vue' import api from '@/api' -import type { MediaInfo, NotExistMediaInfo, Site, Subscribe, TmdbEpisode } from '@/api/types' +import type { MediaInfo, MediaRelease, NotExistMediaInfo, Site, Subscribe, TmdbEpisode } from '@/api/types' import NoDataFound from '@/components/states/NoDataFound.vue' import { formatSeasonLabel } from '@/@core/utils/season' import router from '@/router' @@ -147,6 +147,7 @@ function getMediaId() { return getMediaSubscribeId(mediaDetail.value) } +// 生成当前媒体指定季的订阅状态缓存键 function getSubscribeStatusKey(season: number | null = mediaDetail.value?.season ?? null) { return `${getMediaId()}::${season ?? 'all'}` } @@ -230,6 +231,7 @@ async function checkSubscribe(season: number | null = null) { return false } +// 判断订阅记录是否属于当前媒体 function isSameSubscribeMedia(subscribe: Subscribe) { if (mediaDetail.value?.tmdb_id && subscribe.tmdbid) return mediaDetail.value.tmdb_id === subscribe.tmdbid if (mediaDetail.value?.douban_id && subscribe.doubanid) return mediaDetail.value.douban_id === subscribe.doubanid @@ -404,16 +406,22 @@ const getProductionCompanies = computed(() => { return mediaDetail.value.production_companies?.map(company => company.name) }) -// 获取最早实体/数字发行日期 -const getEarliestReleaseDate = computed(() => { - const filteredDates = mediaDetail.value.release_dates?.filter(date => [4, 5].includes(date.type)) +// 获取指定类型的最早发行日期 +function getEarliestReleaseDateByType(type: number): MediaRelease | null { + const filteredDates = mediaDetail.value.release_dates?.filter(date => date.type === type) if (!filteredDates || filteredDates.length === 0) return null return filteredDates.reduce((earliest, current) => new Date(current.date) < new Date(earliest.date) ? current : earliest, ) -}) +} + +// 获取最早数字发行日期 +const getEarliestDigitalReleaseDate = computed(() => getEarliestReleaseDateByType(4)) + +// 获取最早实体发行日期 +const getEarliestPhysicalReleaseDate = computed(() => getEarliestReleaseDateByType(5)) // 计算存在状态的颜色 function getExistColor(season: number) { @@ -876,14 +884,25 @@ onBeforeMount(() => { -