import type { Metadata } from 'next'; import { publicApi } from '@/lib/services'; import { NewsCard } from '@/components/front/NewsCard'; import type { NewsCategory } from '@/lib/types'; export const metadata: Metadata = { title: '新闻资讯', description: '公司动态与行业新闻。', }; export const revalidate = 60; interface PageProps { searchParams: { categoryId?: string; keyword?: string; page?: string }; } export default async function NewsPage({ searchParams }: PageProps) { const page = Number(searchParams.page ?? 1); const categoryId = searchParams.categoryId ? Number(searchParams.categoryId) : undefined; const [categories, newsRes] = await Promise.all([ publicApi.getNewsCategories().catch(() => [] as NewsCategory[]), publicApi .getNews({ page, pageSize: 10, categoryId, keyword: searchParams.keyword }) .catch(() => ({ list: [], total: 0, page, pageSize: 10 })), ]); return (

新闻资讯

共 {newsRes.total} 条

全部 {categories.map((c) => ( {c.name} ))}
{newsRes.list.map((n) => ( ))}
{newsRes.list.length === 0 && (
暂无新闻
)} {newsRes.total > 10 && (
), page: String(Math.max(1, page - 1)), }).toString()}`} className={`rounded border px-3 py-1 text-sm ${ page <= 1 ? 'pointer-events-none opacity-50' : 'hover:bg-gray-50' }`} > 上一页 {page} / {Math.ceil(newsRes.total / 10)} ), page: String(page + 1), }).toString()}`} className="rounded border px-3 py-1 text-sm hover:bg-gray-50" > 下一页
)}
); }