import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { GlassCard, GlassInput, GlassButton } from '../components/ui'; import useStore from '../store/useStore'; import useCountdown from '../hooks/useCountdown'; /** * LoginPage 组件 * 登录页面,包含手机号和验证码输入 */ const LoginPage = () => { const navigate = useNavigate(); const { login, getSmsCode, setLogin, loading } = useStore(); // 表单状态 const [phone, setPhone] = useState(''); const [code, setCode] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); // 倒计时 const { countdown, isActive, start } = useCountdown(60); /** * 处理获取验证码 */ const handleGetCode = async () => { if (phone.length !== 11) { alert('请输入正确的手机号'); return; } try { start(); // 调用后端获取验证码 await getSmsCode(phone); alert('验证码已发送'); } catch (error) { // 后端不可用时,使用模拟验证码 alert('验证码已发送 (模拟验证码: 888888)'); } }; /** * 处理登录提交 */ const handleSubmit = async () => { if (phone.length !== 11) { alert('请输入正确的手机号'); return; } if (code.length !== 6) { alert('请输入6位验证码'); return; } setIsSubmitting(true); try { // 尝试调用后端登录 await login(phone, code); navigate('/onboarding'); } catch (error) { // 后端不可用时,使用本地验证 if (code === '888888') { setLogin(true, phone); navigate('/onboarding'); } else { alert('验证失败,请检查手机号或验证码'); } } finally { setIsSubmitting(false); } }; return (
开启你的数字生命档案
登录即代表同意《用户协议》与《隐私政策》,我们将妥善保管您的生命数据。