Merge pull request #6 from PlayEdu/dev

Dev
This commit is contained in:
Teng 2023-06-13 14:12:13 +08:00 committed by GitHub
commit 25bb64a835
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 86 additions and 56 deletions

View File

@ -1,6 +1,6 @@
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
import styles from "./index.module.scss"; import styles from "./index.module.scss";
import { Modal, Button, Dropdown } from "antd"; import { Modal, Button, Dropdown, Image } from "antd";
import type { MenuProps } from "antd"; import type { MenuProps } from "antd";
import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
import { Link, useNavigate, useLocation } from "react-router-dom"; import { Link, useNavigate, useLocation } from "react-router-dom";
@ -217,9 +217,11 @@ export const Header: React.FC = () => {
<div className="d-flex" style={{ cursor: "pointer" }}> <div className="d-flex" style={{ cursor: "pointer" }}>
{user && user.name && ( {user && user.name && (
<> <>
<img <Image
loading="lazy"
style={{ width: 36, height: 36, borderRadius: "50%" }} style={{ width: 36, height: 36, borderRadius: "50%" }}
src={user.avatar} src={user.avatar}
preview={false}
/> />
<span className="ml-8 c-admin">{user.name}</span> <span className="ml-8 c-admin">{user.name}</span>
</> </>

View File

@ -101,6 +101,7 @@ export const UserInfoModel: React.FC<PropInterface> = ({ open, onCancel }) => {
<div className="d-flex"> <div className="d-flex">
{avatar && ( {avatar && (
<Image <Image
loading="lazy"
width={60} width={60}
height={60} height={60}
style={{ borderRadius: "50%" }} style={{ borderRadius: "50%" }}

View File

@ -181,6 +181,7 @@ const CoursePalyPage = () => {
setPlayingTime(0); setPlayingTime(0);
setPlayendedStatus(true); setPlayendedStatus(true);
playTimeUpdate(parseInt(window.player.video.currentTime), true); playTimeUpdate(parseInt(window.player.video.currentTime), true);
exitFullscreen();
window.player && window.player.destroy(); window.player && window.player.destroy();
}); });
setLoading(false); setLoading(false);
@ -214,6 +215,18 @@ const CoursePalyPage = () => {
} }
}; };
const exitFullscreen = () => {
let de: any;
de = document;
if (de.fullscreenElement !== null) {
de.exitFullscreen();
} else if (de.mozCancelFullScreen) {
de.mozCancelFullScreen();
} else if (de.webkitCancelFullScreen) {
de.webkitCancelFullScreen();
}
};
return ( return (
<div className={styles["video-mask"]}> <div className={styles["video-mask"]}>
<div className={styles["top-cont"]}> <div className={styles["top-cont"]}>

View File

@ -29,6 +29,7 @@ export const CoursesModel: React.FC<PropInterface> = ({
> >
<div className={styles["top-content"]}> <div className={styles["top-content"]}>
<Image <Image
loading="lazy"
width={120} width={120}
height={90} height={90}
style={{ borderRadius: 10 }} style={{ borderRadius: 10 }}
@ -65,7 +66,13 @@ export const CoursesModel: React.FC<PropInterface> = ({
)} )}
{progress >= 100 && ( {progress >= 100 && (
<div className={styles["success"]}> <div className={styles["success"]}>
<Image width={24} height={24} src={mediaIcon} preview={false} /> <Image
loading="lazy"
width={24}
height={24}
src={mediaIcon}
preview={false}
/>
<span className="ml-8">!</span> <span className="ml-8">!</span>
</div> </div>
)} )}

View File

@ -22,65 +22,70 @@ export const InitPage = (props: Props) => {
const [showHeader, setShowHeader] = useState<boolean>(true); const [showHeader, setShowHeader] = useState<boolean>(true);
const [showNoHeader, setShowNoHeader] = useState<boolean>(false); const [showNoHeader, setShowNoHeader] = useState<boolean>(false);
const [showFooter, setShowFooter] = useState<boolean>(true); const [showFooter, setShowFooter] = useState<boolean>(true);
if (props.loginData) { const [init, setInit] = useState<boolean>(false);
dispatch(loginAction(props.loginData));
}
if (props.configData) {
let config: SystemConfigStoreInterface = {
//系统配置
systemApiUrl: props.configData["system-api-url"],
systemH5Url: props.configData["system-h5-url"],
systemLogo: props.configData["system-logo"],
systemName: props.configData["system-name"],
systemPcUrl: props.configData["system-pc-url"],
pcIndexFooterMsg: props.configData["system-pc-index-footer-msg"],
//播放器配置
playerPoster: props.configData["player-poster"],
playerIsEnabledBulletSecret:
props.configData["player-is-enabled-bullet-secret"] &&
props.configData["player-is-enabled-bullet-secret"] === "1"
? true
: false,
playerIsDisabledDrag:
props.configData["player-disabled-drag"] &&
props.configData["player-disabled-drag"] === "1"
? true
: false,
playerBulletSecretText: props.configData["player-bullet-secret-text"],
playerBulletSecretColor: props.configData["player-bullet-secret-color"],
playerBulletSecretOpacity:
props.configData["player-bullet-secret-opacity"],
};
dispatch(saveConfigAction(config));
}
useEffect(() => { useEffect(() => {
setShowHeader(true); if (pathname) {
setShowNoHeader(false); if (pathname === "/login") {
setShowFooter(true); setShowNoHeader(true);
if (pathname === "/login") { setShowHeader(false);
setShowNoHeader(true); setShowFooter(false);
setShowHeader(false); } else if (!params.hourId) {
setShowFooter(false); setShowNoHeader(false);
} else if (!params.hourId) { setShowHeader(true);
setShowNoHeader(false); setShowFooter(true);
setShowHeader(true); } else {
setShowFooter(true); setShowNoHeader(false);
} else { setShowHeader(false);
setShowNoHeader(false); setShowFooter(false);
setShowHeader(false); }
setShowFooter(false);
} }
}, [pathname, params]); }, [pathname, params]);
useEffect(() => {
if (props.loginData) {
dispatch(loginAction(props.loginData));
}
if (props.configData) {
let config: SystemConfigStoreInterface = {
//系统配置
systemApiUrl: props.configData["system-api-url"],
systemH5Url: props.configData["system-h5-url"],
systemLogo: props.configData["system-logo"],
systemName: props.configData["system-name"],
systemPcUrl: props.configData["system-pc-url"],
pcIndexFooterMsg: props.configData["system-pc-index-footer-msg"],
//播放器配置
playerPoster: props.configData["player-poster"],
playerIsEnabledBulletSecret:
props.configData["player-is-enabled-bullet-secret"] &&
props.configData["player-is-enabled-bullet-secret"] === "1"
? true
: false,
playerIsDisabledDrag:
props.configData["player-disabled-drag"] &&
props.configData["player-disabled-drag"] === "1"
? true
: false,
playerBulletSecretText: props.configData["player-bullet-secret-text"],
playerBulletSecretColor: props.configData["player-bullet-secret-color"],
playerBulletSecretOpacity:
props.configData["player-bullet-secret-opacity"],
};
dispatch(saveConfigAction(config));
}
setInit(true);
}, [props]);
return ( return (
<> <>
<div> {init && (
{showNoHeader && <NoHeader></NoHeader>} <div>
{showHeader && <Header></Header>} {showNoHeader && <NoHeader></NoHeader>}
<Outlet /> {showHeader && <Header></Header>}
{showFooter && <Footer></Footer>} <Outlet />
</div> {showFooter && <Footer></Footer>}
</div>
)}
</> </>
); );
}; };

View File

@ -56,6 +56,7 @@ const LatestLearnPage = () => {
> >
<div style={{ width: 120 }}> <div style={{ width: 120 }}>
<Image <Image
loading="lazy"
src={item.course.thumb} src={item.course.thumb}
width={120} width={120}
height={90} height={90}
@ -91,6 +92,7 @@ const LatestLearnPage = () => {
{item.record.progress >= 10000 && ( {item.record.progress >= 10000 && (
<> <>
<Image <Image
loading="lazy"
width={24} width={24}
height={24} height={24}
src={mediaIcon} src={mediaIcon}