el-table的selection多选表格改为单选

需求场景: 选择表格数据时,需要控制单条数据的操作按钮是否禁用。

效果图: 

html代码:

<div>
    <el-table
      ref="multipleTable"
      :data="tableData"
      tooltip-effect="dark"
      style="width: 100%"
      @selection-change="handleSelectionChange"
    >
      <el-table-column type="selection" width="55"> </el-table-column>
      <el-table-column label="日期" width="120">
        <template slot-scope="scope">{{ scope.row.date }}</template>
      </el-table-column>
      <el-table-column prop="name" label="姓名" width="120"> </el-table-column>
      <el-table-column prop="address" label="地址" show-overflow-tooltip>
      </el-table-column>
    </el-table>
    <div style="margin-top: 20px">
      <!-- <el-button @click="toggleSelection([tableData[1], tableData[2]])"
        >切换第二、第三行的选中状态</el-button
      > -->
      <el-button @click="toggleSelection()">取消选择</el-button>
    </div>
  </div>

js代码:

export default {
  data() {
    return {
      tableData: [
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-08",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-06",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-07",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
      ],
      multipleSelection: [], // 多选存储数据
      checkedSelection: {}, // 单选存储数据
    };
  },
  mounted() {
    document.onclick = () => {
      console.log('单选--checkedSelection', this.checkedSelection);
    }
  },
  methods: {
    toggleSelection(rows) {
      if (rows) {
        rows.forEach((row) => {
          this.$refs.multipleTable.toggleRowSelection(row);
        });
      } else {
        this.$refs.multipleTable.clearSelection();
      }
    },
    // 设置单选主要代码
    handleSelectionChange(val) {
      console.log('val--==', val);
      // 默认多选
      // this.multipleSelection = val;

      // 单选
      if(val.length == 1){
        let item = val[val.length -1];
        this.checkedSelection = JSON.parse(JSON.stringify(item));
      }

      // 单选选中多条时,需要清空所选数据
      if(val.length > 1){
        this.$refs.multipleTable.clearSelection(); // 清空选项
        this.$refs.multipleTable.toggleRowSelection(val.pop()); // 选中最后点击的数据
      }

      // 取消选中
      if(val.length == 0){
        this.checkedSelection = {};
      }
    },
  },
};

css代码: 

<style lang="less" scoped>
// 禁用table全选按钮
.table-wrap{
  /deep/.el-table__header{
    .el-checkbox{
      display: none;
    }
  }
}
</style>

相关推荐

  1. Element-ui el-table组件//跨页勾讲解

    2024-07-16 10:52:02       31 阅读
  2. el-table支持

    2024-07-16 10:52:02       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 10:52:02       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 10:52:02       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 10:52:02       62 阅读
  4. Python语言-面向对象

    2024-07-16 10:52:02       72 阅读

热门阅读

  1. 结合案例简单介绍无人驾驶汽车

    2024-07-16 10:52:02       21 阅读
  2. Super-Mario-Host(超级玛丽)靶机

    2024-07-16 10:52:02       25 阅读
  3. 大语言模型里的微调vs RAG vs模板提示词

    2024-07-16 10:52:02       23 阅读
  4. 低空经济迅猛发展的几个因素

    2024-07-16 10:52:02       21 阅读
  5. 第19集《修习止观坐禅法要》

    2024-07-16 10:52:02       17 阅读
  6. 将 Docker Engine 节点从 dockershim 迁移到 cri-dockerd

    2024-07-16 10:52:02       25 阅读
  7. 【WPF】图片剪裁-ImageCropping

    2024-07-16 10:52:02       22 阅读
  8. springboot集成MQTT实现消息接收

    2024-07-16 10:52:02       21 阅读
  9. js中! 、!!、?.、??、??=的用法及使用场景

    2024-07-16 10:52:02       21 阅读