import React, { useState, useEffect } from 'react'; import { Table, Card, Button, Modal, Form, Input, Select, Space, message, Popconfirm, Tag, Avatar } from 'antd'; import { PlusOutlined, EditOutlined, DeleteOutlined, UserOutlined } from '@ant-design/icons'; import { userAPI } from '../../services/api'; const { Option } = Select; const UserManagement = () => { const [form] = Form.useForm(); const [modalVisible, setModalVisible] = useState(false); const [editingRecord, setEditingRecord] = useState(null); const [loading, setLoading] = useState(false); const [users, setUsers] = useState([]); const [pagination, setPagination] = useState({ current: 1, pageSize: 10, total: 0, }); const [filters, setFilters] = useState({}); // 获取用户列表 const fetchUsers = async (params = {}) => { try { setLoading(true); const queryParams = { page: pagination.current, size: pagination.pageSize, ...filters, ...params, }; const response = await userAPI.getUserList(queryParams); if (response.code === 0) { setUsers(response.data.content || []); setPagination(prev => ({ ...prev, total: response.data.totalElements || 0, })); } } catch (error) { console.error('获取用户列表失败:', error); message.error('获取用户列表失败'); } finally { setLoading(false); } }; // 页面初始化加载数据 useEffect(() => { fetchUsers(); }, [pagination.current, pagination.pageSize]); // 处理分页变化 const handleTableChange = (paginationInfo) => { setPagination(prev => ({ ...prev, current: paginationInfo.current, pageSize: paginationInfo.pageSize, })); }; const columns = [ { title: '用户', key: 'user', render: (_, record) => ( } />
{record.name}
{record.username}
), }, { title: '邮箱', dataIndex: 'email', key: 'email', }, { title: '角色', dataIndex: 'role', key: 'role', render: (role) => { const colorMap = { '超级管理员': 'red', '活动管理员': 'blue', '普通操作员': 'green', }; return {role}; }, }, { title: '状态', dataIndex: 'status', key: 'status', render: (status) => ( {status} ), }, { title: '最后登录', dataIndex: 'lastLogin', key: 'lastLogin', }, { title: '创建时间', dataIndex: 'createTime', key: 'createTime', }, { title: '操作', key: 'action', render: (_, record) => ( handleDelete(record.id)} okText="确定" cancelText="取消" > ), }, ]; const handleAdd = () => { setEditingRecord(null); form.resetFields(); setModalVisible(true); }; const handleEdit = (record) => { setEditingRecord(record); form.setFieldsValue(record); setModalVisible(true); }; const handleDelete = async (id) => { try { const response = await userAPI.deleteUsers(id.toString()); if (response.code === 0) { message.success('删除成功'); fetchUsers(); } } catch (error) { console.error('删除用户失败:', error); message.error('删除用户失败'); } }; const handleModalOk = async () => { try { const values = await form.validateFields(); setLoading(true); const response = await userAPI.saveUser(values); if (response.code === 0) { message.success(editingRecord ? '更新成功' : '添加成功'); setModalVisible(false); fetchUsers(); } } catch (error) { console.error('保存用户失败:', error); message.error('保存用户失败'); } finally { setLoading(false); } }; const handleModalCancel = () => { setModalVisible(false); form.resetFields(); }; return (

用户管理

管理系统用户账号和权限

`第 ${range[0]}-${range[1]} 条/共 ${total} 条`, }} onChange={handleTableChange} />
{!editingRecord && ( )}
); }; export default UserManagement;