From aaf66864a592b0c20812b08afa992a8e83a8f77f 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: Fri, 9 Jan 2026 17:18:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=95=86=E5=93=81=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=A1=B5=E4=BB=B7=E6=A0=BC=E6=98=BE=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E5=8C=85=E6=8B=AC=E5=AF=B9=E6=AF=94=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC=E5=92=8C=E4=B8=BB=E4=BB=B7=E6=A0=BC=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/goods-detail/goods-detail.js | 103 +++++++++++++++++++++------ pages/goods-detail/goods-detail.wxml | 2 +- 2 files changed, 84 insertions(+), 21 deletions(-) diff --git a/pages/goods-detail/goods-detail.js b/pages/goods-detail/goods-detail.js index 4884515..c193bbe 100644 --- a/pages/goods-detail/goods-detail.js +++ b/pages/goods-detail/goods-detail.js @@ -917,6 +917,10 @@ Page({ const formattedGoods = { // 优先设置售空状态标记,放在最前面确保不被覆盖 _isSoldOut: isSoldOut, + // 复制原始产品对象中的所有字段,确保不丢失任何数据 + ...product, + // 合并预加载数据中的字段 + ...(preloadedData || {}), // 其他字段 id: productIdStr, productId: productIdStr, @@ -935,17 +939,13 @@ Page({ supplyStatus: supplyStatusValue, sourceType: product.sourceType || '', sourceTypeColor: getSourceTypeColor(product.sourceType), - // 复制原始产品对象中的所有字段,确保不丢失任何数据 - ...product, - // 合并预加载数据中的字段 - ...(preloadedData || {}), - // 添加产品包装字段(放在product之后,确保不被覆盖) + // 添加产品包装字段 // 修复:使用正确的数据库字段名producting producting: product.producting || '', - // 直接使用数据库字段名,确保与表结构完全一致,放在后面覆盖前面的值 + // 直接使用数据库字段名,确保与表结构完全一致 product_contact: contactName, contact_phone: contactPhone, - // 确保reservedCount字段使用我们计算得到的值,放在最后以覆盖其他来源的值 + // 确保reservedCount字段使用我们计算得到的值 reservedCount: finalReservationCount, // 添加净重和件数的一一对应数据 weightQuantityData: weightQuantityData, @@ -2170,6 +2170,7 @@ Page({ return { ...goods, + price: priceString, // 确保price字段是字符串类型 mediaItems: processMediaUrls(goods.imageUrls), weightQuantityData: weightQuantityData, province: province // 添加省份字段 @@ -2345,18 +2346,49 @@ Page({ Promise.all(productPromises) .then(products => { // 过滤掉获取失败的商品,并为每个商品添加mediaItems字段和省份信息 - const validProducts = products - .filter(product => product !== null) - .map(product => { - // 提取省份信息 - const province = extractProvince(product.region || ''); - - return { - ...product, - mediaItems: processMediaUrls(product.imageUrls), - province: province // 添加省份字段 - }; - }); + const validProducts = products + .filter(product => product !== null) + .map(product => { + // 提取省份信息 + const province = extractProvince(product.region || ''); + + // 处理重量、数量和价格数据 + let weightSpecString = ''; + let quantityString = ''; + let priceString = ''; + + // 提取重量规格 + if (product.spec && typeof product.spec === 'string' && (product.spec.includes('净重') || product.spec.includes('毛重'))) { + weightSpecString = product.spec; + } else if (product.specification && typeof product.specification === 'string' && (product.specification.includes('净重') || product.specification.includes('毛重'))) { + weightSpecString = product.specification; + } else if (product.grossWeight) { + weightSpecString = String(product.grossWeight); + } + + // 提取数量 + if (product.minOrder) { + quantityString = String(product.minOrder); + } else if (product.quantity) { + quantityString = String(product.quantity); + } + + // 提取价格 + if (product.price) { + priceString = String(product.price); + } + + // 处理数据 + const weightQuantityData = processWeightAndQuantityData(weightSpecString, quantityString, '', priceString); + + return { + ...product, + price: priceString, // 确保price字段是字符串类型 + mediaItems: processMediaUrls(product.imageUrls), + province: province, // 添加省份字段 + weightQuantityData: weightQuantityData // 添加价格处理数据 + }; + }); console.log('所有商品详情获取完成,有效商品数量:', validProducts.length); this.setData({ @@ -2377,10 +2409,41 @@ Page({ // 提取省份信息 const province = extractProvince(product.region || ''); + // 处理重量、数量和价格数据 + let weightSpecString = ''; + let quantityString = ''; + let priceString = ''; + + // 提取重量规格 + if (product.spec && typeof product.spec === 'string' && (product.spec.includes('净重') || product.spec.includes('毛重'))) { + weightSpecString = product.spec; + } else if (product.specification && typeof product.specification === 'string' && (product.specification.includes('净重') || product.specification.includes('毛重'))) { + weightSpecString = product.specification; + } else if (product.grossWeight) { + weightSpecString = String(product.grossWeight); + } + + // 提取数量 + if (product.minOrder) { + quantityString = String(product.minOrder); + } else if (product.quantity) { + quantityString = String(product.quantity); + } + + // 提取价格 + if (product.price) { + priceString = String(product.price); + } + + // 处理数据 + const weightQuantityData = processWeightAndQuantityData(weightSpecString, quantityString, '', priceString); + return { ...product, + price: priceString, // 确保price字段是字符串类型 mediaItems: processMediaUrls(product.imageUrls), - province: province // 添加省份字段 + province: province, // 添加省份字段 + weightQuantityData: weightQuantityData // 添加价格处理数据 }; }); diff --git a/pages/goods-detail/goods-detail.wxml b/pages/goods-detail/goods-detail.wxml index 7b7b4e3..81cf119 100644 --- a/pages/goods-detail/goods-detail.wxml +++ b/pages/goods-detail/goods-detail.wxml @@ -250,7 +250,7 @@ {{item.name}} {{item.specification || item.spec || item.specs || '暂无规格'}} {{item.quantity || '暂无件数'}}件 - 价格: {{item.price.split(',')[0]}} + 价格: {{item.price}} {{item.province || item.region || '暂无地区'}}