el-table 实现行拖拽排序

element ui 表格实现拖拽排序的功能,可以借助第三方插件Sortablejs来实现。

引入sortablejs

npm install sortablejs --save
组件中使用
import Sortable from 'sortablejs';

 <el-table ref="el-table":data="listData" row-key="id" style="width: 100%">
 </el-table>

注意:el-table一定要设置row-key,且row-key绑定的值唯一,不然拖拽可能乱序

 mounted() {
    this.initSort()
 },
 initSort() {
    const el = this.$refs['el-table'].$el.querySelector('.el-table__body-wrapper > table > tbody')
    let _this = this;
    const ops = {
       animation: 200, //动画时长
       handle: ".el-table__row", //可拖拽区域class
       //拖拽中事件
       onMove: ({ dragged, related }) => {
         const oldRow = _this.listData[dragged.rowIndex] //旧位置数据
         const newRow = _this.listData[related.rowIndex] //被拖拽的新数据
       },
       //拖拽结束事件
       onEnd: evt => {
         const curRow = _this.listData.splice(evt.oldIndex, 1)[0]
         _this.listData.splice(evt.newIndex, 0, curRow)
       }
    }
    Sortable.create(el, ops)
 },
相关推荐
LvManBa1 分钟前
Vue学习记录之三(ref全家桶)
javascript·vue.js·学习
码爸27 分钟前
flink doris批量sink
java·前端·flink
深情废杨杨28 分钟前
前端vue-父传子
前端·javascript·vue.js
工业互联网专业1 小时前
毕业设计选题:基于springboot+vue+uniapp的驾校报名小程序
vue.js·spring boot·小程序·uni-app·毕业设计·源码·课程设计
J不A秃V头A1 小时前
Vue3:编写一个插件(进阶)
前端·vue.js
司篂篂2 小时前
axios二次封装
前端·javascript·vue.js
姚*鸿的博客2 小时前
pinia在vue3中的使用
前端·javascript·vue.js
宇文仲竹3 小时前
edge 插件 iframe 读取
前端·edge
Kika写代码3 小时前
【基于轻量型架构的WEB开发】【章节作业】
前端·oracle·架构
天下无贼!4 小时前
2024年最新版Vue3学习笔记
前端·vue.js·笔记·学习·vue