From e82cfc43ed6f0a5b742ecd241a20c4271aa6b567 Mon Sep 17 00:00:00 2001 From: zhangheng Date: Sat, 6 Jun 2026 14:05:46 +0800 Subject: [PATCH] feat(own): add filter --- .../components/PersonalTaskTable.tsx | 49 +++++++++++++++++-- app/person/dashboard/page.module.css | 19 +++++++ components/label/api/task/index.ts | 1 + components/setting/PageSurface.tsx | 8 ++- 4 files changed, 73 insertions(+), 4 deletions(-) diff --git a/app/person/dashboard/components/PersonalTaskTable.tsx b/app/person/dashboard/components/PersonalTaskTable.tsx index 4d7262a..802bd76 100644 --- a/app/person/dashboard/components/PersonalTaskTable.tsx +++ b/app/person/dashboard/components/PersonalTaskTable.tsx @@ -18,13 +18,27 @@ import { getPersistedPageSizeOptions, resolvePageSizeWithinOptions, } from "@/components/setting/pageSize" -import { Button, Group, Stack, Text, UnstyledButton } from "@mantine/core" +import { + Button, + Group, + Select, + Stack, + Text, + UnstyledButton, +} from "@mantine/core" import { IconRefresh } from "@tabler/icons-react" import { DataTableColumn } from "mantine-datatable" import { useCallback, useEffect, useMemo, useState } from "react" import classes from "../page.module.css" const DEFAULT_RECORDS_PER_PAGE_OPTIONS = [10, 15, 20, 50] +const REJECTED_FILTER_OPTIONS = [ + { value: "all", label: "全部" }, + { value: "true", label: "是" }, + { value: "false", label: "否" }, +] as const + +type RejectedFilterValue = (typeof REJECTED_FILTER_OPTIONS)[number]["value"] export default function PersonalTaskTable() { const user_name = usePermissionStore((s) => s.user_name) @@ -47,6 +61,8 @@ export default function PersonalTaskTable() { const [totalItems, setTotalItems] = useState(0) const [records, setRecords] = useState([]) const [loading, setLoading] = useState(false) + const [rejectedFilter, setRejectedFilter] = + useState("all") const totalPages = useMemo(() => { return Math.max(1, Math.ceil(totalItems / pageSize)) @@ -59,13 +75,15 @@ export default function PersonalTaskTable() { const res = await getUserTaskList({ page_number: page, page_size: pageSize, + rejected: + rejectedFilter === "all" ? undefined : rejectedFilter === "true", }) setRecords(res?.simple_task_list ?? []) setTotalItems(res?.total_items ?? 0) } finally { setLoading(false) } - }, [page, pageSize, user_name]) + }, [page, pageSize, rejectedFilter, user_name]) useEffect(() => { load() @@ -198,7 +216,32 @@ export default function PersonalTaskTable() { + + 共 {totalItems} 条记录 + + + + 是否返工 + +