diff --git a/src/api/types.ts b/src/api/types.ts index dc74300c..c7300825 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -192,6 +192,13 @@ export interface MediaInfo { // 详情页面 detail_link?: string + + // 导演 + directors?: any[] + + // 演员 + actors?: any[] + // 其它TMDB属性 adult?: boolean created_by?: string[] @@ -322,6 +329,9 @@ export interface TmdbPerson { // 图片 images?: Object + + // 详情 + biography?: string } // 站点 diff --git a/src/views/discover/MediaDetailView.vue b/src/views/discover/MediaDetailView.vue index 48abe2a4..e39d6460 100644 --- a/src/views/discover/MediaDetailView.vue +++ b/src/views/discover/MediaDetailView.vue @@ -14,22 +14,52 @@ const mediaProps = defineProps({ // 媒体详情 const mediaDetail = ref({} as MediaInfo) +// 本地是否存在 +const isExists = ref(false) + // 是否已加载完成 const isRefreshed = ref(false) // 调用API查询详情 async function getMediaDetail() { if (mediaProps.mediaid && mediaProps.type) { - const result: MediaInfo = await api.get(`tmdb/${mediaProps.mediaid}`, { + mediaDetail.value = await api.get(`tmdb/${mediaProps.mediaid}`, { params: { type_name: mediaProps.type, }, }) - mediaDetail.value = result isRefreshed.value = true + // 检查存在状态 + checkExists() } } +// 查询当前媒体是否已存在 +async function checkExists() { + try { + const result: { [key: string]: any } = await api.get('media/exists', { + params: { + tmdbid: mediaDetail.value.tmdb_id, + title: mediaDetail.value.title, + year: mediaDetail.value.year, + season: mediaDetail.value.season, + mtype: mediaDetail.value.type, + }, + }) + + if (result.success) + isExists.value = true + } + catch (error) { + console.error(error) + } +} + +// 从genres中获取name,使用、分隔 +function getGenresName(genres: any[]) { + return genres.map(genre => genre.name).join('、') +} + onBeforeMount(() => { getMediaDetail() }) @@ -53,16 +83,29 @@ onBeforeMount(() => {
-
+
+ +
已入库
+
+

{{ mediaDetail.title }} ({{ mediaDetail.year }})

- {{ mediaDetail.runtime }} + {{ mediaDetail.runtime }} 分钟 + | + {{ getGenresName(mediaDetail.genres || []) }}
-
+
+ + 播放 + + + 订阅 + +
@@ -73,6 +116,12 @@ onBeforeMount(() => { 简介

{{ mediaDetail.overview }}

+
@@ -228,6 +277,17 @@ ul.media-crew { } } +ul.media-crew>li { + grid-column: span 1/span 1; + display: flex; + flex-direction: column; + font-weight: 700; +} + +a.crew-name { + font-weight: 400; +} + .media-status { margin-bottom: .5rem; } diff --git a/src/views/discover/PersonDetailView.vue b/src/views/discover/PersonDetailView.vue index 39a5ead0..a794dfca 100644 --- a/src/views/discover/PersonDetailView.vue +++ b/src/views/discover/PersonDetailView.vue @@ -89,6 +89,13 @@ onBeforeMount(() => {
+
+
+

+ {{ personDetail.biography }} +

+
+
@@ -106,6 +113,3 @@ onBeforeMount(() => { error-description="无法获取到媒体信息,请检查网络连接。" /> - -