更改注册页面样式;修改公告公示页面样式

This commit is contained in:
linxd
2025-07-09 10:02:46 +08:00
parent 4fd58b5fb9
commit 20145e4c51
9 changed files with 564 additions and 367 deletions

View File

@ -3,19 +3,6 @@ export default [
path: '/login', path: '/login',
component: '@/pages/login/login', component: '@/pages/login/login',
}, },
{
path: '/register',
routes: [
{
path: '/register/supplier',
component: '@/pages/register/supplier',
},
{
path: '/register/expert',
component: '@/pages/register/expert',
}
]
},
{ {
path: '/', path: '/',
component: '@/layouts/Index', component: '@/layouts/Index',
@ -84,9 +71,22 @@ export default [
name: 'helpQuestion', name: 'helpQuestion',
path: '/help/helpQuestion', path: '/help/helpQuestion',
component: '@/pages/help/helpQuestion', component: '@/pages/help/helpQuestion',
},
{
path: '/register',
routes: [
{
path: '/register/supplier',
component: '@/pages/register/supplier',
},
{
path: '/register/expert',
component: '@/pages/register/expert',
} }
] ]
}, },
]
},
{ {
exact: true, exact: true,

BIN
src/assets/img/fileIcon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -117,7 +117,8 @@
background-color: rgb(0, 79, 142); background-color: rgb(0, 79, 142);
border-color: rgb(0, 79, 142); border-color: rgb(0, 79, 142);
border-radius: 0; border-radius: 0;
&:hover, &:focus { &:hover,
&:focus {
background-color: rgba(0, 79, 142, 0.8); background-color: rgba(0, 79, 142, 0.8);
border-color: rgba(0, 79, 142, 0.8); border-color: rgba(0, 79, 142, 0.8);
} }
@ -182,6 +183,47 @@
font-size: 16px; font-size: 16px;
font-weight: 500; font-weight: 500;
} }
.downloadCenterBtn {
margin: 10px auto;
width: 150px;
color: #fff;
// #54d0d7 #0195a2 渐变
background: linear-gradient(to bottom, #54d0d7, #0195a2);
text-align: center;
padding: 5px 0;
cursor: pointer;
}
.downloadCenterBtn2 {
background: linear-gradient(to bottom, #005faf, #004f8f);
}
.downloadCenterDesc {
background-color: #ededed;
padding: 15px;
// border-radius: 5px;
// margin-top: 10px;
// font-size: 12px;
// color: #666;
}
}
.downloadCenterList {
list-style: none;
padding: 0;
margin: 0;
margin-top: 20px;
margin-bottom: 20px;
li {
display: flex;
align-items: center;
gap: 10px;
cursor: pointer;
line-height: 26px;
&:hover {
text-decoration: underline;
}
img {
width: 12px;
}
}
} }
.listItem { .listItem {
// border-bottom: 1px solid #f0f0f0; // border-bottom: 1px solid #f0f0f0;
@ -282,4 +324,3 @@
min-width: 180px; min-width: 180px;
text-align: right; text-align: right;
} }

View File

