当前位置: 首页 > article >正文

Vue3 中使用 Sortablejs 实现拖拽排序功能 序号不更新问题

Vue3 中使用 Sortablejs 实现拖拽排序功能 序号不更新问题

  1. 安装依赖
  npm install sortablejs --save
  1. 简单使用
<template><div class="app-container"><div class="table-header"><el-button type="primary" @click="handleAdd">添加</el-button></div><el-table :data="tableData" row-key="code"><el-table-column width="50"><template #default><el-icon class="drag-handle"><Operation /></el-icon></template></el-table-column><el-table-column label="序号" width="80" align="center"><template #default="scope">{{ scope.$index + 1 }}</template></el-table-column><el-table-column prop="name" label="名称"></el-table-column></el-table></div>
</template><script setup>
import { ref, onMounted, nextTick } from 'vue'
import Sortable from 'sortablejs'const tableData = ref([{ code: 1, name: '项目1' },{ code: 2, name: '项目2' },{ code: 3, name: '项目3' }
])// 添加数据方法
const handleAdd = () => {const newData = {code: Date.now(),name: '新项目' + (tableData.value.length + 1)}tableData.value.push(newData)
}// 记录滚动位置
const scrollTopTemp = ref(0)onMounted(() => {const el = document.querySelector('.el-table__body-wrapper tbody')if (!el) returnSortable.create(el, {handle: '.drag-handle',  // 拖拽句柄animation: 150,  // 动画过渡时间onEnd({ newIndex, oldIndex }) {const currRow = tableData.value.splice(oldIndex, 1)[0]tableData.value.splice(newIndex, 0, currRow)}})
})
</script><style scoped>
.table-header {margin-bottom: 20px;
}.drag-handle {cursor: move;font-size: 20px;color: #909399;
}:deep(.el-table__row) {cursor: move;
}
</style>
  1. 有时因为嵌套原因,或者循环创建会造成 序号不更新的情况 解决方法如下
    onEnd({ newIndex, oldIndex }) {const listTemp = [...tableData.value]const currRow = listTemp.splice(oldIndex, 1)[0]listTemp.splice(newIndex, 0, currRow)// 使用 nextTick 确保数据更新后再设置滚动位置tableData.value = []nextTick(() => {tableData.value = listTemp})}
  1. 该方法会解决序号刷新问题 但是会造成表格重置 导致 滚动条回到顶部 解决如下
  Sortable.create(el, {handle: '.drag-handle',  // 拖拽句柄animation: 150,  // 动画过渡时间onStart() {// 记录滚动位置// 这里需要注意你的滚动元素 是那个 我的是html标签 scrollTopTemp.value = document.documentElement.scrollTop},onEnd({ newIndex, oldIndex }) {const currRow = tableData.value.splice(oldIndex, 1)[0]tableData.value.splice(newIndex, 0, currRow)// 使用 nextTick 确保数据更新后再设置滚动位置tableData.value = []nextTick(() => {tableData.value = listTempnextTick(() => {// 这里需要注意你的滚动元素 是那个 我的是html标签 document.documentElement.scrollTop = scrollTopTemp.value})})}})
  1. 注意: 弹窗中的表格拖拽 请在 每次弹窗打开后面进行初始化。

  2. 完成!

相关文章:

Vue3 中使用 Sortablejs 实现拖拽排序功能 序号不更新问题

Vue3 中使用 Sortablejs 实现拖拽排序功能 序号不更新问题 安装依赖 npm install sortablejs --save简单使用 <template><div class"app-container"><div class"table-header"><el-button type"primary" click"hand…...

网络运维学习笔记(DeepSeek优化版) 024 HCIP-Datacom OSPF域内路由计算

文章目录 OSPF域内路由计算&#xff1a;单区域的路由计算一、OSPF单区域路由计算原理二、1类LSA详解2.1 1类LSA的作用与结构2.2 1类LSA的四种链路类型 三、OSPF路由表生成验证3.1 查看LSDB3.2 查看OSPF路由表3.3 查看全局路由表 四、2类LSA详解4.1 2类LSA的作用与生成条件4.2 2…...

【云馨AI-大模型】自动化部署Dify 1.1.2,无需科学上网,Linux环境轻松实现,附Docker离线安装等

Dify介绍 官网&#xff1a;https://dify.ai/zh生成式 AI 应用创新引擎开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力&#xff0c;轻松构建和运营生成式 AI 原生应用。 Dify安装脚本 目录创建 mkdir -p /data/yunxinai &&a…...

Android 简化图片加载与显示——使用Coil和Kotlin封装高效工具类

为了简化使用Coil加载网络图片和GIF的过程&#xff0c;我们可以封装一个工具类。这个工具类将包括初始化ImageLoader的方法、加载图片到ImageView的方法&#xff0c;以及可能的其他便捷方法&#xff0c;如加载圆形图片、设置占位图等。下面是一个示例&#xff1a; 首先&#x…...

CUDA 学习(2)——CUDA 介绍

GeForce 256 是英伟达 1999 年开发的第一个 GPU&#xff0c;最初用作显示器上渲染高端图形&#xff0c;只用于像素计算。 在早期&#xff0c;OpenGL 和 DirectX 等图形 API 是与 GPU 唯一的交互方式。后来&#xff0c;人们意识到 GPU 除了用于渲染图形图像外&#xff0c;还可以…...

棱镜七彩受邀出席“供应链安全国家标准贯标应用深度行”活动并做主题分享

近日&#xff0c;“供应链安全国家标准贯标应用深度行”活动在北京顺利举办&#xff0c;此次活动汇聚了行业内的众多专家和企业代表&#xff0c;深入探讨了供应链安全国家标准的制定与实施路径。棱镜七彩副总裁黄浩东受邀出席&#xff0c;并发表了题为《国家标准实施路径下的企…...

Vue3项目中的.vscode文件夹

.vscode 文件夹主要用于存放与 Visual Studio Code&#xff08;VS Code&#xff09;编辑器相关的项目配置文件&#xff0c;这些文件能让项目在 VS Code 里的开发体验更加个性化和高效。 extensions.json 在 .vscode 文件夹中&#xff0c;extensions.json 文件的作用是列出项目…...

系统转换、系统维护、净室软件工程、构件软件工程(高软51)

系列文章目录 系统转换、系统维护、净室软件工程、构件软件工程 文章目录 系列文章目录前言一、系统转换二、系统维护三、净室软件工程四、基于构件的软件工程总结 前言 本节讲明遗留系统的系统转换、系统维护、净室软件工程、基于构件软件工程相关知识。 一、系统转换 就是讲…...

K8S学习之基础四十四:k8s中部署Kibana

在Kubernetes集群中安装Kibana通常涉及使用Helm Chart或直接使用Kubernetes Manifest文件。以下是使用Helm Chart安装Kibana的步骤&#xff1a; 添加Elastic Helm仓库 首先&#xff0c;添加Elastic的Helm仓库&#xff1a; bash 复制 helm repo add elastic https://helm.ela…...

联核防爆无人叉车:高危环境中的安全搬运守护者

联核防爆AGV无人叉车是专为易燃易爆环境设计的智能搬运设备&#xff0c;其特点、功能与应用场景均围绕“安全”与“智能”核心展开&#xff1a;联核科技官网-AGV叉车十大品牌-无人叉车厂家-自动化叉车-智能搬运码垛机器人-智能叉车系统解决方案专家 一、核心特点 防爆设计电气…...

23种设计模式-责任链(Chain of Responsibility)设计模式

责任链设计模式 &#x1f6a9;什么是责任链设计模式&#xff1f;&#x1f6a9;责任链设计模式的特点&#x1f6a9;责任链设计模式的结构&#x1f6a9;责任链设计模式的优缺点&#x1f6a9;责任链设计模式的Java实现&#x1f6a9;代码总结&#x1f6a9;总结 &#x1f6a9;什么是…...

Linux使用集群服务器查看已安装conda环境,且环境名无显示、系统环境混乱等问题

一、问题 在使用集群服务器前可以查看导入&#xff0c;module load不需要安装。我都是自己重新下载Anaconda3-2024.10-1-Linux-x86_64.sh&#xff0c;然后安装&#xff0c;导致混乱。下面是情况 1.创建的环境名跑到目录下了 2.多个base,且有个base无显示 二、解决办法 1.删…...

python蓝桥杯刷题的重难点知识笔记

1、datetime模块 datetime.date&#xff1a;代表日期&#xff0c;包含年、月、日信息。datetime.time&#xff1a;代表时间&#xff0c;包含时、分、秒、微秒信息。datetime.datetime&#xff1a;结合了日期和时间&#xff0c;包含年、月、日、时、分、秒、微秒信息。datetime.…...

Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现

一、前言 在移动互联网蓬勃发展的今天&#xff0c;视频播放功能已成为众多Android应用的核心特性之一。面对多样化的视频格式和传输协议&#xff0c;开发一款高效、稳定的视频播放器是许多开发者追求的目标。FLV&#xff08;Flash Video&#xff09;格式&#xff0c;尽管随着H…...

Redmi Note 11 T pro + 刷入 LinegaOs 22.1 记录 手机已经解锁bl.

Redmi Note 11 T pro 刷入 LinegaOs 22.1 记录 手机已经解锁bl. 获取LIneagaOS源码&#xff0c; 以及https://github.com/xiaomi-mediatek-devs 这个组织提供的代码&#xff0c;非常感谢 环境要求&#xff1a; ubuntu 22.04 需要准备的依赖 sudo apt install git curl vim…...

《Operating System Concepts》阅读笔记:p483-p488

《Operating System Concepts》学习第 40 天&#xff0c;p483-p488 总结&#xff0c;总计 6 页。 一、技术总结 1.object storage (1)object storage 管理软件 Hadoop file system(HDFS)、Ceph。 二、英语总结(生词&#xff1a;1) 1.commodity (1)commodity: com-(“tog…...

极光优化PLO-Transformer-LSTM多变量时序

极光优化算法(PLO)于2024年8月发表于SCI期刊《Neurocomputing》&#xff0c;利用算法极光优化算法PLO优化Transformer-LSTM模型&#xff0c;同时提供与未优化模型的对比&#xff0c;包含柱状图、两张雷达图、二维散点图等等。 &#xff08;一&#xff09;LSTM模型LSTM是一种在时…...

Android开发:基于 Kotlin 协程的设备指令控制工具类设计与实现

在安卓开发中&#xff0c;设备控制是一个常见的需求。本文将介绍如何使用 Kotlin 协程实现一个高效、健壮的设备指令控制工具类。该工具类支持指令队列、重试机制、状态管理等功能&#xff0c;并适配安卓平台&#xff0c;确保生命周期管理和主线程安全性。通过本文&#xff0c;…...

SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景

以下是 SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景&#xff1a; 数据类型类别数据类型解释内存占用适用场景整数类型bigint用于存储范围较大的整数&#xff0c;范围是 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)8 字节需要…...

Android Kotlin 权限工具类封装:简化动态权限管理

在 Android 开发中&#xff0c;动态权限管理是一个常见的需求&#xff0c;尤其是在高版本 Android 系统中&#xff0c;权限管理变得更加严格和复杂。为了简化权限申请的流程&#xff0c;减少重复代码&#xff0c;本文将介绍如何使用 Kotlin 封装一个高效、易用的权限工具类。 权…...

数据结构每日一题day3(顺序表)★★★★★

题目描述&#xff1a;顺序表L的元素递增有序排列&#xff0c;设计一个算法在插入元素x后保持该顺序表仍然递增有序排列,插入成功后返回插入元素所在位置,不成功返回-1 算法思想&#xff1a;在递增有序的顺序表中插入元素 x 并保持有序性&#xff0c;步骤如下&#xff1a; 合法…...

Git合并删除原理

如果有 A 分支&#xff0c;从 A 分支上新建 B 分支&#xff0c;B 分支做出修改合并到 A 分支&#xff0c;然后删除 B 分支&#xff0c;A 分支还有没有 B 分支修改的内容 关键原理&#xff1a; 合并的本质是提交历史的整合 1. 合并操作会将 B 的修改永久写入 A 的历史 当 …...

Git 是什么

第一步&#xff1a;想象一个场景——写作文的烦恼 假设你在电脑上写一篇作文&#xff0c;反复修改了好几次。突然发现 ​改错了 想回到之前的某版&#xff0c;但你已经覆盖保存了。这时候你可能会想&#xff1a; &#x1f62d; “要是能回到昨天的版本就好了&#xff01;”&a…...

基于javaweb的SpringBoot智能无人仓库管理设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

python处理音频相关的库

1 音频信号采集与播放 pyaudio import sys import pyaudio import wave import timeCHUNK 1024 FORMAT pyaudio.paInt16 CHANNELS 1#仅支持单声道 RATE 16000 RECORD_SECONDS 3#更改录音时长#录音函数&#xff0c;生成wav文件 def record(file_name):try:os.close(file_…...

JNI 本地方法调用 Java 静态方法 和 实例方法对比;通过本地方法创建 Java 对象;本地方法访问 Java 数组元素;本地方法错误返回给 Java

以下是针对 Java JNI 的详细代码示例和对比分析&#xff1a; 一、调用 Java 静态方法 vs 实例方法 Java 示例类 public class JNIExample {public static void staticMethod(int value) {System.out.println("Static Method: " value);}public void instanceMetho…...

AWS Lambda 深度解析:构建高效无服务器应用的实战指南

在2025年的云计算生态中&#xff0c;AWS Lambda 作为无服务器计算的代表&#xff0c;以其按需执行、高可扩展性和零运维成本的优势&#xff0c;成为开发者构建现代应用的首选。无论是快速原型开发还是生产级系统&#xff0c;Lambda 都能大幅提升效率。然而&#xff0c;如何充分…...

网络爬虫-2:基础与理论

一.同步加载与异步加载 1.1同步加载定义: 页面所有内容一起加载出来,当某一个数据加载有问题,整个页面就不会加载出来(如HiFiNi音乐网站),所以又叫阻塞模式 1.2爬取步骤: 看netword->document 2.1异步加载定义: 数据是分开加载的,当某一份数据有异常时,不影响其他数据…...

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.2多头注意力扩展与掩码机制(因果掩码与填充掩码)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.2 多头注意力扩展与掩码机制(`因果掩码与填充掩码`)1. 多头注意力机制:分治策略的数学实现1.1 多头注意力核心公式2. 逐行代码实现2.1 多头拆分与合并3. 掩码机制:注意力控制的核心技术3.1 因果…...

Oracle 19C 备份

在 Oracle 19c 中&#xff0c;备份数据库通常使用 RMAN&#xff08;Recovery Manager&#xff09; 工具&#xff0c;它是 Oracle 提供的官方备份和恢复工具。以下是通过 RMAN 备份 Oracle 19c 数据库的详细步骤和命令。 一、RMAN 基本概念 RMAN 是 Oracle 的备份和恢复工具&am…...