import React, {useState, useEffect, useCallback} from 'react' import {View, Text, ScrollView} from '@tarojs/components' import {Empty, PullToRefresh, Space, Loading, DatePicker} from '@nutui/nutui-react-taro' import {ArrowDown} from '@nutui/icons-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' import {useUser} from "@/hooks/useUser"; // import {pageUsers} from "@/api/system/user"; interface OrderWithDetails extends ShopDealerOrder { orderNo?: string customerName?: string userCommission?: string } // interface PickerOption { // text: string | number // value: string | number // disabled?: boolean // children?: PickerOption[] // className?: string | number // } const DealerOrder: React.FC = () => { const [loading, setLoading] = useState(false) const d = new Date() const currMonth = `${d.getFullYear()}${d.getMonth() + 1}`; const currDate = `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`; const [date, setDate] = useState(currMonth) const [show1, setShow1] = 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 [users, setUsers] = useState([]) // const [visible, setVisible] = useState(false) // const [baseDesc, setBaseDesc] = useState('') const {dealerUser} = useDealerUser() const {user} = useUser() // 获取订单数据 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, isSettled: 1, resourceId: getResourceId(), month: date, page, limit: 10 }) if (result?.list) { const newOrders = result.list.map(order => ({ ...order, orderNo: `${order.orderNo}`, 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, date]) // 下拉刷新 const handleRefresh = async () => { await fetchOrders(1, true) } // 加载更多 const handleLoadMore = async () => { if (!loadingMore && hasMore) { await fetchOrders(currentPage + 1) } } const getResourceId = () => { if (hasRole('superAdmin')) { return undefined } if (hasRole('admin')) { return user?.userId } } // 检查是否有特定角色 const hasRole = (roleCode: string) => { if (!user || !user.roles) { return false; } return user.roles.some(role => role.roleCode === roleCode); } // const changePicker = (list: any[], option: any, columnIndex: number) => { // console.log(columnIndex, option) // } // const confirmPicker = ( // options: PickerOption[], // values: (string | number)[] // ) => { // let description = '' // options.forEach((option: any) => { // description += ` ${option.text}` // }) // setBaseDesc(description) // } // const fetchUsers = ()=> { // pageUsers({}).catch(res => { // console.log(res) // res.list.map(d => { // console.log(d,'ddddd') // }) // setUsers(res) // }) // } // 初始化加载数据 useEffect(() => { if (dealerUser?.userId) { fetchOrders(1) // fetchUsers() } }, [fetchOrders, date]) 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} 客户名称:{order.title} {/* 添加收益用户信息显示 */} 收益计算 {/*DealerId:{Taro.getStorageSync('DealerId')}*/} {/* 一级佣金30 */} {(hasRole('superAdmin') || hasRole('admin') || Taro.getStorageSync('UserId') != order.thirdUserId) && ( <> {Taro.getStorageSync('UserId') != order.secondUserId && ( <> {(order.firstNickname || order.firstUserId) && ( 一级佣金:{order.firstNickname || `用户${order.firstUserId}`} (¥{order.firstMoney || '0.00'}) )} )} {(order.secondUserId || order.secondUserId) && ( 二级佣金:{order.secondNickname || `用户${order.secondUserId}`} (¥{order.secondMoney || '0.00'}) )} )} {/* 三级分销商 */} {(order.thirdUserId !== undefined && order.thirdUserId > 0) && ( 三级佣金:{order.thirdNickname || `用户${order.thirdUserId}`} (¥{order.thirdMoney || '0.00'}) )} 结算电量:{order.degreePrice} 结算金额:{order.settledPrice} 单价:{order.price} 税费:{order.rate} 实发金额:{order.payPrice} 结算月份:{order.month} 结算状态:{getStatusText(order.isSettled, order.isInvalid)} {order.settleTime} {/**/} {/* */} {/* {(order.thirdUserId && order.thirdUserId > 0) ? '获取收益' : '推荐收益'}*/} {/* */} {/* */} {/* 合作方收益:{getStatusText(order.isSettled, order.isInvalid)}*/} {/* */} {/**/} {/**/} {/* */} {/* {order.settleTime}*/} {/* */} {/**/} ) return ( {/*筛选工具条*/} setShow1(true)}>{date ? `${date}` : '请选择'} setShow1(true)}/> {/* setVisible(!visible)}>{baseDesc}*/} {/*账单列表*/} {loading && orders.length === 0 ? ( 加载中... ) : orders.length > 0 ? ( <> {orders.map(renderOrderItem)} {loadingMore && ( 加载更多... )} {!hasMore && orders.length > 0 && ( 没有更多数据了 )} ) : ( )} setShow1(false)} onConfirm={(_, values) => { setShow1(false) setDate(`${values[0]}${values[1]}`) }} /> {/* confirmPicker(list, values)}*/} {/* onClose={() => setVisible(false)}*/} {/* onChange={changePicker}*/} {/*/>*/} ) } export default DealerOrder