import React, { useState, useEffect } from 'react'; import { Compass, ArrowRight, X, Phone, Lock, Loader2 } from 'lucide-react'; import { Button } from '../components/ui/Button'; import { Input } from '../components/ui/Input'; import request from '../utils/request'; import clsx from 'clsx'; // PncyssD Prototype: Landing Page export function LandingPage({ onStart }) { const [isLoggedIn, setIsLoggedIn] = useState(false); const [showLoginModal, setShowLoginModal] = useState(false); const [loading, setLoading] = useState(false); // Login Form State const [phone, setPhone] = useState(''); const [code, setCode] = useState(''); const [countdown, setCountdown] = useState(0); useEffect(() => { const token = localStorage.getItem('token'); if (token) setIsLoggedIn(true); }, []); useEffect(() => { let timer; if (countdown > 0) { timer = setInterval(() => setCountdown(c => c - 1), 1000); } return () => clearInterval(timer); }, [countdown]); const handleGetCode = async () => { if (!phone) return alert('请输入手机号'); if (!/^1[3-9]\d{9}$/.test(phone)) return alert('手机号格式不正确'); try { // Backend: /auth/sms-code?phone=... (AuthController.java) // Note: "Business type" is not required by the current backend implementation. const res = await request.get('/auth/sms-code', { params: { phone } }); if (res.code === 200) { setCountdown(60); // Display backend message or dev code const msg = res.data?.message || '验证码已发送'; if (res.data?.code) { alert(`【测试模式】${msg}\n验证码: ${res.data.code}`); } else { alert(msg); } } else { console.warn('SMS Code Error:', res); alert(res.message || '发送失败,请稍后重试'); } } catch (e) { console.error('Failed to get SMS code:', e); const errorMsg = e.response?.data?.message || '网络连接异常,请检查您的网络设置'; alert(errorMsg); } }; const handleLogin = async () => { if (!phone || !code) return alert('请填写完整信息'); setLoading(true); try { const res = await request.post('/auth/login', { phone, smsCode: code }); if (res.code === 200) { const { accessToken } = res.data; localStorage.setItem('token', accessToken); setIsLoggedIn(true); setShowLoginModal(false); // Clear sensitive data setPhone(''); setCode(''); } else { alert(res.message || '登录失败'); } } catch (e) { console.error(e); alert('登录异常,请检查网络'); } finally { setLoading(false); } }; return (
{/* Background & Effects */}

人生OS Life Trajectory

{/* Buttons */}
{isLoggedIn ? ( ) : ( )}
{/* Login Modal */} {showLoginModal && (
{/* Modal Background */}

欢迎回来

setPhone(e.target.value)} />
setCode(e.target.value)} />
)}
); }