Files
x-server-mobile/frontend/src/pages/login/QRCodeLogin.module.css
T
root df07b16c7a feat: 实现多端飞书登录功能
1. 飞书客户端内:静默自动登录
   - 检测飞书环境 (userAgent + ttjsBridge)
   - 调用 ttjsBridge.getAuthCode() 获取授权码
   - 自动登录到后台

2. 飞书客户端外:扫码登录
   - 后端新增三个接口:
     * POST /api/v1/auth/qrcode-login - 生成登录会话和二维码
     * GET /api/v1/auth/qrcode-login/status - 轮询登录状态
     * GET /login/qrcode/{id} - 飞书授权回调
   - 前端新增 QRCodeLogin 组件:
     * 使用 qrcode.react 生成二维码
     * 每 2 秒轮询登录状态
     * 状态:loading → pending → scanning → success/expired

3. 数据库表:feishu_login_session
   - 存储 session_id, auth_url, status, user_id
   - 状态:pending, scanning, success, expired
   - 2 分钟过期机制

4. 其他优化
   - 移除审批详情页的 header
   - 更新 PROJECT_ISSUES.md 文档

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 09:58:19 +08:00

47 lines
596 B
CSS

.qrcodeContainer {
padding: 30px 20px;
text-align: center;
min-width: 280px;
}
.loading {
color: #999;
padding: 40px 0;
}
.qrcode {
display: flex;
justify-content: center;
margin-bottom: 20px;
}
.qrcode svg {
border: 8px solid #fff;
border-radius: 8px;
}
.status {
font-size: 14px;
margin-bottom: 16px;
}
.actions {
display: flex;
justify-content: center;
gap: 12px;
}
.refreshBtn {
padding: 8px 20px;
border: none;
border-radius: 4px;
background: #1677ff;
color: #fff;
font-size: 14px;
cursor: pointer;
}
.refreshBtn:active {
opacity: 0.8;
}