import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Button, Descriptions, Form, message, Modal, Space } from "antd"; import { useEffect, useState } from "react"; import FormBuilder from "zy-react-library/components/FormBuilder"; import AddIcon from "zy-react-library/components/Icon/AddIcon"; import Page from "zy-react-library/components/Page"; import PreviewImg from "zy-react-library/components/PreviewImg"; import Search from "zy-react-library/components/Search"; import Table from "zy-react-library/components/Table"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import Upload from "zy-react-library/components/Upload"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import useGetFile from "zy-react-library/hooks/useGetFile"; import useTable from "zy-react-library/hooks/useTable"; import { NS_ORG_QUALIFICATION_CERT } from "~/enumerate/namespace"; import { safeGetFiles, safeListRequest, safeRequest } from "~/utils"; import { toDayjs } from "~/utils/dateFormat"; import { mockUploadFileList, resolveUploadFileId } from "~/utils/mockUpload"; import { dateRangeRule } from "~/utils/validators"; import PageHeader from "../components/PageHeader"; function QualificationCertPage(props) { const [addModalOpen, setAddModalOpen] = useState(false); const [viewModalOpen, setViewModalOpen] = useState(false); const [currentId, setCurrentId] = useState(""); const [form] = Form.useForm(); const { tableProps, getData } = useTable(safeListRequest(props.orgQualificationCertList), { form, transform: (formData) => ({ ...formData, geValidStartDate: formData.validDate?.[0], leValidEndDate: formData.validDate?.[1], }), }); const onDelete = (id) => { Modal.confirm({ title: "提示", content: "数据将会删除,您是否确认删除?", okText: "是", cancelText: "否", onOk: async () => { const res = await props.orgQualificationCertRemove({ id }); if (res?.success !== false) { message.success("删除成功"); getData(); } }, }); }; const onDisable = (id) => { Modal.confirm({ title: "提示", content: "是否停用该证书?", okText: "是", cancelText: "否", onOk: async () => { const res = await props.orgQualificationCertDisable({ id }); if (res?.success !== false) { message.success("操作成功"); getData(); } }, }); }; const onEnable = (id) => { Modal.confirm({ title: "提示", content: "是否启用该证书?", okText: "是", cancelText: "否", onOk: async () => { const res = await props.orgQualificationCertEnable({ id }); if (res?.success !== false) { message.success("操作成功"); getData(); } }, }); }; return ( ( )} columns={[ { title: "证照类别", dataIndex: "certType" }, { title: "证书名称", dataIndex: "certName" }, { title: "证书有效期", width: 220, render: (_, record) => `${record.validStartDate ?? ""} ~ ${record.validEndDate ?? ""}`, }, { title: "证书编号", dataIndex: "certNo" }, { title: "状态", dataIndex: "enableStatus", width: 80, render: (v) => (v === 0 ? "禁用" : "启用"), }, { title: "照片", width: 100, render: (_, record) => ( record.certImgFiles?.length ? : ), }, { title: "操作", width: 260, render: (_, record) => ( {record.enableStatus === 0 ? ( ) : ( )} ), }, ]} {...tableProps} /> {addModalOpen && ( { setAddModalOpen(false); setCurrentId(""); }} onSuccess={getData} /> )} {viewModalOpen && ( { setViewModalOpen(false); setCurrentId(""); }} /> )} ); } function CertFormModal({ open, currentId, requestAdd, requestEdit, requestDetails, onCancel, onSuccess, }) { const [form] = Form.useForm(); const [submitting, setSubmitting] = useState(false); const [detailLoading, setDetailLoading] = useState(false); const { getFile } = useGetFile(); useEffect(() => { if (!open) { return; } if (!currentId) { form.resetFields(); form.setFieldsValue({ certImgs: mockUploadFileList("证书图片.jpg") }); return; } let cancelled = false; (async () => { setDetailLoading(true); try { const res = await safeRequest(requestDetails, { id: currentId }); if (cancelled || !res?.data) { return; } const data = { ...res.data }; data.issueDate = toDayjs(data.issueDate); data.validDate = [toDayjs(data.validStartDate), toDayjs(data.validEndDate)]; data.certImgs = data.certImgFiles?.length ? data.certImgFiles : mockUploadFileList("证书图片.jpg"); form.setFieldsValue(data); setDetailLoading(false); const files = await safeGetFiles( getFile, { eqType: "org_cert", eqForeignKey: data.id }, data.certImgFiles || [], ); if (!cancelled && files.length) { form.setFieldValue("certImgs", files); } } catch (err) { console.warn("[QualificationCert] load detail failed:", err); } finally { if (!cancelled) { setDetailLoading(false); } } })(); return () => { cancelled = true; }; }, [open, currentId]); const handleCancel = () => { form.resetFields(); onCancel(); }; const handleSubmit = async (values) => { try { setSubmitting(true); values.validStartDate = values.validDate?.[0]; values.validEndDate = values.validDate?.[1]; values.certImageUrl = resolveUploadFileId(values.certImgs); if (currentId) { values.id = currentId; } const request = currentId ? requestEdit : requestAdd; const res = await request(values); if (res?.success !== false) { message.success(currentId ? "编辑成功" : "添加成功"); handleCancel(); onSuccess(); } } finally { setSubmitting(false); } }; return (
严谨在本互联网非涉密平台处理、传输国家秘密和工作秘密,请确认扫描、传输的文件资料不涉及国家秘密和工作秘密
), }, ]} labelCol={{ span: 8 }} />
); } function CertViewModal({ open, currentId, requestDetails, onCancel }) { const [info, setInfo] = useState({}); const [detailLoading, setDetailLoading] = useState(false); const { getFile } = useGetFile(); useEffect(() => { if (!open || !currentId) { setInfo({}); return; } let cancelled = false; (async () => { setDetailLoading(true); try { const res = await safeRequest(requestDetails, { id: currentId }); if (cancelled || !res?.data) { return; } const data = { ...res.data }; data.certImgs = data.certImgFiles || []; setInfo(data); setDetailLoading(false); const files = await safeGetFiles( getFile, { eqType: "org_cert", eqForeignKey: data.id }, data.certImgFiles || [], ); if (!cancelled && files.length) { setInfo((prev) => ({ ...prev, certImgs: files })); } } catch (err) { console.warn("[QualificationCert] load view failed:", err); } finally { if (!cancelled) { setDetailLoading(false); } } })(); return () => { cancelled = true; }; }, [open, currentId]); return ( {info.certType} {info.certName} {info.certNo} {info.issueOrg} {info.issueDate} {`${info.validStartDate ?? ""} ~ ${info.validEndDate ?? ""}`} {info.remark || "-"} ); } export default Connect([NS_ORG_QUALIFICATION_CERT], true)(QualificationCertPage);