import React, { Component, Fragment } from 'react' import { Button, Modal, Form, message, Upload } from 'antd' const FormItem = Form.Item export default class FormUpload extends Component { formRef = React.createRef() constructor(props) { super(props) this.state = { editPanleType: true } /* 上传模块 */ this.uploadProps = { name: 'file', action: 'https://wbx-up-prod.fapiaoer.cn/api/advertiseResConf/uploadFile?cos=1', headers: { authorization: 'authorization-text', }, accept: '.xls,.xlsx,.csv,.png', onChange(info) { if (info.file.status === 'done') { // message.success('上传成功!') } else if (info.file.status === 'error') { // message.error(`${info.file.name} file upload failed.`); } }, }; } componentDidMount() { this.formRef.current && this.formRef.current.setFieldsValue({ certificate_url_list: [{ uid: '1', // uid 必须要有,否则会报错 name: 'xxx.png', status: 'done', response: 'Server Error 500', // custom error message to show url: 'http://www.baidu.com/xxx.png', },{ uid: '3', name: 'zzz.png', status: 'error', response: 'Server Error 500', // custom error message to show url: 'http://www.baidu.com/zzz.png', }] }) } /** * * @param {*} 上传 */ normFile = (e) => { console.log('Upload event:', e); if (e.file.status === 'done') { message.success('上传成功!') if (Array.isArray(e)) { return e.slice(-1); // 只能上传一个文件,后面上传的文件会覆盖前面的文件 } return e && e.fileList.slice(-1); } else if (e.file.status === 'error') { console.log(`${e.file.name} 文件上传失败.`); if (Array.isArray(e)) { e.splice(e.length - 1); return e } e && e.fileList.splice(e.fileList.length - 1) return e && e.fileList; // 上传失败,则删除失败的文件 } else { // 手动删除文件 console.log('手动删除文件', e); if (Array.isArray(e)) { return e; } return e && e.fileList; } }; /* 保存formData */ saveFormData = () => { console.log(this.formRef.current.getFieldsValue()) this.formRef.current.validateFields().then(form => { console.log('form',form) }) } switchEditPanel = () => { this.setState({ editPanleType: false }) } render() { const { editPanleType } = this.state const title = '新建' return ( <div className="pay-account-management"> <Modal width="860px" destroyOnClose className="ProcessConfigModal" title={title} visible={editPanleType} onCancel={() => this.switchEditPanel()} onOk={this.saveFormData} > <Form ref={this.formRef} style={{ width: '90%' }} labelCol={{ flex: '160px' }} labelAlign="right"> {/* <FormItem name="certificate_url_list" label="文件" valuePropName="fileList" getValueFromEvent={e => this.normFile(e)} rules={[{ required: true, message: '请上传文件' }]} extra='备注信息' > <Upload {...this.uploadProps}> <Button type="primary"> 上传文件 </Button> </Upload> </FormItem> */} {/* 组件方式 */} <FormItemUpload certificateUrlList={"certificate_url_list"}></FormItemUpload> </Form> </Modal> </div> ) } } const FormItemUpload = (props) => { const { certificateUrlList } = props const uploadProps = { name: 'file', action: 'https://wbx-up-prod.cn/uploadFile?cos=1', headers: { authorization: 'authorization-text', }, accept: '.xls,.xlsx,.csv,.png', onChange(info) {}, }; const normFile = (e) => { console.log('Upload event:', e); if (e.file.status === 'done') { message.success('上传成功!') if (Array.isArray(e)) { return e.slice(-1); // 只能上传一个文件,后面上传的文件会覆盖前面的文件 } return e && e.fileList.slice(-1); } else if (e.file.status === 'error') { console.log(`${e.file.name} 文件上传失败.`); if (Array.isArray(e)) { e.splice(e.length - 1); return e } e && e.fileList.splice(e.fileList.length - 1) return e && e.fileList; // 上传失败,则删除失败的文件 } else { // 手动删除文件 console.log('手动删除文件', e); if (Array.isArray(e)) { return e; } return e && e.fileList; } }; return ( <Fragment> <FormItem name={certificateUrlList} label="文件" valuePropName="fileList" getValueFromEvent={normFile} rules={[{ required: true, message: '请上传文件' }]} extra='备注信息' > <Upload {...uploadProps}> <Button type="primary"> 上传文件 </Button> </Upload> </FormItem> </Fragment> ) }