import { useState } from 'react'; import { Link, useLocation } from 'react-router-dom'; import { Icon } from '@/app/Icon'; import { Toast } from '@/app/Toast'; import { ImApiError } from '@/lib/api/client'; import { submitTenantApplication, uploadPublicFile } from '@/lib/api/tenant'; const CREDIT_CODE_RE = /^[0-9A-Z]{18}$/; const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; /** README §10.5 / old app's EnterpriseRegister -- a company registering itself as a new tenant. */ export function EnterpriseRegisterPage() { const tenantCodeHint = (useLocation().state as { tenantCodeHint?: string } | null)?.tenantCodeHint || undefined; const [creditCode, setCreditCode] = useState(''); const [email, setEmail] = useState(''); const [file, setFile] = useState(null); const [error, setError] = useState(''); const [submitting, setSubmitting] = useState(false); const [submitted, setSubmitted] = useState(false); const [reviewDays, setReviewDays] = useState(1); const [toast, setToast] = useState(''); const submit = async (e: React.FormEvent) => { e.preventDefault(); if (!CREDIT_CODE_RE.test(creditCode)) return setError('请输入 18 位统一社会信用代码'); if (email && !EMAIL_RE.test(email)) return setError('请输入有效的企业邮箱'); setSubmitting(true); setError(''); try { let licenseFileId: string | undefined; if (file) { licenseFileId = (await uploadPublicFile(file, 'enterprise_license')).file_id; } const data = await submitTenantApplication({ credit_code: creditCode, enterprise_email: email || undefined, license_file_id: licenseFileId, tenant_code_hint: tenantCodeHint, }); setReviewDays(Math.max(1, Math.round((data.estimated_review_hours || 24) / 24))); setSubmitted(true); setToast('提交成功,我们会尽快联系你'); } catch (err) { setError(err instanceof ImApiError ? err.message : '提交失败,请稍后重试'); } finally { setSubmitting(false); } }; return (
返回

企业注册

    {(['填写企业信息', '确定信息', '提交审核'] as const).map((label, i) => (
  1. {i + 1} {label} {i < 2 ? : null}
  2. ))}
{error ? (
{error}
) : null}
setCreditCode(e.target.value.trim().toUpperCase().replace(/[^0-9A-Z]/g, ''))} placeholder="请输入18位统一社会信用代码" maxLength={18} className="w-full bg-transparent text-[15px] outline-none" />

请填写营业执照上的统一社会信用代码

setEmail(e.target.value)} type="email" placeholder="请输入企业邮箱" className="h-[50px] rounded-lg bg-surface-input px-3.5 text-[15px] outline-none" />

用于接收审核结果及企业通知

资料提交后,预计 {reviewDays} 个工作日完成审核

setToast('')} />
); }