当前位置: 首页 > article >正文

vue2修改表单只提交被修改的数据的字段传给后端接口

效果:

步骤一、

vue2修改表单提交的时候,只将修改的数据的字段传给后端接口,没有修改得数据不传参给接口。

  1. 在 data 对象中添加一个新的属性,用于存储初始表单数据的副本,与当前表单数据进行比较,找出哪些字段发生了变化。
const originalFormData = ref({});
// 或者  originalForm: {}, // 增加原始数据对象

步骤二、

打开修改客户信息的对话框时(在 handleUpdate 函数中),保存当前表单数据的副本到 originalFormData。需要在修改操作时,将当前行的原始数据存储起来,以便后续比较是否修改。可以在handleUpdate方法中添加如下代码:

/** 修改按钮操作 */
function handleUpdate(row) {
  // 使用当前行的数据填充表单
  form.value = { ...row };
  form.value.states = row.states === "0" ? "0" : "1";
  originalData.value = { ...row }; // 存储原始数据
  open.value = true;
  title.value = "修改标签";
}

代码对比

步骤三、

修改 submitForm 函数,在提交表单数据之前,比较当前表单数据与原始数据,构建一个只包含更改过的字段的对象。

/** 提交按钮 */
function submitForm() {
  proxy.$refs["tagRef"].validate((valid) => {
    if (valid) {
      // 表单校验通过,执行提交操作
      let submitData = {};
      if (form.value.id != null) {
        // 修改操作
        // 遍历form对象,找出修改过的字段
        for (let key in form.value) {
          if (key !== 'id' && form.value[key] !== null && form.value[key] !== undefined) {
            // 这里假设原始数据存储在原始对象originalData中,用于比较是否修改
            if (form.value[key] !== originalData.value[key]) {
              submitData[key] = form.value[key];
            }
          }
        }
        submitData.id = form.value.id; // id字段必须传递
        updateTag(submitData)
          .then((response) => {
            proxy.$modal.msgSuccess("修改成功");
            open.value = false;
            getList();
          })
          .catch((error) => {
            proxy.$message.error(error.message);
          });
      } else {
        // 新增操作,直接传递整个表单数据
        addTag(form.value)
          .then((response) => {
            proxy.$modal.msgSuccess("新增成功");
            open.value = false;
            getList();
          })
          .catch((error) => {
            proxy.$message.error(error.message);
          });
      }
    } else {
      proxy.$message.error("表单中有未填写正确的项,请检查后再次提交。");
    }
  });
}

更改前后对比:


http://www.kler.cn/a/503136.html

相关文章:

  • 极客说|Azure AI Agent Service 结合 AutoGen/Semantic Kernel 构建多智能体解决⽅案
  • 【Elasticsearch7.11】postman批量导入少量数据
  • Docker安装和卸载(centos)
  • 《自动驾驶与机器人中的SLAM技术》ch8:基于 IESKF 的紧耦合 LIO 系统
  • primitive 的 Appearance编写着色器材质
  • springboot vue uniapp 仿小红书 1:1 还原 (含源码演示)
  • JavaScript:简介
  • 春秋云镜——initial
  • 二 RK3568 固件中打开 ADB 调试
  • qt 汉字输出 中文输出 显示乱码 qDebug() 乱码 解决
  • Spring Boot项目中增加MQTT对接
  • DELTA并联机械手视觉方案荣获2024年度机器人应用典型案例奖
  • 在 Linux 下Ubuntu创建同权限用户
  • JavaScript系列(24)--内存管理机制详解
  • 2025年第三届“华数杯”国际赛A题解题思路与代码(Python版)
  • 计算机网络(四)——网络层
  • 利用 Tree Shaking 提升 React.js 性能
  • 江科大STM32入门——读写备份寄存器(BKP)实时时钟(RTC)笔记整理
  • 【RAG检索增强生成】MaxKB:构建企业级知识库问答系统(Ollama+Qwen2)
  • Vue.js组件开发-实现图片裁剪
  • Scala语言的软件开发工具
  • Redis动态热点数据缓存策略设计
  • nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)
  • 【JAVA 基础 第(18)课】HashSet 使用方法详解
  • 重回C语言之老兵重装上阵(一)vscode编译.C文件
  • 2024年华为OD机试真题-判断一组不等式是否满足约束并输出最大差-Python-OD统一考试(E卷)