2025-02-23 22:51:22 +08:00
|
|
|
import { Course } from "@nice/common";
|
|
|
|
import React, { useContext } from "react";
|
|
|
|
import { Typography, Skeleton } from "antd"; // 引入 antd 组件
|
|
|
|
import { CourseDetailContext } from "./CourseDetailContext";
|
2025-02-24 09:33:03 +08:00
|
|
|
import { CalendarOutlined, EyeOutlined } from "@ant-design/icons";
|
|
|
|
import dayjs from "dayjs";
|
2025-02-23 22:51:22 +08:00
|
|
|
|
|
|
|
interface CourseDetailProps {
|
|
|
|
course: Course;
|
|
|
|
isLoading: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const CourseDetailDescription: React.FC<CourseDetailProps> = () => {
|
|
|
|
const { course, isLoading } = useContext(CourseDetailContext);
|
|
|
|
const { Paragraph, Title } = Typography;
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div className="w-full bg-white shadow-md rounded-lg border border-gray-200 p-6">
|
|
|
|
{isLoading || !course ? (
|
|
|
|
<Skeleton active paragraph={{ rows: 4 }} />
|
|
|
|
) : (
|
|
|
|
<div className="space-y-4">
|
2025-02-24 09:33:03 +08:00
|
|
|
<div className="text-lg font-bold">{"课程简介:"}</div>
|
|
|
|
<div className="text-gray-600 flex justify-start gap-4">
|
|
|
|
<div>{course?.subTitle}</div>
|
|
|
|
<div className="flex gap-1">
|
|
|
|
<EyeOutlined></EyeOutlined>
|
|
|
|
<div>{course?.meta?.views}</div>
|
|
|
|
</div>
|
|
|
|
<div className="flex gap-1">
|
|
|
|
<CalendarOutlined></CalendarOutlined>
|
|
|
|
{dayjs(course?.createdAt).format("YYYY年M月D日")}
|
|
|
|
</div>
|
|
|
|
</div>
|
2025-02-23 22:51:22 +08:00
|
|
|
<Paragraph
|
2025-02-24 09:33:03 +08:00
|
|
|
className="text-gray-600"
|
2025-02-23 22:51:22 +08:00
|
|
|
ellipsis={{
|
|
|
|
rows: 3,
|
|
|
|
expandable: true,
|
|
|
|
symbol: "展开",
|
|
|
|
onExpand: () => console.log("展开"),
|
|
|
|
// collapseText: "收起",
|
|
|
|
}}>
|
2025-02-24 09:33:03 +08:00
|
|
|
{course?.content}
|
2025-02-23 22:51:22 +08:00
|
|
|
</Paragraph>
|
|
|
|
</div>
|
|
|
|
)}
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
};
|