更新结算价

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; original_price: number;
/** 结算金额 */ /** 结算金额 */
settlement_price: number; settlement_price: number;
/** 折扣率 */
discount_ratio?: number | null;
} }
/** /**

View File

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