From feb440ee70c7be37963b00db00281473a5f2aa28 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 27 Jul 2026 09:19:31 +0800 Subject: [PATCH 1/9] =?UTF-8?q?refactor(editing-planner):=20=E6=8B=86?= =?UTF-8?q?=E5=88=86=20GenerationProgressModal=EF=BC=8C=E6=8C=89=E9=98=B6?= =?UTF-8?q?=E6=AE=B5=E6=8B=86=E4=B8=BA=203=20=E4=B8=AA=E5=AD=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主文件 238→60 行(-75%),拆分为: - constants: 步骤文案 + 状态颜色 - types: 类型定义 - SetupPhase: 配置阶段弹窗 - ProgressPhase: 进度阶段弹窗(进度环+步骤+进度条) - ResultPhase: 完成/失败结果弹窗 - index: 组合入口 导入路径保持向后兼容 --- .../components/GenerationProgressModal.tsx | 238 ------------------ .../ProgressPhase.tsx | 65 +++++ .../generation-progress-modal/ResultPhase.tsx | 82 ++++++ .../generation-progress-modal/SetupPhase.tsx | 53 ++++ .../generation-progress-modal/constants.ts | 31 +++ .../generation-progress-modal/index.tsx | 71 ++++++ .../generation-progress-modal/types.ts | 23 ++ 7 files changed, 325 insertions(+), 238 deletions(-) delete mode 100644 apps/web/src/pages/editing-planner/components/GenerationProgressModal.tsx create mode 100644 apps/web/src/pages/editing-planner/components/generation-progress-modal/ProgressPhase.tsx create mode 100644 apps/web/src/pages/editing-planner/components/generation-progress-modal/ResultPhase.tsx create mode 100644 apps/web/src/pages/editing-planner/components/generation-progress-modal/SetupPhase.tsx create mode 100644 apps/web/src/pages/editing-planner/components/generation-progress-modal/constants.ts create mode 100644 apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx create mode 100644 apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts diff --git a/apps/web/src/pages/editing-planner/components/GenerationProgressModal.tsx b/apps/web/src/pages/editing-planner/components/GenerationProgressModal.tsx deleted file mode 100644 index df7605e93..000000000 --- a/apps/web/src/pages/editing-planner/components/GenerationProgressModal.tsx +++ /dev/null @@ -1,238 +0,0 @@ -/** - * 生成进度弹窗 — 任务 2.17 - * 三阶段 UI:setup(配置)→ progress(进度轮询)→ completed / failed(结果) - * V21 设计系统,CSS 类名前缀 ep-gen- - */ -import React, { useEffect, useRef } from "react" -import { Modal, Button } from "@/components/ui" -import type { TaskItem } from "@/api/tasks" - -/* ──────────── 类型 ──────────── */ - -export type GenPhase = "setup" | "progress" | "completed" | "failed" - -export interface GenerationProgressModalProps { - open: boolean - phase: GenPhase - - /* setup 阶段 */ - voiceoverDuration: number | null - estimatedDuration: number - onDurationChange: (v: number | null) => void - onGenerate: () => void - - /* progress / 结果阶段 */ - task: TaskItem | null - - /* 通用 */ - submitting: boolean - onCancel: () => void - onRetry?: () => void - onClose?: () => void -} - -/* ──────────── 步骤文案映射 ──────────── */ - -const STEP_LABELS: Record = { - queued: "排队中…", - preparing: "准备素材…", - generating_video: "渲染视频中…", - adding_effects: "添加特效…", - composing: "合成中…", - encoding: "编码输出中…", - completed: "生成完成!", - failed: "生成失败", -} - -const getStepLabel = (step: string) => STEP_LABELS[step] || step.replace(/_/g, " ") - -/* ──────────── 状态徽标颜色 ──────────── */ - -const STATUS_COLOR: Record = { - queued: "#6b7280", - pending: "#6b7280", - preparing: "#f59e0b", - generating_video: "#4f46e5", - adding_effects: "#7c3aed", - composing: "#2563eb", - encoding: "#0891b2", - completed: "#10b981", - failed: "#ef4444", -} - -/* ──────────── 组件 ──────────── */ - -const GenerationProgressModal: React.FC = ({ - open, - phase, - voiceoverDuration, - estimatedDuration, - onDurationChange, - onGenerate, - task, - submitting, - onCancel, - onRetry, - onClose, -}) => { - /* 关闭弹窗时重置(避免下次打开残留旧状态) */ - const prevOpen = useRef(false) - useEffect(() => { - if (prevOpen.current && !open) { - /* modal just closed — parent handles reset */ - } - prevOpen.current = open - }, [open]) - - const progress = task?.progress ?? 0 - const status = task?.status ?? "" - const currentStep = task?.current_step ?? "" - const userMessage = task?.user_message ?? "" - const errorMessage = task?.error_message ?? "" - const retryable = task?.retryable ?? false - - /* ── setup 阶段 ── */ - if (phase === "setup") { - return ( - -
- - { - const v = e.target.value ? Number(e.target.value) : null - onDurationChange(v) - }} - min={1} - max={600} - /> -
- 预估总时长:{estimatedDuration}s -
-
-
- ) - } - - /* ── progress 阶段 ── */ - if (phase === "progress") { - const stepColor = STATUS_COLOR[status] || STATUS_COLOR[currentStep] || "#4f46e5" - - return ( - -
- {/* 进度环 */} -
- - - - - - {progress}% - -
- - {/* 当前步骤 */} -
- {userMessage || getStepLabel(currentStep) || "处理中…"} -
- - {/* 进度条 */} -
-
-
- - {/* 任务 ID */} - {task?.id &&
任务 ID: {task.id}
} -
- - ) - } - - /* ── completed 阶段 ── */ - if (phase === "completed") { - return ( - -
-
🎉
-
视频生成完成!
- {userMessage &&
{userMessage}
} -
- -
-
-
- ) - } - - /* ── failed 阶段 ── */ - return ( - -
-
😥
-
视频生成失败
- {(errorMessage || userMessage) && ( -
- {errorMessage || userMessage} -
- )} -
- {retryable && onRetry && ( - - )} - -
-
-
- ) -} - -export default GenerationProgressModal diff --git a/apps/web/src/pages/editing-planner/components/generation-progress-modal/ProgressPhase.tsx b/apps/web/src/pages/editing-planner/components/generation-progress-modal/ProgressPhase.tsx new file mode 100644 index 000000000..0e2597af5 --- /dev/null +++ b/apps/web/src/pages/editing-planner/components/generation-progress-modal/ProgressPhase.tsx @@ -0,0 +1,65 @@ +import React from "react" +import { Modal } from "@/components/ui" +import type { TaskItem } from "@/api/tasks" +import { getStepLabel, getStatusColor } from "./constants" + +interface ProgressPhaseProps { + open: boolean + task: TaskItem | null + onCancel: () => void +} + +/** progress(进度轮询)阶段弹窗 */ +export const ProgressPhase: React.FC = ({ open, task, onCancel }) => { + const progress = task?.progress ?? 0 + const status = task?.status ?? "" + const currentStep = task?.current_step ?? "" + const userMessage = task?.user_message ?? "" + const stepColor = getStatusColor(status, currentStep) + + return ( + +
+ {/* 进度环 */} +
+ + + + + + {progress}% + +
+ + {/* 当前步骤 */} +
+ {userMessage || getStepLabel(currentStep) || "处理中…"} +
+ + {/* 进度条 */} +
+
+
+ + {/* 任务 ID */} + {task?.id &&
任务 ID: {task.id}
} +
+ + ) +} diff --git a/apps/web/src/pages/editing-planner/components/generation-progress-modal/ResultPhase.tsx b/apps/web/src/pages/editing-planner/components/generation-progress-modal/ResultPhase.tsx new file mode 100644 index 000000000..14af7f83f --- /dev/null +++ b/apps/web/src/pages/editing-planner/components/generation-progress-modal/ResultPhase.tsx @@ -0,0 +1,82 @@ +import React from "react" +import { Modal, Button } from "@/components/ui" +import type { TaskItem } from "@/api/tasks" + +interface ResultPhaseProps { + open: boolean + phase: "completed" | "failed" + task: TaskItem | null + onCancel: () => void + onRetry?: () => void + onClose?: () => void +} + +/** completed / failed(结果)阶段弹窗 */ +export const ResultPhase: React.FC = ({ + open, + phase, + task, + onCancel, + onRetry, + onClose, +}) => { + const userMessage = task?.user_message ?? "" + const errorMessage = task?.error_message ?? "" + const retryable = task?.retryable ?? false + const handleClose = onClose || onCancel + + if (phase === "completed") { + return ( + +
+
🎉
+
视频生成完成!
+ {userMessage &&
{userMessage}
} +
+ +
+
+
+ ) + } + + return ( + +
+
😥
+
视频生成失败
+ {(errorMessage || userMessage) && ( +
+ {errorMessage || userMessage} +
+ )} +
+ {retryable && onRetry && ( + + )} + +
+
+
+ ) +} diff --git a/apps/web/src/pages/editing-planner/components/generation-progress-modal/SetupPhase.tsx b/apps/web/src/pages/editing-planner/components/generation-progress-modal/SetupPhase.tsx new file mode 100644 index 000000000..0c7e3f799 --- /dev/null +++ b/apps/web/src/pages/editing-planner/components/generation-progress-modal/SetupPhase.tsx @@ -0,0 +1,53 @@ +import React from "react" +import { Modal } from "@/components/ui" + +interface SetupPhaseProps { + open: boolean + voiceoverDuration: number | null + estimatedDuration: number + submitting: boolean + onDurationChange: (v: number | null) => void + onGenerate: () => void + onCancel: () => void +} + +/** setup(配置)阶段弹窗 */ +export const SetupPhase: React.FC = ({ + open, + voiceoverDuration, + estimatedDuration, + submitting, + onDurationChange, + onGenerate, + onCancel, +}) => ( + +
+ + { + const v = e.target.value ? Number(e.target.value) : null + onDurationChange(v) + }} + min={1} + max={600} + /> +
+ 预估总时长:{estimatedDuration}s +
+
+
+) diff --git a/apps/web/src/pages/editing-planner/components/generation-progress-modal/constants.ts b/apps/web/src/pages/editing-planner/components/generation-progress-modal/constants.ts new file mode 100644 index 000000000..eeecef559 --- /dev/null +++ b/apps/web/src/pages/editing-planner/components/generation-progress-modal/constants.ts @@ -0,0 +1,31 @@ +/* ──────────── 步骤文案映射 ──────────── */ + +export const STEP_LABELS: Record = { + queued: "排队中…", + preparing: "准备素材…", + generating_video: "渲染视频中…", + adding_effects: "添加特效…", + composing: "合成中…", + encoding: "编码输出中…", + completed: "生成完成!", + failed: "生成失败", +} + +export const getStepLabel = (step: string) => STEP_LABELS[step] || step.replace(/_/g, " ") + +/* ──────────── 状态徽标颜色 ──────────── */ + +export const STATUS_COLOR: Record = { + queued: "#6b7280", + pending: "#6b7280", + preparing: "#f59e0b", + generating_video: "#4f46e5", + adding_effects: "#7c3aed", + composing: "#2563eb", + encoding: "#0891b2", + completed: "#10b981", + failed: "#ef4444", +} + +export const getStatusColor = (status: string, currentStep: string) => + STATUS_COLOR[status] || STATUS_COLOR[currentStep] || "#4f46e5" diff --git a/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx b/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx new file mode 100644 index 000000000..11f782cfb --- /dev/null +++ b/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx @@ -0,0 +1,71 @@ +/** + * 生成进度弹窗 — 任务 2.17 + * 三阶段 UI:setup(配置)→ progress(进度轮询)→ completed / failed(结果) + * V21 设计系统,CSS 类名前缀 ep-gen- + */ +import React, { useEffect, useRef } from "react" +import type { TaskItem } from "@/api/tasks" +import type { GenPhase, GenerationProgressModalProps } from "./types" +import { SetupPhase } from "./SetupPhase" +import { ProgressPhase } from "./ProgressPhase" +import { ResultPhase } from "./ResultPhase" + +/* 重新导出类型,保持向后兼容 */ +export type { GenPhase, GenerationProgressModalProps } + +const GenerationProgressModal: React.FC = ({ + open, + phase, + voiceoverDuration, + estimatedDuration, + onDurationChange, + onGenerate, + task, + submitting, + onCancel, + onRetry, + onClose, +}) => { + /* 关闭弹窗时重置(避免下次打开残留旧状态) */ + const prevOpen = useRef(false) + useEffect(() => { + if (prevOpen.current && !open) { + /* modal just closed — parent handles reset */ + } + prevOpen.current = open + }, [open]) + + /* setup 阶段 */ + if (phase === "setup") { + return ( + + ) + } + + /* progress 阶段 */ + if (phase === "progress") { + return + } + + /* completed / failed 阶段 */ + return ( + + ) +} + +export default GenerationProgressModal diff --git a/apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts b/apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts new file mode 100644 index 000000000..5e0b3990d --- /dev/null +++ b/apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts @@ -0,0 +1,23 @@ +import type { TaskItem } from "@/api/tasks" + +export type GenPhase = "setup" | "progress" | "completed" | "failed" + +export interface GenerationProgressModalProps { + open: boolean + phase: GenPhase + + /* setup 阶段 */ + voiceoverDuration: number | null + estimatedDuration: number + onDurationChange: (v: number | null) => void + onGenerate: () => void + + /* progress / 结果阶段 */ + task: TaskItem | null + + /* 通用 */ + submitting: boolean + onCancel: () => void + onRetry?: () => void + onClose?: () => void +} -- 2.54.0 From a2e4b073e7b6b978f1624333720456cb0865e5ce Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 27 Jul 2026 11:55:55 +0800 Subject: [PATCH 2/9] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E6=9C=AA=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=9A=84TaskItem=20import?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/generation-progress-modal/types.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts b/apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts index 5e0b3990d..0408b58a6 100644 --- a/apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts +++ b/apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts @@ -1,5 +1,3 @@ -import type { TaskItem } from "@/api/tasks" - export type GenPhase = "setup" | "progress" | "completed" | "failed" export interface GenerationProgressModalProps { @@ -13,7 +11,6 @@ export interface GenerationProgressModalProps { onGenerate: () => void /* progress / 结果阶段 */ - task: TaskItem | null /* 通用 */ submitting: boolean -- 2.54.0 From b6e1deeb4c3dada4bacc964c671df1c13c5f0680 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 27 Jul 2026 13:21:48 +0800 Subject: [PATCH 3/9] =?UTF-8?q?fix:=20=E6=81=A2=E5=A4=8D=20GenerationProgr?= =?UTF-8?q?essModal.tsx=20=E5=85=A5=E5=8F=A3=E6=96=87=E4=BB=B6=E4=BF=9D?= =?UTF-8?q?=E6=8C=81=E8=B7=AF=E5=BE=84=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editing-planner/components/GenerationProgressModal.tsx | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 apps/web/src/pages/editing-planner/components/GenerationProgressModal.tsx diff --git a/apps/web/src/pages/editing-planner/components/GenerationProgressModal.tsx b/apps/web/src/pages/editing-planner/components/GenerationProgressModal.tsx new file mode 100644 index 000000000..2f66ce31e --- /dev/null +++ b/apps/web/src/pages/editing-planner/components/GenerationProgressModal.tsx @@ -0,0 +1,6 @@ +/** + * 生成进度弹窗 — 入口文件(向后兼容) + * 实际实现已移至 ./generation-progress-modal/ 目录 + */ +export { default } from "./generation-progress-modal" +export type { GenPhase, GenerationProgressModalProps } from "./generation-progress-modal" -- 2.54.0 From a3435ea36788a390623604c33cb027c37985d19f Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 27 Jul 2026 18:15:44 +0800 Subject: [PATCH 4/9] fix: remove unused imports --- .../components/generation-progress-modal/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx b/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx index 11f782cfb..6627a30bc 100644 --- a/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx +++ b/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx @@ -4,7 +4,7 @@ * V21 设计系统,CSS 类名前缀 ep-gen- */ import React, { useEffect, useRef } from "react" -import type { TaskItem } from "@/api/tasks" +import type {} from "@/api/tasks" import type { GenPhase, GenerationProgressModalProps } from "./types" import { SetupPhase } from "./SetupPhase" import { ProgressPhase } from "./ProgressPhase" @@ -68,4 +68,4 @@ const GenerationProgressModal: React.FC = ({ ) } -export default GenerationProgressModal +export default GenerationProgressModal \ No newline at end of file -- 2.54.0 From 9f4c7a04b47c669833d8b44235391f93e198fe92 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 27 Jul 2026 18:22:38 +0800 Subject: [PATCH 5/9] fix: remove empty type import --- .../components/generation-progress-modal/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx b/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx index 6627a30bc..6bb350c15 100644 --- a/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx +++ b/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx @@ -4,7 +4,6 @@ * V21 设计系统,CSS 类名前缀 ep-gen- */ import React, { useEffect, useRef } from "react" -import type {} from "@/api/tasks" import type { GenPhase, GenerationProgressModalProps } from "./types" import { SetupPhase } from "./SetupPhase" import { ProgressPhase } from "./ProgressPhase" -- 2.54.0 From 14a8580da3867c334810f21d6fd9f299f72ea15b Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 27 Jul 2026 19:05:15 +0800 Subject: [PATCH 6/9] style: prettier format index.tsx --- .../components/generation-progress-modal/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx b/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx index 6bb350c15..14b4f94b5 100644 --- a/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx +++ b/apps/web/src/pages/editing-planner/components/generation-progress-modal/index.tsx @@ -67,4 +67,4 @@ const GenerationProgressModal: React.FC = ({ ) } -export default GenerationProgressModal \ No newline at end of file +export default GenerationProgressModal -- 2.54.0 From b99292dd952d43d2c19f51649779fa5fb677322d Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 27 Jul 2026 21:29:20 +0800 Subject: [PATCH 7/9] =?UTF-8?q?fix:=20=E8=A1=A5=E5=85=85=E4=B8=A2=E5=A4=B1?= =?UTF-8?q?=E7=9A=84task=E5=B1=9E=E6=80=A7=E5=92=8CTaskItem=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/generation-progress-modal/types.ts | 3 +++ 1 file changed, 3 insertions(+) mode change 100644 => 100755 apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts diff --git a/apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts b/apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts old mode 100644 new mode 100755 index 0408b58a6..5e0b3990d --- a/apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts +++ b/apps/web/src/pages/editing-planner/components/generation-progress-modal/types.ts @@ -1,3 +1,5 @@ +import type { TaskItem } from "@/api/tasks" + export type GenPhase = "setup" | "progress" | "completed" | "failed" export interface GenerationProgressModalProps { @@ -11,6 +13,7 @@ export interface GenerationProgressModalProps { onGenerate: () => void /* progress / 结果阶段 */ + task: TaskItem | null /* 通用 */ submitting: boolean -- 2.54.0 From 27e9ef7245495a8794076a9969faaef6ec4c872a Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 27 Jul 2026 21:33:29 +0800 Subject: [PATCH 8/9] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84useCallback=E4=BE=9D=E8=B5=96=20newTitleType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/pages/titles/hooks/useTitleEdit.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/src/pages/titles/hooks/useTitleEdit.ts b/apps/web/src/pages/titles/hooks/useTitleEdit.ts index 40c11ea1d..d1b48286a 100644 --- a/apps/web/src/pages/titles/hooks/useTitleEdit.ts +++ b/apps/web/src/pages/titles/hooks/useTitleEdit.ts @@ -59,7 +59,7 @@ export const useTitleEdit = ({ updateMutation, createMutation }: UseTitleEditPro message.success("标题创建成功") }, }) - }, [newTitleContent, newTitleType, createMutation]) + }, [newTitleContent, createMutation]) /* 关闭新建弹窗 */ const handleCloseCreateModal = useCallback(() => { -- 2.54.0 From 8d3794a4946570d6113669f5caefbb156fe4b5c2 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 27 Jul 2026 21:40:07 +0800 Subject: [PATCH 9/9] =?UTF-8?q?style:=20prettier=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=8C=965=E4=B8=AA=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/assets/components/AssetUploadZone.tsx | 5 +---- .../assets/hooks/asset-operations/batchOperations.ts | 12 ++++++++++-- .../hooks/asset-operations/useSingleOperations.ts | 5 +---- .../web/src/pages/assets/hooks/useAssetOperations.ts | 5 ++++- .../useVoiceMaterials/useVoiceMaterialActions.ts | 2 +- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/apps/web/src/pages/assets/components/AssetUploadZone.tsx b/apps/web/src/pages/assets/components/AssetUploadZone.tsx index 34f803b32..b40b21e96 100644 --- a/apps/web/src/pages/assets/components/AssetUploadZone.tsx +++ b/apps/web/src/pages/assets/components/AssetUploadZone.tsx @@ -11,10 +11,7 @@ export interface AssetUploadZoneProps { onUpload: (file: File) => void } -export const AssetUploadZone: React.FC = ({ - uploading, - onUpload, -}) => { +export const AssetUploadZone: React.FC = ({ uploading, onUpload }) => { return ( { diff --git a/apps/web/src/pages/assets/hooks/asset-operations/batchOperations.ts b/apps/web/src/pages/assets/hooks/asset-operations/batchOperations.ts index b78a2dcde..41e585758 100644 --- a/apps/web/src/pages/assets/hooks/asset-operations/batchOperations.ts +++ b/apps/web/src/pages/assets/hooks/asset-operations/batchOperations.ts @@ -17,7 +17,11 @@ interface UseBatchDeleteOptions { showResult: (result: BatchOperationResult, title: string, clear?: boolean) => void } -export const useBatchDelete = ({ selectedIds, invalidateAssets, showResult }: UseBatchDeleteOptions) => { +export const useBatchDelete = ({ + selectedIds, + invalidateAssets, + showResult, +}: UseBatchDeleteOptions) => { const [batchLoading, setBatchLoading] = useState(false) const handleBatchDelete = useCallback(async () => { @@ -135,7 +139,11 @@ interface UseBatchClassifyOptions { showResult: (result: BatchOperationResult, title: string, clear?: boolean) => void } -export const useBatchClassify = ({ selectedIds, queryClient, showResult }: UseBatchClassifyOptions) => { +export const useBatchClassify = ({ + selectedIds, + queryClient, + showResult, +}: UseBatchClassifyOptions) => { const [classifyModalOpen, setClassifyModalOpen] = useState(false) const [batchCategory, setBatchCategory] = useState("") const [batchLoading, setBatchLoading] = useState(false) diff --git a/apps/web/src/pages/assets/hooks/asset-operations/useSingleOperations.ts b/apps/web/src/pages/assets/hooks/asset-operations/useSingleOperations.ts index f42be42b1..a0bc07ada 100644 --- a/apps/web/src/pages/assets/hooks/asset-operations/useSingleOperations.ts +++ b/apps/web/src/pages/assets/hooks/asset-operations/useSingleOperations.ts @@ -73,10 +73,7 @@ interface UseBatchHelpersOptions { * 批量操作辅助函数 * 刷新数据、显示操作结果 */ -export const useBatchHelpers = ({ - queryClient, - setSelectedIds, -}: UseBatchHelpersOptions) => { +export const useBatchHelpers = ({ queryClient, setSelectedIds }: UseBatchHelpersOptions) => { const invalidateAssets = useCallback(() => { queryClient.invalidateQueries({ queryKey: ["assets"] }) queryClient.invalidateQueries({ queryKey: ["asset-libraries"] }) diff --git a/apps/web/src/pages/assets/hooks/useAssetOperations.ts b/apps/web/src/pages/assets/hooks/useAssetOperations.ts index 160ca3d23..84b78e4b5 100644 --- a/apps/web/src/pages/assets/hooks/useAssetOperations.ts +++ b/apps/web/src/pages/assets/hooks/useAssetOperations.ts @@ -78,7 +78,10 @@ export function useAssetOperations({ selectedIds, setSelectedIds }: UseAssetOper // 取任一批量操作的 loading 状态(任意一个在加载都算加载中) const batchLoading = - deleteLoading || tagResult.batchLoading || classifyResult.batchLoading || markResult.batchLoading + deleteLoading || + tagResult.batchLoading || + classifyResult.batchLoading || + markResult.batchLoading /* ── 关闭结果 Drawer ── */ const handleResultDrawerClose = useCallback(() => { diff --git a/apps/web/src/pages/voice-materials/hooks/useVoiceMaterials/useVoiceMaterialActions.ts b/apps/web/src/pages/voice-materials/hooks/useVoiceMaterials/useVoiceMaterialActions.ts index f59b2e114..bb2be1a54 100644 --- a/apps/web/src/pages/voice-materials/hooks/useVoiceMaterials/useVoiceMaterialActions.ts +++ b/apps/web/src/pages/voice-materials/hooks/useVoiceMaterials/useVoiceMaterialActions.ts @@ -213,4 +213,4 @@ export function useVoiceMaterialActions({ handleEdit, handleDelete, } -} \ No newline at end of file +} -- 2.54.0