import { Link, useParams } from "react-router-dom"; import { useQuery } from "@tanstack/react-query"; import { ArrowLeft, ListTodo } from "lucide-react"; import { getUserSkillTasks } from "@/api/skill"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { toZhPriority, toZhStatus } from "@/lib/display"; import { formatBeijingDateTime } from "@/lib/datetime"; export default function SkillTasksPage() { const { id: userId, skillId } = useParams(); const { data, isLoading, error, refetch } = useQuery({ queryKey: ["skill-tasks", userId, skillId], queryFn: () => getUserSkillTasks(userId!, skillId!), enabled: !!userId && !!skillId, }); const items = data?.items ?? []; const total = data?.total ?? items.length; return (

技能历史任务

用户 {userId} / 技能 {skillId}

任务列表 ({total}) {isLoading ? (

加载中…

) : error ? (

加载失败:{(error as Error).message || "请求异常"}

) : items.length === 0 ? (

暂无历史任务

当前后端可能尚未提供技能历史任务接口,页面已兼容空数据。

) : ( <>
任务 状态 优先级 工时 (h) 更新时间 {items.map((task) => (

{task.title}

{task.description && (

{task.description}

)}
{toZhStatus(task.status)} {toZhPriority(task.priority)} {typeof task.estimated_hours === "number" ? task.estimated_hours.toFixed(1) : "-"} {task.updated_at ? formatBeijingDateTime(task.updated_at) : "-"}
))}
{items.map((task) => (

{task.title}

{task.description && (

{task.description}

)}
状态:{toZhStatus(task.status)} 优先级:{toZhPriority(task.priority)}
工时:{typeof task.estimated_hours === "number" ? task.estimated_hours.toFixed(1) : "-"}h {task.updated_at ? formatBeijingDateTime(task.updated_at) : "-"}
))}
)}
); }