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

也可以私信

相关推荐
cjy0001114 小时前
2026AI 产品如何从一次性 Demo 变成可重复使用的业务工具?
前端·人工智能·fde
IT_陈寒4 小时前
React的状态更新坑得我差点加班到天亮
前端·人工智能·后端
风骏时光牛马5 小时前
深挖底层逻辑:XX源码深度拆解分析
前端
电商API_180079052475 小时前
电商商品价格监控工具淘宝京东商品价格抓取API项目实操分享
java·大数据·开发语言·前端·数据挖掘
sxmas5 小时前
用状态机与DAG建模四阶段业务流程:以MIND模型为例
前端
倔强的石头1066 小时前
【Linux指南】动静态库系列(七):符号表与重定位:链接器如何把函数调用接起来
linux·前端·javascript
a1117767 小时前
3D 脑图谱 / Bilingual 3D Brain Atlas 项目
前端
T1mzhou7 小时前
ARM64 Linux 6.10内核启动流程2-rootfs 怎么挂上
linux·服务器·前端
漂着的圆木7 小时前
MCP 2026-07-28 长任务改造:别再用 HTTP 超时判断任务失败
分布式·架构·状态模式·ai agent
小小尚@8 小时前
WebGIS/ECharts 地图开发|MapLand 在线行政区划边界一键下载 GeoJSON 工具
前端·javascript·echarts