From fec9b257c27fecbc24319831a1469870c4b089ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8C=97=E6=9E=B3?= <7854742+wang_rumeng@user.noreply.gitee.com> Date: Thu, 28 Aug 2025 16:42:23 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ChatInputBox/ChatInputBox.tsx | 51 +++-- components/QueueBox/QueueNotification.tsx | 183 ++++++++++++++++ components/QueueBox/QueueNotification2.tsx | 238 +++++++++++++++++++++ components/QueueBox/queue-notification.tsx | 209 ++++++++++++++++++ components/layout/dashboard-layout.tsx | 1 - components/layout/top-bar.tsx | 28 +-- components/pages/create-to-video2.tsx | 201 ++++++++++++++--- public/assets/cover_image1.jpg | Bin 0 -> 131509 bytes public/assets/cover_image2.jpg | Bin 0 -> 105131 bytes 9 files changed, 843 insertions(+), 68 deletions(-) create mode 100644 components/QueueBox/QueueNotification.tsx create mode 100644 components/QueueBox/QueueNotification2.tsx create mode 100644 components/QueueBox/queue-notification.tsx create mode 100644 public/assets/cover_image1.jpg create mode 100644 public/assets/cover_image2.jpg diff --git a/components/ChatInputBox/ChatInputBox.tsx b/components/ChatInputBox/ChatInputBox.tsx index 2e9677c..e7d64d0 100644 --- a/components/ChatInputBox/ChatInputBox.tsx +++ b/components/ChatInputBox/ChatInputBox.tsx @@ -591,7 +591,7 @@ const RenderTemplateStoryMode = ({ * 视频工具面板组件 * 提供脚本输入和视频克隆两种模式,支持展开/收起功能 */ -export function ChatInputBox() { +export function ChatInputBox({ noData }: { noData: boolean }) { // 控制面板展开/收起状态 const [isExpanded, setIsExpanded] = useState(false); @@ -670,28 +670,36 @@ export function ChatInputBox() { }; return ( -
+
{/* 视频故事板工具面板 - 毛玻璃效果背景 */}
{/* 展开/收起控制区域 */} - {isExpanded ? ( - // 展开状态:显示收起按钮和提示 -
setIsExpanded(false)} - > - - Click to action -
- ) : ( - // 收起状态:显示展开按钮 -
setIsExpanded(true)} - > - -
- )} + { + !noData && ( + <> + {isExpanded ? ( + // 展开状态:显示收起按钮和提示 +
setIsExpanded(false)} + > + + Click to action +
+ ) : ( + // 收起状态:显示展开按钮 +
setIsExpanded(true)} + > + +
+ )} + + ) + } {/* 主要内容区域 - 简化层级,垂直居中 */}
setScript(e.target.value)} placeholder="Describe the content you want to action..." className="w-full pl-[10px] pr-[10px] py-[14px] rounded-[10px] leading-[20px] text-sm border-none bg-transparent text-white placeholder:text-white/[0.40] focus:outline-none resize-none min-h-[48px] max-h-[120px] overflow-y-auto" + style={noData ? { + minHeight: '128px' + } : {}} rows={1} onInput={(e) => { const target = e.target as HTMLTextAreaElement; diff --git a/components/QueueBox/QueueNotification.tsx b/components/QueueBox/QueueNotification.tsx new file mode 100644 index 0000000..e296513 --- /dev/null +++ b/components/QueueBox/QueueNotification.tsx @@ -0,0 +1,183 @@ +import { notification } from 'antd'; + +const darkGlassStyle = { + background: 'rgba(30, 32, 40, 0.95)', + backdropFilter: 'blur(10px)', + WebkitBackdropFilter: 'blur(10px)', + border: '1px solid rgba(255, 255, 255, 0.08)', + borderRadius: '8px', + boxShadow: '0 4px 16px rgba(0, 0, 0, 0.4)', + padding: '12px 16px', +}; + +/** 胶片容器样式 */ +const filmStripContainerStyle = { + position: 'relative' as const, + width: '100%', + height: '80px', + marginBottom: '16px', + overflow: 'hidden', +}; + +/** 胶片样式 */ +const filmStripStyle = { + display: 'flex', + alignItems: 'center', + animation: 'filmScroll 20s linear infinite', +}; + +/** 文字样式 */ +const textStyle = { + fontSize: '13px', + color: 'rgba(255, 255, 255, 0.9)', + marginBottom: '12px', +}; + +/** 胶片帧组件 */ +const FilmFrame = () => ( +
+ + {/* 胶片外框 */} + + {/* 齿孔 */} + + + + + {/* 胶片画面区域 */} + + +
+); + +/** 放映机音效组件 */ +const ProjectorSound = () => ( +
- setPassword(e.target.value)} - /> +
+ setPassword(e.target.value)} + /> + +
diff --git a/components/pages/work-flow/media-viewer.tsx b/components/pages/work-flow/media-viewer.tsx index 15b4110..9c9823e 100644 --- a/components/pages/work-flow/media-viewer.tsx +++ b/components/pages/work-flow/media-viewer.tsx @@ -422,9 +422,11 @@ export const MediaViewer = React.memo(function MediaViewer({ // 渲染视频内容 const renderVideoContent = () => { + const urls = taskObject.videos.data[currentSketchIndex].urls ? taskObject.videos.data[currentSketchIndex].urls.join(',') : ''; return (
{/* 背景模糊的图片 */} {taskObject.videos.data[currentSketchIndex].video_status !== 1 && ( @@ -551,6 +553,7 @@ export const MediaViewer = React.memo(function MediaViewer({ return (
{/* 状态 */} {currentSketch.status === 0 && ( diff --git a/components/pages/work-flow/thumbnail-grid.tsx b/components/pages/work-flow/thumbnail-grid.tsx index 8e2e035..560670e 100644 --- a/components/pages/work-flow/thumbnail-grid.tsx +++ b/components/pages/work-flow/thumbnail-grid.tsx @@ -158,10 +158,11 @@ export function ThumbnailGrid({ // 渲染视频阶段的缩略图 const renderVideoThumbnails = () => ( taskObject.videos.data.map((video, index) => { + const urls: string = video.urls ? video.urls.join(',') : ''; return (
!isDragging && onSketchSelect(index)} @@ -229,7 +230,7 @@ export function ThumbnailGrid({ return (
!isDragging && onSketchSelect(index)}