feat: 视频上传处理
This commit is contained in:
@ -187,7 +187,7 @@ export default {
|
|||||||
action="/"
|
action="/"
|
||||||
draggable
|
draggable
|
||||||
customRequest={handleUpload}
|
customRequest={handleUpload}
|
||||||
accept=".xlsx,.xls,.docx,.doc"
|
accept=".xlsx,.xls,.docx,.doc,.mp4,.mov,.avi,.flv,.wmv"
|
||||||
show-file-list={false}
|
show-file-list={false}
|
||||||
>
|
>
|
||||||
{{
|
{{
|
||||||
|
|||||||
@ -8,19 +8,20 @@ import UploadSuccessModal from './upload-success-modal.vue';
|
|||||||
import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript/list/constants';
|
import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript/list/constants';
|
||||||
import { postWorksBatchWriter } from '@/api/all/generationWorkshop-writer.ts';
|
import { postWorksBatchWriter } from '@/api/all/generationWorkshop-writer.ts';
|
||||||
import { glsWithCatch, rlsWithCatch, slsWithCatch } from '@/utils/stroage.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 icon1 from '@/assets/img/creative-generation-workshop/icon-photo.png';
|
||||||
import icon2 from '@/assets/img/creative-generation-workshop/icon-video.png';
|
import icon2 from '@/assets/img/creative-generation-workshop/icon-video.png';
|
||||||
|
|
||||||
const generateMockData = (count = 4) =>
|
// const generateMockData = (count = 4) =>
|
||||||
Array.from({ length: count }, (_, i) => ({
|
// Array.from({ length: count }, (_, i) => ({
|
||||||
id: `${i + 1}`,
|
// id: `${i + 1}`,
|
||||||
title: `标题${i + 1}`,
|
// title: `标题${i + 1}`,
|
||||||
content: '挖到宝了!这个平价好物让我素颜出门都自信✨挖到宝了!这个平价好物让我素颜出门都自信✨',
|
// content: '挖到宝了!这个平价好物让我素颜出门都自信✨挖到宝了!这个平价好物让我素颜出门都自信✨',
|
||||||
type: i % 2 === 0 ? EnumManuscriptType.Image : EnumManuscriptType.Video,
|
// type: i % 2 === 0 ? EnumManuscriptType.Image : EnumManuscriptType.Video,
|
||||||
files: [],
|
// files: [],
|
||||||
videoInfo: cloneDeep(INITIAL_VIDEO_INFO),
|
// videoInfo: cloneDeep(INITIAL_VIDEO_INFO),
|
||||||
}));
|
// }));
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@ -183,10 +184,25 @@ export default {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
const getData = () => {
|
const getData = () => {
|
||||||
const _works = JSON.parse(glsWithCatch('writerWaitUploadWorks') ?? '[]')?.map((item) => ({
|
const _works = JSON.parse(glsWithCatch('writerWaitUploadWorks') ?? '[]')?.map((item) => {
|
||||||
...item,
|
const { type, files } = item;
|
||||||
videoInfo: item?.videoInfo ? cloneDeep(item.videoInfo) : cloneDeep(INITIAL_VIDEO_INFO),
|
|
||||||
}));
|
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;
|
works.value = _works;
|
||||||
selectCardInfo.value = cloneDeep(_works[0] ?? {});
|
selectCardInfo.value = cloneDeep(_works[0] ?? {});
|
||||||
};
|
};
|
||||||
|
|||||||
@ -219,7 +219,7 @@ export default {
|
|||||||
action="/"
|
action="/"
|
||||||
draggable
|
draggable
|
||||||
customRequest={handleUpload}
|
customRequest={handleUpload}
|
||||||
accept=".xlsx,.xls,.docx,.doc"
|
accept=".xlsx,.xls,.docx,.doc,.mp4,.mov,.avi,.flv,.wmv"
|
||||||
show-file-list={false}
|
show-file-list={false}
|
||||||
>
|
>
|
||||||
{{
|
{{
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import UploadSuccessModal from './upload-success-modal.vue';
|
|||||||
import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript/list/constants';
|
import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript/list/constants';
|
||||||
import { postWorksBatch } from '@/api/all/generationWorkshop.ts';
|
import { postWorksBatch } from '@/api/all/generationWorkshop.ts';
|
||||||
import { glsWithCatch, rlsWithCatch, slsWithCatch } from '@/utils/stroage.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 icon1 from '@/assets/img/creative-generation-workshop/icon-photo.png';
|
||||||
import icon2 from '@/assets/img/creative-generation-workshop/icon-video.png';
|
import icon2 from '@/assets/img/creative-generation-workshop/icon-video.png';
|
||||||
@ -83,7 +84,7 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
AMessage.success('上传成功');
|
AMessage.success('上传成功');
|
||||||
if (action === 'uploadAndCheck') {
|
if (action === 'uploadAndCheck') {
|
||||||
slsWithCatch('manuscriptCheckIds',data);
|
slsWithCatch('manuscriptCheckIds', data);
|
||||||
router.push({ name: 'ManuscriptCheck' });
|
router.push({ name: 'ManuscriptCheck' });
|
||||||
} else {
|
} else {
|
||||||
router.push({ name: 'ManuscriptList' });
|
router.push({ name: 'ManuscriptList' });
|
||||||
@ -183,10 +184,25 @@ export default {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
const getData = () => {
|
const getData = () => {
|
||||||
const _works = JSON.parse(glsWithCatch('waitUploadWorks') ?? '[]')?.map((item) => ({
|
const _works = JSON.parse(glsWithCatch('waitUploadWorks') ?? '[]')?.map((item) => {
|
||||||
...item,
|
const { type, files } = item;
|
||||||
videoInfo: item?.videoInfo ? cloneDeep(item.videoInfo) : cloneDeep(INITIAL_VIDEO_INFO),
|
|
||||||
}));
|
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;
|
works.value = _works;
|
||||||
selectCardInfo.value = cloneDeep(_works[0] ?? {});
|
selectCardInfo.value = cloneDeep(_works[0] ?? {});
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user