|
@@ -0,0 +1,372 @@
|
|
|
+import { Button, Modal, Select, Table } from "antd";
|
|
|
+import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
|
+import ImageLazy from "../ImageLazy";
|
|
|
+import "./index.css";
|
|
|
+import classNames from "classnames";
|
|
|
+import { useDispatch, useSelector } from "react-redux";
|
|
|
+import { RootState } from "@/store";
|
|
|
+
|
|
|
+type Props = {
|
|
|
+ data: any;
|
|
|
+ y: number;
|
|
|
+};
|
|
|
+
|
|
|
+function LookObjTable({ data, y }: Props) {
|
|
|
+ const dispatch = useDispatch();
|
|
|
+
|
|
|
+ // 点击表格里面的查看
|
|
|
+ const lookGoods = useCallback((id: number) => {
|
|
|
+ setShow(true);
|
|
|
+ }, []);
|
|
|
+
|
|
|
+ // 外层表格格式
|
|
|
+ const columns = useMemo(() => {
|
|
|
+ const tempArr = [
|
|
|
+ {
|
|
|
+ title: "缩略图",
|
|
|
+ render: (item: any) => (
|
|
|
+ <ImageLazy width={120} height={70} src={item.img} />
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "藏品编号名称",
|
|
|
+ dataIndex: "num",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "藏品编号",
|
|
|
+ dataIndex: "num",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "藏品名称",
|
|
|
+ dataIndex: "num",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "类别",
|
|
|
+ dataIndex: "num",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "完残程度",
|
|
|
+ dataIndex: "num",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "年代",
|
|
|
+ dataIndex: "num",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "操作",
|
|
|
+ render: (item: any) => (
|
|
|
+ <>
|
|
|
+ <Button type="text" danger onClick={() => lookGoods(item.id)}>
|
|
|
+ 查看
|
|
|
+ </Button>
|
|
|
+ </>
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ return tempArr;
|
|
|
+ }, [lookGoods]);
|
|
|
+
|
|
|
+ // 控制弹窗的显示隐藏
|
|
|
+ const [show, setShow] = useState(false);
|
|
|
+ // 选择商品信息还是附近(默认商品信息)
|
|
|
+ const [titSelect, setTitSelect] = useState("tit1");
|
|
|
+
|
|
|
+ // 附件类型下拉框
|
|
|
+ const results = useSelector((state: RootState) => state.loginStore.fileData);
|
|
|
+
|
|
|
+ const fileSelectList = useMemo(() => {
|
|
|
+ return [
|
|
|
+ { id: 1, value: "img", label: "高清图片" },
|
|
|
+ { id: 2, value: "video", label: "视频文件" },
|
|
|
+ { id: 3, value: "audio", label: "音频文件" },
|
|
|
+ { id: 4, value: "model", label: "三维模型" },
|
|
|
+ { id: 5, value: "file", label: "文档资料" },
|
|
|
+ ];
|
|
|
+ }, []);
|
|
|
+ const [fileSelect, setFileSelect] = useState("img");
|
|
|
+ const fileSelectChangeFu = (value: string) => {
|
|
|
+ setFileSelect(value);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 里面的表格数据
|
|
|
+ useEffect(() => {
|
|
|
+ dispatch({
|
|
|
+ type: "login/setFileData",
|
|
|
+ payload: {
|
|
|
+ img: [
|
|
|
+ {
|
|
|
+ id: 1,
|
|
|
+ name: "图片1",
|
|
|
+ time: "2022-12-13",
|
|
|
+ img: "https://ts1.cn.mm.bing.net/th/id/R-C.6d2d3fecd79a96e43d1a410640d7199b?rik=B7RCgF82Vb7P0A&riu=http%3a%2f%2f5b0988e595225.cdn.sohucs.com%2fimages%2f20190831%2f3e03e9c2473c40b180aa99a37c0589fa.jpeg&ehk=JXdgMrjnolHlMkdX9N0K7%2fzBc9wi7FSFDjSGclreQbI%3d&risl=&pid=ImgRaw&r=0",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 2,
|
|
|
+ name: "图片2",
|
|
|
+ time: "2022-12-14",
|
|
|
+ img: "",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 3,
|
|
|
+ name: "图片3",
|
|
|
+ time: "2022-12-14",
|
|
|
+ img: "",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ video: [
|
|
|
+ {
|
|
|
+ id: 4,
|
|
|
+ name: "视频1",
|
|
|
+ time: "2022-12-14",
|
|
|
+ img: "",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ audio: [],
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }, [dispatch]);
|
|
|
+
|
|
|
+ // 外层表格格式
|
|
|
+ const columns2 = useMemo(() => {
|
|
|
+ const tempArr = [
|
|
|
+ {
|
|
|
+ title: "附件名称",
|
|
|
+ dataIndex: "name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "上传时间",
|
|
|
+ dataIndex: "time",
|
|
|
+ },
|
|
|
+ ] as any;
|
|
|
+ if (fileSelect === "img") {
|
|
|
+ tempArr.unshift({
|
|
|
+ title: "缩略图",
|
|
|
+ render: (item: any) => (
|
|
|
+ <ImageLazy width={120} height={70} src={item.img} />
|
|
|
+ ),
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return tempArr;
|
|
|
+ }, [fileSelect]);
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div>
|
|
|
+ <Table
|
|
|
+ scroll={{ y }}
|
|
|
+ dataSource={data}
|
|
|
+ columns={columns}
|
|
|
+ rowKey="id"
|
|
|
+ pagination={false}
|
|
|
+ />
|
|
|
+ {/* 点击查看出来的对话框 */}
|
|
|
+ <Modal
|
|
|
+ wrapClassName="lookObjTable"
|
|
|
+ destroyOnClose
|
|
|
+ open={show}
|
|
|
+ title="查看藏品"
|
|
|
+ onCancel={() => setShow(false)}
|
|
|
+ footer={
|
|
|
+ [] // 设置footer为空,去掉 取消 确定默认按钮
|
|
|
+ }
|
|
|
+ >
|
|
|
+ {/* 商品信息和附件切换 */}
|
|
|
+ <div className="ObjectAddTit">
|
|
|
+ <div
|
|
|
+ onClick={() => setTitSelect("tit1")}
|
|
|
+ className={classNames(titSelect === "tit1" ? "active" : "")}
|
|
|
+ >
|
|
|
+ 藏品信息
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ onClick={() => setTitSelect("tit2")}
|
|
|
+ className={classNames(
|
|
|
+ "ObjectAddTitTow",
|
|
|
+ titSelect === "tit2" ? "active" : ""
|
|
|
+ )}
|
|
|
+ >
|
|
|
+ 附件
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* 藏品信息 */}
|
|
|
+ <div className="goodsInfo" hidden={titSelect !== "tit1"}>
|
|
|
+ <div className="row">
|
|
|
+ <div>
|
|
|
+ <span>藏品名称:</span>
|
|
|
+ <p>
|
|
|
+ 阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>原名:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className="row">
|
|
|
+ <div>
|
|
|
+ <span>藏品编号名称:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>藏品编号:</span>
|
|
|
+ <p>
|
|
|
+ 阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松阿松大阿松
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className="row">
|
|
|
+ <div>
|
|
|
+ <span>年代:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>文物质地:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className="row">
|
|
|
+ <div>
|
|
|
+ <span>具体年代:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>文物类别:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className="row">
|
|
|
+ <div>
|
|
|
+ <span>实际数量:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>文物级别:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* <div className="rowThree">
|
|
|
+ <div>
|
|
|
+ <span>通长:</span>123
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>通宽:</span>123
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>通高:</span>123
|
|
|
+ </div>
|
|
|
+ </div> */}
|
|
|
+
|
|
|
+ <div className="row">
|
|
|
+ <div>
|
|
|
+ <span>外形尺寸:</span>
|
|
|
+ <p>(通长)66666666(通宽)66666666(通高)66666666</p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>具体尺寸:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className="row">
|
|
|
+ <div>
|
|
|
+ <span>质量范围:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>具体质量:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className="row">
|
|
|
+ <div>
|
|
|
+ <span>完残程度:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>保存状态:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className="row">
|
|
|
+ <div>
|
|
|
+ <span>入藏时间范围:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>入藏年度:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className="row">
|
|
|
+ <div>
|
|
|
+ <span>著者:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>版本:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className="row">
|
|
|
+ <div>
|
|
|
+ <span>存卷:</span>
|
|
|
+ <p>666666666</p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>来源说明:</span>
|
|
|
+ <p>454654654564654</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className="goodsFile" hidden={titSelect !== "tit2"}>
|
|
|
+ <div className="row">
|
|
|
+ <div className="rowTit">藏品图片:</div>
|
|
|
+ <div className="rowRr">
|
|
|
+ <ImageLazy width={120} height={120} src={""} />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className="row">
|
|
|
+ <div className="rowTit">附件类型:</div>
|
|
|
+ <div className="rowRr">
|
|
|
+ <Select
|
|
|
+ style={{ width: 150 }}
|
|
|
+ value={fileSelect}
|
|
|
+ onChange={fileSelectChangeFu}
|
|
|
+ options={fileSelectList}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* 表格主体 */}
|
|
|
+ <Table
|
|
|
+ scroll={{ y: 300 }}
|
|
|
+ dataSource={results[fileSelect]}
|
|
|
+ columns={columns2}
|
|
|
+ rowKey="id"
|
|
|
+ pagination={false}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* 确定按钮 */}
|
|
|
+ <div className="goodsBtn">
|
|
|
+ <Button type="primary" onClick={() => setShow(false)}>
|
|
|
+ 确定
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+const MemoLookObjTable = React.memo(LookObjTable);
|
|
|
+
|
|
|
+export default MemoLookObjTable;
|