From d26f7dc4d6919efd991dae90853c6169163f127d 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, 10 Jan 2026 11:37:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=95=86=E5=93=81=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=80=BB=E8=BE=91=EF=BC=9Aprice=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E7=9A=84=E5=95=86=E5=93=81=E4=B8=8D=E5=9C=A8=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/index/index.js | 104 ++++++++++++++++++++++++++----------------- utils/api.js | 4 +- 2 files changed, 67 insertions(+), 41 deletions(-) diff --git a/pages/index/index.js b/pages/index/index.js index 387845d..28e12a4 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -678,39 +678,47 @@ Page({ const formattedSpec = this.formatSpecification(product.specification || product.spec || '', product.yolk || ''); return { - ...product, - id: productId, // 统一使用id字段 - productId: productId, // 同时保留productId字段 - category: product.category || '', - fullRegion: product.region || '', - region: product.region ? this.extractProvince(product.region) : '', - grossWeight: product.grossWeight || product.weight || '', - displayGrossWeight: product.grossWeight || product.weight || '', - status: product.status, - 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, - // 添加预处理后的媒体数据,包含类型信息 - mediaItems: mediaItems, - totalStock: displayStock, // 使用优化后的库存显示值 - originalTotalStock: totalStock, // 保留原始计算值用于调试 - displaySpecification: formattedSpec.displaySpec, // 格式化后的规格 - displayYolk: formattedSpec.displayYolk // 格式化后的蛋黄 - } + ...product, + id: productId, // 统一使用id字段 + productId: productId, // 同时保留productId字段 + category: product.category || '', + fullRegion: product.region || '', + region: product.region ? this.extractProvince(product.region) : '', + grossWeight: product.grossWeight || product.weight || '', + displayGrossWeight: product.grossWeight || product.weight || '', + status: product.status, + 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, + // 添加预处理后的媒体数据,包含类型信息 + mediaItems: mediaItems, + totalStock: displayStock, // 使用优化后的库存显示值 + originalTotalStock: totalStock, // 保留原始计算值用于调试 + displaySpecification: formattedSpec.displaySpec, // 格式化后的规格 + displayYolk: formattedSpec.displayYolk, // 格式化后的蛋黄 + price: product.price !== undefined ? product.price : '' // 确保price字段存在 + } }) - // 过滤隐藏状态的商品 - newGoods = newGoods.filter(item => (item.status || '').toLowerCase() !== 'hidden') + // 过滤隐藏状态的商品,并确保商品对象有效 + newGoods = newGoods.filter(item => { + // 过滤隐藏状态的商品 + if ((item.status || '').toLowerCase() === 'hidden') { + return false; + } + // 确保商品对象有必要的字段 + return item && item.id && item.name; + }); // 先对新商品进行内部查重 const uniqueNewGoodsMap = new Map(); @@ -877,11 +885,20 @@ Page({ totalStock: displayStock, // 使用优化后的库存显示值 originalTotalStock: totalStock, // 保留原始计算值用于调试 displaySpecification: formattedSpec.displaySpec, // 格式化后的规格 - displayYolk: formattedSpec.displayYolk // 格式化后的蛋黄 + displayYolk: formattedSpec.displayYolk, // 格式化后的蛋黄 + price: product.price !== undefined ? product.price : '' // 确保price字段存在 } }) - newGoods = newGoods.filter(item => (item.status || '').toLowerCase() !== 'hidden') + // 过滤隐藏状态的商品,并确保商品对象有效 + newGoods = newGoods.filter(item => { + // 过滤隐藏状态的商品 + if ((item.status || '').toLowerCase() === 'hidden') { + return false; + } + // 确保商品对象有必要的字段 + return item && item.id && item.name; + }); // 对新商品进行内部查重 const newGoodsMap = new Map(); @@ -1272,7 +1289,8 @@ Page({ currentImageIndex: 0, imageUrls: formattedImageUrls, totalStock: displayStock, // 使用优化后的库存显示值 - originalTotalStock: totalStock // 保留原始计算值用于调试 + originalTotalStock: totalStock, // 保留原始计算值用于调试 + price: product.price !== undefined ? product.price : '' // 确保price字段存在 }; goodsMap.set(productId, processedProduct); @@ -1282,15 +1300,21 @@ Page({ // 转换为数组 const processedGoods = Array.from(goodsMap.values()); + // 确保商品对象有效 + const validGoods = processedGoods.filter(item => { + // 确保商品对象有必要的字段 + return item && item.id && item.name; + }); + // 更新收藏状态 - this.updateGoodsFavoriteStatus(processedGoods, false); + this.updateGoodsFavoriteStatus(validGoods, false); // 应用筛选条件 - const filteredGoods = this.applyFilters(processedGoods, true); + const filteredGoods = this.applyFilters(validGoods, true); const groupedGoods = this.groupGoodsForStaggeredLayout(filteredGoods); this.setData({ - goods: processedGoods, + goods: validGoods, filteredGoods: filteredGoods, groupedGoods: groupedGoods, loadingMore: false, @@ -1352,14 +1376,14 @@ Page({ console.log('applyFilters - 开始过滤,原始商品数量:', goods.length, '关键词:', this.data.searchKeyword); - // 移除所有不必要的过滤条件,确保所有published和sold_out状态的商品都能显示 + // 过滤商品:广告位不受影响,只显示有价格的商品 filtered = filtered.filter(item => { // 广告位不受影响 if (item.isAd) { return true; } - // 所有published和sold_out状态的商品都保留 - return true; + // 只显示有价格的商品 + return item.price && item.price !== ''; }); if (this.data.selectedCategory !== '全部') { diff --git a/utils/api.js b/utils/api.js index f935288..6d1ca67 100644 --- a/utils/api.js +++ b/utils/api.js @@ -1566,7 +1566,9 @@ module.exports = { // 确保selected字段存在 selected: selectedCount, // 确保displayGrossWeight字段存在(如果前端需要) - displayGrossWeight: product.grossWeight ? `${product.grossWeight}` : '0' + displayGrossWeight: product.grossWeight ? `${product.grossWeight}` : '0', + // 确保price字段存在 + price: product.price !== undefined ? product.price : '' }; });