import { useState, useEffect } from 'react' import { useNavigate } from 'react-router-dom' import { Form, Input, Button, Tabs } from 'antd' import { UserOutlined, LockOutlined, MailOutlined, ArrowRightOutlined } from '@ant-design/icons' import { login, register } from '@/api/auth' import { getUserMenus } from '@/api/menu' import useUserStore from '@/stores/userStore' import Toast from '@/components/Toast/Toast' import './Login.css' function Login() { const [loading, setLoading] = useState(false) const [activeTab, setActiveTab] = useState('login') const [loginForm] = Form.useForm() const navigate = useNavigate() const { setUser, setToken } = useUserStore() const handleLogin = async (values) => { setLoading(true) try { const res = await login(values) Toast.success('登录成功') // 保存 token 和用户信息 localStorage.setItem('access_token', res.data.access_token) localStorage.setItem('user_info', JSON.stringify(res.data.user)) setToken(res.data.access_token) setUser(res.data.user) // 获取用户菜单并跳转到第一个菜单 try { const menuRes = await getUserMenus() if (menuRes.data && menuRes.data.length > 0) { const firstMenu = menuRes.data[0] // 如果第一个菜单有子菜单,跳转到第一个子菜单 if (firstMenu.children && firstMenu.children.length > 0) { navigate(firstMenu.children[0].path) } else if (firstMenu.path) { navigate(firstMenu.path) } else { // 如果都没有路径,默认跳转到项目列表 navigate('/projects') } } else { // 如果没有菜单,默认跳转到项目列表 navigate('/projects') } } catch (menuError) { console.error('Load menus error:', menuError) // 如果加载菜单失败,默认跳转到项目列表 navigate('/projects') } } catch (error) { console.error('Login error:', error) const errorMsg = error.response?.data?.detail || error.message || '登录失败,请检查用户名和密码' Toast.error('登录失败', errorMsg) } finally { setLoading(false) } } const handleRegister = async (values) => { setLoading(true) try { await register(values) Toast.success('注册成功', '请使用您的账号登录') setActiveTab('login') } catch (error) { console.error('Register error:', error) const errorMsg = error.response?.data?.detail || error.message || '注册失败' Toast.error('注册失败', errorMsg) } finally { setLoading(false) } } return (
{/* 左侧介绍区域 */}
NexDocus
NexDocus

团队协作
文档管理平台

全流程文档共享,提升团队协作效率的新一代解决方案。

团队知识共享 大模型能力加持

© 2024 NexDocus. All rights reserved.

{/* 右侧登录区域 */}

欢迎回来,请输入您的登录凭证。

} placeholder="请输入用户名" size="large" /> } placeholder="请输入密码" size="large" visibilityToggle />
) }, { key: 'register', label: '注册账号', children: (

创建您的账号,开始使用平台。

} placeholder="用户名" size="large" /> } placeholder="邮箱(选填)" size="large" /> } placeholder="密码" size="large" /> ({ validator(_, value) { if (!value || getFieldValue('password') === value) { return Promise.resolve() } return Promise.reject(new Error('两次输入的密码不一致')) }, }), ]} > } placeholder="确认密码" size="large" />
) } ]} />
) } export default Login