问题描述
导入若依本地新增模块,使用主子表生成新模块,出现主表或子表无法完成在一个页面上新增和修改数据的情况,只能成功完成其中一个功能。
原因分析:
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateResidentinfo(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addResidentinfo(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
可以看到,这里使用的判断依据是id是否新的变化,但是这导致了一个问题,我的判断依据如果是id,那么如果我是修改,他不会出问题,因为它可以使用update,可是如果我是新增,那么它这时候就要用到insert才对(这个可以从系统监控的数据监控下看到),可是他还是会使用update,这边会导致update报错,因为没有这个数据项
在这里可以看到自己的每一步操作用到的sql语句
解决方案:
如下图:
//在data中增加个字段用来判断当前状态
data() {
return {
isAdd: true,
//在新增和修改时,改变状态值
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加居民信息";
this.isAdd = true;//修改状态
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const idcardInfo = row.idcardInfo || this.ids
getResidentinfo(idcardInfo).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改居民信息";
this.isAdd = false;//修改状态
});
},
//点击确认按钮时就不判断id了,判断isAdd状态
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.isAdd == false) {//判断isAdd是否位false
updateResidentinfo(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addResidentinfo(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},