家长端手机号登录 · 效果图(5 帧)
分支 feature/subseat-login-v2 · 依据现网组件 web/app/h5/chat/components/seat-login-sheet.tsx / seat-change-password-sheet.tsx 扒取真实色值/圆角/间距/文案 · 2026-09-23
橙虚线框 + 右上「新增」标签 = 本次新增/改动;帧1为现状对照基准,不加标注
帧 1 · 现状对照基准
现状 · 家长端/门店端共用同一登录框(seat-login-sheet.tsx:238-306)。 用户名输入框仅接受「席位账号」;若输入手机号形状(11位·1开头)会被前端 isPhoneLikeUsername() 提交前拦截(seat-login-hints.ts:21), 提示「席位账号不是手机号,请输入提供给您的10位数字账号」。 「忘记密码」入口仅微信已绑定席位时显示,此处从简未画出。
赵阳智脑
欢迎使用 请登录您账户
席位账号
管理员给您的 6 位初始密码
登 录
帧 2 · 新增·家长端登录框新增
新增 · 仅家长端:用户名输入框支持「账号」或「手机号」两种登录方式 (相对 seat-login-sheet.tsx:291-305 的输入框)。 门店端保持现状不变,仍只认管理员分配的席位账号,手机号形状继续被拦截。 长官拍板:家长账号新格式为大写字母 T + 6 位序号 + 4 位年月(YYMM), 共 11 位,示例 T0000012609(输入框占位符维持「账号 或 手机号」不变, 新格式仅体现在此说明条;帧 1 现状 10 位纯数字账号说明维持原样)。
赵阳智脑
欢迎使用 请登录您账户
账号 或 手机号
密码
登 录
帧 3 · 新增·选择门店新增 · 核心
新增 · 场景:家长在两家门店都开通了账号,且两个账号密码相同。 手机号+密码提交后密码校验已通过,此时需先确定「登进哪一家」再放行。 相对现状:提交成功后原本直接 setSeatToken() 进入对话 (seat-login-sheet.tsx:191-213),现需先插入本选择步骤。 列表字段(门店名称/地址)取自 Organization.name / store_address(app/models/organization.py:20,27), 对家长只显示「门店名称」,不出现「机构/org」等内部用词。 新增视觉痕迹:门店列表上方补一块「手机号+密码已验证」只读回显, 避免实施误做成「先弹候选门店、再输入密码」(会泄露该手机号在哪几家门店有账号)。 回显框样式取自 seat-change-password-sheet.tsx:160-164 (emerald-100 边框 / emerald-50 底 / emerald-700 文字)。
赵阳智脑
请选择要登录的门店
手机号 138****1234
密码 ••••••
已验证通过

该手机号在以下门店均绑定了账号,请选择本次登录的门店

阳光视光中心(建国路店)
示例地址 · 建国路 88 号
晴悦眼视光馆(万达店)
示例地址 · 万达广场 3 楼
帧 4 · 新增·手机号未绑定新增
新增 · 场景:手机号登录时,该手机号未在任何门店绑定席位账号 → 后端返回错误态,复用现有错误展示位(seat-login-sheet.tsx:357-366)。 本帧新增的是错误文案内容,展示位置/样式沿用现网既有的 401/403 错误块。
赵阳智脑
欢迎使用 请登录您账户
13800001234
••••••
该手机号未绑定账号,请用账号登录
登 录
帧 5 · 新增·品牌码设密码新增
新增 · 场景:家长扫品牌码进入,全程微信免密登录,从未设置过密码。 一旦点击任意功能入口,弹出阻塞式弹窗强制设置账号密码作为兜底, 以便日后微信授权异常时仍可用账号密码登录。 弹窗结构/样式完整复用现网首登强制改密弹窗 seat-change-password-sheet.tsx:131-298; 「无关闭按钮」对齐该组件既有逻辑 —— onClose 仅当传入才渲染右上角 X (:28-31 设计注释、:138-147 渲染条件),本场景不传 onClose。 密码位数校验沿用 app/api/seat_auth.py:728 的 re.fullmatch(r"\d{6}") 规则(与改密接口同一套 · 未自造)。 新增点:①只读展示后端预先分配的账号 ②手机号/密码两个输入框。
赵阳智脑
为保障您后续能正常登录,请设置登录密码
已为您分配账号(只读)
T0000012609
设置 6 位数字密码

请设置 6 位数字作为登录密码

请填写 11 位手机号

设置完成后请牢记账号与密码。日后微信登录失败时,可直接用它们进入。

确认并进入
说明:图标为简化线性图标(非 lucide 原始路径,仅表意) · 手机帧背景色为遮罩层示意色(不代表真实底层页面像素) · 色值来源见各帧「本期改动」条内代码引用 + web/tailwindcss/colors.js 真实取值(emerald-600 #059669 / emerald-500 #10b981 / gray-50 #f9fafb / gray-200 #e5e7eb / gray-400 #9ca3af / red-600 #dc2626)。