forked from gxwebsoft/mp-10550
feat(rider): 实现水票核销页面自动扫描功能
- 在水票核销页面添加自动扫描模式支持 - 添加路由参数检测实现自动开启扫码功能 - 添加首次展示时自动触发扫码逻辑 - 修改用户卡片组件显示实际水票总数而非礼品卡数量 - 添加独立的水票总数刷新机制 - 在用户登录和信息刷新时同步更新水票总数
This commit is contained in:
@@ -12,12 +12,14 @@ import {getStoredInviteParams} from "@/utils/invite";
|
||||
import UnifiedQRButton from "@/components/UnifiedQRButton";
|
||||
import {useThemeStyles} from "@/hooks/useTheme";
|
||||
import {getRootDomain} from "@/utils/domain";
|
||||
import { getMyGltUserTicketTotal } from '@/api/glt/gltUserTicket'
|
||||
|
||||
const UserCard = forwardRef<any, any>((_, ref) => {
|
||||
const {data, refresh} = useUserData()
|
||||
const {getDisplayName} = useUser();
|
||||
const [IsLogin, setIsLogin] = useState<boolean>(false)
|
||||
const [userInfo, setUserInfo] = useState<User>()
|
||||
const [ticketTotal, setTicketTotal] = useState<number>(0)
|
||||
|
||||
const themeStyles = useThemeStyles();
|
||||
|
||||
@@ -29,6 +31,7 @@ const UserCard = forwardRef<any, any>((_, ref) => {
|
||||
// 下拉刷新
|
||||
const handleRefresh = async () => {
|
||||
await refresh()
|
||||
reloadTicketTotal()
|
||||
Taro.showToast({
|
||||
title: '刷新成功',
|
||||
icon: 'success'
|
||||
@@ -41,6 +44,9 @@ const UserCard = forwardRef<any, any>((_, ref) => {
|
||||
}))
|
||||
|
||||
useEffect(() => {
|
||||
// 独立于用户信息授权:只要有登录 token,就可以拉取水票总数
|
||||
reloadTicketTotal()
|
||||
|
||||
// Taro.getSetting:获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限。
|
||||
Taro.getSetting({
|
||||
success: (res) => {
|
||||
@@ -57,6 +63,20 @@ const UserCard = forwardRef<any, any>((_, ref) => {
|
||||
});
|
||||
}, []);
|
||||
|
||||
const reloadTicketTotal = () => {
|
||||
const token = Taro.getStorageSync('access_token')
|
||||
if (!token) {
|
||||
setTicketTotal(0)
|
||||
return
|
||||
}
|
||||
getMyGltUserTicketTotal()
|
||||
.then((total) => setTicketTotal(typeof total === 'number' ? total : 0))
|
||||
.catch((err) => {
|
||||
console.error('个人中心水票总数加载失败:', err)
|
||||
setTicketTotal(0)
|
||||
})
|
||||
}
|
||||
|
||||
const reload = () => {
|
||||
Taro.getUserInfo({
|
||||
success: (res) => {
|
||||
@@ -73,6 +93,7 @@ const UserCard = forwardRef<any, any>((_, ref) => {
|
||||
Taro.setStorageSync('UserId', data.userId)
|
||||
// 登录态已就绪后刷新卡片统计(余额/积分/券/水票)
|
||||
refresh().then()
|
||||
reloadTicketTotal()
|
||||
|
||||
// 获取openId
|
||||
if (!data.openid) {
|
||||
@@ -172,6 +193,7 @@ const UserCard = forwardRef<any, any>((_, ref) => {
|
||||
setIsLogin(true)
|
||||
// 登录态已就绪后刷新卡片统计(余额/积分/券/水票)
|
||||
refresh().then()
|
||||
reloadTicketTotal()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
@@ -282,7 +304,7 @@ const UserCard = forwardRef<any, any>((_, ref) => {
|
||||
<View className={'item flex justify-center flex-col items-center'}
|
||||
onClick={() => navTo('/user/gift/index', true)}>
|
||||
<Text className={'text-xs text-gray-200'} style={themeStyles.textColor}>水票</Text>
|
||||
<Text className={'text-xl text-white'} style={themeStyles.textColor}>{data?.giftCards || 0}</Text>
|
||||
<Text className={'text-xl text-white'} style={themeStyles.textColor}>{ticketTotal}</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
|
||||
Reference in New Issue
Block a user