vue 使用 sortable 实现 el-table 拖拽排序功能


Posted in Vue.js onDecember 26, 2020

本文给大家介绍vue 使用 sortable 实现 el-table 拖拽排序功能,具体内容如下所示:

npm 下载:

npm install sortablejs --save

引入:

import Sortable from "sortablejs";

代码:

<template>
 <div class="table">
 <el-table ref="dragTable" :data="tableData" border :row-class-name="tableRowClassName">
 <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-column label="操作">
 <template>
 <el-button class="move" type="text" size="small">拖 拽</el-button>
 </template>
 </el-table-column>
 </el-table>
 </div>
</template>
<script>
import Sortable from "sortablejs";
export default {
 data() {
 return {
 tableData: [
 {
 id: "1",
 name: "text_1",
 date: "1111-11-11",
 address: "测试_1",
 },
 {
 id: "2",
 name: "text_2_不可拖拽",
 date: "2222-22-22",
 address: "测试_2_不可拖拽",
 disabled: true,
 },
 {
 id: "3",
 name: "text_3",
 date: "3333-33-33",
 address: "测试_3",
 },
 {
 id: "4",
 name: "text_4",
 date: "4444-44-44",
 address: "测试_4",
 },
 {
 id: "5",
 name: "text_5",
 date: "5555-55-55",
 address: "测试_5",
 },
 ],
 };
 },
 methods: {
 // 创建sortable实例
 initSortable() {
 // 获取表格row的父节点
 const ele = this.$refs.dragTable.$el.querySelector(
 ".el-table__body > tbody"
 );
 // 创建拖拽实例
 let dragTable = Sortable.create(ele, {
 animation: 150, //动画
 handle: ".move", //指定拖拽目标,点击此目标才可拖拽元素(此例中设置操作按钮拖拽)
 filter: ".disabled", //指定不可拖动的类名(el-table中可通过row-class-name设置行的class)
 dragClass: "dragClass", //设置拖拽样式类名
 ghostClass: "ghostClass", //设置拖拽停靠样式类名
 chosenClass: "chosenClass", //设置选中样式类名
 // 开始拖动事件
 onStart: () => {
 console.log("开始拖动");
 },
 // 结束拖动事件
 onEnd: (e) => {
 console.log(
 "结束拖动",
 `拖动前索引${e.oldIndex}---拖动后索引${e.newIndex}`
 );
 },
 });
 },
 // 设置表格row的class
 tableRowClassName({ row }) {
 if (row.disabled) {
 return "disabled";
 }
 return "";
 },
 },
 mounted() {
 this.initSortable();
 },
};
</script>
<style lang='scss'>
// 拖拽
.dragClass {
 background: rgba($color: #41c21a, $alpha: 0.5) !important;
}
// 停靠
.ghostClass {
 background: rgba($color: #6cacf5, $alpha: 0.5) !important;
}
// 选择
.chosenClass:hover > td {
 background: rgba($color: #f56c6c, $alpha: 0.5) !important;
}
</style>

到此这篇关于vue 使用 sortable 实现 el-table 拖拽排序功能的文章就介绍到这了,更多相关vue实现 el-table 拖拽排序内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
详解vue实现坐标拾取器功能示例
Nov 18 Vue.js
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
vscode自定义vue模板的实现
Jan 27 Vue.js
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
如何理解Vue前后端数据交互与显示
May 10 Vue.js
如何理解Vue简单状态管理之store模式
May 15 Vue.js
Vue全局事件总线你了解吗
Feb 24 Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
vue+iview实现手机号分段输入框
Mar 25 Vue.js
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 Vue.js
vue @click.native 绑定原生点击事件
Apr 22 Vue.js
在vue项目中封装echarts的步骤
Dec 25 #Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 #Vue.js
Vue 简单实现前端权限控制的示例
Dec 25 #Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 #Vue.js
vue使用require.context实现动态注册路由
Dec 25 #Vue.js
vue 使用rules对表单字段进行校验的步骤
Dec 25 #Vue.js
vue 实现基础组件的自动化全局注册
Dec 25 #Vue.js
You might like
VFP与其他应用程序的集成
2006/10/09 PHP
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
JQuery 风格的HTML文本转义
2009/07/01 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
浅谈js的异步执行
2016/10/18 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
Python下载指定页面上图片的方法
2016/05/12 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
matplotlib之属性组合包(cycler)的使用
2021/02/24 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
Java程序员面试题
2016/09/27 面试题
优秀毕业生推荐信
2013/11/02 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
纯html+css实现打字效果
2021/08/02 HTML / CSS