import { siteapicontrollerDeletereview, siteapicontrollerGetreviews, } from '@/servers/api/siteApi'; import { ActionType, ProCard, ProColumns, ProTable, } from '@ant-design/pro-components'; import { useParams } from '@umijs/max'; import { Button, message, Popconfirm, Space } from 'antd'; import React, { useRef, useState } from 'react'; import ReviewForm from './ReviewForm'; const ReviewsPage: React.FC = () => { const params = useParams(); const siteId = Number(params.siteId); const actionRef = useRef(); const [open, setOpen] = useState(false); const [editing, setEditing] = useState(null); const columns: ProColumns[] = [ { title: 'ID', dataIndex: 'id', key: 'id', width: 50 }, { title: '产品ID', dataIndex: 'product_id', key: 'product_id', width: 80 }, { title: '作者', dataIndex: 'author', key: 'author' }, { title: '评分', dataIndex: 'rating', key: 'rating', width: 80 }, { title: '状态', dataIndex: 'status', key: 'status', width: 100 }, { title: '创建时间', dataIndex: 'date_created', key: 'date_created', valueType: 'dateTime', width: 150, }, { title: '操作', key: 'action', width: 150, render: (_, record) => ( { if (record.id) { try { const response = await siteapicontrollerDeletereview({ siteId, id: String(record.id), }); if (response.success) { message.success('删除成功'); actionRef.current?.reload(); } else { message.error('删除失败'); } } catch (error) { message.error('删除失败'); } } }} > ), }, ]; return ( columns={columns} actionRef={actionRef} request={async (params) => { try { const response = await siteapicontrollerGetreviews({ ...params, siteId, page: params.current, per_page: params.pageSize, }); // 确保 response.data 存在 if (!response || !response.data) { return { data: [], success: true, total: 0, }; } // 确保 response.data.items 是数组 const items = Array.isArray(response.data.items) ? response.data.items : []; // 确保每个 item 有有效的 id const processedItems = items.map((item, index) => ({ ...item, // 如果 id 是对象,转换为字符串,否则使用索引作为后备 id: typeof item.id === 'object' ? JSON.stringify(item.id) : (item.id || index), // 如果 product_id 是对象,转换为字符串 product_id: typeof item.product_id === 'object' ? JSON.stringify(item.product_id) : item.product_id, })); return { data: processedItems, success: true, total: Number(response.data.total) || 0, }; } catch (error) { console.error('获取评论失败:', error); return { data: [], success: true, total: 0, }; } }} rowKey="id" search={{ labelWidth: 'auto', }} headerTitle="评论列表" toolBarRender={() => [ , ]} /> setOpen(false)} onSuccess={() => { setOpen(false); actionRef.current?.reload(); }} /> ); }; export default ReviewsPage;