| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- import "antd/dist/reset.css"
- import MainTitle from "@/components/MainTitle";
- import Image from "next/image";
- import PaginationClient from "@/components/PaginationClient";
- import {serverGet} from "@/utils/request";
- import AnimatedSection from "@/components/AnimatedSection";
- import News from "@/components/news/NewsList";
- // 调整NewsUpdates类型,对齐Article的结构
- interface NewsUpdates {
- id: string;
- newsUrl: string;
- newsName: string;
- newsDesc: string;
- newsAuthor?: string; // 可选字段
- content: string;
- newsCategory: string; // 补充分类字段(原逻辑依赖)
- }
- const getNewsList = async (pageNum: number, pageSize: number) => {
- return serverGet<Page<NewsUpdates>>("/webSite/getNewsUpdatesListWithoutSpecialNews", {
- pageNum,
- pageSize
- }, {
- next: {
- revalidate: 180
- },
- cache: "force-cache"
- })
- }
- const getSpecialNews = async () => {
- return serverGet<Page<NewsUpdates>>("/webSite/getSpecialNewsUpdatesList", {
- pageNum: 1,
- pageSize: 1
- }, {
- next: {
- revalidate: 180
- },
- cache: "force-cache"
- })
- }
- export default async function NewsPage({
- searchParams,
- }: {
- searchParams: Promise<{ page?: string }>
- }) {
- const BASE_URL = process.env.NEXT_PUBLIC_BASE_URL;
- // 等待 searchParams 解析
- const params = await searchParams
- const pageNum = Number.parseInt(params.page || "1", 10)
- const pageSize = 6
- const newsListRes = await getNewsList(pageNum, pageSize)
- const specialNewsRes = await getSpecialNews()
- const specialNews = specialNewsRes.data.records[0]
- const newsList = newsListRes.data.records
- const totalNews = newsListRes.data.total
- return (
- <>
- <AnimatedSection effect="slide" direction="left">
- <div className="w-full h-full flex items-center justify-center text-white text-4xl font-bold">
- <Image src={"/assets/news/1.png"} alt={"banner"} width={1920} height={1080}/>
- </div>
- </AnimatedSection>
- <div className="py-6 sm:py-10">
- <MainTitle title={"新闻动态"} titleLetter={"NEWS_DYNAMIC"}/>
- </div>
- <News newsList={newsList}></News>
- {/*<AnimatedSection effect="slide" direction="right">*/}
- {/* /!*<div className="container sm:max-w-7/12 mx-auto p-4 space-y-6">*!/*/}
- {/* <div className="sm:max-w-7/12 mx-auto p-4 space-y-6">*/}
- {/* /!* 顶部大新闻 *!/*/}
- {/* <div className="bg-white rounded-2xl p-6">*/}
- {/* <div className="flex flex-col sm:flex-row gap-6">*/}
- {/* /!* 模拟图片色块 *!/*/}
- {/* <div*/}
- {/* className="w-full sm:w-1/3 bg-gray-300 rounded-lg sm:h-auto flex items-center justify-center">*/}
- {/* <Image src={specialNews?.newsUrl ? BASE_URL + specialNews?.newsUrl : ""}*/}
- {/* alt={"特别新闻图片"}*/}
- {/* width={300} height={300}/>*/}
- {/* </div>*/}
- {/* /!* 右侧文字 *!/*/}
- {/* <div className="flex-1 flex flex-col justify-between">*/}
- {/* <div>*/}
- {/* <h2 className="text-lg sm:text-xl font-bold mb-2">{specialNews?.newsName}</h2>*/}
- {/* <p className="text-gray-500 text-xs sm:text-sm mb-4">{specialNews?.releaseTime}</p>*/}
- {/* <p className="text-gray-700 text-sm sm:text-base leading-relaxed line-clamp-7">*/}
- {/* {removeHTMLTags(specialNews?.newsDetails || "")}*/}
- {/* </p>*/}
- {/* </div>*/}
- {/* <Link href={`/news/${specialNews?.id}`}*/}
- {/* className="text-blue-500 hover:underline mt-4 self-start text-sm sm:text-base">*/}
- {/* 了解更多 >*/}
- {/* </Link>*/}
- {/* </div>*/}
- {/* </div>*/}
- {/* </div>*/}
- {/* /!* 下方小新闻卡片 *!/*/}
- {/* <div className="grid sm:grid-cols-2 gap-4">*/}
- {/* {newsList.map((item) => (*/}
- {/* <div*/}
- {/* key={item.id}*/}
- {/* className="bg-white rounded-2xl shadow p-4 flex flex-col justify-between"*/}
- {/* >*/}
- {/* <div>*/}
- {/* <h3 className="text-sm sm:text-base font-semibold mb-2">{item.newsName}</h3>*/}
- {/* <p className="text-gray-500 text-xs sm:text-sm">{item.releaseTime}</p>*/}
- {/* </div>*/}
- {/* <Link href={`/news/${item.id}`}*/}
- {/* className="text-blue-500 hover:underline mt-2 self-end text-xs sm:text-sm">*/}
- {/* 了解更多 >*/}
- {/* </Link>*/}
- {/* </div>*/}
- {/* ))}*/}
- {/* </div>*/}
- {/* /!* 分页器 *!/*/}
- <div className="flex justify-center mt-6">
- <PaginationClient
- current={pageNum}
- total={totalNews}
- pageSize={pageSize}
- />
- </div>
- {/* </div>*/}
- {/*</AnimatedSection>*/}
- </>
- )
- }
|