'use client';
import { useState } from 'react';
import { useQuery } from '@tanstack/react-query';
import {
Calendar,
BookOpen,
Search,
CheckCircle,
Clock,
AlertTriangle
} from 'lucide-react';
// Mock data - replace with actual API
async function fetchBorrowHistory() {
return {
success: true,
data: [
{
borrowId: 1,
book: {
title: '深入理解计算机系统',
authors: ['Randal E. Bryant'],
isbn: '9787111544937'
},
borrowDate: '2024-12-01',
dueDate: '2024-12-31',
returnDate: '2024-12-28',
renewTimes: 1,
status: 'returned',
fineAmount: '0'
},
{
borrowId: 2,
book: {
title: 'Python编程实战',
authors: ['Mark Lutz'],
isbn: '9787111627295'
},
borrowDate: '2025-01-05',
dueDate: '2025-02-04',
returnDate: null,
renewTimes: 1,
status: 'borrowed',
fineAmount: '0'
},
{
borrowId: 3,
book: {
title: '数据结构与算法',
authors: ['Thomas H. Cormen'],
isbn: '9787111407010'
},
borrowDate: '2024-11-15',
dueDate: '2024-12-15',
returnDate: '2024-12-20',
renewTimes: 0,
status: 'returned',
fineAmount: '5.00'
}
]
};
}
export default function StudentHistoryPage() {
const [statusFilter, setStatusFilter] = useState('');
const [searchTerm, setSearchTerm] = useState('');
const { data, isLoading, error } = useQuery({
queryKey: ['student-history', statusFilter, searchTerm],
queryFn: fetchBorrowHistory,
});
const getStatusBadge = (status: string, dueDate: string, returnDate: string | null) => {
if (status === 'returned') {
const wasOverdue = returnDate && new Date(returnDate) > new Date(dueDate);
return (
查看您的借阅记录和归还历史
总借阅次数
{data?.data?.length || 0}
当前借阅
{data?.data?.filter((r: any) => r.status === 'borrowed').length || 0}
已归还
{data?.data?.filter((r: any) => r.status === 'returned').length || 0}
逾期次数
{data?.data?.filter((r: any) => (r.status === 'returned' && r.returnDate && new Date(r.returnDate) > new Date(r.dueDate)) || (r.status === 'borrowed' && new Date(r.dueDate) < new Date()) ).length || 0}
加载中...
加载失败,请重试
作者: {record.book.authors.join(', ')}
ISBN: {record.book.isbn}
{data?.data?.length === 0 ? '暂无借阅记录' : '没有找到符合条件的记录'}