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,6 +22,26 @@ 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);
const [init, setInit] = useState<boolean>(false);
useEffect(() => {
if (pathname) {
if (pathname === "/login") {
setShowNoHeader(true);
setShowHeader(false);
setShowFooter(false);
} else if (!params.hourId) {
setShowNoHeader(false);
setShowHeader(true);
setShowFooter(true);
} else {
setShowNoHeader(false);
setShowHeader(false);
setShowFooter(false);
}
}
}, [pathname, params]);
useEffect(() => {
if (props.loginData) { if (props.loginData) {
dispatch(loginAction(props.loginData)); dispatch(loginAction(props.loginData));
} }
@ -53,34 +73,19 @@ export const InitPage = (props: Props) => {
}; };
dispatch(saveConfigAction(config)); dispatch(saveConfigAction(config));
} }
setInit(true);
useEffect(() => { }, [props]);
setShowHeader(true);
setShowNoHeader(false);
setShowFooter(true);
if (pathname === "/login") {
setShowNoHeader(true);
setShowHeader(false);
setShowFooter(false);
} else if (!params.hourId) {
setShowNoHeader(false);
setShowHeader(true);
setShowFooter(true);
} else {
setShowNoHeader(false);
setShowHeader(false);
setShowFooter(false);
}
}, [pathname, params]);
return ( return (
<> <>
{init && (
<div> <div>
{showNoHeader && <NoHeader></NoHeader>} {showNoHeader && <NoHeader></NoHeader>}
{showHeader && <Header></Header>} {showHeader && <Header></Header>}
<Outlet /> <Outlet />
{showFooter && <Footer></Footer>} {showFooter && <Footer></Footer>}
</div> </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}