VUE element-ui 之table表格勾选复选框动态带出(将某列的值赋值给指定列)对应列的数据

简介: VUE element-ui 之table表格勾选复选框动态带出(将某列的值赋值给指定列)对应列的数据

需求:

    1. 发货数量默认为0,用户可自行输入;
    2. 点击复选框将未发货数动态赋值给发货数,取消复选发货数为0;
    3. 点击全选框将每行的未发货数赋值给对应发货数,取消全选发货数为0。

实现步骤:
画重点:
在这里插入图片描述1.模板定义

<el-table v-show="order"
     ref="multipleTable" 
     :v-loading="loading" 
     border :data="tableDataOrder" 
     height="69vh" 
     style="width: 100%; height: 69vh"
     @select-all="itemHandleSelectionAll" 
     @select="itemHandleSelectionChange"  
     @selection-change="selectionChangeHandler" 
>
            <el-table-column label="序号" width="70" align="left">
                <template slot-scope="scope">
                  {{ (scope.$index+1) }}
                </template>
          </el-table-column>
          <el-table-column :show-overflow-tooltip="true" prop="unShipped" label="未发货数" />
          <el-table-column :show-overflow-tooltip="true" prop="price" label="单价">
            <template slot-scope="scope">
              <el-input v-model.number="scope.row.price" />
            </template>
          </el-table-column>
          <el-table-column :show-overflow-tooltip="true" prop="deliverNum" label="发货数量">
            <template slot-scope="scope">
              <el-input v-model.number="scope.row.deliverNum" oninput="value=value.replace(/[^\d]/g,'')" @focus="onfoucs(scope)" @blur="blurUsername(scope)" />
            </template>
          </el-table-column>
</el-table>
  1. js方法定义:
// 手动单选(订单)
    itemHandleSelectionChange(selection, row) { //selection为当前所选数据集合,row为当前选中行数据
      const selected = selection.length && selection.indexOf(row) !== -1
      if (selected === true) { //这里只需判断是否勾选,进行相应赋值操作即可
        row.deliverNum = row.unShippedNumTemp 
      } else {
        row.deliverNum = 0
      }
    },
    // 手动全选(订单)
    itemHandleSelectionAll(selection) {
      console.log(`全选----`, selection)
      if (selection.length !== 0) {
        selection.map(v => { v.deliverNum = v.unShipped}) //这里将全选的数据遍历后将未发货赋值给发货
        this.totalNumer = this.countTotal(selection, 'unShipped') //这里是合计方法,之前的博文中有详细介绍
      } else {
        this.submitCUOrder() //注意这块是判断取消全选后重新调用初始化表格方法,不然发货数无法清0
        this.totalNumer = this.countTotal(selection, 'deliverNum')
      }
    }

看效果:
在这里插入图片描述
此方法是本人结合官方文档研究出来的,不足之处请指教。

相关文章
|
2天前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
15 1
|
2天前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
13 1
|
8天前
|
API
vue3知识点:响应式数据的判断
vue3知识点:响应式数据的判断
18 3
|
2月前
|
JavaScript
Vue组件传值异步问题--子组件拿到数据较慢
Vue组件传值异步问题--子组件拿到数据较慢
176 58
|
10天前
|
存储 缓存 JavaScript
vue表单案例练习:vue表单创建一行数据及删除数据的实现与理解
vue表单案例练习:vue表单创建一行数据及删除数据的实现与理解
26 2
|
2月前
|
JavaScript
Vue使用element中table组件实现单选一行
如何在Vue中使用Element UI的table组件实现单选一行的功能。
89 5
Vue使用element中table组件实现单选一行
|
2月前
|
JavaScript
Vue+element_Table树形数据与懒加载报错Error in render: “RangeError: Maximum call stack size exceeded“
本文讨论了在使用Vue和Element UI实现树形数据和懒加载时遇到的“Maximum call stack size exceeded”错误,指出问题的原因通常是因为数据中的唯一标识符`id`不唯一,导致递归渲染造成调用栈溢出。
57 1
Vue+element_Table树形数据与懒加载报错Error in render: “RangeError: Maximum call stack size exceeded“
|
26天前
|
JavaScript
vue3,使用watch监听props中的数据
【10月更文挑战第3天】
765 2
在 Vue3 中,如何使用 setup 函数创建响应式数据?
在 Vue3 中,如何使用 setup 函数创建响应式数据?
|
2月前
|
JavaScript
element-ui table表格多选后再打开默认选中
element-ui table表格多选后再打开默认选中