zcloud_gbs_qualifications-r.../src/components/ViewProjectReviewUserModal/index.js

88 lines
3.0 KiB
JavaScript

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 (
<Modal
title="特种作业人员证书"
width={1200}
open
maskClosable={false}
onCancel={props.onCancel}
footer={[
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
]}
>
<Table
columns={[
{ title: "姓名", dataIndex: "userName" },
{ title: "证书名称", dataIndex: "qualificationName" },
{ title: "证书作业类别", dataIndex: "qualificationinfoCategoryName" },
{ title: "操作项目", dataIndex: "operatingProjectName" },
{ title: "证书编号", dataIndex: "certificateNo" },
{ title: "图片", dataIndex: "files", render: (_, record) => (<TooltipPreviewImg files={record.files} />) },
]}
{...enhancedTableProps}
/>
</Modal>
);
};
export default Connect([NS_QUALIFICATION_STATISTICS], true)(ViewProjectReviewUserModal);