feat: 分离表单价格录入组件
parent
307b23021d
commit
2aa7769709
@ -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 (
|
||||||
|
<Space.Compact id={id}>
|
||||||
|
<Input
|
||||||
|
type='text'
|
||||||
|
value={value.numberStart || numberStart}
|
||||||
|
onChange={onNumberStartChange}
|
||||||
|
style={{
|
||||||
|
width: '20%',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Input
|
||||||
|
type='text'
|
||||||
|
value={value.numberEnd || numberEnd}
|
||||||
|
onChange={onNumberEndChange}
|
||||||
|
style={{
|
||||||
|
width: '40%',
|
||||||
|
}}
|
||||||
|
addonBefore='~'
|
||||||
|
/>
|
||||||
|
<Input
|
||||||
|
type='text'
|
||||||
|
value={value.audultPrice || audultPrice}
|
||||||
|
onChange={onAudultPriceChange}
|
||||||
|
style={{
|
||||||
|
width: '70%',
|
||||||
|
}}
|
||||||
|
addonBefore='成人价'
|
||||||
|
/>
|
||||||
|
<Input
|
||||||
|
type='text'
|
||||||
|
value={value.childrenPrice || childrenPrice}
|
||||||
|
onChange={onChildrenPriceChange}
|
||||||
|
style={{
|
||||||
|
width: '70%',
|
||||||
|
}}
|
||||||
|
addonBefore='儿童价'
|
||||||
|
/>
|
||||||
|
</Space.Compact>
|
||||||
|
)
|
||||||
|
}
|
Loading…
Reference in New Issue