element-plus, el-table 表头按照指定字段升降序的功能实现

首先看效果:

点击操作时间,可以在升序和降序之间来回切换。

在线演示效果:https://www.eleadmin.cn

效果需要前端和后端配合才能实现这个功能。

演示网站前端使用 element-plus,后端使用 springboot + springDataJPA

前端:

html 复制代码
<el-table
        ref="operlogRef"
        v-loading="loading"
        :data="operlogList"
        @selection-change="handleSelectionChange"
        :default-sort="defaultSort"
        @sort-change="handleSortChange"
      >
html 复制代码
const defaultSort = ref({ prop: 'operTime', order: 'descending' })

/** 排序触发事件 */
function handleSortChange(column, prop, order) {
  queryParams.value.orderByColumn = column.prop
  queryParams.value.isAsc = column.order
  getList()
}

后端:

实体类:

java 复制代码
** 排序 */
    private String orderByColumn;

    /** 排序顺序 */
    private String isAsc;



  public String getOrderByColumn()
    {
        return orderByColumn;
    }

    public void setOrderByColumn(String orderByColumn)
    {
        this.orderByColumn = orderByColumn;
    }

    public String getIsAsc()
    {
        return isAsc;
    }

查询方法:

java 复制代码
// 构建排序规则
        org.springframework.data.domain.Sort sort;
        if (StringUtils.isNotEmpty(operLog.getOrderByColumn()) && StringUtils.isNotEmpty(operLog.getIsAsc())) {
            // 根据前端传递的排序字段和排序方向构建排序规则
            if ("descending".equalsIgnoreCase(operLog.getIsAsc())) {
                sort = org.springframework.data.domain.Sort.by(
                        org.springframework.data.domain.Sort.Direction.DESC, operLog.getOrderByColumn());
            } else {
                sort = org.springframework.data.domain.Sort.by(
                        org.springframework.data.domain.Sort.Direction.ASC, operLog.getOrderByColumn());
            }
        } else {
            // 默认按操作时间降序排序
            sort = org.springframework.data.domain.Sort.by(
                    org.springframework.data.domain.Sort.Direction.DESC, "operTime");
        }
java 复制代码
Pageable pageable = PageRequest.of(pageNum, pageSize, sort);
            Page<SysOperLog> page = operLogRepository.findAll(spec, pageable);

如果看不懂,请先看演示:

在线演示效果:https://www.eleadmin.cn

也可以私信

相关推荐
乘风gg9 分钟前
前端死到第几轮了?得物前端部门解散有感!
前端·ai编程·claude
艾伦野鸽ggg12 分钟前
web 组大一下第二次考核
前端·css·html
水煮白菜王18 分钟前
高德地图"未获得商用授权"水印临时移除方案
前端·javascript
库拉AI小李19 分钟前
# 数据清洗与分析:Gemini 3.5 处理 Excel 数据的实操体验
前端·人工智能·后端
小小小小宇20 分钟前
React17 18 19 新增能力、解决问题、原理与使用详解
前端
chushiyunen20 分钟前
vue el-pagination实现分页
javascript·vue.js·elementui
by————组态22 分钟前
Ricon组态可视化编辑器 - 所见即所得的工业画布
前端·javascript·物联网·架构·编辑器·组态
Csvn26 分钟前
面试翻车现场:`Array(100).map(() => 1)` 为什么全为空?
前端
光影少年28 分钟前
react大列表优化:虚拟列表原理
前端·javascript·react.js
星栈33 分钟前
一套 Rust 代码跑三端:为什么我开始关注 Dioxus
前端·rust·前端框架