【VUE】表格实现自定义多选 (Ant Design Vue)

这是一个Vue组件示例,展示了一个包含全选功能的表格。表格数据绑定在`orderListData`上,通过`checked`属性和`change`事件处理选中状态。`changeCheckAll`方法用于切换全选状态,`changeCheck`方法处理单行选择。

 

 

<template>
  <div class="orderManage tablePage flex_column">
    <a-table ref="tableBox_"
           :columns="columns"
           :data-source="orderListData"
            rowKey="id"
    >
      <template #customTitle>
         <span style="position: absolute;left: 10px">
           <a-checkbox v-model:checked="checkAll" @change="changeCheckAll">全选</a-checkbox>
         </span> 
          宝贝
      </template>
      <template #nameBox="rowData">
        <div class="">
            <a-checkbox :checked="selectedRowKeys.includes(rowData.text.id)" @change="changeCheck(rowData)"></a-checkbox>
            <span>复制订单号</span>
        </div>
      </template>
    </a-table>
  </div>
</template>
<script>
import { defineComponent,ref,reactive } from 'vue';
  export default defineComponent({
      name:"listTable",
      data(){
        return{
          checkAll:false, //全选状态
          selectedRowKeys: [], //选中的key
          selectedRows: [], //选中的数据
          columns:[
              {title:'单价',align:'center',width:130,customCell: (_, index) => ({colSpan: 0})},
              {title:'数量',align:'center',width:80,customCell: (_, index) => ({colSpan: 0})},
          ],
          orderListData:[{id:111,name:"网卡"},{id:222,name:"深度"},{id:333,name:"打扫"}],
        }   
  methods: {
    changeCheckAll(){
        if (this.selectedRowKeys.length === this.orderListData.length) {
          this.selectedRowKeys = [] // 判断是否已全部选中,是则清空已选列表
          this.selectedRows = [];
          this.checkAll = false;
        } else {
          this.orderListData.forEach((item) => {
            if (!this.selectedRowKeys.includes(item.id)) {
              this.selectedRowKeys.push(item.id) // 否则将未选中的全部加入已选列表中
              this.selectedRows.push(item);
            }
          })
          this.checkAll = true;
        }
    },
    changeCheck(row){
      if (!this.selectedRowKeys.includes(row.text.id)) {
        this.selectedRowKeys.push(row.text.id);
        this.selectedRows.push(row.text);
      } else {
        let index = this.selectedRowKeys.indexOf(row.text.id);
        this.selectedRowKeys.splice(index, 1);
        this.selectedRows.splice(index, 1);
      }
      console.log(" this.selectedRowKeys", this.selectedRowKeys)
      console.log(" this.selectedRows", this.selectedRows)
    },
  }
});
</script>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值