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监听滚动事件的方法
Dec 21 Vue.js
如何在VUE中使用vue-awesome-swiper
Jan 04 Vue.js
vue使用lodop打印控件实现浏览器兼容打印的方法
Feb 07 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
如何让vue长列表快速加载
Mar 29 Vue.js
vue组件的路由高亮问题解决方法
May 11 Vue.js
vue实现可拖拽的dialog弹框
May 13 Vue.js
HTML+VUE分页实现炫酷物联网大屏功能
May 27 Vue.js
解决vue $http的get和post请求跨域问题
Jun 07 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
三种方式清除vue路由跳转router-link的历史记录
Apr 10 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 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
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
php,ajax实现分页
2008/03/27 PHP
PHP6 mysql连接方式说明
2009/02/09 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
python从ftp下载数据保存实例
2013/11/20 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
医学毕业生自荐信
2013/10/11 职场文书
工商企业管理实习自我鉴定
2013/12/04 职场文书
施工单位安全责任书
2014/07/24 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
2015年三万活动总结
2015/03/25 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
三八妇女节致辞
2015/07/31 职场文书
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