天天看点

vue+element 表单提交

工作中我们经常会遇到表单提交,element中默认的文件上传是及时上传,很不方便,所以我们需要让上传的文件与表单的内容一起提交

在表单浮层中

<!-- 用户导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
    <el-upload
    ref="upload"
    :limit="1"
    accept=".xlsx, .xls"
    :headers="upload.headers"
    :action="upload.url + '?fileType=' + upload.fileType"
    :disabled="upload.isUploading"
    :on-progress="handleFileUploadProgress"
    :on-success="handleFileSuccess"
    :auto-upload="false"
    drag>
    <i class="el-icon-upload"></i>
    <div class="el-upload__text">
        将文件拖到此处,或
        <em>点击上传</em>
    </div>
    <div class="el-upload__tip" slot="tip">
        <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
        <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
    </div>
    <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
    </el-upload>
    <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitFileForm">确 定</el-button>
        <el-button @click="upload.open = false">取 消</el-button>
    </div>
</el-dialog>
           

参数设置

// 用户导入参数
upload: {
    // 是否显示弹出层(用户导入)
    open: false,
    // 弹出层标题(用户导入)
    title: "",
    // 是否禁用上传
    isUploading: false,
    // 是否更新已经存在的用户数据
    updateSupport: 0,
    // 设置上传的请求头部
    headers: { Authorization: "Bearer " + getToken() },
    fileType:1,
    // 上传的地址
    url: window.$server_config.VUE_APP_BASE_API + "/bus/video/importVideo"
},
           

方法:

// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
    this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
    this.upload.open = false;
    this.upload.isUploading = false;
    this.$refs.upload.clearFiles();
    this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
    this.getList();
},
// 提交上传文件
submitFileForm() {
    this.$refs.upload.submit();
},