diff --git a/admin-v2/src/pages/Accounts.tsx b/admin-v2/src/pages/Accounts.tsx index 9362a30..be04617 100644 --- a/admin-v2/src/pages/Accounts.tsx +++ b/admin-v2/src/pages/Accounts.tsx @@ -40,10 +40,11 @@ export default function Accounts() { const [form] = Form.useForm() const [modalOpen, setModalOpen] = useState(false) const [editingId, setEditingId] = useState(null) + const [searchParams, setSearchParams] = useState>({}) const { data, isLoading } = useQuery({ - queryKey: ['accounts'], - queryFn: ({ signal }) => accountService.list(signal), + queryKey: ['accounts', searchParams], + queryFn: ({ signal }) => accountService.list(searchParams, signal), }) const updateMutation = useMutation({ @@ -68,21 +69,31 @@ export default function Accounts() { }) const columns: ProColumns[] = [ - { title: '用户名', dataIndex: 'username', width: 120 }, + { title: '用户名', dataIndex: 'username', width: 120, tooltip: '搜索用户名、邮箱或显示名' }, { title: '显示名', dataIndex: 'display_name', width: 120, hideInSearch: true }, { title: '邮箱', dataIndex: 'email', width: 180 }, { title: '角色', dataIndex: 'role', width: 120, - hideInSearch: true, + valueType: 'select', + valueEnum: { + super_admin: { text: '超级管理员' }, + admin: { text: '管理员' }, + user: { text: '用户' }, + }, render: (_, record) => {roleLabels[record.role] || record.role}, }, { title: '状态', dataIndex: 'status', width: 100, - hideInSearch: true, + valueType: 'select', + valueEnum: { + active: { text: '正常', status: 'Success' }, + disabled: { text: '已禁用', status: 'Default' }, + suspended: { text: '已封禁', status: 'Error' }, + }, render: (_, record) => {statusLabels[record.status] || record.status}, }, { @@ -154,6 +165,21 @@ export default function Accounts() { rowKey="id" search={{}} toolBarRender={() => []} + onSubmit={(values) => { + const filtered: Record = {} + for (const [k, v] of Object.entries(values)) { + if (v !== undefined && v !== null && v !== '') { + // Map 'username' search field to backend 'search' param + if (k === 'username') { + filtered.search = String(v) + } else { + filtered[k] = String(v) + } + } + } + setSearchParams(filtered) + }} + onReset={() => setSearchParams({})} pagination={{ total: data?.total ?? 0, pageSize: data?.page_size ?? 20,