"use client" import { getUserTaskList } from "@/components/label/api/task" import { useBackUrlStore, usePermissionStore, } from "@/components/label/store/auth" import { TaskStatusEnum } from "@/components/label/utils/constants" import { Anchor, Badge, Button, Group, Pagination, ScrollArea, Select, Table, Text, } from "@mantine/core" import { IconRefresh } from "@tabler/icons-react" import { useRouter } from "next/navigation" import { useCallback, useEffect, useMemo, useState } from "react" const pageSizeOptions = [50, 100, 200] function getStatusColor(status?: number | null) { switch (status) { case 2: return "blue" case 4: return "yellow" case 6: return "orange" case 7: return "green" case 8: return "red" default: return "gray" } } export default function PersonalTaskTable() { const router = useRouter() const user_name = usePermissionStore((s) => s.user_name) const user_password = usePermissionStore((s) => s.user_password) const setBackProps = useBackUrlStore((s) => s.setBackProps) const [page, setPage] = useState(1) const [pageSize, setPageSize] = useState(50) const [totalItems, setTotalItems] = useState(0) const [records, setRecords] = useState([]) const [loading, setLoading] = useState(false) const totalPages = useMemo(() => { return Math.max(1, Math.ceil(totalItems / pageSize)) }, [pageSize, totalItems]) const load = useCallback(async () => { if (!user_name) return setLoading(true) try { const res = await getUserTaskList({ page_number: page, page_size: pageSize, }) setRecords(res?.simple_task_list ?? []) setTotalItems(res?.total_items ?? 0) } finally { setLoading(false) } }, [page, pageSize, user_name]) useEffect(() => { load() }, [load]) useEffect(() => { if (page > totalPages) setPage(totalPages) }, [page, totalPages]) const resetData = () => { if (page === 1) load() else setPage(1) } return ( 项目名称 任务ID 状态 标注员 审核员 复审员 {records.map((record) => ( {record.project_name ?? "-"} { e.preventDefault() const labelType = record.label_type if ([4, 5, 6].includes(labelType)) { setBackProps("/management/person/dashboard") router.push( `/label?project_id=${record.project_id}&task_id=${record.id}` ) return } if (user_name && user_password) { setBackProps("/management/person/dashboard") router.push( `/label?project_id=${record.project_id}&task_id=${record.id}` ) } }} style={{ cursor: "pointer" }}> {record.id ?? "-"} {`${TaskStatusEnum.get(record.label_status) ?? "-"}${ record.rejected ? "返工" : "" }`} {record.label_username ?? "-"} {record.review1_username ?? "-"} {record.review2_username ?? "-"} ))}