From d12761c442bcc2d88b7686f434ff4da6956fd665 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 25 Sep 2026 23:51:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(cover):=20=E6=89=93=E9=80=9A=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=B0=81=E9=9D=A2=E6=A8=A1=E6=9D=BF=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E7=9A=84=20prop=20=E9=93=BE=E8=B7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - GeneratePage 解构 setSelectedTemplate 并传给 GenerateStepContent - GenerateStepContent 新增 selectedCoverTemplate/onSelectedCoverTemplateChange 透传到 Step6CoverSettings - Step6CoverSettings 加 useEffect:父组件 selectedTemplate 变化时同步 handleSelectTemplate,保证父→子同步 - 修复批量场景用户在 Step6 选模板后,提交时 templateId 仍用旧值(空串/default)的问题 --- apps/web/src/pages/generate/GeneratePage.tsx | 3 +++ .../src/pages/generate/components/GenerateStepContent.tsx | 6 ++++++ .../src/pages/generate/components/Step6CoverSettings.tsx | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/apps/web/src/pages/generate/GeneratePage.tsx b/apps/web/src/pages/generate/GeneratePage.tsx index 36428a7e0..b130a0684 100644 --- a/apps/web/src/pages/generate/GeneratePage.tsx +++ b/apps/web/src/pages/generate/GeneratePage.tsx @@ -107,6 +107,7 @@ const GeneratePage: React.FC = () => { setPreviewCovers, selectedVariantIds, setSelectedVariantIds, + setSelectedTemplate, } = formState const isBatch = previewCount > 1 @@ -577,6 +578,8 @@ const GeneratePage: React.FC = () => { previewCovers={previewCovers} onPreviewCoversChange={setPreviewCovers} selectedVariantIds={selectedVariantIds} + selectedCoverTemplate={selectedTemplate} + onSelectedCoverTemplateChange={setSelectedTemplate} /> {/* ════ 步骤4(单视频):成片播放器 ════ */} diff --git a/apps/web/src/pages/generate/components/GenerateStepContent.tsx b/apps/web/src/pages/generate/components/GenerateStepContent.tsx index cebdbd309..8822160d8 100644 --- a/apps/web/src/pages/generate/components/GenerateStepContent.tsx +++ b/apps/web/src/pages/generate/components/GenerateStepContent.tsx @@ -89,6 +89,8 @@ export interface GenerateStepContentProps { previewCovers: string[] onPreviewCoversChange: (urls: string[]) => void selectedVariantIds?: number[] + selectedCoverTemplate?: string + onSelectedCoverTemplateChange?: (templateId: string) => void } export const GenerateStepContent: React.FC = (props) => { @@ -142,6 +144,8 @@ export const GenerateStepContent: React.FC = (props) = previewCovers, onPreviewCoversChange, selectedVariantIds, + selectedCoverTemplate, + onSelectedCoverTemplateChange, } = props switch (currentStep) { @@ -250,6 +254,8 @@ export const GenerateStepContent: React.FC = (props) = previewCovers={previewCovers} onPreviewCoversChange={onPreviewCoversChange} selectedVariantIndexes={selectedVariantIds} + selectedTemplate={selectedCoverTemplate} + onTemplateChange={onSelectedCoverTemplateChange} /> ) default: diff --git a/apps/web/src/pages/generate/components/Step6CoverSettings.tsx b/apps/web/src/pages/generate/components/Step6CoverSettings.tsx index cd447d4db..a99b38db8 100755 --- a/apps/web/src/pages/generate/components/Step6CoverSettings.tsx +++ b/apps/web/src/pages/generate/components/Step6CoverSettings.tsx @@ -98,6 +98,12 @@ const Step6CoverSettings: React.FC = (props) => { // 选中模板变化时通知父组件(用于批量生成时透传 template_id) const { onTemplateChange, selectedTemplate: parentSelectedTemplate } = props + // 父组件 selectedTemplate 变化时同步到子(例如从 Step1/Step4 切换到 Step6 时) + useEffect(() => { + if (parentSelectedTemplate && parentSelectedTemplate !== shared.selectedTemplateId) { + shared.handleSelectTemplate(parentSelectedTemplate) + } + }, [parentSelectedTemplate]) // eslint-disable-line react-hooks/exhaustive-deps useEffect(() => { if (isBatch && onTemplateChange && shared.selectedTemplateId !== parentSelectedTemplate) { onTemplateChange(shared.selectedTemplateId) -- 2.54.0