@ -169,17 +169,25 @@ const AnnouncePage: React.FC = () => {
<div className={styles.supplierService}> <div className={styles.supplierService}>
<div className={styles.supplierServiceTitle}></div> <div className={styles.supplierServiceTitle}></div>
<img src="" alt="" /> <img src="" alt="" />
<Button className={styles.downloadCenter}></Button> <div className={styles.downloadCenterBtn}></div>
<ul> <ul className={styles.downloadCenterList}>
<li> <li>
<i></i> <img src={require('@/assets/img/fileIcon.png')} alt="" />
<span></span>
</li>
<li>
<img src={require('@/assets/img/fileIcon.png')} alt="" />
<span></span>
</li>
<li>
<img src={require('@/assets/img/fileIcon.png')} alt="" />
<span></span> <span></span>
</li> </li>
</ul> </ul>
<Button></Button> <div className={styles.downloadCenterBtn + ' ' + styles.downloadCenterBtn2}></div>
<div> <div className={styles.downloadCenterDesc}>
. .
</div> </div>
</div> </div>

View File

@ -2,31 +2,49 @@
// 注册页面整体布局 // 注册页面整体布局
.register-page { .register-page {
display: flex; background: #fff;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #f0f2f5;
background-image: url('~@/assets/img/loginBg.jpg');
background-size: cover;
background-position: center;
position: relative; position: relative;
.register-banner{
width: 100%;
height: 400px;
margin-bottom: 20px;
img{
width: 100%;
height: 100%;
}
}
.register-radio-item{
border: 1px solid #d9d9d9;
display: inline-block;
padding: 5px 0;
min-width: 150px;
text-align: center;
margin-right: 10px;
&.active{
border-color: @main-color;
}
}
.border-box{
border: 1px solid #d9d9d9;
padding: 20px 50px;
margin-bottom: 30px;
}
} }
// 注册容器 // 注册容器
.register-container { .register-container {
width: 600px; // width: 600px;
padding: 30px; padding: 30px;
background: rgba(255, 255, 255, 0.95); // background: rgba(255, 255, 255, 0.95);
border-radius: 8px; // border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); // box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
position: relative; position: relative;
margin: 40px 0; // margin: 40px 0;
&.large-width{ // &.large-width{
width: 80%; // width: 80%;
position: absolute; // position: absolute;
top: 3%; // top: 3%;
} // }
} }
// 标题样式 // 标题样式
@ -62,9 +80,12 @@
.form-section-title { .form-section-title {
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
margin: 20px 0 16px 0; // margin: 0 0 20px 40px;
padding-left: 12px; // margin-left: 0px;
border-left: 4px solid #1890ff; margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #e5e5e5;
// border-left: 4px solid #1890ff;
} }
.questionnaire-header, .questionnaire-header,
@ -109,9 +130,9 @@
.register-form{ .register-form{
height: 75vh; // height: 75vh;
overflow-x: hidden; // overflow-x: hidden;
overflow-y: auto; // overflow-y: auto;
.ant-form-item-label-fix{ .ant-form-item-label-fix{
padding-left: 30px !important; padding-left: 30px !important;
} }

View File

@ -65,7 +65,9 @@ const SupplierRegister: React.FC = () => {
form form
.validateFields(['contactPhone']) .validateFields(['contactPhone'])
.then((values) => { .then((values) => {
message.success(intl.formatMessage({ id: 'register.captcha.sent' }, { phone: values.contactPhone })); message.success(
intl.formatMessage({ id: 'register.captcha.sent' }, { phone: values.contactPhone }),
);
let count = 60; let count = 60;
setCountdown(count); setCountdown(count);
@ -188,39 +190,41 @@ const SupplierRegister: React.FC = () => {
return ( return (
<div className="register-page "> <div className="register-page ">
<div className="register-container large-width"> <div className="register-banner">
<div className="back-home"> <img src={require('@/assets/img/banner.jpg')} alt="注册banner" />
<a onClick={() => history.push('/index')}>
<HomeOutlined /> {intl.formatMessage({ id: 'login.back.home' })}
</a>
</div> </div>
<div className="layout-content-main">
<div className="register-title"> {/* fetchingQuestions */}
{intl.formatMessage({ id: 'register.supplier.title' })} <Spin spinning={false}>
</div>
<Spin spinning={fetchingQuestions}>
<Form <Form
form={form} form={form}
name="supplier_register" name="supplier_register"
className="register-form" className="register-form"
onFinish={onFinish} onFinish={onFinish}
onFinishFailed={onFinishFailed} onFinishFailed={onFinishFailed}
layout="horizontal" layout="vertical"
labelAlign="right"
size="large" size="large"
labelCol={{ span: 7 }}
wrapperCol={{ span: 17 }}
> >
<Form.Item label={intl.formatMessage({ id: 'register.supplier.identityType' })} labelCol={{ span: 2 }} wrapperCol={{ span: 19 }}> <Form.Item>
<div style={{ textAlign: 'center' }}>
<span style={{ marginRight: 10 }}>:</span>
<Radio.Group <Radio.Group
onChange={handleSupplierTypeChange} onChange={handleSupplierTypeChange}
buttonStyle="solid" buttonStyle="solid"
value={supplierType} value={supplierType}
> >
<Radio.Button value="dvs">{intl.formatMessage({ id: 'register.supplier.domestic' })}</Radio.Button> <span className={`register-radio-item ${supplierType === 'dvs' ? 'active' : ''}`}>
<Radio.Button value="ovs">{intl.formatMessage({ id: 'register.supplier.foreign' })}</Radio.Button> <Radio value="dvs">
{intl.formatMessage({ id: 'register.supplier.domestic' })}
</Radio>
</span>
<span className={`register-radio-item ${supplierType === 'ovs' ? 'active' : ''}`}>
<Radio value="ovs">
{intl.formatMessage({ id: 'register.supplier.foreign' })}
</Radio>
</span>
</Radio.Group> </Radio.Group>
</div>
</Form.Item> </Form.Item>
{supplierType === 'dvs' ? ( {supplierType === 'dvs' ? (
@ -245,17 +249,20 @@ const SupplierRegister: React.FC = () => {
<Form.Item <Form.Item
name="agreement" name="agreement"
valuePropName="checked" valuePropName="checked"
labelCol={{ span: 2 }}
wrapperCol={{ span: 19 }}
rules={[ rules={[
{ {
validator: (_, value) => validator: (_, value) =>
value value
? Promise.resolve() ? Promise.resolve()
: Promise.reject(new Error(intl.formatMessage({ id: 'register.supplier.agreement.required' }))), : Promise.reject(
new Error(
intl.formatMessage({ id: 'register.supplier.agreement.required' }),
),
),
}, },
]} ]}
> >
<div style={{ textAlign: 'center' }}>
<Checkbox> <Checkbox>
{intl.formatMessage({ id: 'register.supplier.agreement' })} {intl.formatMessage({ id: 'register.supplier.agreement' })}
<Button <Button
@ -269,6 +276,7 @@ const SupplierRegister: React.FC = () => {
{intl.formatMessage({ id: 'register.supplier.commitment' })} {intl.formatMessage({ id: 'register.supplier.commitment' })}
</Button> </Button>
</Checkbox> </Checkbox>
</div>
</Form.Item> </Form.Item>
<Form.Item wrapperCol={{ span: 24 }}> <Form.Item wrapperCol={{ span: 24 }}>
<div style={{ textAlign: 'center' }}> <div style={{ textAlign: 'center' }}>
@ -303,18 +311,12 @@ const SupplierRegister: React.FC = () => {
<p>{intl.formatMessage({ id: 'register.supplier.commitment.content.intro1' })}</p> <p>{intl.formatMessage({ id: 'register.supplier.commitment.content.intro1' })}</p>
<p>{intl.formatMessage({ id: 'register.supplier.commitment.content.intro2' })}</p> <p>{intl.formatMessage({ id: 'register.supplier.commitment.content.intro2' })}</p>
<ol> <ol>
<li> <li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item1' })}</li>
{intl.formatMessage({ id: 'register.supplier.commitment.content.item1' })}
</li>
<li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item2' })}</li> <li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item2' })}</li>
<li> <li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item3' })}</li>
{intl.formatMessage({ id: 'register.supplier.commitment.content.item3' })}
</li>
<li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item4' })}</li> <li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item4' })}</li>
<li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item5' })}</li> <li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item5' })}</li>
<li> <li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item6' })}</li>
{intl.formatMessage({ id: 'register.supplier.commitment.content.item6' })}
</li>
<li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item7' })}</li> <li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item7' })}</li>
<li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item8' })}</li> <li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item8' })}</li>
</ol> </ol>

View File

@ -88,7 +88,7 @@ export const QualificationSection: React.FC<CommonFormSectionsProps> = ({ form }
getDict(); getDict();
}, []); }, []);
return ( return (
<> <div className="border-box">
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.qualification' })}</div> <div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.qualification' })}</div>
<Form.List name="coscoSupplierQualifications"> <Form.List name="coscoSupplierQualifications">
@ -255,7 +255,7 @@ export const QualificationSection: React.FC<CommonFormSectionsProps> = ({ form }
</> </>
)} )}
</Form.List> </Form.List>
</> </div>
); );
}; };
@ -276,7 +276,7 @@ export const InvoiceSection: React.FC<CommonFormSectionsProps> = ({ form }) => {
getDict(); getDict();
}, []); }, []);
return ( return (
<> <div className="border-box">
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.invoice' })}</div> <div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.invoice' })}</div>
<Row gutter={24}> <Row gutter={24}>
@ -360,7 +360,7 @@ export const InvoiceSection: React.FC<CommonFormSectionsProps> = ({ form }) => {
</Form.Item> </Form.Item>
</Col> </Col>
</Row> </Row>
</> </div>
); );
}; };
@ -371,7 +371,7 @@ export const InvoiceSection: React.FC<CommonFormSectionsProps> = ({ form }) => {
export const BankAccountSection: React.FC<CommonFormSectionsProps> = ({ form }) => { export const BankAccountSection: React.FC<CommonFormSectionsProps> = ({ form }) => {
const intl = useIntl(); const intl = useIntl();
return ( return (
<> <div className="border-box">
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.bankAccount' })}</div> <div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.bankAccount' })}</div>
<Form.List name="coscoSupplierBank"> <Form.List name="coscoSupplierBank">
@ -485,7 +485,7 @@ export const BankAccountSection: React.FC<CommonFormSectionsProps> = ({ form })
</> </>
)} )}
</Form.List> </Form.List>
</> </div>
); );
}; };
@ -503,7 +503,7 @@ export const SurveySection: React.FC<SurveySectionProps> = ({ form, surveyQuesti
console.log('调查问卷数据:', surveyQuestions); console.log('调查问卷数据:', surveyQuestions);
return ( return (
<> <div className="border-box">
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.survey' })}</div> <div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.survey' })}</div>
<div className="questionnaire-header">{intl.formatMessage({ id: 'register.survey.fillerInfo' })}</div> <div className="questionnaire-header">{intl.formatMessage({ id: 'register.survey.fillerInfo' })}</div>
@ -647,7 +647,7 @@ export const SurveySection: React.FC<SurveySectionProps> = ({ form, surveyQuesti
<Empty description={intl.formatMessage({ id: 'register.survey.noData' })} image={Empty.PRESENTED_IMAGE_SIMPLE} /> <Empty description={intl.formatMessage({ id: 'register.survey.noData' })} image={Empty.PRESENTED_IMAGE_SIMPLE} />
</div> </div>
)} )}
</> </div>
); );
}; };
@ -657,7 +657,7 @@ export const SurveySection: React.FC<SurveySectionProps> = ({ form, surveyQuesti
export const AttachmentSection: React.FC<CommonFormSectionsProps> = ({ form }) => { export const AttachmentSection: React.FC<CommonFormSectionsProps> = ({ form }) => {
const intl = useIntl(); const intl = useIntl();
return ( return (
<> <div className="border-box">
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.commitment' })}</div> <div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.commitment' })}</div>
<Row gutter={24}> <Row gutter={24}>
<Col span={12}> <Col span={12}>
@ -816,6 +816,6 @@ export const AttachmentSection: React.FC<CommonFormSectionsProps> = ({ form }) =
</Form.List> </Form.List>
</Col> </Col>
</Row> </Row>
</> </div>
); );
}; };

