diff --git a/supply.html b/supply.html index 858d0fd..4d45683 100644 --- a/supply.html +++ b/supply.html @@ -165,7 +165,8 @@ } .supply-list.expanded { - max-height: 2000px; + max-height: none; + overflow: visible; } .supply-item { @@ -1588,7 +1589,21 @@ draftSupplies: [], searchKeyword: '', partnerstatus: 'approved', - uploadedImages: [] + uploadedImages: [], + // 分页相关属性 + pagination: { + published: { currentPage: 1, pageSize: 20, total: 0, hasMore: true, isLoading: false }, + pending: { currentPage: 1, pageSize: 20, total: 0, hasMore: true, isLoading: false }, + rejected: { currentPage: 1, pageSize: 20, total: 0, hasMore: true, isLoading: false }, + draft: { currentPage: 1, pageSize: 20, total: 0, hasMore: true, isLoading: false } + }, + // 分状态存储分页数据 + paginatedSupplies: { + published: [], + pending: [], + rejected: [], + draft: [] + } }; // 编辑相关全局变量 @@ -2957,18 +2972,31 @@ const userInfo = checkLogin(); if (!userInfo) return; - // 构建查询参数,添加sellerId,并设置较大的pageSize,确保获取所有记录 - // 设置page=1,pageSize=100,确保获取所有记录 + // 重置所有状态的分页数据 + supplyData.pagination = { + published: { currentPage: 1, pageSize: 20, total: 0, hasMore: true, isLoading: false }, + pending: { currentPage: 1, pageSize: 20, total: 0, hasMore: true, isLoading: false }, + rejected: { currentPage: 1, pageSize: 20, total: 0, hasMore: true, isLoading: false }, + draft: { currentPage: 1, pageSize: 20, total: 0, hasMore: true, isLoading: false } + }; + + // 清空所有状态的分页数据 + supplyData.paginatedSupplies = { + published: [], + pending: [], + rejected: [], + draft: [] + }; + + // 构建查询参数,获取所有数据 const queryParams = new URLSearchParams({ sellerId: userInfo.userId, page: 1, - pageSize: 100 // 设置较大的pageSize,确保获取所有记录 + pageSize: 1000 // 设置较大的pageSize,确保获取所有记录 }); const apiUrl = `/api/supplies?${queryParams}`; - console.log('当前登录用户信息:', userInfo); console.log('加载货源列表API请求:', apiUrl); - console.log('使用的sellerId:', userInfo.userId); const response = await fetch(apiUrl); const result = await response.json(); @@ -3057,7 +3085,16 @@ return; } + // 只在首次渲染或没有分页数据时初始化分页数据 + if (!supplyData.paginatedSupplies[type] || supplyData.paginatedSupplies[type].length === 0) { + updatePaginatedSupplies(type, supplies); + } + + const pagination = supplyData.pagination[type]; + const paginatedSupplies = supplyData.paginatedSupplies[type] || []; + let html = ''; + // 显示所有货源,不分页 supplies.forEach(supply => { html += generateSupplyItemHTML(supply); }); @@ -3065,6 +3102,70 @@ listElement.innerHTML = html; } + // 加载更多货源 + function loadMoreSupplies(type) { + const pagination = supplyData.pagination[type]; + const allSupplies = getSuppliesByType(type); + + if (pagination.isLoading || !pagination.hasMore) { + return; + } + + pagination.isLoading = true; + + // 更新加载状态文本 + const loadMoreText = document.getElementById(`loadMoreText_${type}`); + if (loadMoreText) { + loadMoreText.textContent = '加载中...'; + } + + // 模拟加载延迟 + setTimeout(() => { + // 计算下一页数据 + const nextPage = pagination.currentPage + 1; + const startIndex = pagination.pageSize * pagination.currentPage; + const endIndex = startIndex + pagination.pageSize; + const newSupplies = allSupplies.slice(startIndex, endIndex); + + // 更新分页数据 + supplyData.paginatedSupplies[type] = [...supplyData.paginatedSupplies[type], ...newSupplies]; + pagination.currentPage = nextPage; + pagination.hasMore = endIndex < allSupplies.length; + + // 重新渲染列表 + renderSupplyList(type, allSupplies); + + // 重置加载状态 + pagination.isLoading = false; + }, 500); + } + + // 根据类型获取完整的货源列表 + function getSuppliesByType(type) { + switch(type) { + case 'published': return supplyData.publishedSupplies; + case 'pending': return supplyData.pendingSupplies; + case 'rejected': return supplyData.rejectedSupplies; + case 'draft': return supplyData.draftSupplies; + default: return []; + } + } + + // 更新分页数据 + function updatePaginatedSupplies(status, supplies) { + const pagination = supplyData.pagination[status]; + + // 重置分页状态 + pagination.currentPage = 1; + pagination.total = supplies.length; + pagination.hasMore = supplies.length > pagination.pageSize; + + // 初始只显示第一页数据 + supplyData.paginatedSupplies[status] = supplies.slice(0, pagination.pageSize); + + console.log(`更新分页数据 - ${status}: 总数=${pagination.total}, 每页=${pagination.pageSize}, 有更多=${pagination.hasMore}`); + } + // 获取列表标题 function getSectionTitle(type) { switch(type) {