From e3ca3e9c3111f5d13a2ccf58886be872e04f15a4 Mon Sep 17 00:00:00 2001 From: zhangheng Date: Fri, 27 Feb 2026 10:21:43 +0800 Subject: [PATCH] perf(format): code format --- app/management/team/cost/page.tsx | 13 +-- app/management/team/dailypaper/page.tsx | 91 +++++++++++++----- .../employee/components/CreateUserModal.tsx | 21 +---- .../employee/components/EditUserModal.tsx | 21 +---- .../team/employee/components/ImportModal.tsx | 10 +- app/management/team/employee/page.tsx | 6 +- .../organization/components/CreateModal.tsx | 22 ++--- app/management/team/organization/page.tsx | 7 +- app/management/team/sync_server/page.tsx | 3 +- app/management/team/sync_task/page.tsx | 71 ++++++++++---- app/management/team/utils.ts | 4 +- .../team/workload/TaskListTable.tsx | 92 +++++++++++++------ .../team/workload/WorkloadMetricsTable.tsx | 31 +++++-- components/label/api/label/index.ts | 4 +- components/label/api/sync/index.ts | 3 +- 15 files changed, 257 insertions(+), 142 deletions(-) diff --git a/app/management/team/cost/page.tsx b/app/management/team/cost/page.tsx index a707664..cff3d4e 100644 --- a/app/management/team/cost/page.tsx +++ b/app/management/team/cost/page.tsx @@ -6,14 +6,7 @@ import { getDownloadLog, } from "@/components/label/api/workload" import useAuth from "@/components/label/hooks/useAuth" -import { - ActionIcon, - Button, - Group, - Paper, - Stack, - Text, -} from "@mantine/core" +import { ActionIcon, Button, Group, Paper, Stack, Text } from "@mantine/core" import { notifications } from "@mantine/notifications" import { IconDownload, IconFileExport, IconRefresh } from "@tabler/icons-react" import dayjs from "dayjs" @@ -99,7 +92,9 @@ export default function TeamCostPage() { title: "导出时间", width: 200, render: (record) => - record.create_at ? dayjs(record.create_at).format("YYYY-MM-DD HH:mm:ss") : "-", + record.create_at + ? dayjs(record.create_at).format("YYYY-MM-DD HH:mm:ss") + : "-", }, { accessor: "file_name", title: "导出文件名", width: 280 }, { accessor: "create_user", title: "操作人", width: 160 }, diff --git a/app/management/team/dailypaper/page.tsx b/app/management/team/dailypaper/page.tsx index 0911345..ac1380f 100644 --- a/app/management/team/dailypaper/page.tsx +++ b/app/management/team/dailypaper/page.tsx @@ -77,7 +77,10 @@ export default function TeamDailypaperPage() { const { isShow } = useAuth() const treeData = useAllUserStore((s) => s.treeData) - const leaderOptions = useMemo(() => flattenLeaderTree(treeData ?? []), [treeData]) + const leaderOptions = useMemo( + () => flattenLeaderTree(treeData ?? []), + [treeData] + ) const defaultFilters = useMemo(() => { return { @@ -116,7 +119,8 @@ export default function TeamDailypaperPage() { }) const [modalOpened, setModalOpened] = useState(false) - const [editingRecord, setEditingRecord] = useState(null) + const [editingRecord, setEditingRecord] = + useState(null) const [searchExpanded, setSearchExpanded] = useState(false) const queryParams = useMemo(() => { @@ -147,7 +151,13 @@ export default function TeamDailypaperPage() { } }) return params - }, [appliedFilters, page, pageSize, sortStatus.columnAccessor, sortStatus.direction]) + }, [ + appliedFilters, + page, + pageSize, + sortStatus.columnAccessor, + sortStatus.direction, + ]) const load = useCallback(async () => { if (!queryTrigger) return @@ -182,7 +192,9 @@ export default function TeamDailypaperPage() { useEffect(() => { const run = async () => { const res = await getSelfProjectList() - setProjectOptions((res ?? []).map((p) => ({ label: p.label, value: String(p.value) }))) + setProjectOptions( + (res ?? []).map((p) => ({ label: p.label, value: String(p.value) })) + ) } queueMicrotask(run) }, []) @@ -237,7 +249,11 @@ export default function TeamDailypaperPage() { item.obj_type === 0 || item.obj_type === 1 ? (objTypeTextMap.get(item.obj_type) ?? "-") : "-", - item.residual_pm === true ? "正" : item.residual_pm === false ? "负" : "-", + item.residual_pm === true + ? "正" + : item.residual_pm === false + ? "负" + : "-", item.start_time ?? "-", item.end_time ?? "-", item.work_time ?? 0, @@ -274,7 +290,8 @@ export default function TeamDailypaperPage() { accessor: "week", title: "星期", width: 90, - render: (record) => (record.date ? weekDayText(dayjs(record.date).day()) : "-"), + render: (record) => + record.date ? weekDayText(dayjs(record.date).day()) : "-", }, { accessor: "set_type", @@ -299,7 +316,8 @@ export default function TeamDailypaperPage() { accessor: "accounting_type", title: "核算方式", width: 140, - render: (record) => accountTypeMap.get(record.accounting_type ?? "") ?? "-", + render: (record) => + accountTypeMap.get(record.accounting_type ?? "") ?? "-", }, { accessor: "project_name", @@ -348,14 +366,23 @@ export default function TeamDailypaperPage() { title: "余量正负", width: 100, render: (record) => - record.residual_pm === true ? "正" : record.residual_pm === false ? "负" : "-", + record.residual_pm === true + ? "正" + : record.residual_pm === false + ? "负" + : "-", }, { accessor: "start_time", title: "开始时间", width: 120 }, { accessor: "end_time", title: "结束时间", width: 120 }, { accessor: "work_time", title: "工时", width: 90, sortable: true }, { accessor: "rate", title: "额定倍率", width: 90 }, { accessor: "standard_size", title: "标准量", width: 90, sortable: true }, - { accessor: "completed_size", title: "完成量", width: 90, sortable: true }, + { + accessor: "completed_size", + title: "完成量", + width: 90, + sortable: true, + }, { accessor: "residual_size", title: "余量", width: 90, sortable: true }, { accessor: "residual_work_time", @@ -430,7 +457,9 @@ export default function TeamDailypaperPage() { title: "删除日报", centered: true, children: ( - 删除后不可恢复,你确定删除该日报吗? + + 删除后不可恢复,你确定删除该日报吗? + ), labels: { confirm: "删除", cancel: "取消" }, confirmProps: { color: "red" }, @@ -530,7 +559,9 @@ export default function TeamDailypaperPage() { radius="xs" type="date" value={filters.date_start} - onChange={(e) => setFilters((s) => ({ ...s, date_start: e.target.value }))} + onChange={(e) => + setFilters((s) => ({ ...s, date_start: e.target.value })) + } /> setFilters((s) => ({ ...s, date_end: e.target.value }))} + onChange={(e) => + setFilters((s) => ({ ...s, date_end: e.target.value })) + } /> setFilters((s) => ({ ...s, set_type: v[0] ?? "" }))} + onChange={(v) => + setFilters((s) => ({ ...s, set_type: v[0] ?? "" })) + } /> setFilters((s) => ({ ...s, actual_type: v[0] ?? "" }))} + onChange={(v) => + setFilters((s) => ({ ...s, actual_type: v[0] ?? "" })) + } /> setFilters((s) => ({ ...s, work_type: v[0] ?? "" }))} + onChange={(v) => + setFilters((s) => ({ ...s, work_type: v[0] ?? "" })) + } /> - setFilters((s) => ({ ...s, performance_accounting: v[0] ?? "" })) + setFilters((s) => ({ + ...s, + performance_accounting: v[0] ?? "", + })) } /> setFilters((s) => ({ ...s, obj_type: v[0] ?? "" }))} + onChange={(v) => + setFilters((s) => ({ ...s, obj_type: v[0] ?? "" })) + } /> @@ -656,10 +702,7 @@ export default function TeamDailypaperPage() { }}> - @@ -704,7 +747,9 @@ export default function TeamDailypaperPage() { 工时:{summaryText.total_work_time} 标准量:{summaryText.total_standard_size} - 完成量:{summaryText.total_completed_size} + + 完成量:{summaryText.total_completed_size} + 余量:{summaryText.total_residual_size} 余量工时:{summaryText.total_residual_work_time} diff --git a/app/management/team/employee/components/CreateUserModal.tsx b/app/management/team/employee/components/CreateUserModal.tsx index ed04943..2b16424 100644 --- a/app/management/team/employee/components/CreateUserModal.tsx +++ b/app/management/team/employee/components/CreateUserModal.tsx @@ -1,14 +1,7 @@ "use client" import { getUserGroupAll, userAdd } from "@/components/label/api/user" -import { - Button, - Group, - Modal, - Select, - Stack, - TextInput, -} from "@mantine/core" +import { Button, Group, Modal, Select, Stack, TextInput } from "@mantine/core" import { useForm } from "@mantine/form" import { notifications } from "@mantine/notifications" import { useEffect, useState } from "react" @@ -22,9 +15,9 @@ export default function CreateUserModal({ opened, onCloseAction, }: ComponentProps) { - const [groupOpts, setGroupOpts] = useState>( - [] - ) + const [groupOpts, setGroupOpts] = useState< + Array<{ label: string; value: string }> + >([]) const [submitting, setSubmitting] = useState(false) const form = useForm({ @@ -116,11 +109,7 @@ export default function CreateUserModal({ onClick={() => onCloseAction()}> 取消 - diff --git a/app/management/team/employee/components/EditUserModal.tsx b/app/management/team/employee/components/EditUserModal.tsx index 22f4053..59b339d 100644 --- a/app/management/team/employee/components/EditUserModal.tsx +++ b/app/management/team/employee/components/EditUserModal.tsx @@ -2,14 +2,7 @@ import { getUserGroupAll, userEditById } from "@/components/label/api/user" import { User } from "@/components/label/api/user/typing" -import { - Button, - Group, - Modal, - Select, - Stack, - TextInput, -} from "@mantine/core" +import { Button, Group, Modal, Select, Stack, TextInput } from "@mantine/core" import { useForm } from "@mantine/form" import { notifications } from "@mantine/notifications" import { useEffect, useMemo, useState } from "react" @@ -25,9 +18,9 @@ export default function EditUserModal({ data, onCloseAction, }: ComponentProps) { - const [groupOpts, setGroupOpts] = useState>( - [] - ) + const [groupOpts, setGroupOpts] = useState< + Array<{ label: string; value: string }> + >([]) const [submitting, setSubmitting] = useState(false) const groupValueByName = useMemo(() => { @@ -153,11 +146,7 @@ export default function EditUserModal({ onClick={() => onCloseAction()}> 取消 - diff --git a/app/management/team/employee/components/ImportModal.tsx b/app/management/team/employee/components/ImportModal.tsx index 86cc387..ea2edc8 100644 --- a/app/management/team/employee/components/ImportModal.tsx +++ b/app/management/team/employee/components/ImportModal.tsx @@ -121,7 +121,9 @@ export default function ImportModal({ opened, onCloseAction }: ComponentProps) { XLSX.utils.book_append_sheet(wb, ws, "用户信息") wb.Sheets["用户信息"]["!rows"] = [{ hpx: 20 }, { hpx: 20 }, { hpx: 20 }] wb.Sheets["用户信息"]["!cols"] = [{ wch: 20 }, { wch: 20 }, { wch: 20 }] - wb.Sheets["用户信息"]["!merges"] = [{ s: { c: 0, r: 0 }, e: { c: 2, r: 2 } }] + wb.Sheets["用户信息"]["!merges"] = [ + { s: { c: 0, r: 0 }, e: { c: 2, r: 2 } }, + ] if (wb.Sheets["用户信息"]["A1"]) { wb.Sheets["用户信息"]["A1"].s = { alignment: { wrapText: true } } } @@ -251,11 +253,7 @@ export default function ImportModal({ opened, onCloseAction }: ComponentProps) { }}> 取消 - diff --git a/app/management/team/employee/page.tsx b/app/management/team/employee/page.tsx index 0645757..f2ee93e 100644 --- a/app/management/team/employee/page.tsx +++ b/app/management/team/employee/page.tsx @@ -16,7 +16,7 @@ import { } from "@mantine/core" import { modals } from "@mantine/modals" import { notifications } from "@mantine/notifications" -import { IconEdit, IconPlus, IconRefresh, IconSearch, IconUpload } from "@tabler/icons-react" +import { IconEdit, IconRefresh, IconSearch } from "@tabler/icons-react" import { DataTable, DataTableColumn } from "mantine-datatable" import { useCallback, useEffect, useMemo, useState } from "react" import CreateUserModal from "./components/CreateUserModal" @@ -193,7 +193,7 @@ export default function TeamEmployeePage() { 重置 - + {/* {isShow("add") ? ( - diff --git a/app/management/team/organization/page.tsx b/app/management/team/organization/page.tsx index 40fec30..4f25899 100644 --- a/app/management/team/organization/page.tsx +++ b/app/management/team/organization/page.tsx @@ -15,7 +15,12 @@ import { TextInput, } from "@mantine/core" import { notifications } from "@mantine/notifications" -import { IconPlus, IconRefresh, IconSearch, IconUserCircle } from "@tabler/icons-react" +import { + IconPlus, + IconRefresh, + IconSearch, + IconUserCircle, +} from "@tabler/icons-react" import { useCallback, useEffect, useMemo, useState } from "react" import CreateModal from "./components/CreateModal" diff --git a/app/management/team/sync_server/page.tsx b/app/management/team/sync_server/page.tsx index d07f773..865a5c5 100644 --- a/app/management/team/sync_server/page.tsx +++ b/app/management/team/sync_server/page.tsx @@ -37,7 +37,8 @@ export default function TeamSyncServerPage() { const [appliedOnline, setAppliedOnline] = useState(null) const [open, setOpen] = useState(false) - const [editingRecord, setEditingRecord] = useState(null) + const [editingRecord, setEditingRecord] = + useState(null) const [editingLocation, setEditingLocation] = useState("") const [submitting, setSubmitting] = useState(false) diff --git a/app/management/team/sync_task/page.tsx b/app/management/team/sync_task/page.tsx index 8f1e28d..f4f5ff2 100644 --- a/app/management/team/sync_task/page.tsx +++ b/app/management/team/sync_task/page.tsx @@ -21,7 +21,15 @@ import { } from "@mantine/core" import { modals } from "@mantine/modals" import { notifications } from "@mantine/notifications" -import { IconPlayerPause, IconPlayerPlay, IconPlus, IconRefresh, IconSearch, IconTrash, IconX } from "@tabler/icons-react" +import { + IconPlayerPause, + IconPlayerPlay, + IconPlus, + IconRefresh, + IconSearch, + IconTrash, + IconX, +} from "@tabler/icons-react" import { DataTable, DataTableColumn } from "mantine-datatable" import { useCallback, useEffect, useMemo, useState } from "react" @@ -56,11 +64,15 @@ export default function TeamSyncTaskPage() { const [appliedProjectId, setAppliedProjectId] = useState(null) const [appliedServerId, setAppliedServerId] = useState(null) - const [projectOpt, setProjectOpt] = useState>([]) - const [serverAllOpt, setServerAllOpt] = useState>([]) - const [serverOnlineOpt, setServerOnlineOpt] = useState>( - [] - ) + const [projectOpt, setProjectOpt] = useState< + Array<{ label: string; value: string }> + >([]) + const [serverAllOpt, setServerAllOpt] = useState< + Array<{ label: string; value: string }> + >([]) + const [serverOnlineOpt, setServerOnlineOpt] = useState< + Array<{ label: string; value: string }> + >([]) const [serverMap, setServerMap] = useState>(new Map()) const [open, setOpen] = useState(false) @@ -78,7 +90,9 @@ export default function TeamSyncTaskPage() { setProjectOpt(projects.map((p) => ({ label: p.name, value: String(p.id) }))) const allServers = serverRes ?? [] - setServerAllOpt(allServers.map((s) => ({ label: s.ip, value: String(s.id) }))) + setServerAllOpt( + allServers.map((s) => ({ label: s.ip, value: String(s.id) })) + ) setServerOnlineOpt( allServers .filter((s) => s.is_online) @@ -122,7 +136,11 @@ export default function TeamSyncTaskPage() { load() }, [load]) - const performStatusAction = async (id: number, statusTo: number, successText: string) => { + const performStatusAction = async ( + id: number, + statusTo: number, + successText: string + ) => { try { await updateSyncTaskStatus(id, statusTo) notifications.show({ @@ -156,7 +174,9 @@ export default function TeamSyncTaskPage() { title: "同步服务IP", width: 160, render: (record) => - record.sync_server_id ? serverMap.get(record.sync_server_id) ?? "-" : "-", + record.sync_server_id + ? (serverMap.get(record.sync_server_id) ?? "-") + : "-", }, { accessor: "location", title: "IP所在地", width: 140 }, { accessor: "create_at", title: "创建时间", width: 180 }, @@ -167,10 +187,13 @@ export default function TeamSyncTaskPage() { width: 200, textAlign: "center", render: (record) => { - const couldRun = isShow("task_edit") && [10].includes(record.status ?? -1) - const couldStop = isShow("task_edit") && [1, 2].includes(record.status ?? -1) + const couldRun = + isShow("task_edit") && [10].includes(record.status ?? -1) + const couldStop = + isShow("task_edit") && [1, 2].includes(record.status ?? -1) const couldDelete = - isShow("task_edit") && [1, 2, 3, 4, 9, 10].includes(record.status ?? -1) + isShow("task_edit") && + [1, 2, 3, 4, 9, 10].includes(record.status ?? -1) const couldClose = isShow("task_edit") && ![11, 12].includes(record.status ?? -1) @@ -199,7 +222,11 @@ export default function TeamSyncTaskPage() { ), labels: { confirm: "确定", cancel: "取消" }, onConfirm: () => - performStatusAction(record.id as number, 9, "已暂停任务"), + performStatusAction( + record.id as number, + 9, + "已暂停任务" + ), }) }}> @@ -219,7 +246,11 @@ export default function TeamSyncTaskPage() { labels: { confirm: "确定", cancel: "取消" }, confirmProps: { color: "red" }, onConfirm: () => - performStatusAction(record.id as number, 5, "已提交删除"), + performStatusAction( + record.id as number, + 5, + "已提交删除" + ), }) }}> @@ -238,7 +269,11 @@ export default function TeamSyncTaskPage() { ), labels: { confirm: "确定", cancel: "取消" }, onConfirm: () => - performStatusAction(record.id as number, 11, "已关闭任务"), + performStatusAction( + record.id as number, + 11, + "已关闭任务" + ), }) }}> @@ -437,7 +472,11 @@ export default function TeamSyncTaskPage() { onChange={setNewServerId} /> - @@ -387,10 +419,12 @@ export default function TaskListTable() { label="任务状态" size="xs" radius="xs" - data={Array.from(TaskStatusEnum.entries()).map(([value, label]) => ({ - label, - value: String(value), - }))} + data={Array.from(TaskStatusEnum.entries()).map( + ([value, label]) => ({ + label, + value: String(value), + }) + )} searchable clearable value={filters.label_status} @@ -445,7 +479,11 @@ export default function TaskListTable() { - + withTableBorder withRowBorders @@ -453,7 +491,7 @@ export default function TaskListTable() { records={records} columns={columns} noRecordsText="暂无数据" - rowKey="id" + idAccessor="id" scrollAreaProps={{ type: "auto" }} style={{ width: "100%" }} /> @@ -472,7 +510,9 @@ export default function TaskListTable() { 问题数:{totalSize?.question_size ?? 0} 审核对象数:{totalSize?.review_size ?? 0} 批注数(1):{totalSize?.first_comment_size ?? 0} - 批注数(2):{totalSize?.second_comment_size ?? 0} + + 批注数(2):{totalSize?.second_comment_size ?? 0} + diff --git a/app/management/team/workload/WorkloadMetricsTable.tsx b/app/management/team/workload/WorkloadMetricsTable.tsx index 6a6ff45..d58d003 100644 --- a/app/management/team/workload/WorkloadMetricsTable.tsx +++ b/app/management/team/workload/WorkloadMetricsTable.tsx @@ -21,7 +21,12 @@ import { } from "mantine-datatable" import { useEffect, useMemo, useState } from "react" import * as XLSX from "xlsx-js-style" -import { DimensionType, GroupedData, MetricColumn, dimensionOpts } from "./config" +import { + DimensionType, + GroupedData, + MetricColumn, + dimensionOpts, +} from "./config" function emptyGroupedData(): GroupedData { return { @@ -42,8 +47,12 @@ export default function WorkloadMetricsTable(props: { }) { const { title, sheetName, fileName, metrics, fetchData } = props - const [startDate, setStartDate] = useState(dayjs().subtract(1, "day").format("YYYY-MM-DD")) - const [endDate, setEndDate] = useState(dayjs().subtract(1, "day").format("YYYY-MM-DD")) + const [startDate, setStartDate] = useState( + dayjs().subtract(1, "day").format("YYYY-MM-DD") + ) + const [endDate, setEndDate] = useState( + dayjs().subtract(1, "day").format("YYYY-MM-DD") + ) const [dimension, setDimension] = useState("all") const [data, setData] = useState(emptyGroupedData()) const [loading, setLoading] = useState(false) @@ -152,14 +161,18 @@ export default function WorkloadMetricsTable(props: { { accessor: "user_name", title: "用户名", width: 120 }, { accessor: "group_name", title: "用户组", width: 160 }, ], - order_by_group_name: [{ accessor: "group_name", title: "用户组", width: 180 }], + order_by_group_name: [ + { accessor: "group_name", title: "用户组", width: 180 }, + ], order_by_project_name: [ { accessor: "project_name", title: "项目名称", width: 220 }, ], order_by_project_type: [ { accessor: "project_type", title: "项目类型", width: 220 }, ], - order_by_user_name: [{ accessor: "user_name", title: "用户名", width: 180 }], + order_by_user_name: [ + { accessor: "user_name", title: "用户名", width: 180 }, + ], } return allCols[dimension] }, [dimension]) @@ -319,7 +332,11 @@ export default function WorkloadMetricsTable(props: { - + withTableBorder withRowBorders @@ -327,7 +344,7 @@ export default function WorkloadMetricsTable(props: { records={sortedRecords} columns={columns} noRecordsText="暂无数据" - rowKey={rowKey as any} + idAccessor={rowKey as any} scrollAreaProps={{ type: "auto" }} style={{ width: "100%" }} sortStatus={sortStatus} diff --git a/components/label/api/label/index.ts b/components/label/api/label/index.ts index 61f7580..22e9c8c 100644 --- a/components/label/api/label/index.ts +++ b/components/label/api/label/index.ts @@ -1,11 +1,11 @@ import httpFetch from "@/api/fetch" +import { BASE_LABEL_API } from "../const" import { LabelResult, LoginInfo, RequestLabelResult, ServerResponse, } from "./typing" -import { BASE_LABEL_API } from "../const" // 获取标注结果 export const getLabelResult = (task_id: number) => { @@ -31,7 +31,7 @@ export const saveLabelResult = (data: RequestLabelResult) => { export const getServerImage = async (data: { data_names: string[] /** - * 0-图片 1-点云 + * 0-图片 1-点云 2-视频 */ data_type: number flag?: number diff --git a/components/label/api/sync/index.ts b/components/label/api/sync/index.ts index 9736922..f85717a 100644 --- a/components/label/api/sync/index.ts +++ b/components/label/api/sync/index.ts @@ -58,7 +58,8 @@ export const newSyncTask = (data: { // 更新同步任务状态 export const updateSyncTaskStatus = (id: number, status: number) => { return httpFetch({ - url: BASE_LABEL_API + `/api/v1/label_server/data_sync/update_sync_task/${id}`, + url: + BASE_LABEL_API + `/api/v1/label_server/data_sync/update_sync_task/${id}`, method: "PUT", body: JSON.stringify({ status }), })