element ui 多列排序样式与实现&后台排序参考

排序: 点击上箭头 点击下箭头
点击表头单元格,有个排序顺序 :sort-orders=“sortOrders” 默认是3个状态顺序切换 “ascending”、“descending” 、null
sortOrders: [null], // 点击表头,只触发清除此列排序状态

<template>
  <el-table-column v-bind="{ ...$props, ...$attrs}" :class-name="getSortClass(prop)">
    <template slot-scope="scope">
      <keep-alive>
        <component
          :is="template"
          v-clipboard:[canCopy]
          v-bind="{...$props, ...$attrs}"
          :scope="scope"
        />
      </keep-alive>
    </template>
  </el-table-column>
</template>
getSortClass(key) {
      const sort = this.sortCondition
      if (!sort.length) return 'disorder'
      if (sort.indexOf('+' + key) >= 0) {
        return 'ascending'
      }
      if (sort.indexOf('-' + key) >= 0) {
        return 'descending'
      }
      return 'disorder'
    }
// 列排序
// 数组记录列及其列的排序规则
    onSortChange({ column, prop, order }) {
      if (!prop) return
      const sort = this.sortCondition
      if (!order && !sort.length) return

      // 如果是清除排序,且无升降排序,应不触发排序
      const index = sort.findIndex(v => /^(\+|\-).*$/.test(v))
      if (index < 0 && !order) return

      sort.length = 0 // 目前仅支持单列排序

      // let index = sort.indexOf('+' + prop)
      // if (index !== -1) {
      //   sort.splice(index, 1)
      // }

      // index = sort.indexOf('-' + prop)
      // if (index !== -1) {
      //   sort.splice(index, 1)
      // }

      if (order === 'ascending') {
        sort.push('+' + prop)
      }
      if (order === 'descending') {
        sort.push('-' + prop)
      }
      console.log('sort:', this.sortCondition)
      // return
      this.fetchData(1)
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值