From e867537375c7ba7b699261f61682e43b72db07d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Mon, 13 Oct 2025 09:22:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(dealer):=20=E6=96=B0=E5=A2=9E=E7=94=B5?= =?UTF-8?q?=E8=B4=B9=E6=94=B6=E7=9B=8A=E9=A1=B5=E9=9D=A2=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=AE=A2=E5=8D=95=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在应用配置中添加电费收益页面路由- 创建电费收益页面组件及配置文件- 修改订单页面标题为"电费订单"- 订单列表增加用户ID筛选条件 - 调整订单详情中的收益比率显示为税费 - 更新空状态提示文案以区分不同页面内容 --- src/app.config.ts | 1 + src/dealer/capital/index.config.ts | 3 + src/dealer/capital/index.tsx | 193 +++++++++++++++++++++++++++++ src/dealer/orders/index.config.ts | 2 +- src/dealer/orders/index.tsx | 5 +- 5 files changed, 201 insertions(+), 3 deletions(-) create mode 100644 src/dealer/capital/index.config.ts create mode 100644 src/dealer/capital/index.tsx 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 = () => { )} ) : ( - )}