Vue3+Ant Design表格排序

最近在公司做有关报表的项目时,遇到最多的问题-表格排序,刚开始看到UI设计图的时候,还有些纳闷这个排序如何做,其实实际上并没有想象中的那么难,如果说单纯的排序的话ant design这个组件里的表格有自带的排序和筛选功能,但是数据来源于后端,所以操作起来可能不能只考虑前端的功能,强烈推荐需要做有关后台系统这块项目的小伙伴可以去使用这个组件,他有react版本的及Vue版本的,可自行依据使用的框架进行选择。

一,安装ant design

我这里使用的是Vue框架,所以就根据Vue来进行以下步骤,特别提醒在安装这个插件之前一定要先安装nodejs。@后面是安装具体的版本号,这个依据自身需要酌情选择即可。

npm i --save ant-design-vue@4.x

二、全局注册

以下代码便完成了 Antd 的全局注册。需要注意的是,样式文件需要单独引入。

import { createApp } from 'vue';
import Antd from 'ant-design-vue';
import App from './App';
import 'ant-design-vue/dist/reset.css';const app = createApp(App);app.use(Antd).mount('#app');

三、项目中引用Antd、并实现排序功能

这里以使用表格为例

(1)组件部分

<template><div class="operat-tab"><a-table:columns="columns":dataSource="tableData":pagination="false"bordered@change="handleChange":scroll="{ y: 'calc(100vh - 520px)' }"/><a-paginationv-model:current="page.currentPage"v-model:page-size="page.pageSize"show-quick-jumpershow-size-changer:total="pageData.total":show-total="(total, range) => `共 ${props.pageData.total || 0} 条`"/></div>
</template>

(2)script部分

