/** * 供应商注册表单通用部分 * 封装了国内企业和境外企业注册表单相同的部分 */ import React from 'react'; import { Form, Input, Button, Select, Upload, DatePicker, Row, Col, Table, Radio, Cascader } from 'antd'; import { UploadOutlined, PlusOutlined, DeleteOutlined, } from '@ant-design/icons'; import { message } from 'antd'; const { Option } = Select; const { LIST_IGNORE } = Upload; // 中国省市区级联数据 export const addressOptions = [ { value: '330000', label: '浙江省', children: [ { value: '330100', label: '杭州市', children: [ { value: '330102', label: '上城区' }, { value: '330103', label: '下城区' }, { value: '330104', label: '江干区' }, { value: '330105', label: '拱墅区' }, { value: '330106', label: '西湖区' }, { value: '330108', label: '滨江区' }, ], }, ], }, { value: '310000', label: '上海市', children: [ { value: '310100', label: '上海市', children: [ { value: '310101', label: '黄浦区' }, { value: '310104', label: '徐汇区' }, { value: '310105', label: '长宁区' }, ], }, ], }, ]; interface CommonFormSectionsProps { form: any; } /** * 资质信息表单部分 * 包含资质证书类型、名称、编号、等级、发证机构、发证日期、有效期等 */ export const QualificationSection: React.FC = ({ form }) => { return ( <>
资质信息
{(fields, { add, remove }) => ( <> ({ ...field, key: field.key, fieldKey: field.name, }))} pagination={false} bordered size="middle" rowKey="key" columns={[ { title: '序号', dataIndex: 'name', width: 60, render: (_, __, index) => index + 1, }, { title: '资质证书类型', dataIndex: 'certType', render: (_, record) => ( ), }, { title: '资质名称', dataIndex: 'certName', render: (_, record) => ( ), }, { title: '资质证书编号', dataIndex: 'certNumber', render: (_, record) => ( ), }, { title: '资质类别和等级', dataIndex: 'certLevel', render: (_, record) => ( ), }, { title: '发证机构', dataIndex: 'issuingAuthority', render: (_, record) => ( ), }, { title: '发证日期', dataIndex: 'issueDate', render: (_, record) => ( ), }, { title: '资质有效期至', dataIndex: 'expiryDate', render: (_, record) => ( ), }, { title: '附件', dataIndex: 'certFile', render: (_, record) => ( ), }, { title: '操作', width: 70, render: (_, record) => ( ), }, ]} /> )} ); }; /** * 开票信息表单部分 * 包含纳税人类型、开票抬头、纳税人识别号、开票地址等 */ export const InvoiceSection: React.FC = ({ form }) => { return ( <>
开票信息
{ const isValidFormat = file.type === 'application/pdf' || file.type === 'image/jpeg' || file.type === 'image/png'; if (!isValidFormat) { message.error('只能上传PDF/JPG/PNG格式文件!'); } const isLt10M = file.size / 1024 / 1024 < 10; if (!isLt10M) { message.error('文件大小不能超过10MB!'); } return isValidFormat && isLt10M; }} > ); }; /** * 银行账户表单部分 * 包含开户银行、账户名称、账号、所在地区等 */ export const BankAccountSection: React.FC = ({ form }) => { return ( <>
银行账户
{(fields, { add, remove }) => ( <>
({ ...field, key: field.key, fieldKey: field.name, }))} pagination={false} bordered size="middle" rowKey="key" columns={[ { title: '序号', dataIndex: 'name', width: 60, render: (_, __, index) => index + 1, }, { title: '开户银行', dataIndex: 'bankName', render: (_, record) => ( ), }, { title: '账户名称', dataIndex: 'accountName', render: (_, record) => ( ), }, { title: '账号', dataIndex: 'accountNumber', render: (_, record) => ( ), }, { title: '国家、省、市', dataIndex: 'location', render: (_, record) => ( { return path.some((option) => { if (typeof option.label === 'string') { return ( option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1 ); } return false; }); }, }} /> ), }, { title: '操作', width: 70, render: (_, record) => ( ), }, ]} /> )} ); }; /** * 社会准则符合性自查问卷部分 * 包含填写人信息和问卷内容 */ export const SurveySection: React.FC = ({ form }) => { return ( <>
社会准则符合性自查问卷
填写人信息:
问卷:
{text}
, }, { title: '回复', width: 650, render: (_, record) => ( {record.id !== 1 && ( <> 尚未完全符合,但将在企业发展中完善 无任何计划 )} ), }, ]} /> ); }; /** * 供应商反商业贿赂承诺书和其他附件部分 */ export const AttachmentSection: React.FC = ({ form }) => { return ( <>
供应商反商业贿赂承诺书
请加盖公司公章后上传
{ const isValidFormat = file.type === 'application/pdf' || file.type === 'application/msword' || file.type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'; if (!isValidFormat) { message.error('只能上传PDF/DOC/DOCX格式文件!'); return LIST_IGNORE; } const isLt10M = file.size / 1024 / 1024 < 10; if (!isLt10M) { message.error('文件大小不能超过10MB!'); return LIST_IGNORE; } return isValidFormat && isLt10M; }} >
其他附件
其他附件(非必须上传)
{ const isLt20M = file.size / 1024 / 1024 < 20; if (!isLt20M) { message.error('文件大小不能超过20MB!'); return LIST_IGNORE; } return isLt20M; }} >
); };