|
@@ -0,0 +1,165 @@
|
|
|
|
+import "@/assets/styles/base.css";
|
|
|
|
+// 关于路由
|
|
|
|
+import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
|
|
+import { Router, Route, Switch } from "react-router-dom";
|
|
|
|
+import history from "./utils/history";
|
|
|
|
+import SpinLoding from "./components/SpinLoding";
|
|
|
|
+import MessageCom from "./components/Message";
|
|
|
|
+import NotFound from "./components/NotFound";
|
|
|
|
+import { baseUrl } from ".";
|
|
|
|
+import classNames from "classnames";
|
|
|
|
+import { useSelector } from "react-redux";
|
|
|
|
+import { RootState } from "./store";
|
|
|
|
+import { AppTabList } from "./utils/data";
|
|
|
|
+import screenImg from "@/assets/img/landtip.png";
|
|
|
|
+import fillTitImg from "@/assets/img/tab2/btn_normal.png";
|
|
|
|
+import fillTitAcImg from "@/assets/img/tab2/btn_active.png";
|
|
|
|
+import B1CardM from "./pages/B1CardM";
|
|
|
|
+
|
|
|
|
+const A1HomeM = React.lazy(() => import("./pages/A1HomeM"));
|
|
|
|
+
|
|
|
|
+export default function AppM() {
|
|
|
|
+ const setFullFu = useCallback(() => {
|
|
|
|
+ clearTimeout(time.current);
|
|
|
|
+ time.current = window.setTimeout(() => {
|
|
|
|
+ const dom: HTMLDivElement | null = document.querySelector("#root");
|
|
|
|
+ if (dom) {
|
|
|
|
+ dom.style.height = document.documentElement.clientHeight + "px";
|
|
|
|
+ }
|
|
|
|
+ }, 100);
|
|
|
|
+ }, []);
|
|
|
|
+
|
|
|
|
+ const time = useRef(-1);
|
|
|
|
+
|
|
|
|
+ useEffect(() => {
|
|
|
|
+ const dom: HTMLDivElement | null = document.querySelector("#root");
|
|
|
|
+ if (dom) {
|
|
|
|
+ dom.style.width = "100vw";
|
|
|
|
+ dom.style.minHeight = "auto";
|
|
|
|
+ dom.style.height = document.documentElement.clientHeight + "px";
|
|
|
|
+ dom.style.minWidth = "auto";
|
|
|
|
+ }
|
|
|
|
+ window.addEventListener("resize", setFullFu, true);
|
|
|
|
+
|
|
|
|
+ return () => {
|
|
|
|
+ window.removeEventListener("resize", setFullFu);
|
|
|
|
+ };
|
|
|
|
+ }, [setFullFu]);
|
|
|
|
+
|
|
|
|
+ const [routerAc, setRouterAc] = useState("/");
|
|
|
|
+
|
|
|
|
+ // 开场视频的配置
|
|
|
|
+ const { isVideoFlag } = useSelector(
|
|
|
|
+ (state: RootState) => state.A0Layout.dataAll.home
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ // 视频的播放
|
|
|
|
+ const [videoShow, setVideoShow] = useState(true);
|
|
|
|
+
|
|
|
|
+ // 是否需要显示视频
|
|
|
|
+ const [isVideoShow, setIsVideoShow] = useState(false);
|
|
|
|
+ useEffect(() => {
|
|
|
|
+ if (window.location.hash === "#/") setIsVideoShow(true);
|
|
|
|
+
|
|
|
|
+ setRouterAc(window.location.hash);
|
|
|
|
+
|
|
|
|
+ window.addEventListener(
|
|
|
|
+ "hashchange",
|
|
|
|
+ () => {
|
|
|
|
+ setRouterAc(window.location.hash);
|
|
|
|
+ },
|
|
|
|
+ true
|
|
|
|
+ );
|
|
|
|
+ }, []);
|
|
|
|
+
|
|
|
|
+ // tab的切换
|
|
|
|
+ const cutTab = useCallback((id: number, pathUrl: string) => {
|
|
|
|
+ if (id !== 2) {
|
|
|
|
+ history.push(pathUrl);
|
|
|
|
+ setTab2Show(false);
|
|
|
|
+ } else setTab2Show(true);
|
|
|
|
+ }, []);
|
|
|
|
+
|
|
|
|
+ const [tab2Show, setTab2Show] = useState(false);
|
|
|
|
+
|
|
|
|
+ return (
|
|
|
|
+ <div id="AppM">
|
|
|
|
+ {/* 关于路由 */}
|
|
|
|
+ <Router history={history}>
|
|
|
|
+ <React.Suspense fallback={<SpinLoding />}>
|
|
|
|
+ <Switch>
|
|
|
|
+ {/* 总览 */}
|
|
|
|
+ <Route path="/" exact component={A1HomeM} />
|
|
|
|
+ {/* 村落 */}
|
|
|
|
+ {/* 找不到页面 */}
|
|
|
|
+ <Route path="*" component={NotFound} />
|
|
|
|
+ </Switch>
|
|
|
|
+ </React.Suspense>
|
|
|
|
+ </Router>
|
|
|
|
+
|
|
|
|
+ {/* 视频加载中 */}
|
|
|
|
+ {videoShow && isVideoShow ? (
|
|
|
|
+ <div className="Appvideo" hidden={isVideoFlag === "隐藏"}>
|
|
|
|
+ <video
|
|
|
|
+ onEnded={() => setVideoShow(false)}
|
|
|
|
+ src={`${baseUrl}/A1Home/mobile/start.mp4`}
|
|
|
|
+ autoPlay
|
|
|
|
+ muted
|
|
|
|
+ ></video>
|
|
|
|
+ </div>
|
|
|
|
+ ) : null}
|
|
|
|
+
|
|
|
|
+ {/* 底部tab */}
|
|
|
|
+ <div className="AppMtab">
|
|
|
|
+ {AppTabList.map((v) => (
|
|
|
|
+ <div
|
|
|
|
+ onClick={() => cutTab(v.id, v.pathUrl)}
|
|
|
|
+ className={classNames(
|
|
|
|
+ "AppMtabRow",
|
|
|
|
+ (routerAc === "#/" && v.id === 1 && !tab2Show) ||
|
|
|
|
+ (routerAc.includes("#" + v.path) && v.id !== 1 && !tab2Show) ||
|
|
|
|
+ (tab2Show && v.id === 2)
|
|
|
|
+ ? "AppMtabRowAc"
|
|
|
|
+ : ""
|
|
|
|
+ )}
|
|
|
|
+ key={v.id}
|
|
|
|
+ >
|
|
|
|
+ <img
|
|
|
|
+ src={
|
|
|
|
+ (routerAc === "#/" && v.id === 1 && !tab2Show) ||
|
|
|
|
+ (routerAc.includes("#" + v.path) && v.id !== 1 && !tab2Show) ||
|
|
|
|
+ (tab2Show && v.id === 2)
|
|
|
|
+ ? fillTitAcImg
|
|
|
|
+ : fillTitImg
|
|
|
|
+ }
|
|
|
|
+ alt=""
|
|
|
|
+ />
|
|
|
|
+ <div className="AppMtabRowName">
|
|
|
|
+ {v.name[0]} {v.name[1]}
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ ))}
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ {/* 点击村落出来的选择卡 */}
|
|
|
|
+ <B1CardM
|
|
|
|
+ isShow={!tab2Show}
|
|
|
|
+ closeFu={() => setTab2Show(false)}
|
|
|
|
+ clickCardFu={(id) => {
|
|
|
|
+ // 从卡片里面点击 进入村落
|
|
|
|
+ setTab2Show(false);
|
|
|
|
+ history.push(`/village?id=${id}`);
|
|
|
|
+ }}
|
|
|
|
+ />
|
|
|
|
+
|
|
|
|
+ {/* antd 轻提示 ---兼容360浏览器 */}
|
|
|
|
+ <MessageCom />
|
|
|
|
+
|
|
|
|
+ {/* 横屏提示 */}
|
|
|
|
+ <div id="ScreenChange">
|
|
|
|
+ <img src={screenImg} alt="" />
|
|
|
|
+ <p>请在竖屏模式浏览</p>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ );
|
|
|
|
+}
|