el-tabel名称排序问题

el-tabel排序

最终实现功能如下:

排序限制为:
文件夹>普通文件
数字(0->9)->大写字母(A->Z)->小写字母(a->z)->中文拼音(a->z)

正序

在这里插入图片描述

倒序

在这里插入图片描述

代码如下:

<template><div class="personalFiles containerBox"><div class="personalFileCont"><el-tablev-loading="loading":data="tabelList"row-key="uuid"ref="tableRef"><el-table-column type="selection" width="55"></el-table-column><el-table-columnlabel="文件名"min-width="250"sortable:sort-method="sortName"><template slot-scope="scope"><spanclass="cursor-pointer"><img:src="getIcon(scope.row.name, scope.row.uuid, scope.row.dir)"alt=""class="tabelImg"/><spanclass="fileNameCont ellipsis":class="isCollapse ? 'detailFileName' : ''">{{ scope.row.name }}</span></span></template></el-table-column><el-table-column label="最后修改人">xxx</el-table-column><el-table-columnlabel="大小"sortableprop="size":default-sort="{ prop: 'size', order: 'descending' }"><template slot-scope="scope">{{ humanFileSize(scope.row.size) }}</template></el-table-column><el-table-columnlabel="修改时间"prop="updateTime"sortable:default-sort="{ prop: 'updateTime', order: 'descending' }"></el-table-column></el-table></div></div>
</template>
<script>
import {getMatterPage,
} from "@/api/personalFiles";
import { humanFileSize, isImage } from "@/utils/FileUtil";
import { getIcon } from "@/utils/Matter.js";
import { getChartType } from "@/utils/index";
export default {name: "spaceDetailList",props: {curSpaceObj: {type: Object,default: () => {}}},data() {return {queryParams: {page: 1,pageSize: 10,puuid: "root",deleted: false,orderDir: "DESC",orderName: "ASC",spaceUuid: '',},total: 0,loading: false,tabelList: [],};},mounted() {this.$nextTick(() => {this.queryParams.spaceUuid = this.curSpaceObj.uuidthis.getList();})},methods: {humanFileSize,getIcon,isImage,getList() {this.loading = true;getMatterPage({ ...this.queryParams }).then((res) => {this.tabelList = res.data.data;this.total = res.data.totalItems;}).finally(() => {this.loading = false;});},// 排序sortName(str1, str2) {let strName1 = str1.name;let strName2 = str2.name;let res = 0;for (let i = 0; ; i++) {if (!strName1[i] || !strName2[i]) {res = strName1.length - strName2.length;break;}// 此处判断文件类型 dir-true代表是文件夹if (str1.dir != str2.dir) {res = 1;break;}const char1 = strName1[i];const char1Type = getChartType(char1);const char2 = strName2[i];const char2Type = getChartType(char2);// 类型相同的逐个比较字符if (char1Type[0] === char2Type[0]) {if (char1 === char2) {continue;} else {if (char1Type[0] === "zh") {res = char1.localeCompare(char2);} else if (char1Type[0] === "en") {res = char1.charCodeAt(0) - char2.charCodeAt(0);} else {res = char1 - char2;}break;}} else {// 类型不同的,直接用返回的数字相减res = char1Type[1] - char2Type[1];break;}}return res;},},
};
</script>
<style lang="scss" scoped>
@import url('@/assets/styles/personalFiles.scss');
</style>
排序使用到的getChartType方法,代码中用到图片和字节转换方法跟当前功能无关就不展示了
// 排序
export function getChartType(char) {// 数字(0->9)->大写字母(A->Z)->小写字母(a->z)->中文拼音(a->z)if (/^[\u4e00-\u9fa5]$/.test(char)) {return ["zh", 300];}if (/^[a-zA-Z]$/.test(char)) {return ["en", 200];}if (/^[0-9]$/.test(char)) {return ["number", 100];}return ["others", 999];
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/22457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序性能优化

索引 没加索引&#xff08;where条件字段、order by字段&#xff0c;常用字段添加索引&#xff09;索引没生效选错索引SQL优化 SQL数据库性能优化-CSDN博客远程调用 并行调用数据异构重复调用 循环查数据库死循环无限递归异步处理 线程池mq服务器&#xff08;全称消息队列服务器…

[原创]C++ 11的thread_local线程局部变量与Lambda表达式配合使用, 却引发致命的, 难以发现的冲突.

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

探索Python的itertools模块:高效迭代的瑞士军刀

探索Python的itertools模块&#xff1a;高效迭代的瑞士军刀 Python的itertools模块是一个强大的工具箱&#xff0c;它提供了一系列的迭代器工具&#xff0c;用于创建复杂的迭代逻辑。这个模块的函数返回的都是迭代器&#xff0c;这意味着它们是懒加载的&#xff0c;只有在需要…

Unity开发Cosmos使用BNG Framework获取按键信息

Unity开发Cosmos使用BNG Framework获取按键信息 1、新建一个脚本&#xff0c;复制下面代码 using BNG;[Header("Input")]//[Tooltip("The key(s) to use to toggle locomotion type")]public List<ControllerBinding> locomotionToggleInput new …

处理无法拉取GitHub库的解决方案

提交和拉取github上的库总是失败&#xff0c;这里记录一下如何使用代理解决。 首先找到端口&#xff0c;记住它的端口 然后使用git命令 # HTTP/HTTPS 协议 git config ––global http.url.proxy http://127.0.0.1:port # 以 Github 为例 git config ––global http.https:/…

短网址生成原理及使用

生成短网址介绍&#xff1a; 一、定义 短网址&#xff08;Short URL&#xff09;是形式上比较短的网址&#xff0c;它通过将原始冗长的网址进行缩短&#xff0c;方便用户分享和记忆。短网址的生成主要依赖于特定的算法和服务&#xff0c;通过后端服务转向来实现网址的缩短。 …

MongoDB $rename 给字段一次重新命名的机会

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第58篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。 在日常编写程序过程中&#xff0c;命名错误是经常出现的错误。拼写错误的单词&#xff0c;大小写字…

gitbook 域名设置 域名绑定 自定义域名

有时候我们搜文档的时候&#xff0c;会遇到gitbook的文档。诸如这样&#xff1a; jums.gitbook.io/mysql-shi-zhan-45-jiang 即&#xff1a;个人的名字gitbook的域名书名。 具体格式如下&#xff1a; 1. 自定义域名 所有在 Gitbook.com 上的书的http 地址为 http://{author…

什么是人机协同翻译

什么是人机协同翻译 序什么是人机协同翻译账号绑定服务开通文档翻译图片翻译体验感受及建议 序 什么是人机协同翻译&#xff0c;为什么会需要人机协同翻译&#xff0c;以及人机协同翻译的效果&#xff0c;应用场景等&#xff0c;本文将关于这些内容一一解答。 什么是人机协同…

大语言模型RAG-将本地大模型封装为langchain的chat model(三)

大语言模型RAG-将本地大模型封装为langchain的chat model&#xff08;三&#xff09; 往期文章&#xff1a; 大语言模型RAG-技术概览 (一) 大语言模型RAG-langchain models (二) 上一期langchain还在0.1时代&#xff0c;这期使用的langchain v0.2已经与之前不兼容了。 本期介…

【调试笔记-20240604-Linux-为 OpenWrt LuCI 界面添加多语言支持】

调试笔记-系列文章目录 调试笔记-20240604-Linux-为 OpenWrt LuCI 界面添加多语言支持 文章目录 调试笔记-系列文章目录调试笔记-20240604-Linux-为 OpenWrt LuCI 界面添加多语言支持 前言一、调试环境操作系统&#xff1a;Ubuntu 22.04.4 LTS编译环境调试目标 二、调试步骤预…

mysql使用sorce、load 导入数据

1、本机安装mysql https://blog.csdn.net/weixin_52687711/article/details/130509902 注意&#xff1a;修改安装路径 配置环境变量 2. 使用sorce命令导入数据 https://blog.csdn.net/2301_82257317/article/details/138332048 使用mysql命令框链接目标数据库 以管理员身份运…

新媒体运营主要都做哪些内容的工作?

1.新媒体运营的核心工作是转化。这包括通过活动运营、内容运营和社群运营等方式吸引和激活用户&#xff0c;从而增加产品的活跃度和留存率。具体来说&#xff0c;运营人员会撰写内容并发布到各大自媒体平台&#xff0c;以吸引和拉新用户。同时&#xff0c;他们还会通过各种手段…

游戏资源汇总

游戏平台资源汇总 668 游戏仓库 网站名称&#xff1a;668 游戏仓库网址&#xff1a;668 游戏仓库介绍&#xff1a;全球最大的游戏下载中心、游戏交流中心&#xff0c;提供单机游戏、Switch 游戏、PS4 游戏等资源。 PC 游戏下载 网站名称&#xff1a;PC 游戏下载网址&#x…

图像关键特征描述方法-小目标

图像关键特征描述方法主要包括以下几种: SIFT(尺度不变特征变换): SIFT是一种广泛使用的特征描述方法,它通过尺度空间和梯度方向直方图来描述图像中的关键点。SIFT特征描述具有尺度不变性和旋转不变性,对于光照和视角变化也具有一定的鲁棒性。 SURF(加速稳健特征): SURF…

Echarts柱状图数据太多,自定义长度之后,自适应浏览器缩放

不知道是不是最优解&#xff0c;但是当前解决了我遇到的问题&#xff0c;如有更好的方法&#xff0c;希望看到这篇文章的同学可以不吝指导一番&#xff0c;非常感谢 1、问题描述&#xff1a; 因Ecahrts柱状图数据有时多有时少&#xff0c;所以在数据达到一定程度之后&#xff…

第54期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

Spring Boot 实现动态数据源配置

前言 之前在CSDN博客以及某站看了教程&#xff0c;不免觉得有点不知如何下手&#xff0c;好在最后融合了以下&#xff0c;得出了一个比较简单的配置动态数据源的过程。 首先项目是Spring Boot的单体项目&#xff0c;我们的需求是要连接多个数据库&#xff0c;那么就需要配置多个…

产品经理:做好有效的客户需求分析

需求分析是产品开发过程中的重要环节&#xff0c;它直接决定了产品是否能够满足市场需求和用户期望。通过深入了解客户需求&#xff0c;产品经理可以确保产品功能的设计符合用户的实际需求&#xff0c;从而提高产品的用户满意度和市场竞争力。 一、识别用户需求 识别用户需求…

目标检测数据集 - 海洋垃圾检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;海洋垃圾检测数据集&#xff0c;真实拍摄海洋海底场景高质量垃圾检测图片数据&#xff0c;涉及场景丰富&#xff0c;比如海底塑料垃圾数据、海底铁制品罐状垃圾数据、海底纸张垃圾数据、海洋生物和海底垃圾同框数据、海底探索仪器和海底垃圾同框数据、海…