From 25ee02ab0adfc1dbbf16f2291becfb9054b8c02b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E9=A3=9E=E6=B4=8B?= <15778543+xufeiyang6017@user.noreply.gitee.com> Date: Sat, 27 Dec 2025 17:09:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=9D=E6=8C=81=E5=95=86=E5=93=81?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=E4=B8=8D=E5=8F=98=EF=BC=8C=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=92=8C=E7=AD=9B=E9=80=89=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E9=87=8D=E6=96=B0=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/index/index.js | 65 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 6 deletions(-) diff --git a/pages/index/index.js b/pages/index/index.js index 06d4a7a..75bf6f7 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -266,7 +266,7 @@ Page({ goods: updatedGoods }, () => { // 重新应用筛选条件,确保显示的商品收藏状态也更新 - const filteredGoods = this.applyFilters(this.data.goods); + const filteredGoods = this.applyFilters(this.data.goods, false); const { leftColumnGoods, rightColumnGoods } = this.distributeToColumns(filteredGoods); this.setData({ filteredGoods: filteredGoods, @@ -326,11 +326,13 @@ Page({ return } + const existingGoods = [...this.data.goods] + this.setData({ isRefreshing: true, page: 1, hasMoreData: true, - goods: [], + goods: existingGoods, filteredGoods: [], leftColumnGoods: [], rightColumnGoods: [] @@ -350,7 +352,7 @@ Page({ this.setData({ isRefreshing: false }) if (res.success && res.products) { - this.processGoodsData(res.products, false) + this.processRefreshData(res.products, existingGoods) wx.showToast({ title: '刷新成功', icon: 'success', @@ -503,6 +505,57 @@ Page({ }) }, + // 处理刷新数据 - 查重并保持原有商品 + processRefreshData: function(newProducts, existingGoods) { + let newGoods = newProducts.map(product => { + const imageUrls = product.imageUrls || product.images || []; + const formattedImageUrls = Array.isArray(imageUrls) ? imageUrls : [imageUrls]; + + return { + ...product, + fullRegion: product.region || '', + region: product.region ? this.extractProvince(product.region) : '', + grossWeight: product.grossWeight || product.weight || '', + displayGrossWeight: product.grossWeight || product.weight || '', + status: product.status || 'published', + createdAt: product.created_at || product.createTime || null, + reservedCount: product.reservedCount || product.selected || 0, + reservedCountDisplay: product.reservedCount || product.selected || 0, + sales: product.sales || product.reservedCount || Math.floor(Math.random() * 1000) + 100, + product_contact: product.product_contact || '', + contact_phone: product.contact_phone || '', + supplyStatus: product.supplyStatus || '', + sourceType: product.sourceType || '', + negotiateStatus: '可议价', + isReserved: false, + isFavorite: false, + currentImageIndex: 0, + imageUrls: formattedImageUrls + } + }) + + newGoods = newGoods.filter(item => (item.status || '').toLowerCase() !== 'hidden') + + const existingIds = new Set(existingGoods.filter(item => !item.isAd).map(item => item.id)); + const uniqueNewGoods = newGoods.filter(item => !existingIds.has(item.id)); + + const updatedGoods = [...existingGoods, ...uniqueNewGoods] + + const filteredGoods = this.applyFilters(updatedGoods, false) + + const { leftColumnGoods, rightColumnGoods } = this.distributeToColumns(filteredGoods) + + this.setData({ + goods: updatedGoods, + filteredGoods: filteredGoods, + leftColumnGoods: leftColumnGoods, + rightColumnGoods: rightColumnGoods, + loadingMore: false, + isLoading: false, + page: this.data.page + 1 + }) + }, + // 插入广告位数据 insertAdSlots: function(goods) { if (!goods || goods.length === 0) return goods @@ -770,7 +823,7 @@ Page({ app.globalData.showTabBar = true; } - const filteredGoods = this.applyFilters(this.data.goods) + const filteredGoods = this.applyFilters(this.data.goods, false) const groupedGoods = this.groupGoodsForStaggeredLayout(filteredGoods) const { leftColumnGoods, rightColumnGoods } = this.distributeToColumns(filteredGoods) this.setData({ @@ -809,7 +862,7 @@ Page({ this.refreshGoodsList(); } else { // 否则仅对本地商品进行筛选 - const filteredGoods = this.applyFilters(this.data.goods) + const filteredGoods = this.applyFilters(this.data.goods, false) const groupedGoods = this.groupGoodsForStaggeredLayout(filteredGoods) const { leftColumnGoods, rightColumnGoods } = this.distributeToColumns(filteredGoods) this.setData({ @@ -1063,7 +1116,7 @@ Page({ goods: updatedGoodsList }, () => { // 重新应用筛选条件,确保显示的商品收藏状态也更新 - const filteredGoods = this.applyFilters(this.data.goods); + const filteredGoods = this.applyFilters(this.data.goods, false); const { leftColumnGoods, rightColumnGoods } = this.distributeToColumns(filteredGoods); this.setData({ filteredGoods: filteredGoods,