/* * @Author: your name * @Date: 2021-12-20 09:53:02 * @Description: * @FilePath: \zl-business\src\components\Unit\labelControlAndNumberInput\index.tsx */ import React, { useEffect, useState } from 'react'; import { CaretDownOutlined, CaretUpOutlined } from '@ant-design/icons'; import { Slider, InputNumber } from 'antd'; import '../g.scss'; function LabelControlAndNumberInput(props: IControlAndNumberInput) { const { title, value, change, max, min, step, wrapStyle = { padding: '6px 20px 6px 20px' }, showUnit = true //是否显示单位 } = props; const [inputValue, setInputValue] = useState(value); useEffect(() => { setInputValue(value); }, [value]); const _change = (type: string, e: any) => { change(type, e); }; return (
{ _change('sliderblur', value); }} onChange={(value) => { setInputValue(value); }} />
{showUnit ? ( , downIcon: }} formatter={(value) => `${value}%`} parser={(value) => value.replace('%', '')} step={step||1} min={min} max={max} style={{ height: 28 }} value={inputValue} // defaultValue={inputValue} onChange={(value) => { setInputValue(value); }} onBlur={(e) => { let lastVal=step===1?parseInt(e.target.value):parseFloat(e.target.value) if ( e?.target?.value !== '' && !isNaN(lastVal) ) { let value1 = lastVal < min ? min : lastVal; let newValue = value1 > max ? max : value1; _change('inputnumberBlur', newValue); } else { setInputValue(value); _change('inputnumberBlur', value); } }} onPressEnter={(e) => { e.preventDefault(); e.stopPropagation(); let lastVal=step===1?parseInt(e.target.value):parseFloat(e.target.value) if ( e?.target?.value !== '' && !isNaN(lastVal) ) { let value1 = lastVal < min ? min : lastVal; let newValue = value1 > max ? max : value1; _change('inputnumberBlur', newValue); } else { setInputValue(value); _change('inputnumberBlur', value); } }} /> ) : ( , downIcon: }} min={min} max={max} step={step||1} style={{ height: 28 }} value={inputValue} // defaultValue={inputValue} onChange={(value) => { setInputValue(value); }} onBlur={(e) => { let lastVal=step===1?parseInt(e.target.value):parseFloat(e.target.value) if ( e?.target?.value !== '' && !isNaN(lastVal) ) { let value1 = lastVal < min ? min : lastVal; let newValue = value1 > max ? max : value1; _change('inputnumberBlur', newValue); } else { setInputValue(value); _change('inputnumberBlur', value); } }} onPressEnter={(e) => { e.preventDefault(); e.stopPropagation(); let lastVal=step===1?parseInt(e.target.value):parseFloat(e.target.value) if ( e?.target?.value !== '' && !isNaN(lastVal) ) { let value1 = lastVal < min ? min : lastVal; let newValue = value1 > max ? max : value1; _change('inputnumberBlur', newValue); } else { setInputValue(value); _change('inputnumberBlur', value); } }} /> )}
); } export default LabelControlAndNumberInput; export interface IControlAndNumberInput { title?: string; value?: number; change?: Function; max?: number; min?: number; step?: number; wrapStyle?: React.CSSProperties; showUnit?: boolean; }