【avue-crud】---- 实现表格的单选

本文介绍了如何在配置抽奖活动中,通过avue-crud组件配合el-radio实现表格的单选功能,包括配置selection-change事件、使用slot构建选择属性和优化样式。作者提供了两种实现方案并讨论了各自的优缺点。
摘要由CSDN通过智能技术生成

1. 需求场景

在配置抽奖活动时,优惠券、代金券、商品等选择需要从多个中选择一个,同时需要有搜索、翻页等功能。所以考虑使用 avue-crud 组件实现。

2. 实现方式

  1. 使用 slot 配合 el-radio 实现表格的单选;
  2. 使用 selection-change 事件来处理选中列表实现。

3. 预览

输入图片说明

4. selection-change 事件实现

4.1 option 配置可选择
4.1.1 配置代码
selection: true
4.1.2 配置文档预览

输入图片说明

4.1.3 配置文档

avue-crud 的 option 配置

4.2 定义 selection-change 事件实现
    <avue-crud
      ref="crud"
      v-model="form"
      :option="tableOption"
      :data="list"
      :page.sync="page"
      :search.sync="searchForm"
      :table-loading="listLoading"
      @on-load="getList"
      @size-change="sizeChange"
      @current-change="currentChange"
      @search-change="searchChange"
      @selection-change="selectionChange"
    >
    </avue-crud>
4.3 selectionChange 事件实现
4.3.1 实现代码
    // 表格单选
    selectionChange(selection, row){
      // 如果选中列表的值大于1个
      if(selection.length > 1){
        // 将列表中的第一个元素取出
        const preVal = selection.shift();
        // 将该选项设置为未选中
        this.$refs.crud.toggleRowSelection(preVal, false);
      }
      // 将处理后的选中列表保存
      this.selectionList = selection;
    }
4.3.2 文档解释

输入图片说明

4.3.3 文档

elementUI table 组件

4.4 样式优化
.el-table__header thead .el-checkbox__inner, .avue-crud__tip {
    display: none !important;
}

5. slot 配合 el-radio 实现

5.1 循环列表构建一个选择的属性给 slot 使用
list.forEach(item => item.radio = item.id)
5.2 column 配置 radio 属性栏
    {
      label: '',
      prop: 'radio',
      span: 24,
      width: 80
    }
5.3 单选HTML实现
<template slot="radio" slot-scope="{row}">
  <el-radio :label="row.resourceId" v-model="radioValue" @input="getChooseValue(row)"></el-radio>
</template>
5.4 getChooseValue 事件实现
getChooseValue(row){
  console.log('row',row)
  // 将选中的对象保存
  this.selectionItem = row;
}
5.5 预览

输入图片说明

5.6 样式优化
.el-radio-label{
   display: none !important; 
}

6. 总结

  1. 方案一选择构建一个单选属性,然后使用该属性的插槽,来使用 input 事件实现单选,好处是样式符合单选,实现方法直接保存当前选中的值,不用做其他处理,缺点是修改地方比较多;
  2. 方案二优点是只有配置一个 selection 属性,然后处理 selection-change 事件的逻辑就好;缺点就是需要熟悉文档,查找对应的方法进行处理,样式上也不能看出是单选;
  3. 方案三我觉得可以找到方案的插槽,将方案一的插槽替换,然后就能不需要重构属性和配置,选择也能使用方案一的最简单处理,不过我最后没有找到 selection 的插槽值,如果有知道的大佬,可以指出一下,无比感谢!
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rattenking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值