'use client'; import { useEffect, useState } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { adminApi } from '@/lib/admin-services'; import { useAdminStore } from '@/store/adminStore'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Building2, CheckCircle2, User, Lock, Loader2, } from 'lucide-react'; const schema = z.object({ username: z.string().min(1, '请输入账号'), password: z.string().min(1, '请输入密码'), }); type FormData = z.infer; export default function AdminLoginPage() { const router = useRouter(); const search = useSearchParams(); const { setLogin, token } = useAdminStore(); const [serverError, setServerError] = useState(null); // 已登录则直接跳到后台 useEffect(() => { if (token) { const redirect = search.get('redirect'); router.replace(redirect || '/admin/dashboard'); } }, [token, router, search]); const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm({ resolver: zodResolver(schema), defaultValues: { username: 'admin', password: '' }, }); const onSubmit = async (data: FormData) => { setServerError(null); try { const res = await adminApi.login(data); setLogin(res.token, res.admin); const redirect = search.get('redirect'); router.replace(redirect || '/admin/dashboard'); } catch (e) { setServerError((e as Error).message); } }; return (
{/* ===== 左侧:品牌展示区(深色,呼应首页 Hero)===== */}
{/* 渐变底 + 辉光 + 几何图形 */}
+
{/* Logo */}
智管物业
{/* 标语 */}

让物业管理
像发微信一样简单

懂物业,更懂“省”心

{[ '一站式物业管理 SaaS 平台', '覆盖缴费、报修、公告、巡检全流程', '三端协同,助力物业降本增效', ].map((t) => (
{t}
))}
{/* 版权 */}
© {new Date().getFullYear()} 智管物业 · 物业管理 SaaS 专家
{/* ===== 右侧:表单区(干净浅色)===== */}
{/* 移动端 Logo(左侧面板在小屏隐藏)*/}
智管物业
Admin

欢迎回来

登录智管物业管理后台

{search.get('expired') && (
登录已过期,请重新登录
)}
{ e.preventDefault(); void handleSubmit(onSubmit)(e); }} className="space-y-5" >
{errors.username && (

{errors.username.message}

)}
{errors.password && (

{errors.password.message}

)}
{serverError && (

{serverError}

)}

初始账号:admin / 密码:123456

); }