import {useState, useEffect, CSSProperties} from 'react' import Taro from '@tarojs/taro' import {Cell, InfiniteLoading, Card, Empty, ConfigProvider} from '@nutui/nutui-react-taro' import {pageUserPointsLog, getUserPointsStats} from "@/api/user/points"; import {UserPointsLog as UserPointsLogType, UserPointsStats} from "@/api/user/points/model"; import {View} from '@tarojs/components' const InfiniteUlStyle: CSSProperties = { height: '100vh', width: '100%', padding: '0', overflowY: 'auto', overflowX: 'hidden', } const UserPoints = () => { const [list, setList] = useState([]) const [page, setPage] = useState(1) const [hasMore, setHasMore] = useState(true) const [stats, setStats] = useState({}) useEffect(() => { reload() loadPointsStats() }, []) const loadMore = async () => { setPage(page + 1) reload(); } const reload = () => { const userId = Taro.getStorageSync('UserId') if (!userId) { Taro.showToast({ title: '请先登录', icon: 'error' }); return } pageUserPointsLog({ userId: parseInt(userId), page }).then(res => { console.log(res) const newList = res?.list || []; setList([...list, ...newList]) setHasMore(newList.length > 0) }).catch(error => { console.error('Points log error:', error) Taro.showToast({ title: error?.message || '获取失败', icon: 'error' }); }) } const loadPointsStats = () => { const userId = Taro.getStorageSync('UserId') if (!userId) return getUserPointsStats(parseInt(userId)) .then((res: any) => { setStats(res) }) .catch((error: any) => { console.error('Points stats error:', error) }) } const getPointsTypeText = (type?: number) => { switch (type) { case 1: return '获得积分' case 2: return '消费积分' case 3: return '积分过期' case 4: return '管理员调整' default: return '积分变动' } } const getPointsTypeColor = (type?: number) => { switch (type) { case 1: return 'text-green-500' case 2: return 'text-red-500' case 3: return 'text-gray-500' case 4: return 'text-blue-500' default: return 'text-gray-500' } } return ( {/* 积分统计卡片 */} {stats.currentPoints || 0} 当前积分 {stats.totalEarned || 0} 累计获得 {stats.totalUsed || 0} 累计消费 {stats.expiringSoon || 0} 即将过期 {/* 积分记录 */}
    { console.log('onScroll') }} onScrollToUpper={() => { console.log('onScrollToUpper') }} loadingText={ <> 加载中 } loadMoreText={ <> 没有更多了 } > {list.length === 0 ? (
    ) : ( list.map((item, index) => ( {getPointsTypeText(item.type)} {item.reason || '无备注'} {item.type === 1 ? '+' : item.type === 2 ? '-' : ''} {item.points || 0} {item.createTime ? new Date(item.createTime).toLocaleString() : ''} {item.orderId && ( 订单: {item.orderId} )} {item.comments && ( 备注: {item.comments} )} )) )}
); }; export default UserPoints;