feat(qr-login): 增加租户ID支持并优化登录成功处理逻辑- 在 QR 登码返回数据中新增 `tenantId` 字段,用于标识用户所属租户
- 登录成功后将 `tenantId` 存入 localStorage,便于后续权限判断
- 调整 `loginSuccess`事件传递参数,由 token 改为完整响应数据对象- 二维码组件增加点击刷新功能,提升用户体验
- 移除测试用的临时日志输出和无用的测试路由配置
-修复登录页图标显示逻辑,根据登录方式切换二维码/手机图标```
This commit is contained in:
2025-09-22 15:25:59 +08:00
parent 1f5002c536
commit da620dd961
6 changed files with 22 additions and 344 deletions

View File

@@ -7,8 +7,8 @@
<p class="loading-text">正在生成二维码...</p>
</div>
<div v-else-if="qrCodeStatus === 'active'" class="qr-active">
<ele-qr-code-svg :value="qrCodeData" :size="200" />
<div v-else-if="qrCodeStatus === 'active'" class="qr-active cursor-pointer">
<ele-qr-code-svg :value="qrCodeData" :size="200" @click="refreshQrCode" />
<p class="qr-tip">请使用手机APP或小程序扫码登录</p>
<p class="qr-expire-tip">二维码有效期{{ formatTime(expireTime) }}</p>
</div>
@@ -55,11 +55,11 @@ import {
ExclamationCircleOutlined,
ReloadOutlined
} from '@ant-design/icons-vue';
import { generateQrCode, checkQrCodeStatus, type QrCodeResponse } from '@/api/passport/qrLogin';
import {generateQrCode, checkQrCodeStatus, type QrCodeResponse, QrCodeStatusResponse} from '@/api/passport/qrLogin';
// 定义组件事件
const emit = defineEmits<{
(e: 'loginSuccess', token: string): void;
(e: 'loginSuccess', data: QrCodeStatusResponse): void;
(e: 'loginError', error: string): void;
}>();
@@ -131,9 +131,12 @@ const startStatusCheck = () => {
break;
case 'confirmed':
// 登录成功
if(status.tenantId){
localStorage.setItem('TenantId', `${status.tenantId}`)
}
qrCodeStatus.value = 'active';
stopAllTimers();
emit('loginSuccess', status.accessToken || '');
emit('loginSuccess', status);
break;
case 'expired':
qrCodeStatus.value = 'expired';