element-plus 官方表格排序问题小结
更新时间:2024年10月16日 12:11:07 作者:前端小芬芬
在使用Element Plus官方API时,表格默认排序可能会遇到问题,一个列表可能被多次排序影响数据展示,解决方法是修改useSortTable.js文件,这样可以确保表格按预期正确排序,更多详情可查阅相关的技术文档或资源
element-plus 官方API 默认表格排序存在问题,一个list 被多组排序

修改后:


<template>
<el-table
:data="stateTable.table.data"
@sort-change="(data) => handleSort(data, stateTable)"
>
</el-table>
<template>
<script setup>
import { reactive } from "vue";
import { copyTableData, handleSort } from "@/hooks/useSortTable.js";
let stateTable = reactive({
table: {
border: true,
currentPage: 1,
pageSize: 10,
// 接口返回数据
data: [],
// 表头数据
columns: [],
},
});
const getTableData = async (data) => {
copyTableData.value = [...stateTable.table.data]
};
getTableData()
</script>useSortTable.js
import { ref } from "vue";
export const copyTableData = ref([]);
export const sortByFieldDesc = (arr, field, order) => {
arr.sort((a, b) => {
const aValue = a?.[field];
const bValue = b?.[field];
let numA =
typeof aValue === "string" && !isNaN(Number(aValue))
? Number(aValue)
: aValue;
let numB =
typeof bValue === "string" && !isNaN(Number(bValue))
? Number(bValue)
: bValue;
if (
typeof numA === "string" &&
typeof numB === "string" &&
!isNaN(Date.parse(numA)) &&
!isNaN(Date.parse(numB))
) {
// 如果是日期类型的字符串,则按照日期排序
const dateA = new Date(numA);
const dateB = new Date(numB);
if (order === "descending") {
return dateB - dateA;
} else {
return dateA - dateB;
}
} else {
// 非日期类型,按照数字或其他类型的逻辑排序
if (order === "descending") {
return numB - numA;
} else {
return numA - numB;
}
}
});
return arr;
};
// 修改handleSort函数,使其接受stateTable作为参数
export const handleSort = (data, stateTable) => {
const { prop, order } = data;
let reserveData = copyTableData.value.filter(
(item) =>
item?.[prop] !== undefined &&
item?.[prop] !== null &&
item?.[prop] !== "-"
);
let filterData = copyTableData.value.filter(
(item) =>
item?.[prop] === undefined ||
item?.[prop] === null ||
item?.[prop] === "-"
);
if (order !== null) {
sortByFieldDesc(reserveData, prop, order);
stateTable.table.data = reserveData.concat(filterData);
} else {
stateTable.table.data = [...copyTableData.value];
}
};到此这篇关于element-plus 官方表格排序问题的文章就介绍到这了,更多相关element-plus 官方表格排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用JavaScript将JPG格式图片转为BMP格式的完整代码
这篇文章主要介绍了如何使用JavaScript将JPG图片转换为BMP图片,核心逻辑与PNG转BMP一致,仅需调整文件选择的accept类型,且JPG无Alpha通道,无需额外处理透明通道,提供了完整的代码实现,需要的朋友可以参考下2025-12-12
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
这篇文章主要介绍了基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍 的相关资料,需要的朋友可以参考下2016-05-05


最新评论