fix(admin): 转码媒资 id 按字符串传递并处理空态

This commit is contained in:
Zhou Weidong committed 2026-10-22 14:59:22 +08:00
1 parent a4893c31a2
commit fecc3b4817
6 files changed
+82 -13

No files matched your search

+2 -2
View File
@@ -12,7 +12,7 @@ export const getEpisodeTranscodeApi = (episodeId: number | string) => {
/** 按媒体分页读取帧图;页面切换时复用该接口。 */
export const getMediaThumbnailsApi = (
mediaAssetId: number | string,
mediaAssetId: string,
pageIndex: number,
pageSize: number
) => {
@@ -23,7 +23,7 @@ export const getMediaThumbnailsApi = (
}
/** 手动触发或重转当前分集绑定的媒体。 */
export const triggerMediaTranscodeApi = (mediaAssetId: number | string) => {
export const triggerMediaTranscodeApi = (mediaAssetId: string) => {
return request.post<TranscodeTriggerResult>({
url: `/admin/media/${mediaAssetId}/transcode`
})
+7 -7
View File
@@ -249,7 +249,7 @@ export interface MediaTranscodeProfile {
}
export interface MediaRenditionItem {
id: number
id: string
quality: string
qualityName: string
width: number
@@ -292,8 +292,8 @@ export interface MediaThumbnailSpriteInfo {
}
export interface MediaThumbnailResult {
mediaAssetId?: number | null
episodeId?: number | null
mediaAssetId?: string | null
episodeId?: string | null
/** READY / FAILED / EMPTY / INVALID / NO_EPISODE */
status: string
errorMsg?: string
@@ -304,9 +304,9 @@ export interface MediaThumbnailResult {
}
export interface EpisodeTranscodeItem {
episodeId: number
mediaAssetId?: number | null
taskId?: number | null
episodeId: string
mediaAssetId?: string | null
taskId?: string | null
status: string
progress?: number
retryCount?: number
@@ -316,7 +316,7 @@ export interface EpisodeTranscodeItem {
}
export interface TranscodeTriggerResult {
taskId: number
taskId: string
status: string
}
@@ -24,7 +24,7 @@ import {
} from './episodeTranscodeUi'
const props = defineProps<{
episodeId: number
episodeId: string | number
active: boolean
}>()
@@ -45,8 +45,8 @@ let pollTimer: ReturnType<typeof setTimeout> | null = null
let requestSeq = 0
let thumbnailSeq = 0
const mediaAssetId = computed(() => Number(detail.value?.mediaAssetId || 0))
const hasMedia = computed(() => mediaAssetId.value > 0)
const mediaAssetId = computed(() => detail.value?.mediaAssetId || '')
const hasMedia = computed(() => /^[1-9]\d*$/.test(mediaAssetId.value))
const normalizedStatus = computed(() => String(detail.value?.status || '').toUpperCase())
const renditions = computed(() => detail.value?.renditions || [])
const isProcessing = computed(
@@ -47,7 +47,7 @@ const { t } = useI18n()
</div>
<el-empty
v-else-if="detail && !view.hasMedia"
:description="t('episodeTranscode.noMedia')"
:description="detail.errorMsg || t('episodeTranscode.noMedia')"
:image-size="72"
/>
<template v-else-if="detail">