import React, {useState, useEffect, useCallback} from 'react' import {View, Text, ScrollView} from '@tarojs/components' import {Empty, Tag, PullToRefresh, Loading} from '@nutui/nutui-react-taro' import Taro from '@tarojs/taro' import {pageShopDealerOrder} from '@/api/shop/shopDealerOrder' import {useDealerUser} from '@/hooks/useDealerUser' import type {ShopDealerOrder} from '@/api/shop/shopDealerOrder/model' interface OrderWithDetails extends ShopDealerOrder { orderNo?: string customerName?: string userCommission?: string } const DealerOrders: React.FC = () => { const [loading, setLoading] = useState(false) const [refreshing, setRefreshing] = useState(false) const [loadingMore, setLoadingMore] = useState(false) const [orders, setOrders] = useState([]) const [currentPage, setCurrentPage] = useState(1) const [hasMore, setHasMore] = useState(true) const {dealerUser} = useDealerUser() // 获取订单数据 const fetchOrders = useCallback(async (page: number = 1, isRefresh: boolean = false) => { if (!dealerUser?.userId) return try { if (isRefresh) { setRefreshing(true) } else if (page === 1) { setLoading(true) } else { setLoadingMore(true) } const result = await pageShopDealerOrder({ page, limit: 10 }) if (result?.list) { const newOrders = result.list.map(order => ({ ...order, orderNo: `${order.orderId}`, customerName: `用户${order.userId}`, userCommission: order.firstMoney || '0.00' })) if (page === 1) { setOrders(newOrders) } else { setOrders(prev => [...prev, ...newOrders]) } setHasMore(newOrders.length === 10) setCurrentPage(page) } } catch (error) { console.error('获取分销订单失败:', error) Taro.showToast({ title: '获取订单失败', icon: 'error' }) } finally { setLoading(false) setRefreshing(false) setLoadingMore(false) } }, [dealerUser?.userId]) // 下拉刷新 const handleRefresh = async () => { await fetchOrders(1, true) } // 加载更多 const handleLoadMore = async () => { if (!loadingMore && hasMore) { await fetchOrders(currentPage + 1) } } // 初始化加载数据 useEffect(() => { if (dealerUser?.userId) { fetchOrders(1) } }, [fetchOrders]) const getStatusText = (isSettled?: number, isInvalid?: number) => { if (isInvalid === 1) return '已失效' if (isSettled === 1) return '已结算' return '待结算' } const getStatusColor = (isSettled?: number, isInvalid?: number) => { if (isInvalid === 1) return 'danger' if (isSettled === 1) return 'success' return 'warning' } const renderOrderItem = (order: OrderWithDetails) => ( 订单号:{order.orderNo} {getStatusText(order.isSettled, order.isInvalid)} 订单金额:¥{order.orderPrice || '0.00'} 我的佣金:¥{order.userCommission} 客户:{order.customerName} {order.createTime} ) if (!dealerUser) { return ( 加载中... ) } return ( {loading && orders.length === 0 ? ( 加载中... ) : orders.length > 0 ? ( <> {orders.map(renderOrderItem)} {loadingMore && ( 加载更多... )} {!hasMore && orders.length > 0 && ( 没有更多数据了 )} ) : ( )} ) } export default DealerOrders