training_data/apps/web/src/components/models/course/detail/CourseDetailDescription.tsx

51 lines
1.5 KiB
TypeScript
Raw Normal View History

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>
);
};