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 $router和$route的区别详解
Dec 02 Vue.js
vue-router定义元信息meta操作
Dec 07 Vue.js
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 Vue.js
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
vue 实现click同时传入事件对象和自定义参数
Jan 29 Vue.js
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 Vue.js
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
如何让vue长列表快速加载
Mar 29 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
vue ref如何获取子组件属性值
Mar 31 Vue.js
vue数据字典取键值项目的字典问题
Apr 12 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
建立文件交换功能的脚本(三)
2006/10/09 PHP
杏林同学录(九)
2006/10/09 PHP
用PHP实现ODBC数据分页显示一例
2006/10/09 PHP
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
2016/10/18 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
Python编写一个优美的下载器
2018/04/15 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
使用Python实现音频双通道分离
2020/12/25 Python
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
媒矿安全生产承诺书
2014/05/23 职场文书
校园元旦活动总结
2014/07/09 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
检察机关个人对照检查材料
2014/09/15 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
525心理健康活动总结
2015/05/08 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
Springboot中如何自动转JSON输出
2022/06/16 Java/Android