<script setup>
// 需要排序某个字段
const flag = ref()
// 排序标识
const sort = ref()
// 分页
const page = ref({})
// 表格头部信息
const columns = ref([{title: '序号',dataIndex: 'index',align: 'center',key: 'index'},{title: '等级',dataIndex: 'level',align: 'center',key: 'level'},{title: '路段名称',dataIndex: 'road',align: 'center',key: 'road'},{title: '桩号',dataIndex: 'stake',align: 'center',key: 'stake'},{title: '营运单位',dataIndex: 'address',align: 'center',key: 'address'},{title: '开始时间',dataIndex: 'startTime',align: 'center',key: '1',//利用key值来获取需要排序的字段名sorter: true},{title: '时长(分钟)',dataIndex: 'time',align: 'center',key: '2',sorter: true},{title: '长度(米)',dataIndex: 'length',align: 'center',key: '3',sorter: true},{title: '速度(千米/小时)',dataIndex: 'speed',align: 'center',key: '4',sorter: true}
])
// 改变asc dsc
const changeTable = (pagination, filters, sorter) => {if (sorter.order === 'ascend') {flag.value = sorter.columnKeysort.value = 'ASC'const params = {sort: sort.value,page: page.value}getCongestedData(params)} else {flag.value = sorter.columnKeysort.value = 'DESC'const params = {flag: flag.value,sort: sort.value,page: page.value}getCongestedData(params)}
}
// 获取表格数据,说明:数据来源于后端,这里仅限于模拟,params是需要传的参数
const getCongestedData = params => {return new Promise((resolve, reject) => {getCongestedTab(params).then(res => {dataSource.value = []if (res.code === 200 && res.data) {const dataList = res.data.listdataList.forEach((item, index) => {dataSource.value.push({index: index + 1,level: item.congestDesc,road: item.roadName,stake: item.stake,address: item.zoneName,startTime: item.startTime,time: item.duration,length: item.length,speed: item.speed})})pageData.value = {...pageData.value,total: res.data.page.totalNum,showTotal: () => `共 ${res.data.page.totalNum || 0} 条`,current: res.data.page.currentPage}// console.log(res, '这个是')} else {dataSource.value = []}resolve(res.data)}).catch(error => {reject(error)})})
}</script>

(3)css部分

<style lang="less" scoped>
.operat-tab {.ant-table-wrapper {height: calc(100% - 70px);}.ant-pagination {font-size: 14px;margin-top: 10px;}.ant-pagination-item {min-width: 32px;height: 32px;margin-right: 8px;line-height: 30px;}.ant-pagination-prev,.ant-pagination-next,.ant-select-selector,.ant-pagination-options-quick-jumper {min-width: 28px;height: 28px;margin-top: 10px;line-height: 28px;font-size: 14px;align-items: center;input {position: relative;display: inline-block;width: 100%;min-width: 0;padding: 4px 11px;color: rgba(0, 0, 0, 0.85);font-size: 14px;line-height: 1.5715;background-color: #fff;background-image: none;border: 1px solid #d9d9d9;border-radius: 2px;transition: all 0.3s;width: 50px;height: 32px;margin: 0 8px;}}::v-deep .ant-table {max-height: calc(100vh - 3.4vw - 25px - 128px - 76px - 100px);background: #f0f5ff;}::v-deep .ant-table-thead > tr > th {background-color: #dee9ff;}::v-deep .ant-table-tbody tr:nth-child(2n) {background-color: #fff;}::v-deep .ant-pagination.mini .ant-pagination-total-text {flex: 1;}::v-deep .ant-pagination.mini .ant-pagination-item {margin-left: 0.42vw;}
}
</style>

四、展示

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

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

相关文章

ocr截图识别的软件有吗?分享6款!

随着科技的发展&#xff0c;我们越来越多地依赖于数字技术和智能工具来处理日常任务。OCR技术就是其中的佼佼者&#xff0c;它能够将图片中的文字快速、准确地转换成可编辑的文本格式。OCR截图识别软件就是这一技术的典型应用&#xff0c;它们能够帮助我们轻松地从截图中提取文…

阿里云服务器带宽价格全解析,附报价单

阿里云服务器公网带宽怎么收费&#xff1f;北京地域服务器按固定带宽计费一个月23元/M&#xff0c;按使用流量计费0.8元/GB&#xff0c;云服务器地域不同实际带宽价格也不同&#xff0c;阿里云服务器网aliyunfuwuqi.com分享不同带宽计费模式下带宽收费价格表&#xff1a; 公网…

【C语言】双向链表详解

文章目录 关于双向链表双向链表的初始化双向链表的打印双向链表方法调用 - 尾删为例双向链表的查找 - 指定位置之后插入为例双向链表结束 - 链表的销毁小结及整体代码实现 关于双向链表 首先链表有8种基本分法 其中在笔者之前文章种详细介绍的 单链表 是不带头单项不循环链表…

C++学习知识

C知识小菜单&#xff1a; 备赛蓝桥杯过程中的一些小知识积累&#xff0c;持续更新中&#xff01; 文章目录 C知识小菜单&#xff1a;1.小数取整&#xff1a;2.小数点后保留几位&#xff1a;3.数字占几位字符&#xff1a;4. 求x 的 y 次幂&#xff08;次方&#xff09;5. 求平方…

STM32完成软件I2C通讯

今天的重点是利用STM32的软件方案和MPU60506轴姿态传感器建立通讯&#xff0c;今天只完成了简单的发送地址和接收应答的部分&#xff0c;特此记录一下过程&#xff0c;以后忘记可以随时翻出来看看。 先介绍最基本的I2C通讯的最基本的6个时序&#xff1a; 一&#xff1a;起始条…

TCP/IP协议—UDP

TCP/IP协议—UDP UDP协议UDP通信特点 UDP头部报文UDP检验 UDP协议 用户数据传输协议 (UDP&#xff0c;User Datagram Protocol) 是一种无连接的协议&#xff0c;提供了简单的数据传输服务&#xff0c;不保证数据的顺序以及完整性。应用层很多通信协议都基于UDP进行传输&#x…

未佩戴厨师帽识别检测 厨房管理系统 自动监测未佩戴厨师帽行为 实时报警

在厨房环境中&#xff0c;佩戴厨师帽对于食品安全和卫生至关重要。厨师帽能够有效地防止头发、皮屑等杂质掉入食物中&#xff0c;减少了食品受到污染的可能性&#xff0c;从而保障了食品安全。特别是在学校、餐厅等场景中&#xff0c;对于未佩戴厨师帽的检测更是必不可少。相关…

深入理解Linux系统中的前后台任务与守护进程

⭐小白苦学IT的博客主页 ⭐初学者必看&#xff1a;Linux操作系统入门 ⭐代码仓库&#xff1a;Linux代码仓库 ❤关注我一起讨论和学习Linux系统 1.前言 在Linux系统中&#xff0c;进程管理是至关重要的一个环节。其中&#xff0c;前后台任务和守护进程是进程管理中不可忽视的两…

Vue结合el-table实现合并单元格(以及高亮单元表头和指定行)

实现效果如下&#xff1a; 思路&#xff1a; 1.首先使用动态表头表格。 2.其次实现动态计算合并单元格。&#xff08;计算规则 传递需要合并的字段&#xff09; 3.然后封装公共的计算单元格方法 export导出供多个页面使用。 4.同时需要封装成公共的组件供多个页面使用。 5…

电动车新国标迎来修订机会,用户的真实需求能被满足吗?

文&#xff5c;新熔财经 作者&#xff5c;宏一 自2019年4月《电动自行车安全技术规范》发布至今&#xff0c;电动车的新国标标准已经实施5年&#xff0c;市场上的争议也此起彼伏地持续了5年。 因为新国标对电动车的各项技术标准提出的明确要求&#xff0c;其中&#xff0c;最…

Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066

很奇怪的问题,在使用nifi的时候碰到的,这里是用NIFI,把数据从postgresql中同步到mysql中, 首先postgresql中的源表,中是没有create_time这个字段的,但是同步的过程中报错了. 报错的内容是说,目标表中有个create_time字段,这个字段是必填的,但是传过来的flowfile文件中,的数据没…

[RK3399 Linux] 使用ubuntu 20.04.5制作rootfs

一、ubuntu base ubuntu base是用于为特定需求创建自定义映像的最小rootfs,是ubuntu可以运行的最小环境。 1.1 下载源码 下载ubuntu-base的方式有很多,可以从官方的地址:ttp://cdimage.ubuntu.com/ubuntu-base/releases。 也可以其它镜像地址下载,如清华源:https://mi…

使用shell管理和配置网络服务_1

1、请使用nmcli命令配置仅主机模式网络环境&#xff0c;要求如下: 1) 创建一个新的网卡连接eth1&#xff0c;该连接映射到ens32网卡上; 首先&#xff0c;确保 ens32 网卡没有被其他网络配置文件使用。然后&#xff0c;使用 nmcli 创建一个新的连接&#xff0c;并将其绑定到 e…

在Linux中使用dpkg -i离线安装下载的deb软件包

“dpkg -i” 是 Debian 系统中用于安装 .deb 格式软件包的命令。它是 Debian Package Management System&#xff08;DPMS&#xff09;的一部分&#xff0c;允许用户通过命令行界面来管理软件包。 使用该命令时&#xff0c;需要提供要安装的软件包的路径作为参数。例如&#…

实战纪实 | 编辑器漏洞之Ueditor-任意文件上传漏洞 (老洞新谈)

UEditor 任意文件上传漏洞 前言 前段时间在做某政府单位的项目的时候发现存在该漏洞&#xff0c;虽然是一个老洞&#xff0c;但这也是容易被忽视&#xff0c;且能快速拿到shell的漏洞&#xff0c;在利用方式上有一些不一样的心得&#xff0c;希望能帮助到一些还不太了解的小伙…

大模型日报|今日必读的9篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.Google DeepMind 提出 RecurrentGemma&#xff1a;超越 Transformer&#xff0c;迈向高效开放语言模型 Google DeepMind 团队提出了 RecurrentGemma&#xff0c;一个使用 Google 新颖的 Griffin 架构的开放语言模型…

PHP01——php快速入门 之 使用phpstudy快速搭建PHP环境

PHP01——php快速入门 之 使用phpstudy快速搭建PHP环境 0. 前言1. 下载小皮面板1.1 下载phpstudy&#xff08;小皮面板&#xff09;1.2 启动、简单访问1.2.1 启动Apache1.2.2 访问1.2.3 访问自定义文件或页面 2. 创建网站2.1 创建网站2.2 可能遇到的问题2.2.1 hosts权限问题&am…

【新版HI3559AV100开发注意事项(四)】

新版HI3559AV100开发注意事项&#xff08;四&#xff09; 三十、HI3559A参数中对输入分辨率限制的原因是&#xff1f; 答&#xff1a;分辨率限制有两个来源&#xff1a; 一个是时钟频率最高为600M&#xff0c;开启一拍两像素之后相当于1200M。你这个数据量太大了&#xff0c;6…

[大模型]基于 ChatGLM3 和 LangChain 搭建知识库助手

基于 ChatGLM3 和 LangChain 搭建知识库助手 环境配置 在已完成 ChatGLM3 的部署基础上&#xff0c;还需要安装以下依赖包&#xff1a; pip install langchain0.0.292 pip install gradio4.4.0 pip install chromadb0.4.15 pip install sentence-transformers2.2.2 pip inst…

微服务项目实战-黑马头条(一):环境搭建 + APP登录功能【前端静态资源+nginx反向代理+网关+过滤器】

文章目录 一、搭建nacos二、初始工程的搭建2.1 环境准备2.2主体结构 三、APP登录3.1 需求分析3.2 表结构分析3.3 接口定义3.4 功能实现 四、接口工具postman、swagger、knife4j4.1 postman4.2 swagger4.3 knife4j 五、网关5.1 网关搭建5.2 全局过滤器实现jwt校验 六、前端集成6…