import React, { useState, useEffect } from 'react';
import {
Table, Card, Button, Modal, Form, Input, Select, Space, message,
Popconfirm, Tag, Avatar, Row, Col, DatePicker
} from 'antd';
import {
PlusOutlined, EditOutlined, DeleteOutlined, UserOutlined,
ReloadOutlined, SearchOutlined, KeyOutlined
} from '@ant-design/icons';
import { adminAPI } from '../../services/api';
import dayjs from 'dayjs';
const { Option } = Select;
const { RangePicker } = DatePicker;
const AdminManagement = () => {
const [form] = Form.useForm();
const [searchForm] = Form.useForm();
const [modalVisible, setModalVisible] = useState(false);
const [resetPasswordModalVisible, setResetPasswordModalVisible] = useState(false);
const [passwordForm] = Form.useForm();
const [editingRecord, setEditingRecord] = useState(null);
const [resetPasswordRecord, setResetPasswordRecord] = useState(null);
const [loading, setLoading] = useState(false);
const [admins, setAdmins] = useState([]);
const [pagination, setPagination] = useState({
current: 1,
pageSize: 10,
total: 0,
});
const [filters, setFilters] = useState({});
// 获取管理员列表
const fetchAdmins = async (params = {}) => {
try {
setLoading(true);
const queryParams = {
page: pagination.current,
size: pagination.pageSize,
...filters,
...params,
};
// 处理时间范围参数
if (queryParams.createStart && queryParams.createEnd) {
// 保持原格式
}
const response = await adminAPI.getAdminList(queryParams);
if (response.code === 0) {
setAdmins(response.data.content || []);
setPagination(prev => ({
...prev,
total: response.data.totalElements || 0,
}));
} else {
message.error(response.msg || '获取管理员列表失败');
}
} catch (error) {
console.error('获取管理员列表失败:', error);
message.error(error.message || '获取管理员列表失败');
} finally {
setLoading(false);
}
};
// 页面初始化加载数据
useEffect(() => {
fetchAdmins();
}, [pagination.current, pagination.pageSize]);
// 处理分页变化
const handleTableChange = (paginationInfo) => {
setPagination(prev => ({
...prev,
current: paginationInfo.current,
pageSize: paginationInfo.pageSize,
}));
};
// 处理搜索
const handleSearch = () => {
const values = searchForm.getFieldsValue();
const newFilters = {};
if (values.username) {
newFilters.username = values.username;
}
if (values.name) {
newFilters.name = values.name;
}
if (values.role) {
newFilters.role = values.role;
}
if (values.status !== undefined && values.status !== null) {
newFilters.status = values.status;
}
if (values.createTimeRange && values.createTimeRange.length === 2) {
newFilters.createStart = values.createTimeRange[0].format('YYYY-MM-DD HH:mm:ss');
newFilters.createEnd = values.createTimeRange[1].format('YYYY-MM-DD HH:mm:ss');
}
setFilters(newFilters);
setPagination(prev => ({ ...prev, current: 1 }));
fetchAdmins(newFilters);
};
// 重置搜索
const handleReset = () => {
searchForm.resetFields();
setFilters({});
setPagination(prev => ({ ...prev, current: 1 }));
fetchAdmins({});
};
const columns = [
{
title: '管理员',
key: 'admin',
render: (_, record) => (
管理系统管理员账号和权限