import React, { useState, useEffect } from "react"; import { useLocation } from "react-router-dom"; import { mockData } from "@/data/mockData"; import VideoPlayer from "@/components/VideoPlayer"; import CourseList from "./components/CourseList"; import LiveInfo from "./components/LiveInfo"; import StageProgress from "@/components/StageProgress"; import "./index.css"; const LivePage = () => { // 从mockData获取数据 const { courseUnits, currentLive, liveConfig } = mockData; const location = useLocation(); // 状态管理 const [currentCourse, setCurrentCourse] = useState(currentLive); const [isFullscreen, setIsFullscreen] = useState(false); // 处理从Dashboard传递的课程参数 useEffect(() => { if (location.state?.courseId) { // 在courseUnits中查找对应的课程 let targetCourse = null; for (const unit of courseUnits) { const foundCourse = unit.courses.find( (course) => course.id === location.state.courseId ); if (foundCourse) { targetCourse = foundCourse; break; } } if (targetCourse) { // 创建新的直播信息对象 const newLiveInfo = { courseId: targetCourse.id, title: targetCourse.title, teacher: targetCourse.teacher, startTime: targetCourse.startTime, endTime: targetCourse.endTime, viewers: targetCourse.viewCount, description: targetCourse.description, status: targetCourse.status, duration: "1小时30分钟", }; setCurrentCourse(newLiveInfo); } else { // No course found } } }, [location.state, courseUnits]); // 处理课程选择 const handleCourseSelect = (course) => { // 创建新的直播信息对象,包含完整的课程信息 const newLiveInfo = { courseId: course.id, title: course.title, teacher: course.teacher, startTime: course.startTime || `${course.date.replace(/\./g, "-")} ${course.time.split("-")[0]}`, endTime: course.endTime, viewers: course.viewCount, description: course.description, status: course.status, duration: "1小时30分钟", }; setCurrentCourse(newLiveInfo); }; // 处理全屏状态变化 const handleFullscreenChange = (fullscreen) => { setIsFullscreen(fullscreen); }; // 处理回放请求 const handleReplayRequest = () => { if (currentCourse) { // 创建回放状态的课程信息 const replayLiveInfo = { ...currentCourse, status: "replay", }; setCurrentCourse(replayLiveInfo); } }; return (
{/* 学习阶段进度条 - 与首页保持一致(仅非全屏时显示,不显示阻塞警示) */} {!isFullscreen && } {/* 直播主要内容区域 */}
{/* 左侧区域:视频 + 老师信息 */}
{/* 视频区域 */}
{/* 视频标题栏 */}

{currentCourse?.title || "课程直播间"}

{liveConfig?.statusTypes?.[currentCourse?.status]?.name || "离线"}
{currentCourse?.viewers > 0 && (
👁 {currentCourse.viewers}人观看
)}
{/* 视频播放器容器 */}
{/* 老师信息区域(仅非全屏时显示) */} {!isFullscreen && (
)}
{/* 右侧区域:课程列表(仅非全屏时显示) */} {!isFullscreen && (
)}
); }; export default LivePage;