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

009:vue结合el-table实现表格行拖拽排序(基于sortablejs)

文章目录

  • 1. 实现效果
  • 2. 安装 `sortablejs` 插件
  • 3. 完整组件代码
  • 4. 注意点

1. 实现效果

请添加图片描述

2. 安装 sortablejs 插件

sortablejs 更多用法

cnpm i --save sortablejs

3. 完整组件代码

<template><div class="home"><div class="body"><el-table :data="tableData" border row-key="date" class="draggable-table" style="width: 100%"><el-table-column prop="sortNo" label="序号"><template slot-scope="{ row }"><imgclass="handle":src="require('./icon-drop.png')"style="width: 20px; height: 20px; object-fit: contain"/></template></el-table-column><el-table-column prop="date" label="日期"></el-table-column><el-table-column prop="name" label="姓名"></el-table-column><el-table-column prop="address" label="地址"></el-table-column></el-table></div></div>
</template><script>import Sortable from 'sortablejs'export default {name: 'Demo',data() {return {tableData: [// 略去数据,与前段代码一直{ date: '2024-01-02', name: '张三1', address: '深圳市' },{ date: '2024-01-03', name: '李四2', address: '成都市' },{ date: '2024-01-04', name: '王五3', address: '重庆市' },{ date: '2024-01-05', name: '麻六4', address: '上海市' },{ date: '2024-01-07', name: 'kk5', address: '上海市01' },{ date: '2024-01-08', name: 'fantay6', address: '上海市02' },],}},mounted() {const tbody = document.querySelector('.draggable-table .el-table__body-wrapper tbody')new Sortable(tbody, {handle: '.handle', // handle's classanimation: 150,// 需要在odEnd方法中处理原始eltable数据,使原始数据与显示数据保持顺序一致onEnd: ({ newIndex, oldIndex }) => {const targetRow = this.tableData[oldIndex]this.tableData.splice(oldIndex, 1)this.tableData.splice(newIndex, 0, targetRow)console.table(this.tableData)},})},}
</script><style scoped lang="scss">.home {.body {width: 890px;height: 500px;border: #ff3366 solid 10px;box-sizing: border-box;padding: 20px;box-sizing: border-box;}}.handle {cursor: move;display: flex;align-content: center;}
</style>

4. 注意点

  1. 很多文章使用 Sortable.create 但是我这样用没生效,使用 new Sortable 就行了
  2. 页面table添加类 draggable-table
  3. handle 可以配置可拖拽的指定元素,默认是当前行触发
http://www.lryc.cn/news/272089.html

相关文章:

  • C语言KR圣经笔记 5.3指针和数组 5.4地址运算
  • 设计模式:简单工厂模式、工厂方法模式、抽象工厂模式
  • Could not load library libcudnn_cnn_infer.so.8
  • ELement UI时间控件el-date-picker误差8小时解决办法
  • Linux日志论转
  • 第7课 利用FFmpeg将摄像头画面与麦克风数据合成后推送到rtmp服务器
  • Microsoft Visual Studio 2022 install Project 下载慢
  • uniapp---安卓真机调试提示检测不到手机【解决办法】
  • Nginx(十四) 配置文件详解 - 负载均衡(超详细)
  • 大数据应用安全策略包括什么
  • Ubuntu软件和vmware下载
  • 如何修改Anaconda的Jupyter notebook的默认启动路径
  • 密码学:带密钥的消息摘要算法一数字签名算法
  • JVM中部分主要垃圾回收器的特点、使用的算法以及适用场景
  • vue保姆级教程----深入了解Vuex的工作原理
  • (JAVA)-(网络编程)-InetAddress(ip)
  • 手把手带你死磕ORBSLAM3源代码(二十二)Tracking.cc PrintTimeStats介绍
  • 【操作系统xv6】学习记录3-Wsl2 Ubuntu18.04图形化界面
  • CCNP课程实验-03-Route_Path_Control_CFG
  • STM32 学习(二)GPIO
  • 安卓作业001 - 显示学生信息
  • ARM CCA机密计算硬件架构之内存管理
  • MySQL--安装与配置与向日葵的基本操作使用
  • Vue - 多行文本“展开、收起”功能
  • Linux操作系统基础(6):Linux的文件颜色
  • LeetCode 1758. 生成交替二进制字符串的最少操作数【字符串,模拟】1353
  • Spring-IOC-xml方式
  • HUAWEI华为荣耀MagicBook X 15酷睿i5-10210U处理器集显(BBR-WAH9)笔记本电脑原装出厂Windows10系统
  • React使用动态标签名称
  • Java异常篇----第二篇