|
@@ -16,21 +16,19 @@ import {
|
|
|
} from "@/store/action/A2Main";
|
|
|
import {
|
|
|
A2BarrageType,
|
|
|
+ A2FileObjType,
|
|
|
A2FileType,
|
|
|
A2GoodsType,
|
|
|
A2QuestionType,
|
|
|
} from "@/types";
|
|
|
-import { baseURL } from "@/utils/http";
|
|
|
import closeImg from "@/assets/img/goods/close.png";
|
|
|
import homeImg from "@/assets/img/goods/toHome.png";
|
|
|
import history from "@/utils/history";
|
|
|
import classNames from "classnames";
|
|
|
-import icon1 from "@/assets/img/goods/icon1.png";
|
|
|
import icon2 from "@/assets/img/goods/icon2.png";
|
|
|
import icon3 from "@/assets/img/goods/icon3.png";
|
|
|
import icon4 from "@/assets/img/goods/icon4.png";
|
|
|
import icon5 from "@/assets/img/goods/icon5.png";
|
|
|
-import icon1Ac from "@/assets/img/goods/icon1Ac.png";
|
|
|
import icon3Ac from "@/assets/img/goods/icon3Ac.png";
|
|
|
import icon4Ac from "@/assets/img/goods/icon4Ac.png";
|
|
|
import icon5Ac from "@/assets/img/goods/icon5Ac.png";
|
|
@@ -51,27 +49,23 @@ type Props = {
|
|
|
function GoodsInfo({ isOpen, id, closePage }: Props) {
|
|
|
// 文物信息
|
|
|
const [info, setInfo] = useState<A2GoodsType>({} as A2GoodsType);
|
|
|
- // 附件数据
|
|
|
- const [fileList, setFileList] = useState<A2FileType[]>([]);
|
|
|
|
|
|
- // 音频的url
|
|
|
- const [audio, setAudio] = useState("");
|
|
|
+ // 附件数据(除开音频)
|
|
|
+ const [fileList, setFileList] = useState<A2FileObjType>({
|
|
|
+ model: [],
|
|
|
+ video: [],
|
|
|
+ img: [],
|
|
|
+ });
|
|
|
|
|
|
- // 右侧图标
|
|
|
- const [right1, setRight1] = useState({ show: false, done: false });
|
|
|
+ // 附件音频信息
|
|
|
+ const [audioInfo, setAudioInfo] = useState({} as A2FileType);
|
|
|
+
|
|
|
+ // 右侧图标(后面修改了 第一个图标 音频 移动到 附件页面)
|
|
|
const [right2, setRight2] = useState({ show: false, done: false });
|
|
|
const [right3, setRight3] = useState({ show: false, done: false });
|
|
|
const [right4, setRight4] = useState(false);
|
|
|
const [right5, setRight5] = useState(false);
|
|
|
|
|
|
- // 打开和关闭音频
|
|
|
- const audioCutFu = useCallback((val: boolean) => {
|
|
|
- const dom: HTMLAudioElement = document.querySelector("#myAudio")!;
|
|
|
- if (val) dom.play();
|
|
|
- else dom.pause();
|
|
|
- setRight1({ show: true, done: val });
|
|
|
- }, []);
|
|
|
-
|
|
|
// 点击点赞
|
|
|
const likeClickFu = useCallback(async () => {
|
|
|
if (right4) return;
|
|
@@ -198,42 +192,24 @@ function GoodsInfo({ isOpen, id, closePage }: Props) {
|
|
|
|
|
|
const file: A2FileType[] = res.data.file;
|
|
|
|
|
|
- // 附件按照 模型-视频-图片的顺序
|
|
|
- let modelObj = {} as A2FileType;
|
|
|
- let videoObj = {} as A2FileType;
|
|
|
- const imgArr: A2FileType[] = [];
|
|
|
+ // 整理附件数据
|
|
|
+ const fileObj: A2FileObjType = {
|
|
|
+ model: [],
|
|
|
+ video: [],
|
|
|
+ img: [],
|
|
|
+ };
|
|
|
file.forEach((v) => {
|
|
|
- if (v.type === "model") modelObj = v;
|
|
|
- else if (v.type === "video") videoObj = v;
|
|
|
- else if (v.type === "img") imgArr.push(v);
|
|
|
+ if (v.type === "model") fileObj.model.push(v);
|
|
|
+ else if (v.type === "video") fileObj.video.push(v);
|
|
|
+ else if (v.type === "img") fileObj.img.push(v);
|
|
|
});
|
|
|
- let fileListTemp: A2FileType[] = [];
|
|
|
- if (modelObj.id) fileListTemp.push(modelObj);
|
|
|
- if (videoObj.id) fileListTemp.push(videoObj);
|
|
|
|
|
|
- fileListTemp = [...fileListTemp, ...imgArr];
|
|
|
- setFileList(fileListTemp);
|
|
|
+ setFileList(fileObj);
|
|
|
|
|
|
// 有上传音频
|
|
|
const isAudioObj = file.find((v) => v.type === "audio");
|
|
|
if (isAudioObj) {
|
|
|
- setAudio(isAudioObj.filePath);
|
|
|
- setRight1({ show: true, done: false });
|
|
|
- window.setTimeout(() => {
|
|
|
- const dom: HTMLAudioElement = document.querySelector("#myAudio")!;
|
|
|
- dom.onended = () => {
|
|
|
- // console.log("-------音频播放结束");
|
|
|
-
|
|
|
- // 音频播放结束
|
|
|
- setRight1({ show: true, done: false });
|
|
|
- };
|
|
|
- // 音频的状态
|
|
|
- if (!isOpen) {
|
|
|
- dom.play();
|
|
|
-
|
|
|
- setRight1({ show: true, done: true });
|
|
|
- }
|
|
|
- }, 100);
|
|
|
+ setAudioInfo(isAudioObj);
|
|
|
}
|
|
|
|
|
|
setInfo(info);
|
|
@@ -256,7 +232,7 @@ function GoodsInfo({ isOpen, id, closePage }: Props) {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- [isOpen, leftArrTemp]
|
|
|
+ [leftArrTemp]
|
|
|
);
|
|
|
|
|
|
useEffect(() => {
|
|
@@ -275,8 +251,6 @@ function GoodsInfo({ isOpen, id, closePage }: Props) {
|
|
|
|
|
|
return (
|
|
|
<div className={styles.GoodsInfo}>
|
|
|
- {audio ? <audio src={baseURL + audio} id="myAudio"></audio> : null}
|
|
|
-
|
|
|
{/* 关闭按钮 */}
|
|
|
<div className={classNames("G_close", isOpen ? "G_closeLL" : "")}>
|
|
|
<img
|
|
@@ -325,7 +299,11 @@ function GoodsInfo({ isOpen, id, closePage }: Props) {
|
|
|
</div>
|
|
|
{/* 右侧容器 */}
|
|
|
<div className="G_rightMain">
|
|
|
- <RightFile list={fileList} />
|
|
|
+ <RightFile
|
|
|
+ listObj={fileList}
|
|
|
+ isOpen={isOpen}
|
|
|
+ audioInfo={audioInfo}
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
@@ -352,23 +330,6 @@ function GoodsInfo({ isOpen, id, closePage }: Props) {
|
|
|
</div>
|
|
|
<div className="G_bottom_right">
|
|
|
<div className="G_bottom_right_main">
|
|
|
- {/* 音频 */}
|
|
|
- <div className="R_row" hidden={!right1.show}>
|
|
|
- <img
|
|
|
- src={icon1Ac}
|
|
|
- alt=""
|
|
|
- title="打开音频"
|
|
|
- hidden={right1.done}
|
|
|
- onClick={() => audioCutFu(true)}
|
|
|
- />
|
|
|
- <img
|
|
|
- onClick={() => audioCutFu(false)}
|
|
|
- src={icon1}
|
|
|
- alt=""
|
|
|
- title="关闭音频"
|
|
|
- hidden={!right1.done}
|
|
|
- />
|
|
|
- </div>
|
|
|
{/* 弹幕留言 */}
|
|
|
<div
|
|
|
className="R_row"
|