fix(admin): 统一剧集上传格式与提示文案

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Zhou WeidongandCursor authored and trae-solo-agent committed 2026-10-21 22:04:36 +08:00
1 parent 7d39e3c684
commit c71a12f6f4
5 files changed
+17 -15

No files matched your search

+1 -1
View File
@@ -537,7 +537,7 @@ export default {
retry: 'Retry',
retryAll: 'Retry all',
remove: 'Remove',
hint: 'Supports MP4 / MOV / MKV / WEBM, max 500MB each; up to 2 files in parallel.',
hint: 'Supports MP4 / MOV / MKV / WEBM, max 500MB each; multi-select allowed, 2 upload in parallel, the rest queue automatically.',
invalidType: 'Only MP4, MOV, MKV, WEBM are allowed',
oversize: 'File exceeds 500MB and was not queued',
overallProgress: 'Overall progress',
+1 -1
View File
@@ -531,7 +531,7 @@ export default {
retry: '重试',
retryAll: '全部重试',
remove: '移除',
hint: '支持 MP4 / MOV / MKV / WEBM,单文件不超过 500MB;同时最多上传 2 个文件。',
hint: '支持 MP4 / MOV / MKV / WEBM,单文件不超过 500MB;可一次多选,同时上传 2 个,其余自动排队。',
invalidType: '仅支持 MP4、MOV、MKV、WEBM',
oversize: '文件超过 500MB,未入队',
overallProgress: '总进度',
@@ -20,7 +20,7 @@ import { useI18n } from '@/hooks/web/useI18n'
import { probeVideoDuration, uploadFile } from '@/utils/uploader'
import BatchUploadDialog from './upload/BatchUploadDialog.vue'
import { listPendingSessions } from './upload/uploadSessions'
import { MAX_VIDEO_SIZE } from './upload/videoLimit'
import { MAX_VIDEO_SIZE, VIDEO_ACCEPT_ATTR, VIDEO_EXTENSIONS } from './upload/videoLimit'
const route = useRoute()
const { can } = useRbac()
@@ -62,7 +62,6 @@ const statusOptions = [
{ code: 'offline', text: '已下线' }
]
const VIDEO_EXTENSIONS = ['mp4', 'mov']
const formRules = {
number: [{ required: true, message: '请输入集号', trigger: 'change' }],
title: [{ required: true, message: '请输入剧集标题', trigger: 'blur' }],
@@ -218,7 +217,7 @@ function beforeVideoUpload(file) {
.pop()
?.toLowerCase()
if (!VIDEO_EXTENSIONS.includes(extension)) {
videoError.value = '视频仅支持 MP4 或 MOV 格式'
videoError.value = t('episodeBatch.invalidType')
return false
}
if (file.size > MAX_VIDEO_SIZE) {
@@ -556,7 +555,7 @@ onMounted(async () => {
drag
class="episode-video-empty-upload"
:show-file-list="false"
accept=".mp4,.mov"
:accept="VIDEO_ACCEPT_ATTR"
:before-upload="beforeVideoUpload"
:http-request="uploadVideo"
:disabled="uploadingVideo"
@@ -564,7 +563,7 @@ onMounted(async () => {
<div class="episode-video-empty-copy">
<AppIcon :icon="AppIcons.videoCameraFront" :size="30" />
<b>拖放或点击上传</b>
<span>MP4、MOV</span>
<span>MP4、MOV、MKV、WEBM</span>
</div>
</el-upload>
<div v-if="uploadingVideo" class="episode-video-upload-mask">
@@ -582,7 +581,7 @@ onMounted(async () => {
{{ videoDisplayName }}
</span>
</div>
<p class="episode-video-hint">支持 MP4、MOV,单个文件不超过 500MB。</p>
<p class="episode-video-hint">{{ t('episodeBatch.hint') }}</p>
<el-alert
v-if="videoError"
:title="videoError"
@@ -594,7 +593,7 @@ onMounted(async () => {
<el-upload
v-if="form.videoUrl"
:show-file-list="false"
accept=".mp4,.mov"
:accept="VIDEO_ACCEPT_ATTR"
:before-upload="beforeVideoUpload"
:http-request="uploadVideo"
:disabled="uploadingVideo"
@@ -9,7 +9,7 @@ import { useI18n } from '@/hooks/web/useI18n'
import CreateEpisodesDialog from './CreateEpisodesDialog.vue'
import UploadTaskRow from './UploadTaskRow.vue'
import { useUploadQueue } from './useUploadQueue'
import { MAX_VIDEO_SIZE } from './videoLimit'
import { MAX_VIDEO_SIZE, VIDEO_ACCEPT_ATTR, VIDEO_EXTENSIONS } from './videoLimit'
import type { UploadSessionRecord } from './uploadSessions'
const props = defineProps<{
@@ -28,9 +28,6 @@ const emit = defineEmits<{
const { t } = useI18n()
const VIDEO_EXTENSIONS = ['mp4', 'mov', 'mkv', 'webm']
const ACCEPT_ATTR = '.mp4,.mov,.mkv,.webm,video/*'
const visible = computed({
get: () => props.modelValue,
set: (value: boolean) => emit('update:modelValue', value)
@@ -208,7 +205,7 @@ function onEpisodesCreated(): void {
type="file"
multiple
hidden
:accept="ACCEPT_ATTR"
:accept="VIDEO_ACCEPT_ATTR"
@change="onPickFiles"
/>
<input
@@ -216,7 +213,7 @@ function onEpisodesCreated(): void {
type="file"
multiple
hidden
:accept="ACCEPT_ATTR"
:accept="VIDEO_ACCEPT_ATTR"
@change="onResumeFiles"
/>
@@ -1,3 +1,9 @@
// Author: fruit.com.cn
/** 剧集视频大小上限,单文件上传与批量上传共用。 */
export const MAX_VIDEO_SIZE = 500 * 1024 * 1024
/** 允许的视频扩展名(小写,不含点),单文件与批量上传同源。 */
export const VIDEO_EXTENSIONS: string[] = ['mp4', 'mov', 'mkv', 'webm']
/** el-upload / input[type=file] 的 accept 属性,与 VIDEO_EXTENSIONS 保持一致。 */
export const VIDEO_ACCEPT_ATTR = '.mp4,.mov,.mkv,.webm,video/*'