import React from 'react'; import { Icon, Modal, message, Spin, Upload, Input, Button, Radio, Form } from 'antd'; import { splitUrl} from '@/tools.js'; const PicturesWall = React.createClass({ getInitialState() { return { previewVisible: false, previewImage: '', fileList: [], tags: [] }; }, handleCancel() { this.setState({ previewVisible: false }); }, handlePreview(file) { this.setState({ previewImage: file.url || file.thumbUrl, previewVisible: true }); }, handleChange(info) { let fileList = info.fileList; this.setState({ fileList }); this.props.fileList(fileList); }, componentWillReceiveProps(nextProps) { this.state.fileList = nextProps.pictureUrl; }, render() { const { previewVisible, previewImage, fileList } = this.state; const uploadButton = (
点击上传
); return (
{fileList.length >= 1 ? null : uploadButton} example
); } }); class BannerForm extends React.Component { constructor(props) { super(props); this.state = { loading: false, imgUrl: [], visible:false }; } cancelFun(){ this.props.closeDesc(); } loadData(id) { this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + '/api/admin/banners/details' , data: { id: id }, success: function (data) { let thisData = data.data; if (!thisData) { if (data.error && data.error.length) { message.warning(data.error[0].message); }; thisData = {}; }; this.setState({ id: thisData.id, //品类ID data:thisData, imgUrl: thisData.imgUrl ? splitUrl(thisData.imgUrl, ',', globalConfig.avatarHost + '/upload') : [], }); }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); } handleSubmit(e){ e.preventDefault(); this.props.form.validateFields((err, values) => { //url转化 let thePictureUrl = []; if (this.state.imgUrl.length) { let picArr = []; this.state.imgUrl.map(function (item) { if ( item.response && item.response.data && item.response.data.length ){ picArr.push(item.response.data); } }); thePictureUrl = picArr.join(","); }else{ message.warning('请上传图片!'); return false; }; if (!err) { this.setState({ loading: true }); $.ajax({ method: "post", dataType: "json", async:true, url: this.props.data.id ? globalConfig.context + '/api/admin/banners/update' : globalConfig.context + '/api/admin/banners/save', data: { id:this.props.data.id, text:values.text, forwardUrl:values.forwardUrl, apiUrl:values.apiUrl, imgUrl:thePictureUrl.length?thePictureUrl:'', deleteSign:false, client:values.client } }).done(function (data) { this.setState({ loading: false }); if (!data.error.length) { message.success('操作成功!'); this.setState({ visible: false }); this.props.handOk(); } else { message.warning(data.error[0].message); } }.bind(this)); } }) } componentWillMount() { if (this.props.data&&this.props.data.id) { this.loadData(this.props.data.id); } else { this.state.data = {}; this.state.imgUrl = []; }; } componentWillReceiveProps(nextProps) { if (!this.props.visible && nextProps.visible) { this.state.textFileList = []; this.state.videoFileList = []; if (nextProps.data.id) { this.loadData(nextProps.data.id); } else { this.state.data = {}; this.state.imgUrl = []; }; this.props.form.resetFields(); }; } render() { const { getFieldDecorator } = this.props.form; const FormItem = Form.Item; const formItemLayout = { labelCol: { span: 6 }, wrapperCol: { span: 12 }, }; let theData = this.state.data||{}; return (
{getFieldDecorator('text', { rules: [ { required: true, message: '此项为必填项!' } ], initialValue: theData.text })()}
{getFieldDecorator('forwardUrl', { initialValue: theData.forwardUrl })()}
{getFieldDecorator('apiUrl', { rules: [ { required: true, message: '此项为必填项!' } ], initialValue: theData.apiUrl })()}
{getFieldDecorator('client', { rules: [ { required: true, message: '此项为必填项!' } ], initialValue: theData.client })( 网站 App ) }
* 轮播图}> {this.setState({imgUrl:e})}} pictureUrl={this.state.imgUrl} visible={this.props.visible} />
); } } export default Form.create()(BannerForm);