|
@@ -1,12 +1,129 @@
|
|
|
-import React from "react";
|
|
|
+import React, { useCallback, useEffect, useState } from "react";
|
|
|
import styles from "./index.module.scss";
|
|
|
- function Tab1() {
|
|
|
-
|
|
|
+import classNames from "classnames";
|
|
|
+import { aIdObj } from "@/pages/A2Main";
|
|
|
+import { A2_APIsaveModulesVisit } from "@/store/action/A2Main";
|
|
|
+import { imgLodingFu } from "@/pages/A0Map/data";
|
|
|
+import { envUrl } from "@/utils/env";
|
|
|
+import ImgLoding from "@/components/ImgLoding";
|
|
|
+import { appTab1Loc1, appTab1Loc2 } from "./data";
|
|
|
+import ImgLook from "./ImgLook";
|
|
|
+import Scene from "./Scene";
|
|
|
+
|
|
|
+const btnObj = [
|
|
|
+ {
|
|
|
+ id: 2,
|
|
|
+ name: "展陈",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 3,
|
|
|
+ name: "旧址",
|
|
|
+ },
|
|
|
+];
|
|
|
+
|
|
|
+function Tab1() {
|
|
|
+ // 切换 展陈 和 旧址
|
|
|
+ const [acId, setAcId] = useState(2);
|
|
|
+
|
|
|
+ // 保存访问量
|
|
|
+ const saveModulesVisitFu = useCallback(async () => {
|
|
|
+ const key = Reflect.get(aIdObj, acId);
|
|
|
+ await A2_APIsaveModulesVisit(key);
|
|
|
+ }, [acId]);
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ saveModulesVisitFu();
|
|
|
+ }, [saveModulesVisitFu]);
|
|
|
+
|
|
|
+ // 点击进入 大点 里面的 图片查看页面
|
|
|
+ const [lookImgId, setLookImgId] = useState(0);
|
|
|
+
|
|
|
+ // 点击 小点 打开场景
|
|
|
+ const [code, setCode] = useState("");
|
|
|
+
|
|
|
return (
|
|
|
<div className={styles.Tab1}>
|
|
|
- <h1>Tab1</h1>
|
|
|
+ {/* 右下角的按钮 展陈 、 旧址*/}
|
|
|
+ <div className="tab1Btn">
|
|
|
+ {btnObj.map((v) => (
|
|
|
+ <div
|
|
|
+ key={v.id}
|
|
|
+ onClick={() => setAcId(v.id)}
|
|
|
+ className={classNames(
|
|
|
+ "tab1BtnRow",
|
|
|
+ acId === v.id ? "tab1BtnRowAc" : ""
|
|
|
+ )}
|
|
|
+ ></div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* 大图片加载中 */}
|
|
|
+ <ImgLoding id={1} />
|
|
|
+
|
|
|
+ {/* 大图盒子 */}
|
|
|
+ <div className="tab1ImgBox">
|
|
|
+ <div className="tab1ImgBoxSon">
|
|
|
+ <img
|
|
|
+ className="tab1Img"
|
|
|
+ onLoad={() => imgLodingFu(1)}
|
|
|
+ src={`${envUrl}/App/main1/bg.jpg`}
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+
|
|
|
+ {/* 展陈点位 */}
|
|
|
+ {appTab1Loc1.map((v, i) => (
|
|
|
+ <div
|
|
|
+ onClick={() => setLookImgId(v.id)}
|
|
|
+ className={classNames("tab1Loc1", acId === 2 ? "tab1Loc1Ac" : "")}
|
|
|
+ key={v.id}
|
|
|
+ style={{ top: v.top, left: v.left }}
|
|
|
+ >
|
|
|
+ <div className="tab1Loc1_1">{i + 1}</div>
|
|
|
+ <div className="tab1Loc1_2">{v.name}</div>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+
|
|
|
+ {/* 旧址的点位 */}
|
|
|
+ {appTab1Loc2.map((v) => (
|
|
|
+ <div
|
|
|
+ onClick={()=>setCode(v.code)}
|
|
|
+ key={v.id}
|
|
|
+ style={{
|
|
|
+ top: v.top,
|
|
|
+ left: v.left,
|
|
|
+ right: v.right,
|
|
|
+ bottom: v.bottom,
|
|
|
+ }}
|
|
|
+ className={classNames(
|
|
|
+ "tab1Loc1",
|
|
|
+ "tab1Loc2",
|
|
|
+ acId === 3 ? "tab1Loc2Ac" : ""
|
|
|
+ )}
|
|
|
+ >
|
|
|
+ <div className="tab1Loc1_1"></div>
|
|
|
+ <div
|
|
|
+ style={{ left: v.sonLeft ? v.sonLeft : "-1px" }}
|
|
|
+ className={classNames(
|
|
|
+ "tab1Loc1_2",
|
|
|
+ v.loc === "顶部" ? "tab1Loc1_2Top" : ""
|
|
|
+ )}
|
|
|
+ >
|
|
|
+ {v.name}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* 点击 大点 进入的图片页面 */}
|
|
|
+ {lookImgId ? (
|
|
|
+ <ImgLook closeFu={() => setLookImgId(0)} imgId={lookImgId} />
|
|
|
+ ) : null}
|
|
|
+
|
|
|
+ {/* 点击 小点 打开场景*/}
|
|
|
+ {code ? <Scene closeFu={() => setCode("")} code={code} /> : null}
|
|
|
</div>
|
|
|
- )
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
const MemoTab1 = React.memo(Tab1);
|