import React, { useState } from 'react'; import { Row, Col, Typography, Button, Form, Input, Space, Tabs, App } from 'antd'; import { UserOutlined, LockOutlined, ArrowRightOutlined, } from '@ant-design/icons'; import apiClient from '../utils/apiClient'; import { buildApiUrl, API_ENDPOINTS } from '../config/api'; import menuService from '../services/menuService'; import BrandLogo from '../components/BrandLogo'; const { Title, Paragraph, Text } = Typography; const HomePage = ({ onLogin }) => { const [loading, setLoading] = useState(false); const { message } = App.useApp(); const handleLogin = async (values) => { setLoading(true); try { const response = await apiClient.post(buildApiUrl(API_ENDPOINTS.AUTH.LOGIN), { username: values.username, password: values.password }); if (response.code === '200') { message.success('登录成功'); // 关键修复:保存整个 data 对象,因为它包含了 token 和 user 两个部分 const authData = response.data; localStorage.setItem('iMeetingUser', JSON.stringify(authData)); menuService.clearCache(); // 通知 App 组件更新状态 onLogin(authData); // 入口页会根据当前用户的首个菜单做动态跳转 window.location.href = '/'; } else { message.error(response.message || '登录失败'); } } catch (error) { console.error('Login error:', error); message.error(error.response?.data?.message || '账号或密码错误'); } finally { setLoading(false); } }; return (
{/* 左侧:品牌展示区 */}
智能协作 <span style={{ color: '#1677ff' }}>会议管理平台</span> 全流程会议辅助,让每一份交流都产生价值。 实时转录、自动总结、知识沉淀。
{/* 右侧:登录交互区 */}
欢迎回来,请输入您的登录凭证。
用户名} name="username" rules={[{ required: true, message: '请输入用户名' }]} > } placeholder="请输入用户名" style={{ borderRadius: 8, height: 50 }} /> 密码} name="password" rules={[{ required: true, message: '请输入密码' }]} > } placeholder="请输入密码" style={{ borderRadius: 8, height: 50 }} />
©2026 iMeeting · 智能会议协作平台
); }; export default HomePage;