From 93b79237f74954c7d1657ae43784576b5a69e213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Tue, 7 Apr 2026 16:59:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor(passport):=20=E9=80=82=E9=85=8D?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81=E7=99=BB=E5=BD=95=E5=90=8E=E7=AB=AF?= =?UTF-8?q?ConfirmLoginResult=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 扩展ConfirmLoginResult状态字段,添加accessToken、expiresIn等信息 - 新增绑定手机号、跳转等下一步操作字段支持 - 更新登录确认逻辑,使用status字段判断confirmed状态 - 支持successMessage及message多样提示内容 - 增加绑定手机号状态时提示并跳转到手机号绑定页 - 保留兼容旧版success布尔字段处理逻辑 --- src/api/passport/qr-login/index.ts | 29 +++++++++++++++++++++++------ src/passport/qr-confirm/index.tsx | 16 ++++++++++++++-- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/api/passport/qr-login/index.ts b/src/api/passport/qr-login/index.ts index 1a52c9f..306026f 100644 --- a/src/api/passport/qr-login/index.ts +++ b/src/api/passport/qr-login/index.ts @@ -78,19 +78,36 @@ export interface ConfirmLoginParam { deviceInfo?: string; } -// 确认登录响应 +// 确认登录响应(适配后端 QrLoginStatusResponse) export interface ConfirmLoginResult { - // 是否成功 - success: boolean; - // 消息 - message: string; - // 登录用户信息 + // 状态: pending-等待扫码, scanned-已扫码, confirmed-已确认, bind_phone-待绑定手机号, expired-已过期 + status: string; + // JWT访问令牌(仅在confirmed状态时返回) + accessToken?: string; + // 用户信息 userInfo?: { userId: number; + username?: string; nickname?: string; avatar?: string; phone?: string; }; + // 剩余过期时间(秒) + expiresIn?: number; + // 租户ID + tenantId?: number; + // 是否需要绑定手机号 + needBindPhone?: boolean; + // 状态提示信息 + message?: string; + // 下一步操作:bind_phone-绑定手机号, redirect-跳转, wait-等待 + nextAction?: string; + // 跳转URL(当nextAction为redirect时使用) + redirectUrl?: string; + // 成功消息 + successMessage?: string; + // 兼容字段:如果后端返回 success + success?: boolean; } /** diff --git a/src/passport/qr-confirm/index.tsx b/src/passport/qr-confirm/index.tsx index 7bffdf5..3632df9 100644 --- a/src/passport/qr-confirm/index.tsx +++ b/src/passport/qr-confirm/index.tsx @@ -140,10 +140,13 @@ const QRConfirmPage: React.FC = () => { } }); - if (result.success) { + // 根据 status 判断成功:confirmed 表示登录成功 + const isConfirmed = result.status === 'confirmed' || result.success === true; + + if (isConfirmed) { setConfirmed(true); Taro.showToast({ - title: '登录确认成功', + title: result.successMessage || result.message || '登录确认成功', icon: 'success', duration: 2000 }); @@ -164,6 +167,15 @@ const QRConfirmPage: React.FC = () => { }); } }, 3000); + } else if (result.status === 'bind_phone' || result.needBindPhone) { + // 需要绑定手机号 + Taro.showToast({ + title: '请先绑定手机号', + icon: 'none' + }); + setTimeout(() => { + Taro.redirectTo({ url: '/passport/sms-login' }); + }, 1500); } else { setError(result.message || '登录确认失败'); }