import { useEffect } from 'react'; import { Form, Input, Select, Button, Alert } from 'antd'; import type { LoginReq } from '../../api/auth'; import { COMPANY_OPTIONS } from './loginConstants'; export interface LoginFormFieldErrors { username?: string; password?: string; companyCode?: string; } interface Props { onSubmit: (req: LoginReq) => Promise; loading: boolean; errorMessage: string | null; fieldErrors: LoginFormFieldErrors; } export default function LoginForm({ onSubmit, loading, errorMessage, fieldErrors }: Props) { const [form] = Form.useForm(); useEffect(() => { // 字段级错误同步到 AntD Form 实例 const errs: Array<{ name: keyof LoginFormFieldErrors; errors: string[] }> = []; (['username', 'password', 'companyCode'] as const).forEach((k) => { if (fieldErrors[k]) errs.push({ name: k, errors: [fieldErrors[k]!] }); }); if (errs.length > 0) { form.setFields(errs as any); } }, [fieldErrors, form]); const handleFinish = async (values: LoginReq) => { await onSubmit(values); }; return (
{errorMessage && ( )}