Vue + iView实现Excel上传功能的完整代码

1、HTML部分

<Col span=\"2\">上传文件:</Col>
<Col span=\"22\" class=\"uploadExcelBox\">
    <Upload ref=\"uploadExcel\" :loading=\"uploadLoading\" :action=\"uploadFileUrl\" accept=\"xlsx,xls\" :format=\"uploadFormat\" :before-upload=\"beforeImgFile\" :on-success=\"successImgFile\" :on-error=\"errorImgFile\" :show-upload-list=\"true\">
         <Button type=\"success\">上传附件</Button>
	 </Upload>
     <div v-if=\"uploadingFile !== null\">待上传文件:
          <span class=\"blueFont\">{{ fileName }}</span>
          <Button @click=\"uploadFun(index)\" :loading=\"loadingStatus\" class=\"manualUploadBtn\">{{ loadingStatus ? \'上传中...\' : \'点击开始上传\' }}</Button>
      </div>
</Col>

2、JS部分

<script>
    // import excel from \'@/libs/excel\'
	import service from \'@/libs/request\' //用来取当前域名
	import reportFormApi from \'@/api/reportForm\'
    export default {
        data() {
            return {
                uploadLoading:false,//上传控件loading状态
				uploadFileUrl: \"\",
				uploadFormat:[\'xlsx\',\'xls\'],
				uploadingFile:null,//待上传的文件
                loadingStatus:false,//upload组件的状态
                fileName:\"\",//待上传文件的名称
            }
        },
        mounted() {
            this.uploadFileUrl = service.apiUrl + \"/qingximaster/winInfo/execlAdd\";//上传Excel的接口路径,后端人员提供。
        },
        methods: {
			// 图片上传之前
			beforeImgFile(file) {
				// console.log(file);
				const fileExt = file.name.split(\'.\').pop().toLocaleLowerCase()
				if (fileExt === \'xlsx\' || fileExt === \'xls\') {
					var formdata = new FormData();
					formdata.append(\"file\",file);
                    this.fileName = formdata.get(\'file\').name;//通过formdata.get(\'file\')方法,可以取file文件里的信息,例如Excel的文件名。
					this.uploadingFile =  formdata;//注意:这个将作为参数传给接口实现上传。传给接口的file不需要 formdata.get(\'file\'),直接传file。
				} else {
					this.$Notice.warning({
						title: \'文件类型错误\',
						desc: \'文件:\' + file.name + \'不是EXCEL文件,请选择后缀为.xlsx或者.xls的EXCEL文件。\'
					})
				}
				return false
			},
			// 上传成功
			successImgFile(response, file, fileList) {
                this.$Notice.success({
                    title: \'提示\',
                    desc: \'上传成功!\'
                })
			},
			// 上传失败
			errorImgFile(error, file, fileList) {
				this.$Notice.success({
                    title: \'提示\',
                    desc: \'上传失败!\'
                })
				console.log(error);
			},
			uploadFun(index){//调接口上传Excel
				this.loadingStatus = true;
				reportFormApi.uploadExcel({
                    url: this.uploadFileUrl,
                    file: this.uploadingFile
                }).then(res =>{
					this.uploadingFile = null;
                    this.fileName = \"\";
                    if(res.code==0){
                        this.infoList[index].content = JSON.stringify(res.data);
					    // console.log(this.infoList[index].content);
                        this.$Message.success(\"上传成功!\");
                    }else{
                        this.$Message.error(res.message);
                    }
				}).finally(()=>{
					this.loadingStatus = false;
                    this.uploadLoading = false;
                })
			},
        }
    }

3、页面效果如下

(1)进入页面默认展示的样子

Vue + iView实现Excel上传功能的完整代码

 (2)选中要上传的Excel

Vue + iView实现Excel上传功能的完整代码

 (3)“点击开始上传”之后

Vue + iView实现Excel上传功能的完整代码

 Vue + iView实现Excel上传功能的完整代码

以上就是Vue + iView实现Excel上传的详细内容,更多关于vue iview excel上传的资料请关注其它相关文章!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容