首页 前端知识 【VUE】表格实现自定义多选 (Ant Design Vue)

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

2024-01-25 11:01:05 前端知识 前端哥 286 312 我要收藏

 

 

<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>

转载请注明出处或者链接地址:https://www.qianduange.cn//article/334.html
标签
vue.js
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!