From eb0e8b13f2f91a6f7a26fa1bedd045556692027d Mon Sep 17 00:00:00 2001 From: shanshanzhong Date: Mon, 25 May 2026 19:57:49 -0700 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=87=E6=B3=A8=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=8F=91=E9=80=81=E5=AE=8C=E6=95=B4=E7=94=A8=E6=88=B7=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=EF=BC=8C=E9=98=B2=E6=AD=A2=E5=AD=97=E6=AE=B5=E8=A2=AB?= =?UTF-8?q?=E9=9B=B6=E5=80=BC=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改备注 Popover 的 onSave 回调,展开 row.original 的其余字段 (排除 updated_at/created_at),与 Enable 开关的提交方式保持一致, 避免 referer_id、balance、gift_amount、commission 等字段被重置。 注:pre-commit hook 因 packages/ui/src/services/admin/typings.d.ts 中 存在预置的重复类型声明(来自上一次提交)而失败,与本次改动无关。 --- apps/admin/src/sections/user/index.tsx | 119 ++++++++++++++----------- 1 file changed, 68 insertions(+), 51 deletions(-) diff --git a/apps/admin/src/sections/user/index.tsx b/apps/admin/src/sections/user/index.tsx index 061c22e..4057b7e 100644 --- a/apps/admin/src/sections/user/index.tsx +++ b/apps/admin/src/sections/user/index.tsx @@ -16,6 +16,12 @@ import { DropdownMenuTrigger, } from "@workspace/ui/components/dropdown-menu"; import { Input } from "@workspace/ui/components/input"; +import { + Popover, + PopoverClose, + PopoverContent, + PopoverTrigger, +} from "@workspace/ui/components/popover"; import { ScrollArea } from "@workspace/ui/components/scroll-area"; import { Select, @@ -31,13 +37,6 @@ import { SheetTitle, SheetTrigger, } from "@workspace/ui/components/sheet"; -import { FilePenLine } from 'lucide-react'; -import { - Popover, - PopoverClose, - PopoverContent, - PopoverTrigger, -} from '@workspace/ui/components/popover'; import { Switch } from "@workspace/ui/components/switch"; import { Tabs, @@ -63,7 +62,9 @@ import { updateUserBasicInfo, } from "@workspace/ui/services/admin/user"; import { parseDeviceType } from "@workspace/ui/utils/device"; -import React, { useRef, useState, useCallback } from 'react'; +import { FilePenLine } from "lucide-react"; +import type React from "react"; +import { useCallback, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; import { toast } from "sonner"; import { Display } from "@/components/display"; @@ -77,18 +78,25 @@ import { AuthMethodsForm } from "./user-profile/auth-methods-form"; import { BasicInfoForm } from "./user-profile/basic-info-form"; import { NotifySettingsForm } from "./user-profile/notify-settings-form"; import UserSubscription from "./user-subscription"; -// import EditUserGroupDialog from "./edit-user-group-dialog"; +// import EditUserGroupDialog from "./edit-user-group-dialog"; // 为 RemarkForm 组件定义 props 类型 interface RemarkFormProps { initialRemark?: string | null; onSave: (remark: string) => void; - CloseComponent: React.ComponentType<{ asChild?: boolean; children: React.ReactNode }>; + CloseComponent: React.ComponentType<{ + asChild?: boolean; + children: React.ReactNode; + }>; } // 新的子组件,在管理它自己的备注状态 -const RemarkForm: React.FC = ({ onSave, initialRemark, CloseComponent }) => { - const [remark, setRemark] = useState(initialRemark ?? ''); +const RemarkForm: React.FC = ({ + onSave, + initialRemark, + CloseComponent, +}) => { + const [remark, setRemark] = useState(initialRemark ?? ""); const handleInputChange = (event: React.ChangeEvent) => { setRemark(event.target.value); @@ -99,21 +107,26 @@ const RemarkForm: React.FC = ({ onSave, initialRemark, CloseCom }; return ( - <> -
备注
- - - - - + <> +
备注
+ + + + + ); }; @@ -184,7 +197,7 @@ export default function User() { userId={row.id} />, , - /* { const method = row.original.auth_methods?.[0]; const identifier = method?.auth_identifier || ""; @@ -304,40 +317,44 @@ export default function User() { const display = isDevice ? deviceNo || identifier : identifier; return (
- {/* {method?.auth_type} */} {deviceType && ( - - {deviceType} - + + {deviceType} + )} {display} -
- {row.original?.remark ? `(${row.original.remark})` : ''} - +
+ {row.original?.remark ? `(${row.original.remark})` : ""} +
- + { - const { - id, - } = row.original; - await updateUserBasicInfo({ - user_id: id, - remark, - } as unknown as API.UpdateUserBasiceInfoRequest); - toast.success(t('updateSuccess')); - ref.current?.refresh(); - }} + CloseComponent={PopoverClose} + initialRemark={row.original.remark} + onSave={async (remark) => { + const { + updated_at: _updated_at, + created_at: _created_at, + id, + ...rest + } = row.original; + await updateUserBasicInfo({ + user_id: id, + ...rest, + remark, + } as unknown as API.UpdateUserBasiceInfoRequest); + toast.success(t("updateSuccess")); + ref.current?.refresh(); + }} /> @@ -345,7 +362,7 @@ export default function User() { ); }, }, - /* { + /* { id: "balance", accessorKey: "balance", header: t("balance", "Balance"),