From e2158286bee1777987dbb839912d16d39787b0bf Mon Sep 17 00:00:00 2001 From: xianyi Date: Mon, 2 Feb 2026 10:06:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BD=93=E6=A3=80=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E7=99=BB=E5=BD=95=E4=B8=8E=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/exam/ExamAddonPanel.tsx | 40 +++++++++++++++++--------- src/pages/ExamPage.tsx | 2 ++ 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/components/exam/ExamAddonPanel.tsx b/src/components/exam/ExamAddonPanel.tsx index 7eee1d7..0d67855 100644 --- a/src/components/exam/ExamAddonPanel.tsx +++ b/src/components/exam/ExamAddonPanel.tsx @@ -101,7 +101,7 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => { const [customSettlementLoading, setCustomSettlementLoading] = useState(false); const [customSettlementType, setCustomSettlementType] = useState<1 | 2>(1); // 1-按比例折扣 2-自定义结算价 const [customDiscountRatio, setCustomDiscountRatio] = useState(null); // 折扣比例(如100代表10折,即原价) - const [customFinalPrice, setCustomFinalPrice] = useState(0); // 最终结算价 + const [customFinalPrice, setCustomFinalPrice] = useState(null); // 最终结算价 const [customApplyReason, setCustomApplyReason] = useState(''); // 申请理由 const [waitingSeconds, setWaitingSeconds] = useState(0); // 等待审核的秒数 const waitingTimerRef = useRef(null); // 等待计时器 @@ -111,11 +111,15 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => { // 已通过(3) 或 已拒绝(4) 且 add_item_id 匹配才需要回显 if ((customSettlementStatus.apply_status === 3 || customSettlementStatus.apply_status === 4) && customSettlementStatus.add_item_id === currentAddItemId) { - if (customSettlementStatus.settlement_type === 1 || customSettlementStatus.settlement_type === 2) { + // 如果 discount_ratio 为 0,说明是自定义结算价模式 + if (customSettlementStatus.discount_ratio === 0) { + setCustomSettlementType(2); + } else if (customSettlementStatus.settlement_type === 1 || customSettlementStatus.settlement_type === 2) { setCustomSettlementType(customSettlementStatus.settlement_type as 1 | 2); } + if (typeof customSettlementStatus.discount_ratio === 'number') { - setCustomDiscountRatio(customSettlementStatus.discount_ratio); + setCustomDiscountRatio(customSettlementStatus.discount_ratio || null); } if (typeof customSettlementStatus.final_settlement_price === 'number') { setCustomFinalPrice(customSettlementStatus.final_settlement_price); @@ -127,7 +131,7 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => { // 其他状态(如取消后再点开)重置表单为默认值 setCustomSettlementType(1); setCustomDiscountRatio(null); - setCustomFinalPrice(0); + setCustomFinalPrice(null); setCustomApplyReason(''); } } @@ -529,7 +533,7 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => { setCustomSettlementStatus(null); setCustomSettlementType(1); setCustomDiscountRatio(null); - setCustomFinalPrice(0); + setCustomFinalPrice(null); setCustomApplyReason(''); lastFetchStatusTimeRef.current = 0; // 强制立即发起新请求 @@ -605,6 +609,7 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => { // 提交自定义结算申请 const handleSubmitCustomSettlement = async () => { + const physical_exam_id = Number(client.id); if (!physical_exam_id || selectedItems.length === 0) { setPaymentMessage('请先选择加项项目'); @@ -641,7 +646,7 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => { settlementPrice = originalPrice * (discountRatioValue / 100); } else { // 自定义结算价 - settlementPrice = customFinalPrice / selectedItems.length; // 平均分配 + settlementPrice = (customFinalPrice ?? 0) / selectedItems.length; // 平均分配 } return { @@ -659,12 +664,12 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => { const final_settlement_price = customSettlementType === 1 ? original_settlement_price * (discountRatioValue / 100) - : customFinalPrice; - + : (customFinalPrice ?? 0); const apply_user = localStorage.getItem('operatorName'); if (!apply_user) { - setPaymentMessage('请先登录'); + alert('请先登录'); + window.location.href = '/home'; return; } const res = await customSettlementApply({ @@ -673,7 +678,7 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => { original_settlement_price, settlement_type: customSettlementType, discount_ratio: customSettlementType === 1 ? discountRatioValue : undefined, - final_settlement_price, + final_settlement_price: final_settlement_price ?? undefined, apply_reason: customApplyReason.trim(), apply_user, }); @@ -684,7 +689,7 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => { // 重置表单 setCustomSettlementType(1); setCustomDiscountRatio(100); - setCustomFinalPrice(0); + setCustomFinalPrice(null); setCustomApplyReason(''); // 重新获取审批状态并开始轮询 setTimeout(() => { @@ -1198,7 +1203,7 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => { {/* 添加自定义结算 */} - {localStorage.getItem('authCode')?.includes('HisTijianPad_Btn_Tongji') && selectedItems.length > 0 && ( + {localStorage.getItem('authCode')?.includes('HisTijian_Btn_JiesuanShenqing') && selectedItems.length > 0 && (