diff --git a/components/pages/create-to-video2.tsx b/components/pages/create-to-video2.tsx
index 8c70541..cc9bd0d 100644
--- a/components/pages/create-to-video2.tsx
+++ b/components/pages/create-to-video2.tsx
@@ -1,7 +1,7 @@
"use client";
import { useState, useEffect, useRef, useCallback } from 'react';
-import { ArrowLeft, ListOrdered, Play, Loader2, Pause, MoreHorizontal, Edit2, Check, X, RefreshCw, Calendar, Clock, Eye, Heart, Share2, Video } from 'lucide-react';
+import { ArrowLeft, ListOrdered, Play, Loader2, Pause, MoreHorizontal, Edit2, Check, X, RefreshCw, Calendar, Clock, Eye, Heart, Share2, Video, Pencil, Trash } from 'lucide-react';
import { useRouter, useSearchParams } from 'next/navigation';
import './style/create-to-video2.css';
@@ -9,6 +9,7 @@ import { getScriptEpisodeListNew } from "@/api/script_episode";
import { ChatInputBox } from '@/components/ChatInputBox/ChatInputBox';
import cover_image1 from '@/public/assets/cover_image1.jpg';
import { motion } from 'framer-motion';
+import { Tooltip, Button } from 'antd';
// ideaText已迁移到ChatInputBox组件中
@@ -167,7 +168,7 @@ export default function CreateToVideo2() {
return (
router.push(`/movies/work-flow?episodeId=${project.project_id}`)}
onMouseEnter={() => handleMouseEnter(project.project_id)}
onMouseLeave={() => handleMouseLeave(project.project_id)}
@@ -202,11 +203,21 @@ export default function CreateToVideo2() {
{/* 底部信息 */}
-
+
-
- {/* {project.name || "Unnamed"} */}
-
+
+
+ {project.name || "Unnamed"}
+
+ {/* TODO 编辑标题 */}
+ {/*
+
+ */}
+
+ {/* TODO 删除 */}
+ {/*
+
+ */}
diff --git a/components/pages/work-flow/media-viewer.tsx b/components/pages/work-flow/media-viewer.tsx
index 5c579de..d005b41 100644
--- a/components/pages/work-flow/media-viewer.tsx
+++ b/components/pages/work-flow/media-viewer.tsx
@@ -2,7 +2,7 @@
import React, { useRef, useEffect, useState, SetStateAction, useMemo } from 'react';
import { motion, AnimatePresence } from 'framer-motion';
-import { Edit3, Play, Pause, Volume2, VolumeX, Maximize, Minimize, Loader2, X, Scissors, RotateCcw, MessageCircleMore } from 'lucide-react';
+import { Edit3, Play, Pause, Volume2, VolumeX, Maximize, Minimize, Loader2, X, Scissors, RotateCcw, MessageCircleMore, Download } from 'lucide-react';
import { ProgressiveReveal, presets } from '@/components/ui/progressive-reveal';
import { GlassIconButton } from '@/components/ui/glass-icon-button';
import { ScriptRenderer } from '@/components/script-renderer/ScriptRenderer';
@@ -273,6 +273,14 @@ export const MediaViewer = React.memo(function MediaViewer({
};
}, []);
+ // 下载视频
+ const downloadVideo = (url: string) => {
+ const a = document.createElement('a');
+ a.href = url;
+ a.download = url.split('/').pop() || '';
+ a.click();
+ };
+
// 渲染音量控制组件
const renderVolumeControls = () => (
@@ -484,6 +492,16 @@ export const MediaViewer = React.memo(function MediaViewer({
}
}} />
+ {/* 下载按钮 */}
+
+ {
+ const currentVideo = taskObject.videos.data[currentSketchIndex];
+ if (currentVideo && currentVideo.urls && currentVideo.urls.length > 0) {
+ downloadVideo(currentVideo.urls[0]);
+ }
+ }} />
+
+ {/* 跳转剪辑按钮 */}
{showGotoCutButton && (
diff --git a/components/pages/work-flow/use-workflow-data.tsx b/components/pages/work-flow/use-workflow-data.tsx
index 2ef09e4..350763b 100644
--- a/components/pages/work-flow/use-workflow-data.tsx
+++ b/components/pages/work-flow/use-workflow-data.tsx
@@ -392,7 +392,7 @@ export function useWorkflowData() {
throw new Error(response.message);
}
- const { status, data, tags, mode, original_text, title } = response.data;
+ const { status, data, tags, mode, original_text, title, name } = response.data;
const { current: taskCurrent } = tempTaskObject;
@@ -401,7 +401,7 @@ export function useWorkflowData() {
taskCurrent.status = status as Status;
// 设置标题
- if (!title) {
+ if (!name) {
// 如果没有标题,轮询获取
const titleResponse = await getScriptTitle({ project_id: episodeId });
console.log('titleResponse', titleResponse);