Vue 中 element-ui table 结合后端请求实现排序

一.需求
需要对指定列,结合后端请求进行排序

二.效果
在这里插入图片描述

三.知识点

3.1 如果需要结合后端请求排序,将需要排序的列上设置sortable为custom

3.2 同时在el-table标签上监听sort-change事件,在事件回调中可以获取当前排序列的字段名和排序顺序,从而将这些作为发起接口请求的入参

3.3 sort-change方法自带三个参数,分别为:

column:当前列
prop:当前列需要排序的字段名
order:排序的规则(升序、降序和默认,默认就是没排序)

四.代码和注释如下

 <el-table
     ref="multipleTable" 
     :data="tableData"
     tooltip-effect="dark"
     style="width: 100%"
     @selection-change="handleSelectionChange"
     @sort-change='sortTableFun' //监听sort-change事件,绑定sortTableFun函数
     border
 >
     <el-table-column
      prop="name"  //要设置prop,要不然函数获取不到对应的列的字段名
      label="指标名称"
      sortable='custom' //将需要排序的列上设置sortable为custom
      min-width="10%"
      show-overflow-tooltip
     >
    </el-table-column>
 </el-table>
 sortTableFun(column){//用户点击这一列的上下排序按钮时,触发的函数
          this.column = column.prop; //该方法获取到当前列绑定的prop字段名赋值给一个变量,之后这个变量做为入参传给后端
            if (column.prop) { //该列有绑定prop字段走这个分支
              if (column.order == 'ascending') {//当用户点击的是升序按钮,即ascending时
                  this.order = 'asc'; //将order这个变量赋值为后端接口文档定义的升序的字段名,之后作为入参传给后端
              } else if (column.order == 'descending') {
              //当用户点击的是升序按钮,即descending时
                  this.order = 'desc';//将order这个变量赋值为后端接口文档定义的降序的字段名,之后作为入参传给后端
              }
                  this.indexQueryListFun()//且发起后端请求的接口
            }
 },
 
indexQueryListFun(){ //发起后端请求的接口
        const param = `${this.column},${this.order}` //将入参按照后端要求的格式和类型提前准备好
        indexQueryList(param).then((res) => { //发起请求
          if (res.data.code == 200){ //如果返回200
          //将后端返回的内容做数据处理
             const sjclarr = res.data.result.records.map((i)=>{
              if(i.customerRealName==null){
                 i.customerRealName=''
              }else{
                 i.customerRealName=i.customerRealName.split('(')[0]
              }
              return i
            })
            this.tableData=sjclarr //将处理完的数据赋值到模板的表格数据上
            this.total=res.data.result.total 
          }else if(res.data.code == 401){ //若返回401
            alert("登录已失效") //弹窗登录已失效
            window.location.href="http:" //且跳转到对应地址
          }else{ //如果返回其他状态码,直接弹出后端返回的提示信息
            alert(res.data.message)
          }
        })
 }
  • 8
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值