import React, { useState, useEffect, useCallback } from 'react'; import { Table, Card, Input, Button, Space, Row, Col, Form, message, Spin } from 'antd'; import { SearchOutlined, DownloadOutlined } from '@ant-design/icons'; import { userAPI } from '../../services/api'; const VolunteerPoints = () => { const [searchForm] = Form.useForm(); const [volunteerPoints, setVolunteerPoints] = useState([]); const [loading, setLoading] = useState(false); const [pagination, setPagination] = useState({ current: 1, pageSize: 10, total: 0, }); const [filters, setFilters] = useState({}); const columns = [ { title: '志愿者姓名', dataIndex: 'name', key: 'name', }, { title: '手机号', dataIndex: 'phone', key: 'phone', }, { title: '总积分', dataIndex: 'totalPoints', key: 'totalPoints', render: (points) => {points || 0}, }, { title: '获得积分', dataIndex: 'points', key: 'points', render: (points) => +{points || 0}, }, { title: '使用积分', dataIndex: 'redeemedPoints', key: 'redeemedPoints', render: (points) => -{points || 0}, }, ]; // 获取积分数据 const fetchPointsData = useCallback(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) { setVolunteerPoints(response.data.content || []); setPagination(prev => ({ ...prev, total: response.data.totalElements || 0, })); } } catch (error) { console.error('获取积分数据失败:', error); message.error('获取积分数据失败'); } finally { setLoading(false); } }, [pagination.current, pagination.pageSize, filters]); // 页面初始化加载数据 useEffect(() => { fetchPointsData(); }, [fetchPointsData]); const handleSearch = (values) => { setFilters(values); setPagination(prev => ({ ...prev, current: 1 })); fetchPointsData({ ...values, page: 1 }); }; const handleReset = () => { searchForm.resetFields(); setFilters({}); setPagination(prev => ({ ...prev, current: 1 })); fetchPointsData({ page: 1 }); }; // 处理分页变化 const handleTableChange = (paginationInfo) => { setPagination(prev => ({ ...prev, current: paginationInfo.current, pageSize: paginationInfo.pageSize, })); fetchPointsData({ page: paginationInfo.current, size: paginationInfo.pageSize, }); }; const handleExport = () => { console.log('导出数据'); }; return (

积分查询

查询志愿者积分情况,支持导出数据

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