diff --git a/src/app.config.ts b/src/app.config.ts index c246924..3f0db59 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -58,6 +58,7 @@ export default defineAppConfig({ "apply/add", "withdraw/index", "orders/index", + "capital/index", "team/index", "qrcode/index", "invite-stats/index", diff --git a/src/dealer/capital/index.config.ts b/src/dealer/capital/index.config.ts new file mode 100644 index 0000000..c5e4e41 --- /dev/null +++ b/src/dealer/capital/index.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: '电费收益' +}) diff --git a/src/dealer/capital/index.tsx b/src/dealer/capital/index.tsx new file mode 100644 index 0000000..b882dd7 --- /dev/null +++ b/src/dealer/capital/index.tsx @@ -0,0 +1,193 @@ +import React, {useState, useEffect, useCallback} from 'react' +import {View, Text, ScrollView} from '@tarojs/components' +import {Empty, 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({ + isInvalid: 0, + 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) => ( + + + + 电费收益 + + + ¥{(Number(order.orderPrice) * 10).toFixed(2)} + + + + + + 客户名称:{order.comments} + + + 收益比率:{order.rate} + + + + + + 结算电量:{order.orderPrice || '0.00'} + + + 状态:{getStatusText(order.isSettled, order.isInvalid)} + + + + + + {order.settleTime} + + + + + ) + + return ( + + + + + {loading && orders.length === 0 ? ( + + + 加载中... + + ) : orders.length > 0 ? ( + <> + {orders.map(renderOrderItem)} + {loadingMore && ( + + + 加载更多... + + )} + {!hasMore && orders.length > 0 && ( + + 没有更多数据了 + + )} + + ) : ( + + )} + + + + + ) +} + +export default DealerOrders diff --git a/src/dealer/orders/index.config.ts b/src/dealer/orders/index.config.ts index c5e4e41..0f439c5 100644 --- a/src/dealer/orders/index.config.ts +++ b/src/dealer/orders/index.config.ts @@ -1,3 +1,3 @@ export default definePageConfig({ - navigationBarTitleText: '电费收益' + navigationBarTitleText: '电费订单' }) diff --git a/src/dealer/orders/index.tsx b/src/dealer/orders/index.tsx index b882dd7..0698927 100644 --- a/src/dealer/orders/index.tsx +++ b/src/dealer/orders/index.tsx @@ -37,6 +37,7 @@ const DealerOrders: React.FC = () => { const result = await pageShopDealerOrder({ isInvalid: 0, + userId: Taro.getStorageSync('UserId'), page, limit: 10 }) @@ -119,7 +120,7 @@ const DealerOrders: React.FC = () => { 客户名称:{order.comments} - 收益比率:{order.rate} + 税费:{order.rate} @@ -179,7 +180,7 @@ const DealerOrders: React.FC = () => { )} ) : ( - )}