+ {/* 创建视频任务弹窗 */}
+
+ {/* 图片预览 Dialog */}
+
+
+
任务列表
+
+
+ {loading ? (
+
+ ) : error ? (
+
{error}
+ ) : (
+
+
+
+
+
+
+ 图片
+ ID
+ 任务ID
+ 图片状态
+ 视频状态
+ 创建时间
+
+
+
+ {data?.data?.length ? (
+ data.data.map(item => (
+
+
+ handleRowSelect(item)} />
+
+
+ {item.img_url ? (
+
{
+ setPreviewImg(item.img_url!);
+ setDialogOpen(true);
+ }}
+ />
+ ) : (
+ 无
+ )}
+
+ {item.id}
+ {item.task_id}
+ {item.img_status || '-'}
+ {item.video_status || '-'}
+ {item.create_time || '-'}
+
+ ))
+ ) : (
+
+
+ 暂无数据
+
+
+ )}
+
+
+ )}
+
+
+ 第 {page} 页
+
+
+
+ );
+};
+
+export default TryOnTasksPage;
diff --git a/src/pages/TryOnVideoTaskPage/index.tsx b/src/pages/TryOnVideoTaskPage/index.tsx
new file mode 100644
index 0000000..93327c3
--- /dev/null
+++ b/src/pages/TryOnVideoTaskPage/index.tsx
@@ -0,0 +1,147 @@
+import React, { useEffect, useState } from 'react';
+import { getAllVideoTasks } from '@/lib/indexeddb';
+import { Dialog, DialogContent } from '@/components/ui/dialog';
+import { Button } from '@/components/ui/button';
+import { api } from '@/lib/api';
+import { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from '@/components/ui/table';
+
+interface LocalVideoTask {
+ id: string;
+ img_url: string;
+ prompt: string;
+ create_time: string;
+ task_id: string;
+}
+
+interface TaskStatusMap {
+ [job_id: string]: {
+ status: 'finished' | 'running' | 'failed' | 'unknown';
+ video_url?: string;
+ };
+}
+
+const TryOnVideoTaskPage: React.FC = () => {
+ const [tasks, setTasks] = useState