一、多form提交
业务逻辑问题是:
一个表单提交、另一个是文件上传。
导致了===》rules
虽然提示了,但是没有拦截住文件上传的提交
二、处理校验以及foreach和for...of
差异
- 获取
rules的key
const vali = Object.keys(this.rules)
为什么选这两种呢?因为要遍历对象,需要key,所以用这两种简单一点
- 先尝试
foreach
vali.forEach(e => {
if(this.mdInfo[e] === '') {
this.loading = false
return false
}
});
发现:没有这个
return false
没有起到作用
改用for...of
for (const i of vali) {
if(this.mdInfo[i] === '') {
this.loading = false
return false
}
}
结果:成功拦截住,不会调后面的接口了
三、最后补充一下文件上传的formData
- 直接上代码:
handleUploadFile (param) {
const formData = new FormData()
for (const key in this.Info) {
//除了一个file的key存文件,还可以补充令一个表单的参数
formData.append(key, this.mdInfo[key])
}
formData.append('file', param.file)
this.$axios.post(this.host + '/qn_biz/xxx/upload', formData).then(res => {
this.loading = false
if (res.status === 200 && res.data.code === 200) {
this.$refs.tables.refresh()
this.addVisible = false
this.$message.success('操作成功!')
this.$refs.mdInfo.reset()
this.$refs.dbInfo.reset()
} else {
this.$refs.tables.refresh()
this.$message.error(res.data.msg)
}
}).catch(e => {
this.$message.error(e.msg)
this.loading = false
})
}