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) => { // 需要当前登录用户ID(用于 resourceId 参数) if (!dealerUser || !dealerUser.userId) return try { if (isRefresh) { setRefreshing(true) } else if (page === 1) { setLoading(true) } else { setLoadingMore(true) } const result = await pageShopDealerOrder({ page, limit: 10, // 后端需要 resourceId=当前登录用户ID 才能正确过滤分销订单 resourceId: dealerUser.userId }) if (result?.list) { const newOrders = result.list.map(order => ({ ...order, // 优先使用接口返回的订单号;没有则降级展示 orderId orderNo: order.orderNo ?? (order.orderId != null ? String(order.orderId) : undefined), customerName: `${order.nickname}${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, isUnfreeze?: number, orderStatus?: number) => { if (orderStatus === 2 || orderStatus === 5 || orderStatus === 6) return '已取消' if (isInvalid === 1) return '已失效' if (isUnfreeze === 1) return '已解冻' if (isSettled === 1) return '已结算' return '待结算' } const getStatusColor = (isSettled?: number, isInvalid?: number, isUnfreeze?: number, orderStatus?: number) => { if (orderStatus === 2 || orderStatus === 5 || orderStatus === 6) return 'default' if (isInvalid === 1) return 'danger' if (isUnfreeze === 1) return 'success' if (isSettled === 1) return 'info' return 'warning' } const handleGoCapital = () => { Taro.navigateTo({url: '/dealer/capital/index'}) } const renderOrderItem = (order: OrderWithDetails) => ( 订单号:{order.orderNo || '-'} {getStatusText(order.isSettled, order.isInvalid, order.isUnfreeze,order.orderStatus)} {/**/} {/* */} {/* 订单金额:¥{order.orderPrice || '0.00'}*/} {/* */} {/**/} {order.createTime} 订单金额:¥{order.orderPrice || '0.00'} ) if (!dealerUser) { return ( 加载中... ) } return ( {loading && orders.length === 0 ? ( 加载中... ) : orders.length > 0 ? ( <> {orders.map(renderOrderItem)} {loadingMore && ( 加载更多... )} {!hasMore && orders.length > 0 && ( 没有更多数据了 )} ) : ( )} ) } export default DealerOrders