暂时对接注册

This commit is contained in:
linxd
2025-07-17 14:47:13 +08:00
parent 46c9a0f679
commit a419834198
10 changed files with 695 additions and 433 deletions

View File

@ -3,4 +3,5 @@ export default {
'home.data.contactsEmail': 'contactsEmailEn',
'home.data.address': 'addressEn',
'home.data.addressEn': 'address',
'home.data.contactsConsult': 'contactsConsultEn',
};

View File

@ -3,4 +3,5 @@ export default {
'home.data.contactsEmail': 'contactsEmail',
'home.data.address': 'address',
'home.data.addressEn': 'addressEn',
'home.data.contactsConsult': 'contactsConsult',
};

View File

@ -194,10 +194,14 @@
.questionItem {
line-height: 50px;
border-bottom: 1px solid rgba(@main-text-color-2, 0.5);
display: flex;
.icon {
margin-right: 10px;
font-size: 18px;
}
p{
margin: 0;
}
}
}
}

View File

@ -316,15 +316,15 @@ const IndexPage: React.FC<any> = ({ user }) => {
<img src={aboutUs.addressImg} alt="" />
<div className="questionItem">
<IconFont type="icon-dizhi" className="icon" />
{aboutUs[intl.formatMessage({ id: 'home.data.address' })]}
<span dangerouslySetInnerHTML={{ __html: aboutUs[intl.formatMessage({ id: 'home.data.address' })] }} />
</div>
<div className="questionItem">
<IconFont type="icon-dianhua" className="icon" />
{aboutUs[intl.formatMessage({ id: 'home.data.contactsPhone' })]}
<span dangerouslySetInnerHTML={{ __html: aboutUs[intl.formatMessage({ id: 'home.data.contactsConsult' })] }} />
</div>
<div className="questionItem">
<IconFont type="icon-youxiang" className="icon" />
{aboutUs[intl.formatMessage({ id: 'home.data.contactsEmail' })]}
<span dangerouslySetInnerHTML={{ __html: aboutUs[intl.formatMessage({ id: 'home.data.contactsEmail' })] }} />
</div>
</div>
</Col>
@ -346,10 +346,7 @@ const IndexPage: React.FC<any> = ({ user }) => {
<div className="contactBox">
<div className="blockTitle mt20"></div>
<div className="contact">
<p style={{ marginTop: 20 }}>客服1: 400-300-9989</p>
<p>客服1: 400-300-9989</p>
<p>客服1: 400-300-9989</p>
<p>客服1: 400-300-9989</p>
<span dangerouslySetInnerHTML={{ __html: aboutUs[intl.formatMessage({ id: 'home.data.contactsPhone' })] }} />
</div>
</div>
</Col>

View File

@ -49,7 +49,6 @@ const SupplierRegister: React.FC = () => {
}
} catch (error) {
console.error('获取问卷列表出错:', error);
message.error(intl.formatMessage({ id: 'register.submit.error' }));
} finally {
setFetchingQuestions(false);
}

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,11 @@
/* 境内企业/机构 表单项 */
import React from 'react';
import { Form, Input, Button, Select, DatePicker, Row, Col, message } from 'antd';
import React, { useEffect, useState } from 'react';
import { Form, Input, Button, Select, DatePicker, Row, Col, message, Space } from 'antd';
import { MobileOutlined, MailOutlined, EnvironmentOutlined } from '@ant-design/icons';
import { useIntl } from 'umi';
import FileUpload from '@/components/FileUpload';
import type { DictItem } from '@/servers/api/dict';
import { getDictList } from '@/servers/api/dict';
/**
* 引入通用表单组件
@ -45,7 +46,32 @@ const DomesticForm: React.FC<DomesticFormProps> = ({
entTypeList,
}) => {
const intl = useIntl();
// 企业类别
const [companyTypeOptions, setCompanyTypeOptions] = useState<DictItem[]>([]);
// 联系人身份类别
const [contactsTypeOptions, setContactsTypeOptions] = useState<DictItem[]>([]);
useEffect(() => {
// 设置供应商类型为境内企业
form.setFieldsValue({
coscoSupplierBase: {
...form.getFieldValue('coscoSupplierBase'),
supplierType: 'dvs',
},
});
// 从字典中 联系人身份类别contacts_type 获取数据
getDictList('contacts_type').then((res) => {
if (res.code === 200) {
setContactsTypeOptions(res.data);
}
});
// 企业类别
getDictList('enterprise_type').then((res) => {
if (res.code === 200) {
setCompanyTypeOptions(res.data);
}
});
}, []);
return (
<>
<div className="border-box">
@ -72,7 +98,7 @@ const DomesticForm: React.FC<DomesticFormProps> = ({
id: 'register.domestic.enterpriseType.placeholder',
})}
>
{entTypeList.map((item) => (
{companyTypeOptions.map((item) => (
<Option key={item.code} value={item.code}>
{item.dicName}
</Option>
@ -265,14 +291,37 @@ const DomesticForm: React.FC<DomesticFormProps> = ({
</Form.Item>
</Col>
<Col span={12}>
<Form.Item required label={intl.formatMessage({ id: 'register.domestic.idCard' })}>
<Space.Compact size="large">
<Form.Item
name={['coscoSupplierBase', 'contactsType']}
noStyle
rules={[{ required: true, message: '请选择联系人证件类型' }]}
>
<Select placeholder="请选择类型">
{contactsTypeOptions.map((item) => (
<Option key={item.code} value={item.code}>
{item.dicName}
</Option>
))}
</Select>
</Form.Item>
<Form.Item
name={['coscoSupplierBase', 'idCard']}
label={intl.formatMessage({ id: 'register.domestic.idCard' })}
noStyle
rules={[
{
required: true,
message: intl.formatMessage({ id: 'register.domestic.idCard.placeholder' }),
},
]}
>
<Input
placeholder={intl.formatMessage({ id: 'register.domestic.idCard.placeholder' })}
/>
</Form.Item>
</Space.Compact>
</Form.Item>
</Col>
<Col span={12}>

View File

@ -1,5 +1,5 @@
/* 境外企业 表单项 */
import React from 'react';
import React, { useEffect, useState } from 'react';
import { Form, Input, Button, Select, Row, Col } from 'antd';
import { MobileOutlined, MailOutlined, EnvironmentOutlined } from '@ant-design/icons';
import { useIntl } from 'umi';
@ -14,6 +14,7 @@ import {
AttachmentSection,
} from './CommonFormSections';
import type { DictItem } from '@/servers/api/dict';
import { getregionInternational } from '@/servers/api/register';
const { Option } = Select;
const { TextArea } = Input;
@ -41,7 +42,23 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
entTypeList,
}) => {
const intl = useIntl();
// 全球
const [regionOptions, setRegionOptions] = useState<API.RegionOption[]>([]);
useEffect(() => {
// 设置供应商类型为境外企业
form.setFieldsValue({
coscoSupplierBase: {
...form.getFieldValue('coscoSupplierBase'),
supplierType: 'ovs'
}
});
getregionInternational().then((res) => {
if (res.code === 200) {
setRegionOptions(res.data);
}
});
}, []);
return (
<>
<div className='border-box'>
@ -69,21 +86,14 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
</Col>
<Col span={12}>
<Form.Item
name="country"
name={['coscoSupplierBase', 'nation']}
label={intl.formatMessage({ id: 'register.foreign.country' })}
rules={[{ required: true, message: intl.formatMessage({ id: 'register.foreign.country.required' }) }]}
>
<Select placeholder={intl.formatMessage({ id: 'register.foreign.country.placeholder' })}>
<Option value="US">{intl.formatMessage({ id: 'register.foreign.country.US' })}</Option>
<Option value="UK">{intl.formatMessage({ id: 'register.foreign.country.UK' })}</Option>
<Option value="JP">{intl.formatMessage({ id: 'register.foreign.country.JP' })}</Option>
<Option value="DE">{intl.formatMessage({ id: 'register.foreign.country.DE' })}</Option>
<Option value="FR">{intl.formatMessage({ id: 'register.foreign.country.FR' })}</Option>
<Option value="AU">{intl.formatMessage({ id: 'register.foreign.country.AU' })}</Option>
<Option value="CA">{intl.formatMessage({ id: 'register.foreign.country.CA' })}</Option>
<Option value="SG">{intl.formatMessage({ id: 'register.foreign.country.SG' })}</Option>
<Option value="HK">{intl.formatMessage({ id: 'register.foreign.country.HK' })}</Option>
<Option value="OTHER">{intl.formatMessage({ id: 'register.foreign.country.OTHER' })}</Option>
{regionOptions.map((item) => {
return <Option key={item.id} value={item.id}>{item.name}</Option>;
})}
</Select>
</Form.Item>
</Col>
@ -137,7 +147,7 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
<Col span={12}>
<Form.Item label={intl.formatMessage({ id: 'register.foreign.capital' })} required style={{ marginBottom: 0 }}>
<Input.Group compact style={{ display: 'flex' }}>
<Form.Item name="currency" noStyle initialValue="USD">
<Form.Item name={['coscoSupplierBase', 'currency']} noStyle initialValue="USD">
<Select style={{ width: 100, borderRadius: '2px 0 0 2px' }}>
{currencyList.map((item) => (
<Option key={item.code} value={item.code}>
@ -193,7 +203,7 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
</Col>
<Col span={12}>
<Form.Item
name="verificationCode"
name={['coscoSupplierBase', 'verificationCode']}
label="验证码"
rules={[
{ required: true, message: "请输入验证码" },

View File

@ -7,7 +7,13 @@ export async function coscoSupplierBaseAdd(data: API.RegisterRequest) {
data,
});
}
// 代录供应商注册
export async function addAgent(data: API.RegisterRequest) {
return request('/api/coscoSupplierBase/addAgent', {
method: 'POST',
data,
});
}
// 获取调查问卷
export async function fetchSurveyQuestions(): Promise<API.APIResponse<API.SurveyQuestionResponse>> {
@ -15,3 +21,17 @@ export async function fetchSurveyQuestions(): Promise<API.APIResponse<API.Survey
method: 'GET',
})
}
// 获取省市县
export async function getRegionTree(){
return request('/api/cosco/dictRegion/region', {
method: 'GET',
})
}
// 获取全球
export async function getregionInternational(){
return request('/api/cosco/dictRegion/regionInternational', {
method: 'GET',
})
}

View File

@ -375,4 +375,12 @@ declare namespace API {
identifying: string;
encryptValue: string;
}
// 省市区
interface RegionOption {
label: string;
value: string;
id: string;
name: string;
children?: RegionOption[];
}
}