|
@@ -0,0 +1,95 @@
|
|
|
+import HeaderBdImage from "./images/header-bd.png";
|
|
|
+import IconScreen from "./images/icon_screen@2x.png";
|
|
|
+import IconFullScreen from "./images/icon_fullscreen@2x.png";
|
|
|
+import IconCircle from "./images/icon_circle@2x.png";
|
|
|
+import "./index.scss";
|
|
|
+import { useCallback, useEffect, useRef, useState } from "react";
|
|
|
+import classNames from "classnames";
|
|
|
+
|
|
|
+const INFO_LIST = [
|
|
|
+ {
|
|
|
+ label: "厂家",
|
|
|
+ key: "航天八院",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "尺寸",
|
|
|
+ key: "3.22m×2.87m×4.12m",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "简介",
|
|
|
+ key: "风云四号气象卫星是我国第二代静止轨道气象卫星,获取地球表面和云的多光谱、高精度定量观测数据和图像,全面提高对地球表面和大气物理参数的多光谱、高频次、定量探测能力;实现大气温度和湿度参数垂直结构观测,提高探测精度;实现观测区内闪电成像观测;监测空间高能粒子、空间充放电效应、地磁场强度等空间环境。",
|
|
|
+ },
|
|
|
+];
|
|
|
+
|
|
|
+const ModelInfoPage = () => {
|
|
|
+ // 控制模型放大缩小和复位
|
|
|
+ const ifrBoxRef = useRef<HTMLIFrameElement>(null);
|
|
|
+ const [isFullScreen, setIsFullScreen] = useState(false);
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ const init = (e: MessageEvent<any>) => {
|
|
|
+ if (
|
|
|
+ e.origin === window.location.origin &&
|
|
|
+ e.data === "modelPageLoaded" &&
|
|
|
+ !!ifrBoxRef.current &&
|
|
|
+ !!ifrBoxRef.current.contentWindow
|
|
|
+ ) {
|
|
|
+ // @ts-ignore
|
|
|
+ ifrBoxRef.current.contentWindow.initModel(
|
|
|
+ process.env.NODE_ENV === "development"
|
|
|
+ );
|
|
|
+ }
|
|
|
+ };
|
|
|
+ window.addEventListener("message", init);
|
|
|
+
|
|
|
+ return () => {
|
|
|
+ window.removeEventListener("message", init);
|
|
|
+ };
|
|
|
+ }, []);
|
|
|
+
|
|
|
+ const handleScreen = useCallback(() => {
|
|
|
+ setIsFullScreen(!isFullScreen);
|
|
|
+ }, [isFullScreen]);
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div
|
|
|
+ className={classNames("model-info-page", isFullScreen && "fullscreen")}
|
|
|
+ >
|
|
|
+ <div className="model-info-page-header">
|
|
|
+ <span>风云四号模型</span>
|
|
|
+ <img className="border" src={HeaderBdImage} alt="" />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* 模型 */}
|
|
|
+ <div className="model-info-page-iframe">
|
|
|
+ <iframe
|
|
|
+ ref={ifrBoxRef}
|
|
|
+ title="模型"
|
|
|
+ src="model.html?m=/goods/base/model/hnbwy263.4dage"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <img
|
|
|
+ className="model-info-page__btn"
|
|
|
+ src={isFullScreen ? IconScreen : IconFullScreen}
|
|
|
+ alt={isFullScreen ? "缩小" : "放大"}
|
|
|
+ onClick={handleScreen}
|
|
|
+ />
|
|
|
+
|
|
|
+ {!isFullScreen && (
|
|
|
+ <div className="model-info-page-info">
|
|
|
+ {INFO_LIST.map((item) => (
|
|
|
+ <div key={item.key} className="model-info-page-info__line">
|
|
|
+ <img src={IconCircle} alt="" />
|
|
|
+ <span>
|
|
|
+ {item.label}:{item.key}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
+export default ModelInfoPage;
|