"use client" import { useState, useEffect } from "react" import { ChevronLeft, Search, Filter, RefreshCw } from "lucide-react" import { Card } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Avatar } from "@/components/ui/avatar" import { useRouter, useParams } from "next/navigation" import { Skeleton } from "@/components/ui/skeleton" import { format } from "date-fns" import { Badge } from "@/components/ui/badge" import { Separator } from "@/components/ui/separator" import Image from "next/image" import { cn } from "@/lib/utils" import { api } from "@/lib/api" import { showToast } from "@/lib/toast" // API响应数据接口 interface LikeRecord { id: number workbenchId: number momentsId: number snsId: string wechatAccountId: number wechatFriendId: number likeTime: string content: string resUrls: string[] momentTime: string userName: string operatorName: string operatorAvatar: string friendName: string friendAvatar: string } interface LikeRecordsResponse { code: number msg: string data: { list: LikeRecord[] total: number } } export default function LikeRecordsPage() { const router = useRouter() const params = useParams<{ id: string }>() const workbenchId = params?.id || "" const [loading, setLoading] = useState(false) const [searchTerm, setSearchTerm] = useState("") const [records, setRecords] = useState([]) const [currentPage, setCurrentPage] = useState(1) const [total, setTotal] = useState(0) const pageSize = 10 // 加载点赞记录数据 const fetchRecords = async (page: number, searchTerm?: string) => { if (!workbenchId) { showToast("任务ID无效", "error") return } const loadingToast = showToast("正在加载点赞记录...", "loading", true); try { setLoading(true) const queryParams = new URLSearchParams({ workbenchId: workbenchId, page: page.toString(), limit: pageSize.toString() }) if (searchTerm) { queryParams.append('keyword', searchTerm) } const response = await api.get(`/v1/workbench/like-records?${queryParams.toString()}`) if (response.code === 200) { setRecords(response.data.list) setTotal(response.data.total) } else { showToast(response.msg || "获取点赞记录失败", "error") } } catch (error: any) { console.error("获取点赞记录失败:", error) showToast(error?.message || "请检查网络连接", "error") } finally { loadingToast.remove(); setLoading(false) } } useEffect(() => { if (workbenchId) { fetchRecords(currentPage, searchTerm) } }, [currentPage, workbenchId]) const handleSearch = () => { setCurrentPage(1) fetchRecords(1, searchTerm) } const handleRefresh = () => { fetchRecords(currentPage, searchTerm) } return (

点赞记录

setSearchTerm(e.target.value)} onKeyDown={(e) => e.key === 'Enter' && handleSearch()} />
{loading ? ( // 加载状态
{Array.from({ length: 3 }).map((_, index) => (
))}
) : ( // 记录列表
{records.length === 0 ? ( 暂无点赞记录 ) : ( records.map(record => (
{record.friendName}
{record.friendName}
内容发布者
{format(new Date(record.momentTime || record.likeTime), 'yyyy-MM-dd HH:mm')}
{record.content && (

{record.content}

)} {record.resUrls && record.resUrls.length > 0 && (
{record.resUrls.slice(0, 9).map((image, idx) => (
{`内容图片
))}
)}
{record.operatorName}
{record.operatorName} 点赞了这条内容
)) )}
)} {!loading && total > pageSize && (
第 {currentPage} 页,共 {Math.ceil(total / pageSize)} 页
)}
) }