import {useState, useCallback, useEffect} from 'react' import {View, Text} from '@tarojs/components' import Taro from '@tarojs/taro' import {Loading, InfiniteLoading, Empty, Space, Tag} from '@nutui/nutui-react-taro' import {pageShopChatConversation} from "@/api/shop/shopChatConversation"; import FixedButton from "@/components/FixedButton"; const Index = () => { const [list, setList] = useState([]) const [loading, setLoading] = useState(false) const [page, setPage] = useState(1) const [hasMore, setHasMore] = useState(true) // 获取消息数据 const fetchMessageData = useCallback(async (resetPage = false, targetPage?: number, searchKeyword?: string) => { setLoading(true); try { const currentPage = resetPage ? 1 : (targetPage || page); // 构建API参数,根据状态筛选 const params: any = { page: currentPage }; // 添加搜索关键词 if (searchKeyword && searchKeyword.trim()) { params.keywords = searchKeyword.trim(); } const res = await pageShopChatConversation(params); if (res?.list && res.list.length > 0) { // 正确映射状态 const mappedList = res.list.map(customer => ({ ...customer })); // 如果是重置页面或第一页,直接设置新数据;否则追加数据 if (resetPage || currentPage === 1) { setList(mappedList); } else { setList(prevList => prevList.concat(mappedList)); } // 正确判断是否还有更多数据 const hasMoreData = res.list.length >= 10; // 假设每页10条数据 setHasMore(hasMoreData); } else { if (resetPage || currentPage === 1) { setList([]); } setHasMore(false); } setPage(currentPage); } catch (error) { console.error('获取消息数据失败:', error); Taro.showToast({ title: '加载失败,请重试', icon: 'none' }); } finally { setLoading(false); } }, [page]); const reloadMore = async () => { if (loading || !hasMore) return; // 防止重复加载 const nextPage = page + 1; await fetchMessageData(false, nextPage); } // 获取列表数据(现在使用服务端搜索,不需要消息端过滤) const getFilteredList = () => { return list; }; useEffect(() => { // 初始化时加载数据 fetchMessageData(true, 1, ''); }, []); // 渲染消息项 const renderMessageItem = (customer: any) => ( 关于XXXX的通知 未读 {/*已读*/} {/*统一代码:{customer.dealerCode}*/} 创建时间:{customer.createTime} ); // 渲染消息列表 const renderMessageList = () => { const filteredList = getFilteredList(); return ( { // 滚动事件处理 }} onScrollToUpper={() => { // 滚动到顶部事件处理 }} loadingText={ <> 加载中... } loadMoreText={ filteredList.length === 0 ? ( ) : ( 没有更多了 ) } > {loading && filteredList.length === 0 ? ( 加载中... ) : ( filteredList.map(renderMessageItem) )} ); }; return ( {/* 消息列表 */} {renderMessageList()} ); }; export default Index;