import React, { useState } from "react";
import { Button, Descriptions, Table, Tag, Tabs, Select, Modal, Space } from "antd";
import {
MOCK_MATERIALS,
MOCK_PERSONNEL,
MOCK_EQUIPMENT,
MOCK_EQUIP_DETAIL,
MOCK_PERSONNEL_DETAIL,
MOCK_CERTIFICATES,
CALIBRATION_MAP,
} from "../mockData";
/**
* 共享组件:资质备案 5 个标签页(详情 / 审核共用)
* @param {Object} props
* @param {Object} props.detail - 备案详情数据
* @param {boolean} [props.isReview=false] - 审核模式(开启后材料上传显示"上传附件"+"符合性"列)
* @param {Object} [props.compliance={}] - 审核模式下的符合性状态
* @param {Function} [props.onComplianceChange] - 符合性变动回调
* @param {Function} [props.onPersonnelView] - 查看人员详情回调(覆盖默认弹窗)
* @param {Function} [props.onEquipView] - 查看设备详情回调 (record) => void(覆盖默认弹窗)
*/
const FilingTabs = ({
detail,
isReview = false,
compliance = {},
onComplianceChange,
onPersonnelView,
onEquipView,
}) => {
const [personnelVisible, setPersonnelVisible] = useState(false);
const [equipVisible, setEquipVisible] = useState(false);
const [selectedEquip, setSelectedEquip] = useState(null);
const baseCols = [
{ title: "序号", width: 60, render: (_, __, i) => i + 1 },
{ title: "材料名称", dataIndex: "name" },
];
const materialCols = isReview
? [
...baseCols,
{ title: "上传附件", dataIndex: "attachment", width: 120 },
{ title: "格式", dataIndex: "format", width: 80 },
{ title: "状态", dataIndex: "status", width: 100, render: () => 已上传 },
{ title: "符合性", width: 100,
render: (_, record) => (
),
},
]
: [
...baseCols,
{ title: "格式", dataIndex: "format", width: 80 },
{ title: "状态", dataIndex: "status", width: 100, render: () => 已上传 },
{ title: "操作", width: 80, render: () => },
];
const items = [
{
key: "info",
label: "1.备案基本信息",
children: (
{detail.scopeName}
{detail.filingRegion}
{detail.orgName}
{detail.orgType}
{detail.creditCode}
{detail.officeAddress}
{detail.registerAddress}
{detail.certNo}
{detail.website}
{detail.legalPerson} / {detail.legalPhone}
{detail.contactPerson} / {detail.contactPhone}
{detail.fixedAssets}
{detail.officeArea}
{detail.archiveArea}
{detail.evaluatorCount}
{detail.registerEngineerCount}
{detail.description}
),
},
{
key: "materials",
label: "2.备案材料上传",
children: (
),
},
{
key: "promise",
label: "3.法定代表人承诺书",
children: (
申请单位法定代表人承诺书
本人{detail.legalPerson}是{detail.orgName}法定代表人,现代表我单位承诺如下:
一、我单位自愿申请安全评价机构资质。本人已经认真学习、了解并掌握《安全生产法》《行政许可法》《行政处罚法》及《安全评价检测检验机构管理办法》等法律法规的相关规定,知悉开展安全评价工作的法律责任、义务、权力和风险。
二、本人承诺本单位满足《安全评价检测检验机构管理办法》所规定的资质条件要求,本人及单位三年内无重大违法失信行为,申请资质所提交的有关材料真实、合法、有效,并对其真实性、合法性承担相应法律责任,接受并配合有关部门对本单位开展的专业能力审查。
三、如能获准资质,本单位将严格按照法律法规、规章标准的要求开展安全评价活动,遵守执业准则和职业道德,并对作出的安全评价报告结果承担法律责任,自觉接受应急管理部门、煤矿安全监督管理部门等行政执法部门的监督检查。
法定代表人:{detail.legalPerson}(已签名)
(单位盖章)
2026年06月25日
),
},
{
key: "personnel",
label: "4.备案人员管理",
children: (
i + 1 },
{ title: "人员姓名", dataIndex: "name", width: 100 },
{ title: "类型", dataIndex: "type", width: 100 },
{ title: "职务", dataIndex: "position", width: 120 },
{ title: "职称", dataIndex: "title", width: 100 },
{ title: "专业能力", dataIndex: "ability" },
{ title: "操作", width: 80,
render: () => (
),
},
]}
/>
),
},
{
key: "equipment",
label: "5.装备清单",
children: (
i + 1 },
{ title: "装备名称", dataIndex: "name", width: 140 },
{ title: "规格型号", dataIndex: "model", width: 120 },
{ title: "生产厂家", dataIndex: "manufacturer", width: 140 },
{ title: "计量检定情况", dataIndex: "calibration", width: 120,
render: (s) => {
const cfg = CALIBRATION_MAP[s];
return cfg ? {cfg.label} : s;
},
},
{ title: "操作", width: 80,
render: (_, record) => (
),
},
]}
/>
),
},
];
return (
<>
{/* 人员详细信息弹窗 */}
setPersonnelVisible(false)}
width={720}
footer={(originNode, { CancelBtn }) => }
>
{MOCK_PERSONNEL_DETAIL.name}
{MOCK_PERSONNEL_DETAIL.gender}
{MOCK_PERSONNEL_DETAIL.qualScope}
{MOCK_PERSONNEL_DETAIL.birthDate}
{MOCK_PERSONNEL_DETAIL.officeAddress}
{MOCK_PERSONNEL_DETAIL.major}
{MOCK_PERSONNEL_DETAIL.certLevel}
{MOCK_PERSONNEL_DETAIL.email}
{MOCK_PERSONNEL_DETAIL.personnelType}
{MOCK_PERSONNEL_DETAIL.idCard}
{MOCK_PERSONNEL_DETAIL.currentAddress}
{MOCK_PERSONNEL_DETAIL.education}
{MOCK_PERSONNEL_DETAIL.graduateSchool}
{MOCK_PERSONNEL_DETAIL.position}
{MOCK_PERSONNEL_DETAIL.isRegisterEngineer}
{MOCK_PERSONNEL_DETAIL.publications}
{MOCK_PERSONNEL_DETAIL.selfDeclaration}
{MOCK_PERSONNEL_DETAIL.workExperience}
专业能力证明.pdf
证照信息
},
]}
/>
{/* 设备详细信息弹窗 */}
setEquipVisible(false)}
width={600}
footer={}
>
{selectedEquip && (
{MOCK_EQUIP_DETAIL.name}
{MOCK_EQUIP_DETAIL.model}
{MOCK_EQUIP_DETAIL.category}
{MOCK_EQUIP_DETAIL.type}
{MOCK_EQUIP_DETAIL.manufacturer}
{MOCK_EQUIP_DETAIL.calibrationType}
{MOCK_EQUIP_DETAIL.flowDesc}
{MOCK_EQUIP_DETAIL.maxFlow}
{MOCK_EQUIP_DETAIL.minFlow}
{MOCK_EQUIP_DETAIL.dualChannel}
{MOCK_EQUIP_DETAIL.calibInitValue}
{MOCK_EQUIP_DETAIL.calibUnit}
{CALIBRATION_MAP[MOCK_EQUIP_DETAIL.status]?.label}
)}
>
);
};
export default FilingTabs;