View File

@ -48,18 +48,30 @@ const DomesticForm: React.FC<DomesticFormProps> = ({
return ( return (
<> <>
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.basicInfo' })}</div> <div className="border-box">
<div className="form-section-title">
{intl.formatMessage({ id: 'register.form.section.basicInfo' })}
</div>
{/* 营业执照附件和有效期 */} {/* 营业执照附件和有效期 */}
<Row gutter={24}> <Row gutter={40}>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'enterpriseType']} name={['coscoSupplierBase', 'enterpriseType']}
label={intl.formatMessage({ id: 'register.domestic.enterpriseType' })} label={intl.formatMessage({ id: 'register.domestic.enterpriseType' })}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.enterpriseType.required' }) }]} rules={[
{
required: true,
message: intl.formatMessage({ id: 'register.domestic.enterpriseType.required' }),
},
]}
valuePropName="value" valuePropName="value"
> >
<Select placeholder={intl.formatMessage({ id: 'register.domestic.enterpriseType.placeholder' })}> <Select
placeholder={intl.formatMessage({
id: 'register.domestic.enterpriseType.placeholder',
})}
>
{entTypeList.map((item) => ( {entTypeList.map((item) => (
<Option key={item.code} value={item.code}> <Option key={item.code} value={item.code}>
{item.dicName} {item.dicName}
@ -68,11 +80,19 @@ const DomesticForm: React.FC<DomesticFormProps> = ({
</Select> </Select>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}></Col>
<Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'licenceAccessory']} name={['coscoSupplierBase', 'licenceAccessory']}
label={intl.formatMessage({ id: 'register.domestic.licenceAccessory' })} label={intl.formatMessage({ id: 'register.domestic.licenceAccessory' })}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.licenceAccessory.required' }) }]} rules={[
{
required: true,
message: intl.formatMessage({
id: 'register.domestic.licenceAccessory.required',
}),
},
]}
valuePropName="value" valuePropName="value"
> >
<FileUpload <FileUpload
@ -84,191 +104,301 @@ const DomesticForm: React.FC<DomesticFormProps> = ({
/> />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'licenceDate']} name={['coscoSupplierBase', 'licenceDate']}
label={intl.formatMessage({ id: 'register.domestic.licenceDate' })} label={intl.formatMessage({ id: 'register.domestic.licenceDate' })}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.licenceDate.required' }) }]} rules={[
{
required: true,
message: intl.formatMessage({ id: 'register.domestic.licenceDate.required' }),
},
]}
> >
<DatePicker placeholder={intl.formatMessage({ id: 'register.form.date.placeholder' })} style={{ width: '100%' }} format="YYYY-MM-DD" /> <DatePicker
placeholder={intl.formatMessage({ id: 'register.form.date.placeholder' })}
style={{ width: '100%' }}
format="YYYY-MM-DD"
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'name']} name={['coscoSupplierBase', 'name']}
label={intl.formatMessage({ id: 'register.domestic.companyName' })} label={intl.formatMessage({ id: 'register.domestic.companyName' })}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.companyName.required' }) }]} rules={[
{
required: true,
message: intl.formatMessage({ id: 'register.domestic.companyName.required' }),
},
]}
> >
<Input placeholder={intl.formatMessage({ id: 'register.domestic.companyName.placeholder' })} /> <Input
placeholder={intl.formatMessage({
id: 'register.domestic.companyName.placeholder',
})}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'nameEn']} name={['coscoSupplierBase', 'nameEn']}
label={intl.formatMessage({ id: 'register.domestic.companyNameEn' })} label={intl.formatMessage({ id: 'register.domestic.companyNameEn' })}
rules={[{ required: false, message: intl.formatMessage({ id: 'register.domestic.companyNameEn.required' }) }]} rules={[
{
required: false,
message: intl.formatMessage({ id: 'register.domestic.companyNameEn.required' }),
},
]}
> >
<Input placeholder={intl.formatMessage({ id: 'register.domestic.companyNameEn.placeholder' })} /> <Input
placeholder={intl.formatMessage({
id: 'register.domestic.companyNameEn.placeholder',
})}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'socialCreditCode']} name={['coscoSupplierBase', 'socialCreditCode']}
label={intl.formatMessage({ id: 'register.domestic.socialCreditCode' })} label={intl.formatMessage({ id: 'register.domestic.socialCreditCode' })}
rules={[ rules={[
{ required: true, message: intl.formatMessage({ id: 'register.domestic.socialCreditCode.required' }) }, {
{ pattern: /^[0-9A-HJ-NPQRTUWXY]{18}$/, message: intl.formatMessage({ id: 'register.domestic.socialCreditCode.pattern' }) }, required: true,
message: intl.formatMessage({
id: 'register.domestic.socialCreditCode.required',
}),
},
{
pattern: /^[0-9A-HJ-NPQRTUWXY]{18}$/,
message: intl.formatMessage({ id: 'register.domestic.socialCreditCode.pattern' }),
},
]} ]}
> >
<Input placeholder={intl.formatMessage({ id: 'register.domestic.socialCreditCode.placeholder' })} /> <Input
placeholder={intl.formatMessage({
id: 'register.domestic.socialCreditCode.placeholder',
})}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={24} className="ant-form-item-label-fix"> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'range']} name={['coscoSupplierBase', 'range']}
label={intl.formatMessage({ id: 'register.domestic.businessScope' })} label={intl.formatMessage({ id: 'register.domestic.businessScope' })}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.businessScope.required' }) }]} rules={[
labelCol={{ span: 2 }} {
wrapperCol={{ span: 22 }} required: true,
message: intl.formatMessage({ id: 'register.domestic.businessScope.required' }),
},
]}
> >
<TextArea <Input
placeholder={intl.formatMessage({ id: 'register.domestic.businessScope.placeholder' })} placeholder={intl.formatMessage({
rows={2} id: 'register.domestic.businessScope.placeholder',
})}
maxLength={200} maxLength={200}
showCount showCount
style={{ resize: 'none' }} style={{ resize: 'none' }}
/> />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={24} className="ant-form-item-label-fix"> <Col span={12}>
<Form.Item <Form.Item
labelCol={{ span: 2 }}
wrapperCol={{ span: 22 }}
name={['coscoSupplierBase', 'regAddress']} name={['coscoSupplierBase', 'regAddress']}
label={intl.formatMessage({ id: 'register.domestic.regAddress' })} label={intl.formatMessage({ id: 'register.domestic.regAddress' })}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.regAddress.required' }) }]} rules={[
> {
<Input prefix={<EnvironmentOutlined />} placeholder={intl.formatMessage({ id: 'register.domestic.regAddress.placeholder' })} /> required: true,
</Form.Item> message: intl.formatMessage({ id: 'register.domestic.regAddress.required' }),
</Col> },
<Col span={24} className="ant-form-item-label-fix"> ]}
<Form.Item
name={['coscoSupplierBase', 'workAddress']}
label={intl.formatMessage({ id: 'register.domestic.workAddress' })}
labelCol={{ span: 2 }}
wrapperCol={{ span: 22 }}
> >
<Input <Input
prefix={<EnvironmentOutlined />} prefix={<EnvironmentOutlined />}
placeholder={intl.formatMessage({ id: 'register.domestic.workAddress.placeholder' })} placeholder={intl.formatMessage({ id: 'register.domestic.regAddress.placeholder' })}
/> />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={24} className="ant-form-item-label-fix"> <Col span={12}>
<Form.Item
name={['coscoSupplierBase', 'workAddress']}
label={intl.formatMessage({ id: 'register.domestic.workAddress' })}
>
<Input
prefix={<EnvironmentOutlined />}
placeholder={intl.formatMessage({
id: 'register.domestic.workAddress.placeholder',
})}
/>
</Form.Item>
</Col>
<Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'parentCompanyInvestor']} name={['coscoSupplierBase', 'parentCompanyInvestor']}
label={intl.formatMessage({ id: 'register.domestic.parentCompany' })} label={intl.formatMessage({ id: 'register.domestic.parentCompany' })}
labelCol={{ span: 2 }}
wrapperCol={{ span: 22 }}
> >
<Input placeholder={intl.formatMessage({ id: 'register.domestic.parentCompany.placeholder' })} /> <Input
placeholder={intl.formatMessage({
id: 'register.domestic.parentCompany.placeholder',
})}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'legalPerson']} name={['coscoSupplierBase', 'legalPerson']}
label={intl.formatMessage({ id: 'register.domestic.legalPerson' })} label={intl.formatMessage({ id: 'register.domestic.legalPerson' })}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.legalPerson.required' }) }]} rules={[
{
required: true,
message: intl.formatMessage({ id: 'register.domestic.legalPerson.required' }),
},
]}
> >
<Input placeholder={intl.formatMessage({ id: 'register.domestic.legalPerson.placeholder' })} /> <Input
placeholder={intl.formatMessage({
id: 'register.domestic.legalPerson.placeholder',
})}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'idCard']} name={['coscoSupplierBase', 'idCard']}
label={intl.formatMessage({ id: 'register.domestic.idCard' })} label={intl.formatMessage({ id: 'register.domestic.idCard' })}
> >
<Input placeholder={intl.formatMessage({ id: 'register.domestic.idCard.placeholder' })} /> <Input
placeholder={intl.formatMessage({ id: 'register.domestic.idCard.placeholder' })}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'capital']} name={['coscoSupplierBase', 'capital']}
label={intl.formatMessage({ id: 'register.domestic.capital' })} label={intl.formatMessage({ id: 'register.domestic.capital' })}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.capital.required' }) }]} rules={[
{
required: true,
message: intl.formatMessage({ id: 'register.domestic.capital.required' }),
},
]}
> >
<Input type="number" placeholder={intl.formatMessage({ id: 'register.domestic.capital.placeholder' })} addonBefore="人民币" addonAfter="万元" /> <Input
type="number"
placeholder={intl.formatMessage({ id: 'register.domestic.capital.placeholder' })}
addonBefore="人民币"
addonAfter="万元"
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'contactsName']} name={['coscoSupplierBase', 'contactsName']}
label={intl.formatMessage({ id: 'register.domestic.contactsName' })} label={intl.formatMessage({ id: 'register.domestic.contactsName' })}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.contactsName.required' }) }]} rules={[
{
required: true,
message: intl.formatMessage({ id: 'register.domestic.contactsName.required' }),
},
]}
> >
<Input placeholder={intl.formatMessage({ id: 'register.domestic.contactsName.placeholder' })} /> <Input
placeholder={intl.formatMessage({
id: 'register.domestic.contactsName.placeholder',
})}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'contactsPhone']} name={['coscoSupplierBase', 'contactsPhone']}
label={intl.formatMessage({ id: 'register.domestic.contactsPhone' })} label={intl.formatMessage({ id: 'register.domestic.contactsPhone' })}
rules={[ rules={[
{ required: true, message: intl.formatMessage({ id: 'register.domestic.contactsPhone.required' }) }, {
{ pattern: /^1[3-9]\d{9}$/, message: intl.formatMessage({ id: 'register.domestic.contactsPhone.pattern' }) }, required: true,
message: intl.formatMessage({ id: 'register.domestic.contactsPhone.required' }),
},
{
pattern: /^1[3-9]\d{9}$/,
message: intl.formatMessage({ id: 'register.domestic.contactsPhone.pattern' }),
},
]} ]}
extra="该手机号用于后续联系和召回密码"
> >
<Input prefix={<MobileOutlined />} placeholder={intl.formatMessage({ id: 'register.domestic.contactsPhone.placeholder' })} /> <Input
prefix={<MobileOutlined />}
placeholder={intl.formatMessage({
id: 'register.domestic.contactsPhone.placeholder',
})}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name="captcha" name="captcha"
label={intl.formatMessage({ id: 'register.captcha.label' })} label={intl.formatMessage({ id: 'register.captcha.label' })}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.captcha.required' }) }]} rules={[
{
required: true,
message: intl.formatMessage({ id: 'register.captcha.required' }),
},
]}
> >
<Row gutter={8}> <Input
<Col span={14}> placeholder={intl.formatMessage({ id: 'register.captcha.placeholder' })}
<Input placeholder={intl.formatMessage({ id: 'register.captcha.placeholder' })} /> addonAfter={
</Col>
<Col span={10}>
<Button <Button
type="primary" type="link"
style={{ marginTop: 0 }} size="small"
// style={{ marginTop: 0 }}
disabled={countdown > 0} disabled={countdown > 0}
onClick={handleGetCaptcha} onClick={handleGetCaptcha}
> >
{countdown > 0 ? `${countdown}s` : intl.formatMessage({ id: 'register.captcha.get' })} {countdown > 0
? `${countdown}s`
: intl.formatMessage({ id: 'register.captcha.get' })}
</Button> </Button>
</Col> }
</Row> />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'contactsEmail']} name={['coscoSupplierBase', 'contactsEmail']}
label={intl.formatMessage({ id: 'register.domestic.contactsEmail' })} label={intl.formatMessage({ id: 'register.domestic.contactsEmail' })}
rules={[ rules={[
{ type: 'email', message: intl.formatMessage({ id: 'register.email.invalid' }) }, { type: 'email', message: intl.formatMessage({ id: 'register.email.invalid' }) },
{ required: true, message: intl.formatMessage({ id: 'register.domestic.contactsEmail.required' }) }, {
required: true,
message: intl.formatMessage({ id: 'register.domestic.contactsEmail.required' }),
},
]} ]}
> >
<Input prefix={<MailOutlined />} placeholder={intl.formatMessage({ id: 'register.domestic.contactsEmail.placeholder' })} /> <Input
prefix={<MailOutlined />}
placeholder={intl.formatMessage({
id: 'register.domestic.contactsEmail.placeholder',
})}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'telephone']} name={['coscoSupplierBase', 'telephone']}
label={intl.formatMessage({ id: 'register.domestic.telephone' })} label={intl.formatMessage({ id: 'register.domestic.telephone' })}
> >
<Input placeholder={intl.formatMessage({ id: 'register.domestic.telephone.placeholder' })} /> <Input
placeholder={intl.formatMessage({ id: 'register.domestic.telephone.placeholder' })}
/>
</Form.Item> </Form.Item>
</Col> </Col>
</Row> </Row>
</div>
{/* 使用通用表单组件 */} {/* 使用通用表单组件 */}
<QualificationSection form={form} /> <QualificationSection form={form} />

