import React, { Component, Fragment } from 'react';
import { Form, Select, Input,InputNumber,DatePicker,TreeSelect,Cascader,Checkbox,Radio } from 'antd';
import global from '@/global.less';
import { sldInputAfterAddons, } from '@/utils/utils';
import styles from './SldEditFormCom.less';
const FormItem = Form.Item;
const { RangePicker } = DatePicker;
const InputGroup = Input.Group;
const RadioGroup = Radio.Group;
const CheckboxGroup = Checkbox.Group;
const Option = Select.Option;
const {TextArea} = Input;
export default class SldEditFormCom extends Component {
componentDidMount() {
}
//处理input内容变化事件
handleInputOnchange = (e,item) => {
if(item.handleChange){
item.handleChange(e);
}
}
//多选事件
sldCheckShop = (items, value) => {
if (items.sldCheckShop) {
items.sldCheckShop(value);
}
};
redioOnChange = (e,val) => {
if(val.onChange){
val.onChange(e.target.value);
}
}
commonCon = (val,index) => {
let {
form: { getFieldDecorator },item_width,
} = this.props;
//普通输入框
item_width = item_width!=undefined?item_width:'auto'
if(val.type == 'input'){
// 统一规则定义
const unifyInputRules = [
{
validator: (_, value, callback) => {
const hasEmoji = /([\u2700-\u27BF]|[\uE000-\uF8FF]|[\uD800-\uDBFF][\uDC00-\uDFFF])/.test(value);
if (hasEmoji) {
callback('不支持输入表情符号');
} else {
callback();
}
},
},
];
return (
{getFieldDecorator(val.name,{initialValue:val.initialValue,rules: [...(val.rules || []), ...unifyInputRules]})(
)}
);
}else if(val.type == 'inputnum'){
//数字搜索框
return (
{getFieldDecorator(val.name,{initialValue:val.initialValue,rules:val.rules})(this.handleInputOnchange(e,val)}/>)}
);
}else if(val.type == 'select'){
//下拉选择框
return (
{getFieldDecorator(val.name,{initialValue:val.initialValue?val.initialValue:undefined,rules:val.rules})(
)}
);
}else if(val.type == 'textarea'){
return (
{getFieldDecorator(val.name,{initialValue:val.initialValue,rules:val.rules})(
);
}else if(val.type == 'rangepicker'){
//时间范围选择器
return (
{getFieldDecorator(val.name)(
{
return triggerNode.parentNode
}}
/>
)}
);
}else if(val.type == 'datepicker'){
//时间选择器
return (
{val.initialValue&&getFieldDecorator(val.name,{initialValue:val.initialValue,rules:val.rules})(
{
return triggerNode.parentNode
}}
className={styles.item}/>
)}
{!val.initialValue&&getFieldDecorator(val.name,{rules:val.rules})(
{
return triggerNode.parentNode
}}
className={styles.item}/>
)}
);
}else if(val.type == 'rangeval'){
//范围选择器
return (
{getFieldDecorator([val.name1])()}
{getFieldDecorator([val.name2])()}
);
}else if(val.type == 'input_after'){
//带图标后缀
return (
val.callback(val.operate_obj)}>
{getFieldDecorator(val.name,{initialValue:val.initialValue,rules:val.rules})(
)}
);
}else if(val.type == 'textarea_single'){
return
{getFieldDecorator(val.name,{initialValue:val.initialValue,rules:val.rules})(
;
}else if(val.type == 'TreeSelect'){
return
{getFieldDecorator(val.name,{initialValue:val.initialValue,rules:val.rules})(
triggerNode.parentNode}
/>
)}
;
}else if(val.type == 'cascader'){
//三级地址选择
return (
{getFieldDecorator(val.name,{initialValue:val.initialValue,rules:val.rules})(
)}
);
}else if(val.type == 'single_checkbox'){
//选择框
return (
{getFieldDecorator(val.name,{valuePropName:'checked',initialValue:val.initialValue,rules:val.rules})(
{val.check_con}
)}
);
}else if(val.type == 'radio'){
//radio
return (
{getFieldDecorator(val.name,{valuePropName:'checked',rules:val.rules,initialValue:val.initialValue})(
this.redioOnChange(e,val)}>
{val.sel_data.map((item,index)=>{
return {item.name}
})}
)}
);
}else if(val.type == 'checkboxgroup'){
//radio
return (
{getFieldDecorator(val.name,{initialValue: val.initialValue,rules:val.rules})(
this.sldCheckShop(val, value)}/>,
)}
);
}
}
//渲染每一项
renderSearchSecond = (search_data) => {
return search_data.map((item,index)=>{
return this.commonCon(item,index);
});
}
renderSimpleForm() {
const {search_data} = this.props;
return (
search_data.length>0&&
{this.renderSearchSecond(search_data)}
);
}
render() {
return this.renderSimpleForm();
}
}