美文网首页
导入excle(react + axios )

导入excle(react + axios )

作者: 是攀哥吖 | 来源:发表于2019-11-21 10:11 被阅读0次
    导入弹窗.png

    html 部分

    // Modal 是一个封装的弹窗组件, html 部分只需要input 即可
    <Modal title='导入数据' show={showImportModal} onConfirm={this.handleImportExcle.bind(this)} onCancel={this.handleCancleModel.bind(this)}>
          <input className='file-input' type="file" accept='.xls,.xlsx' onChange={this.handleChangeFile.bind(this)}></input>
    </Modal>
    

    业务逻辑处理部分

     // 导入
        handleImport() {
           // 解决第二次打开弹窗不选择文件, 保留的this.file 是上次的文件
            if(this.file) {
                this.file = ''
            }
            this.setState({
                showImportModal: true
            })
        }
        // input change 事件
        handleChangeFile(event) {
            this.file = event.target.files[0]
        }
    
      // 弹窗确认事件
        handleImportExcle() {
           if (!this.file || this.file === undefined) {
                msg('请选择需要导入的文件', 'warning')
                return
            }
            if(this.file.name.split('.')[1] === 'xls' || this.file.name.split('.')[1] === 'xlsx' ) {
                var formData = new FormData()
                // 接口需要的值,按下面方式添加就可以
                formData.append('file', this.file)
                formData.append('connectType', '2')
    
                importExcel('connectJointService/importGearBoxConnect', formData, () => this.update())
            }else {
                msg('文档格式不正确, 仅支持 .xls, .xlsx', 'warning')
                return
            }
            
            this.setState({
                showImportModal: false
            })
        }
    // 关闭弹窗事件
        handleCancleModel() {
            this.setState({
                showImportModal: false
            })
        }
    

    importExcel 组件

    import axios from 'axios'
    import config from './config'
    import msg from '../components/Msg';
    
    const importExcel = (url, params) => {
    // Content-Type 数据传输的类型, 这里一定要记得写上
    // url: 请求地址是因为我在后台统一配置了地址, 所以有了${config.searchServer}${url},这样我也可以在任意模块随意调用
     return new Promise((resolve, reject) => { 
            axios({
                method: 'POST',
                headers: {
                    'Content-Type': 'multipart/form-data'
                },
                url: `${config.searchServer}${url}`,
                data: params
            }).then(data => {
                 if (data.data.code === 0 || data.data.code === -1) {
                        msg(data.data.msg)
                    } 
                   resolve(data.data)
            }).catch(data => {
                    reject(data)
            })
        }
    }
    export default importExcel
    

    2019-11-19 18: 05

    相关文章

      网友评论

          本文标题:导入excle(react + axios )

          本文链接:https://www.haomeiwen.com/subject/wmrgictx.html