From ee39086a53cb73ed139b44bf67d53ee297cc4373 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Tue, 28 Jul 2026 13:52:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?refactor(generate):=20=E6=8B=86=E5=88=86Ste?= =?UTF-8?q?p7ConfirmGenerate=E4=B8=BA=E5=AD=90=E7=BB=84=E4=BB=B6=EF=BC=881?= =?UTF-8?q?94=E2=86=9288=E8=A1=8C,=20-55%=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/Step7ConfirmGenerate.tsx | 154 +++--------------- .../step7-confirm/GenerationStatus.tsx | 106 ++++++++++++ .../components/step7-confirm/SummaryCard.tsx | 76 +++++++++ 3 files changed, 206 insertions(+), 130 deletions(-) mode change 100644 => 100755 apps/web/src/pages/generate/components/Step7ConfirmGenerate.tsx create mode 100755 apps/web/src/pages/generate/components/step7-confirm/GenerationStatus.tsx create mode 100755 apps/web/src/pages/generate/components/step7-confirm/SummaryCard.tsx diff --git a/apps/web/src/pages/generate/components/Step7ConfirmGenerate.tsx b/apps/web/src/pages/generate/components/Step7ConfirmGenerate.tsx old mode 100644 new mode 100755 index b05985c54..3b5b4a419 --- a/apps/web/src/pages/generate/components/Step7ConfirmGenerate.tsx +++ b/apps/web/src/pages/generate/components/Step7ConfirmGenerate.tsx @@ -2,19 +2,14 @@ * Step 7 确认生成组件 */ import React from "react" -import { - LoadingOutlined, - CheckCircleFilled, - CloseCircleOutlined, - MinusOutlined, - PlusOutlined, -} from "@ant-design/icons" import type { EditingTemplate } from "@/api/editing-planner" import type { GeneratedVideo } from "@/api/template-editor" import type { CoverConfig } from "../../editing-planner/types" import type { VoiceClone } from "@/api/voice-clone" import type { PresetVoiceItem } from "@/api/voices" import { useStep7Generate } from "../hooks/useStep7Generate" +import SummaryCard from "./step7-confirm/SummaryCard" +import GenerationStatus from "./step7-confirm/GenerationStatus" interface Step7ConfirmGenerateProps { templates: EditingTemplate[] @@ -64,129 +59,28 @@ const Step7ConfirmGenerate: React.FC = (props) => { return (

✨ 确认生成

-
-
- 模板 - {templateName} -
-
- 素材 - {materialSummary} -
-
- 标题 - {title || "未选择"} -
-
- 配音 - {voiceName} -
-
- 封面 - {coverSummary} -
-
- 生成数量 - -
- - {generateCount} - - 条视频 -
-
-
-
- - {/* 生成进度 / 结果反馈 */} - {(generating || generated || generateError) && ( -
- {generating && ( -
-
-
- -
-
-
- {getGenerationPhase(progress).icon} {getGenerationPhase(progress).label} -
-
预计还需 1-2 分钟,请稍候…
-
-
{Math.round(progress)}%
-
-
-
-
-
- 💡 生成过程中可以切换到其他页面操作,完成后会自动通知 -
-
- )} - {generated && !generating && ( -
-
- -
-
-
视频生成完成!
-
- 共生成 {generatedVideos.length} 条视频,可在右侧预览或前往成片库查看 -
-
- -
- )} - {generateError && !generating && ( -
-
- -
-
-
生成失败
-
- {typeof generateError === "string" - ? generateError - : JSON.stringify(generateError)} -
-
-
- - -
-
- )} -
- )} + +
) } diff --git a/apps/web/src/pages/generate/components/step7-confirm/GenerationStatus.tsx b/apps/web/src/pages/generate/components/step7-confirm/GenerationStatus.tsx new file mode 100755 index 000000000..901e2c3d7 --- /dev/null +++ b/apps/web/src/pages/generate/components/step7-confirm/GenerationStatus.tsx @@ -0,0 +1,106 @@ +import React from "react" +import { LoadingOutlined, CheckCircleFilled, CloseCircleOutlined } from "@ant-design/icons" +import type { GeneratedVideo } from "@/api/template-editor" + +interface GenerationStatusProps { + generating: boolean + generated: boolean + generateError: string | null + progress: number + generatedVideos: GeneratedVideo[] + getGenerationPhase: (progress: number) => { icon: string; label: string } + onScrollToPreview: () => void + onRetry: () => void + onDismissError: () => void +} + +const GenerationStatus: React.FC = ({ + generating, + generated, + generateError, + progress, + generatedVideos, + getGenerationPhase, + onScrollToPreview, + onRetry, + onDismissError, +}) => { + if (!generating && !generated && !generateError) return null + + return ( +
+ {generating && ( +
+
+
+ +
+
+
+ {getGenerationPhase(progress).icon} {getGenerationPhase(progress).label} +
+
预计还需 1-2 分钟,请稍候…
+
+
{Math.round(progress)}%
+
+
+
+
+
+ 💡 生成过程中可以切换到其他页面操作,完成后会自动通知 +
+
+ )} + {generated && !generating && ( +
+
+ +
+
+
视频生成完成!
+
+ 共生成 {generatedVideos.length} 条视频,可在右侧预览或前往成片库查看 +
+
+ +
+ )} + {generateError && !generating && ( +
+
+ +
+
+
生成失败
+
+ {typeof generateError === "string" ? generateError : JSON.stringify(generateError)} +
+
+
+ + +
+
+ )} +
+ ) +} + +export default GenerationStatus diff --git a/apps/web/src/pages/generate/components/step7-confirm/SummaryCard.tsx b/apps/web/src/pages/generate/components/step7-confirm/SummaryCard.tsx new file mode 100755 index 000000000..2d26b5469 --- /dev/null +++ b/apps/web/src/pages/generate/components/step7-confirm/SummaryCard.tsx @@ -0,0 +1,76 @@ +import React from "react" +import { MinusOutlined, PlusOutlined } from "@ant-design/icons" + +interface SummaryCardProps { + templateName: string + materialSummary: string + title: string + voiceName: string + coverSummary: string + generateCount: number + generating: boolean + onDecrement: () => void + onIncrement: () => void +} + +const SummaryCard: React.FC = ({ + templateName, + materialSummary, + title, + voiceName, + coverSummary, + generateCount, + generating, + onDecrement, + onIncrement, +}) => { + return ( +
+
+ 模板 + {templateName} +
+
+ 素材 + {materialSummary} +
+
+ 标题 + {title || "未选择"} +
+
+ 配音 + {voiceName} +
+
+ 封面 + {coverSummary} +
+
+ 生成数量 + +
+ + {generateCount} + + 条视频 +
+
+
+
+ ) +} + +export default SummaryCard -- 2.54.0 From e255f27cd775ddb620468c59a7feda8c18c790ef Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Tue, 28 Jul 2026 15:14:09 +0800 Subject: [PATCH 2/2] chore: retrigger CI -- 2.54.0