# 页面设计: 认证流程 (Auth) > **路由**: `/auth/login` (合并登录与注册) > **布局**: `LayoutAuth` (全屏居中大卡片,内部左右分栏) ## 1. 布局结构 (Centered Split Layout) 采用屏幕居中的大尺寸卡片布局,将品牌展示与操作表单完美融合。 - **外层容器**: `min-h-screen bg-slate-50 flex items-center justify-center p-4` - **主卡片**: `w-full max-w-4xl bg-white rounded-2xl shadow-2xl overflow-hidden flex min-h-[550px]` - **左侧 (品牌区 - Brand Area)**: `w-1/2 hidden md:flex bg-slate-900 relative p-12 flex-col justify-between text-white` - **顶部**: Logo 展示。 - **中部**: - `h1`: "探索内容的无限可能" (text-4xl font-bold leading-tight) - `p`: "专业的租户管理与内容交付平台,连接创作者与用户。" (text-slate-400 mt-4) - **底部**: `text-xs text-slate-500`: "© 2025 Quyun. All rights reserved." - **右侧 (表单区 - Form Area)**: `w-full md:w-1/2 p-8 sm:p-12 flex flex-col justify-center` --- ## 2. 核心交互流程 (手机号 OTP 登录/注册) 页面不区分登录和注册,统一通过手机号验证码进入。若手机号未注册,验证通过后后台自动创建账号。 ### 2.1 第一步:输入手机号 - **标题**: "欢迎回来" (text-2xl font-bold text-slate-900) - **描述**: "未注册的手机号验证后将自动创建账号" (text-sm text-slate-500 mt-2 mb-8) - **表单元素**: - **手机号输入**: `flex` 结构。前置国家代码 `+86` (不可选或下拉),后接 Input。 - 样式: `border-slate-200 focus:border-primary-500 rounded-lg` - **协议勾选**: 位于按钮上方。 - `[ ] 我已阅读并同意《用户协议》和《隐私政策》` - **交互**: 协议名称点击后 **新窗口打开** (`target="_blank"`)。 - **提交按钮**: "获取验证码" (Primary Button, Full Width, `h-12`)。 - **第三方登录 (Footer)**: - 分隔线: "其他方式登录" (text-xs text-slate-400) - 图标组: 微信、GitHub 等圆型图标按钮。 ### 2.2 第二步:输入验证码 (OTP Input) *用户点击获取验证码成功后,表单区域平滑切换(或水平滑入)至验证码输入界面。* - **提示**: "验证码已发送至 +86 138****8888" (含返回修改图标)。 - **验证码输入框**: - **连体样式**: 单个 Input,但通过 CSS `letter-spacing` 或背景装饰模拟 6 位网格感,或者使用标准的 6 位连体窄间距输入框。 - **交互**: 自动聚焦,仅限数字,长度 6 位。 - **辅助操作**: - **倒计时**: "59s 后重新获取" (不可点击) -> "重新获取验证码" (可点击)。 - **确认按钮**: "登录 / 进入 QuYun"。 --- ## 3. 逻辑与细节 - **自动注册逻辑**: 验证码校验通过后,由后端判断 `is_new_user`。 - **跳转逻辑**: 登录/注册成功后,统一跳转回 **首页 (`/`)** 或 **来源页 (redirect_url)**。不强制跳转完善资料页。 - **校验规则**: - 手机号: 必须符合中国大陆 11 位手机号格式。 - 协议: 未勾选时点击“获取验证码”,按钮执行“抖动”动画,并在下方显示红色提示“请先同意用户协议”。 - **加载状态**: - 发送验证码时,按钮进入 `loading` 状态,防止重复点击。 - 登录校验时,全屏或区域遮罩 Loading。