methods: {
// 前端发给后端的参数
postParams(){
let params = {};
// name 就是后端需要的字段
params.name = this.name;
return params; //最后把结果return出去
},
save() {
let arr = ["form", "tableform"]; //需要校验的两个表单
var resultArray = []; //用来接受返回结果的数组
var _self = this; // 保存this 防止丢失
function checkForm(formName) {
//封装验证表单的函数
var result = new Promise(function(resolve, reject) {
_self.$refs[formName].validate(valid => {
if (valid) {
resolve();
} else {
reject();
}
});
});
resultArray.push(result); //push 得到promise的结果
}
arr.forEach(item => {
//根据表单的ref校验
checkForm(item);
});
Promise.all(resultArr).then(function() {
// _self.msg 这个是自己传过来的值 用于判断是新增还是编辑 调用不同的接口
if (_self.msg == "预警方案新增") {
// _self.postParams() 是自己把前端的请求参数 封装了一个函数
capacitySave(_self.postParams()).then(res => {
if (res.data.code == 200) {
_self.$message.success("新增成功");
_self.drawer = false;
// 子传父 用来刷新列表
_self.$emit("list");
} else {
_self.$message.error("新增失败");
_self.drawer = false;
}
});
} else {
capacitySave(_self.postParams()).then(res => {
if (res.data.code == 200) {
_self.$message.success("编辑成功");
_self.drawer = false;
_self.$emit("list");
} else {
_self.$message.error("编辑失败");
_self.drawer = false;
}
});
}
});
},
}
vue + element + Promise 实现点击保存同时校验两个或者多个form表单
最新推荐文章于 2024-05-16 11:47:04 发布