|
|
|
@ -183,14 +183,9 @@ Page({ |
|
|
|
// 确保商品ID的一致性
|
|
|
|
const productIdStr = String(product.productId || product.id); |
|
|
|
|
|
|
|
// 增强的预约人数计算逻辑
|
|
|
|
const selectedValue = product.selected; |
|
|
|
const reservedCountValue = product.reservedCount; |
|
|
|
const reservationCountValue = product.reservationCount; |
|
|
|
|
|
|
|
const finalReservationCount = selectedValue !== undefined && selectedValue !== null ? selectedValue : |
|
|
|
(reservedCountValue !== undefined && reservedCountValue !== null ? reservedCountValue : |
|
|
|
(reservationCountValue || 0)); |
|
|
|
// 关键修改:直接使用API返回的reservedCount值,这个值已经是从favorites表中统计的收藏数量
|
|
|
|
// 不再使用selected或reservationCount字段计算,确保收藏人数显示正确
|
|
|
|
const finalReservationCount = product.reservedCount || 0; |
|
|
|
|
|
|
|
// 处理grossWeight为null或无效的情况,返回空字符串以支持文字输入
|
|
|
|
const grossWeightValue = product.grossWeight !== null && product.grossWeight !== undefined ? product.grossWeight : ''; |
|
|
|
@ -237,35 +232,36 @@ Page({ |
|
|
|
if (!region) region = '地区未知'; |
|
|
|
|
|
|
|
// 转换商品数据格式
|
|
|
|
const formattedGoods = { |
|
|
|
id: productIdStr, |
|
|
|
productId: productIdStr, |
|
|
|
// 直接使用数据库字段名
|
|
|
|
name: product.productName || product.name || '商品名称', |
|
|
|
price: product.price, |
|
|
|
minOrder: product.minOrder || product.quantity, |
|
|
|
yolk: product.yolk, |
|
|
|
spec: product.spec || product.specification || '暂无规格', |
|
|
|
region: region, |
|
|
|
// 直接使用数据库字段名,确保与表结构完全一致
|
|
|
|
product_contact: contactName, |
|
|
|
contact_phone: contactPhone, |
|
|
|
// 保留原始字段引用,确保数据完整性
|
|
|
|
imageUrls: product.imageUrls || product.images || [], |
|
|
|
displayGrossWeight: formatGrossWeight(grossWeightValue, product.weight), |
|
|
|
isReserved: reservedGoodsIds.some(itemId => String(itemId) === productIdStr), |
|
|
|
reservedCount: finalReservationCount, |
|
|
|
created_at: product.created_at || product.createdAt, |
|
|
|
updated_at: product.updated_at || product.updatedAt, |
|
|
|
status: product.status, |
|
|
|
supplyStatus: supplyStatusValue, |
|
|
|
sourceType: product.sourceType || '', |
|
|
|
sourceTypeColor: getSourceTypeColor(product.sourceType), |
|
|
|
// 复制原始产品对象中的所有字段,确保不丢失任何数据
|
|
|
|
...product, |
|
|
|
// 合并预加载数据中的字段,优先使用预加载数据中的联系人信息
|
|
|
|
...(preloadedData || {}) |
|
|
|
}; |
|
|
|
const formattedGoods = { |
|
|
|
id: productIdStr, |
|
|
|
productId: productIdStr, |
|
|
|
// 直接使用数据库字段名
|
|
|
|
name: product.productName || product.name || '商品名称', |
|
|
|
price: product.price, |
|
|
|
minOrder: product.minOrder || product.quantity, |
|
|
|
yolk: product.yolk, |
|
|
|
spec: product.spec || product.specification || '暂无规格', |
|
|
|
region: region, |
|
|
|
// 直接使用数据库字段名,确保与表结构完全一致
|
|
|
|
product_contact: contactName, |
|
|
|
contact_phone: contactPhone, |
|
|
|
// 保留原始字段引用,确保数据完整性
|
|
|
|
imageUrls: product.imageUrls || product.images || [], |
|
|
|
displayGrossWeight: formatGrossWeight(grossWeightValue, product.weight), |
|
|
|
isReserved: reservedGoodsIds.some(itemId => String(itemId) === productIdStr), |
|
|
|
created_at: product.created_at || product.createdAt, |
|
|
|
updated_at: product.updated_at || product.updatedAt, |
|
|
|
status: product.status, |
|
|
|
supplyStatus: supplyStatusValue, |
|
|
|
sourceType: product.sourceType || '', |
|
|
|
sourceTypeColor: getSourceTypeColor(product.sourceType), |
|
|
|
// 复制原始产品对象中的所有字段,确保不丢失任何数据
|
|
|
|
...product, |
|
|
|
// 合并预加载数据中的字段,优先使用预加载数据中的联系人信息
|
|
|
|
...(preloadedData || {}), |
|
|
|
// 确保reservedCount字段使用我们计算得到的值,放在最后以覆盖其他来源的值
|
|
|
|
reservedCount: finalReservationCount |
|
|
|
}; |
|
|
|
|
|
|
|
console.log('最终格式化后的数据:', { |
|
|
|
product_contact: formattedGoods.product_contact, |
|
|
|
|