import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Button, Form, Modal } from "antd"; import { useEffect, useMemo, useRef, useState } from "react"; import Table from "zy-react-library/components/Table"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import useGetFile from "zy-react-library/hooks/useGetFile"; import useTable from "zy-react-library/hooks/useTable"; import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace"; const ViewProjectReviewUserModal = (props) => { const [form] = Form.useForm(); const { loading: getFileLoading, getFile } = useGetFile(); const { tableProps } = useTable(props["userQualificationInfo"], { form, params: { eqUserld: props.data.id, }, }); const [tableData, setTableData] = useState([]); const hasFetchedRef = useRef(false); useEffect(() => { // 只在第一次获取数据时执行,或者数据真正变化时 if (tableProps.dataSource && tableProps.dataSource.length > 0 && !getFileLoading && !hasFetchedRef.current) { hasFetchedRef.current = true; const fetchFiles = async () => { const dataWithFiles = await Promise.all( tableProps.dataSource.map(async (item) => { try { const files = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["6"], eqForeignKey: item.userId, }); return { ...item, files: files || [] }; } catch (error) { console.error("获取文件失败:", error); return { ...item, files: [] }; } }), ); setTableData(dataWithFiles); }; fetchFiles(); } }, [tableProps.dataSource, getFileLoading, getFile]); // 使用 useMemo 避免重复计算 const enhancedTableProps = useMemo(() => ({ ...tableProps, dataSource: tableData.length > 0 ? tableData : tableProps.dataSource || [], }), [tableProps, tableData]); return ( 取消, ]} > () }, ]} {...enhancedTableProps} /> ); }; export default Connect([NS_QUALIFICATION_STATISTICS], true)(ViewProjectReviewUserModal);