View File

@ -44,11 +44,12 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
return ( return (
<> <>
<div className='border-box'>
{/* 境外企业特有的基本信息部分 */} {/* 境外企业特有的基本信息部分 */}
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.basicInfo' })}</div> <div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.basicInfo' })}</div>
<Row gutter={24}> <Row gutter={40}>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'name']} name={['coscoSupplierBase', 'name']}
label={intl.formatMessage({ id: 'register.foreign.companyName' })} label={intl.formatMessage({ id: 'register.foreign.companyName' })}
@ -57,7 +58,7 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
<Input placeholder={intl.formatMessage({ id: 'register.foreign.companyName.placeholder' })} /> <Input placeholder={intl.formatMessage({ id: 'register.foreign.companyName.placeholder' })} />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'nameEn']} name={['coscoSupplierBase', 'nameEn']}
label={intl.formatMessage({ id: 'register.foreign.companyNameEn' })} label={intl.formatMessage({ id: 'register.foreign.companyNameEn' })}
@ -66,7 +67,7 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
<Input placeholder={intl.formatMessage({ id: 'register.foreign.companyNameEn.placeholder' })} /> <Input placeholder={intl.formatMessage({ id: 'register.foreign.companyNameEn.placeholder' })} />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name="country" name="country"
label={intl.formatMessage({ id: 'register.foreign.country' })} label={intl.formatMessage({ id: 'register.foreign.country' })}
@ -86,7 +87,7 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
</Select> </Select>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'vat']} name={['coscoSupplierBase', 'vat']}
label={intl.formatMessage({ id: 'register.foreign.vat' })} label={intl.formatMessage({ id: 'register.foreign.vat' })}
@ -95,33 +96,28 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
<Input placeholder={intl.formatMessage({ id: 'register.foreign.vat.placeholder' })} /> <Input placeholder={intl.formatMessage({ id: 'register.foreign.vat.placeholder' })} />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={24} className="ant-form-item-label-fix"> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'workAddress']} name={['coscoSupplierBase', 'workAddress']}
label={intl.formatMessage({ id: 'register.foreign.workAddress' })} label={intl.formatMessage({ id: 'register.foreign.workAddress' })}
labelCol={{ span: 2 }}
wrapperCol={{ span: 22 }}
> >
<Input prefix={<EnvironmentOutlined />} placeholder={intl.formatMessage({ id: 'register.foreign.workAddress.placeholder' })} /> <Input prefix={<EnvironmentOutlined />} placeholder={intl.formatMessage({ id: 'register.foreign.workAddress.placeholder' })} />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={24} className="ant-form-item-label-fix"> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'range']} name={['coscoSupplierBase', 'range']}
label={intl.formatMessage({ id: 'register.foreign.businessScope' })} label={intl.formatMessage({ id: 'register.foreign.businessScope' })}
labelCol={{ span: 2 }}
wrapperCol={{ span: 22 }}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.foreign.businessScope.required' }) }]} rules={[{ required: true, message: intl.formatMessage({ id: 'register.foreign.businessScope.required' }) }]}
> >
<TextArea <Input
placeholder={intl.formatMessage({ id: 'register.foreign.businessScope.placeholder' })} placeholder={intl.formatMessage({ id: 'register.foreign.businessScope.placeholder' })}
rows={2}
maxLength={200} maxLength={200}
showCount showCount
/> />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'parentCompanyInvestor']} name={['coscoSupplierBase', 'parentCompanyInvestor']}
label={intl.formatMessage({ id: 'register.foreign.parentCompany' })} label={intl.formatMessage({ id: 'register.foreign.parentCompany' })}
@ -129,7 +125,7 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
<Input placeholder={intl.formatMessage({ id: 'register.foreign.parentCompany.placeholder' })} /> <Input placeholder={intl.formatMessage({ id: 'register.foreign.parentCompany.placeholder' })} />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'legalPerson']} name={['coscoSupplierBase', 'legalPerson']}
label={intl.formatMessage({ id: 'register.foreign.legalPerson' })} label={intl.formatMessage({ id: 'register.foreign.legalPerson' })}
@ -138,7 +134,7 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
<Input placeholder={intl.formatMessage({ id: 'register.foreign.legalPerson.placeholder' })} /> <Input placeholder={intl.formatMessage({ id: 'register.foreign.legalPerson.placeholder' })} />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item label={intl.formatMessage({ id: 'register.foreign.capital' })} required style={{ marginBottom: 0 }}> <Form.Item label={intl.formatMessage({ id: 'register.foreign.capital' })} required style={{ marginBottom: 0 }}>
<Input.Group compact style={{ display: 'flex' }}> <Input.Group compact style={{ display: 'flex' }}>
<Form.Item name="currency" noStyle initialValue="USD"> <Form.Item name="currency" noStyle initialValue="USD">
@ -164,7 +160,7 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
</Input.Group> </Input.Group>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'contactsName']} name={['coscoSupplierBase', 'contactsName']}
label={intl.formatMessage({ id: 'register.foreign.contactsName' })} label={intl.formatMessage({ id: 'register.foreign.contactsName' })}
@ -173,7 +169,7 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
<Input placeholder={intl.formatMessage({ id: 'register.foreign.contactsName.placeholder' })} /> <Input placeholder={intl.formatMessage({ id: 'register.foreign.contactsName.placeholder' })} />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'contactsEmail']} name={['coscoSupplierBase', 'contactsEmail']}
label={intl.formatMessage({ id: 'register.foreign.contactsEmail' })} label={intl.formatMessage({ id: 'register.foreign.contactsEmail' })}
@ -181,7 +177,7 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
{ type: 'email', message: intl.formatMessage({ id: 'register.email.invalid' }) }, { type: 'email', message: intl.formatMessage({ id: 'register.email.invalid' }) },
{ required: true, message: intl.formatMessage({ id: 'register.foreign.contactsEmail.required' }) }, { required: true, message: intl.formatMessage({ id: 'register.foreign.contactsEmail.required' }) },
]} ]}
extra={intl.formatMessage({ id: 'register.foreign.contactsEmail.extra' })}
> >
<Input prefix={<MailOutlined />} placeholder={intl.formatMessage({ id: 'register.foreign.contactsEmail.placeholder' })} addonAfter={ <Input prefix={<MailOutlined />} placeholder={intl.formatMessage({ id: 'register.foreign.contactsEmail.placeholder' })} addonAfter={
<Button <Button
@ -195,20 +191,19 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
} /> } />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name="verificationCode" name="verificationCode"
label={intl.formatMessage({ id: 'register.captcha.label' })} label="验证码"
rules={[ rules={[
{ required: true, message: intl.formatMessage({ id: 'register.captcha.required' }) }, { required: true, message: "请输入验证码" },
{ pattern: /^\d{6}$/, message: intl.formatMessage({ id: 'register.captcha.pattern' }) }, { pattern: /^\d{6}$/, message: "请输入6位验证码" },
]} ]}
extra={intl.formatMessage({ id: 'register.foreign.contactsEmail.extra' })}
> >
<Input placeholder={intl.formatMessage({ id: 'register.captcha.placeholder' })} /> <Input placeholder="请输入验证码" />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}> <Col span={12}>
<Form.Item <Form.Item
name={['coscoSupplierBase', 'contactsPhone']} name={['coscoSupplierBase', 'contactsPhone']}
label={intl.formatMessage({ id: 'register.foreign.contactsPhone' })} label={intl.formatMessage({ id: 'register.foreign.contactsPhone' })}
@ -223,7 +218,7 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
</Form.Item> </Form.Item>
</Col> </Col>
</Row> </Row>
</div>
{/* 使用通用表单组件 */} {/* 使用通用表单组件 */}
<QualificationSection form={form} /> <QualificationSection form={form} />
<InvoiceSection form={form} /> <InvoiceSection form={form} />