diff --git a/src/user/order/components/OrderList.tsx b/src/user/order/components/OrderList.tsx index 293c4c2..c2182ef 100644 --- a/src/user/order/components/OrderList.tsx +++ b/src/user/order/components/OrderList.tsx @@ -4,7 +4,7 @@ import {View} from '@tarojs/components' import Taro from '@tarojs/taro'; import {InfiniteLoading} from '@nutui/nutui-react-taro' import dayjs from "dayjs"; -import {pageShopOrder, removeShopOrder, updateShopOrder} from "@/api/shop/shopOrder"; +import {pageShopOrder, updateShopOrder} from "@/api/shop/shopOrder"; import {ShopOrder, ShopOrderParam} from "@/api/shop/shopOrder/model"; import {listShopOrderGoods} from "@/api/shop/shopOrderGoods"; import {ShopOrderGoods} from "@/api/shop/shopOrderGoods/model"; @@ -171,10 +171,12 @@ function OrderList(props: OrderListProps) { setError(null); // 清除之前的错误 const currentPage = resetPage ? 1 : (targetPage || page); const statusParams = getOrderStatusParams(tapIndex); + // 合并搜索条件,tab的statusFilter优先级更高 const searchConditions = { page: currentPage, - ...statusParams, - ...props.searchParams + userId: statusParams.userId, // 用户ID + ...props.searchParams, // 搜索关键词等其他条件 + statusFilter: statusParams.statusFilter // tab的statusFilter优先级最高 }; console.log('订单筛选条件:', { tapIndex, @@ -305,32 +307,24 @@ function OrderList(props: OrderListProps) { }, [tapIndex]); // 监听tapIndex变化 useEffect(() => { - // 当外部传入的statusFilter改变时,更新对应的tab索引 - if (props.searchParams?.statusFilter !== undefined) { - let targetTabIndex = 0; - - // 如果statusFilter为-1,表示全部,对应index为0 - if (props.searchParams.statusFilter === -1) { - targetTabIndex = 0; - } else { - const tab = tabs.find(t => t.statusFilter === props.searchParams?.statusFilter); - targetTabIndex = tab ? tab.index : 0; - } - - console.log('searchParams变化:', { - statusFilter: props.searchParams.statusFilter, - currentTapIndex: tapIndex, - targetTabIndex, - shouldUpdate: targetTabIndex !== tapIndex - }); + // 当外部传入的搜索参数变化时(不包括statusFilter,因为tab切换会处理) + // 只有当搜索关键词等其他条件变化时才重新加载 + const { statusFilter, ...otherParams } = props.searchParams || {}; + + // 检查是否有除statusFilter外的其他搜索条件变化 + const hasOtherSearchParams = Object.keys(otherParams).some(key => + otherParams[key] !== undefined && otherParams[key] !== '' + ); + + console.log('searchParams变化 (非statusFilter):', { + otherParams, + hasOtherSearchParams + }); - if (targetTabIndex !== tapIndex) { - setTapIndex(targetTabIndex); - return; // 避免重复调用reload - } + if (hasOtherSearchParams) { + reload(true).then(); // 只有其他搜索条件变化时才重新加载 } - reload(true).then(); // 搜索参数变化时重置页码 - }, [props.searchParams]); // 监听搜索参数变化 + }, [props.searchParams?.keywords, props.searchParams?.orderNo]); // 只监听具体的搜索字段 return ( <> @@ -347,12 +341,12 @@ function OrderList(props: OrderListProps) { }} value={tapIndex} onChange={(paneKey) => { - console.log('Tab切换到:', paneKey, '对应状态:', tabs[paneKey]?.title); + console.log('Tab切换到:', paneKey, '对应状态:', tabs[paneKey]?.title, 'statusFilter:', tabs[paneKey]?.statusFilter); setTapIndex(paneKey) }} > { - tabs?.map((item, index) => { + tabs?.map((item, _) => { return ( } loadMoreText={ - <> + 没有更多了 - + } > {list?.map((item, index) => { diff --git a/src/user/order/order.tsx b/src/user/order/order.tsx index e0fe796..182b9e8 100644 --- a/src/user/order/order.tsx +++ b/src/user/order/order.tsx @@ -55,7 +55,7 @@ function Order() { // 获取状态栏高度 Taro.getSystemInfo({ success: (res) => { - setStatusBarHeight(res.statusBarHeight) + setStatusBarHeight(res.statusBarHeight ?? 0) }, }) // 设置导航栏标题