Vue3+element plus+sortablejs实现table列表拖拽

1、安装

npm install sortablejs --save

2、引入

import Sortable from 'sortablejs';

3、使用

  • 表格表头必须加row-key,否则会出现排序错乱
  • 完整代码table.vue
<el-table v-loading="loading"row-key="id":height="tableHeight"ref="tableRef"borderstripesize="small":data="receiptDataList":row-class-name="setRowColor"show-summary:summary-method="getSummaries"@selection-change="handleSelectionChange"><el-table-column type="selection" width="45" align="center"/><el-table-columnv-for="(item, index) in tableHeaderList":key="`col_${index}_${mykey}`":prop="item.prop":label="item.label":width="item.width":sortable="item.sortable":show-overflow-tooltip="item.overflow"align="center"><template #default="{row}" v-if="item.label === '收款编码'"><span>{{ row.no }}</span></template><template #default="{row}" v-if="item.label === '箱号'"><span>{{ row.caseNum }}</span></template>.......</el-table-column>
</el-table>
onMounted(() => {columnDrop()rowDrop()
})
//列拖拽:列拖拽方法实际上就是修改表头数据的值
const mykey = ref(0)
function columnDrop() {const wrapperTr  = document.querySelector('.el-table__header-wrapper tr');Sortable.create(wrapperTr , {animation: 180,delay: 0,onEnd: evt => {// 跳过显示的列数量,如开头我们用了一个多选框const empty = 1const oldItem = tableHeaderList.value[evt.oldIndex- empty];tableHeaderList.value.splice(evt.oldIndex- empty, 1);tableHeaderList.value.splice(evt.newIndex- empty, 0, oldItem);//防止表头数据改变,但表头未重新渲染//在自定义表头的时候,由于是用的v-for循环生成的,因此会给每个循环体一个固定的key,导致数据频繁异步更新时,因为这个key没有变,所以el-table觉得表头数据是没有变化的,因此就只更新了整体表格数据、key值有变化的列的表头。mykey.value = Math.floor(Math.random()*1000+1) }});
}//行拖拽:行拖拽方法实际上就是修改this.tableData的值
function rowDrop() {// 要侦听拖拽响应的DOM对象const tbody = document.querySelector('.el-table__body-wrapper tbody');Sortable.create(tbody, {// 结束拖拽后的回调函数onEnd({newIndex, oldIndex}) {console.log('拖动了行,当前序号:' + newIndex);const currentRow = receiptDataList.value.splice(oldIndex, 1)[0];receiptDataList.value.splice(newIndex, 0, currentRow);}})
}

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

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

相关文章

Linux基础开发工具使用快速上手

软件包管理器 概念理解 在Linux下安装软件的话&#xff0c;一个比较原始的办法是下载程序的源代码&#xff0c;然后进行编译&#xff0c;进而得到可执行程序&#xff0c;然后就可以运行这个软件了。但是这种做法太麻烦了&#xff0c;于是就有些人把一些常用的软件提前编译好&…

Python子进程管理与进程信息获取

1. Python子进程模块subprocess subprocess 模块允许我们启动一个新进程&#xff0c;并连接到它们的输入/输出/错误管道&#xff0c;从而获取返回值。 &#xff08;1&#xff09;run 方法 首先我们来看看 run 方法的使用&#xff0c;该方法的参数如下&#xff1a; args&…

笔记1.5:计算机网络体系结构

从功能上描述计算机网络结构 分层结构 每层遵循某个网络协议完成本层功能 基本概念 实体&#xff1a;表示任何可发送或接收信息的硬件或软件进程。 协议是控制两个对等实体进行通信的规则的集合&#xff0c;协议是水平的。 任一层实体需要使用下层服务&#xff0c;遵循本层…

uniapp 小程序 父组件调用子组件方法

答案&#xff1a;配合小程序API > this.selectComponent("")&#xff0c;来选择组件&#xff0c;再使用$vm选择组件实例&#xff0c;再调用方法&#xff0c;或者data 1 设置组件的id,如果你的多端&#xff0c;请跟据情况设置ref,class,id&#xff0c;以便通过小…

区块链(1):区块链简介

区快链是通过密码技术保护的分布式数据库这是比特币背后的技术。 本文将逐步带您了解区块链。 1 区块链BLOCKCHAIN的类的定义 区块链有一个区块列表。 它从一个单独的块开始&#xff0c;称为 genesis block【创世区块】 2 区块链BLOCK的类的定义 第一个区块叫做 Genesis[…

QT5到QT6产生的一些变化【QT环境搭建篇】

1、QT 重写enterEvent 鼠标进入事件没有作用 widget中的事件函数 由原来的event(QEvent *event) 变为enterEvent(QEnterEvent *event) 重写改成这样就可以了 void enterEvent(QEnterEvent *event); 2、error C4996: QString::SkipEmptyParts&#xff08;“SkipEmptyParts”:…

一阶低通滤波器滞后补偿算法

一阶低通滤波器的推导过程和双线性变换算法请查看下面文章链接: PLC算法系列之数字低通滤波器(离散化方法:双线性变换)_双线性离散化_RXXW_Dor的博客-CSDN博客PLC信号处理系列之一阶低通(RC)滤波器算法_RXXW_Dor的博客-CSDN博客_rc滤波电路的优缺点1、先看看RC滤波的优缺点…

Redis 篇

1、为什么要用缓存&#xff1f; 使用缓存的目的就是提升读写性能。而实际业务场景下&#xff0c;更多的是为了提升读性能&#xff0c;带来更好的性能&#xff0c;带来更高的并发量。 Redis 的读写性能比 Mysql 好的多&#xff0c;我们就可以把 Mysql 中的热点数据缓存到 Redis…

设计模式:组合模式

目录 组件代码实现优缺点源码中应用总结 组合模式是一种结构型设计模式&#xff0c;用于将对象组织成树形结构&#xff0c;以表示“部分-整体”的层次结构。组合模式使得客户端可以统一地处理单个对象和组合对象&#xff0c;而不需要区分它们之间的差异。 在组合模式中&#x…

Linux学习第14天:Linux设备树(一):枝繁叶茂见晴天

本节笔记主要学习了Linux设备树相关知识点&#xff0c;由于内容较多&#xff0c;打算分两天进行总结。今天着重学习Linux设备树&#xff0c;主要包括前三节内容&#xff0c;分别是概念、格式和语法。 本节思维导图内容如下&#xff1a; 一、什么是设备树 设备树可以用一个图来进…

Vivado XADC IP核 使用详解

本文介绍Vivado中XADC Wizard V3.3的使用方法。 XADC简介 XADC Wizard Basic Interface Options&#xff1a; 一共三种&#xff0c;分别是AXI4Lite、DRP、None。勾选后可在界面左侧看到相应通信接口情况。Startup Channel Selection Simultaneous Selection&#xff1a;同时监…

qt4,qt5,qt6嵌入式linux运行Qt程序不同的地方

下面为Qt 4、Qt 5 和 Qt 6分别举例说明它们在嵌入式Linux上运行Qt程序的一些不同之处&#xff1a; Qt 4 示例场景&#xff1a; 假设你正在开发一个嵌入式Linux设备上的控制面板应用程序&#xff0c;该应用程序使用Qt 4。 不同之处&#xff1a; 构建系统&#xff1a; 使用qma…

长胜证券:煤价突破900元大关 GLP-1减重药进入集中获批期

上星期五&#xff0c;两市股指早盘震动上扬&#xff0c;午后回落走低。到收盘&#xff0c;沪指跌0.28%报3117.74点&#xff0c;深成指跌0.52%报10144.59点&#xff0c;创业板指涨跌0.45%报2002.73点&#xff0c;科创50指数涨0.71%&#xff1b;两市合计成交7217亿元&#xff0c;…

【算法训练-二叉树 一】【遍历二叉树】前序遍历、中序遍历、后续遍历、层序遍历、锯齿形层序遍历、二叉树右视图

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【二叉树的遍历】&#xff0c;使用【二叉树】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为…

OmniShade - Mobile Optimized Shader

OmniShade Pro是一款专为移动设备设计的高性能着色器。它包含多种技术,使其几乎可以实现从现实到卡通到动漫的任何外观,但由于自适应系统仅计算任何功能集所需的内容,它的速度也非常快。 它旨在弥合Unity的标准着色器和移动着色器之间的差距,但由于其高级别的风格化、组合…

浏览器事件机制详解

目录 前言 事件类型 鼠标事件 表单事件 窗口事件 DOM事件 多媒体事件 拖拽与放置事件 移动设备事件 剪切板事件 错误事件 过渡、动画事件 事件监听 onevent addEventListener(event) 事件触发 事件流程 捕获阶段 目标阶段 冒泡阶段 事件对象 总结 相关代…

Pyhton压缩JS代码

文章目录 1.安装依赖2.目录结构3.代码4.执行结果 1.安装依赖 pip install jsmin2.目录结构 3.代码 import jsmindef run(src_path, tgt_path):with open(src_path, "r", encodingutf-8) as input_file:with open(tgt_path, "w", encodingutf-8) as outpu…

【Java 基础篇】Java 字节流详解:从入门到精通

Java中的字节流是处理二进制数据的关键工具之一。无论是文件操作、网络通信还是数据处理&#xff0c;字节流都发挥着重要作用。本文将从基础概念开始&#xff0c;深入探讨Java字节流的使用&#xff0c;旨在帮助初学者理解和掌握这一重要主题。 什么是字节流&#xff1f; 在Ja…

万能适配器basequickadapter + recycleview实现单选并且默认选择第一个

1、首先&#xff0c;确保您已经添加了BaseQuickAdapter和RecyclerView的依赖项。您可以在项目的build.gradle文件中添加以下依赖项&#xff1a; dependencies {implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4implementation androidx.recyclerview:r…

C/C++ sscanf正则测试

分号分割&#xff0c;等号解析 #include <iostream> #include <string.h>typedef struct{char name[32];int priority; }codes_t;int codes_get(char* str, codes_t* codes){int i 0;char *ptr;std::cout<<"before strtok str: "<<str<&…