import { useEffect, useState } from "react"; import { Image, ProgressCircle } from "antd-mobile"; import styles from "./index.module.scss"; import { useNavigate, useParams } from "react-router-dom"; import backIcon from "../../assets/images/commen/icon-back-n.png"; import { course as vod } from "../../api/index"; import { isEmptyObject } from "../../utils/index"; import { Empty } from "../../components"; import { HourCompenent } from "./compenents/hour"; type LocalUserLearnHourRecordModel = { [key: number]: UserLearnHourRecordModel; }; type LocalCourseHour = { [key: number]: CourseHourModel[]; }; const CoursePage = () => { const { courseId } = useParams(); const navigate = useNavigate(); const [course, setCourse] = useState(null); const [chapters, setChapters] = useState([]); const [hours, setHours] = useState(null); const [learnRecord, setLearnRecord] = useState( null ); const [learnHourRecord, setLearnHourRecord] = useState({}); const [courseTypeText, setCourseTypeText] = useState(""); const [userCourseProgress, setUserCourseProgress] = useState(0); useEffect(() => { if (courseId) { getDetail(Number(courseId)); } }, [courseId]); const getDetail = (cid: number) => { vod.detail(cid).then((res: any) => { let courseItem: CourseModel = res.data.course; document.title = courseItem.title || "课程详情"; setCourse(courseItem); setChapters(res.data.chapters); setHours(res.data.hours); if (res.data.learn_record) { setLearnRecord(res.data.learn_record); } if (res.data.learn_hour_records) { setLearnHourRecord(res.data.learn_hour_records); } }); }; useEffect(() => { if (course) { setCourseTypeText(course.is_required === 1 ? "必修课" : "选修课"); } }, [course]); useEffect(() => { if (learnRecord?.progress) { setUserCourseProgress(Math.floor(learnRecord.progress / 100)); } else if (learnHourRecord && !isEmptyObject(learnHourRecord)) { setUserCourseProgress(1); } else { setUserCourseProgress(0); } }, [learnRecord, learnHourRecord]); const playVideo = (cid: number, id: number) => { navigate(`/course/${cid}/hour/${id}`); }; return (
navigate(-1)} />
{course?.title + ""}
已学完课时{" "} {learnRecord ? learnRecord.finished_count || 0 : 0} {" "} / {course?.class_hour}
{courseTypeText}
{userCourseProgress}%
{course?.short_desc && ( <>
{course.short_desc}
)}
{chapters.length === 0 && !hours && } {chapters.length === 0 && hours && (
{hours[0].map((item: CourseHourModel) => (
{ playVideo(cid, id); }} >
))}
)} {chapters.length > 0 && hours && (
{chapters.map((item: ChapterModel) => (
{item.name}
{hours[item.id]?.map((it: CourseHourModel) => (
{ playVideo(cid, id); }} >
))}
))}
)}
); }; export default CoursePage;