运用element的el-uplaod drag 拖拽属性实现拖拽上传
action=“” 设为空 如有会直接上传 跳过校验
在before-upload 中做校验 注意:return false 否者会另外再发起一个本地空请求
<el-form :model="documentForm" ref="fromRef" :inline="true" size="small" :rules="rules" label-position="top">
<el-row v-for="(item,index) in documentForm.files" :key="index" style="width:100%">
<el-col :span="24">
<el-form-item label="文件类型:" :prop="`files.${index}.operModule`" :rules="rules.operModule">
<el-select style="width:100%;" :disabled="openType == '2'" filterable :popper-append-to-body="false" clearable v-model="item.operModule">
<el-option v-for="(item,index) in operModuleData" :key="index" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="附件文件:" class="uploadBox" :prop="`files.${index}.fileName`" :rules="rules.fileName">
<el-upload class="upload-demo" :limit="1" action="" :before-upload="(file)=>{uploadFile(file,item,index); return false}" drag >
<div class="el-upload__text">
<em>点击或拖拽到此处上传文件</em>
</div>
</el-upload>
</el-form-item>
</el-col>
</el-row>
</el-form>
function uploadFile(file:any,data:any,index:number) {
//进行检验
fromRef.value.validateField(`files.${index}.operModule`,((val:any)=>{
if(val){
return ElMessage.warning('请先选择文件类型')
}else{
let formFileData = new FormData();
formFileData.append('file', file);
formFileData.append('operModule', data.operModule);
api(formFileData).then(res=>{
if(res.status == '1000'){
ElMessage.success('上传成功!')
}
})
}
}))
}