diff --git a/src/components/FileUpload/FileUpload.tsx b/src/components/FileUpload/FileUpload.tsx index 2cf13ec..d67b674 100644 --- a/src/components/FileUpload/FileUpload.tsx +++ b/src/components/FileUpload/FileUpload.tsx @@ -56,7 +56,7 @@ const FileUpload: React.FC = ({ 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([]); diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index 14a036a..578ab7e 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -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, }; diff --git a/src/locales/en-US/register.ts b/src/locales/en-US/register.ts new file mode 100644 index 0000000..bf135ec --- /dev/null +++ b/src/locales/en-US/register.ts @@ -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", +}; diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 61aa0c0..f7d7f5d 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -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, }; diff --git a/src/locales/zh-CN/register.ts b/src/locales/zh-CN/register.ts new file mode 100644 index 0000000..fb0129c --- /dev/null +++ b/src/locales/zh-CN/register.ts @@ -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': '注册失败,请稍后重试', +}; diff --git a/src/pages/register/supplier.tsx b/src/pages/register/supplier.tsx index f1d1db7..9c6ea55 100644 --- a/src/pages/register/supplier.tsx +++ b/src/pages/register/supplier.tsx @@ -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([]); const [fetchingQuestions, setFetchingQuestions] = useState(false); + // 币种 + const [currencyList, setCurrencyList] = useState([]); + // 企业类型 + const [entTypeList, setEntTypeList] = useState([]); + 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) => { - if (item.fileUrl && Array.isArray(item.fileUrl)) { - const file = item.fileUrl[0]; - item.fileUrl = file?.response?.url || file?.response?.filePath || ''; - } - return item; - }); + 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 }} > - - - 境内企业/机构 - 境外企业 + + + {intl.formatMessage({ id: 'register.supplier.domestic' })} + {intl.formatMessage({ id: 'register.supplier.foreign' })} @@ -194,6 +229,8 @@ const SupplierRegister: React.FC = () => { countdown={countdown} surveyQuestions={surveyQuestions} handleGetCaptcha={handleGetCaptcha} + currencyList={currencyList} + entTypeList={entTypeList} /> ) : ( { countdown={countdown} handleGetCaptcha={handleGetCaptcha} surveyQuestions={surveyQuestions} + currencyList={currencyList} + entTypeList={entTypeList} /> )} { validator: (_, value) => value ? Promise.resolve() - : Promise.reject(new Error('请阅读并同意注册信息承诺书')), + : Promise.reject(new Error(intl.formatMessage({ id: 'register.supplier.agreement.required' }))), }, ]} > - 我已阅读并同意 + {intl.formatMessage({ id: 'register.supplier.agreement' })} @@ -244,7 +283,7 @@ const SupplierRegister: React.FC = () => { {/* 注册信息承诺书弹窗 */} { 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} >
-

尊敬的用户:

-

感谢您注册使用我们的平台。请您仔细阅读以下承诺内容:

+

{intl.formatMessage({ id: 'register.supplier.commitment.content.intro1' })}

+

{intl.formatMessage({ id: 'register.supplier.commitment.content.intro2' })}

  1. - 本人/单位承诺所提供的注册信息真实、准确、完整,不存在虚假记载、误导性陈述或重大遗漏。 + {intl.formatMessage({ id: 'register.supplier.commitment.content.item1' })}
  2. -
  3. 本人/单位承诺遵守平台的各项规则和要求,不从事任何违法违规活动。
  4. +
  5. {intl.formatMessage({ id: 'register.supplier.commitment.content.item2' })}
  6. - 本人/单位了解并同意,如提供虚假信息或违反平台规则,平台有权终止服务并追究相关责任。 + {intl.formatMessage({ id: 'register.supplier.commitment.content.item3' })}
  7. -
  8. 本人/单位承诺妥善保管账号和密码,对账号下的所有操作和行为负责。
  9. -
  10. 本人/单位同意平台在必要范围内合法使用所提供的信息,用于提供服务和改善用户体验。
  11. +
  12. {intl.formatMessage({ id: 'register.supplier.commitment.content.item4' })}
  13. +
  14. {intl.formatMessage({ id: 'register.supplier.commitment.content.item5' })}
  15. - 本人/单位承诺遵守国家法律法规和行业规范,恪守商业道德,不从事任何损害平台或其他用户利益的行为。 + {intl.formatMessage({ id: 'register.supplier.commitment.content.item6' })}
  16. -
  17. 本人/单位承诺所上传的资质文件和证明材料真实有效,并对其真实性和合法性负责。
  18. -
  19. 本人/单位了解并同意,平台有权根据业务需要对用户资料进行审核,并保留最终解释权。
  20. +
  21. {intl.formatMessage({ id: 'register.supplier.commitment.content.item7' })}
  22. +
  23. {intl.formatMessage({ id: 'register.supplier.commitment.content.item8' })}
-

特此承诺!

+

{intl.formatMessage({ id: 'register.supplier.commitment.content.end' })}

diff --git a/src/pages/register/supplier/CommonFormSections.tsx b/src/pages/register/supplier/CommonFormSections.tsx index 39845d6..c6020e3 100644 --- a/src/pages/register/supplier/CommonFormSections.tsx +++ b/src/pages/register/supplier/CommonFormSections.tsx @@ -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 = ({ form }) => { + const intl = useIntl(); + // 资质证书类型 + const [certTypeList, setCertTypeList] = useState([]); + const getDict = async () => { + // qualification_type 资质证书类型 + const certTypeResponse = await getDictList('certificate'); + setCertTypeList(certTypeResponse.data || []); + }; + useEffect(() => { + getDict(); + }, []); return ( <> -
资质信息
+
{intl.formatMessage({ id: 'register.form.section.qualification' })}
{(fields, { add, remove }) => ( @@ -92,89 +106,89 @@ export const QualificationSection: React.FC = ({ 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) => ( - + {certTypeList.map((item) => ( + + ))} ), }, { - title: '资质名称', + title: intl.formatMessage({ id: 'register.qualification.certName' }), dataIndex: 'certName', render: (_, record) => ( - + ), }, { - title: '资质证书编号', + title: intl.formatMessage({ id: 'register.qualification.certNumber' }), dataIndex: 'certNumber', render: (_, record) => ( - + ), }, { - title: '资质类别和等级', + title: intl.formatMessage({ id: 'register.qualification.certLevel' }), dataIndex: 'certLevel', render: (_, record) => ( - + ), }, { - title: '发证机构', + title: intl.formatMessage({ id: 'register.qualification.issuingAuthority' }), dataIndex: 'issuingAuthority', render: (_, record) => ( - + ), }, { - title: '发证日期', + title: intl.formatMessage({ id: 'register.qualification.issueDate' }), dataIndex: 'issueDate', render: (_, record) => ( @@ -182,16 +196,16 @@ export const QualificationSection: React.FC = ({ form } ), }, { - title: '资质有效期至', + title: intl.formatMessage({ id: 'register.qualification.expiryDate' }), dataIndex: 'expiryDate', render: (_, record) => ( @@ -199,26 +213,26 @@ export const QualificationSection: React.FC = ({ form } ), }, { - title: '附件', + title: intl.formatMessage({ id: 'register.form.attachment' }), dataIndex: 'certFile', render: (_, record) => ( ), }, { - title: '操作', + title: intl.formatMessage({ id: 'register.form.operation' }), width: 70, render: (_, record) => ( ), }, @@ -235,7 +249,7 @@ export const QualificationSection: React.FC = ({ form } /> @@ -250,72 +264,98 @@ export const QualificationSection: React.FC = ({ form } * 包含纳税人类型、开票抬头、纳税人识别号、开票地址等 */ export const InvoiceSection: React.FC = ({ form }) => { + const intl = useIntl(); + // 纳税人类型 + const [taxpayerTypeList, setTaxpayerTypeList] = useState([]); + const getDict = async () => { + // taxpayer_type 纳税人类型 + const taxpayerTypeResponse = await getDictList('taxpayer_type'); + setTaxpayerTypeList(taxpayerTypeResponse.data || []); + }; + useEffect(() => { + getDict(); + }, []); return ( <> -
开票信息
+
{intl.formatMessage({ id: 'register.form.section.invoice' })}
- + {taxpayerTypeList.map((item) => ( + + ))} - + - + - - + + - - + + - - + + - - + + @@ -329,9 +369,10 @@ export const InvoiceSection: React.FC = ({ form }) => { * 包含开户银行、账户名称、账号、所在地区等 */ export const BankAccountSection: React.FC = ({ form }) => { + const intl = useIntl(); return ( <> -
银行账户
+
{intl.formatMessage({ id: 'register.form.section.bankAccount' })}
{(fields, { add, remove }) => ( @@ -348,62 +389,62 @@ export const BankAccountSection: React.FC = ({ 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) => ( - + ), }, { - title: '账户名称', + title: intl.formatMessage({ id: 'register.bank.accountName' }), dataIndex: 'accountName', render: (_, record) => ( - + ), }, { - title: '账号', + title: intl.formatMessage({ id: 'register.bank.accountNumber' }), dataIndex: 'accountNumber', render: (_, record) => ( - + ), }, { - title: '国家、省、市', + title: intl.formatMessage({ id: 'register.bank.location' }), dataIndex: 'location', render: (_, record) => ( { return path.some((option) => { @@ -421,7 +462,7 @@ export const BankAccountSection: React.FC = ({ form }) ), }, { - title: '操作', + title: intl.formatMessage({ id: 'register.form.operation' }), width: 70, render: (_, record) => ( ), }, @@ -438,7 +479,7 @@ export const BankAccountSection: React.FC = ({ form }) /> @@ -453,6 +494,7 @@ export const BankAccountSection: React.FC = ({ form }) * 包含填写人信息和问卷内容 */ export const SurveySection: React.FC = ({ form, surveyQuestions }) => { + const intl = useIntl(); // 使用API获取的问卷数据,如果没有则显示无数据状态 const hasQuestions = surveyQuestions && Array.isArray(surveyQuestions) && surveyQuestions.length > 0; @@ -462,71 +504,71 @@ export const SurveySection: React.FC = ({ form, surveyQuesti return ( <> -
社会准则符合性自查问卷
+
{intl.formatMessage({ id: 'register.form.section.survey' })}
-
填写人信息:
+
{intl.formatMessage({ id: 'register.survey.fillerInfo' })}:
- + - + - + - + - + - +
- 问卷: + {intl.formatMessage({ id: 'register.survey.questionnaire' })}:
{hasQuestions ? ( @@ -549,19 +591,19 @@ export const SurveySection: React.FC = ({ 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) =>
{text}
, }, { - title: '回复', + title: intl.formatMessage({ id: 'register.survey.reply' }), width: 650, render: (_, record, index) => { return ( @@ -575,7 +617,7 @@ export const SurveySection: React.FC = ({ form, surveyQuesti
{record.coscoSurveyQuestionOptionList && @@ -588,7 +630,7 @@ export const SurveySection: React.FC = ({ form, surveyQuesti ))}
) : ( - + )}
@@ -602,7 +644,7 @@ export const SurveySection: React.FC = ({ form, surveyQuesti ) : (
- +
)} @@ -613,19 +655,20 @@ export const SurveySection: React.FC = ({ form, surveyQuesti * 供应商反商业贿赂承诺书和其他附件部分 */ export const AttachmentSection: React.FC = ({ form }) => { + const intl = useIntl(); return ( <> -
供应商反商业贿赂承诺书
+
{intl.formatMessage({ id: 'register.form.section.commitment' })}
- 请加盖公司公章后上传 + {intl.formatMessage({ id: 'register.attachment.stampUpload' })}
@@ -650,14 +693,14 @@ export const AttachmentSection: React.FC = ({ form }) = { if (fileList && fileList.length > 0) { const file = fileList[0]; @@ -695,13 +738,13 @@ export const AttachmentSection: React.FC = ({ form }) =
-
其他附件
+
{intl.formatMessage({ id: 'register.form.section.otherAttachments' })}
{(fields, { add, remove }) => ( <> -
其他附件(非必须上传)
+
{intl.formatMessage({ id: 'register.attachment.otherAttachments.hint' })}
{fields.map((field, index) => (
= ({ 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 = ({ form }) = icon={} style={{ marginTop: 8 }} > - 添加更多附件 + {intl.formatMessage({ id: 'register.attachment.addMore' })} )} diff --git a/src/pages/register/supplier/DomesticForm.tsx b/src/pages/register/supplier/DomesticForm.tsx index 4ba936e..a48eb69 100644 --- a/src/pages/register/supplier/DomesticForm.tsx +++ b/src/pages/register/supplier/DomesticForm.tsx @@ -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 = ({ countdown, handleGetCaptcha, surveyQuestions, + currencyList, + entTypeList, }) => { + const intl = useIntl(); + return ( <> -
基本信息
+
{intl.formatMessage({ id: 'register.form.section.basicInfo' })}
{/* 营业执照附件和有效期 */} - + {entTypeList.map((item) => ( + + ))} - + - + - + - +