From 4a9044d7eda186b25b03743dad481e5384be46c5 Mon Sep 17 00:00:00 2001 From: zichun Date: Fri, 8 May 2026 14:48:18 +0800 Subject: [PATCH] feat(usr): rewrite LoginPage visual to match prototype REQ-USR-004 --- frontend/src/pages/usr/LoginPage.tsx | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 55 insertions(+), 30 deletions(-) diff --git a/frontend/src/pages/usr/LoginPage.tsx b/frontend/src/pages/usr/LoginPage.tsx index 6e4bab4..fb8551b 100644 --- a/frontend/src/pages/usr/LoginPage.tsx +++ b/frontend/src/pages/usr/LoginPage.tsx @@ -1,10 +1,17 @@ import { useEffect, useState } from 'react' import { useNavigate } from 'react-router-dom' -import { Button, Form, Input, message, Select } from 'antd' -import { getBrands, login, BrandVO } from '../../api/auth' +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) @@ -19,17 +26,14 @@ export default function LoginPage() { 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(setCredentials({ accessToken: result.accessToken, refreshToken: result.refreshToken, userInfo: result.userInfo })) + dispatch(activateTab('main')) navigate('/') } catch (e: unknown) { message.error(e instanceof Error ? e.message : '登录失败') @@ -39,28 +43,49 @@ export default function LoginPage() { } return ( -
-
-

小羚羊 ERP

-
- - - - - - - - - -
+
+ {/* 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
) -- libgit2 0.22.2