|
|
@ -17,6 +17,8 @@ Page({ |
|
|
district: '', |
|
|
district: '', |
|
|
detail: '' |
|
|
detail: '' |
|
|
}, |
|
|
}, |
|
|
|
|
|
// 是否从货源详情页进入(携带产品ID)
|
|
|
|
|
|
isFromGoodsDetail: false, |
|
|
// 货物信息
|
|
|
// 货物信息
|
|
|
goodsInfo: { |
|
|
goodsInfo: { |
|
|
weight: '', // 重量(kg)
|
|
|
weight: '', // 重量(kg)
|
|
|
@ -155,65 +157,80 @@ Page({ |
|
|
// 初始化地址选择器数据
|
|
|
// 初始化地址选择器数据
|
|
|
this.initRegionData(); |
|
|
this.initRegionData(); |
|
|
|
|
|
|
|
|
// 如果从商品详情页跳转过来,获取商品信息
|
|
|
// 如果从商品详情页或货源详情页跳转过来,设置标志并获取商品信息
|
|
|
if (options.goodsId) { |
|
|
if (options.goodsId || options.goodsInfo || options.goodsData) { |
|
|
this.loadGoodsInfo(options.goodsId); |
|
|
this.setData({ isFromGoodsDetail: true }); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 如果直接传递了货源信息 (goodsInfo)
|
|
|
if (options.goodsId) { |
|
|
if (options.goodsInfo) { |
|
|
this.loadGoodsInfo(options.goodsId); |
|
|
try { |
|
|
|
|
|
const goodsInfo = JSON.parse(options.goodsInfo); |
|
|
|
|
|
this.setData({ |
|
|
|
|
|
selectedGoods: goodsInfo, |
|
|
|
|
|
'goodsInfo.weight': goodsInfo.grossWeight || '', |
|
|
|
|
|
'goodsInfo.quantity': 1 |
|
|
|
|
|
}); |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
console.error('解析货源信息失败:', e); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 如果直接传递了货源信息 (goodsData)
|
|
|
// 如果直接传递了货源信息 (goodsInfo)
|
|
|
if (options.goodsData) { |
|
|
if (options.goodsInfo) { |
|
|
try { |
|
|
|
|
|
// 尝试直接解析
|
|
|
|
|
|
let goodsData; |
|
|
|
|
|
try { |
|
|
try { |
|
|
goodsData = JSON.parse(options.goodsData); |
|
|
const goodsInfo = JSON.parse(options.goodsInfo); |
|
|
} catch (e1) { |
|
|
let weight = goodsInfo.grossWeight || ''; |
|
|
// 如果直接解析失败,尝试解码后再解析
|
|
|
if (!weight && goodsInfo.netWeight && goodsInfo.quantity) { |
|
|
try { |
|
|
// 计算总重量:净重(斤) * 件数 / 2(换算为公斤)
|
|
|
const decodedGoodsData = decodeURIComponent(options.goodsData); |
|
|
weight = (parseFloat(goodsInfo.netWeight) * parseInt(goodsInfo.quantity)) / 2; |
|
|
goodsData = JSON.parse(decodedGoodsData); |
|
|
|
|
|
} catch (e2) { |
|
|
|
|
|
console.error('解析货源信息失败 (已尝试解码):', e2); |
|
|
|
|
|
throw e2; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
this.setData({ |
|
|
|
|
|
selectedGoods: goodsInfo, |
|
|
|
|
|
'goodsInfo.weight': weight, |
|
|
|
|
|
'goodsInfo.quantity': goodsInfo.quantity || 1 |
|
|
|
|
|
}); |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
console.error('解析货源信息失败:', e); |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
this.setData({ |
|
|
// 如果直接传递了货源信息 (goodsData)
|
|
|
selectedGoods: goodsData, |
|
|
if (options.goodsData) { |
|
|
'goodsInfo.weight': goodsData.grossWeight || '', |
|
|
try { |
|
|
'goodsInfo.quantity': 1 |
|
|
// 尝试直接解析
|
|
|
}); |
|
|
let goodsData; |
|
|
|
|
|
try { |
|
|
|
|
|
goodsData = JSON.parse(options.goodsData); |
|
|
|
|
|
} catch (e1) { |
|
|
|
|
|
// 如果直接解析失败,尝试解码后再解析
|
|
|
|
|
|
try { |
|
|
|
|
|
const decodedGoodsData = decodeURIComponent(options.goodsData); |
|
|
|
|
|
goodsData = JSON.parse(decodedGoodsData); |
|
|
|
|
|
} catch (e2) { |
|
|
|
|
|
console.error('解析货源信息失败 (已尝试解码):', e2); |
|
|
|
|
|
throw e2; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
let weight = goodsData.grossWeight || ''; |
|
|
|
|
|
if (!weight && goodsData.netWeight && goodsData.quantity) { |
|
|
|
|
|
// 计算总重量:净重(斤) * 件数 / 2(换算为公斤)
|
|
|
|
|
|
weight = (parseFloat(goodsData.netWeight) * parseInt(goodsData.quantity)) / 2; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 设置出发地为商品所在地
|
|
|
|
|
|
const regionToUse = goodsData.fullRegion || goodsData.region; |
|
|
|
|
|
if (regionToUse) { |
|
|
|
|
|
console.log('商品所在地原始地址:', regionToUse); |
|
|
|
|
|
const regionInfo = this.parseRegion(regionToUse); |
|
|
|
|
|
console.log('解析后的地址:', regionInfo); |
|
|
|
|
|
this.setData({ |
|
|
this.setData({ |
|
|
'origin.province': regionInfo.province || '', |
|
|
selectedGoods: goodsData, |
|
|
'origin.city': regionInfo.city || '', |
|
|
'goodsInfo.weight': weight, |
|
|
'origin.district': regionInfo.district || '', |
|
|
'goodsInfo.quantity': goodsData.quantity || 1 |
|
|
'origin.detail': regionInfo.detail || '' |
|
|
|
|
|
}); |
|
|
}); |
|
|
console.log('已设置出发地为商品所在地:', regionInfo); |
|
|
|
|
|
|
|
|
// 设置出发地为商品所在地
|
|
|
|
|
|
const regionToUse = goodsData.fullRegion || goodsData.region; |
|
|
|
|
|
if (regionToUse) { |
|
|
|
|
|
console.log('商品所在地原始地址:', regionToUse); |
|
|
|
|
|
const regionInfo = this.parseRegion(regionToUse); |
|
|
|
|
|
console.log('解析后的地址:', regionInfo); |
|
|
|
|
|
this.setData({ |
|
|
|
|
|
'origin.province': regionInfo.province || '', |
|
|
|
|
|
'origin.city': regionInfo.city || '', |
|
|
|
|
|
'origin.district': regionInfo.district || '', |
|
|
|
|
|
'origin.detail': regionInfo.detail || '' |
|
|
|
|
|
}); |
|
|
|
|
|
console.log('已设置出发地为商品所在地:', regionInfo); |
|
|
|
|
|
} |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
console.error('解析货源信息失败:', e); |
|
|
} |
|
|
} |
|
|
} catch (e) { |
|
|
|
|
|
console.error('解析货源信息失败:', e); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -266,6 +283,12 @@ Page({ |
|
|
this.setData({ |
|
|
this.setData({ |
|
|
'goodsInfo.weight': goodsItem.grossWeight |
|
|
'goodsInfo.weight': goodsItem.grossWeight |
|
|
}); |
|
|
}); |
|
|
|
|
|
} else if (goodsItem.netWeight && goodsItem.quantity) { |
|
|
|
|
|
// 计算总重量:净重(斤) * 件数 / 2(换算为公斤)
|
|
|
|
|
|
const totalWeight = (parseFloat(goodsItem.netWeight) * parseInt(goodsItem.quantity)) / 2; |
|
|
|
|
|
this.setData({ |
|
|
|
|
|
'goodsInfo.weight': totalWeight |
|
|
|
|
|
}); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|