概要
项目背景:
前端:vue3、ts
需求:
在写前端的数据修改部分时,仅需要上传修改过的字段,对于未修改的字段不予已上传,这样能减轻数据传输的压力
技术方案
数据结构定义
const formFields={
f1: "",
f2: "",
f3: ""
}
const formData = reactive(JSON.parse(JSON.stringify(formFields)));
const originalForm = ref({})
弹出修改框前的逻辑:
const handleUpdate = (row: any) => {
currentUpdateId.value = row.id
const keys = ["f1", "f2", "f3"];
keys.forEach(key => {
formData[key] = row[key];
});
originalForm.value = JSON.parse(JSON.stringify(formData))
dialogVisible.value = true
}
上传逻辑:
// 判断修改过的字段
const changes = Object.keys(formData).reduce((acc, key) => {
if (JSON.stringify(formData[key]) !== JSON.stringify(originalForm.value[key])) {
acc[key] = formData[key]
}
return acc
}, {})
// 添加id
changes.id = currentUpdateId.value
updateObject(changes)
.then(() => {
ElMessage.success("修改成功")
getTableData()
dialogVisible.value = false
})
.finally(() => {
})