index.js 1.92 KB
Newer Older
陈龙's avatar
陈龙 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
import React, { useEffect, useState } from 'react';
import { AutoComplete, InputNumber } from 'antd';
import { useRef } from 'react/index';
/**
* @params {string} type 单元格 统计栏
* */
const NumberConfig = ({ value, onChange, defaultValues, type }) => {
  const [values, setValues] = useState({
    prefix: '',
    suffix: '',
    precision: '',
    ratio: 1,
  });
  const wrapper = {
    display: 'flex',
    gap: 6,
  };
  const width = { width: 80 };
  const optRef = useRef({
    prefix: [
      { value: '$' }, { value: '¥' },
    ],
    suffix: [
      { value: '千' }, { value: '万' }, { value: '元' }, { value: '万元' },
    ],
    precision: [
      { value: '0.0' }, { value: '0.00' }, { value: '0.000' }, { value: '0.0000' },
    ],
  });
  const valueChange = (key, value) => {
    let _values = { ...values };
    _values[key] = value;
    setValues(_values);
    onChange(_values);
  };
  useEffect(() => {
    let _values = { ...values };
    _values.prefix = value;
  }, [value]);
  return <div style={wrapper}>
    {/* 精度 倍率 前缀 后缀 类型*/}
    <AutoComplete onChange={(e) => valueChange('prefix', e)}
                  value={values.prefix} placeholder={'前缀'}
                  options={optRef.current.prefix} style={{ ...width }}/>
    <AutoComplete onChange={(e) => valueChange('suffix', e)}
                  value={values.suffix} placeholder={'单位/后缀'}
                  options={optRef.current.suffix}
                  style={{ ...width, width: 100 }}/>
    <AutoComplete onChange={(e) => valueChange('precision', e)}
                  value={values.precision} placeholder={'精度'}
                  options={optRef.current.precision} style={{ ...width }}/>
    <span>倍率:<InputNumber onChange={(e) => valueChange('ratio', e)}
                          value={values.ratio} step={1} style={{ ...width }}
                          min={1}/></span>
  </div>;
};
export default NumberConfig;