diff --git a/src/components/SectionList/index.jsx b/src/components/SectionList/index.jsx index e329549..8e22b03 100644 --- a/src/components/SectionList/index.jsx +++ b/src/components/SectionList/index.jsx @@ -22,12 +22,15 @@ import { v4 as uuidv4 } from "uuid"; import { supabase } from "@/config/supabase"; import { supabaseService } from "@/hooks/supabaseService"; const { Text } = Typography; +import { defaultSymbol, formatExchangeRate } from "@/utils/exchange_rate"; const SectionList = ({ form, isView, formValues, type, currentCurrency = "TWD", + taxRate, + setTaxRate, }) => { const [editingSectionIndex, setEditingSectionIndex] = useState(null); const [editingSectionName, setEditingSectionName] = useState(""); @@ -36,33 +39,6 @@ const SectionList = ({ const [loading, setLoading] = useState(false); const [units, setUnits] = useState([]); const [loadingUnits, setLoadingUnits] = useState(false); - const CURRENCY_SYMBOLS = { - CNY: "¥", - TWD: "NT$", - USD: "$", - }; - - const calculateItemAmount = (quantity, price) => { - const safeQuantity = Number(quantity) || 0; - const safePrice = Number(price) || 0; - return safeQuantity * safePrice; - }; - - const calculateSectionTotal = (items = []) => { - if (!Array.isArray(items)) return 0; - return items.reduce((sum, item) => { - if (!item) return sum; - return sum + calculateItemAmount(item.quantity, item.price); - }, 0); - }; - - const formatCurrency = (amount) => { - const safeAmount = Number(amount) || 0; - return `${CURRENCY_SYMBOLS[currentCurrency] || "NT$"}${safeAmount.toLocaleString("zh-TW", { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })}`; - }; const fetchAvailableSections = async () => { try { @@ -236,7 +212,7 @@ const SectionList = ({ {item.name} - {formatCurrency(item.price)} + {formatExchangeRate(currentCurrency, item.price)} ))} @@ -250,7 +226,8 @@ const SectionList = ({
总金额 - {formatCurrency( + {formatExchangeRate( + currentCurrency, (section.attributes.items || []).reduce( (sum, item) => sum + (item.price * (item.quantity || 1) || 0), @@ -323,7 +300,7 @@ const SectionList = ({ return (
- {formatCurrency(subtotal, currentCurrency)} + {formatExchangeRate(currentCurrency, subtotal)}
); @@ -345,13 +322,12 @@ const SectionList = ({ 小计总额: - {formatCurrency(total, currentCurrency)} + {formatExchangeRate(currentCurrency, total)}
); }); - return ( <> @@ -442,127 +418,137 @@ const SectionList = ({
描述/备注
单位
数量
-
单价
+
+ 单价({defaultSymbol}) +
小计
- {itemFields.map((itemField, itemIndex) => ( -
- { + const { key, ...restItemField } = itemField; + return ( +
- - - - - - - + + + + + +