将表格中勾选的数据传进要提交的表格中

我希望在在我勾选之后,可以获取我勾选的物资名称和单位,然后传进我的新增表格中,请问要怎么做?
我的表格代码如下:

table :data="stockList" style="height:430px;" border>
              table-column type="selection" :reserve-selection="true">table-column>
              table-column prop="itemname" label="物资名称">table-column>
              table-column prop="numbers" label="物资数量">table-column>
              table-column prop="unit" label="物资单位">table-column>
            table>

参考GPT和自己的思路:您可以利用 Vue.js 中的计算属性来获取勾选的物资名称和单位,并将它们的值传递到新增表格中。以下是一种可能的解决方案:

  1. 定义一个计算属性,它会根据表格中被勾选的数据生成一个新数组,其中只包含被勾选数据的物资名称和单位:
computed: {
  selectedItems() {
    return this.stockList.filter(item => this.$refs.table.selection.includes(item))
                          .map(item => ({ name: item.itemname, unit: item.unit }));
  }
}
  1. 在新增表格中设置 v-model,使其与一个对象相关联:
<el-form :model="addedItem">
  <el-form-item label="物资名称">
    <el-input v-model="addedItem.name"></el-input>
  </el-form-item>
  <el-form-item label="物资单位">
    <el-input v-model="addedItem.unit"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm">提交</el-button>
  </el-form-item>
</el-form>
  1. 在 methods 中定义一个 submitForm 函数,它将会把被勾选的物资名称和单位写入到新增表格的对象中:
methods: {
  submitForm() {
    this.addedItem.name = this.selectedItems[0].name;
    this.addedItem.unit = this.selectedItems[0].unit;
  }
}

请注意,如果有多个物资被勾选,上面的代码只会选取第一个物资的名称和单位。如果需要把全部勾选的物资都写入新增表格中,您可以在计算属性中修改它的返回值,使其返回一个包含所有勾选物资的数组,然后在 submitForm 中遍历该数组,逐个将它们写入到新增表格的对象中。

如果你想在勾选后获取勾选的物资名称和单位,并传递到新增表格中,可以使用以下步骤:

  1. 在 data 中定义一个数组,用于保存勾选的物资信息:
data() {
  return {
    // 定义一个数组,用于保存勾选的物资信息
    selectedItems: []
  }
}
  1. 在 el-table 中添加 @selection-change 事件,该事件会在勾选变化时触发。在事件处理函数中,将勾选的物资信息保存到 selectedItems 数组中:
<el-table :data="stockList" style="height:430px;" border @selection-change="handleSelectionChange">
  <el-table-column type="selection" :reserve-selection="true"></el-table-column>
  <el-table-column prop="itemname" label="物资名称"></el-table-column>
  <el-table-column prop="numbers" label="物资数量"></el-table-column>
  <el-table-column prop="unit" label="物资单位"></el-table-column>
</el-table>

methods: {
  handleSelectionChange(selection) {
    // 获取勾选的物资名称和单位,保存到 selectedItems 数组中
    this.selectedItems = selection.map(item => ({
      name: item.itemname,
      unit: item.unit
    }))
  }
}

在 handleSelectionChange 方法中,通过 map 方法将勾选的物资信息转换成一个包含名称和单位的对象,并保存到 selectedItems 数组中。

  1. 在新增表格中使用 selectedItems 数组中的物资信息:
<el-table :data="newItems" style="height:430px;" border>
  <el-table-column prop="name" label="物资名称"></el-table-column>
  <el-table-column prop="quantity" label="物资数量"></el-table-column>
  <el-table-column prop="unit" label="物资单位"></el-table-column>
</el-table>

methods: {
  addNewItems() {
    // 将 selectedItems 数组中的物资信息添加到新增表格中
    this.selectedItems.forEach(item => {
      this.newItems.push({
        name: item.name,
        quantity: 0, // 设置默认数量为 0
        unit: item.unit
      })
    })

    // 清空 selectedItems 数组
    this.selectedItems = []
  }
}

在 addNewItems 方法中,通过遍历 selectedItems 数组,将其中的物资信息添加到新增表格中,并将 selectedItems 数组清空。需要注意的是,添加物资时可以设置默认数量为 0。

这样,在勾选物资后,点击添加按钮即可将勾选的物资信息添加到新增表格中。