import BreadTit from "@/components/BreadTit"; import classNames from "classnames"; import { useEffect, useMemo, useRef, useState } from "react"; import styles from "./index.module.scss"; import { Input, DatePicker, Table, Button, Popconfirm, message } from "antd"; import AuthButton from "@/components/AuthButton"; import history from "@/utils/history"; import { useLocation } from "react-router-dom"; import { useDispatch, useSelector } from "react-redux"; import { RootState } from "@/store"; import { getObject5List, getObject5ListNum, object5DelAPI, } from "@/store/action/object5"; const { RangePicker } = DatePicker; export default function Object5() { const dispatch = useDispatch(); // 获取顶部数量 useEffect(() => { dispatch(getObject5ListNum()); }, [dispatch]); // 顶部的状态改变了,统一管理,传到二级页码 const statusRef = useRef(null); const dataTit = useSelector( (state: RootState) => state.object5Store.infoNum5 ); // 封装发送请求的函数 const getList = () => { const data = { ...tableSelect, pageNum: pageNumRef.current, status: statusRef.current, }; dispatch(getObject5List(data)); }; // 获取地址栏参数 const location = useLocation(); const pageNumRef = useRef(1); // 如果有参数 根据参数页码在次发送请求 useEffect(() => { const urlParam = location.state || {}; setTableSelect({ ...tableSelect, pageNum: Number(urlParam.k) ? Number(urlParam.k) : 1, // eslint-disable-next-line eqeqeq status: urlParam.d && urlParam.d != "null" ? Number(urlParam.d) : null, }); // eslint-disable-next-line react-hooks/exhaustive-deps }, [location]); // 顶部筛选 const [tableSelect, setTableSelect] = useState({ status: null as null | number, searchKey: "", startTime: "", endTime: "", pageSize: 10, pageNum: 1, name: "", }); // 当前页码统一 useEffect(() => { pageNumRef.current = tableSelect.pageNum; }, [tableSelect.pageNum]); // 顶部状态统一 useEffect(() => { statusRef.current = tableSelect.status; }, [tableSelect.status]); // 防止返回的时候发送了2次请求来对应页码 const getListRef = useRef(-1); useEffect(() => { clearTimeout(getListRef.current); getListRef.current = window.setTimeout(() => { getList(); }, 100); // eslint-disable-next-line react-hooks/exhaustive-deps }, [tableSelect]); // 登记人员输入 const nameTime = useRef(-1); const nameChange = (e: React.ChangeEvent) => { clearTimeout(nameTime.current); nameTime.current = window.setTimeout(() => { setTableSelect({ ...tableSelect, searchKey: e.target.value, pageNum: 1 }); }, 500); }; // 藏品名称输入 const nameTime2 = useRef(-1); const nameChange2 = (e: React.ChangeEvent) => { clearTimeout(nameTime2.current); nameTime2.current = window.setTimeout(() => { setTableSelect({ ...tableSelect, name: e.target.value, pageNum: 1 }); }, 500); }; // 时间选择器改变 const timeChange = (date: any, dateString: any) => { let startTime = ""; let endTime = ""; if (dateString[0] && dateString[1]) { startTime = dateString[0] + " 00:00:00"; endTime = dateString[1] + " 23:59:59"; } setTableSelect({ ...tableSelect, startTime, endTime, pageNum: 1 }); }; // 点击删除按钮 const delOne = async (id: number) => { const res: any = await object5DelAPI(id); if (res.code === 0) { message.success("删除成功!"); getList(); dispatch(getObject5ListNum()); } }; // ---------关于表格 // 页码变化 const paginationChange = (pageNum: number, pageSize: number) => { setTableSelect({ ...tableSelect, pageNum, pageSize }); }; const results = useSelector((state: RootState) => state.object5Store.info5); const columns = useMemo(() => { return [ { title: "藏品编号名称", dataIndex: "dictNum", }, { title: "藏品编号", render: (item: any) => (item.num ? item.num : "-"), }, { title: "藏品名称", dataIndex: "name", }, { title: "登记人员", dataIndex: "creatorName", }, { title: "创建日期", dataIndex: "createTime", }, { title: "完成日期", render: (item: any) => (item.day && item.status === 3 ? item.day : "-"), }, { title: "状态", dataIndex: "statusTxt", }, { title: "操作", render: (item: any) => ( <> {item.status === 1 ? ( history.push( `/object/5/audit?k=${pageNumRef.current}&d=${statusRef.current}&id=${item.id}` ) } type="text" danger > 审核 ) : null} {item.status === 0 || item.status === 2 ? ( delOne(item.id)} > 删除 ) : null} ), }, ]; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return (
藏品修改
{/* 顶部筛选 */}
{dataTit.map((v: any) => (
setTableSelect({ ...tableSelect, status: v.id, pageNum: 1 }) } className={classNames( v.id === tableSelect.status ? "active" : "" )} > {v.name}({v.num})
))}
{/* 表格数据筛选 */}
藏品名称: nameChange2(e)} />
登记人员: nameChange(e)} />
创建日期:
{/* 表格主体 */}
); }