From 7f6999b5de2bc3649348058ed513aa848ebd7f99 Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Wed, 13 Aug 2025 17:55:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A7=86=E9=A2=91=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../upload-manuscript-modal/index.vue | 2 +- .../manuscript-writer/upload/index.vue | 42 +++++++++++++------ .../upload-manuscript-modal/index.vue | 2 +- .../manuscript/upload/index.vue | 26 +++++++++--- 4 files changed, 52 insertions(+), 20 deletions(-) diff --git a/src/views/creative-generation-workshop/manuscript-writer/list/components/upload-manuscript-modal/index.vue b/src/views/creative-generation-workshop/manuscript-writer/list/components/upload-manuscript-modal/index.vue index 417b0e4..28726f7 100644 --- a/src/views/creative-generation-workshop/manuscript-writer/list/components/upload-manuscript-modal/index.vue +++ b/src/views/creative-generation-workshop/manuscript-writer/list/components/upload-manuscript-modal/index.vue @@ -187,7 +187,7 @@ export default { action="/" draggable customRequest={handleUpload} - accept=".xlsx,.xls,.docx,.doc" + accept=".xlsx,.xls,.docx,.doc,.mp4,.mov,.avi,.flv,.wmv" show-file-list={false} > {{ diff --git a/src/views/creative-generation-workshop/manuscript-writer/upload/index.vue b/src/views/creative-generation-workshop/manuscript-writer/upload/index.vue index b42d1a9..ec9e755 100644 --- a/src/views/creative-generation-workshop/manuscript-writer/upload/index.vue +++ b/src/views/creative-generation-workshop/manuscript-writer/upload/index.vue @@ -8,19 +8,20 @@ import UploadSuccessModal from './upload-success-modal.vue'; import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript/list/constants'; import { postWorksBatchWriter } from '@/api/all/generationWorkshop-writer.ts'; import { glsWithCatch, rlsWithCatch, slsWithCatch } from '@/utils/stroage.ts'; +import { formatDuration, formatFileSize, convertVideoUrlToCoverUrl } from '@/utils/tools'; import icon1 from '@/assets/img/creative-generation-workshop/icon-photo.png'; import icon2 from '@/assets/img/creative-generation-workshop/icon-video.png'; -const generateMockData = (count = 4) => - Array.from({ length: count }, (_, i) => ({ - id: `${i + 1}`, - title: `标题${i + 1}`, - content: '挖到宝了!这个平价好物让我素颜出门都自信✨挖到宝了!这个平价好物让我素颜出门都自信✨', - type: i % 2 === 0 ? EnumManuscriptType.Image : EnumManuscriptType.Video, - files: [], - videoInfo: cloneDeep(INITIAL_VIDEO_INFO), - })); +// const generateMockData = (count = 4) => +// Array.from({ length: count }, (_, i) => ({ +// id: `${i + 1}`, +// title: `标题${i + 1}`, +// content: '挖到宝了!这个平价好物让我素颜出门都自信✨挖到宝了!这个平价好物让我素颜出门都自信✨', +// type: i % 2 === 0 ? EnumManuscriptType.Image : EnumManuscriptType.Video, +// files: [], +// videoInfo: cloneDeep(INITIAL_VIDEO_INFO), +// })); export default { components: { @@ -183,10 +184,25 @@ export default { } }; const getData = () => { - const _works = JSON.parse(glsWithCatch('writerWaitUploadWorks') ?? '[]')?.map((item) => ({ - ...item, - videoInfo: item?.videoInfo ? cloneDeep(item.videoInfo) : cloneDeep(INITIAL_VIDEO_INFO), - })); + const _works = JSON.parse(glsWithCatch('writerWaitUploadWorks') ?? '[]')?.map((item) => { + const { type, files } = item; + + const _data = { ...item, videoInfo: cloneDeep(INITIAL_VIDEO_INFO) }; + + // 初始化视频数据 + if (type === EnumManuscriptType.Video && files.length) { + _data.videoInfo.uploadStatus = 'end'; + const { name, size, duration, url } = files[0]; + _data.videoInfo.name = name; + _data.videoInfo.size = formatFileSize(size); + _data.videoInfo.time = formatDuration(duration); + _data.videoInfo.poster = convertVideoUrlToCoverUrl(url); + } + + return _data + + }); + works.value = _works; selectCardInfo.value = cloneDeep(_works[0] ?? {}); }; diff --git a/src/views/creative-generation-workshop/manuscript/list/components/upload-manuscript-modal/index.vue b/src/views/creative-generation-workshop/manuscript/list/components/upload-manuscript-modal/index.vue index 4bfb4e6..98353d5 100644 --- a/src/views/creative-generation-workshop/manuscript/list/components/upload-manuscript-modal/index.vue +++ b/src/views/creative-generation-workshop/manuscript/list/components/upload-manuscript-modal/index.vue @@ -219,7 +219,7 @@ export default { action="/" draggable customRequest={handleUpload} - accept=".xlsx,.xls,.docx,.doc" + accept=".xlsx,.xls,.docx,.doc,.mp4,.mov,.avi,.flv,.wmv" show-file-list={false} > {{ diff --git a/src/views/creative-generation-workshop/manuscript/upload/index.vue b/src/views/creative-generation-workshop/manuscript/upload/index.vue index b970d4c..cdab32b 100644 --- a/src/views/creative-generation-workshop/manuscript/upload/index.vue +++ b/src/views/creative-generation-workshop/manuscript/upload/index.vue @@ -8,6 +8,7 @@ import UploadSuccessModal from './upload-success-modal.vue'; import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript/list/constants'; import { postWorksBatch } from '@/api/all/generationWorkshop.ts'; import { glsWithCatch, rlsWithCatch, slsWithCatch } from '@/utils/stroage.ts'; +import { formatDuration, formatFileSize, convertVideoUrlToCoverUrl } from '@/utils/tools'; import icon1 from '@/assets/img/creative-generation-workshop/icon-photo.png'; import icon2 from '@/assets/img/creative-generation-workshop/icon-video.png'; @@ -83,7 +84,7 @@ export default { } else { AMessage.success('上传成功'); if (action === 'uploadAndCheck') { - slsWithCatch('manuscriptCheckIds',data); + slsWithCatch('manuscriptCheckIds', data); router.push({ name: 'ManuscriptCheck' }); } else { router.push({ name: 'ManuscriptList' }); @@ -183,10 +184,25 @@ export default { } }; const getData = () => { - const _works = JSON.parse(glsWithCatch('waitUploadWorks') ?? '[]')?.map((item) => ({ - ...item, - videoInfo: item?.videoInfo ? cloneDeep(item.videoInfo) : cloneDeep(INITIAL_VIDEO_INFO), - })); + const _works = JSON.parse(glsWithCatch('waitUploadWorks') ?? '[]')?.map((item) => { + const { type, files } = item; + + const _data = { ...item, videoInfo: cloneDeep(INITIAL_VIDEO_INFO) }; + + // 初始化视频数据 + if (type === EnumManuscriptType.Video && files.length) { + _data.videoInfo.uploadStatus = 'end'; + const { name, size, duration, url } = files[0]; + _data.videoInfo.name = name; + _data.videoInfo.size = formatFileSize(size); + _data.videoInfo.time = formatDuration(duration); + _data.videoInfo.poster = convertVideoUrlToCoverUrl(url); + } + + return _data + + }); + works.value = _works; selectCardInfo.value = cloneDeep(_works[0] ?? {}); };