import { useState } from 'react' import { api } from '@/lib/api' import { usePaged } from '@/lib/usePaged' import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { Card, CardContent } from '@/components/ui/card' import { Pager } from '@/components/Pager' const statusMap: Record = { pending: { label: '待审核', variant: 'warning' }, published: { label: '正常', variant: 'success' }, rejected: { label: '已打回', variant: 'destructive' }, deleted: { label: '已删除', variant: 'destructive' }, } const FILTERS = [ { label: '待审核', status: 'pending' }, { label: '正常', status: 'published' }, { label: '全部', status: '' }, ] function isUrl(s: string) { return typeof s === 'string' && s.indexOf('http') === 0 } export default function Comments() { const [status, setStatus] = useState('pending') const { page, setPage, data, totalPages, reload } = usePaged(api.comments, { status }) async function setStat(id: number, s: string) { await api.setCommentStatus(id, s) reload() } async function del(id: number) { await api.deleteComment(id) reload() } return (

评论审核

{FILTERS.map((f) => ( ))}
作者 内容 配图 帖子 状态 操作 {data?.list?.map((c) => { const imgs: string[] = Array.isArray(c.images) ? c.images.filter(isUrl) : [] return ( {c.author_name}
{c.content || '—'}
{imgs.length ? (
{imgs.map((u, i) => ( ))}
) : ( )}
{c.post_id} {statusMap[c.status]?.label ?? c.status} {c.status !== 'published' && c.status !== 'deleted' && ( )} {c.status !== 'deleted' && ( )}
) })} {!data?.list?.length && ( 这个状态下暂无评论 )}
) }