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

也可以私信

相关推荐
liqingdi4379 小时前
[SWPUCTF 2023 秋季新生赛]Easy SMC
服务器·前端·javascript
用户87359865635879 小时前
为什么 greedy 也可能出不同 token,MoE 为什么更严重
前端
Gizzap_Tech9 小时前
多语言官网如何兼顾统一与本地化?从页面生成到语言切换
前端
IT_陈寒9 小时前
Java缓存踩坑记:明明设置了过期时间,怎么还是读到脏数据?
前端·人工智能·后端
靠coding维持生计的potato9 小时前
使用 unified diff 为 pnpm 依赖编写可复现补丁
前端
Initialize-le9 小时前
systemd 服务起不来?五步排查法
前端·chrome
OpenTiny社区9 小时前
多会话 + 流式输出怎么落地?TinyRobot Kit 对话数据层深度解析
前端·vue.js
派小心.10 小时前
网站统计采样数据的误差核对
大数据·服务器·前端·数据库·人工智能·小程序·数据分析
变与不变80611 小时前
防抖节流详解
开发语言·前端·javascript
用户725264966296911 小时前
浏览器为什么加载不了超大图片
前端·javascript