3.3 KiB
3.3 KiB
页面设计: 认证流程 (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
- 左侧 (品牌区 - Brand Area):
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 位。
- 连体样式: 单个 Input,但通过 CSS
- 辅助操作:
- 倒计时: "59s 后重新获取" (不可点击) -> "重新获取验证码" (可点击)。
- 确认按钮: "登录 / 进入 QuYun"。
3. 逻辑与细节
- 自动注册逻辑: 验证码校验通过后,由后端判断
is_new_user。 - 跳转逻辑: 登录/注册成功后,统一跳转回 首页 (
/) 或 来源页 (redirect_url)。不强制跳转完善资料页。 - 校验规则:
- 手机号: 必须符合中国大陆 11 位手机号格式。
- 协议: 未勾选时点击“获取验证码”,按钮执行“抖动”动画,并在下方显示红色提示“请先同意用户协议”。
- 加载状态:
- 发送验证码时,按钮进入
loading状态,防止重复点击。 - 登录校验时,全屏或区域遮罩 Loading。
- 发送验证码时,按钮进入