"use client"; import { useState } from "react"; import { useRouter, useSearchParams } from "next/navigation"; import { Truck } from "@phosphor-icons/react"; import { InputField } from "@/components/ui/input-field"; import { PrimaryButton } from "@/components/ui/primary-button"; import { ErrorBanner } from "@/components/ui/error-banner"; import { Card } from "@/components/ui/card"; import { adminLogin } from "@/lib/frontend/api-client"; import { useAuth } from "@/hooks/use-auth"; export default function LoginPageClient() { const router = useRouter(); const searchParams = useSearchParams(); const { login } = useAuth(); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (loading) return; setLoading(true); setError(null); const res = await adminLogin("", username.trim(), password); setLoading(false); if (res.code !== 0) { setError(res.message || "用户名或密码错误"); return; } login(res.data.token, res.data.user); const redirect = searchParams.get("redirect"); router.replace(redirect || "/dashboard"); }; return (
美美与共 · 管理端

登录

请输入管理员账号与密码

{error && (
{error}
)}
void handleSubmit(e)} className="space-y-4" autoComplete="off" > setUsername(e.target.value)} /> setPassword(e.target.value)} /> 登录
); }