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 || '暂无地区'}}