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

也可以私信

相关推荐
袋鼠云数栈UED团队24 分钟前
基于 Lexical 实现变量输入编辑器
前端·javascript·架构
cipher36 分钟前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
UrbanJazzerati37 分钟前
非常友好的Vue 3 生命周期详解
前端·面试
AAA阿giao40 分钟前
从零构建一个现代登录页:深入解析 Tailwind CSS + Vite + Lucide React 的完整技术栈
前端·css·react.js
兆子龙2 小时前
像 React Hook 一样「自动触发」:用 Git Hook 拦住忘删的测试代码与其它翻车现场
前端·架构
兆子龙2 小时前
用 Auto.js 实现挂机脚本:从找图点击到循环自动化
前端·架构
SuperEugene2 小时前
表单最佳实践:从 v-model 到自定义表单组件(含校验)
前端·javascript·vue.js
昨晚我输给了一辆AE862 小时前
为什么现在不推荐使用 React.FC 了?
前端·react.js·typescript
不会敲代码12 小时前
深入浅出 React 闭包陷阱:从现象到原理
前端·react.js
不会敲代码12 小时前
React性能优化:深入理解useMemo和useCallback
前端·javascript·react.js