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

基于sortablejs实现拖拽element-ui el-table表格行进行排序

可以用原生的dragstart、drag、dragend、dragover、drop、dragleave实现这个效果,但是有现成的轮子就不要重复造了,看效果:

 

<template><el-table :class="$options.name" :data="tableData" ref="table" row-key="ID"><!-- 注意:必须要定义row-key="ID",否者会导致拖拽顺序错乱 --><el-table-column type="index" label="序号" width="60" /><el-table-column prop="label" label="列名"><template slot-scope="scope"><el-link :type="scope.row.type" :underline="false">{{ scope.row.label }}</el-link></template></el-table-column></el-table>
</template>
<script>
import sortablejs from "sortablejs"; //npm install sortablejs --save
export default {name: "dragTableRow",data() {return {tableData: [{ ID: 1, value: 1, label: "显示文本1", type: `primary` },{ ID: 2, value: 2, label: "显示文本2", type: `success` },{ ID: 3, value: 3, label: "显示文本3", type: `warning` },{ ID: 4, value: 4, label: "显示文本4", type: `danger` },{ ID: 5, value: 5, label: "显示文本5", type: `info` },],};},mounted() {this.initDragSortTableRow(); //拖拽表格行排序},methods: {initDragSortTableRow() {let el = this.$refs.table.$el.querySelectorAll(".el-table__body-wrapper > table > tbody")[0];sortablejs.create(el, {ghostClass: "ghostClass", //定义拖拽的时候接触到的行样式setData: (dataTransfer) => {dataTransfer.setData("自定义传参字段", "传输内容");},onEnd: (e) => {this.$g.array.moveArrayElement(this.tableData, e.oldIndex, e.newIndex); //修改数组的顺序console.log(e.originalEvent.dataTransfer.getData("自定义传参字段"));},});},},
};
</script><style lang="scss" scoped>
.dragTableRow {>>> .ghostClass {background-color: #ecf5ff;td {border-bottom-color: #409eff;}}
}
</style>

相关文章:

  • java Flink(四十二)Flink的序列化以及TypeInformation介绍(源码分析)
  • 探索ChatGPT时代下的下一代信息检索系统:机遇与挑战
  • 系统资源耗尽对服务器的影响
  • Linux 系统日志
  • (一)Linux+Windows下安装ffmpeg
  • docker opensearch arm64 运行失败解决方案
  • 国内ip切换是否合规?
  • 针对ETC系统的OBE-SAM模块设计方案
  • python --- 练习题3
  • AI基础知识(3)--神经网络,支持向量机,贝叶斯分类器
  • S32 Design Studio 中断
  • python日常刷题(一)
  • web蓝桥杯真题:灯的颜色变化
  • Java使用itextpdf往pdf中插入图片
  • Python Windows系统 虚拟环境使用
  • 深入了解以太坊
  • @jsonView过滤属性
  • 【Leetcode】104. 二叉树的最大深度
  • 2017-09-12 前端日报
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • AWS实战 - 利用IAM对S3做访问控制
  • Computed property XXX was assigned to but it has no setter
  • Git的一些常用操作
  • Golang-长连接-状态推送
  • golang中接口赋值与方法集
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • JWT究竟是什么呢?
  • React16时代,该用什么姿势写 React ?
  • vue-router 实现分析
  • 爱情 北京女病人
  • 从输入URL到页面加载发生了什么
  • 浮动相关
  • 基于遗传算法的优化问题求解
  • 利用jquery编写加法运算验证码
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 数据可视化之 Sankey 桑基图的实现
  • 我建了一个叫Hello World的项目
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #HarmonyOS:软件安装window和mac预览Hello World
  • $ git push -u origin master 推送到远程库出错
  • (003)SlickEdit Unity的补全
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (4)Elastix图像配准:3D图像
  • (C语言)共用体union的用法举例
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (篇九)MySQL常用内置函数
  • (三)c52学习之旅-点亮LED灯
  • (五)关系数据库标准语言SQL
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)