From d40461a69af706f420a690af96f4a9ce62e4dce2 Mon Sep 17 00:00:00 2001 From: leijiaping Date: Tue, 27 Oct 2026 13:29:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=89=B9=E9=87=8F=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=94=AF=E6=8C=81Excel=E5=AF=BC=E5=85=A5=E4=B8=8E=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E4=B8=8B=E8=BD=BD;=E6=9C=BA=E6=9E=84=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E9=A1=B5=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E7=94=A8?= =?UTF-8?q?=E6=88=B7(=E6=89=8B=E6=9C=BA=E5=8F=B7/=E5=A7=93=E5=90=8D),?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E4=BF=AE=E6=94=B9=E5=A7=93=E5=90=8D=E5=85=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/user.ts | 5 + .../edit-user-dialog.tsx} | 8 +- .../user/-hooks => hooks}/useSaveUser.ts | 0 src/routes/admin/org-account/index.tsx | 23 ++ .../-components/BatchCreateUserDialog.tsx | 289 +++++++++++++++--- src/routes/admin/user/index.tsx | 2 +- 6 files changed, 276 insertions(+), 51 deletions(-) rename src/{routes/admin/user/-components/EditUserDialog.tsx => components/edit-user-dialog.tsx} (93%) rename src/{routes/admin/user/-hooks => hooks}/useSaveUser.ts (100%) diff --git a/src/apis/user.ts b/src/apis/user.ts index f2ba8c0..f68779d 100644 --- a/src/apis/user.ts +++ b/src/apis/user.ts @@ -23,6 +23,11 @@ export const createUser = (data: any, config?: any) => { return http.post("/user/create_org_user", data, config); }; +// 批量创建用户(单条失败不影响其他条目,返回与入参顺序对应的逐条结果) +export const batchCreateUser = (data: any[]) => { + return http.post("/user/batch_create_org_user", data); +}; + export const getUserOrg = () => { return http.get("/uc/org/find"); }; diff --git a/src/routes/admin/user/-components/EditUserDialog.tsx b/src/components/edit-user-dialog.tsx similarity index 93% rename from src/routes/admin/user/-components/EditUserDialog.tsx rename to src/components/edit-user-dialog.tsx index 74b6799..402527d 100644 --- a/src/routes/admin/user/-components/EditUserDialog.tsx +++ b/src/components/edit-user-dialog.tsx @@ -20,7 +20,7 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { Spinner } from "@/components/ui/spinner"; import { Input } from "@/components/ui/input"; -import { useSaveUser } from "../-hooks/useSaveUser"; +import { useSaveUser } from "@/hooks/useSaveUser"; import { useEffect, useMemo } from "react"; import { Alert, AlertDescription } from "@/components/ui/alert"; @@ -57,7 +57,9 @@ export function EditUserDialog({ refetch, data, }: EditUserDialogProps) { - const isNewUser = useMemo(() => !data?.id, [data]); + // 用户管理页行主键为 id,机构账号页行主键为 userId + const recordId = data?.userId ?? data?.id; + const isNewUser = useMemo(() => !recordId, [recordId]); const formSchema = useMemo(() => getFormSchema(isNewUser), [isNewUser]); const form = useForm>({ @@ -89,7 +91,7 @@ export function EditUserDialog({ }, [open, data, form]); const onSubmit = (values: z.infer) => { - save({ id: data?.id, ...values }); + save({ id: recordId, ...values }); }; return ( diff --git a/src/routes/admin/user/-hooks/useSaveUser.ts b/src/hooks/useSaveUser.ts similarity index 100% rename from src/routes/admin/user/-hooks/useSaveUser.ts rename to src/hooks/useSaveUser.ts diff --git a/src/routes/admin/org-account/index.tsx b/src/routes/admin/org-account/index.tsx index ee7ae73..ccaae94 100644 --- a/src/routes/admin/org-account/index.tsx +++ b/src/routes/admin/org-account/index.tsx @@ -17,6 +17,7 @@ import { useFetchList } from "./-hooks/useFetchList"; import { useUserStatusActions } from "@/hooks/use-user-status-actions"; import { UserActionConfirmDialog } from "./-components/UserActionConfirmDialog"; import { ResetUserPasswordDialog } from "@/components/reset-user-password-dialog"; +import { EditUserDialog } from "@/components/edit-user-dialog"; import { useUserStore } from "@/stores/user"; import { DateRangePicker } from "@/components/date-range-picker"; @@ -40,6 +41,7 @@ export function useColumns({ handleDisable, handleCancelUser, handleResetPassword, + handleEditUser, }: any) { const currentUserId = useUserStore((state: any) => state.user?.id); return [ @@ -133,6 +135,13 @@ export function useColumns({ } return (
+