import React, { useEffect, useState } from 'react' import { View, Text, ScrollView, Image } from '@tarojs/components' import Taro from '@tarojs/taro' import { useUser } from '@/hooks/useUser' import { pageShopPointsProduct } from '@/api/shop/shopPointsProduct' import type { ShopPointsProduct } from '@/api/shop/shopPointsProduct/model' import { getUserPointsInfo, type UserPointsInfo } from '@/api/system/user/points' import EmptyState from '@/components/common/EmptyState' const PointsPage: React.FC = () => { const { user } = useUser() const [pointsInfo, setPointsInfo] = useState({ points: 0, totalEarned: 0, totalUsed: 0, expiringSoon: 0 }) const [hotProducts, setHotProducts] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { // 获取当前用户真实积分 getUserPointsInfo() .then(data => setPointsInfo(data)) .catch(err => console.error('获取积分信息失败:', err)) pageShopPointsProduct({ page: 1, limit: 4, isHot: 1, status: 1 }) .then(res => setHotProducts(res?.list || [])) .catch(() => {}) .finally(() => setLoading(false)) }, []) return ( {/* 积分卡片 */} 当前积分 {pointsInfo.points} Taro.navigateTo({ url: '/pages/points/signin' })} > 每日签到 Taro.navigateTo({ url: '/pages/user/points-record' })} > 积分明细 {/* 热门兑换 */} 热门兑换 Taro.navigateTo({ url: '/pages/points/product-list/index' })} >{`查看更多 >`} {!loading && hotProducts.length === 0 ? ( ) : ( {loading ? [1, 2, 3, 4].map(i => ( )) : hotProducts.map(item => ( Taro.navigateTo({ url: `/pages/points/product-detail?id=${item.id}` })} > {item.productImage ? ( ) : ( 暂无图片 )} {item.productName} {item.pointsPrice || 0}积分 {Number(item.moneyPrice) > 0 && ( +¥{item.moneyPrice} )} ))} )} {/* 积分订单入口 */} Taro.navigateTo({ url: '/pages/order-list' })} > 积分订单 {'>'} ) } export default PointsPage