Files
quyun-v2/docs/design/portal/PAGE_AUTH.md
2025-12-25 17:40:40 +08:00

3.3 KiB
Raw Blame History

页面设计: 认证流程 (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。