|
@@ -1,12 +1,76 @@
|
|
|
-import React from "react";
|
|
|
|
|
|
|
+import React, { useEffect, useMemo, useRef, useState } from "react";
|
|
|
import styles from "./index.module.scss";
|
|
import styles from "./index.module.scss";
|
|
|
- function Tab2() {
|
|
|
|
|
-
|
|
|
|
|
|
|
+import { btnObj } from "../Tab1";
|
|
|
|
|
+import classNames from "classnames";
|
|
|
|
|
+import { tab1IObj, tab1IObjType } from "../Tab1/ImgLook/data";
|
|
|
|
|
+import { appTab1Loc2 } from "../Tab1/data";
|
|
|
|
|
+import ImageLazy from "@/components/ImageLazy";
|
|
|
|
|
+import { baseURL } from "@/utils/http";
|
|
|
|
|
+import Scene from "../Tab1/Scene";
|
|
|
|
|
+
|
|
|
|
|
+function Tab2() {
|
|
|
|
|
+ // 切换 展陈 和 旧址
|
|
|
|
|
+ const [acId, setAcId] = useState(2);
|
|
|
|
|
+
|
|
|
|
|
+ const tab2MainRef = useRef<HTMLDivElement>(null);
|
|
|
|
|
+
|
|
|
|
|
+ // 切换的时候滚动到顶部
|
|
|
|
|
+ useEffect(() => {
|
|
|
|
|
+ // 兼容苹果手机
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ if (tab2MainRef.current) tab2MainRef.current.scrollTop = 1;
|
|
|
|
|
+ }, 100);
|
|
|
|
|
+ }, [acId]);
|
|
|
|
|
+
|
|
|
|
|
+ const list = useMemo(() => {
|
|
|
|
|
+ // 展陈数据
|
|
|
|
|
+ let arr = [] as tab1IObjType;
|
|
|
|
|
+ arr = [...tab1IObj[2], ...tab1IObj[3]];
|
|
|
|
|
+
|
|
|
|
|
+ // 旧址数据
|
|
|
|
|
+ return acId === 2 ? arr : appTab1Loc2;
|
|
|
|
|
+ }, [acId]);
|
|
|
|
|
+
|
|
|
|
|
+ const [code, setCode] = useState("");
|
|
|
|
|
+
|
|
|
return (
|
|
return (
|
|
|
<div className={styles.Tab2}>
|
|
<div className={styles.Tab2}>
|
|
|
- <h1>Tab2</h1>
|
|
|
|
|
|
|
+ {/* 展陈 旧址的切换 */}
|
|
|
|
|
+ <div className="tab2Top">
|
|
|
|
|
+ {btnObj.map((v) => (
|
|
|
|
|
+ <div
|
|
|
|
|
+ key={v.id}
|
|
|
|
|
+ onClick={() => setAcId(v.id)}
|
|
|
|
|
+ className={classNames(
|
|
|
|
|
+ "tab2TopRow",
|
|
|
|
|
+ acId === v.id ? "tab2TopRowAc" : ""
|
|
|
|
|
+ )}
|
|
|
|
|
+ >
|
|
|
|
|
+ {v.name}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ ))}
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div className="tab2Main" ref={tab2MainRef}>
|
|
|
|
|
+ {list.map((v) => (
|
|
|
|
|
+ <div className="tab2Row" key={v.id} onClick={() => setCode(v.code)}>
|
|
|
|
|
+ <ImageLazy
|
|
|
|
|
+ // 图片直接放在测试服务器
|
|
|
|
|
+ src={`${baseURL}/backstage/sceneCover/${v.code}.jpg`}
|
|
|
|
|
+ width="100%"
|
|
|
|
|
+ height={180}
|
|
|
|
|
+ offline={true}
|
|
|
|
|
+ noLook={true}
|
|
|
|
|
+ />
|
|
|
|
|
+ <p>{v.name}</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ ))}
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ {/* 点击出来的场景 */}
|
|
|
|
|
+ {code ? <Scene closeFu={() => setCode("")} code={code} /> : null}
|
|
|
</div>
|
|
</div>
|
|
|
- )
|
|
|
|
|
|
|
+ );
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const MemoTab2 = React.memo(Tab2);
|
|
const MemoTab2 = React.memo(Tab2);
|