情況描述:
在多屬性規格的情況下,校驗失敗商品屬性會被清除。在單屬性或者多屬性只有一條的情況下校驗失敗,把校驗失敗的字段內容修改后不能再次提交,只能重新打開上傳商品并且一次性把所有商品內容按照正確的校驗規則填寫好才能成功。
修改后再次點擊提交無反應。
可以修改如下代碼:
//提交接口數據更新
getFromData() {
if (this.formValidate.specType && this.formValidate.attr.length < 1)
return this.$message.warning('請填寫多規格屬性!');
this.formValidate.cateId = this.formValidate.cateIds.join(',');
this.formValidate.keyword = this.labelarr.join(',');
if (this.videoLink) {
//如果有視頻主圖,將視頻鏈接插入到輪播圖第一的位置
this.formValidate.sliderImages.unshift(this.videoLink);
}
this.formValidate.sliderImage = JSON.stringify(this.formValidate.sliderImages);
if (!this.isShowGroup) this.formValidate.guaranteeIds = this.formValidate.guaranteeIdsList.join(',');
if (this.formValidate.specType) {
this.formValidate.attrValue = this.ManyAttrValue;
this.formValidate.attr = this.formValidate.attr.map((item) => {
return {
attrName: item.attrName,
id: item.id,
attrValue: item.attrValue,
attrValues: item.attrValue.join(','),
};
});
for (var i = 0; i < this.formValidate.attrValue.length; i++) {
this.$set(this.formValidate.attrValue[i], 'id', 0);
this.$set(this.formValidate.attrValue[i], 'productId', 0);
let attrValues = this.formValidate.attrValue[i].attrValue;
this.$set(this.formValidate.attrValue[i], 'attrValue', JSON.stringify(attrValues)); //
delete this.formValidate.attrValue[i].value0;
}
} else {
this.formValidate.attr = [
{
attrName: '規格',
attrValues: '默認',
id: parseFloat(this.$route.params.id) > 0 ? this.formValidate.attr[0].id : 0,
},
];
this.OneattrValue.map((item) => {
this.$set(item, 'attrValue', JSON.stringify({ 規格: '默認' }));
this.$set(item, 'productId', 0);
});
this.formValidate.attrValue = this.OneattrValue;
}
if (this.formValidate.type === 5 || this.formValidate.type === 6) this.formValidate.tempId = 0;
},
// 提交
handleSubmit(name) {
this.$refs[name].validate((valid) => {
if (valid) {
this.getFromData();
this.loadingBtn = true;
parseFloat(this.$route.params.id) > 0
? productUpdateApi(this.formValidate)
.then(async (res) => {
this.$message.success('編輯成功');
setTimeout(() => {
this.$router.push({ path: '/product/list' });
}, 500);
this.closeSelectedTag();
this.loadingBtn = false;
})
.catch((res) => {
this.loadingBtn = false;
for (var i = 0; i < this.formValidate.attrValue.length; i++) {
let attrValues = this.formValidate.attrValue[i].attrValue;
this.$set(this.formValidate.attrValue[i], 'attrValue', JSON.parse(attrValues));
}
if (this.formValidate.specType) this.ManyAttrValue = this.formValidate.attrValue;
})
: productCreateApi(this.formValidate)
.then(async (res) => {
this.$message.success('新增成功');
setTimeout(() => {
this.$router.push({ path: '/product/list' });
}, 500);
this.closeSelectedTag();
this.loadingBtn = false;
})
.catch((res) => {
this.loadingBtn = false;
for (var i = 0; i < this.formValidate.attrValue.length; i++) {
let attrValues = this.formValidate.attrValue[i].attrValue;
this.$set(this.formValidate.attrValue[i], 'attrValue', JSON.parse(attrValues));
}
});
} else {
if (
!this.formValidate.name ||
!this.formValidate.cateId ||
!this.formValidate.keyword ||
!this.formValidate.unitName ||
!this.formValidate.intro ||
!this.formValidate.image ||
!this.formValidate.sliderImages
) {
this.$message.warning('請填寫完整商品信息!');
}
}
});
},
更新位置如下: