import { Button, Modal, Space, Table } from "antd"; import { useState } from "react"; import { CAPABILITY_MAP, CERT_LEVEL_LABEL_BY_TYPE } from "~/enumerate/constant"; import { PERSONNEL_POST_TYPE_MAP, TITLE_LEVEL_MAP, } from "~/enumerate/enterpriseOptions"; import StaffViewModal from "~/components/StaffViewModal"; import OrgPersonnelSelectModal from "./OrgPersonnelSelectModal"; const PersonnelStep = ({ personnelList = [], disabled, onAdd, onRemove, managementFlag }) => { const [selectOpen, setSelectOpen] = useState(false); const [viewId, setViewId] = useState(""); const [selectedRowKeys, setSelectedRowKeys] = useState([]); const existingIds = personnelList.map((item) => String(item.sourcePersonnelId || item.id || ""), ); const handleBatchRemove = () => { const records = selectedRowKeys .map((key) => personnelList.find( (item) => String(item.sourcePersonnelId || item.id) === key, ), ) .filter(Boolean); if (records.length > 0) { onRemove?.(records); } }; return ( <>
备案人员信息 当前 {personnelList.length} 人 {!disabled && ( {selectedRowKeys.length > 0 && ( )} )}
String(record.sourcePersonnelId || record.id)} pagination={false} scroll={{ x: 1200, y: 400 }} dataSource={personnelList} rowSelection={ !disabled ? { selectedRowKeys, onChange: setSelectedRowKeys, } : undefined } columns={[ { title: "序号", width: 60, render: (_, __, index) => index + 1 }, { title: "姓名", dataIndex: "personName" }, { title: "职务", dataIndex: "personnelPositionType", width: 120, render: (v) => PERSONNEL_POST_TYPE_MAP[v] || "-", }, { title: "职称", dataIndex: "titleCodeArr", width: 100, render: (list) => { if (!Array.isArray(list) || !list.length) return "-"; return list .map( (item) => TITLE_LEVEL_MAP[item.titleCode] || item.titleCode, ) .join("、"); }, }, { title: "专业能力", dataIndex: "capabilityAssessment", render: (list) => { if (!Array.isArray(list) || !list.length) return "-"; return list .map( (item) => CAPABILITY_MAP[item.professionalCapabilityCode] || item.professionalCapabilityCode, ) .join("、"); }, }, { title: "职业资格等级及证书编号", dataIndex: "personnelCertFilingPageCOList", width: 200, render: (_, record) => { const cert = (record.personnelCertFilingPageCOList || []).find( (item) => item.certTypeCode === "evaluator", ); if (!cert) return "否"; const levelMap = CERT_LEVEL_LABEL_BY_TYPE.evaluator || {}; return (
{levelMap[cert.certLevel] || cert.certLevel || "-"}
{cert.certNo || "-"}
); }, }, { title: "是否具有注册安全工程师资格", width: 200, render: (_, record) => { const cert = (record.personnelCertFilingPageCOList || []).find( (item) => item.certTypeCode === "registered_safety_engineer", ); if (!cert) return "否"; const levelMap = CERT_LEVEL_LABEL_BY_TYPE.registered_safety_engineer || {}; return (
{levelMap[cert.certLevel] || cert.certLevel || "-"}
{cert.certNo || "-"}
); }, }, { title: "操作", width: 140, fixed: "right", render: (_, record) => ( {!disabled && ( )} ), }, ]} /> setSelectOpen(false)} onConfirm={(ids, rows) => { onAdd?.(ids, rows); setSelectOpen(false); }} /> setViewId("")} /> ); }; export default PersonnelStep;