|
@@ -60,7 +60,7 @@ Component({
|
|
|
})
|
|
})
|
|
|
// 格式化金额数据
|
|
// 格式化金额数据
|
|
|
const formattedData = res.data.map(item => {
|
|
const formattedData = res.data.map(item => {
|
|
|
- const amount = (item.price || 0) * (item.qty || 0);
|
|
|
|
|
|
|
+ const amount = (item.price || 0) * (item.discountrate || 1) * (item.qty || 0);
|
|
|
return {
|
|
return {
|
|
|
...item,
|
|
...item,
|
|
|
showPrice: CNY(item.price || 0),
|
|
showPrice: CNY(item.price || 0),
|
|
@@ -229,17 +229,12 @@ Component({
|
|
|
const list = [...this.data.list];
|
|
const list = [...this.data.list];
|
|
|
const item = list[index];
|
|
const item = list[index];
|
|
|
|
|
|
|
|
- // 获取原价,默认为当前价格
|
|
|
|
|
- const originalPrice = item.oldprice || item.price || 0;
|
|
|
|
|
-
|
|
|
|
|
// 处理不同字段的编辑
|
|
// 处理不同字段的编辑
|
|
|
switch (field) {
|
|
switch (field) {
|
|
|
case 'price':
|
|
case 'price':
|
|
|
item.price = parseFloat(value) || 0;
|
|
item.price = parseFloat(value) || 0;
|
|
|
- // 根据原价和新单价计算折扣
|
|
|
|
|
- if (originalPrice > 0) {
|
|
|
|
|
- item.discountrate = parseFloat((item.price / originalPrice).toFixed(4));
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 重新计算金额
|
|
|
|
|
+ item.amount = parseFloat((item.price * (item.discountrate || 1) * item.qty).toFixed(2));
|
|
|
break;
|
|
break;
|
|
|
case 'discountrate':
|
|
case 'discountrate':
|
|
|
// 确保折扣值有效,默认为1(100%)
|
|
// 确保折扣值有效,默认为1(100%)
|
|
@@ -247,25 +242,23 @@ Component({
|
|
|
// 折扣不能小于0
|
|
// 折扣不能小于0
|
|
|
discount = Math.max(0, discount);
|
|
discount = Math.max(0, discount);
|
|
|
item.discountrate = discount;
|
|
item.discountrate = discount;
|
|
|
- // 根据原价和新折扣计算单价
|
|
|
|
|
- item.price = parseFloat((originalPrice * discount).toFixed(2));
|
|
|
|
|
|
|
+ // 重新计算金额
|
|
|
|
|
+ item.amount = parseFloat((item.price * discount * item.qty).toFixed(2));
|
|
|
break;
|
|
break;
|
|
|
case 'qty':
|
|
case 'qty':
|
|
|
let qty = parseInt(value) || 1;
|
|
let qty = parseInt(value) || 1;
|
|
|
// 数量不能为0
|
|
// 数量不能为0
|
|
|
qty = Math.max(1, qty);
|
|
qty = Math.max(1, qty);
|
|
|
item.qty = qty;
|
|
item.qty = qty;
|
|
|
|
|
+ // 重新计算金额
|
|
|
|
|
+ item.amount = parseFloat((item.price * (item.discountrate || 1) * qty).toFixed(2));
|
|
|
break;
|
|
break;
|
|
|
case 'amount':
|
|
case 'amount':
|
|
|
// 根据新金额计算单价
|
|
// 根据新金额计算单价
|
|
|
const newAmount = parseFloat(value) || 0;
|
|
const newAmount = parseFloat(value) || 0;
|
|
|
item.amount = newAmount;
|
|
item.amount = newAmount;
|
|
|
- if (item.qty > 0) {
|
|
|
|
|
- item.price = parseFloat((newAmount / item.qty).toFixed(2));
|
|
|
|
|
- // 根据原价和新单价计算折扣
|
|
|
|
|
- if (originalPrice > 0) {
|
|
|
|
|
- item.discountrate = parseFloat((item.price / originalPrice).toFixed(4));
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (item.qty > 0 && (item.discountrate || 1) > 0) {
|
|
|
|
|
+ item.price = parseFloat((newAmount / item.qty / (item.discountrate || 1)).toFixed(2));
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
case 'remarks':
|
|
case 'remarks':
|
|
@@ -273,8 +266,10 @@ Component({
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 重新计算金额,保留两位小数
|
|
|
|
|
- item.amount = parseFloat((item.price * item.qty).toFixed(2));
|
|
|
|
|
|
|
+ // 确保 discountrate 存在
|
|
|
|
|
+ if (item.discountrate === undefined || item.discountrate === null) {
|
|
|
|
|
+ item.discountrate = 1;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// 立即更新页面显示
|
|
// 立即更新页面显示
|
|
|
this.setData({
|
|
this.setData({
|
|
@@ -303,8 +298,8 @@ Component({
|
|
|
sa_custorderitemsid: item.sa_custorderitemsid,
|
|
sa_custorderitemsid: item.sa_custorderitemsid,
|
|
|
sys_enterprise_itemid: item.sys_enterprise_itemid || item.itemid,
|
|
sys_enterprise_itemid: item.sys_enterprise_itemid || item.itemid,
|
|
|
qty: item.qty,
|
|
qty: item.qty,
|
|
|
- oldprice: item.oldprice || item.price,
|
|
|
|
|
- discountrate: item.discountrate,
|
|
|
|
|
|
|
+ oldprice: item.price, // 使用当前价格作为原价
|
|
|
|
|
+ discountrate: item.discountrate || 1,
|
|
|
price: item.price,
|
|
price: item.price,
|
|
|
amount: item.amount,
|
|
amount: item.amount,
|
|
|
remarks: item.remarks || ""
|
|
remarks: item.remarks || ""
|