|
|
|
@ -136,16 +136,16 @@ Page({ |
|
|
|
baseInfo: { |
|
|
|
'面包车': ['0-500kg', '0-5m³'], |
|
|
|
'依维柯': ['500-1500kg', '5-12m³'], |
|
|
|
'平板': ['3000-15000kg', '20-60m³'], |
|
|
|
'厢式': ['2000-10000kg', '15-45m³'], |
|
|
|
'高栏车': ['3000-15000kg', '20-60m³'], |
|
|
|
'平板': ['1000-15000kg', '5-60m³'], |
|
|
|
'厢式': ['1000-10000kg', '5-45m³'], |
|
|
|
'高栏车': ['1000-15000kg', '5-60m³'], |
|
|
|
'集装箱': ['8000-20000kg', '40-80m³'], |
|
|
|
'自卸': ['5000-12000kg', '20-45m³'], |
|
|
|
'冷藏': ['2000-8000kg', '15-40m³'], |
|
|
|
'保温': ['2000-6000kg', '15-30m³'], |
|
|
|
'棉被车': ['2000-8000kg', '15-40m³'], |
|
|
|
'爬梯车': ['5000-12000kg', '20-45m³'], |
|
|
|
'飞翼车': ['3000-10000kg', '20-45m³'], |
|
|
|
'自卸': ['5000-12000kg', '10-45m³'], |
|
|
|
'冷藏': ['1000-8000kg', '5-40m³'], |
|
|
|
'保温': ['1000-6000kg', '5-30m³'], |
|
|
|
'棉被车': ['1000-8000kg', '5-40m³'], |
|
|
|
'爬梯车': ['5000-12000kg', '10-45m³'], |
|
|
|
'飞翼车': ['1000-10000kg', '10-45m³'], |
|
|
|
'高低板': ['8000-20000kg', '40-80m³'] |
|
|
|
} |
|
|
|
}, |
|
|
|
@ -177,12 +177,26 @@ Page({ |
|
|
|
// 从规格中提取重量数字并计算总重量
|
|
|
|
weight = this.calculateWeightFromSpec(goodsInfo); |
|
|
|
} |
|
|
|
|
|
|
|
// 计算体积
|
|
|
|
let volume = ''; |
|
|
|
if (goodsInfo.quantity) { |
|
|
|
volume = this.calculateVolumeFromPackaging(goodsInfo); |
|
|
|
} |
|
|
|
|
|
|
|
this.setData({ |
|
|
|
selectedGoods: goodsInfo, |
|
|
|
'goodsInfo.weight': weight, |
|
|
|
'goodsInfo.volume': volume, |
|
|
|
'goodsInfo.quantity': goodsInfo.quantity || 1, |
|
|
|
weight: weight // 同步到运输参数的重量输入框
|
|
|
|
weight: weight, // 同步到运输参数的重量输入框
|
|
|
|
volume: volume // 同步到运输参数的体积输入框
|
|
|
|
}); |
|
|
|
|
|
|
|
// 自动匹配车型和车长
|
|
|
|
if (weight && volume) { |
|
|
|
this.autoMatchVehicle(weight, volume); |
|
|
|
} |
|
|
|
} catch (e) { |
|
|
|
console.error('解析货源信息失败:', e); |
|
|
|
} |
|
|
|
@ -215,12 +229,25 @@ Page({ |
|
|
|
weight = this.calculateWeightFromSpec(goodsData); |
|
|
|
} |
|
|
|
|
|
|
|
// 计算体积
|
|
|
|
let volume = ''; |
|
|
|
if (goodsData.quantity) { |
|
|
|
volume = this.calculateVolumeFromPackaging(goodsData); |
|
|
|
} |
|
|
|
|
|
|
|
this.setData({ |
|
|
|
selectedGoods: goodsData, |
|
|
|
'goodsInfo.weight': weight, |
|
|
|
'goodsInfo.volume': volume, |
|
|
|
'goodsInfo.quantity': goodsData.quantity || 1, |
|
|
|
weight: weight // 同步到运输参数的重量输入框
|
|
|
|
weight: weight, // 同步到运输参数的重量输入框
|
|
|
|
volume: volume // 同步到运输参数的体积输入框
|
|
|
|
}); |
|
|
|
|
|
|
|
// 自动匹配车型和车长
|
|
|
|
if (weight && volume) { |
|
|
|
this.autoMatchVehicle(weight, volume); |
|
|
|
} |
|
|
|
|
|
|
|
// 设置出发地为商品所在地
|
|
|
|
const regionToUse = goodsData.fullRegion || goodsData.region; |
|
|
|
@ -287,26 +314,41 @@ Page({ |
|
|
|
} |
|
|
|
|
|
|
|
// 设置货物重量(如果有)
|
|
|
|
let weight = ''; |
|
|
|
if (goodsItem.grossWeight) { |
|
|
|
this.setData({ |
|
|
|
'goodsInfo.weight': goodsItem.grossWeight, |
|
|
|
weight: goodsItem.grossWeight // 同步到运输参数的重量输入框
|
|
|
|
}); |
|
|
|
weight = goodsItem.grossWeight; |
|
|
|
} else if (goodsItem.netWeight && goodsItem.quantity) { |
|
|
|
// 计算总重量:净重(斤) * 件数 / 2(换算为公斤)
|
|
|
|
const totalWeight = (parseFloat(goodsItem.netWeight) * parseInt(goodsItem.quantity)) / 2; |
|
|
|
this.setData({ |
|
|
|
'goodsInfo.weight': totalWeight, |
|
|
|
weight: totalWeight // 同步到运输参数的重量输入框
|
|
|
|
}); |
|
|
|
weight = (parseFloat(goodsItem.netWeight) * parseInt(goodsItem.quantity)) / 2; |
|
|
|
} else if ((goodsItem.spec || goodsItem.specification || goodsItem.specs) && goodsItem.quantity) { |
|
|
|
// 从规格中提取重量数字并计算总重量
|
|
|
|
const totalWeight = this.calculateWeightFromSpec(goodsItem); |
|
|
|
weight = this.calculateWeightFromSpec(goodsItem); |
|
|
|
} |
|
|
|
|
|
|
|
// 计算体积
|
|
|
|
let volume = ''; |
|
|
|
if (goodsItem.quantity) { |
|
|
|
volume = this.calculateVolumeFromPackaging(goodsItem); |
|
|
|
} |
|
|
|
|
|
|
|
// 设置重量和体积
|
|
|
|
if (weight) { |
|
|
|
this.setData({ |
|
|
|
'goodsInfo.weight': totalWeight, |
|
|
|
weight: totalWeight // 同步到运输参数的重量输入框
|
|
|
|
'goodsInfo.weight': weight, |
|
|
|
weight: weight // 同步到运输参数的重量输入框
|
|
|
|
}); |
|
|
|
} |
|
|
|
if (volume) { |
|
|
|
this.setData({ |
|
|
|
'goodsInfo.volume': volume, |
|
|
|
volume: volume // 同步到运输参数的体积输入框
|
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
// 自动匹配车型和车长
|
|
|
|
if (weight && volume) { |
|
|
|
this.autoMatchVehicle(weight, volume); |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
@ -320,7 +362,7 @@ Page({ |
|
|
|
|
|
|
|
// 从规格字符串中提取数字
|
|
|
|
const weightMatch = spec.match(/(\d+(?:\.\d+)?)/); |
|
|
|
if (weightMatch) { |
|
|
|
if (weightMatch && weightMatch.length > 1) { |
|
|
|
const weightPerUnit = parseFloat(weightMatch[1]); |
|
|
|
// 计算总重量:重量(斤) * 件数 / 2(换算为公斤)
|
|
|
|
const totalWeight = (weightPerUnit * quantity) / 2; |
|
|
|
@ -332,6 +374,58 @@ Page({ |
|
|
|
return ''; |
|
|
|
}, |
|
|
|
|
|
|
|
// 根据包装信息计算体积
|
|
|
|
calculateVolumeFromPackaging: function (goodsData) { |
|
|
|
// 获取所有可能的包装信息字段
|
|
|
|
const allSpecs = [ |
|
|
|
goodsData.spec, |
|
|
|
goodsData.specification, |
|
|
|
goodsData.specs, |
|
|
|
goodsData.producting |
|
|
|
].filter(Boolean); |
|
|
|
const quantity = parseInt(goodsData.quantity) || 1; |
|
|
|
|
|
|
|
console.log('从包装计算体积:', { allSpecs, quantity, producting: goodsData.producting }); |
|
|
|
|
|
|
|
// 定义包装的体积(单位:立方米)
|
|
|
|
const packageVolumes = { |
|
|
|
'1*360枚': (60 * 30 * 33) / 1000000, // 60cm×30cm×33cm
|
|
|
|
'1*420枚': (60 * 30 * 40) / 1000000, // 60cm×30cm×40cm
|
|
|
|
'1*480枚': (60 * 30 * 45) / 1000000 // 60cm×30cm×45cm
|
|
|
|
}; |
|
|
|
|
|
|
|
// 检查是否为排除的包装类型
|
|
|
|
const excludedPackages = ['30枚蛋托散装', '360枚散托']; |
|
|
|
for (let i = 0; i < allSpecs.length; i++) { |
|
|
|
const spec = allSpecs[i]; |
|
|
|
for (let j = 0; j < excludedPackages.length; j++) { |
|
|
|
if (spec.includes(excludedPackages[j])) { |
|
|
|
console.log('排除的包装类型,不计算体积:', excludedPackages[j]); |
|
|
|
return ''; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 检查包装类型 - 遍历所有可能的规格字段
|
|
|
|
for (let i = 0; i < allSpecs.length; i++) { |
|
|
|
const spec = allSpecs[i]; |
|
|
|
// 遍历所有包装类型
|
|
|
|
for (const packageType in packageVolumes) { |
|
|
|
if (packageVolumes.hasOwnProperty(packageType)) { |
|
|
|
if (spec.includes(packageType)) { |
|
|
|
// 计算总体积
|
|
|
|
const totalVolume = packageVolumes[packageType] * quantity; |
|
|
|
console.log('计算得到的总体积:', totalVolume, '立方米'); |
|
|
|
return totalVolume; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
console.log('未找到匹配的包装类型,不计算体积'); |
|
|
|
return ''; |
|
|
|
}, |
|
|
|
|
|
|
|
// 解析地区信息
|
|
|
|
parseRegion: function (region) { |
|
|
|
if (!region) return {}; |
|
|
|
@ -1212,19 +1306,26 @@ Page({ |
|
|
|
|
|
|
|
if (weightNum > 0 || volumeNum > 0) { |
|
|
|
const [weightRange, volumeRange] = this.data.baseInfo[vehicleType]; |
|
|
|
const [minWeight, maxWeight] = weightRange.split('-').map(w => parseFloat(w.replace('kg', ''))); |
|
|
|
const [minVolume, maxVolume] = volumeRange.split('-').map(v => parseFloat(v.replace('m³', ''))); |
|
|
|
|
|
|
|
// 检查重量和体积是否在车型的范围内
|
|
|
|
const isWeightSuitable = weightNum === 0 || (weightNum >= minWeight && weightNum <= maxWeight); |
|
|
|
const isVolumeSuitable = volumeNum === 0 || (volumeNum >= minVolume && volumeNum <= maxVolume); |
|
|
|
const weightRangeParts = weightRange.split('-'); |
|
|
|
const volumeRangeParts = volumeRange.split('-'); |
|
|
|
|
|
|
|
if (!isWeightSuitable || !isVolumeSuitable) { |
|
|
|
wx.showToast({ |
|
|
|
title: '选择的车型不适合当前重量和体积', |
|
|
|
icon: 'none' |
|
|
|
}); |
|
|
|
return; |
|
|
|
if (weightRangeParts.length === 2 && volumeRangeParts.length === 2) { |
|
|
|
const minWeight = parseFloat(weightRangeParts[0].replace('kg', '')); |
|
|
|
const maxWeight = parseFloat(weightRangeParts[1].replace('kg', '')); |
|
|
|
const minVolume = parseFloat(volumeRangeParts[0].replace('m³', '')); |
|
|
|
const maxVolume = parseFloat(volumeRangeParts[1].replace('m³', '')); |
|
|
|
|
|
|
|
// 检查重量和体积是否在车型的范围内
|
|
|
|
const isWeightSuitable = weightNum === 0 || (weightNum >= minWeight && weightNum <= maxWeight); |
|
|
|
const isVolumeSuitable = volumeNum === 0 || (volumeNum >= minVolume && volumeNum <= maxVolume); |
|
|
|
|
|
|
|
if (!isWeightSuitable || !isVolumeSuitable) { |
|
|
|
wx.showToast({ |
|
|
|
title: '选择的车型不适合当前重量和体积', |
|
|
|
icon: 'none' |
|
|
|
}); |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -1313,12 +1414,12 @@ Page({ |
|
|
|
if (a.priority !== b.priority) { |
|
|
|
return a.priority - b.priority; |
|
|
|
} |
|
|
|
// 然后按最大载重排序
|
|
|
|
// 然后按最大载重排序(从大到小)
|
|
|
|
if (a.maxWeight !== b.maxWeight) { |
|
|
|
return a.maxWeight - b.maxWeight; |
|
|
|
return b.maxWeight - a.maxWeight; |
|
|
|
} |
|
|
|
// 最后按最大体积排序
|
|
|
|
return a.maxVolume - b.maxVolume; |
|
|
|
// 最后按最大体积排序(从大到小)
|
|
|
|
return b.maxVolume - a.maxVolume; |
|
|
|
}); |
|
|
|
|
|
|
|
// 选择第一个合适的车型
|
|
|
|
@ -1998,15 +2099,15 @@ Page({ |
|
|
|
} else if (length <= 5) { |
|
|
|
return 1.0; |
|
|
|
} else if (length <= 6.8) { |
|
|
|
return 1.1; |
|
|
|
return 1.05; |
|
|
|
} else if (length <= 7.7) { |
|
|
|
return 1.2; |
|
|
|
return 1.1; |
|
|
|
} else if (length <= 9.6) { |
|
|
|
return 1.3; |
|
|
|
return 1.15; |
|
|
|
} else if (length <= 13) { |
|
|
|
return 1.4; |
|
|
|
return 1.2; |
|
|
|
} else { |
|
|
|
return 1.5; |
|
|
|
return 1.25; |
|
|
|
} |
|
|
|
} catch { |
|
|
|
return 1.0; |
|
|
|
@ -2018,80 +2119,80 @@ Page({ |
|
|
|
'面包车': { |
|
|
|
startFee: 80, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 1.0, |
|
|
|
unitPriceMax: 1.3 |
|
|
|
unitPriceMin: 0.8, |
|
|
|
unitPriceMax: 1.0 |
|
|
|
}, |
|
|
|
'依维柯': { |
|
|
|
startFee: 160, |
|
|
|
startFee: 150, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 1.5, |
|
|
|
unitPriceMax: 1.8 |
|
|
|
unitPriceMin: 1.2, |
|
|
|
unitPriceMax: 1.5 |
|
|
|
}, |
|
|
|
'平板': { |
|
|
|
startFee: 200, |
|
|
|
startFee: 180, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 1.8, |
|
|
|
unitPriceMax: 2.2 |
|
|
|
unitPriceMin: 1.5, |
|
|
|
unitPriceMax: 1.8 |
|
|
|
}, |
|
|
|
'厢式': { |
|
|
|
startFee: 180, |
|
|
|
startFee: 170, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 1.7, |
|
|
|
unitPriceMax: 2.0 |
|
|
|
unitPriceMin: 1.4, |
|
|
|
unitPriceMax: 1.7 |
|
|
|
}, |
|
|
|
'高栏车': { |
|
|
|
startFee: 150, |
|
|
|
startFee: 140, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 1.8, |
|
|
|
unitPriceMax: 2.2 |
|
|
|
unitPriceMin: 1.5, |
|
|
|
unitPriceMax: 1.8 |
|
|
|
}, |
|
|
|
'集装箱': { |
|
|
|
startFee: 250, |
|
|
|
startFee: 220, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 2.0, |
|
|
|
unitPriceMax: 2.4 |
|
|
|
unitPriceMin: 1.7, |
|
|
|
unitPriceMax: 2.0 |
|
|
|
}, |
|
|
|
'自卸': { |
|
|
|
startFee: 200, |
|
|
|
startFee: 180, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 1.9, |
|
|
|
unitPriceMax: 2.3 |
|
|
|
unitPriceMin: 1.6, |
|
|
|
unitPriceMax: 1.9 |
|
|
|
}, |
|
|
|
'冷藏': { |
|
|
|
startFee: 250, |
|
|
|
startFee: 220, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 2.0, |
|
|
|
unitPriceMax: 2.4 |
|
|
|
unitPriceMin: 1.7, |
|
|
|
unitPriceMax: 2.0 |
|
|
|
}, |
|
|
|
'保温': { |
|
|
|
startFee: 220, |
|
|
|
startFee: 200, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 1.8, |
|
|
|
unitPriceMax: 2.2 |
|
|
|
unitPriceMin: 1.5, |
|
|
|
unitPriceMax: 1.8 |
|
|
|
}, |
|
|
|
'棉被车': { |
|
|
|
startFee: 200, |
|
|
|
startFee: 180, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 1.7, |
|
|
|
unitPriceMax: 2.1 |
|
|
|
unitPriceMin: 1.4, |
|
|
|
unitPriceMax: 1.7 |
|
|
|
}, |
|
|
|
'爬梯车': { |
|
|
|
startFee: 220, |
|
|
|
startFee: 200, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 1.8, |
|
|
|
unitPriceMax: 2.2 |
|
|
|
unitPriceMin: 1.5, |
|
|
|
unitPriceMax: 1.8 |
|
|
|
}, |
|
|
|
'飞翼车': { |
|
|
|
startFee: 210, |
|
|
|
startFee: 190, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 1.7, |
|
|
|
unitPriceMax: 2.1 |
|
|
|
unitPriceMin: 1.4, |
|
|
|
unitPriceMax: 1.7 |
|
|
|
}, |
|
|
|
'高低板': { |
|
|
|
startFee: 280, |
|
|
|
startFee: 250, |
|
|
|
startDistance: 10, |
|
|
|
unitPriceMin: 2.0, |
|
|
|
unitPriceMax: 2.4 |
|
|
|
unitPriceMin: 1.7, |
|
|
|
unitPriceMax: 2.0 |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
@ -2116,23 +2217,23 @@ Page({ |
|
|
|
feeMax *= truckLengthFactor; |
|
|
|
|
|
|
|
// 根据货物重量和体积调整价格 - 调整为更合理的系数
|
|
|
|
if (weight > 3000 || volume > 15) { |
|
|
|
feeMin *= 1.05; |
|
|
|
feeMax *= 1.05; |
|
|
|
} else if (weight > 1000 || volume > 10) { |
|
|
|
feeMin *= 1.02; |
|
|
|
feeMax *= 1.02; |
|
|
|
if (weight > 5000 || volume > 20) { |
|
|
|
feeMin *= 1.03; |
|
|
|
feeMax *= 1.03; |
|
|
|
} else if (weight > 3000 || volume > 15) { |
|
|
|
feeMin *= 1.01; |
|
|
|
feeMax *= 1.01; |
|
|
|
} |
|
|
|
|
|
|
|
// 添加平台佣金(运费的5%左右)
|
|
|
|
feeMin *= 1.05; |
|
|
|
feeMax *= 1.05; |
|
|
|
// 添加平台佣金(运费的3%左右,更接近实际情况)
|
|
|
|
feeMin *= 1.03; |
|
|
|
feeMax *= 1.03; |
|
|
|
|
|
|
|
// 费用明细
|
|
|
|
const breakdown = { |
|
|
|
'起步费': rate.startFee, |
|
|
|
'距离费': Math.round((feeMin / 1.05 - rate.startFee) * 100) / 100, |
|
|
|
'平台佣金': Math.round((feeMin - feeMin / 1.05) * 100) / 100 |
|
|
|
'距离费': Math.round((feeMin / 1.03 - rate.startFee) * 100) / 100, |
|
|
|
'平台佣金': Math.round((feeMin - feeMin / 1.03) * 100) / 100 |
|
|
|
}; |
|
|
|
|
|
|
|
return [feeMin, feeMax, breakdown]; |
|
|
|
@ -2226,15 +2327,15 @@ Page({ |
|
|
|
} else if (length <= 5) { |
|
|
|
return 1.0; |
|
|
|
} else if (length <= 6.8) { |
|
|
|
return 1.1; |
|
|
|
return 1.05; |
|
|
|
} else if (length <= 7.7) { |
|
|
|
return 1.2; |
|
|
|
return 1.1; |
|
|
|
} else if (length <= 9.6) { |
|
|
|
return 1.3; |
|
|
|
return 1.15; |
|
|
|
} else if (length <= 13) { |
|
|
|
return 1.4; |
|
|
|
return 1.2; |
|
|
|
} else { |
|
|
|
return 1.5; |
|
|
|
return 1.25; |
|
|
|
} |
|
|
|
} catch { |
|
|
|
return 1.0; |
|
|
|
@ -2267,67 +2368,67 @@ Page({ |
|
|
|
'面包车': { |
|
|
|
startFee: 80, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 1.15 |
|
|
|
unitPrice: 0.9 |
|
|
|
}, |
|
|
|
'依维柯': { |
|
|
|
startFee: 160, |
|
|
|
startFee: 150, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 1.65 |
|
|
|
unitPrice: 1.35 |
|
|
|
}, |
|
|
|
'平板': { |
|
|
|
startFee: 200, |
|
|
|
startFee: 180, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 2.0 |
|
|
|
unitPrice: 1.65 |
|
|
|
}, |
|
|
|
'厢式': { |
|
|
|
startFee: 180, |
|
|
|
startFee: 170, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 1.85 |
|
|
|
unitPrice: 1.55 |
|
|
|
}, |
|
|
|
'高栏车': { |
|
|
|
startFee: 150, |
|
|
|
startFee: 140, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 2.0 |
|
|
|
unitPrice: 1.65 |
|
|
|
}, |
|
|
|
'集装箱': { |
|
|
|
startFee: 250, |
|
|
|
startFee: 220, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 2.2 |
|
|
|
unitPrice: 1.85 |
|
|
|
}, |
|
|
|
'自卸': { |
|
|
|
startFee: 200, |
|
|
|
startFee: 180, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 2.1 |
|
|
|
unitPrice: 1.75 |
|
|
|
}, |
|
|
|
'冷藏': { |
|
|
|
startFee: 250, |
|
|
|
startFee: 220, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 2.2 |
|
|
|
unitPrice: 1.85 |
|
|
|
}, |
|
|
|
'保温': { |
|
|
|
startFee: 220, |
|
|
|
startFee: 200, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 2.0 |
|
|
|
unitPrice: 1.65 |
|
|
|
}, |
|
|
|
'棉被车': { |
|
|
|
startFee: 200, |
|
|
|
startFee: 180, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 1.9 |
|
|
|
unitPrice: 1.55 |
|
|
|
}, |
|
|
|
'爬梯车': { |
|
|
|
startFee: 220, |
|
|
|
startFee: 200, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 2.0 |
|
|
|
unitPrice: 1.65 |
|
|
|
}, |
|
|
|
'飞翼车': { |
|
|
|
startFee: 210, |
|
|
|
startFee: 190, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 1.9 |
|
|
|
unitPrice: 1.55 |
|
|
|
}, |
|
|
|
'高低板': { |
|
|
|
startFee: 280, |
|
|
|
startFee: 250, |
|
|
|
startDistance: 10, |
|
|
|
unitPrice: 2.2 |
|
|
|
unitPrice: 1.85 |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
@ -2344,18 +2445,18 @@ Page({ |
|
|
|
marketPrice *= truckLengthFactor; |
|
|
|
|
|
|
|
// 根据货物重量和体积调整价格 - 与 calculateYunmanmanFee 使用相同的系数
|
|
|
|
if (weight > 3000 || volume > 15) { |
|
|
|
marketPrice *= 1.05; |
|
|
|
} else if (weight > 1000 || volume > 10) { |
|
|
|
marketPrice *= 1.02; |
|
|
|
if (weight > 5000 || volume > 20) { |
|
|
|
marketPrice *= 1.03; |
|
|
|
} else if (weight > 3000 || volume > 15) { |
|
|
|
marketPrice *= 1.01; |
|
|
|
} |
|
|
|
|
|
|
|
// 添加平台佣金
|
|
|
|
marketPrice *= 1.05; |
|
|
|
marketPrice *= 1.03; |
|
|
|
} else { |
|
|
|
// 零担拼车市场参考价
|
|
|
|
const chargeWeight = Math.max(weight, volume * 333); |
|
|
|
marketPrice = chargeWeight * 0.4 * (distance / 1000) * 1.05; // 包含易碎品附加费
|
|
|
|
marketPrice = chargeWeight * 0.35 * (distance / 1000) * 1.03; // 包含易碎品附加费
|
|
|
|
|
|
|
|
// 应用车长系数
|
|
|
|
marketPrice *= truckLengthFactor; |
|
|
|
|