From fe442fda4bb40b33dae0acffa8fb81d46d6bea08 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 9 Aug 2026 11:40:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=AA=92=E4=BD=93?= =?UTF-8?q?=E5=8D=A0=E4=BD=8D=E5=9B=BE=E6=A0=87=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=97=A0=E5=B0=81=E9=9D=A2=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/reorganize/TransferHistoryView.vue | 29 ++++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/views/reorganize/TransferHistoryView.vue b/src/views/reorganize/TransferHistoryView.vue index 18688c45..e40a361d 100644 --- a/src/views/reorganize/TransferHistoryView.vue +++ b/src/views/reorganize/TransferHistoryView.vue @@ -19,7 +19,6 @@ import { useGlobalSettingsStore, useUserStore } from '@/stores' import { openSharedDialog } from '@/composables/useSharedDialog' import { buildUserPermissionContext, hasPermission } from '@/utils/permission' import { getDisplayImageUrl } from '@/utils/imageUtils' -import noImage from '@images/no-image.jpeg' const TransferHistoryDeleteDialog = defineAsyncComponent( () => import('@/components/dialog/TransferHistoryDeleteDialog.vue'), @@ -656,10 +655,17 @@ function getIcon(type: string) { else return 'mdi-help-circle' } +// 媒体占位图标:电影/电视剧/音乐各自使用对应图标,缺失封面时统一渲染图标 + 底色占位 +function getPlaceholderIcon(type: string) { + if (type === '音乐') return 'mdi-album' + else if (type === '电视剧') return 'mdi-television-classic' + else return 'mdi-movie-open-outline' +} + // 计算移动端卡片海报地址,优先使用后端图片代理并兼顾全局缓存设置。 function getHistoryPosterUrl(item: TransferHistory) { const image = item.image - if (!image) return noImage + if (!image) return '' if (!/^https?:\/\//i.test(image)) { return `${import.meta.env.VITE_API_BASE_URL}system/img/0?imgurl=${encodeURIComponent(image)}` @@ -1747,6 +1753,7 @@ onUnmounted(() => {
{
+
+ +
@@ -2058,9 +2065,13 @@ onUnmounted(() => { block-size: 100%; } -.transfer-history-mobile-record__poster-fallback { +.transfer-history-mobile-record__poster-placeholder { + display: flex; + align-items: center; + justify-content: center; inline-size: 100%; block-size: 100%; + background: rgb(var(--v-theme-surface-variant)); } .transfer-history-mobile-record__poster-type {