多选后:在每个div :v-for新增 根据id循环表格展示不同数据 技术要点

这篇博客详细介绍了在前端进行多选和单选操作时如何保存数据到后端的实现过程。通过Vue.js的v-for循环遍历数组,并在用户选择考生后更新考生项目代码。使用`this.currentIndex`跟踪当前选中的项,当接收到后端查询数据后,更新对应的表单数据。同时,展示了如何利用Promise处理异步请求,确保数据正确更新并触发表格更新。
摘要由CSDN通过智能技术生成

1.多选后未保存到后端,div进行多选后数组的v-for循环,属性为:

v-for="(item, index) in welderSelected"
:key="index"

定义数组:

welderSelected: [], // 被选中的考生

多选确定方法中

// 考生多选确定按钮
    SureExaminee(data) {
      this.welderSelected = data;
      // const that = this 其实就是将当前的this对象复制一份 给 that变量 中
      for (const one of this.welderSelected) {
        one.examineeProjectCode = this.examineeProjectCode;
      }
      this.SelectExamineeVisible = false;
    },

2.每一区块再次增加单选新数据时,保存到数据库,显示单选页面按钮属性为:

@click="addProjectcode(item, index)"

定义currentIndex:

currentIndex: 0,

在显示单选按钮方法(addProjectcode(item, index))中:写明

this.currentIndex = index;

3.后端写查询方法:查询到某一块该有的数据list

<!--  根据id查找:____显示新增表单里每个人的新增表单-->
  <select id="findInsertListById" parameterType="java.lang.Long" resultMap="InsertResultMap">
    SELECT wm.projectcode,wm.weldmethod,wm.cerunit,wm.types,ee.id,ee.entrust_id,ee.welderid,ee.project_code_id,ee.exam_type,ee.exam_amount,ee.haf_exam_form,ee.fun_welding_record,ee.fun_eyesight,ee.fun_exam_form,ee.tsg_special_attachment,ee.tsg_welding_record,ee.tsg_exam_form,ee.diploma,ee.medical_report,ee.img_url,ee.identity_card
    FROM exam_examinee ee
    LEFT JOIN WeldMethodBaseInfo wm ON ee.project_code_id = wm.id
    WHERE ee.welderid = #{welderid,jdbcType=BIGINT} AND ee.entrust_id=#{entrustId,jdbcType=BIGINT}
  </select>

4.返回前端,写方法,定义数组List:

examineeProjectCode: [
        {
          id: null,
          welderid: null,
          entrustId: null,
          projectcode: null,
          examType: null
        }
      ],

方法中将res.data 赋值给 welderSelected[[this.currentIndex].examineeProjectCode

this.welderSelected[this.currentIndex].examineeProjectCode = res.data ? res.data : [];

方法全部如下:

// 根据id查找:____显示新增表单里每个人的新增表单
    welderProjectShow() {
      this.$api.examExaminee
        .findInsertListById(
          this.selectedProjectCodeList.welderid,
          this.selectedProjectCodeList.entrustId
        )
        .then(res => {
          if (res.code == 200) {
            this.welderSelected[
              this.currentIndex
            ].examineeProjectCode = res.data ? res.data : [];
            this.refreshKey = Math.random(); // 这个很重要,table检测到key发生变化,回去更新table
          }
        });
    }
  },

5.写table基本格式,table属性为:

:data="item.examineeProjectCode"
:key="refreshKey"

定义refreshKey:

refreshKey: 1,

显示表单时将refresh赋值为随机数,table检测到key发生变化,就回去更新table

this.refreshKey = Math.random(); // 这个很重要,table检测到key发生变化,回去更新table
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值