import { useEffect, useState } from "react"; import { Text, View } from "@tarojs/components"; import { Button, Input, Popup, SafeArea } from "@nutui/nutui-react-taro"; import { validatePrice } from "@/utils/format"; import { getSalesAmount, getTotalPackagingCost, } from "@/utils/calcutePurchaseOrder"; import { multiply } from "lodash"; export default function TaxSubsidySection(props: { dealerVO: BusinessAPI.DealerVO; purchaseOrderVO: BusinessAPI.PurchaseOrderVO; onChange?: (purchaseOrderVO: BusinessAPI.PurchaseOrderVO) => void; readOnly?: boolean; }) { const { purchaseOrderVO, onChange, readOnly, dealerVO } = props; const [visible, setVisible] = useState(false); const [taxSubsidy, setTaxSubsidy] = useState( purchaseOrderVO.orderDealer.taxSubsidy || 0, ); // 根据公式计算税费补贴默认值 const calculateDefaultTaxSubsidy = () => { if (dealerVO?.companyRebateRatio) { // 计算各种金额 const totalPackagingCost = getTotalPackagingCost(purchaseOrderVO); const salesAmount1 = getSalesAmount(purchaseOrderVO); const marketPrice = salesAmount1 + totalPackagingCost; // 市场报价 // 使用 multiply 方法符合项目规范 return multiply(marketPrice, dealerVO.companyRebateRatio / 100); } return 0; }; // 当dealerVO变化时,自动计算税费补贴 useEffect(() => { if (!purchaseOrderVO.orderDealer.taxSubsidy) { const defaultValue = calculateDefaultTaxSubsidy(); setTaxSubsidy(defaultValue); // 更新父组件的状态 onChange?.({ ...purchaseOrderVO, orderDealer: { ...purchaseOrderVO.orderDealer, taxSubsidy: defaultValue, }, }); } }, []); // 设置税费补贴默认值 const setDefaultTaxSubsidy = () => { const defaultValue = calculateDefaultTaxSubsidy(); setTaxSubsidy(defaultValue); }; // 保存税费补贴 const saveTaxSubsidy = () => { onChange?.({ ...purchaseOrderVO, orderDealer: { ...purchaseOrderVO.orderDealer, taxSubsidy, }, }); setVisible(false); }; return ( {/* 卡片形式展示返点信息 */} 返点信息 {!readOnly ? ( setVisible(true)}> 返点金额 {taxSubsidy || "0.00"} ) : ( 返点金额 {taxSubsidy || "0.00"} )} 返点百分比 {dealerVO.companyRebateRatio ? dealerVO.companyRebateRatio + "%" : "未设置"} {/* 税费补贴弹窗 */} setVisible(false)} onOverlayClick={() => { setVisible(false); }} lockScroll > 税费补贴金额 { const numValue = validatePrice(value); if (numValue !== undefined) { setTaxSubsidy(numValue as any); } }} /> 默认值: 市场报价 × {dealerVO.companyRebateRatio || "未设置"}% ); }