diff --git a/tone-page-server/src/admin/dto/admin-user/update.dto.ts b/tone-page-server/src/admin/dto/admin-user/update.dto.ts index 994b9f4..25c0d1a 100644 --- a/tone-page-server/src/admin/dto/admin-user/update.dto.ts +++ b/tone-page-server/src/admin/dto/admin-user/update.dto.ts @@ -1,4 +1,4 @@ -import { IsEmail, IsOptional, IsString, Length, Matches, ValidateIf } from "class-validator"; +import { IsEmail, IsOptional, IsString, Length, Matches } from "class-validator"; export class UpdateDto { @IsString({ message: '用户名不得为空' }) diff --git a/tone-page-web/app/console/(with-menu)/user/page.tsx b/tone-page-web/app/console/(with-menu)/user/page.tsx index d901b55..78745e1 100644 --- a/tone-page-web/app/console/(with-menu)/user/page.tsx +++ b/tone-page-web/app/console/(with-menu)/user/page.tsx @@ -6,12 +6,30 @@ import { TooltipContent, TooltipProvider, TooltipTrigger, Tooltip } from "@/comp import { useUserList } from "@/hooks/admin/user/use-user-list"; import { useState } from "react"; import { UserInfoEditor } from "./components/user-info-editor"; +import { User } from "@/lib/types/user"; export default function Page() { - const { users, isLoading, error, total, page, pageSize } = useUserList(); + const { users, isLoading, error, total, page, pageSize, mutate } = useUserList(); const [editorUserId, setEditorUserId] = useState(""); + const handleUserUpdate = async (newUser: User) => { + await mutate( + (data) => { + if (!data) return data; + return { + ...data, + items: data.items.map((user) => + user.userId === newUser.userId ? newUser : user + ), + }; + }, + { + revalidate: false, + } + ) + } + return ( <> @@ -67,12 +85,11 @@ export default function Page() {
- setEditorUserId('')} userId={editorUserId} onUserUpdate={(user) => { - const index = users.findIndex((u) => u.userId === user.userId); - if (index !== -1) { - users[index] = user; - } - }} /> + setEditorUserId('')} + userId={editorUserId} + onUserUpdate={handleUserUpdate} + /> ) } \ No newline at end of file