From 0b567866e021731003be193de353096cded6fe56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com> Date: Tue, 28 Mar 2023 12:11:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=86=E9=A2=91=E6=92=AD=E6=94=BE=E4=B8=8B?= =?UTF-8?q?=E4=B8=80=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/images/commen/empty.png | Bin 6199 -> 12519 bytes src/pages/course/compenents/hour.tsx | 42 ++++++++++++++++-- src/pages/course/compenents/video.module.scss | 29 ++++++++++++ src/pages/course/compenents/video.tsx | 39 +++++++++++++--- src/pages/course/index.tsx | 20 +++++++-- 5 files changed, 118 insertions(+), 12 deletions(-) diff --git a/src/assets/images/commen/empty.png b/src/assets/images/commen/empty.png index 5e867fa295d6212b8ac667d893c78eb39edf0d92..dec7185b12e174f1a77b87c5c5271d607afed658 100644 GIT binary patch literal 12519 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 void; } @@ -21,21 +22,56 @@ export const HourCompenent: React.FC = ({ duration, record, progress, + totalHours, onChange, }) => { // const navigate = useNavigate(); const [visible, setVisible] = useState(false); + const [currentId, setCurrentId] = useState(id); + const [currentTitle, setCurrentTitle] = useState(title); + const [isLastpage, setIsLastpage] = useState(false); + + useEffect(() => { + getData(); + }, [totalHours]); + + const getData = () => { + const index = totalHours.findIndex((i: any) => i.id === id); + if (index === totalHours.length - 1) { + setIsLastpage(true); + } + }; + + const goNextVideo = () => { + const index = totalHours.findIndex((i: any) => i.id === id); + if (index === totalHours.length - 1) { + setIsLastpage(true); + } else if (index < totalHours.length - 1) { + setCurrentId(totalHours[index + 1].id); + setCurrentTitle(totalHours[index + 1].title); + if (index + 1 === totalHours.length - 1) { + setIsLastpage(true); + } + } + setVisible(true); + }; + return (
{ setVisible(false); onChange(); }} + goNextVideo={() => { + setVisible(false); + goNextVideo(); + }} >
diff --git a/src/pages/course/compenents/video.module.scss b/src/pages/course/compenents/video.module.scss index 0ab4fce..9c2f13c 100644 --- a/src/pages/course/compenents/video.module.scss +++ b/src/pages/course/compenents/video.module.scss @@ -70,6 +70,35 @@ background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%); background-size: 400% 100%; animation: el-skeleton-loading 1.4s ease infinite; + position: relative; + .alert-message { + width: 100%; + height: 100%; + background: rgba(0, 0, 0); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: 18px; + color: white; + .alert-button { + width: 200px; + height: 54px; + background: #ff4d4f; + border-radius: 27px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + margin-bottom: 30px; + &:hover { + opacity: 0.8; + } + &:last-child { + margin-bottom: 0px; + } + } + } } } } diff --git a/src/pages/course/compenents/video.tsx b/src/pages/course/compenents/video.tsx index 611e58f..64cd080 100644 --- a/src/pages/course/compenents/video.tsx +++ b/src/pages/course/compenents/video.tsx @@ -2,6 +2,7 @@ import React, { useState, useRef, useEffect } from "react"; import styles from "./video.module.scss"; import { course } from "../../../api/index"; import { ArrowLeftOutlined } from "@ant-design/icons"; +import { useSelector } from "react-redux"; declare const window: any; @@ -10,7 +11,9 @@ interface PropInterface { cid: number; title: string; open: boolean; + isLastpage: boolean; onCancel: () => void; + goNextVideo: () => void; } export const VideoModel: React.FC = ({ @@ -18,11 +21,14 @@ export const VideoModel: React.FC = ({ cid, title, open, + isLastpage, onCancel, + goNextVideo, }) => { + const systemConfig = useSelector((state: any) => state.systemConfig.value); const [playUrl, setPlayUrl] = useState(""); const [playDuration, setPlayDuration] = useState(0); - const [playendedStatus,setPlayendedStatus]= useState(false); + const [playendedStatus, setPlayendedStatus] = useState(false); const myRef = useRef(0); useEffect(() => { @@ -48,14 +54,15 @@ export const VideoModel: React.FC = ({ autoplay: false, video: { url: playUrl, + pic: systemConfig.playerPoster, }, try: isTrySee === 1, bulletSecret: { - enabled: false, - text: "18119604035", + enabled: systemConfig.playerIsEnabledBulletSecret, + text: systemConfig.playerBulletSecretText, size: "15px", - color: "red", - opacity: 0.8, + color: systemConfig.playerBulletSecretColor || "red", + opacity: Number(systemConfig.playerBulletSecretOpacity), }, ban_drag: false, last_see_pos: 0, @@ -66,8 +73,9 @@ export const VideoModel: React.FC = ({ playTimeUpdate(parseInt(window.player.video.currentTime), false); }); window.player.on("ended", () => { + setPlayendedStatus(true); playTimeUpdate(parseInt(window.player.video.currentTime), true); - window.player.destroy(); + window.player && window.player.destroy(); }); }; @@ -101,6 +109,25 @@ export const VideoModel: React.FC = ({
{title}
+ {playendedStatus && ( +
+ {isLastpage && ( +
+ 恭喜你学完最后一节 +
+ )} + {!isLastpage && ( +
{ + setPlayendedStatus(false); + goNextVideo()}} + > + 播放下一节 +
+ )} +
+ )}
diff --git a/src/pages/course/index.tsx b/src/pages/course/index.tsx index 3dec3f7..8c9951b 100644 --- a/src/pages/course/index.tsx +++ b/src/pages/course/index.tsx @@ -15,6 +15,7 @@ const CoursePage = () => { const [hours, setHours] = useState({}); const [learnRecord, setLearnRecord] = useState({}); const [learnHourRecord, setLearnHourRecord] = useState({}); + const [totalHours, setTotalHours] = useState([]); useEffect(() => { getDetail(); @@ -32,6 +33,15 @@ const CoursePage = () => { if (res.data.learn_hour_records) { setLearnHourRecord(res.data.learn_hour_records); } + if (res.data.chapters.length === 0) { + setTotalHours(res.data.hours[0]); + } else if (res.data.chapters.length > 0) { + const arr: any = []; + chapters.map((item: any) => { + arr.concat(res.data.hours[item.id]); + }); + setTotalHours(arr); + } setLoading(false); }); }; @@ -116,7 +126,7 @@ const CoursePage = () => { {chapters.length === 0 && JSON.stringify(hours) === "{}" && } {chapters.length === 0 && JSON.stringify(hours) !== "{}" && (
- {hours[0].map((item: any) => ( + {hours[0].map((item: any, index: number) => (
{learnHourRecord[item.id] && ( { (learnHourRecord[item.id].finished_duration * 100) / learnHourRecord[item.id].total_duration } + totalHours={totalHours} onChange={() => getDetail()} > )} @@ -140,6 +151,7 @@ const CoursePage = () => { record={null} duration={item.duration} progress={0} + totalHours={totalHours} onChange={() => getDetail()} > )} @@ -149,10 +161,10 @@ const CoursePage = () => { )} {chapters.length > 0 && JSON.stringify(hours) !== "{}" && (
- {chapters.map((item: any) => ( + {chapters.map((item: any, index: number) => (
{item.name}
- {hours[item.id].map((it: any) => ( + {hours[item.id].map((it: any, int: number) => (
{learnHourRecord[it.id] && ( { learnHourRecord[it.id].total_duration } onChange={() => getDetail()} + totalHours={totalHours} > )} {!learnHourRecord[it.id] && ( @@ -176,6 +189,7 @@ const CoursePage = () => { record={null} duration={it.duration} progress={0} + totalHours={totalHours} onChange={() => getDetail()} > )}