From 2aa7769709193cb65301dce7a4d0bfc43cab2f7c Mon Sep 17 00:00:00 2001 From: Jimmy Liow Date: Thu, 8 Aug 2024 16:31:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=86=E7=A6=BB=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E5=BD=95=E5=85=A5=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/App.jsx | 2 +- .../products/Detail/PriceCompactInput.jsx | 107 +++++++++++++++++ .../products/Detail/ProductInfoQuotation.jsx | 108 +----------------- 3 files changed, 110 insertions(+), 107 deletions(-) create mode 100644 src/views/products/Detail/PriceCompactInput.jsx diff --git a/src/views/App.jsx b/src/views/App.jsx index 0ff7fa7..4689721 100644 --- a/src/views/App.jsx +++ b/src/views/App.jsx @@ -102,7 +102,7 @@ function App() {
- + App logo diff --git a/src/views/products/Detail/PriceCompactInput.jsx b/src/views/products/Detail/PriceCompactInput.jsx new file mode 100644 index 0000000..dd246bb --- /dev/null +++ b/src/views/products/Detail/PriceCompactInput.jsx @@ -0,0 +1,107 @@ +import { useState } from 'react' +import { Input, Space } from 'antd' + +export const PriceCompactInput = (props) => { + const { id, value = {}, onChange } = props + const [numberStart, setNumberStart] = useState(0) + const [numberEnd, setNumberEnd] = useState(0) + const [audultPrice, setAudultPrice] = useState(0) + const [childrenPrice, setChildrenPrice] = useState(0) + const triggerChange = (changedValue) => { + onChange?.({ + numberStart, + numberEnd, + audultPrice, + childrenPrice, + ...value, + ...changedValue, + }) + } + const onNumberStartChange = (e) => { + const newNumber = parseInt(e.target.value || '0', 10) + if (Number.isNaN(numberStart)) { + return + } + if (!('numberStart' in value)) { + setNumberStart(newNumber) + } + triggerChange({ + numberStart: newNumber, + }) + } + const onNumberEndChange = (e) => { + const newNumber = parseInt(e.target.value || '0', 10) + if (Number.isNaN(numberEnd)) { + return + } + if (!('numberEnd' in value)) { + setNumberEnd(newNumber) + } + triggerChange({ + numberEnd: newNumber, + }) + } + const onAudultPriceChange = (e) => { + const newNumber = parseInt(e.target.value || '0', 10) + if (Number.isNaN(audultPrice)) { + return + } + if (!('audultPrice' in value)) { + setAudultPrice(newNumber) + } + triggerChange({ + audultPrice: newNumber, + }) + } + const onChildrenPriceChange = (e) => { + const newNumber = parseInt(e.target.value || '0', 10) + if (Number.isNaN(childrenPrice)) { + return + } + if (!('childrenPrice' in value)) { + setChildrenPrice(newNumber) + } + triggerChange({ + childrenPrice: newNumber, + }) + } + return ( + + + + + + + ) +} \ No newline at end of file diff --git a/src/views/products/Detail/ProductInfoQuotation.jsx b/src/views/products/Detail/ProductInfoQuotation.jsx index ae8b99d..3d59f44 100644 --- a/src/views/products/Detail/ProductInfoQuotation.jsx +++ b/src/views/products/Detail/ProductInfoQuotation.jsx @@ -5,114 +5,10 @@ import { CloseOutlined, StarTwoTone, PlusOutlined, ExclamationCircleFilled } fro import { useDatePresets } from '@/hooks/useDatePresets' import dayjs from 'dayjs' import useProductsStore from '@/stores/Products/Index' +import PriceCompactInput from './PriceCompactInput' const { RangePicker } = DatePicker -const PriceInput = (props) => { - const { id, value = {}, onChange } = props - const [numberStart, setNumberStart] = useState(0) - const [numberEnd, setNumberEnd] = useState(0) - const [audultPrice, setAudultPrice] = useState(0) - const [childrenPrice, setChildrenPrice] = useState(0) - const triggerChange = (changedValue) => { - onChange?.({ - numberStart, - numberEnd, - audultPrice, - childrenPrice, - ...value, - ...changedValue, - }) - } - const onNumberStartChange = (e) => { - const newNumber = parseInt(e.target.value || '0', 10) - if (Number.isNaN(numberStart)) { - return - } - if (!('numberStart' in value)) { - setNumberStart(newNumber) - } - triggerChange({ - numberStart: newNumber, - }) - } - const onNumberEndChange = (e) => { - const newNumber = parseInt(e.target.value || '0', 10) - if (Number.isNaN(numberEnd)) { - return - } - if (!('numberEnd' in value)) { - setNumberEnd(newNumber) - } - triggerChange({ - numberEnd: newNumber, - }) - } - const onAudultPriceChange = (e) => { - const newNumber = parseInt(e.target.value || '0', 10) - if (Number.isNaN(audultPrice)) { - return - } - if (!('audultPrice' in value)) { - setAudultPrice(newNumber) - } - triggerChange({ - audultPrice: newNumber, - }) - } - const onChildrenPriceChange = (e) => { - const newNumber = parseInt(e.target.value || '0', 10) - if (Number.isNaN(childrenPrice)) { - return - } - if (!('childrenPrice' in value)) { - setChildrenPrice(newNumber) - } - triggerChange({ - childrenPrice: newNumber, - }) - } - return ( - - - - - - - ) -} - const batchSetupInitialValues = { 'defList': [ // 旺季 @@ -420,7 +316,7 @@ const ProductInfoQuotation = ({ editable, ...props }) => { {priceFieldList.map((priceField, index) => ( - + {index == 0 ? : priceOptList.remove(priceField.name)} />}