diff --git a/apps/web/src/api/products.ts b/apps/web/src/api/products.ts old mode 100644 new mode 100755 index 539ef3132..4188092f2 --- a/apps/web/src/api/products.ts +++ b/apps/web/src/api/products.ts @@ -89,7 +89,12 @@ export const getProducts = async ( params?: ProductListParams, ): Promise => { const response = await apiClient.get("/generation/tasks", { params }); - const tasks = response.data.items || response.data || []; + const data = response.data; + const tasks = Array.isArray(data?.items) + ? data.items + : Array.isArray(data) + ? data + : []; return tasks.map(mapTaskToProductItem); }; diff --git a/apps/web/src/pages/assets/AssetLibrary.tsx b/apps/web/src/pages/assets/AssetLibrary.tsx index 35555cd9d..23ecd166c 100755 --- a/apps/web/src/pages/assets/AssetLibrary.tsx +++ b/apps/web/src/pages/assets/AssetLibrary.tsx @@ -1277,13 +1277,13 @@ const AssetLibrary: React.FC = () => { )} - {operationResult.succeeded.length > 0 && ( + {(operationResult?.succeeded?.length ?? 0) > 0 && (

成功列表

- {operationResult.succeeded.map((id) => ( + {operationResult?.succeeded?.map((id) => (
{id}
@@ -1292,13 +1292,13 @@ const AssetLibrary: React.FC = () => {
)} - {operationResult.failed.length > 0 && ( + {(operationResult?.failed?.length ?? 0) > 0 && (

失败列表

- {operationResult.failed.map((id) => ( + {operationResult?.failed?.map((id) => (
{id}
diff --git a/apps/web/src/pages/editing-planner/components/GenerationHistoryModal.tsx b/apps/web/src/pages/editing-planner/components/GenerationHistoryModal.tsx index 7c4ce926f..b9019decf 100755 --- a/apps/web/src/pages/editing-planner/components/GenerationHistoryModal.tsx +++ b/apps/web/src/pages/editing-planner/components/GenerationHistoryModal.tsx @@ -48,7 +48,7 @@ const GenerationHistoryModal: React.FC = ({
- ) : history.length === 0 ? ( + ) : (history?.length ?? 0) === 0 ? (
暂无生成记录 @@ -65,7 +65,7 @@ const GenerationHistoryModal: React.FC = ({ - {history.map((gen) => { + {(history ?? []).map((gen) => { const statusClass = `ep-gh-status-tag--${gen.status}`; const canCancel = gen.status === "rendering" || gen.status === "editing"; diff --git a/apps/web/src/pages/products/ProductLibrary.tsx b/apps/web/src/pages/products/ProductLibrary.tsx old mode 100644 new mode 100755 index 1d85fa3f8..0ef36d844 --- a/apps/web/src/pages/products/ProductLibrary.tsx +++ b/apps/web/src/pages/products/ProductLibrary.tsx @@ -587,8 +587,11 @@ const ProductLibrary: React.FC = () => { staleTime: 30_000, }); - // 映射为前端类型 - const products = useMemo(() => apiProducts.map(mapApiProduct), [apiProducts]); + // 映射为前端类型,防御非数组返回 + const products = useMemo( + () => (Array.isArray(apiProducts) ? apiProducts : []).map(mapApiProduct), + [apiProducts], + ); /* ── 删除 mutation ── */ const deleteMutation = useMutation({