子组件表单是新增表单或修改表单的话,有三种写法。
1.将确定按钮放在子组件的方式,请求方法写在子组件每次新增或修改时,在子组件进行操作。
1.1 在点击确定的同时校验,校验通过的话可以进行请求,请求成功通过**$emit的方式通知父组件 刷新表格数据**,关闭子组件弹窗。
2.将确定按钮放在父组件,子组件只有表单,请求方法写在子组件
(这种方式可以有两种,另外一种方式下面在写)
2.1 将校验请求方法写在子组件中,通过
r
e
f
调
用
子
组
件
的
方
法
,
进
行
校
验
,
如
果
校
验
成
功
则
发
送
请
求
,
然
后
通
过
ref调用子组件的方法,进行校验,如果校验成功则发送请求,然后通过
ref调用子组件的方法,进行校验,如果校验成功则发送请求,然后通过emit的方式通知父组件 刷新表格数据,关闭弹窗。
3.将确定按钮放在父组件(请求方法写在父组件),子组件只有表单(校验参数,校验成功则return 参数)
3.1 子组件如果返回参数给父组件
子组件通过Promise返回,
getEdit() {
return new Promise((resolve, reject) => {
this.form.validateFields(["checkRecord", "checkPoint`"], (err) => {
if (!err) {
let data = {
id: this.ids,
};
// // 自己测试添加的数据
// data.imgList = undefined;
// 获取复核记录和扣分值
data.reviewRecord = this.form.getFieldValue("checkRecord");
data.fraction = this.form.getFieldValue("checkPoint");
resolve(data);
} else {
reject(err);
}
});
});
},
父组件调用使用async,await,得到参数,再发送请求
async reviewOk() {
let data = await this.$refs.formView.getEdit();
console.log(data);
let res = await this.$http(
this.$url.MONTHLY_INSPECTION_REPORT_EDIT,
"put",
data
);
if (res.data.code === 0) {
this.$message.success("复核成功!");
// // this.pagination.current = 1
this.$nextTick(() => {
this.addCount = 0;
this.getTable(this.yearsFirst);
this.reviewTemplate = false;
this.$refs.formView.reseting();
});
}
},
方法总比困难多,不要慌慢慢写