import React, { useState } from 'react'; import { Button, Table, Space, Form, Input, Select, message, Modal, Card, Typography, Tag, Popconfirm } from 'antd'; import { useQuery } from '@tanstack/react-query'; import dayjs from 'dayjs'; import { UserAPI } from './api/index.ts'; const { Title } = Typography; // 用户管理页面 export const UsersPage = () => { const [searchParams, setSearchParams] = useState({ page: 1, limit: 10, search: '' }); const [modalVisible, setModalVisible] = useState(false); const [modalTitle, setModalTitle] = useState(''); const [editingUser, setEditingUser] = useState(null); const [form] = Form.useForm(); const { data: usersData, isLoading, refetch } = useQuery({ queryKey: ['users', searchParams], queryFn: async () => { return await UserAPI.getUsers(searchParams); } }); const users = usersData?.data || []; const pagination = { current: searchParams.page, pageSize: searchParams.limit, total: usersData?.pagination?.total || 0 }; // 处理搜索 const handleSearch = (values: any) => { setSearchParams(prev => ({ ...prev, search: values.search || '', page: 1 })); }; // 处理分页变化 const handleTableChange = (newPagination: any) => { setSearchParams(prev => ({ ...prev, page: newPagination.current, limit: newPagination.pageSize })); }; // 打开创建用户模态框 const showCreateModal = () => { setModalTitle('创建用户'); setEditingUser(null); form.resetFields(); setModalVisible(true); }; // 打开编辑用户模态框 const showEditModal = (user: any) => { setModalTitle('编辑用户'); setEditingUser(user); form.setFieldsValue(user); setModalVisible(true); }; // 处理模态框确认 const handleModalOk = async () => { try { const values = await form.validateFields(); if (editingUser) { // 编辑用户 await UserAPI.updateUser(editingUser.id, values); message.success('用户更新成功'); } else { // 创建用户 await UserAPI.createUser(values); message.success('用户创建成功'); } setModalVisible(false); form.resetFields(); refetch(); // 刷新用户列表 } catch (error) { console.error('表单提交失败:', error); message.error('操作失败,请重试'); } }; // 处理删除用户 const handleDelete = async (id: number) => { try { await UserAPI.deleteUser(id); message.success('用户删除成功'); refetch(); // 刷新用户列表 } catch (error) { console.error('删除用户失败:', error); message.error('删除失败,请重试'); } }; const columns = [ { title: '用户名', dataIndex: 'username', key: 'username', }, { title: '昵称', dataIndex: 'nickname', key: 'nickname', }, { title: '邮箱', dataIndex: 'email', key: 'email', }, { title: '角色', dataIndex: 'role', key: 'role', render: (role: string) => ( {role === 'admin' ? '管理员' : '普通用户'} ), }, { title: '创建时间', dataIndex: 'created_at', key: 'created_at', render: (date: string) => dayjs(date).format('YYYY-MM-DD HH:mm:ss'), }, { title: '操作', key: 'action', render: (_: any, record: any) => ( handleDelete(record.id)} okText="确定" cancelText="取消" > ), }, ]; return (
用户管理
`共 ${total} 条记录` }} onChange={handleTableChange} /> {/* 创建/编辑用户模态框 */} { setModalVisible(false); form.resetFields(); }} width={600} >
{!editingUser && ( )}
); };