| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- import { Checkbox, InputNumber, DatePicker, Input, Select } from 'antd';
- import moment from 'moment';
- import { useEffect, useState } from 'react';
- interface Props {
- value: any;
- type: any;
- enum: any;
- onChange: (value: any) => void;
- }
- const FIndicators = (props: Props) => {
- const { value, onChange, type } = props;
- const DatePicker1: any = DatePicker;
- const [list, setList] = useState<any[]>([]);
- useEffect(() => {
- const arr = [];
- if (!!props.enum?.falseText && props.enum?.falseValue !== undefined) {
- arr.push({ text: props.enum?.falseText, value: props.enum?.falseValue });
- }
- if (!!props.enum?.trueText && props.enum?.trueValue !== undefined) {
- arr.push({ text: props.enum?.trueText, value: props.enum?.trueValue });
- }
- setList(arr);
- }, [props.enum]);
- const renderComponent = () => {
- if (['int', 'long', 'double', 'float'].includes(type)) {
- return (
- <>
- <InputNumber
- value={value?.value ? value?.value[0] : ''}
- onChange={(val) => {
- if (value?.range) {
- onChange({
- ...value,
- value: [val > value?.value[1] ? value?.value[0] : val, value?.value[1] || ''],
- });
- } else {
- onChange({
- ...value,
- value: [val],
- });
- }
- }}
- />
- {value.range && (
- <>
- ~
- <InputNumber
- value={value?.value ? value?.value[1] : ''}
- onChange={(val) => {
- onChange({
- ...value,
- value: [value?.value[0], val > value?.value[0] ? val : value?.value[1]],
- });
- }}
- />
- </>
- )}
- </>
- );
- } else if (type === 'date') {
- if (value.range) {
- return (
- <DatePicker1.RangePicker
- allowClear={false}
- showTime
- value={
- value?.value && [
- !!value?.value[0] && moment(value.value[0], 'YYYY-MM-DD HH:mm:ss'),
- !!value?.value[1] && moment(value.value[1], 'YYYY-MM-DD HH:mm:ss'),
- ]
- }
- onChange={(_: any, date: string[]) => {
- onChange({
- ...value,
- value: [...date],
- });
- }}
- />
- );
- } else {
- return (
- <DatePicker1
- showTime
- allowClear={false}
- value={
- value?.value && value.value?.[0]
- ? moment(value.value[0], 'YYYY-MM-DD HH:mm:ss')
- : undefined
- }
- onChange={(_: any, date: string) => {
- onChange({
- ...value,
- value: [date],
- });
- }}
- />
- );
- }
- } else if (type === 'boolean') {
- return (
- <Select
- style={{ width: '100%' }}
- placeholder={'请选择'}
- value={value?.value}
- onChange={(val) => {
- const obj = {
- ...value,
- value: [val],
- };
- onChange(obj);
- }}
- >
- {list.map((item) => (
- <Select.Option value={item.value}>{item.text}</Select.Option>
- ))}
- </Select>
- );
- } else {
- return (
- <>
- <Input
- value={value?.value ? value?.value[0] : ''}
- onChange={(e) => {
- onChange({
- ...value,
- value: [e.target.value, value?.value && value?.value[1]],
- });
- }}
- />
- {value.range && (
- <>
- ~
- <Input
- value={value?.value ? value?.value[1] : ''}
- onChange={(e) => {
- onChange({
- ...value,
- value: [value?.value && value?.value[0], e.target.value],
- });
- }}
- />
- </>
- )}
- </>
- );
- }
- };
- return (
- <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
- {renderComponent()}
- {type !== 'boolean' && (
- <Checkbox
- style={{ minWidth: 60, marginLeft: 5 }}
- checked={value?.range}
- onChange={(e) => {
- onChange({
- ...value,
- value: e.target.checked ? [undefined, undefined] : [undefined],
- range: e.target.checked,
- });
- }}
- >
- 范围
- </Checkbox>
- )}
- </div>
- );
- };
- export default FIndicators;
|