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 { PurchaseOrderCalculator } from "@/utils/PurchaseOrderCalculator"; export default function TaxProvisionSection(props: { purchaseOrderVO: BusinessAPI.PurchaseOrderVO; onChange?: (purchaseOrderVO: BusinessAPI.PurchaseOrderVO) => void; readOnly?: boolean; }) { const { purchaseOrderVO, onChange, readOnly } = props; const orderDealer = purchaseOrderVO.orderDealer; const calculator = new PurchaseOrderCalculator(purchaseOrderVO); const [visible, setVisible] = useState(false); const [taxProvision, setTaxProvision] = useState( orderDealer?.taxProvision || 0, ); useEffect(() => { if (!orderDealer?.taxProvision) { const defaultValue = calculator.getDefaultTaxProvision(); setTaxProvision(defaultValue); // 更新父组件的状态 onChange?.({ ...purchaseOrderVO, orderDealer: { ...orderDealer, taxProvision: defaultValue, }, }); } }, []); // 设置计提税金默认值 const setDefaultTaxProvision = () => { const defaultValue = calculator.getDefaultTaxProvision(); setTaxProvision(defaultValue); }; useEffect(() => {}, [visible]); // 保存计提税金 const saveTaxProvision = () => { onChange?.({ ...purchaseOrderVO, orderDealer: { ...orderDealer, taxProvision: taxProvision, }, }); setVisible(false); }; return ( {/* 卡片形式展示计提税金信息 */} 计提税金 {!readOnly ? ( setVisible(true)}> 计提金额 {taxProvision || "0.00"} ) : ( 计提金额 {taxProvision || "0.00"} )} 计提税率 {orderDealer.accrualTaxRatio ? orderDealer.accrualTaxRatio + "%" : "未设置"} {/* 计提税金弹窗 */} setVisible(false)} onOverlayClick={() => { setVisible(false); }} lockScroll > 计提税金金额 { const numValue = validatePrice(value); if (numValue !== undefined) { setTaxProvision(numValue as number); } }} /> 默认值: (市场报价 - 税费补贴) ×{" "} {orderDealer.accrualTaxRatio || "未设置"}% ); }