diff --git a/frontend/src/features/admin/views/AdminListingReviewView.css b/frontend/src/features/admin/views/AdminListingReviewView.css index dbb1b08..44a73b6 100644 --- a/frontend/src/features/admin/views/AdminListingReviewView.css +++ b/frontend/src/features/admin/views/AdminListingReviewView.css @@ -214,6 +214,7 @@ .queue-list { flex: 1; + min-height: 0; overflow-y: auto; display: flex; flex-direction: column; @@ -225,6 +226,8 @@ .queue-item { position: relative; width: 100%; + min-height: 104px; + flex-shrink: 0; display: flex; border: 1px solid #e2e8f0; border-radius: 10px; @@ -291,16 +294,16 @@ font-weight: 800; } -.queue-title-row { +.queue-main-row { display: flex; - align-items: center; + align-items: flex-start; gap: 10px; } .queue-thumb { position: relative; - width: 44px; - height: 44px; + width: 52px; + height: 52px; border-radius: 8px; overflow: hidden; background: #f1f5f9; @@ -312,6 +315,7 @@ width: 100%; height: 100%; object-fit: cover; + display: block; } .thumb-warning-badge { @@ -327,9 +331,15 @@ line-height: 13px; } -.queue-title { +.queue-main-info { flex: 1; min-width: 0; + display: flex; + flex-direction: column; + gap: 6px; +} + +.queue-title { color: #0f172a; font-size: 13px; font-weight: 700; @@ -343,16 +353,18 @@ .queue-specs { display: flex; flex-wrap: wrap; - gap: 6px; + gap: 4px; } .spec-pill { - padding: 2px 6px; + padding: 1px 5px; border-radius: 4px; background: #f1f5f9; color: #475569; font-size: 11px; font-weight: 600; + line-height: 16px; + white-space: nowrap; } .queue-footer { diff --git a/frontend/src/features/admin/views/AdminListingReviewView.vue b/frontend/src/features/admin/views/AdminListingReviewView.vue index d7edc31..5c5590b 100644 --- a/frontend/src/features/admin/views/AdminListingReviewView.vue +++ b/frontend/src/features/admin/views/AdminListingReviewView.vue @@ -84,6 +84,13 @@ interface ChecklistItem { const _defaultScreenshotURL = '/api/listings/default-upload-screenshot?v=webp1' +function onThumbError(e: Event) { + const target = e.target as HTMLImageElement + if (target && target.src !== _defaultScreenshotURL) { + target.src = _defaultScreenshotURL + } +} + const sortOptions = [ { label: '最新提交 (默认)', value: 'default' }, { label: '风险优先 (封禁/默认图)', value: 'risk' }, @@ -1075,7 +1082,7 @@ async function handleScreenshotSaved(payload: { oldUrl: string; newUrl: string } -
+
缩略图 默认图
- {{ item.title }} -
- -
- {{ item.rank_level || '段位未知' }} - {{ - assetText(item, 'season_insurance') || '保险未填' - }} - KD {{ assetNumberText(item, 'secret_kd') }} +
+ {{ item.title }} +
+ {{ item.rank_level || '段位未知' }} + {{ + assetText(item, 'season_insurance') || '保险未填' + }} + KD {{ assetNumberText(item, 'secret_kd') }} +
+