|
@@ -1,5 +1,5 @@
|
|
|
/* eslint-disable jsx-a11y/iframe-has-title */
|
|
|
-import React, { useMemo, useRef, useState } from "react";
|
|
|
+import React, { useCallback, useMemo, useRef, useState } from "react";
|
|
|
import styles from "./index.module.scss";
|
|
|
import { Goods } from "@/types";
|
|
|
import { baseURL } from "@/utils/http";
|
|
@@ -15,6 +15,8 @@ import classNames from "classnames";
|
|
|
|
|
|
import name1Img from "@/assets/img/name1.png";
|
|
|
import name2Img from "@/assets/img/name2.png";
|
|
|
+import ImageLazy from "@/components/ImageLazy";
|
|
|
+import store from "@/store";
|
|
|
|
|
|
type Props = {
|
|
|
info: Goods;
|
|
@@ -30,17 +32,17 @@ function GoodsInfo({ info, colseFu, type }: Props) {
|
|
|
else return "";
|
|
|
}, [type]);
|
|
|
|
|
|
- // 看看有几个模型
|
|
|
- const modelNum = useMemo(() => {
|
|
|
+ // 看看有几个模型 / 图片
|
|
|
+ const showNum = useMemo(() => {
|
|
|
const arr = [1];
|
|
|
|
|
|
- if (info.modelNum && info.modelNum > 1) {
|
|
|
- for (let i = 0; i < info.modelNum; i++) {
|
|
|
+ if (info.showNum && info.showNum > 1) {
|
|
|
+ for (let i = 0; i < info.showNum; i++) {
|
|
|
if (i !== 0) arr.push(i + 1);
|
|
|
}
|
|
|
}
|
|
|
return arr;
|
|
|
- }, [info.modelNum]);
|
|
|
+ }, [info.showNum]);
|
|
|
|
|
|
// 当前显示的模型
|
|
|
const [modelShow, setModelShow] = useState(1);
|
|
@@ -60,6 +62,17 @@ function GoodsInfo({ info, colseFu, type }: Props) {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ // 查看图片
|
|
|
+ const lookArr = useCallback(() => {
|
|
|
+ const arr = [] as string[];
|
|
|
+
|
|
|
+ showNum.forEach((v, i) => {
|
|
|
+ arr.push(`${baseURL}/3Goods/${info.id}/main${i + 1}.jpg`);
|
|
|
+ });
|
|
|
+
|
|
|
+ return arr;
|
|
|
+ }, [info.id, showNum]);
|
|
|
+
|
|
|
return (
|
|
|
<div
|
|
|
className={styles.GoodsInfo}
|
|
@@ -75,22 +88,57 @@ function GoodsInfo({ info, colseFu, type }: Props) {
|
|
|
className={classNames("A3Ileft", full ? "A3IleftFull" : "")}
|
|
|
key={modelShow}
|
|
|
>
|
|
|
- {modelNum.map((v) =>
|
|
|
- modelShow === v ? (
|
|
|
- <iframe
|
|
|
- key={v}
|
|
|
- ref={ifrBoxRef}
|
|
|
- src={`model.html?m=${info.id}&n=${v}`}
|
|
|
- frameBorder="no"
|
|
|
- ></iframe>
|
|
|
- ) : null
|
|
|
+ {info.showType === "model" ? (
|
|
|
+ <>
|
|
|
+ {showNum.map((v) =>
|
|
|
+ modelShow === v ? (
|
|
|
+ <iframe
|
|
|
+ key={v}
|
|
|
+ ref={ifrBoxRef}
|
|
|
+ src={`model.html?m=${info.id}&n=${v}`}
|
|
|
+ frameBorder="no"
|
|
|
+ ></iframe>
|
|
|
+ ) : null
|
|
|
+ )}
|
|
|
+ </>
|
|
|
+ ) : (
|
|
|
+ <>
|
|
|
+ {showNum.map((v, i) =>
|
|
|
+ modelShow === v ? (
|
|
|
+ <div
|
|
|
+ className="A3IsimgBox"
|
|
|
+ onClick={() =>
|
|
|
+ store.dispatch({
|
|
|
+ type: "layout/lookBigImg",
|
|
|
+ payload: {
|
|
|
+ show: true,
|
|
|
+ url: lookArr(),
|
|
|
+ current: i,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ }
|
|
|
+ >
|
|
|
+ <ImageLazy
|
|
|
+ width="100%"
|
|
|
+ height="100%"
|
|
|
+ key={v}
|
|
|
+ src={`${baseURL}/3Goods/${info.id}/main${v}.jpg`}
|
|
|
+ offline
|
|
|
+ noLook
|
|
|
+ ></ImageLazy>
|
|
|
+ </div>
|
|
|
+ ) : null
|
|
|
+ )}
|
|
|
+ </>
|
|
|
)}
|
|
|
|
|
|
+ {/* 模型 */}
|
|
|
+
|
|
|
{/* 左右按钮 */}
|
|
|
<div
|
|
|
onClick={() => setModelShow(modelShow - 1)}
|
|
|
- hidden={modelNum.length <= 1}
|
|
|
- style={{ backgroundImage: `url(${baseURL}/4Intro/pc/left.png)` }}
|
|
|
+ hidden={showNum.length <= 1}
|
|
|
+ style={{ backgroundImage: `url(${baseURL}/Home/left.png)` }}
|
|
|
className={classNames(
|
|
|
"A3ItoBtn",
|
|
|
"A3ItoLeft",
|
|
@@ -99,33 +147,36 @@ function GoodsInfo({ info, colseFu, type }: Props) {
|
|
|
></div>
|
|
|
<div
|
|
|
onClick={() => setModelShow(modelShow + 1)}
|
|
|
- hidden={modelNum.length <= 1}
|
|
|
- style={{ backgroundImage: `url(${baseURL}/4Intro/pc/right.png)` }}
|
|
|
+ hidden={showNum.length <= 1}
|
|
|
+ style={{ backgroundImage: `url(${baseURL}/Home/right.png)` }}
|
|
|
className={classNames(
|
|
|
"A3ItoBtn",
|
|
|
"A3ItoRight",
|
|
|
- modelShow === modelNum.length ? "noneToBtn" : ""
|
|
|
+ modelShow === showNum.length ? "noneToBtn" : ""
|
|
|
)}
|
|
|
></div>
|
|
|
|
|
|
{/* 右下角的按钮 */}
|
|
|
- <div className="A3IleftBtn">
|
|
|
- <div onClick={() => modelChangeFu(1)}>
|
|
|
- <PlusOutlined rev={undefined} />
|
|
|
- </div>
|
|
|
- <div onClick={() => modelChangeFu(2)}>
|
|
|
- <MinusOutlined rev={undefined} />
|
|
|
- </div>
|
|
|
- {full ? (
|
|
|
- <div onClick={() => setFull(false)}>
|
|
|
- <FullscreenExitOutlined rev={undefined} />
|
|
|
+
|
|
|
+ {info.showType === "model" ? (
|
|
|
+ <div className="A3IleftBtn">
|
|
|
+ <div onClick={() => modelChangeFu(1)}>
|
|
|
+ <PlusOutlined rev={undefined} />
|
|
|
</div>
|
|
|
- ) : (
|
|
|
- <div onClick={() => setFull(true)}>
|
|
|
- <FullscreenOutlined rev={undefined} />
|
|
|
+ <div onClick={() => modelChangeFu(2)}>
|
|
|
+ <MinusOutlined rev={undefined} />
|
|
|
</div>
|
|
|
- )}
|
|
|
- </div>
|
|
|
+ {full ? (
|
|
|
+ <div onClick={() => setFull(false)}>
|
|
|
+ <FullscreenExitOutlined rev={undefined} />
|
|
|
+ </div>
|
|
|
+ ) : (
|
|
|
+ <div onClick={() => setFull(true)}>
|
|
|
+ <FullscreenOutlined rev={undefined} />
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ ) : null}
|
|
|
</div>
|
|
|
|
|
|
{/* 右边简介 */}
|