检查项目设置-》套餐设置:折扣字段换算错误
This commit is contained in:
Ranyunqiao
2026-04-01 15:23:46 +08:00
parent 9105e687d6
commit 9f802b67f0

View File

@@ -546,6 +546,7 @@ function loadPackageData(data) {
frequency: item.frequency || '',
days: item.days || '',
quantity: item.quantity || 1,
originalUnitPrice: item.originalUnitPrice || item.unitPrice || 0,
unitPrice: item.unitPrice || 0,
unit: item.unit || '',
amount: item.amount || 0,
@@ -908,6 +909,7 @@ function handleAddRow() {
days: '',
quantity: 1,
unit: '',
originalUnitPrice: 0,
unitPrice: 0,
amount: 0,
serviceCharge: 0,
@@ -1058,7 +1060,7 @@ function handleItemSelect(row) {
if (item) {
row.itemName = item.name || item.itemName || ''
row.code = item.busNo || item.code || item.itemCode || ''
row.unitPrice = parseFloat(item.retailPrice || item.unitPrice || item.price || 0)
row.originalUnitPrice = parseFloat(item.retailPrice || item.unitPrice || item.price || 0)
// permittedUnitCode_dictText是字典翻译后的值permittedUnitCode是后端返回的原始值
row.unit = item.permittedUnitCode_dictText || item.permittedUnitCode || ''
@@ -1074,7 +1076,15 @@ function handleItemSelect(row) {
// 计算金额
function calculateAmount(row) {
row.amount = (row.quantity || 0) * (row.unitPrice || 0)
// 获取折扣比例默认100%
const discountRate = formData.discount ? parseFloat(formData.discount) / 100 : 1;
// 单价 = 原项目单价 × 折扣比例
row.unitPrice = row.originalUnitPrice * discountRate;
// 金额 = 折扣单价 × 数量
row.amount = (row.quantity || 0) * row.unitPrice;
calculateTotal(row)
}
@@ -1097,20 +1107,11 @@ function calculateTotalServiceFee() {
formData.serviceFee = totalServiceFee
}
// 计算套餐金额(应用折扣
// 计算套餐金额(套餐金额=套餐明细总金额字段的值之和
function calculatePackagePrice() {
// 计算所有明细项目的总金额
// 套餐金额 = 所有明细项目的总金额之和
const total = detailData.value.reduce((sum, item) => sum + (item.total || 0), 0)
// 如果有折扣,应用折扣计算
let finalPrice = total
if (formData.discount && parseFloat(formData.discount) > 0 && parseFloat(formData.discount) <= 100) {
const discountRate = parseFloat(formData.discount) / 100 // 将百分比转换为小数(如 10% -> 0.1
const discountAmount = total * discountRate // 折扣金额
finalPrice = total - discountAmount // 折扣后金额
}
formData.packagePrice = finalPrice
formData.packagePrice = total
}
// 折扣变更处理
@@ -1134,8 +1135,10 @@ function handleDiscountChange(value) {
}
}
// 重新计算套餐金额
calculatePackagePrice()
// 重新计算所有明细行
detailData.value.forEach(row => {
calculateAmount(row)
})
}
// 套餐管理
@@ -1251,6 +1254,7 @@ async function handleSave() {
days: item.days || '',
quantity: parseInt(item.quantity) || 1,
unit: item.unit || '',
originalUnitPrice: parseFloat(item.originalUnitPrice) || 0,
unitPrice: parseFloat(item.unitPrice) || 0,
amount: parseFloat(item.amount) || 0,
serviceCharge: parseFloat(item.serviceCharge) || 0,