feat(auth): 实现二维码登录功能

- 新增二维码登录相关接口和页面
- 实现二维码生成、状态检查、登录确认等逻辑
- 添加微信小程序登录支持- 优化用户信息展示和处理
This commit is contained in:
2025-09-05 22:49:41 +08:00
parent 0dfe3934a4
commit 408ff13590
18 changed files with 1558 additions and 10 deletions

View File

@@ -9,6 +9,7 @@ import navTo from "@/utils/common";
import {TenantId} from "@/config/app";
import {useUser} from "@/hooks/useUser";
import {useUserData} from "@/hooks/useUserData";
import {useUniversalScanner} from "@/components/UniversalScanner";
function UserCard() {
const {
@@ -20,7 +21,17 @@ function UserCard() {
getDisplayName,
getRoleName
} = useUser();
const {data} = useUserData()
const {data} = useUserData();
// 统一扫码处理
const { startScan } = useUniversalScanner({
onScanSuccess: (result) => {
console.log('扫码成功:', result);
},
onScanError: (error) => {
console.error('扫码失败:', error);
}
});
useEffect(() => {
// Taro.getSetting获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限。
@@ -190,7 +201,48 @@ function UserCard() {
) : ''}
</View>
</View>
{isAdmin() && <Scan onClick={() => navTo('/user/store/verification', true)}/>}
{isLoggedIn && (
<View
onClick={() => {
console.log('扫码按钮被点击了');
// 检查 Taro.scanCode 是否存在
if (typeof Taro.scanCode === 'function') {
console.log('Taro.scanCode 函数存在');
// 直接测试 Taro.scanCode
Taro.scanCode({
success: (res) => {
console.log('直接扫码成功:', res.result);
Taro.showModal({
title: '扫码成功',
content: res.result,
showCancel: false
});
},
fail: (err) => {
console.error('直接扫码失败:', err);
Taro.showModal({
title: '扫码失败',
content: `错误信息: ${JSON.stringify(err)}`,
showCancel: false
});
}
});
} else {
console.error('Taro.scanCode 函数不存在');
Taro.showModal({
title: '错误',
content: 'Taro.scanCode 函数不存在,请检查 Taro 版本',
showCancel: false
});
}
}}
className="p-2 bg-blue-100 rounded cursor-pointer"
>
<Scan className="text-blue-500" />
</View>
)}
<View className={'mr-4 text-sm px-3 py-1 text-black border-gray-400 border-solid border-2 rounded-3xl'}
onClick={() => navTo('/user/profile/profile', true)}>
{'个人资料'}