import { useState } from 'react' import { ShieldCheck, LogIn, Loader2 } from 'lucide-react' import { useRole } from '../../context' import { api } from '../../api' /** * 登录页面 — 支持工号/姓名登录,演示模式可切换角色 */ export function LoginPage() { const { login, setRole } = useRole() const [code, setCode] = useState('') const [loading, setLoading] = useState(false) const [error, setError] = useState('') const handleLogin = async (e: React.FormEvent) => { e.preventDefault() if (!code.trim()) { setError('请输入工号或姓名'); return } setLoading(true) setError('') try { const res = await api.auth.login(code.trim()) login(res.token, res.role, res.name, res.station) } catch (err) { setError(err instanceof Error ? err.message : '登录失败') } finally { setLoading(false) } } const handleDemo = (role: 'headquarters' | 'station' | 'reporter') => { const demoNames: Record = { headquarters: { name: '林致远', station: null }, station: { name: '苏明远', station: '北京记者站' }, reporter: { name: '林晓', station: '北京记者站' }, } const demo = demoNames[role] localStorage.setItem('auth_role', role) localStorage.setItem('auth_name', demo.name) localStorage.setItem('auth_station', String(demo.station)) setRole(role) } return (

全国记者站管理系统

请输入工号或姓名登录

setCode(e.target.value)} placeholder="如:PERSON_001 或 林晓" disabled={loading} autoFocus />
{error &&
{error}
}
或使用演示模式

可尝试登录:PERSON_001(记者)、PERSON_006(分站负责人)、PERSON_007(总部管理员)

) }