|
|
|
@ -569,6 +569,47 @@ Page({ |
|
|
|
const finalRegion = preloadedData?.region || product.region || product.area || product.location || '暂无'; |
|
|
|
console.log('finalRegion:', finalRegion); |
|
|
|
|
|
|
|
// 详细调试商品状态
|
|
|
|
console.log('=== 商品状态详细调试 ==='); |
|
|
|
console.log('API返回的完整product对象:', JSON.stringify(product, null, 2)); |
|
|
|
console.log('API返回的product.status:', product.status); |
|
|
|
console.log('商品label字段:', product.label); |
|
|
|
console.log('商品label类型:', typeof product.label); |
|
|
|
console.log('商品是否包含status字段:', 'status' in product); |
|
|
|
console.log('商品是否包含label字段:', 'label' in product); |
|
|
|
|
|
|
|
// 检查预加载数据中的状态信息
|
|
|
|
console.log('=== 预加载数据状态检查 ==='); |
|
|
|
console.log('预加载数据中的status:', preloadedData?.status); |
|
|
|
console.log('预加载数据中的label:', preloadedData?.label); |
|
|
|
|
|
|
|
// 定义已下架状态列表
|
|
|
|
const soldOutStatuses = ['sold_out', 'unpublished', 'hidden']; |
|
|
|
|
|
|
|
// 检查商品是否已下架
|
|
|
|
// 1. 首先检查预加载数据中的状态
|
|
|
|
const preloadedIsSoldOut = |
|
|
|
(preloadedData?.label === 1 || preloadedData?.label === '1' || preloadedData?.label === true) || |
|
|
|
(preloadedData?.status && soldOutStatuses.includes(preloadedData?.status.toLowerCase())); |
|
|
|
|
|
|
|
// 2. 然后检查API返回的数据中的状态
|
|
|
|
const apiIsSoldOut = |
|
|
|
(product.label === 1 || product.label === '1' || product.label === true) || |
|
|
|
(product.status && soldOutStatuses.includes(product.status.toLowerCase())); |
|
|
|
|
|
|
|
// 3. 综合判断,只要有一个为true就表示已下架
|
|
|
|
const isSoldOut = preloadedIsSoldOut || apiIsSoldOut; |
|
|
|
|
|
|
|
// 根据是否已下架设置最终状态
|
|
|
|
let finalStatus = isSoldOut ? 'sold_out' : 'published'; |
|
|
|
|
|
|
|
// 详细记录状态判断信息
|
|
|
|
console.log('=== 状态判断结果 ==='); |
|
|
|
console.log('预加载数据判断是否已下架:', preloadedIsSoldOut); |
|
|
|
console.log('API数据判断是否已下架:', apiIsSoldOut); |
|
|
|
console.log('最终是否已下架:', isSoldOut); |
|
|
|
console.log('最终状态:', finalStatus); |
|
|
|
|
|
|
|
// 转换商品数据格式
|
|
|
|
const formattedGoods = { |
|
|
|
id: productIdStr, |
|
|
|
@ -587,7 +628,8 @@ Page({ |
|
|
|
displayGrossWeight: formatGrossWeight(grossWeightValue, product.weight), |
|
|
|
created_at: product.created_at || product.createdAt, |
|
|
|
updated_at: product.updated_at || product.updatedAt, |
|
|
|
status: product.status, |
|
|
|
status: finalStatus, // 使用处理后的状态
|
|
|
|
label: product.label, // 保留原始label字段
|
|
|
|
supplyStatus: supplyStatusValue, |
|
|
|
sourceType: product.sourceType || '', |
|
|
|
sourceTypeColor: getSourceTypeColor(product.sourceType), |
|
|
|
@ -601,7 +643,9 @@ Page({ |
|
|
|
region: finalRegion, |
|
|
|
// 复制原始产品对象中的所有字段,确保不丢失任何数据
|
|
|
|
...product, |
|
|
|
// 重新设置创建者信息和创建时间,防止被product数据覆盖
|
|
|
|
// 重新设置关键字段,防止被product数据覆盖
|
|
|
|
status: finalStatus, // 确保状态字段使用我们处理后的值
|
|
|
|
label: product.label, |
|
|
|
creatorName: creatorName, |
|
|
|
formattedCreatedAt: formattedCreatedAt, |
|
|
|
created_at: createdAt, |
|
|
|
@ -620,14 +664,35 @@ Page({ |
|
|
|
freshness: product.freshness || '' |
|
|
|
}; |
|
|
|
|
|
|
|
console.log('最终formattedGoods.status:', formattedGoods.status); |
|
|
|
console.log('最终formattedGoods.label:', formattedGoods.label); |
|
|
|
|
|
|
|
console.log('最终formattedGoods.region:', formattedGoods.region); |
|
|
|
|
|
|
|
// 调试输出完整的formattedGoods对象
|
|
|
|
console.log('最终格式化的商品数据:', JSON.stringify(formattedGoods, null, 2)); |
|
|
|
|
|
|
|
// 强制将测试商品设置为已下架状态,用于调试
|
|
|
|
// formattedGoods.status = 'sold_out';
|
|
|
|
// formattedGoods.label = 1;
|
|
|
|
|
|
|
|
console.log('=== 最终商品状态 ==='); |
|
|
|
console.log('goodsDetail.status:', formattedGoods.status); |
|
|
|
console.log('goodsDetail.label:', formattedGoods.label); |
|
|
|
console.log('按钮是否应该被禁用:', formattedGoods.status === 'sold_out'); |
|
|
|
console.log('是否应该显示disabled-button类:', formattedGoods.status === 'sold_out'); |
|
|
|
|
|
|
|
this.setData({ |
|
|
|
goodsDetail: formattedGoods |
|
|
|
}); |
|
|
|
|
|
|
|
// 延迟检查数据绑定情况
|
|
|
|
setTimeout(() => { |
|
|
|
const currentStatus = this.data.goodsDetail.status; |
|
|
|
console.log('=== 数据绑定后检查 ==='); |
|
|
|
console.log('当前goodsDetail.status:', currentStatus); |
|
|
|
console.log('按钮是否被正确绑定:', currentStatus === 'sold_out'); |
|
|
|
}, 100); |
|
|
|
} else { |
|
|
|
wx.showToast({ |
|
|
|
title: '获取商品详情失败', |
|
|
|
@ -976,7 +1041,8 @@ Page({ |
|
|
|
.then(res => { |
|
|
|
wx.hideLoading(); |
|
|
|
console.log('下架商品成功:', res); |
|
|
|
if (res && res.code === 200) { |
|
|
|
// 更灵活的成功判断条件,支持多种返回格式
|
|
|
|
if (res && (res.code === 200 || res.success === true || res.status === 'success')) { |
|
|
|
wx.showToast({ |
|
|
|
title: '下架成功', |
|
|
|
icon: 'success', |
|
|
|
@ -984,7 +1050,8 @@ Page({ |
|
|
|
}); |
|
|
|
|
|
|
|
this.setData({ |
|
|
|
'goodsDetail.label': 1 |
|
|
|
'goodsDetail.status': 'sold_out', |
|
|
|
'goodsDetail.label': 1 // 保留label字段的更新,确保兼容性
|
|
|
|
}); |
|
|
|
} else { |
|
|
|
wx.showToast({ |
|
|
|
|