|
@@ -1,57 +1,83 @@
|
|
|
-import React, { useMemo, useState } from "react";
|
|
|
+import React, { useCallback, useRef, useState } from "react";
|
|
|
import styles from "./index.module.scss";
|
|
|
-import { envDataSonType, envUrl } from "@/utils/env";
|
|
|
-import classNames from "classnames";
|
|
|
+import { envDataSonType } from "@/utils/env";
|
|
|
+// import classNames from "classnames";
|
|
|
+
|
|
|
+import { CaretRightOutlined } from "@ant-design/icons";
|
|
|
|
|
|
type Props = {
|
|
|
data: envDataSonType[];
|
|
|
};
|
|
|
|
|
|
-interface IMenu extends envDataSonType {
|
|
|
- img: string;
|
|
|
-}
|
|
|
+// interface IMenu extends envDataSonType {
|
|
|
+// img: string;
|
|
|
+// }
|
|
|
|
|
|
function Tab1({ data }: Props) {
|
|
|
// 当前选中状态
|
|
|
- const [isAc, setIsAc] = useState(1);
|
|
|
+ const [isAc, setIsAc] = useState(0);
|
|
|
+
|
|
|
+ // const info = useMemo(() => {
|
|
|
+ // return data.find((v) => v.id === isAc) || ({} as envDataSonType);
|
|
|
+ // }, [data, isAc]);
|
|
|
+
|
|
|
+ // 视频点击播放
|
|
|
+ const videoRef = useRef<HTMLVideoElement>(null);
|
|
|
+
|
|
|
+ const videoPlayFu = useCallback(
|
|
|
+ (id: number) => {
|
|
|
+ if (isAc === id) return;
|
|
|
+
|
|
|
+ setIsAc(id);
|
|
|
|
|
|
- const info = useMemo(() => {
|
|
|
- return data.find((v) => v.id === isAc) || ({} as envDataSonType);
|
|
|
- }, [data, isAc]);
|
|
|
+ setTimeout(() => {
|
|
|
+ const dom = videoRef.current;
|
|
|
+
|
|
|
+ if (dom) {
|
|
|
+ dom.requestFullscreen();
|
|
|
+ dom.play();
|
|
|
+ }
|
|
|
+ }, 100);
|
|
|
+ },
|
|
|
+ [isAc]
|
|
|
+ );
|
|
|
|
|
|
return (
|
|
|
<div className={styles.Tab1}>
|
|
|
<div className="Tab1main">
|
|
|
- {/* 左侧视频 */}
|
|
|
<div className="Tab1main1">
|
|
|
- <div className="t1Tit">{info.name}</div>
|
|
|
+ <div className="t1Tit">红色基因库系列视频</div>
|
|
|
<div className="videoBox">
|
|
|
- <video
|
|
|
- key={isAc}
|
|
|
- controls
|
|
|
- autoPlay
|
|
|
- src={`https://houseoss.4dkankan.com/project/ypzz/${info.id}.mp4`}
|
|
|
- ></video>
|
|
|
- </div>
|
|
|
+ {data.map((v) => (
|
|
|
+ <div
|
|
|
+ className="videoRow"
|
|
|
+ key={v.id}
|
|
|
+ title={v.name}
|
|
|
+ onClick={() => videoPlayFu(v.id)}
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ {isAc === v.id ? (
|
|
|
+ <video
|
|
|
+ ref={videoRef}
|
|
|
+ controls
|
|
|
+ src={`https://houseoss.4dkankan.com/project/ypzz/${v.id}.mp4`}
|
|
|
+ ></video>
|
|
|
+ ) : (
|
|
|
+ <img
|
|
|
+ src={`https://houseoss.4dkankan.com/project/ypzz/imgs/${v.id}-min.png`}
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ )}
|
|
|
|
|
|
- {/* <div
|
|
|
- className="t1Txt myscroll"
|
|
|
- dangerouslySetInnerHTML={{ __html: info.txt }}
|
|
|
- ></div> */}
|
|
|
- </div>
|
|
|
- {/* 右侧列表 */}
|
|
|
- <div className="Tab1main2 myscroll">
|
|
|
- {data.map((v) => (
|
|
|
- <div
|
|
|
- onClick={() => setIsAc(v.id)}
|
|
|
- key={v.id}
|
|
|
- title={v.name}
|
|
|
- className={classNames(isAc === v.id ? "rowAc" : "")}
|
|
|
- >
|
|
|
- <img src={`https://houseoss.4dkankan.com/project/ypzz/imgs/${v.id}-min.png`} alt="" />
|
|
|
- <div className="name">{v.name}</div>
|
|
|
- </div>
|
|
|
- ))}
|
|
|
+ {/* 阴影和播放按钮 */}
|
|
|
+ <div className="maskPlay" hidden={isAc === v.id}>
|
|
|
+ <CaretRightOutlined />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <p>{v.name}</p>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|