import { useEffect, useState } from 'react' import { useNavigate } from 'react-router-dom' import { Button, Form, Input, Select, message } from 'antd' import { getBrands, login, type BrandVO } from '../../api/auth' import { setCredentials } from '../../store/slices/authSlice' import { activateTab } from '../../store/slices/tabsSlice' import { useAppDispatch } from '../../store/hooks' const ANTLER_PATHS = [ 'M14 10c2 4 1 8-1 11 3-1 7 0 10 3 1-4 4-7 8-7-3 3-4 7-3 11l4 1c-1 3 0 6 3 8-3 0-6 1-8 4-1-3-4-5-8-5 2-3 2-7 0-10-3 1-7 0-10-3 3 0 5-2 6-5l-1-8z', 'M48 14c-2 3-2 6-1 9-2-2-5-2-8-1 1 3 1 6-1 9 3 0 5 2 6 5 1-3 4-5 7-5-2-3-2-6 0-9 2 1 5 1 7-1-2 0-4-1-5-3-1-2-3-4-5-4z', 'M28 38c2 3 5 5 9 5 1 4 4 7 8 8-3 2-5 5-5 9-3-2-7-3-11-2 1-3 1-7-1-10-3 0-6-1-8-4 3-1 6-3 8-6z', ] export default function LoginPage() { const [brandOptions, setBrandOptions] = useState([]) const [loading, setLoading] = useState(false) const [form] = Form.useForm() const dispatch = useAppDispatch() const navigate = useNavigate() useEffect(() => { getBrands().then(brands => { setBrandOptions(brands) const std = brands.find(b => b.sName === '标准版') const defaultNo = std ? std.sNo : brands[0]?.sNo if (defaultNo) form.setFieldValue('brandNo', defaultNo) }).catch(() => {}) }, [form]) const onFinish = async (values: { brandNo: string; username: string; password: string }) => { setLoading(true) try { const result = await login(values) dispatch(setCredentials({ accessToken: result.accessToken, refreshToken: result.refreshToken, userInfo: result.userInfo })) dispatch(activateTab('main')) navigate('/') } catch (e: unknown) { message.error(e instanceof Error ? e.message : '登录失败') } finally { setLoading(false) } } return (
{/* Header */}
{ANTLER_PATHS.map((d, i) => )}
Antler ERP 欢迎登录EBC平台
{/* Hero */}
{/* Brand text */}
Enterprise Business Capability
企业业务能力平台
ERP
{/* Login card */}

用户登录

{/* Footer */}
🛠 ©Copyright Antler Software | 印刷ERP | 400-880-6237
) }