vue使用element ui---Table 表格的全选、单选翻页亦是选中状态

1.页面

<el-table
   ref="multipleTable"
    :data="tableData"
    border
    :row-key="getRowKeys"
    //状态条件筛选事件
    @filter-change="handleFilterChange"
    //时间排序筛选事件
    @sort-change="changeTableSort"
    //全选事件
    @selection-change="handleSelectionChange">
    //全选和单选
    <el-table-column type="selection" :selectable='checkboxT' :reserve-selection="true" min-width="6%"></el-table-column>
    //其他
    <el-table-column label="序号" align="center" width="100">
      <template slot-scope="scope">
        <span v-text="getIndex(scope.$index)"> </span>
      </template>
    </el-table-column>
    <el-table-column label="激活码" prop="code" align="center" min-width="13%"></el-table-column>
    <el-table-column prop="create_time" :resizable="false" label="生成时间" sortable='custom' min-width="11%">
      <template slot-scope="scope">
        <span>{{ scope.row.create_time}}</span>
      </template>
    </el-table-column>
    <el-table-column prop="act_time" :resizable="false" label="激活时间" sortable='custom' min-width="11%">
      <template slot-scope="scope">
        <span>{{ scope.row.act_time}}</span>
      </template>
    </el-table-column>
    <el-table-column
      prop="source"
      column-key="source"
      label="生成方式"
      min-width="10%"
      :filter-multiple="false"
      :filters="[{ text: '文章投稿', value: '10' }, { text: '批量发送', value: '20' }, { text: '系统激活', value: '30' }]"
      filter-placement="bottom-end">
      <template slot-scope="scope">
        <el-tag
          :type="scope.row.tag == '文章投稿' ? 'primary' : ''"
          :class="'is_use' + scope.row.source"
          disable-transitions>{{scope.row.card_source}}</el-tag>
      </template>
    </el-table-column>
    <el-table-column
      prop="is_use"
      column-key="is_use"
      label="使用状态"
      min-width="10%"
      :filter-multiple="false"
      :filters="[{ text: '已使用', value: '1' }, { text: '未使用', value: '0' }]"
      filter-placement="bottom-end">
      <template slot-scope="scope">
        <el-tag
          :type="scope.row.tag == '已使用' ? 'primary' : ''"
          :class="'is_use' + scope.row.is_use"
          disable-transitions>{{scope.row.use_name}}</el-tag>
      </template>
    </el-table-column>
    <el-table-column label="激活用户" prop="member_name" align="center" min-width="13%"></el-table-column>
    <el-table-column
      prop="is_issue"
      column-key="is_issue"
      label="发放状态"
      min-width="10%"
      :filter-multiple="false"
      :filters="[{ text: '未发放', value: '10' }, { text: '已发放', value: '20' }]"
      filter-placement="bottom-end">
      <template slot-scope="scope">
        <el-tag
          :type="scope.row.tag == '已激活' ? 'primary' : ''"
          :class="'is_issue' + scope.row.is_issue"
          disable-transitions>{{scope.row.issue_name}}</el-tag>
      </template>
    </el-table-column>
    <el-table-column label="发放人" prop="user_name" align="center" min-width="13%"></el-table-column>
  </el-table>
  <el-pagination
    style="margin-top: 25px; text-align:right;"
    layout="total, sizes, prev, pager, next, jumper"
    :page-sizes="[5, 10, 15, 20]"
    :total="total"
    @size-change="handleSizeChange"
    @current-change="handleCurrentChange">
  </el-pagination>

2.dom部分

data () {
	return {
		multipleSelection: [],
		select_order_number: '',
	}
}

2.1已导出的部分禁用选框

checkboxT(row, index){
  if(row.is_use == 1){
    return 0;
  }else{
    return 1;
  }
},

2.2全选和单选

handleSelectionChange(rows) {
  this.multipleSelection = rows;
  this.select_order_number = this.multipleSelection.length;

  this.selectArr = [];
  if (rows) {
    rows.forEach(row => {
      if (row) {
        this.selectArr.push(row.id);
      }
    });
  }
},

3.效果图

在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用element-ui的el-table时,如果要勾选某些行,可以通过toggleRowSelection方法来实现。默认情况下,数据填充后复选框是不勾选的。要勾选某些行,可以使用toggleRowSelection方法,例如this.$refs.zttable.toggleRowSelection(this.ZHUANTIList[i])。这样可以通过代码动态地勾选指定行的复选框。 在el-table中,默认是不选中复选框的,但是如果需求要求它选中,可以通过调用toggleRowSelection方法来实现。这个方法可以在created生命周期中加上this.$nextTick来保证在数据行已经渲染完成之后再执行。例如,可以使用下面的代码来勾选多个行的复选框: ``` this.$nextTick(() => { for (let i = 0; i < this.fileUploadData.length; i++) { this.$refs.fileTable.toggleRowSelection(this.fileUploadData[i]) } }) ``` 这段代码会在数据行已经渲染完成之后,循环遍历fileUploadData数组中的每一个元素,然后调用toggleRowSelection方法来勾选对应行的复选框。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue elementui 实现表格selection的默认勾选](https://blog.csdn.net/gis_zhouda/article/details/121775177)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [el-table type="selection" 默认选中](https://blog.csdn.net/qq_35257117/article/details/96294240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值