修改注册页面;字典从接口取值;上传组件地址修改;维护注册页面及其组件多语言;
This commit is contained in:
@ -56,7 +56,7 @@ const FileUpload: React.FC<FileUploadProps> = ({
|
||||
tip,
|
||||
action,
|
||||
}) => {
|
||||
const actionUrl = action ? `${UPLOAD_URL}${action}` : `${UPLOAD_URL}/fileConfig/files/upload`;
|
||||
const actionUrl = action ? `${UPLOAD_URL}${action}` : `${UPLOAD_URL}/api/files/upload`;
|
||||
const intl = useIntl();
|
||||
const [fileList, setFileList] = useState<UploadFile[]>([]);
|
||||
|
||||
|
@ -1,14 +1,15 @@
|
||||
import help from './en-US/help';
|
||||
import policy from './en-US/policy';
|
||||
import download from './en-US/download';
|
||||
import notice from './en-US/notice';
|
||||
import help from './en-US/help';
|
||||
import policy from './en-US/policy';
|
||||
import register from './en-US/register';
|
||||
|
||||
export default {
|
||||
'menu.首页': 'Home',
|
||||
'menu.公告公示': 'Public Announcement',
|
||||
'menu.政策法规': 'Policies and Regulations',
|
||||
'menu.公告公示': 'Announcements',
|
||||
'menu.政策法规': 'Policies',
|
||||
'menu.通知中心': 'Notifications',
|
||||
'menu.下载中心': 'Download Center',
|
||||
'menu.下载中心': 'Downloads',
|
||||
'menu.关于我们': 'About Us',
|
||||
|
||||
// About page
|
||||
@ -18,22 +19,22 @@ export default {
|
||||
'about.history.title': 'Development History',
|
||||
'about.contact.title': 'Contact Us',
|
||||
'about.address': 'Headquarters Address',
|
||||
'about.phone': 'Phone',
|
||||
'about.phone': 'Contact Number',
|
||||
'about.hotline': 'Service Hotline',
|
||||
'about.email': 'Email',
|
||||
'about.worktime': 'Working Hours',
|
||||
'about.copyright': '© 2024 COSCO SHIPPING E-Bidding Platform. All Rights Reserved.',
|
||||
'about.copyright': '© 2024 COSCO Shipping E-Bidding Platform. All Rights Reserved',
|
||||
|
||||
"查看":"Info",
|
||||
"采购需求公示":"Procurement Demand Announcement",
|
||||
"招标采购公告":"Bidding Procurement Announcement",
|
||||
"非招标采购公告":"Non-bidding Procurement Announcement",
|
||||
"资格预审公告":"Pre-qualification Announcement",
|
||||
"查看":"View",
|
||||
"采购需求公示":"Procurement Requirements",
|
||||
"招标采购公告":"Bidding Announcement",
|
||||
"非招标采购公告":"Non-bidding Procurement",
|
||||
"资格预审公告":"Qualification Announcement",
|
||||
"招募公告":"Recruitment Announcement",
|
||||
"变更公告":"Change Announcement",
|
||||
"中标(中选)候选人公示":"Bid Winner Candidate Announcement",
|
||||
"中标(中选)候选人公示":"Successful Bidder Notice",
|
||||
"中标(中选)结果公示":"Bid Result Announcement",
|
||||
"采购失败(流标)公告":"Failed Procurement Announcement",
|
||||
"采购失败(流标)公告":"Failed Procurement Notice",
|
||||
"加载更多":"Load More",
|
||||
"登录/注册":"Login/Register",
|
||||
|
||||
@ -44,62 +45,12 @@ export default {
|
||||
"login.tab.agent": "Bidding Agent",
|
||||
"login.username.placeholder": "Please enter username",
|
||||
"login.password.placeholder": "Please enter password",
|
||||
"login.remember": "Remember me",
|
||||
"login.remember": "Remember password",
|
||||
"login.forgot": "Forgot password?",
|
||||
"login.button": "Login",
|
||||
"login.register.tip": "Don't have an account?",
|
||||
"login.register.action": "Register now",
|
||||
"login.back.home": "Back to home",
|
||||
|
||||
// Registration common text
|
||||
"register.submit": "Complete Registration",
|
||||
"register.hasAccount": "Already have an account?",
|
||||
"register.login": "Login now",
|
||||
|
||||
// Username and password common text
|
||||
"register.username.label": "Username",
|
||||
"register.username.placeholder": "Please enter username",
|
||||
"register.username.required": "Please enter username",
|
||||
"register.username.min": "Username must be at least 4 characters",
|
||||
"register.password.label": "Password",
|
||||
"register.password.placeholder": "Please enter password (6-16 characters with letters and numbers)",
|
||||
"register.password.required": "Please enter password",
|
||||
"register.password.min": "Password must be at least 6 characters",
|
||||
"register.password.pattern": "Password must be 6-16 characters with letters and numbers",
|
||||
"register.confirmPassword.label": "Confirm Password",
|
||||
"register.confirmPassword.placeholder": "Please confirm password, must match the password above",
|
||||
"register.confirmPassword.required": "Please confirm password",
|
||||
"register.confirmPassword.notMatch": "The two passwords do not match",
|
||||
"register.phone.label": "Phone Number",
|
||||
"register.phone.placeholder": "Please enter phone number",
|
||||
"register.phone.required": "Please enter phone number",
|
||||
"register.phone.invalid": "Please enter a valid phone number",
|
||||
"register.email.label": "Email",
|
||||
"register.email.placeholder": "Please enter email",
|
||||
"register.email.required": "Please enter email",
|
||||
"register.email.invalid": "Please enter a valid email",
|
||||
"register.captcha.label": "SMS Verification Code",
|
||||
"register.captcha.placeholder": "Please enter verification code",
|
||||
"register.captcha.required": "Please enter verification code",
|
||||
"register.captcha.get": "Get Code",
|
||||
|
||||
// Supplier registration text
|
||||
"register.supplier.title": "Supplier Registration",
|
||||
"register.supplier.companyName.label": "Company Name",
|
||||
"register.supplier.companyName.placeholder": "Please enter company name",
|
||||
"register.supplier.companyName.required": "Please enter company name",
|
||||
"register.supplier.contactPerson.label": "Contact Person",
|
||||
"register.supplier.contactPerson.placeholder": "Please enter contact person",
|
||||
"register.supplier.contactPerson.required": "Please enter contact person",
|
||||
|
||||
// Expert registration text
|
||||
"register.expert.title": "Expert Registration",
|
||||
"register.expert.idType.label": "ID Type",
|
||||
"register.expert.idType.placeholder": "Please select ID type",
|
||||
"register.expert.idType.required": "Please select ID type",
|
||||
"register.expert.idCard.label": "ID Number",
|
||||
"register.expert.idCard.placeholder": "Please enter ID number",
|
||||
"register.expert.idCard.required": "Please enter ID number",
|
||||
"login.register.action": "Register Now",
|
||||
"login.back.home": "Back to Home",
|
||||
|
||||
// Help Center module
|
||||
...help,
|
||||
@ -112,4 +63,7 @@ export default {
|
||||
|
||||
// Notice Center module
|
||||
...notice,
|
||||
|
||||
// Registration module
|
||||
...register,
|
||||
};
|
||||
|
291
src/locales/en-US/register.ts
Normal file
291
src/locales/en-US/register.ts
Normal file
@ -0,0 +1,291 @@
|
||||
export default {
|
||||
// Bank account information
|
||||
"register.bank.bankName": "Bank Name",
|
||||
"register.bank.bankName.placeholder": "Please enter bank name",
|
||||
"register.bank.bankName.required": "Please enter bank name",
|
||||
"register.bank.accountName": "Account Name",
|
||||
"register.bank.accountName.placeholder": "Please enter account name",
|
||||
"register.bank.accountName.required": "Please enter account name",
|
||||
"register.bank.accountNumber": "Account Number",
|
||||
"register.bank.accountNumber.placeholder": "Please enter account number",
|
||||
"register.bank.accountNumber.required": "Please enter account number",
|
||||
"register.bank.location": "Country, Province, City",
|
||||
"register.bank.location.placeholder": "Please select location",
|
||||
"register.bank.location.required": "Please select location",
|
||||
|
||||
// Survey related
|
||||
"register.survey.fillerInfo": "Filler Information",
|
||||
"register.survey.supplierName": "Supplier Name",
|
||||
"register.survey.supplierName.placeholder": "Please enter supplier name",
|
||||
"register.survey.supplierName.required": "Please enter supplier name",
|
||||
"register.survey.name": "Name",
|
||||
"register.survey.name.placeholder": "Please enter name",
|
||||
"register.survey.name.required": "Please enter name",
|
||||
"register.survey.position": "Position",
|
||||
"register.survey.position.placeholder": "Please enter position",
|
||||
"register.survey.position.required": "Please enter position",
|
||||
"register.survey.phone": "Phone Number",
|
||||
"register.survey.phone.placeholder": "Please enter phone number",
|
||||
"register.survey.phone.required": "Please enter phone number",
|
||||
"register.survey.email": "Email",
|
||||
"register.survey.email.placeholder": "Please enter email",
|
||||
"register.survey.email.required": "Please enter email",
|
||||
"register.survey.date": "Date",
|
||||
"register.survey.date.required": "Please select date",
|
||||
"register.survey.questionnaire": "Questionnaire",
|
||||
"register.survey.question": "Question",
|
||||
"register.survey.reply": "Reply",
|
||||
"register.survey.answer.required": "Please answer question {index}",
|
||||
"register.survey.answer.placeholder": "Please enter your answer",
|
||||
"register.survey.noData": "No questionnaire data available",
|
||||
|
||||
// Attachment related
|
||||
"register.attachment.stampUpload": "Please upload after stamping with company seal",
|
||||
"register.attachment.downloadTemplate": "Download Template",
|
||||
"register.attachment.commitment.required": "Please upload the stamped anti-commercial bribery commitment",
|
||||
"register.attachment.otherAttachments.hint": "Other attachments (not required)",
|
||||
"register.attachment.addMore": "Add More Attachments",
|
||||
"register.upload.success": "{filename} uploaded successfully",
|
||||
|
||||
// Registration common text
|
||||
"register.submit": "Register",
|
||||
"register.hasAccount": "Already have an account?",
|
||||
"register.login": "Login",
|
||||
|
||||
// Username/password common text
|
||||
"register.username.label": "Username",
|
||||
"register.username.placeholder": "Please enter username",
|
||||
"register.username.required": "Please enter username",
|
||||
"register.username.min": "Username must be at least 4 characters",
|
||||
"register.password.label": "Password",
|
||||
"register.password.placeholder": "Please enter password (6-16 characters with letters and numbers)",
|
||||
"register.password.required": "Please enter password",
|
||||
"register.password.min": "Password must be at least 6 characters",
|
||||
"register.password.pattern": "Password must be 6-16 characters with letters and numbers",
|
||||
"register.confirmPassword.label": "Confirm Password",
|
||||
"register.confirmPassword.placeholder": "Please enter password again",
|
||||
"register.confirmPassword.required": "Please confirm password",
|
||||
"register.confirmPassword.notMatch": "The two passwords do not match",
|
||||
"register.phone.label": "Mobile Phone",
|
||||
"register.phone.placeholder": "Please enter mobile phone number",
|
||||
"register.phone.required": "Please enter mobile phone number",
|
||||
"register.phone.invalid": "Please enter valid phone number",
|
||||
"register.email.label": "Email",
|
||||
"register.email.placeholder": "Please enter email",
|
||||
"register.email.required": "Please enter email",
|
||||
"register.email.invalid": "Please enter valid email address",
|
||||
"register.captcha.label": "Verification Code",
|
||||
"register.captcha.placeholder": "Please enter verification code",
|
||||
"register.captcha.required": "Please enter verification code",
|
||||
"register.captcha.get": "Get Code",
|
||||
"register.captcha.countdown": "Retry in {count}s",
|
||||
"register.captcha.pattern": "Please enter 6-digit verification code",
|
||||
|
||||
// Supplier registration page
|
||||
'register.supplier.identityType': 'Identity Type',
|
||||
'register.supplier.domestic': 'Domestic Company',
|
||||
'register.supplier.foreign': 'Foreign Company',
|
||||
'register.supplier.agreement': 'I have read and agree to the',
|
||||
'register.supplier.commitment': 'Registration Commitment',
|
||||
'register.supplier.commitment.title': 'Registration Commitment',
|
||||
'register.supplier.commitment.ok': 'I Understand',
|
||||
'register.supplier.agreement.required': 'Please read and agree to the registration commitment',
|
||||
"register.supplier.title": "Supplier Registration",
|
||||
"register.supplier.companyName.label": "Company Name",
|
||||
"register.supplier.companyName.placeholder": "Please enter company name",
|
||||
"register.supplier.companyName.required": "Please enter company name",
|
||||
"register.supplier.contactPerson.label": "Contact Person",
|
||||
"register.supplier.contactPerson.placeholder": "Please enter contact person name",
|
||||
"register.supplier.contactPerson.required": "Please enter contact person name",
|
||||
|
||||
// Expert registration text
|
||||
"register.expert.title": "Expert Registration",
|
||||
"register.expert.tip": "1. Before registration, please ensure you have written authorization (or relevant certificates) from your company;\n2. After registration, please fill in your expert resume and submit key materials in time for platform review;\n3. As expert registration requires a lot of information, we recommend using a PC;\n4. If you have any questions during registration, please contact 010-66078740.",
|
||||
"register.expert.notice.title": "Registration Notice",
|
||||
"register.expert.idType.label": "ID Type",
|
||||
"register.expert.idType.placeholder": "Please select ID type",
|
||||
"register.expert.idType.required": "Please select ID type",
|
||||
"register.expert.idCard.label": "ID Number",
|
||||
"register.expert.idCard.placeholder": "Please enter ID number",
|
||||
"register.expert.idCard.required": "Please enter ID number",
|
||||
|
||||
// Enterprise registration
|
||||
'register.enterprise.title': 'Enterprise Registration',
|
||||
|
||||
// Commitment content
|
||||
'register.supplier.commitment.content.intro1': 'Dear User:',
|
||||
'register.supplier.commitment.content.intro2': 'Thank you for registering to use our platform. Please read the following commitment carefully:',
|
||||
'register.supplier.commitment.content.item1': 'I/We commit that the registration information provided is true, accurate and complete, without false records, misleading statements or major omissions.',
|
||||
'register.supplier.commitment.content.item2': 'I/We commit to comply with the platform rules and requirements, and not engage in any illegal activities.',
|
||||
'register.supplier.commitment.content.item3': 'I/We understand and agree that if false information is provided or platform rules are violated, the platform has the right to terminate the service and pursue relevant responsibilities.',
|
||||
'register.supplier.commitment.content.item4': 'I/We commit to properly safeguard account and password, and be responsible for all operations and actions under the account.',
|
||||
'register.supplier.commitment.content.item5': 'I/We agree that the platform may legally use the provided information within the necessary scope for providing services and improving user experience.',
|
||||
'register.supplier.commitment.content.item6': 'I/We commit to comply with national laws and industry standards, adhere to business ethics, and not engage in any behavior that harms the platform or other users\' interests.',
|
||||
'register.supplier.commitment.content.item7': 'I/We commit that the qualification documents and supporting materials uploaded are authentic and valid, and are responsible for their authenticity and legality.',
|
||||
'register.supplier.commitment.content.item8': 'I/We understand and agree that the platform has the right to review user materials according to business needs and reserves the final interpretation right.',
|
||||
'register.supplier.commitment.content.end': 'Hereby committed!',
|
||||
|
||||
// Verification code
|
||||
'register.captcha.sent': 'Verification code has been sent to {phone}',
|
||||
'register.captcha.phoneRequired': 'Please enter correct phone number first',
|
||||
|
||||
// Submission
|
||||
'register.submit.success': 'Registration successful, please login',
|
||||
'register.submit.failed': 'Registration failed, please try again',
|
||||
'register.submit.error': 'Registration failed, please try again later',
|
||||
|
||||
// Form section
|
||||
"register.form.section.basicInfo": "Basic Information",
|
||||
"register.form.section.qualification": "Qualification Information",
|
||||
"register.form.section.invoice": "Invoice Information",
|
||||
"register.form.section.bankAccount": "Bank Account",
|
||||
"register.form.section.survey": "Social Standards Compliance Questionnaire",
|
||||
"register.form.section.attachment": "Attachments",
|
||||
"register.form.section.commitment": "Supplier Anti-Commercial Bribery Commitment",
|
||||
"register.form.section.otherAttachments": "Other Attachments",
|
||||
"register.form.table.no": "No.",
|
||||
"register.form.operation": "Operation",
|
||||
"register.form.attachment": "Attachment",
|
||||
"register.form.delete": "Delete",
|
||||
"register.form.addRow": "Add Row",
|
||||
"register.form.date.placeholder": "Please select date",
|
||||
"register.form.upload": "Upload",
|
||||
|
||||
// Domestic enterprise registration form
|
||||
"register.domestic.enterpriseType": "Enterprise Type",
|
||||
"register.domestic.enterpriseType.placeholder": "Please select enterprise type",
|
||||
"register.domestic.enterpriseType.required": "Please select enterprise type",
|
||||
"register.domestic.licenceAccessory": "Business License",
|
||||
"register.domestic.licenceAccessory.required": "Please upload business license",
|
||||
"register.domestic.licenceAccessory.tip": "Support PDF, JPG, PNG formats, less than 10MB",
|
||||
"register.domestic.licenceDate": "License Expiry Date",
|
||||
"register.domestic.licenceDate.required": "Please select license expiry date",
|
||||
"register.domestic.companyName": "Company Name",
|
||||
"register.domestic.companyName.placeholder": "Please enter company name",
|
||||
"register.domestic.companyName.required": "Please enter company name",
|
||||
"register.domestic.companyNameEn": "Company English Name",
|
||||
"register.domestic.companyNameEn.placeholder": "Please enter company English name",
|
||||
"register.domestic.companyNameEn.required": "Please enter company English name",
|
||||
"register.domestic.socialCreditCode": "Unified Social Credit Code",
|
||||
"register.domestic.socialCreditCode.placeholder": "Please enter correct unified social credit code",
|
||||
"register.domestic.socialCreditCode.required": "Please enter unified social credit code",
|
||||
"register.domestic.socialCreditCode.pattern": "Please enter valid unified social credit code",
|
||||
"register.domestic.businessScope": "Business Scope",
|
||||
"register.domestic.businessScope.placeholder": "Financial products, advertising media, etc.",
|
||||
"register.domestic.businessScope.required": "Please enter business scope",
|
||||
"register.domestic.regAddress": "Registered Address",
|
||||
"register.domestic.regAddress.placeholder": "Shanghai Putuo District XX Road 1888",
|
||||
"register.domestic.regAddress.required": "Please enter registered address",
|
||||
"register.domestic.workAddress": "Office Address",
|
||||
"register.domestic.workAddress.placeholder": "Please specify province, city, district, road, building number",
|
||||
"register.domestic.parentCompany": "Parent Company/Investor",
|
||||
"register.domestic.parentCompany.placeholder": "Please enter parent company or investor information",
|
||||
"register.domestic.legalPerson": "Legal Representative",
|
||||
"register.domestic.legalPerson.placeholder": "John Doe",
|
||||
"register.domestic.legalPerson.required": "Please enter legal representative",
|
||||
"register.domestic.idCard": "Contact ID Number",
|
||||
"register.domestic.idCard.placeholder": "Please enter correct ID number",
|
||||
"register.domestic.capital": "Registered Capital",
|
||||
"register.domestic.capital.placeholder": "Please enter amount",
|
||||
"register.domestic.capital.required": "Please enter registered capital",
|
||||
"register.domestic.contactsName": "Contact Name",
|
||||
"register.domestic.contactsName.placeholder": "Please enter contact name",
|
||||
"register.domestic.contactsName.required": "Please enter contact name",
|
||||
"register.domestic.contactsPhone": "Contact Mobile",
|
||||
"register.domestic.contactsPhone.placeholder": "Please enter mobile number",
|
||||
"register.domestic.contactsPhone.required": "Please enter contact mobile",
|
||||
"register.domestic.contactsPhone.pattern": "Please enter valid mobile number",
|
||||
"register.domestic.contactsEmail": "Contact Email",
|
||||
"register.domestic.contactsEmail.placeholder": "Please enter contact email",
|
||||
"register.domestic.contactsEmail.required": "Please enter email",
|
||||
"register.domestic.telephone": "Telephone",
|
||||
"register.domestic.telephone.placeholder": "Please enter telephone number",
|
||||
|
||||
// Foreign enterprise registration form
|
||||
"register.foreign.companyName": "Company Name",
|
||||
"register.foreign.companyName.placeholder": "Please enter company name",
|
||||
"register.foreign.companyName.required": "Please enter company name",
|
||||
"register.foreign.companyNameEn": "Company English Name",
|
||||
"register.foreign.companyNameEn.placeholder": "Please enter company English name",
|
||||
"register.foreign.companyNameEn.required": "Please enter company English name",
|
||||
"register.foreign.country": "Country/Region",
|
||||
"register.foreign.country.placeholder": "Please select country/region",
|
||||
"register.foreign.country.required": "Please select country/region",
|
||||
"register.foreign.country.US": "United States",
|
||||
"register.foreign.country.UK": "United Kingdom",
|
||||
"register.foreign.country.JP": "Japan",
|
||||
"register.foreign.country.DE": "Germany",
|
||||
"register.foreign.country.FR": "France",
|
||||
"register.foreign.country.AU": "Australia",
|
||||
"register.foreign.country.CA": "Canada",
|
||||
"register.foreign.country.SG": "Singapore",
|
||||
"register.foreign.country.HK": "Hong Kong, China",
|
||||
"register.foreign.country.OTHER": "Other",
|
||||
"register.foreign.vat": "VAT Number",
|
||||
"register.foreign.vat.placeholder": "Please enter VAT number",
|
||||
"register.foreign.vat.required": "Please enter VAT number",
|
||||
"register.foreign.workAddress": "Office Address",
|
||||
"register.foreign.workAddress.placeholder": "Please specify",
|
||||
"register.foreign.businessScope": "Business Scope",
|
||||
"register.foreign.businessScope.placeholder": "Please enter business scope",
|
||||
"register.foreign.businessScope.required": "Please enter business scope",
|
||||
"register.foreign.parentCompany": "Parent Company/Investor",
|
||||
"register.foreign.parentCompany.placeholder": "Please enter parent company or investor information",
|
||||
"register.foreign.legalPerson": "Legal Representative",
|
||||
"register.foreign.legalPerson.placeholder": "Please enter legal representative",
|
||||
"register.foreign.legalPerson.required": "Please enter legal representative",
|
||||
"register.foreign.capital": "Registered Capital",
|
||||
"register.foreign.capital.placeholder": "Please enter amount",
|
||||
"register.foreign.capital.required": "Please enter registered capital amount",
|
||||
"register.foreign.contactsName": "Contact Name",
|
||||
"register.foreign.contactsName.placeholder": "Please enter contact name",
|
||||
"register.foreign.contactsName.required": "Please enter contact name",
|
||||
"register.foreign.contactsEmail": "Contact Email",
|
||||
"register.foreign.contactsEmail.placeholder": "XXX@XXX.com",
|
||||
"register.foreign.contactsEmail.required": "Please enter email",
|
||||
"register.foreign.contactsEmail.extra": "This email will be used for future contact and password recovery",
|
||||
"register.foreign.contactsPhone": "Contact Phone",
|
||||
"register.foreign.contactsPhone.placeholder": "Please enter contact phone",
|
||||
"register.foreign.contactsPhone.required": "Please enter contact phone",
|
||||
|
||||
// Qualification information
|
||||
"register.qualification.certType": "Certificate Type",
|
||||
"register.qualification.certType.placeholder": "Please select type",
|
||||
"register.qualification.certType.required": "Please select certificate type",
|
||||
"register.qualification.certName": "Certificate Name",
|
||||
"register.qualification.certName.placeholder": "Please enter certificate name",
|
||||
"register.qualification.certName.required": "Please enter certificate name",
|
||||
"register.qualification.certNumber": "Certificate Number",
|
||||
"register.qualification.certNumber.placeholder": "Please enter certificate number",
|
||||
"register.qualification.certNumber.required": "Please enter certificate number",
|
||||
"register.qualification.certLevel": "Certificate Level",
|
||||
"register.qualification.certLevel.placeholder": "Please enter certificate level",
|
||||
"register.qualification.issuingAuthority": "Issuing Authority",
|
||||
"register.qualification.issuingAuthority.placeholder": "Please enter issuing authority",
|
||||
"register.qualification.issuingAuthority.required": "Please enter issuing authority",
|
||||
"register.qualification.issueDate": "Issue Date",
|
||||
"register.qualification.issueDate.required": "Please select issue date",
|
||||
"register.qualification.expiryDate": "Expiry Date",
|
||||
"register.qualification.expiryDate.required": "Please select expiry date",
|
||||
"register.qualification.attachment.required": "Please upload certificate attachment",
|
||||
|
||||
// Invoice information
|
||||
"register.invoice.taxpayerType": "Taxpayer Type",
|
||||
"register.invoice.taxpayerType.placeholder": "Please select taxpayer type",
|
||||
"register.invoice.taxpayerType.required": "Please select taxpayer type",
|
||||
"register.invoice.head": "Invoice Title",
|
||||
"register.invoice.head.placeholder": "Please enter invoice title",
|
||||
"register.invoice.head.required": "Please enter invoice title",
|
||||
"register.invoice.taxpayerCode": "Taxpayer ID",
|
||||
"register.invoice.taxpayerCode.placeholder": "Please enter taxpayer ID",
|
||||
"register.invoice.taxpayerCode.required": "Please enter taxpayer ID",
|
||||
"register.invoice.address": "Invoice Address",
|
||||
"register.invoice.address.placeholder": "Please enter invoice address",
|
||||
"register.invoice.phone": "Invoice Phone",
|
||||
"register.invoice.phone.placeholder": "Please enter invoice phone",
|
||||
"register.invoice.bank": "Bank Name",
|
||||
"register.invoice.bank.placeholder": "Please enter bank name",
|
||||
"register.invoice.account": "Bank Account",
|
||||
"register.invoice.account.placeholder": "Please enter bank account",
|
||||
"register.invoice.qualificationCertificate": "General Taxpayer Qualification Certificate",
|
||||
};
|
@ -1,7 +1,8 @@
|
||||
import help from './zh-CN/help';
|
||||
import policy from './zh-CN/policy';
|
||||
import download from './zh-CN/download';
|
||||
import notice from './zh-CN/notice';
|
||||
import help from './zh-CN/help';
|
||||
import policy from './zh-CN/policy';
|
||||
import register from './zh-CN/register';
|
||||
|
||||
export default {
|
||||
'menu.首页': '首页',
|
||||
@ -51,56 +52,6 @@ export default {
|
||||
"login.register.action": "立即注册",
|
||||
"login.back.home": "返回首页",
|
||||
|
||||
// 注册页通用文案
|
||||
"register.submit": "注册完成",
|
||||
"register.hasAccount": "已有账号?",
|
||||
"register.login": "立即登录",
|
||||
|
||||
// 用户名密码通用文案
|
||||
"register.username.label": "用户名",
|
||||
"register.username.placeholder": "请输入用户名",
|
||||
"register.username.required": "请输入用户名",
|
||||
"register.username.min": "用户名至少4个字符",
|
||||
"register.password.label": "输入密码",
|
||||
"register.password.placeholder": "请输入密码,应为6-16位的英文加数字组合",
|
||||
"register.password.required": "请输入密码",
|
||||
"register.password.min": "密码至少6个字符",
|
||||
"register.password.pattern": "密码应为6-16位的英文加数字组合",
|
||||
"register.confirmPassword.label": "确认密码",
|
||||
"register.confirmPassword.placeholder": "请再次输入密码,两次输入保持一致",
|
||||
"register.confirmPassword.required": "请确认密码",
|
||||
"register.confirmPassword.notMatch": "两次输入的密码不一致",
|
||||
"register.phone.label": "手机号",
|
||||
"register.phone.placeholder": "请输入手机号",
|
||||
"register.phone.required": "请输入手机号",
|
||||
"register.phone.invalid": "请输入有效的手机号",
|
||||
"register.email.label": "电子邮箱",
|
||||
"register.email.placeholder": "请输入电子邮箱",
|
||||
"register.email.required": "请输入电子邮箱",
|
||||
"register.email.invalid": "请输入有效的电子邮箱",
|
||||
"register.captcha.label": "短信验证码",
|
||||
"register.captcha.placeholder": "请输入短信验证码",
|
||||
"register.captcha.required": "请输入短信验证码",
|
||||
"register.captcha.get": "获取验证码",
|
||||
|
||||
// 供应商注册文案
|
||||
"register.supplier.title": "供应商注册",
|
||||
"register.supplier.companyName.label": "公司名称",
|
||||
"register.supplier.companyName.placeholder": "请输入公司名称",
|
||||
"register.supplier.companyName.required": "请输入公司名称",
|
||||
"register.supplier.contactPerson.label": "联系人",
|
||||
"register.supplier.contactPerson.placeholder": "请输入联系人姓名",
|
||||
"register.supplier.contactPerson.required": "请输入联系人姓名",
|
||||
|
||||
// 专家注册文案
|
||||
"register.expert.title": "专家注册",
|
||||
"register.expert.idType.label": "证件类型",
|
||||
"register.expert.idType.placeholder": "请选择证件类型",
|
||||
"register.expert.idType.required": "请选择证件类型",
|
||||
"register.expert.idCard.label": "证件号",
|
||||
"register.expert.idCard.placeholder": "请输入证件号",
|
||||
"register.expert.idCard.required": "请输入证件号",
|
||||
|
||||
// 帮助中心模块
|
||||
...help,
|
||||
|
||||
@ -112,4 +63,7 @@ export default {
|
||||
|
||||
// 通知中心模块
|
||||
...notice,
|
||||
|
||||
// 注册模块
|
||||
...register,
|
||||
};
|
||||
|
288
src/locales/zh-CN/register.ts
Normal file
288
src/locales/zh-CN/register.ts
Normal file
@ -0,0 +1,288 @@
|
||||
export default {
|
||||
// 注册页通用文案
|
||||
"register.submit": "注册完成",
|
||||
"register.hasAccount": "已有账号?",
|
||||
"register.login": "立即登录",
|
||||
|
||||
// 用户名密码通用文案
|
||||
"register.username.label": "用户名",
|
||||
"register.username.placeholder": "请输入用户名",
|
||||
"register.username.required": "请输入用户名",
|
||||
"register.username.min": "用户名至少4个字符",
|
||||
"register.password.label": "输入密码",
|
||||
"register.password.placeholder": "请输入密码,应为6-16位的英文加数字组合",
|
||||
"register.password.required": "请输入密码",
|
||||
"register.password.min": "密码至少6个字符",
|
||||
"register.password.pattern": "密码应为6-16位的英文加数字组合",
|
||||
"register.confirmPassword.label": "确认密码",
|
||||
"register.confirmPassword.placeholder": "请再次输入密码,两次输入保持一致",
|
||||
"register.confirmPassword.required": "请确认密码",
|
||||
"register.confirmPassword.notMatch": "两次输入的密码不一致",
|
||||
"register.phone.label": "手机号",
|
||||
"register.phone.placeholder": "请输入手机号",
|
||||
"register.phone.required": "请输入手机号",
|
||||
"register.phone.invalid": "请输入有效的手机号",
|
||||
"register.email.label": "电子邮箱",
|
||||
"register.email.placeholder": "请输入电子邮箱",
|
||||
"register.email.required": "请输入电子邮箱",
|
||||
"register.email.invalid": "请输入有效的电子邮箱",
|
||||
"register.captcha.label": "短信验证码",
|
||||
"register.captcha.placeholder": "请输入短信验证码",
|
||||
"register.captcha.required": "请输入短信验证码",
|
||||
"register.captcha.get": "获取验证码",
|
||||
"register.captcha.countdown": "{count}秒后重新获取",
|
||||
"register.captcha.pattern": "请输入6位数字验证码",
|
||||
|
||||
// 供应商注册页面
|
||||
'register.supplier.identityType': '身份类型',
|
||||
'register.supplier.domestic': '境内企业/机构',
|
||||
'register.supplier.foreign': '境外企业',
|
||||
'register.supplier.agreement': '我已阅读并同意',
|
||||
'register.supplier.commitment': '《注册信息承诺书》',
|
||||
'register.supplier.commitment.title': '注册信息承诺书',
|
||||
'register.supplier.commitment.ok': '我知道了',
|
||||
'register.supplier.agreement.required': '请阅读并同意注册信息承诺书',
|
||||
"register.supplier.title": "供应商注册",
|
||||
"register.supplier.companyName.label": "公司名称",
|
||||
"register.supplier.companyName.placeholder": "请输入公司名称",
|
||||
"register.supplier.companyName.required": "请输入公司名称",
|
||||
"register.supplier.contactPerson.label": "联系人",
|
||||
"register.supplier.contactPerson.placeholder": "请输入联系人姓名",
|
||||
"register.supplier.contactPerson.required": "请输入联系人姓名",
|
||||
|
||||
// 专家注册文案
|
||||
"register.expert.title": "专家注册",
|
||||
"register.expert.tip": "1、入驻前请确认您已经获得了您所在企业的书面入驻授权(或相关证明);\n2、注册完成后,请及时填写专家履历,提交关键资料,平台审核通过后您可以正常使用;\n3、由于专家注册资料信息较多,建议您使用PC端填写;\n4、入驻过程中如有疑问,请联系010-66078740。",
|
||||
"register.expert.notice.title": "注册前须知",
|
||||
"register.expert.idType.label": "证件类型",
|
||||
"register.expert.idType.placeholder": "请选择证件类型",
|
||||
"register.expert.idType.required": "请选择证件类型",
|
||||
"register.expert.idCard.label": "证件号",
|
||||
"register.expert.idCard.placeholder": "请输入证件号",
|
||||
"register.expert.idCard.required": "请输入证件号",
|
||||
|
||||
// 表单通用
|
||||
"register.form.section.basicInfo": "基本信息",
|
||||
"register.form.section.qualification": "资质信息",
|
||||
"register.form.section.invoice": "开票信息",
|
||||
"register.form.section.bankAccount": "银行账户",
|
||||
"register.form.section.survey": "社会准则符合性自查问卷",
|
||||
"register.form.section.attachment": "附件",
|
||||
"register.form.section.commitment": "供应商反商业贿赂承诺书",
|
||||
"register.form.section.otherAttachments": "其他附件",
|
||||
"register.form.table.no": "序号",
|
||||
"register.form.operation": "操作",
|
||||
"register.form.attachment": "附件",
|
||||
"register.form.delete": "删除",
|
||||
"register.form.addRow": "添加行",
|
||||
"register.form.date.placeholder": "请选择日期",
|
||||
"register.form.upload": "上传文件",
|
||||
|
||||
// 境内企业注册表单
|
||||
"register.domestic.enterpriseType": "企业类型",
|
||||
"register.domestic.enterpriseType.placeholder": "请选择企业类型",
|
||||
"register.domestic.enterpriseType.required": "请选择企业类型",
|
||||
"register.domestic.licenceAccessory": "营业执照附件",
|
||||
"register.domestic.licenceAccessory.required": "请上传营业执照附件",
|
||||
"register.domestic.licenceAccessory.tip": "支持PDF、JPG、PNG格式,不超过10MB",
|
||||
"register.domestic.licenceDate": "营业执照有效期",
|
||||
"register.domestic.licenceDate.required": "请选择营业执照有效期",
|
||||
"register.domestic.companyName": "企业名称",
|
||||
"register.domestic.companyName.placeholder": "请输入企业名称",
|
||||
"register.domestic.companyName.required": "请输入企业名称",
|
||||
"register.domestic.companyNameEn": "企业英文名",
|
||||
"register.domestic.companyNameEn.placeholder": "请输入企业英文名",
|
||||
"register.domestic.companyNameEn.required": "请输入企业英文名",
|
||||
"register.domestic.socialCreditCode": "统一社会信用代码",
|
||||
"register.domestic.socialCreditCode.placeholder": "请输入正确的统一社会信用代码",
|
||||
"register.domestic.socialCreditCode.required": "请输入统一社会信用代码",
|
||||
"register.domestic.socialCreditCode.pattern": "请输入正确的统一社会信用代码",
|
||||
"register.domestic.businessScope": "经营范围",
|
||||
"register.domestic.businessScope.placeholder": "金融专用产品、广告传媒",
|
||||
"register.domestic.businessScope.required": "请输入经营范围",
|
||||
"register.domestic.regAddress": "注册地址",
|
||||
"register.domestic.regAddress.placeholder": "上海市普陀区XX路1888号",
|
||||
"register.domestic.regAddress.required": "请输入注册地址",
|
||||
"register.domestic.workAddress": "办公地址",
|
||||
"register.domestic.workAddress.placeholder": "请具体注明省、市、区、路、门牌号",
|
||||
"register.domestic.parentCompany": "母公司/出资人",
|
||||
"register.domestic.parentCompany.placeholder": "请输入母公司或出资人信息",
|
||||
"register.domestic.legalPerson": "企业法定代表人",
|
||||
"register.domestic.legalPerson.placeholder": "张三",
|
||||
"register.domestic.legalPerson.required": "请输入企业法定代表人/负责人",
|
||||
"register.domestic.idCard": "联系人证件号码",
|
||||
"register.domestic.idCard.placeholder": "请填写联系人正确的身份证号",
|
||||
"register.domestic.capital": "注册资本",
|
||||
"register.domestic.capital.placeholder": "请输入金额",
|
||||
"register.domestic.capital.required": "请输入注册资本",
|
||||
"register.domestic.contactsName": "联系人姓名",
|
||||
"register.domestic.contactsName.placeholder": "请输入联系人姓名",
|
||||
"register.domestic.contactsName.required": "请输入联系人姓名",
|
||||
"register.domestic.contactsPhone": "联系人手机",
|
||||
"register.domestic.contactsPhone.placeholder": "请输入11位手机号码",
|
||||
"register.domestic.contactsPhone.required": "请输入联系人手机号",
|
||||
"register.domestic.contactsPhone.pattern": "请输入有效的手机号",
|
||||
"register.domestic.contactsEmail": "联系人邮箱",
|
||||
"register.domestic.contactsEmail.placeholder": "请输入联系人邮箱",
|
||||
"register.domestic.contactsEmail.required": "请输入电子邮箱",
|
||||
"register.domestic.telephone": "固定电话",
|
||||
"register.domestic.telephone.placeholder": "请输入固定电话",
|
||||
|
||||
// 境外企业注册表单
|
||||
"register.foreign.companyName": "企业名称",
|
||||
"register.foreign.companyName.placeholder": "请输入企业名称",
|
||||
"register.foreign.companyName.required": "请输入企业名称",
|
||||
"register.foreign.companyNameEn": "企业英文名称",
|
||||
"register.foreign.companyNameEn.placeholder": "请输入企业英文名称",
|
||||
"register.foreign.companyNameEn.required": "请输入企业英文名称",
|
||||
"register.foreign.country": "国家/地区",
|
||||
"register.foreign.country.placeholder": "请选择国家/地区",
|
||||
"register.foreign.country.required": "请选择国家/地区",
|
||||
"register.foreign.country.US": "美国",
|
||||
"register.foreign.country.UK": "英国",
|
||||
"register.foreign.country.JP": "日本",
|
||||
"register.foreign.country.DE": "德国",
|
||||
"register.foreign.country.FR": "法国",
|
||||
"register.foreign.country.AU": "澳大利亚",
|
||||
"register.foreign.country.CA": "加拿大",
|
||||
"register.foreign.country.SG": "新加坡",
|
||||
"register.foreign.country.HK": "中国香港",
|
||||
"register.foreign.country.OTHER": "其他",
|
||||
"register.foreign.vat": "税号",
|
||||
"register.foreign.vat.placeholder": "请输入税号",
|
||||
"register.foreign.vat.required": "请输入税号",
|
||||
"register.foreign.workAddress": "办公地址",
|
||||
"register.foreign.workAddress.placeholder": "请具体注明",
|
||||
"register.foreign.businessScope": "经营范围",
|
||||
"register.foreign.businessScope.placeholder": "请输入经营范围",
|
||||
"register.foreign.businessScope.required": "请输入经营范围",
|
||||
"register.foreign.parentCompany": "母公司/出资人",
|
||||
"register.foreign.parentCompany.placeholder": "请输入母公司或出资人信息",
|
||||
"register.foreign.legalPerson": "企业法定代表人",
|
||||
"register.foreign.legalPerson.placeholder": "请输入企业法定代表人",
|
||||
"register.foreign.legalPerson.required": "请输入企业法定代表人",
|
||||
"register.foreign.capital": "注册资本",
|
||||
"register.foreign.capital.placeholder": "请输入金额",
|
||||
"register.foreign.capital.required": "请输入注册资本金额",
|
||||
"register.foreign.contactsName": "联系人姓名",
|
||||
"register.foreign.contactsName.placeholder": "请输入联系人姓名",
|
||||
"register.foreign.contactsName.required": "请输入联系人姓名",
|
||||
"register.foreign.contactsEmail": "联系人邮箱",
|
||||
"register.foreign.contactsEmail.placeholder": "XXX@XXX.com",
|
||||
"register.foreign.contactsEmail.required": "请输入电子邮箱",
|
||||
"register.foreign.contactsEmail.extra": "该邮箱用于后续联系和找回密码",
|
||||
"register.foreign.contactsPhone": "联系电话",
|
||||
"register.foreign.contactsPhone.placeholder": "请输入联系电话",
|
||||
"register.foreign.contactsPhone.required": "请输入联系电话",
|
||||
|
||||
// 资质信息
|
||||
"register.qualification.certType": "资质证书类型",
|
||||
"register.qualification.certType.placeholder": "请选择类型",
|
||||
"register.qualification.certType.required": "请选择资质证书类型",
|
||||
"register.qualification.certName": "资质名称",
|
||||
"register.qualification.certName.placeholder": "请输入资质名称",
|
||||
"register.qualification.certName.required": "请输入资质名称",
|
||||
"register.qualification.certNumber": "资质证书编号",
|
||||
"register.qualification.certNumber.placeholder": "请输入证书编号",
|
||||
"register.qualification.certNumber.required": "请输入资质证书编号",
|
||||
"register.qualification.certLevel": "资质类别和等级",
|
||||
"register.qualification.certLevel.placeholder": "请输入资质类别和等级",
|
||||
"register.qualification.issuingAuthority": "发证机构",
|
||||
"register.qualification.issuingAuthority.placeholder": "请输入发证机构",
|
||||
"register.qualification.issuingAuthority.required": "请输入发证机构",
|
||||
"register.qualification.issueDate": "发证日期",
|
||||
"register.qualification.issueDate.required": "请选择发证日期",
|
||||
"register.qualification.expiryDate": "资质有效期至",
|
||||
"register.qualification.expiryDate.required": "请选择资质有效期",
|
||||
"register.qualification.attachment.required": "请上传资质证书附件",
|
||||
|
||||
// 开票信息
|
||||
"register.invoice.taxpayerType": "纳税人类型",
|
||||
"register.invoice.taxpayerType.placeholder": "请选择纳税人类型",
|
||||
"register.invoice.taxpayerType.required": "请选择纳税人类型",
|
||||
"register.invoice.head": "开票抬头",
|
||||
"register.invoice.head.placeholder": "请输入开票抬头",
|
||||
"register.invoice.head.required": "请输入开票抬头",
|
||||
"register.invoice.taxpayerCode": "纳税人识别号",
|
||||
"register.invoice.taxpayerCode.placeholder": "请输入纳税人识别号",
|
||||
"register.invoice.taxpayerCode.required": "请输入纳税人识别号",
|
||||
"register.invoice.address": "开票地址",
|
||||
"register.invoice.address.placeholder": "请输入开票地址",
|
||||
"register.invoice.phone": "开票电话",
|
||||
"register.invoice.phone.placeholder": "请输入开票电话",
|
||||
"register.invoice.bank": "开票户行",
|
||||
"register.invoice.bank.placeholder": "请输入开票银行",
|
||||
"register.invoice.account": "开票户行账号",
|
||||
"register.invoice.account.placeholder": "请输入开票户行账号",
|
||||
"register.invoice.qualificationCertificate": "一般纳税人资格证明",
|
||||
|
||||
// 银行账户信息
|
||||
"register.bank.bankName": "开户银行",
|
||||
"register.bank.bankName.placeholder": "请输入开户银行",
|
||||
"register.bank.bankName.required": "请输入开户银行",
|
||||
"register.bank.accountName": "账户名称",
|
||||
"register.bank.accountName.placeholder": "请输入账户名称",
|
||||
"register.bank.accountName.required": "请输入账户名称",
|
||||
"register.bank.accountNumber": "账号",
|
||||
"register.bank.accountNumber.placeholder": "请输入账号",
|
||||
"register.bank.accountNumber.required": "请输入账号",
|
||||
"register.bank.location": "国家、省、市",
|
||||
"register.bank.location.placeholder": "请选择省市区",
|
||||
"register.bank.location.required": "请选择地址",
|
||||
|
||||
// 问卷相关
|
||||
"register.survey.fillerInfo": "填写人信息",
|
||||
"register.survey.supplierName": "供应商名称",
|
||||
"register.survey.supplierName.placeholder": "请输入供应商名称",
|
||||
"register.survey.supplierName.required": "请输入供应商名称",
|
||||
"register.survey.name": "姓名",
|
||||
"register.survey.name.placeholder": "请输入姓名",
|
||||
"register.survey.name.required": "请输入姓名",
|
||||
"register.survey.position": "职位",
|
||||
"register.survey.position.placeholder": "请输入职位",
|
||||
"register.survey.position.required": "请输入职位",
|
||||
"register.survey.phone": "电话号",
|
||||
"register.survey.phone.placeholder": "请输入电话号",
|
||||
"register.survey.phone.required": "请输入电话号",
|
||||
"register.survey.email": "邮箱",
|
||||
"register.survey.email.placeholder": "请输入电子邮箱",
|
||||
"register.survey.email.required": "请输入电子邮箱",
|
||||
"register.survey.date": "日期",
|
||||
"register.survey.date.required": "请选择日期",
|
||||
"register.survey.questionnaire": "问卷",
|
||||
"register.survey.question": "问题",
|
||||
"register.survey.reply": "回复",
|
||||
"register.survey.answer.required": "请选择问题{index}的答案",
|
||||
"register.survey.answer.placeholder": "请输入回答",
|
||||
"register.survey.noData": "暂无问卷数据",
|
||||
|
||||
// 附件相关
|
||||
"register.attachment.stampUpload": "请加盖公司公章后上传",
|
||||
"register.attachment.downloadTemplate": "下载模版",
|
||||
"register.attachment.commitment.required": "请上传已盖章的反商业贿赂承诺书",
|
||||
"register.attachment.otherAttachments.hint": "其他附件(非必须上传)",
|
||||
"register.attachment.addMore": "添加更多附件",
|
||||
"register.upload.success": "{filename} 上传成功",
|
||||
|
||||
// 承诺书内容
|
||||
'register.supplier.commitment.content.intro1': '尊敬的用户:',
|
||||
'register.supplier.commitment.content.intro2': '感谢您注册使用我们的平台。请您仔细阅读以下承诺内容:',
|
||||
'register.supplier.commitment.content.item1': '本人/单位承诺所提供的注册信息真实、准确、完整,不存在虚假记载、误导性陈述或重大遗漏。',
|
||||
'register.supplier.commitment.content.item2': '本人/单位承诺遵守平台的各项规则和要求,不从事任何违法违规活动。',
|
||||
'register.supplier.commitment.content.item3': '本人/单位了解并同意,如提供虚假信息或违反平台规则,平台有权终止服务并追究相关责任。',
|
||||
'register.supplier.commitment.content.item4': '本人/单位承诺妥善保管账号和密码,对账号下的所有操作和行为负责。',
|
||||
'register.supplier.commitment.content.item5': '本人/单位同意平台在必要范围内合法使用所提供的信息,用于提供服务和改善用户体验。',
|
||||
'register.supplier.commitment.content.item6': '本人/单位承诺遵守国家法律法规和行业规范,恪守商业道德,不从事任何损害平台或其他用户利益的行为。',
|
||||
'register.supplier.commitment.content.item7': '本人/单位承诺所上传的资质文件和证明材料真实有效,并对其真实性和合法性负责。',
|
||||
'register.supplier.commitment.content.item8': '本人/单位了解并同意,平台有权根据业务需要对用户资料进行审核,并保留最终解释权。',
|
||||
'register.supplier.commitment.content.end': '特此承诺!',
|
||||
|
||||
// 验证码相关
|
||||
'register.captcha.sent': '验证码已发送至 {phone}',
|
||||
'register.captcha.phoneRequired': '请先输入正确的手机号',
|
||||
|
||||
// 提交相关
|
||||
'register.submit.success': '注册成功,请登录',
|
||||
'register.submit.failed': '注册失败,请重试',
|
||||
'register.submit.error': '注册失败,请稍后重试',
|
||||
};
|
@ -7,6 +7,8 @@ import DomesticForm from './supplier/DomesticForm';
|
||||
import ForeignForm from './supplier/ForeignForm';
|
||||
import { coscoSupplierBaseAdd, fetchSurveyQuestions } from '@/servers/api/register';
|
||||
import './register.less';
|
||||
import { getDictList } from '@/servers/api/dict';
|
||||
import type { DictItem } from '@/servers/api/dict';
|
||||
|
||||
const SupplierRegister: React.FC = () => {
|
||||
const [form] = Form.useForm();
|
||||
@ -17,7 +19,23 @@ const SupplierRegister: React.FC = () => {
|
||||
const [modalVisible, setModalVisible] = useState(false);
|
||||
const [surveyQuestions, setSurveyQuestions] = useState<API.SurveyQuestionResponse>([]);
|
||||
const [fetchingQuestions, setFetchingQuestions] = useState(false);
|
||||
// 币种
|
||||
const [currencyList, setCurrencyList] = useState<DictItem[]>([]);
|
||||
// 企业类型
|
||||
const [entTypeList, setEntTypeList] = useState<DictItem[]>([]);
|
||||
|
||||
const getDict = async () => {
|
||||
// currency 币种
|
||||
const currencyResponse = await getDictList('currency');
|
||||
// entType 企业类型
|
||||
const entTypeResponse = await getDictList('enterprise_type');
|
||||
Promise.all([currencyResponse, entTypeResponse]).then(
|
||||
([currencyListResponse, entTypeListResponse]) => {
|
||||
setCurrencyList(currencyListResponse.data || []);
|
||||
setEntTypeList(entTypeListResponse.data || []);
|
||||
},
|
||||
);
|
||||
};
|
||||
// 获取问卷列表
|
||||
useEffect(() => {
|
||||
const fetchQuestions = async () => {
|
||||
@ -27,17 +45,19 @@ const SupplierRegister: React.FC = () => {
|
||||
if (response.success) {
|
||||
setSurveyQuestions(response.data || []);
|
||||
} else {
|
||||
message.error(response.message || '获取问卷列表失败');
|
||||
message.error(response.message || intl.formatMessage({ id: 'register.submit.failed' }));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取问卷列表出错:', error);
|
||||
message.error('获取问卷列表出错');
|
||||
message.error(intl.formatMessage({ id: 'register.submit.error' }));
|
||||
} finally {
|
||||
setFetchingQuestions(false);
|
||||
}
|
||||
};
|
||||
|
||||
fetchQuestions();
|
||||
// 获取字典
|
||||
getDict();
|
||||
}, []);
|
||||
|
||||
// 获取短信验证码
|
||||
@ -45,7 +65,7 @@ const SupplierRegister: React.FC = () => {
|
||||
form
|
||||
.validateFields(['contactPhone'])
|
||||
.then((values) => {
|
||||
message.success(`验证码已发送至 ${values.contactPhone}`);
|
||||
message.success(intl.formatMessage({ id: 'register.captcha.sent' }, { phone: values.contactPhone }));
|
||||
let count = 60;
|
||||
setCountdown(count);
|
||||
|
||||
@ -58,7 +78,7 @@ const SupplierRegister: React.FC = () => {
|
||||
}, 1000);
|
||||
})
|
||||
.catch((errorInfo) => {
|
||||
message.error('请先输入正确的手机号');
|
||||
message.error(intl.formatMessage({ id: 'register.captcha.phoneRequired' }));
|
||||
});
|
||||
};
|
||||
|
||||
@ -81,15 +101,23 @@ const SupplierRegister: React.FC = () => {
|
||||
|
||||
// 处理文件上传组件返回的文件列表值
|
||||
// 处理营业执照附件
|
||||
if (values.coscoSupplierBase.licenceAccessory && Array.isArray(values.coscoSupplierBase.licenceAccessory)) {
|
||||
if (
|
||||
values.coscoSupplierBase.licenceAccessory &&
|
||||
Array.isArray(values.coscoSupplierBase.licenceAccessory)
|
||||
) {
|
||||
const licenceFile = values.coscoSupplierBase.licenceAccessory[0];
|
||||
values.coscoSupplierBase.licenceAccessory = licenceFile?.response?.url || licenceFile?.response?.filePath || '';
|
||||
values.coscoSupplierBase.licenceAccessory =
|
||||
licenceFile?.response?.url || licenceFile?.response?.filePath || '';
|
||||
}
|
||||
|
||||
// 处理纳税人资格证明
|
||||
if (values.coscoSupplierInvoice?.qualificationCertificate && Array.isArray(values.coscoSupplierInvoice.qualificationCertificate)) {
|
||||
if (
|
||||
values.coscoSupplierInvoice?.qualificationCertificate &&
|
||||
Array.isArray(values.coscoSupplierInvoice.qualificationCertificate)
|
||||
) {
|
||||
const taxFile = values.coscoSupplierInvoice.qualificationCertificate[0];
|
||||
values.coscoSupplierInvoice.qualificationCertificate = taxFile?.response?.url || taxFile?.response?.filePath || '';
|
||||
values.coscoSupplierInvoice.qualificationCertificate =
|
||||
taxFile?.response?.url || taxFile?.response?.filePath || '';
|
||||
}
|
||||
|
||||
// 处理资质证书附件
|
||||
@ -97,7 +125,8 @@ const SupplierRegister: React.FC = () => {
|
||||
values.coscoSupplierQualifications = values.coscoSupplierQualifications.map((qual: any) => {
|
||||
if (qual.accessory && Array.isArray(qual.accessory)) {
|
||||
const accessoryFile = qual.accessory[0];
|
||||
qual.accessory = accessoryFile?.response?.url || accessoryFile?.response?.filePath || '';
|
||||
qual.accessory =
|
||||
accessoryFile?.response?.url || accessoryFile?.response?.filePath || '';
|
||||
}
|
||||
return qual;
|
||||
});
|
||||
@ -105,13 +134,15 @@ const SupplierRegister: React.FC = () => {
|
||||
|
||||
// 处理调查问卷附件
|
||||
if (values.coscoSupplierSurveyAttachments) {
|
||||
values.coscoSupplierSurveyAttachments = values.coscoSupplierSurveyAttachments.map((item: any) => {
|
||||
values.coscoSupplierSurveyAttachments = values.coscoSupplierSurveyAttachments.map(
|
||||
(item: any) => {
|
||||
if (item.fileUrl && Array.isArray(item.fileUrl)) {
|
||||
const file = item.fileUrl[0];
|
||||
item.fileUrl = file?.response?.url || file?.response?.filePath || '';
|
||||
}
|
||||
return item;
|
||||
});
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
// 处理调查问卷回复
|
||||
@ -121,7 +152,7 @@ const SupplierRegister: React.FC = () => {
|
||||
.filter((item: any) => item && item.surveyQuestionId && item.replyValue)
|
||||
.map((item: any) => ({
|
||||
surveyQuestionId: item.surveyQuestionId,
|
||||
replyValue: item.replyValue
|
||||
replyValue: item.replyValue,
|
||||
}));
|
||||
|
||||
console.log('处理后的问卷回复:', values.coscoSupplierSurveyQuestionReply);
|
||||
@ -133,14 +164,14 @@ const SupplierRegister: React.FC = () => {
|
||||
const response = await coscoSupplierBaseAdd(values);
|
||||
|
||||
if (response.success) {
|
||||
message.success('注册成功,请登录');
|
||||
message.success(intl.formatMessage({ id: 'register.submit.success' }));
|
||||
history.push('/login');
|
||||
} else {
|
||||
message.error(response.message || '注册失败,请重试');
|
||||
message.error(response.message || intl.formatMessage({ id: 'register.submit.failed' }));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('注册出错:', error);
|
||||
message.error('注册失败,请稍后重试');
|
||||
message.error(intl.formatMessage({ id: 'register.submit.error' }));
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@ -181,10 +212,14 @@ const SupplierRegister: React.FC = () => {
|
||||
labelCol={{ span: 7 }}
|
||||
wrapperCol={{ span: 17 }}
|
||||
>
|
||||
<Form.Item label="身份类型" labelCol={{ span: 2 }} wrapperCol={{ span: 19 }}>
|
||||
<Radio.Group onChange={handleSupplierTypeChange} buttonStyle="solid" value={supplierType}>
|
||||
<Radio.Button value="dvs">境内企业/机构</Radio.Button>
|
||||
<Radio.Button value="ovs">境外企业</Radio.Button>
|
||||
<Form.Item label={intl.formatMessage({ id: 'register.supplier.identityType' })} labelCol={{ span: 2 }} wrapperCol={{ span: 19 }}>
|
||||
<Radio.Group
|
||||
onChange={handleSupplierTypeChange}
|
||||
buttonStyle="solid"
|
||||
value={supplierType}
|
||||
>
|
||||
<Radio.Button value="dvs">{intl.formatMessage({ id: 'register.supplier.domestic' })}</Radio.Button>
|
||||
<Radio.Button value="ovs">{intl.formatMessage({ id: 'register.supplier.foreign' })}</Radio.Button>
|
||||
</Radio.Group>
|
||||
</Form.Item>
|
||||
|
||||
@ -194,6 +229,8 @@ const SupplierRegister: React.FC = () => {
|
||||
countdown={countdown}
|
||||
surveyQuestions={surveyQuestions}
|
||||
handleGetCaptcha={handleGetCaptcha}
|
||||
currencyList={currencyList}
|
||||
entTypeList={entTypeList}
|
||||
/>
|
||||
) : (
|
||||
<ForeignForm
|
||||
@ -201,6 +238,8 @@ const SupplierRegister: React.FC = () => {
|
||||
countdown={countdown}
|
||||
handleGetCaptcha={handleGetCaptcha}
|
||||
surveyQuestions={surveyQuestions}
|
||||
currencyList={currencyList}
|
||||
entTypeList={entTypeList}
|
||||
/>
|
||||
)}
|
||||
<Form.Item
|
||||
@ -213,12 +252,12 @@ const SupplierRegister: React.FC = () => {
|
||||
validator: (_, value) =>
|
||||
value
|
||||
? Promise.resolve()
|
||||
: Promise.reject(new Error('请阅读并同意注册信息承诺书')),
|
||||
: Promise.reject(new Error(intl.formatMessage({ id: 'register.supplier.agreement.required' }))),
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Checkbox>
|
||||
我已阅读并同意
|
||||
{intl.formatMessage({ id: 'register.supplier.agreement' })}
|
||||
<Button
|
||||
type="link"
|
||||
onClick={(e) => {
|
||||
@ -227,7 +266,7 @@ const SupplierRegister: React.FC = () => {
|
||||
setModalVisible(true);
|
||||
}}
|
||||
>
|
||||
《注册信息承诺书》
|
||||
{intl.formatMessage({ id: 'register.supplier.commitment' })}
|
||||
</Button>
|
||||
</Checkbox>
|
||||
</Form.Item>
|
||||
@ -244,7 +283,7 @@ const SupplierRegister: React.FC = () => {
|
||||
|
||||
{/* 注册信息承诺书弹窗 */}
|
||||
<Modal
|
||||
title="注册信息承诺书"
|
||||
title={intl.formatMessage({ id: 'register.supplier.commitment.title' })}
|
||||
visible={modalVisible}
|
||||
onOk={() => {
|
||||
console.log('点击了确定按钮');
|
||||
@ -255,31 +294,31 @@ const SupplierRegister: React.FC = () => {
|
||||
setModalVisible(false);
|
||||
}}
|
||||
width={700}
|
||||
okText="我知道了"
|
||||
okText={intl.formatMessage({ id: 'register.supplier.commitment.ok' })}
|
||||
cancelButtonProps={{ style: { display: 'none' } }}
|
||||
destroyOnClose
|
||||
// maskClosable={false}
|
||||
>
|
||||
<div style={{ maxHeight: '60vh', overflow: 'auto' }}>
|
||||
<p>尊敬的用户:</p>
|
||||
<p>感谢您注册使用我们的平台。请您仔细阅读以下承诺内容:</p>
|
||||
<p>{intl.formatMessage({ id: 'register.supplier.commitment.content.intro1' })}</p>
|
||||
<p>{intl.formatMessage({ id: 'register.supplier.commitment.content.intro2' })}</p>
|
||||
<ol>
|
||||
<li>
|
||||
本人/单位承诺所提供的注册信息真实、准确、完整,不存在虚假记载、误导性陈述或重大遗漏。
|
||||
{intl.formatMessage({ id: 'register.supplier.commitment.content.item1' })}
|
||||
</li>
|
||||
<li>本人/单位承诺遵守平台的各项规则和要求,不从事任何违法违规活动。</li>
|
||||
<li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item2' })}</li>
|
||||
<li>
|
||||
本人/单位了解并同意,如提供虚假信息或违反平台规则,平台有权终止服务并追究相关责任。
|
||||
{intl.formatMessage({ id: 'register.supplier.commitment.content.item3' })}
|
||||
</li>
|
||||
<li>本人/单位承诺妥善保管账号和密码,对账号下的所有操作和行为负责。</li>
|
||||
<li>本人/单位同意平台在必要范围内合法使用所提供的信息,用于提供服务和改善用户体验。</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.item6' })}
|
||||
</li>
|
||||
<li>本人/单位承诺所上传的资质文件和证明材料真实有效,并对其真实性和合法性负责。</li>
|
||||
<li>本人/单位了解并同意,平台有权根据业务需要对用户资料进行审核,并保留最终解释权。</li>
|
||||
<li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item7' })}</li>
|
||||
<li>{intl.formatMessage({ id: 'register.supplier.commitment.content.item8' })}</li>
|
||||
</ol>
|
||||
<p>特此承诺!</p>
|
||||
<p>{intl.formatMessage({ id: 'register.supplier.commitment.content.end' })}</p>
|
||||
</div>
|
||||
</Modal>
|
||||
</div>
|
||||
|
@ -2,7 +2,7 @@
|
||||
* 供应商注册表单通用部分
|
||||
* 封装了国内企业和境外企业注册表单相同的部分
|
||||
*/
|
||||
import React from 'react';
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import {
|
||||
Form,
|
||||
Input,
|
||||
@ -18,7 +18,10 @@ import {
|
||||
} from 'antd';
|
||||
import { PlusOutlined, DeleteOutlined } from '@ant-design/icons';
|
||||
import { message } from 'antd';
|
||||
import { useIntl } from 'umi';
|
||||
import FileUpload from '@/components/FileUpload';
|
||||
import type { DictItem } from '@/servers/api/dict';
|
||||
import { getDictList } from '@/servers/api/dict';
|
||||
|
||||
const { Option } = Select;
|
||||
|
||||
@ -73,9 +76,20 @@ interface SurveySectionProps extends CommonFormSectionsProps {
|
||||
* 包含资质证书类型、名称、编号、等级、发证机构、发证日期、有效期等
|
||||
*/
|
||||
export const QualificationSection: React.FC<CommonFormSectionsProps> = ({ form }) => {
|
||||
const intl = useIntl();
|
||||
// 资质证书类型
|
||||
const [certTypeList, setCertTypeList] = useState<DictItem[]>([]);
|
||||
const getDict = async () => {
|
||||
// qualification_type 资质证书类型
|
||||
const certTypeResponse = await getDictList('certificate');
|
||||
setCertTypeList(certTypeResponse.data || []);
|
||||
};
|
||||
useEffect(() => {
|
||||
getDict();
|
||||
}, []);
|
||||
return (
|
||||
<>
|
||||
<div className="form-section-title">资质信息</div>
|
||||
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.qualification' })}</div>
|
||||
|
||||
<Form.List name="coscoSupplierQualifications">
|
||||
{(fields, { add, remove }) => (
|
||||
@ -92,89 +106,89 @@ export const QualificationSection: React.FC<CommonFormSectionsProps> = ({ form }
|
||||
rowKey="key"
|
||||
columns={[
|
||||
{
|
||||
title: '序号',
|
||||
title: intl.formatMessage({ id: 'register.form.table.no' }),
|
||||
dataIndex: 'name',
|
||||
width: 60,
|
||||
render: (_, __, index) => index + 1,
|
||||
},
|
||||
{
|
||||
title: '资质证书类型',
|
||||
title: intl.formatMessage({ id: 'register.qualification.certType' }),
|
||||
dataIndex: 'certType',
|
||||
render: (_, record) => (
|
||||
<Form.Item
|
||||
name={[record.name, 'certificateType']}
|
||||
noStyle
|
||||
rules={[{ required: false, message: '请选择资质证书类型' }]}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.qualification.certType.required' }) }]}
|
||||
>
|
||||
<Select placeholder="请选择类型" style={{ width: '100%' }}>
|
||||
<Option value="机构资质">机构资质</Option>
|
||||
<Option value="CMMI资质等级">CMMI资质等级</Option>
|
||||
<Option value="质量体系认证">质量体系认证</Option>
|
||||
<Option value="环境管理体系认证">环境管理体系认证</Option>
|
||||
<Option value="行业资质">行业资质</Option>
|
||||
<Select placeholder={intl.formatMessage({ id: 'register.qualification.certType.placeholder' })} style={{ width: '100%' }}>
|
||||
{certTypeList.map((item) => (
|
||||
<Option key={item.code} value={item.code}>
|
||||
{item.dicName}
|
||||
</Option>
|
||||
))}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '资质名称',
|
||||
title: intl.formatMessage({ id: 'register.qualification.certName' }),
|
||||
dataIndex: 'certName',
|
||||
render: (_, record) => (
|
||||
<Form.Item
|
||||
name={[record.name, 'name']}
|
||||
noStyle
|
||||
rules={[{ required: false, message: '请输入资质名称' }]}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.qualification.certName.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入资质名称" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.qualification.certName.placeholder' })} />
|
||||
</Form.Item>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '资质证书编号',
|
||||
title: intl.formatMessage({ id: 'register.qualification.certNumber' }),
|
||||
dataIndex: 'certNumber',
|
||||
render: (_, record) => (
|
||||
<Form.Item
|
||||
name={[record.name, 'code']}
|
||||
noStyle
|
||||
rules={[{ required: false, message: '请输入资质证书编号' }]}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.qualification.certNumber.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入证书编号" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.qualification.certNumber.placeholder' })} />
|
||||
</Form.Item>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '资质类别和等级',
|
||||
title: intl.formatMessage({ id: 'register.qualification.certLevel' }),
|
||||
dataIndex: 'certLevel',
|
||||
render: (_, record) => (
|
||||
<Form.Item name={[record.name, 'typeLevel']} noStyle>
|
||||
<Input placeholder="请输入资质类别和等级" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.qualification.certLevel.placeholder' })} />
|
||||
</Form.Item>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '发证机构',
|
||||
title: intl.formatMessage({ id: 'register.qualification.issuingAuthority' }),
|
||||
dataIndex: 'issuingAuthority',
|
||||
render: (_, record) => (
|
||||
<Form.Item
|
||||
name={[record.name, 'authority']}
|
||||
noStyle
|
||||
rules={[{ required: false, message: '请输入发证机构' }]}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.qualification.issuingAuthority.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入发证机构" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.qualification.issuingAuthority.placeholder' })} />
|
||||
</Form.Item>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '发证日期',
|
||||
title: intl.formatMessage({ id: 'register.qualification.issueDate' }),
|
||||
dataIndex: 'issueDate',
|
||||
render: (_, record) => (
|
||||
<Form.Item
|
||||
name={[record.name, 'dateTime']}
|
||||
noStyle
|
||||
rules={[{ required: false, message: '请选择发证日期' }]}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.qualification.issueDate.required' }) }]}
|
||||
>
|
||||
<DatePicker
|
||||
placeholder="年/月/日"
|
||||
placeholder={intl.formatMessage({ id: 'register.form.date.placeholder' })}
|
||||
style={{ width: '100%' }}
|
||||
format="YYYY-MM-DD"
|
||||
/>
|
||||
@ -182,16 +196,16 @@ export const QualificationSection: React.FC<CommonFormSectionsProps> = ({ form }
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '资质有效期至',
|
||||
title: intl.formatMessage({ id: 'register.qualification.expiryDate' }),
|
||||
dataIndex: 'expiryDate',
|
||||
render: (_, record) => (
|
||||
<Form.Item
|
||||
name={[record.name, 'termOfValidity']}
|
||||
noStyle
|
||||
rules={[{ required: false, message: '请选择资质有效期' }]}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.qualification.expiryDate.required' }) }]}
|
||||
>
|
||||
<DatePicker
|
||||
placeholder="年/月/日"
|
||||
placeholder={intl.formatMessage({ id: 'register.form.date.placeholder' })}
|
||||
style={{ width: '100%' }}
|
||||
format="YYYY-MM-DD"
|
||||
/>
|
||||
@ -199,26 +213,26 @@ export const QualificationSection: React.FC<CommonFormSectionsProps> = ({ form }
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '附件',
|
||||
title: intl.formatMessage({ id: 'register.form.attachment' }),
|
||||
dataIndex: 'certFile',
|
||||
render: (_, record) => (
|
||||
<Form.Item
|
||||
name={[record.name, 'accessory']}
|
||||
noStyle
|
||||
rules={[{ required: false, message: '请上传资质证书附件' }]}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.qualification.attachment.required' }) }]}
|
||||
valuePropName="value"
|
||||
>
|
||||
<FileUpload
|
||||
maxSize={10}
|
||||
allowedTypes={['pdf', 'jpg', 'jpeg', 'png']}
|
||||
maxCount={1}
|
||||
buttonText="上传"
|
||||
buttonText={intl.formatMessage({ id: 'register.form.upload' })}
|
||||
/>
|
||||
</Form.Item>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
title: intl.formatMessage({ id: 'register.form.operation' }),
|
||||
width: 70,
|
||||
render: (_, record) => (
|
||||
<Button
|
||||
@ -227,7 +241,7 @@ export const QualificationSection: React.FC<CommonFormSectionsProps> = ({ form }
|
||||
icon={<DeleteOutlined />}
|
||||
onClick={() => remove(record.name)}
|
||||
>
|
||||
删除
|
||||
{intl.formatMessage({ id: 'register.form.delete' })}
|
||||
</Button>
|
||||
),
|
||||
},
|
||||
@ -235,7 +249,7 @@ export const QualificationSection: React.FC<CommonFormSectionsProps> = ({ form }
|
||||
/>
|
||||
<Form.Item style={{ marginTop: 16 }} wrapperCol={{ span: 24 }}>
|
||||
<Button type="dashed" onClick={() => add()} block icon={<PlusOutlined />}>
|
||||
添加行
|
||||
{intl.formatMessage({ id: 'register.form.addRow' })}
|
||||
</Button>
|
||||
</Form.Item>
|
||||
</>
|
||||
@ -250,72 +264,98 @@ export const QualificationSection: React.FC<CommonFormSectionsProps> = ({ form }
|
||||
* 包含纳税人类型、开票抬头、纳税人识别号、开票地址等
|
||||
*/
|
||||
export const InvoiceSection: React.FC<CommonFormSectionsProps> = ({ form }) => {
|
||||
const intl = useIntl();
|
||||
// 纳税人类型
|
||||
const [taxpayerTypeList, setTaxpayerTypeList] = useState<DictItem[]>([]);
|
||||
const getDict = async () => {
|
||||
// taxpayer_type 纳税人类型
|
||||
const taxpayerTypeResponse = await getDictList('taxpayer_type');
|
||||
setTaxpayerTypeList(taxpayerTypeResponse.data || []);
|
||||
};
|
||||
useEffect(() => {
|
||||
getDict();
|
||||
}, []);
|
||||
return (
|
||||
<>
|
||||
<div className="form-section-title">开票信息</div>
|
||||
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.invoice' })}</div>
|
||||
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierInvoice', 'taxpayerType']}
|
||||
label="纳税人类型"
|
||||
rules={[{ required: true, message: '请选择纳税人类型' }]}
|
||||
label={intl.formatMessage({ id: 'register.invoice.taxpayerType' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.invoice.taxpayerType.required' }) }]}
|
||||
>
|
||||
<Select placeholder="请选择纳税人类型">
|
||||
<Option value="general">一般纳税人</Option>
|
||||
<Option value="small">小规模纳税人</Option>
|
||||
<Select placeholder={intl.formatMessage({ id: 'register.invoice.taxpayerType.placeholder' })}>
|
||||
{taxpayerTypeList.map((item) => (
|
||||
<Option key={item.code} value={item.code}>
|
||||
{item.dicName}
|
||||
</Option>
|
||||
))}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierInvoice', 'head']}
|
||||
label="开票抬头"
|
||||
rules={[{ required: true, message: '请输入开票抬头' }]}
|
||||
label={intl.formatMessage({ id: 'register.invoice.head' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.invoice.head.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入开票抬头" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.invoice.head.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierInvoice', 'taxpayerCode']}
|
||||
label="纳税人识别号"
|
||||
rules={[{ required: true, message: '请输入纳税人识别号' }]}
|
||||
label={intl.formatMessage({ id: 'register.invoice.taxpayerCode' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.invoice.taxpayerCode.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入纳税人识别号" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.invoice.taxpayerCode.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item name={['coscoSupplierInvoice', 'address']} label="开票地址">
|
||||
<Input placeholder="请输入开票地址" />
|
||||
<Form.Item
|
||||
name={['coscoSupplierInvoice', 'address']}
|
||||
label={intl.formatMessage({ id: 'register.invoice.address' })}
|
||||
>
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.invoice.address.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item name={['coscoSupplierInvoice', 'phone']} label="开票电话">
|
||||
<Input placeholder="请输入开票电话" />
|
||||
<Form.Item
|
||||
name={['coscoSupplierInvoice', 'phone']}
|
||||
label={intl.formatMessage({ id: 'register.invoice.phone' })}
|
||||
>
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.invoice.phone.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item name={['coscoSupplierInvoice', 'bank']} label="开票户行">
|
||||
<Input placeholder="请输入开票银行" />
|
||||
<Form.Item
|
||||
name={['coscoSupplierInvoice', 'bank']}
|
||||
label={intl.formatMessage({ id: 'register.invoice.bank' })}
|
||||
>
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.invoice.bank.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item name={['coscoSupplierInvoice', 'account']} label="开票户行账号">
|
||||
<Input placeholder="请输入开票户行账号" />
|
||||
<Form.Item
|
||||
name={['coscoSupplierInvoice', 'account']}
|
||||
label={intl.formatMessage({ id: 'register.invoice.account' })}
|
||||
>
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.invoice.account.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierInvoice', 'qualificationCertificate']}
|
||||
label="一般纳税人资格证明"
|
||||
label={intl.formatMessage({ id: 'register.invoice.qualificationCertificate' })}
|
||||
valuePropName="value"
|
||||
>
|
||||
<FileUpload
|
||||
maxSize={10}
|
||||
allowedTypes={['pdf', 'jpg', 'jpeg', 'png']}
|
||||
maxCount={1}
|
||||
buttonText="上传文件"
|
||||
buttonText={intl.formatMessage({ id: 'register.form.upload' })}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
@ -329,9 +369,10 @@ export const InvoiceSection: React.FC<CommonFormSectionsProps> = ({ form }) => {
|
||||
* 包含开户银行、账户名称、账号、所在地区等
|
||||
*/
|
||||
export const BankAccountSection: React.FC<CommonFormSectionsProps> = ({ form }) => {
|
||||
const intl = useIntl();
|
||||
return (
|
||||
<>
|
||||
<div className="form-section-title">银行账户</div>
|
||||
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.bankAccount' })}</div>
|
||||
|
||||
<Form.List name="coscoSupplierBank">
|
||||
{(fields, { add, remove }) => (
|
||||
@ -348,62 +389,62 @@ export const BankAccountSection: React.FC<CommonFormSectionsProps> = ({ form })
|
||||
rowKey="key"
|
||||
columns={[
|
||||
{
|
||||
title: '序号',
|
||||
title: intl.formatMessage({ id: 'register.form.table.no' }),
|
||||
dataIndex: 'name',
|
||||
width: 60,
|
||||
render: (_, __, index) => index + 1,
|
||||
},
|
||||
{
|
||||
title: '开户银行',
|
||||
title: intl.formatMessage({ id: 'register.bank.bankName' }),
|
||||
dataIndex: 'bankName',
|
||||
render: (_, record) => (
|
||||
<Form.Item
|
||||
name={[record.name, 'bank']}
|
||||
noStyle
|
||||
rules={[{ required: true, message: '请输入开户银行' }]}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.bank.bankName.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入开户银行" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.bank.bankName.placeholder' })} />
|
||||
</Form.Item>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '账户名称',
|
||||
title: intl.formatMessage({ id: 'register.bank.accountName' }),
|
||||
dataIndex: 'accountName',
|
||||
render: (_, record) => (
|
||||
<Form.Item
|
||||
name={[record.name, 'accountName']}
|
||||
noStyle
|
||||
rules={[{ required: true, message: '请输入账户名称' }]}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.bank.accountName.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入账户名称" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.bank.accountName.placeholder' })} />
|
||||
</Form.Item>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '账号',
|
||||
title: intl.formatMessage({ id: 'register.bank.accountNumber' }),
|
||||
dataIndex: 'accountNumber',
|
||||
render: (_, record) => (
|
||||
<Form.Item
|
||||
name={[record.name, 'account']}
|
||||
noStyle
|
||||
rules={[{ required: true, message: '请输入账号' }]}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.bank.accountNumber.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入账号" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.bank.accountNumber.placeholder' })} />
|
||||
</Form.Item>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '国家、省、市',
|
||||
title: intl.formatMessage({ id: 'register.bank.location' }),
|
||||
dataIndex: 'location',
|
||||
render: (_, record) => (
|
||||
<Form.Item
|
||||
name={[record.name, 'address']}
|
||||
noStyle
|
||||
rules={[{ required: true, message: '请选择地址' }]}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.bank.location.required' }) }]}
|
||||
>
|
||||
<Cascader
|
||||
options={addressOptions}
|
||||
placeholder="请选择省市区"
|
||||
placeholder={intl.formatMessage({ id: 'register.bank.location.placeholder' })}
|
||||
showSearch={{
|
||||
filter: (inputValue, path) => {
|
||||
return path.some((option) => {
|
||||
@ -421,7 +462,7 @@ export const BankAccountSection: React.FC<CommonFormSectionsProps> = ({ form })
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
title: intl.formatMessage({ id: 'register.form.operation' }),
|
||||
width: 70,
|
||||
render: (_, record) => (
|
||||
<Button
|
||||
@ -430,7 +471,7 @@ export const BankAccountSection: React.FC<CommonFormSectionsProps> = ({ form })
|
||||
icon={<DeleteOutlined />}
|
||||
onClick={() => remove(record.name)}
|
||||
>
|
||||
删除
|
||||
{intl.formatMessage({ id: 'register.form.delete' })}
|
||||
</Button>
|
||||
),
|
||||
},
|
||||
@ -438,7 +479,7 @@ export const BankAccountSection: React.FC<CommonFormSectionsProps> = ({ form })
|
||||
/>
|
||||
<Form.Item style={{ marginTop: 16 }} wrapperCol={{ span: 24 }}>
|
||||
<Button type="dashed" onClick={() => add()} block icon={<PlusOutlined />}>
|
||||
添加行
|
||||
{intl.formatMessage({ id: 'register.form.addRow' })}
|
||||
</Button>
|
||||
</Form.Item>
|
||||
</>
|
||||
@ -453,6 +494,7 @@ export const BankAccountSection: React.FC<CommonFormSectionsProps> = ({ form })
|
||||
* 包含填写人信息和问卷内容
|
||||
*/
|
||||
export const SurveySection: React.FC<SurveySectionProps> = ({ form, surveyQuestions }) => {
|
||||
const intl = useIntl();
|
||||
// 使用API获取的问卷数据,如果没有则显示无数据状态
|
||||
const hasQuestions =
|
||||
surveyQuestions && Array.isArray(surveyQuestions) && surveyQuestions.length > 0;
|
||||
@ -462,71 +504,71 @@ export const SurveySection: React.FC<SurveySectionProps> = ({ form, surveyQuesti
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="form-section-title">社会准则符合性自查问卷</div>
|
||||
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.survey' })}</div>
|
||||
|
||||
<div className="questionnaire-header">填写人信息:</div>
|
||||
<div className="questionnaire-header">{intl.formatMessage({ id: 'register.survey.fillerInfo' })}:</div>
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierSurvey', 'supplierName']}
|
||||
label="供应商名称"
|
||||
rules={[{ required: true, message: '请输入供应商名称' }]}
|
||||
label={intl.formatMessage({ id: 'register.survey.supplierName' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.survey.supplierName.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入供应商名称" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.survey.supplierName.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierSurvey', 'name']}
|
||||
label="姓名"
|
||||
rules={[{ required: true, message: '请输入姓名' }]}
|
||||
label={intl.formatMessage({ id: 'register.survey.name' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.survey.name.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入姓名" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.survey.name.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierSurvey', 'position']}
|
||||
label="职位"
|
||||
rules={[{ required: true, message: '请输入职位' }]}
|
||||
label={intl.formatMessage({ id: 'register.survey.position' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.survey.position.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入职位" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.survey.position.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierSurvey', 'phone']}
|
||||
label="电话号"
|
||||
rules={[{ required: true, message: '请输入电话号' }]}
|
||||
label={intl.formatMessage({ id: 'register.survey.phone' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.survey.phone.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入电话号" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.survey.phone.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierSurvey', 'email']}
|
||||
label="邮箱"
|
||||
label={intl.formatMessage({ id: 'register.survey.email' })}
|
||||
rules={[
|
||||
{ type: 'email', message: '请输入有效的电子邮箱' },
|
||||
{ required: true, message: '请输入电子邮箱' },
|
||||
{ type: 'email', message: intl.formatMessage({ id: 'register.email.invalid' }) },
|
||||
{ required: true, message: intl.formatMessage({ id: 'register.survey.email.required' }) },
|
||||
]}
|
||||
>
|
||||
<Input placeholder="请输入电子邮箱" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.survey.email.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierSurvey', 'dateTime']}
|
||||
label="日期"
|
||||
rules={[{ required: true, message: '请选择日期' }]}
|
||||
label={intl.formatMessage({ id: 'register.survey.date' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.survey.date.required' }) }]}
|
||||
>
|
||||
<DatePicker 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>
|
||||
</Col>
|
||||
</Row>
|
||||
|
||||
<div className="questionnaire-header" style={{ marginTop: '20px' }}>
|
||||
问卷:
|
||||
{intl.formatMessage({ id: 'register.survey.questionnaire' })}:
|
||||
</div>
|
||||
|
||||
{hasQuestions ? (
|
||||
@ -549,19 +591,19 @@ export const SurveySection: React.FC<SurveySectionProps> = ({ form, surveyQuesti
|
||||
dataSource={surveyQuestions}
|
||||
columns={[
|
||||
{
|
||||
title: '序号',
|
||||
title: intl.formatMessage({ id: 'register.form.table.no' }),
|
||||
dataIndex: 'id',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
render: (text, record, index) => index + 1,
|
||||
},
|
||||
{
|
||||
title: '问题',
|
||||
title: intl.formatMessage({ id: 'register.survey.question' }),
|
||||
dataIndex: 'questionName',
|
||||
render: (text) => <div style={{ whiteSpace: 'pre-line' }}>{text}</div>,
|
||||
},
|
||||
{
|
||||
title: '回复',
|
||||
title: intl.formatMessage({ id: 'register.survey.reply' }),
|
||||
width: 650,
|
||||
render: (_, record, index) => {
|
||||
return (
|
||||
@ -575,7 +617,7 @@ export const SurveySection: React.FC<SurveySectionProps> = ({ form, surveyQuesti
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
name={[index, 'replyValue']}
|
||||
rules={[{ required: true, message: `请选择问题${index + 1}的答案` }]}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.survey.answer.required' }, { index: index + 1 }) }]}
|
||||
wrapperCol={{ span: 24 }}
|
||||
>
|
||||
{record.coscoSurveyQuestionOptionList &&
|
||||
@ -588,7 +630,7 @@ export const SurveySection: React.FC<SurveySectionProps> = ({ form, surveyQuesti
|
||||
))}
|
||||
</Radio.Group>
|
||||
) : (
|
||||
<Input placeholder="请输入回答" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.survey.answer.placeholder' })} />
|
||||
)}
|
||||
</Form.Item>
|
||||
</>
|
||||
@ -602,7 +644,7 @@ export const SurveySection: React.FC<SurveySectionProps> = ({ form, surveyQuesti
|
||||
</Form.List>
|
||||
) : (
|
||||
<div style={{ padding: '30px 0' }}>
|
||||
<Empty description="暂无问卷数据" image={Empty.PRESENTED_IMAGE_SIMPLE} />
|
||||
<Empty description={intl.formatMessage({ id: 'register.survey.noData' })} image={Empty.PRESENTED_IMAGE_SIMPLE} />
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
@ -613,19 +655,20 @@ export const SurveySection: React.FC<SurveySectionProps> = ({ form, surveyQuesti
|
||||
* 供应商反商业贿赂承诺书和其他附件部分
|
||||
*/
|
||||
export const AttachmentSection: React.FC<CommonFormSectionsProps> = ({ form }) => {
|
||||
const intl = useIntl();
|
||||
return (
|
||||
<>
|
||||
<div className="form-section-title">供应商反商业贿赂承诺书</div>
|
||||
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.commitment' })}</div>
|
||||
<Row gutter={24}>
|
||||
<Col span={12}>
|
||||
<div className="upload-label">
|
||||
请加盖公司公章后上传
|
||||
{intl.formatMessage({ id: 'register.attachment.stampUpload' })}
|
||||
<Button
|
||||
type="link"
|
||||
href="/templates/anti-bribery-template.docx"
|
||||
download="供应商反商业贿赂承诺书模板.docx"
|
||||
>
|
||||
下载模版
|
||||
{intl.formatMessage({ id: 'register.attachment.downloadTemplate' })}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@ -650,14 +693,14 @@ export const AttachmentSection: React.FC<CommonFormSectionsProps> = ({ form }) =
|
||||
|
||||
<Form.Item
|
||||
name={[field.name, 'fileUrl']}
|
||||
rules={[{ required: true, message: '请上传已盖章的反商业贿赂承诺书' }]}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.attachment.commitment.required' }) }]}
|
||||
valuePropName="value"
|
||||
>
|
||||
<FileUpload
|
||||
maxSize={10}
|
||||
allowedTypes={['pdf', 'doc', 'docx']}
|
||||
maxCount={1}
|
||||
buttonText="上传文件"
|
||||
buttonText={intl.formatMessage({ id: 'register.form.upload' })}
|
||||
onChange={(fileList) => {
|
||||
if (fileList && fileList.length > 0) {
|
||||
const file = fileList[0];
|
||||
@ -695,13 +738,13 @@ export const AttachmentSection: React.FC<CommonFormSectionsProps> = ({ form }) =
|
||||
</Col>
|
||||
</Row>
|
||||
|
||||
<div className="form-section-title">其他附件</div>
|
||||
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.otherAttachments' })}</div>
|
||||
<Row gutter={24}>
|
||||
<Col span={24}>
|
||||
<Form.List name="coscoSupplierSurveyAttachments">
|
||||
{(fields, { add, remove }) => (
|
||||
<>
|
||||
<div className="upload-label">其他附件(非必须上传)</div>
|
||||
<div className="upload-label">{intl.formatMessage({ id: 'register.attachment.otherAttachments.hint' })}</div>
|
||||
{fields.map((field, index) => (
|
||||
<div
|
||||
key={field.key}
|
||||
@ -726,7 +769,7 @@ export const AttachmentSection: React.FC<CommonFormSectionsProps> = ({ form }) =
|
||||
maxSize={20}
|
||||
allowedTypes={['*']}
|
||||
maxCount={1}
|
||||
buttonText="上传"
|
||||
buttonText={intl.formatMessage({ id: 'register.form.upload' })}
|
||||
onChange={(fileList) => {
|
||||
if (fileList && fileList.length > 0) {
|
||||
const file = fileList[0];
|
||||
@ -766,7 +809,7 @@ export const AttachmentSection: React.FC<CommonFormSectionsProps> = ({ form }) =
|
||||
icon={<PlusOutlined />}
|
||||
style={{ marginTop: 8 }}
|
||||
>
|
||||
添加更多附件
|
||||
{intl.formatMessage({ id: 'register.attachment.addMore' })}
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
|
@ -2,7 +2,9 @@
|
||||
import React from 'react';
|
||||
import { Form, Input, Button, Select, DatePicker, Row, Col, message } 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';
|
||||
|
||||
/**
|
||||
* 引入通用表单组件
|
||||
@ -25,6 +27,8 @@ interface DomesticFormProps {
|
||||
countdown: number;
|
||||
handleGetCaptcha: () => void;
|
||||
surveyQuestions?: API.SurveyQuestionResponse; // 本身就是数组类型
|
||||
currencyList: DictItem[];
|
||||
entTypeList: DictItem[];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -37,93 +41,98 @@ const DomesticForm: React.FC<DomesticFormProps> = ({
|
||||
countdown,
|
||||
handleGetCaptcha,
|
||||
surveyQuestions,
|
||||
currencyList,
|
||||
entTypeList,
|
||||
}) => {
|
||||
const intl = useIntl();
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="form-section-title">基本信息</div>
|
||||
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.basicInfo' })}</div>
|
||||
|
||||
{/* 营业执照附件和有效期 */}
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'enterpriseType']}
|
||||
label="企业类型"
|
||||
rules={[{ required: true, message: '请选择企业类型' }]}
|
||||
label={intl.formatMessage({ id: 'register.domestic.enterpriseType' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.enterpriseType.required' }) }]}
|
||||
valuePropName="value"
|
||||
>
|
||||
<Select placeholder="请选择企业类型">
|
||||
<Option value="limited">有限责任公司</Option>
|
||||
<Option value="joint">股份有限公司</Option>
|
||||
<Option value="individual">个体工商户</Option>
|
||||
<Option value="other">其他</Option>
|
||||
<Select placeholder={intl.formatMessage({ id: 'register.domestic.enterpriseType.placeholder' })}>
|
||||
{entTypeList.map((item) => (
|
||||
<Option key={item.code} value={item.code}>
|
||||
{item.dicName}
|
||||
</Option>
|
||||
))}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'licenceAccessory']}
|
||||
label="营业执照附件"
|
||||
rules={[{ required: true, message: '请上传营业执照附件' }]}
|
||||
label={intl.formatMessage({ id: 'register.domestic.licenceAccessory' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.licenceAccessory.required' }) }]}
|
||||
valuePropName="value"
|
||||
>
|
||||
<FileUpload
|
||||
maxSize={10}
|
||||
allowedTypes={['pdf', 'jpg', 'jpeg', 'png']}
|
||||
maxCount={1}
|
||||
buttonText="上传文件"
|
||||
tip="支持PDF、JPG、PNG格式,不超过10MB"
|
||||
buttonText={intl.formatMessage({ id: 'register.form.upload' })}
|
||||
tip={intl.formatMessage({ id: 'register.domestic.licenceAccessory.tip' })}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'licenceDate']}
|
||||
label="营业执照有效期"
|
||||
rules={[{ required: true, message: '请选择营业执照有效期' }]}
|
||||
label={intl.formatMessage({ id: 'register.domestic.licenceDate' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.licenceDate.required' }) }]}
|
||||
>
|
||||
<DatePicker 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>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'name']}
|
||||
label="企业名称"
|
||||
rules={[{ required: true, message: '请输入企业名称' }]}
|
||||
label={intl.formatMessage({ id: 'register.domestic.companyName' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.companyName.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入企业名称" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.domestic.companyName.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'nameEn']}
|
||||
label="企业英文名"
|
||||
rules={[{ required: false, message: '请输入企业英文名' }]}
|
||||
label={intl.formatMessage({ id: 'register.domestic.companyNameEn' })}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.domestic.companyNameEn.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入企业英文名" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.domestic.companyNameEn.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'socialCreditCode']}
|
||||
label="统一社会信用代码"
|
||||
label={intl.formatMessage({ id: 'register.domestic.socialCreditCode' })}
|
||||
rules={[
|
||||
{ required: true, message: '请输入统一社会信用代码' },
|
||||
{ pattern: /^[0-9A-HJ-NPQRTUWXY]{18}$/, message: '请输入正确的统一社会信用代码' },
|
||||
{ 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="请输入正确的统一社会信用代码" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.domestic.socialCreditCode.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={24} className="ant-form-item-label-fix">
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'range']}
|
||||
label="经营范围"
|
||||
rules={[{ required: true, message: '请输入经营范围' }]}
|
||||
label={intl.formatMessage({ id: 'register.domestic.businessScope' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.businessScope.required' }) }]}
|
||||
labelCol={{ span: 2 }}
|
||||
wrapperCol={{ span: 22 }}
|
||||
>
|
||||
<TextArea
|
||||
placeholder="金融专用产品、广告传媒"
|
||||
placeholder={intl.formatMessage({ id: 'register.domestic.businessScope.placeholder' })}
|
||||
rows={2}
|
||||
maxLength={200}
|
||||
showCount
|
||||
@ -136,91 +145,94 @@ const DomesticForm: React.FC<DomesticFormProps> = ({
|
||||
labelCol={{ span: 2 }}
|
||||
wrapperCol={{ span: 22 }}
|
||||
name={['coscoSupplierBase', 'regAddress']}
|
||||
label="注册地址"
|
||||
rules={[{ required: true, message: '请输入注册地址' }]}
|
||||
label={intl.formatMessage({ id: 'register.domestic.regAddress' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.regAddress.required' }) }]}
|
||||
>
|
||||
<Input prefix={<EnvironmentOutlined />} placeholder="上海市普陀区XX路1888号" />
|
||||
<Input prefix={<EnvironmentOutlined />} placeholder={intl.formatMessage({ id: 'register.domestic.regAddress.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={24} className="ant-form-item-label-fix">
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'workAddress']}
|
||||
label="办公地址"
|
||||
label={intl.formatMessage({ id: 'register.domestic.workAddress' })}
|
||||
labelCol={{ span: 2 }}
|
||||
wrapperCol={{ span: 22 }}
|
||||
>
|
||||
<Input
|
||||
prefix={<EnvironmentOutlined />}
|
||||
placeholder="请具体注明省、市、区、路、门牌号"
|
||||
placeholder={intl.formatMessage({ id: 'register.domestic.workAddress.placeholder' })}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={24} className="ant-form-item-label-fix">
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'parentCompanyInvestor']}
|
||||
label="母公司/出资人"
|
||||
label={intl.formatMessage({ id: 'register.domestic.parentCompany' })}
|
||||
labelCol={{ span: 2 }}
|
||||
wrapperCol={{ span: 22 }}
|
||||
>
|
||||
<Input placeholder="请输入母公司或出资人信息" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.domestic.parentCompany.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'legalPerson']}
|
||||
label="企业法定代表人"
|
||||
rules={[{ required: true, message: '请输入企业法定代表人/负责人' }]}
|
||||
label={intl.formatMessage({ id: 'register.domestic.legalPerson' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.legalPerson.required' }) }]}
|
||||
>
|
||||
<Input placeholder="张三" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.domestic.legalPerson.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item name={['coscoSupplierBase', 'idCard']} label="联系人证件号码">
|
||||
<Input placeholder="请填写联系人正确的身份证号" />
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'idCard']}
|
||||
label={intl.formatMessage({ id: 'register.domestic.idCard' })}
|
||||
>
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.domestic.idCard.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'capital']}
|
||||
label="注册资本"
|
||||
rules={[{ required: true, message: '请输入注册资本' }]}
|
||||
label={intl.formatMessage({ id: 'register.domestic.capital' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.capital.required' }) }]}
|
||||
>
|
||||
<Input type="number" placeholder="请输入金额" addonBefore="人民币" addonAfter="万元" />
|
||||
<Input type="number" placeholder={intl.formatMessage({ id: 'register.domestic.capital.placeholder' })} addonBefore="人民币" addonAfter="万元" />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'contactsName']}
|
||||
label="联系人姓名"
|
||||
rules={[{ required: true, message: '请输入联系人姓名' }]}
|
||||
label={intl.formatMessage({ id: 'register.domestic.contactsName' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.domestic.contactsName.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入联系人姓名" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.domestic.contactsName.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'contactsPhone']}
|
||||
label="联系人手机"
|
||||
label={intl.formatMessage({ id: 'register.domestic.contactsPhone' })}
|
||||
rules={[
|
||||
{ required: true, message: '请输入联系人手机号' },
|
||||
{ pattern: /^1[3-9]\d{9}$/, message: '请输入有效的手机号' },
|
||||
{ required: true, message: intl.formatMessage({ id: 'register.domestic.contactsPhone.required' }) },
|
||||
{ pattern: /^1[3-9]\d{9}$/, message: intl.formatMessage({ id: 'register.domestic.contactsPhone.pattern' }) },
|
||||
]}
|
||||
>
|
||||
<Input prefix={<MobileOutlined />} placeholder="请输入11位手机号码" />
|
||||
<Input prefix={<MobileOutlined />} placeholder={intl.formatMessage({ id: 'register.domestic.contactsPhone.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name="captcha"
|
||||
label="验证码"
|
||||
rules={[{ required: true, message: '请输入验证码' }]}
|
||||
label={intl.formatMessage({ id: 'register.captcha.label' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.captcha.required' }) }]}
|
||||
>
|
||||
<Row gutter={8}>
|
||||
<Col span={14}>
|
||||
<Input placeholder="请输入短信验证码" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.captcha.placeholder' })} />
|
||||
</Col>
|
||||
<Col span={10}>
|
||||
<Button
|
||||
@ -229,7 +241,7 @@ const DomesticForm: React.FC<DomesticFormProps> = ({
|
||||
disabled={countdown > 0}
|
||||
onClick={handleGetCaptcha}
|
||||
>
|
||||
{countdown > 0 ? `${countdown}s` : '获取验证码'}
|
||||
{countdown > 0 ? `${countdown}s` : intl.formatMessage({ id: 'register.captcha.get' })}
|
||||
</Button>
|
||||
</Col>
|
||||
</Row>
|
||||
@ -239,18 +251,21 @@ const DomesticForm: React.FC<DomesticFormProps> = ({
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'contactsEmail']}
|
||||
label="联系人邮箱"
|
||||
label={intl.formatMessage({ id: 'register.domestic.contactsEmail' })}
|
||||
rules={[
|
||||
{ type: 'email', message: '请输入有效的电子邮箱' },
|
||||
{ required: true, message: '请输入电子邮箱' },
|
||||
{ type: 'email', message: intl.formatMessage({ id: 'register.email.invalid' }) },
|
||||
{ required: true, message: intl.formatMessage({ id: 'register.domestic.contactsEmail.required' }) },
|
||||
]}
|
||||
>
|
||||
<Input prefix={<MailOutlined />} placeholder="请输入企业联系电话" />
|
||||
<Input prefix={<MailOutlined />} placeholder={intl.formatMessage({ id: 'register.domestic.contactsEmail.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item name={['coscoSupplierBase', 'telephone']} label="固定电话">
|
||||
<Input placeholder="XXX@XXX.com" />
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'telephone']}
|
||||
label={intl.formatMessage({ id: 'register.domestic.telephone' })}
|
||||
>
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.domestic.telephone.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
|
@ -2,6 +2,7 @@
|
||||
import React from 'react';
|
||||
import { Form, Input, Button, Select, Row, Col } from 'antd';
|
||||
import { MobileOutlined, MailOutlined, EnvironmentOutlined } from '@ant-design/icons';
|
||||
import { useIntl } from 'umi';
|
||||
/**
|
||||
* 引入通用表单组件
|
||||
*/
|
||||
@ -12,6 +13,7 @@ import {
|
||||
SurveySection,
|
||||
AttachmentSection,
|
||||
} from './CommonFormSections';
|
||||
import type { DictItem } from '@/servers/api/dict';
|
||||
|
||||
const { Option } = Select;
|
||||
const { TextArea } = Input;
|
||||
@ -21,6 +23,8 @@ interface ForeignFormProps {
|
||||
countdown: number;
|
||||
handleGetCaptcha: () => void;
|
||||
surveyQuestions?: API.SurveyQuestionResponse; // 本身就是数组类型
|
||||
currencyList: DictItem[];
|
||||
entTypeList: DictItem[];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -33,115 +37,127 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
|
||||
countdown,
|
||||
handleGetCaptcha,
|
||||
surveyQuestions,
|
||||
currencyList,
|
||||
entTypeList,
|
||||
}) => {
|
||||
const intl = useIntl();
|
||||
|
||||
return (
|
||||
<>
|
||||
{/* 境外企业特有的基本信息部分 */}
|
||||
<div className="form-section-title">基本信息</div>
|
||||
<div className="form-section-title">{intl.formatMessage({ id: 'register.form.section.basicInfo' })}</div>
|
||||
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'name']}
|
||||
label="企业名称"
|
||||
rules={[{ required: false, message: '请输入企业名称' }]}
|
||||
label={intl.formatMessage({ id: 'register.foreign.companyName' })}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.foreign.companyName.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入企业名称" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.foreign.companyName.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'nameEn']}
|
||||
label="企业英文名称"
|
||||
rules={[{ required: true, message: '请输入企业英文名称' }]}
|
||||
label={intl.formatMessage({ id: 'register.foreign.companyNameEn' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.foreign.companyNameEn.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入企业英文名称" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.foreign.companyNameEn.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name="country"
|
||||
label="国家/地区"
|
||||
rules={[{ required: true, message: '请选择国家/地区' }]}
|
||||
label={intl.formatMessage({ id: 'register.foreign.country' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.foreign.country.required' }) }]}
|
||||
>
|
||||
<Select placeholder="请选择国家/地区">
|
||||
<Option value="US">美国</Option>
|
||||
<Option value="UK">英国</Option>
|
||||
<Option value="JP">日本</Option>
|
||||
<Option value="DE">德国</Option>
|
||||
<Option value="FR">法国</Option>
|
||||
<Option value="AU">澳大利亚</Option>
|
||||
<Option value="CA">加拿大</Option>
|
||||
<Option value="SG">新加坡</Option>
|
||||
<Option value="HK">中国香港</Option>
|
||||
<Option value="OTHER">其他</Option>
|
||||
<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>
|
||||
</Select>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'vat']}
|
||||
label="税号"
|
||||
rules={[{ required: false, message: '请输入税号' }]}
|
||||
label={intl.formatMessage({ id: 'register.foreign.vat' })}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.foreign.vat.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入税号" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.foreign.vat.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={24} className="ant-form-item-label-fix">
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'workAddress']}
|
||||
label="办公地址"
|
||||
label={intl.formatMessage({ id: 'register.foreign.workAddress' })}
|
||||
labelCol={{ span: 2 }}
|
||||
wrapperCol={{ span: 22 }}
|
||||
>
|
||||
<Input prefix={<EnvironmentOutlined />} placeholder="请具体注明" />
|
||||
<Input prefix={<EnvironmentOutlined />} placeholder={intl.formatMessage({ id: 'register.foreign.workAddress.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={24} className="ant-form-item-label-fix">
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'range']}
|
||||
label="经营范围"
|
||||
label={intl.formatMessage({ id: 'register.foreign.businessScope' })}
|
||||
labelCol={{ span: 2 }}
|
||||
wrapperCol={{ span: 22 }}
|
||||
rules={[{ required: true, message: '请输入经营范围' }]}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.foreign.businessScope.required' }) }]}
|
||||
>
|
||||
<TextArea placeholder="请输入经营范围" rows={2} maxLength={200} showCount />
|
||||
<TextArea
|
||||
placeholder={intl.formatMessage({ id: 'register.foreign.businessScope.placeholder' })}
|
||||
rows={2}
|
||||
maxLength={200}
|
||||
showCount
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item name={['coscoSupplierBase', 'parentCompanyInvestor']} label="母公司/出资人">
|
||||
<Input placeholder="请输入母公司或出资人信息" />
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'parentCompanyInvestor']}
|
||||
label={intl.formatMessage({ id: 'register.foreign.parentCompany' })}
|
||||
>
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.foreign.parentCompany.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'legalPerson']}
|
||||
label="企业法定代表人"
|
||||
rules={[{ required: false, message: '请输入企业法定代表人' }]}
|
||||
label={intl.formatMessage({ id: 'register.foreign.legalPerson' })}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.foreign.legalPerson.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入企业法定代表人" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.foreign.legalPerson.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item label="注册资本" required style={{ marginBottom: 0 }}>
|
||||
<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">
|
||||
<Select style={{ width: 100, borderRadius: '2px 0 0 2px' }}>
|
||||
<Option value="USD">美元</Option>
|
||||
<Option value="EUR">欧元</Option>
|
||||
<Option value="GBP">英镑</Option>
|
||||
<Option value="JPY">日元</Option>
|
||||
<Option value="HKD">港币</Option>
|
||||
{currencyList.map((item) => (
|
||||
<Option key={item.code} value={item.code}>
|
||||
{item.dicName}
|
||||
</Option>
|
||||
))}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'capital']}
|
||||
noStyle
|
||||
rules={[{ required: false, message: '请输入注册资本金额' }]}
|
||||
rules={[{ required: false, message: intl.formatMessage({ id: 'register.foreign.capital.required' }) }]}
|
||||
>
|
||||
<Input
|
||||
type="number"
|
||||
placeholder="请输入金额"
|
||||
placeholder={intl.formatMessage({ id: 'register.foreign.capital.placeholder' })}
|
||||
style={{ flex: 1, borderRadius: '0 2px 2px 0', marginLeft: -1 }}
|
||||
/>
|
||||
</Form.Item>
|
||||
@ -151,30 +167,30 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'contactsName']}
|
||||
label="联系人姓名"
|
||||
rules={[{ required: true, message: '请输入联系人姓名' }]}
|
||||
label={intl.formatMessage({ id: 'register.foreign.contactsName' })}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'register.foreign.contactsName.required' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入联系人姓名" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.foreign.contactsName.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'contactsEmail']}
|
||||
label="联系人邮箱"
|
||||
label={intl.formatMessage({ id: 'register.foreign.contactsEmail' })}
|
||||
rules={[
|
||||
{ type: 'email', message: '请输入有效的电子邮箱' },
|
||||
{ required: true, message: '请输入电子邮箱' },
|
||||
{ type: 'email', message: intl.formatMessage({ id: 'register.email.invalid' }) },
|
||||
{ required: true, message: intl.formatMessage({ id: 'register.foreign.contactsEmail.required' }) },
|
||||
]}
|
||||
|
||||
>
|
||||
<Input prefix={<MailOutlined />} placeholder="XXX@XXX.com" addonAfter={
|
||||
<Input prefix={<MailOutlined />} placeholder={intl.formatMessage({ id: 'register.foreign.contactsEmail.placeholder' })} addonAfter={
|
||||
<Button
|
||||
type="link"
|
||||
size="small"
|
||||
disabled={countdown > 0}
|
||||
onClick={handleGetCaptcha}
|
||||
>
|
||||
{countdown ? `${countdown}秒后重新获取` : '获取验证码'}
|
||||
{countdown ? intl.formatMessage({ id: 'register.captcha.countdown' }, { count: countdown }) : intl.formatMessage({ id: 'register.captcha.get' })}
|
||||
</Button>
|
||||
} />
|
||||
</Form.Item>
|
||||
@ -182,26 +198,26 @@ const ForeignForm: React.FC<ForeignFormProps> = ({
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name="verificationCode"
|
||||
label="验证码"
|
||||
label={intl.formatMessage({ id: 'register.captcha.label' })}
|
||||
rules={[
|
||||
{ required: true, message: '请输入验证码' },
|
||||
{ pattern: /^\d{6}$/, message: '请输入6位数字验证码' },
|
||||
{ required: true, message: intl.formatMessage({ id: 'register.captcha.required' }) },
|
||||
{ pattern: /^\d{6}$/, message: intl.formatMessage({ id: 'register.captcha.pattern' }) },
|
||||
]}
|
||||
extra="该邮箱用于后续联系和找回密码"
|
||||
extra={intl.formatMessage({ id: 'register.foreign.contactsEmail.extra' })}
|
||||
>
|
||||
<Input placeholder="请输入验证码" />
|
||||
<Input placeholder={intl.formatMessage({ id: 'register.captcha.placeholder' })} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'contactsPhone']}
|
||||
label="联系电话"
|
||||
label={intl.formatMessage({ id: 'register.foreign.contactsPhone' })}
|
||||
rules={[
|
||||
{ required: false, message: '请输入联系电话' }
|
||||
{ required: false, message: intl.formatMessage({ id: 'register.foreign.contactsPhone.required' }) }
|
||||
]}
|
||||
>
|
||||
<Input
|
||||
placeholder="请输入联系电话"
|
||||
placeholder={intl.formatMessage({ id: 'register.foreign.contactsPhone.placeholder' })}
|
||||
prefix={<MobileOutlined />}
|
||||
/>
|
||||
</Form.Item>
|
||||
|
@ -36,6 +36,9 @@ export type DictItem = {
|
||||
/**
|
||||
* 获取字典列表
|
||||
* @param code 字典编码
|
||||
* currency 币种
|
||||
* entType 企业类型
|
||||
* taxpayer_type 纳税人类型
|
||||
* @returns 字典列表
|
||||
*/
|
||||
export async function getDictList(code: string): Promise<DictResponse> {
|
||||
|
Reference in New Issue
Block a user