'use client'; import { useState, FormEvent } from 'react'; import { useRouter } from 'next/navigation'; import { toast } from 'sonner'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; import { API_BASE } from '@/lib/config'; export default function AdminLoginPage() { const router = useRouter(); const [form, setForm] = useState({ username: '', password: '' }); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); async function handleSubmit(e: FormEvent) { e.preventDefault(); setError(''); if (!form.username || !form.password) { setError('请填写账号和密码'); return; } setLoading(true); try { const res = await fetch(`${API_BASE}/admin/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(form), }); const data = await res.json(); if (!res.ok) throw new Error(data.message || '管理员登录失败'); localStorage.setItem('adminToken', data.token); localStorage.setItem('adminInfo', JSON.stringify({ username: data.username, role: data.role })); toast.success('管理员登录成功'); router.push('/admin'); } catch (err: any) { setError(err.message); } setLoading(false); } return (