更新结算价

This commit is contained in:
xianyi
2026-02-04 09:22:36 +08:00
parent 07c74c956e
commit 513e113ea9
2 changed files with 22 additions and 14 deletions

View File

@@ -1446,6 +1446,8 @@ export interface InputAddItemCustomSettlementDetail {
original_price: number;
/** 结算金额 */
settlement_price: number;
/** 折扣率 */
discount_ratio?: number | null;
}
/**

View File

@@ -21,6 +21,7 @@ interface AddonItem {
combinationItemCode?: number | null;
isEnjoyDiscount?: number | null;
discount_name?: string | null;
discount_ratio?: number | null;
}
interface ExamAddonPanelProps {
@@ -305,6 +306,7 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => {
combinationItemCode: item.combination_item_code ?? null,
isEnjoyDiscount: item.is_enjoy_discount ?? null,
discount_name: item.discount_rate ?? null,
discount_ratio: item.discount_ratio ?? null,
tags: [],
paid: false,
}));
@@ -642,31 +644,35 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => {
return null;
}
const originalPrice = parseFloat(item.originalPrice || '0');
let settlementPrice = originalPrice;
if (customSettlementType === 1) {
// 按比例折扣
settlementPrice = originalPrice * (discountRatioValue / 100);
} else {
// 自定义结算价
settlementPrice = (customFinalPrice ?? 0) / selectedItems.length; // 平均分配
}
// if (customSettlementType === 1) {
// // 按比例折扣
// settlementPrice = originalPrice * (discountRatioValue / 100);
// } else {
// // 自定义结算价
// settlementPrice = (customFinalPrice ?? 0) / selectedItems.length; // 平均分配
// }
const discount_ratio = (() => {
const r = item.discount_ratio;
if (r == null || typeof r !== 'number') return 0;
return r > 1 ? r : Math.round(r * 100);
})();
return {
combination_item_code: String(combinationItemCode),
combination_item_name: item.name,
original_price: originalPrice,
settlement_price: settlementPrice,
settlement_price: originalPrice * (discount_ratio / 100),
discount_ratio: discount_ratio,
};
})
.filter((item): item is { combination_item_code: string; combination_item_name: string; original_price: number; settlement_price: number } => item !== null);
.filter((item): item is { combination_item_code: string; combination_item_name: string; original_price: number; settlement_price: number; discount_ratio: number } => item !== null);
const original_settlement_price = selectedItems.reduce((sum, item) => {
return sum + parseFloat(item.currentPrice || item.originalPrice || '0');
}, 0);
const original_settlement_price = listAddItemDetail.reduce((sum, item) => sum + item.original_price, 0);
const final_settlement_price = customSettlementType === 1
? original_settlement_price * (discountRatioValue / 100)
? totalCurrent * ((customDiscountRatio ?? 0) / 100)
: (customFinalPrice ?? 0);
const apply_user = localStorage.getItem('operatorName');