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

也可以私信

相关推荐
a11177624 分钟前
动森UI组件(开源 html animal-island-ui )
前端·javascript·ui·开源·html
KaMeidebaby26 分钟前
卡梅德生物技术快报|真核蛋白表达信号肽筛选实验全流程复盘
服务器·前端·数据库·人工智能·算法
ljt272496066127 分钟前
Vue笔记(六)--响应式
javascript·vue.js·笔记
万少1 小时前
万少的 Claude Code 入门教程
前端·人工智能·后端
এ慕ོ冬℘゜1 小时前
JS 前端基础高频面试题
开发语言·前端·javascript
放下华子我只抽RuiKe51 小时前
React 从入门到生产(八):测试与部署
前端·javascript·深度学习·react.js·前端框架·ecmascript·集成学习
蜡笔小电芯1 小时前
【Electron】第2章—BrowserWindow 与 Electron 窗口机制
前端·javascript·electron
zhangxingchao1 小时前
AI 大模型面试核心二:微调、RAG、MCP、Agent 与工程落地
前端·人工智能·后端
ZC跨境爬虫1 小时前
跟着 MDN 学CSS day_15:(掌握CSS背景与边框的创造性用法)
前端·css·ui·html·tensorflow
zhangxingchao1 小时前
AI 大模型面试核心三: RAG、Agent 到 Prompt Engineering 的工程化理解
前端·人工智能·后端