diff --git a/pages/goods-detail/goods-detail.js b/pages/goods-detail/goods-detail.js index 797e7de..a800071 100644 --- a/pages/goods-detail/goods-detail.js +++ b/pages/goods-detail/goods-detail.js @@ -2083,18 +2083,86 @@ Page({ loadHomeGoods: function () { this.setData({ loadingHome: true }); + // 获取当前商品的规格信息 + const currentGoods = this.data.goodsDetail; + const currentSpecifications = currentGoods.weightQuantityData || []; + // 提取当前商品的净重规格(如"净重41-42") + const currentWeightSpecs = currentSpecifications.map(item => item.weightSpec.trim()) + .filter(spec => spec && (spec.includes('净重') || spec.includes('毛重'))); + // 调用API获取首页商品列表 API.getProducts() .then(res => { console.log('获取首页商品数据成功:', res); // API.getProducts()直接返回商品数组,而不是包含data字段的对象 if (Array.isArray(res)) { - // 为每个商品添加mediaItems字段 + // 为每个商品添加mediaItems字段和weightQuantityData字段,并过滤出与当前商品规格匹配的商品 const processedGoods = res.map(goods => { + // 处理每个首页商品的规格数据 + let weightSpecString = ''; + let quantityString = ''; + + // 检查规格字段是否包含净重信息 + if (goods.spec && typeof goods.spec === 'string' && (goods.spec.includes('净重') || goods.spec.includes('毛重'))) { + weightSpecString = goods.spec; + } else if (goods.specification && typeof goods.specification === 'string' && (goods.specification.includes('净重') || goods.specification.includes('毛重'))) { + weightSpecString = goods.specification; + } else if (goods.grossWeight) { + weightSpecString = String(goods.grossWeight); + } + + // 处理件数数据 + if (goods.minOrder) { + quantityString = String(goods.minOrder); + } else if (goods.quantity) { + quantityString = String(goods.quantity); + } + + // 调用processWeightAndQuantityData处理规格数据 + const weightQuantityData = processWeightAndQuantityData(weightSpecString, quantityString, ''); + + // 提取省份信息 + const province = extractProvince(goods.region || ''); + return { ...goods, - mediaItems: processMediaUrls(goods.imageUrls) + mediaItems: processMediaUrls(goods.imageUrls), + weightQuantityData: weightQuantityData, + province: province // 添加省份字段 }; + }).filter(goods => { + // 只有当当前商品有明确的规格时才进行筛选 + if (currentWeightSpecs.length === 0) { + return true; + } + + // 获取该商品的规格信息 + const goodsSpecifications = goods.weightQuantityData || []; + // 提取该商品的净重规格 + const goodsWeightSpecs = goodsSpecifications.map(item => item.weightSpec.trim()) + .filter(spec => spec && (spec.includes('净重') || spec.includes('毛重'))); + + // 辅助函数:获取规格的匹配版本(处理44净重=49毛重的转换规则) + function getMatchingSpecs(spec) { + const specs = [spec]; + + // 添加转换规则:44净重=49毛重 + if (spec === '44净重') { + specs.push('49毛重'); + } else if (spec === '49毛重') { + specs.push('44净重'); + } + + return specs; + } + + // 检查是否有匹配的规格(考虑转换规则) + return goodsWeightSpecs.some(goodsSpec => + currentWeightSpecs.some(currentSpec => { + const matchingSpecs = getMatchingSpecs(currentSpec); + return matchingSpecs.includes(goodsSpec); + }) + ); }); this.setData({ @@ -2232,13 +2300,19 @@ Page({ // 等待所有商品详情获取完成 Promise.all(productPromises) .then(products => { - // 过滤掉获取失败的商品,并为每个商品添加mediaItems字段 + // 过滤掉获取失败的商品,并为每个商品添加mediaItems字段和省份信息 const validProducts = products .filter(product => product !== null) - .map(product => ({ - ...product, - mediaItems: processMediaUrls(product.imageUrls) - })); + .map(product => { + // 提取省份信息 + const province = extractProvince(product.region || ''); + + return { + ...product, + mediaItems: processMediaUrls(product.imageUrls), + province: province // 添加省份字段 + }; + }); console.log('所有商品详情获取完成,有效商品数量:', validProducts.length); this.setData({ @@ -2254,11 +2328,17 @@ Page({ }); }); } else { - // 收藏列表已经包含完整商品信息,为每个商品添加mediaItems字段 - const processedFavorites = favoritesList.map(product => ({ - ...product, - mediaItems: processMediaUrls(product.imageUrls) - })); + // 收藏列表已经包含完整商品信息,为每个商品添加mediaItems字段和省份信息 + const processedFavorites = favoritesList.map(product => { + // 提取省份信息 + const province = extractProvince(product.region || ''); + + return { + ...product, + mediaItems: processMediaUrls(product.imageUrls), + province: province // 添加省份字段 + }; + }); this.setData({ favoriteGoods: processedFavorites, diff --git a/pages/goods-detail/goods-detail.wxml b/pages/goods-detail/goods-detail.wxml index cb723a9..ff652c4 100644 --- a/pages/goods-detail/goods-detail.wxml +++ b/pages/goods-detail/goods-detail.wxml @@ -201,7 +201,7 @@ bindtap="switchTab" data-tab="home" > - 首页数据 + 首页相同规格数据 {{item.specification || item.spec || item.specs || '暂无规格'}} {{item.quantity || '暂无件数'}}件 价格: {{item.price}} - {{item.region || '暂无地区'}} + {{item.province || item.region || '暂无地区'}} @@ -286,7 +286,7 @@ {{item.specification || item.spec || item.specs || '暂无规格'}} {{item.quantity || '暂无件数'}}件 价格: {{item.price}} - {{item.region || '暂无地区'}} + {{item.province || item.region || '暂无地区'}}