import React from 'react'; import { Form, Input, InputNumber, Checkbox, Radio, DatePicker, TimePicker, Select, } from 'antd'; import ImageUploader from './ImageUpload'; const Item = Form.Item const { Option } = Select; const { MonthPicker, RangePicker } = DatePicker const FieldTypes = { Text: 'Text', Password: 'Password', Number: 'Number', Switch: 'Switch', TimePicker: 'TimePicker', DatePicker: 'DatePicker', RangePicker: 'RangePicker', MonthPicker: 'MonthPicker', Select: 'Select', ImageUploader: 'ImageUploader', } const tailFormItemLayout = { wrapperCol: { xs: { span: 24, offset: 0, }, sm: { span: 16, offset: 8, }, }, }; const WrapperItem = (props) => { const { form, label, name, type, placeholder, render, rules, value, dict, action, props: fieldProps, ...restProps } = props; const { getFieldDecorator } = form || {}; let config = { rules, initialValue: value } if (type === FieldTypes.Switch) { config = { ...config, valuePropName: 'checked', }; } if (type === FieldTypes.ImageUploader) { config = { ...config, getValueFromEvent: x => x, }; } // 没有类型与组件, 生成隐藏字段 if (!type && !render) { getFieldDecorator(name, config); return <>; } const SelectOpts = (dict || []).map((item, index) => ()) let Field = <>; if (render) { Field = typeof render === 'function' ? render(props) : render } else { switch (type) { case FieldTypes.Text: Field = ; break; case FieldTypes.Password: Field = ; break; case FieldTypes.Number: Field = ; break; case FieldTypes.Switch: Field = ; break; case FieldTypes.TimePicker: Field = ; break; case FieldTypes.DatePicker: Field = ; break; case FieldTypes.RangePicker: Field = ; break; case FieldTypes.MonthPicker: Field = ; break; case FieldTypes.Select: Field = break; case FieldTypes.ImageUploader: Field = break; default: throw new Error(`暂时不支持的组件类型: ${type}`) } } if (!label && !name && !action) return Field; const itemProps = action ? { ...restProps, ...tailFormItemLayout } : restProps return ( {action ? Field : getFieldDecorator(name, config)(Field)} ) }; export default WrapperItem; export { FieldTypes };