import React, { useState, useEffect, useCallback } from 'react';
import { Table, Button, Space, Card, message, Tag, Row, Col, Avatar, Form, Input, Select, Spin, Modal, Radio } from 'antd';
import { EyeOutlined, UserOutlined, CheckOutlined } from '@ant-design/icons';
import { useNavigate } from 'react-router-dom';
import { applicationAPI } from '../../services/api';
const { Option } = Select;
const VolunteerList = () => {
const [searchForm] = Form.useForm();
const [selectedStatus, setSelectedStatus] = useState('全部');
const [volunteers, setVolunteers] = useState([]);
const [loading, setLoading] = useState(false);
const [pagination, setPagination] = useState({
current: 1,
pageSize: 10,
total: 0,
});
const [filters, setFilters] = useState({});
const [reviewModal, setReviewModal] = useState({
visible: false,
id: null,
name: '',
});
const [reviewForm] = Form.useForm();
const navigate = useNavigate();
// 获取志愿者列表数据
const fetchVolunteerData = useCallback(async (params = {}) => {
try {
setLoading(true);
const queryParams = {
page: pagination.current,
size: pagination.pageSize,
...filters,
...params,
};
const response = await applicationAPI.getApplicationList(queryParams);
if (response.code === 0) {
// 转换数据格式以适配前端显示
const transformedData = response.data.content?.map(item => {
// 调试日志:查看状态值类型
console.log('状态值:', item.status, '类型:', typeof item.status);
return {
id: item.id,
name: item.name, // 志愿者姓名
idCard: item.idCard, // 志愿者身份证号
phone: item.phone, // 志愿者手机号码
createTime: item.createTime, // 加入时间
status: (item.status === 0 || item.status === '0') ? '待审核' : (item.status === 1 || item.status === '1') ? '通过' : (item.status === 2 || item.status === '2') ? '不通过' : '未知', // 审核状态映射
totalPoints: item.applicationsCount?.points || 0, // 积分数量
activities: item.applicationsCount?.activityNum || 0, // 参加活动次数
serviceHours: item.applicationsCount?.serviceHours || 0, // 服务时长
originalData: item,
};
}) || [];
console.log('转换后的数据:', transformedData);
setVolunteers(transformedData);
setPagination(prev => ({
...prev,
total: response.data.totalElements || 0,
}));
}
} catch (error) {
console.error('获取志愿者列表失败:', error);
message.error('获取志愿者列表失败');
} finally {
setLoading(false);
}
}, [pagination.current, pagination.pageSize, filters]);
// 页面初始化加载数据
useEffect(() => {
fetchVolunteerData();
}, [fetchVolunteerData]);
const getStatusColor = (status) => {
switch (status) {
case '通过':
return 'success';
case '待审核':
return 'warning';
case '不通过':
return 'error';
default:
return 'default';
}
};
const columns = [
{
title: '志愿者',
key: 'volunteer',
width: 200,
render: (_, record) => (
管理所有志愿者信息,查看志愿者积分和活动参与情况