import React, { useState, useEffect, useCallback } from 'react';
import { Table, Card, Button, Space, Tag, message, Avatar, Popconfirm, Spin } from 'antd';
import { UserOutlined, EyeOutlined, DeleteOutlined } from '@ant-design/icons';
import dayjs from 'dayjs';
import { useNavigate, useParams } from 'react-router-dom';
import { activityUserAPI } from '../../services/api';
const RegistrationManagement = () => {
const navigate = useNavigate();
const { id: activityId } = useParams(); // 获取活动ID
const [registrations, setRegistrations] = useState([]);
const [loading, setLoading] = useState(false);
const [pagination, setPagination] = useState({
current: 1,
pageSize: 10,
total: 0,
});
// 获取报名列表数据
const fetchRegistrationData = useCallback(async (params = {}) => {
try {
setLoading(true);
const queryParams = {
activityId: activityId, // 从URL参数获取活动ID
page: pagination.current, // 页码从1开始
size: pagination.pageSize, // 每页大小
...params,
};
const response = await activityUserAPI.getRegistrationList(queryParams);
if (response.code === 0) {
// 转换数据格式以适配前端显示
const transformedData = response.data.content?.map(item => {
// 调试日志:查看原始状态值
console.log('原始状态值:', item.status, '类型:', typeof item.status);
return {
id: item.id,
volunteerName: item.userName, // userName -> volunteerName
phone: item.userPhone, // userPhone -> phone
registerTime: item.createTime ? dayjs(item.createTime).format('YYYY-MM-DD HH:mm') : '', // 格式化报名时间
checkInLocation: item.checkinLocation || '', // checkinLocation -> checkInLocation
checkInTime: item.checkinTime ? dayjs(item.checkinTime).format('YYYY-MM-DD HH:mm') : '', // 格式化签到时间
checkOutLocation: item.checkoutLocation || '', // checkoutLocation -> checkOutLocation
checkOutTime: item.checkoutTime ? dayjs(item.checkoutTime).format('YYYY-MM-DD HH:mm') : '', // 格式化签退时间
status: (item.status === 1 || item.status === '1') ? '1' : (item.status === 2 || item.status === '2') ? '2' : (item.status === 3 || item.status === '3') ? '3' : '未知', // 状态映射
originalData: item,
};
});
console.log('转换后的数据:', transformedData);
setRegistrations(transformedData);
setPagination(prev => ({
...prev,
total: response.data.totalElements || 0,
}));
}
} catch (error) {
console.error('获取报名列表失败:', error);
message.error('获取报名列表失败');
} finally {
setLoading(false);
}
}, [activityId, pagination.current, pagination.pageSize]);
// 页面初始化加载数据
useEffect(() => {
if (activityId) {
fetchRegistrationData();
}
}, [activityId, fetchRegistrationData]);
const columns = [
{
title: '志愿者',
key: 'volunteer',
width: 150,
render: (_, record) => (
管理活动报名者,审核报名申请