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

Vue.js学习笔记(七)使用sortablejs或el-table-draggable拖拽ElementUI的el-table表格组件

文章目录

  • 前言
  • 一、el-table-draggable是什么?
  • 二、使用步骤
    • 1.安装使用
    • 2.sortablejs
  • 总结


前言

记录 el-table-draggable 插件使用方法。


一、el-table-draggable是什么?

el-table-draggable的存在就是为了让vue-draggable支持element-ui中的el-table组件,让表格可以进行行列拖动等功能。

项目地址:https://gitcode.com/gh_mirrors/el/el-table-draggable

二、使用步骤

1.安装使用

npm i -S el-table-draggable

(示例):拖动修改数据排序,输入修改逻辑为,【1,2,3,4】,修改2为3,则3-1。

<template><el-table-draggable @input="dragInputHandler"><el-table :data="tableData" row-key="id" v-loading="loading" size="mini" max-height="500px"><el-table-column label="展示排序" width="160" prop="sort" align="center" sortable><template slot-scope="{row}"><el-input-number v-model="row.newSort" controls-position="right" :min="1"@change="(newSort) => { editSort(row, newSort) }" @blur="() => {if (!row.newSort) { $message.warning('序号不能为空'); row.newSort = row.sort;};if (Number(row.newSort) <= 0) { $message.warning('序号不能小于1'); row.newSort= row.sort; };}"></el-input-number></template></el-table-column></el-table></el-table-draggable>
</template>import ElTableDraggable from "el-table-draggable";
export default {components: {ElTableDraggable,},methods:{/** 输入修改排序 */editSort(row, rowSort) {if (!rowSort) return;const oldSort = Number(row.sort);const newSort = Math.min(Number(rowSort), this.tableData.length);this.$nextTick(() => {this.tableData = this.tableData.map((item) => {const itemData = { ...item };if (itemData.id === row.id) {itemData.sort = newSort;itemData.newSort = newSort;} else if (oldSort < newSort) {if (itemData.sort > oldSort && itemData.sort <= newSort) {itemData.sort -= 1;itemData.newSort -= 1;}} else if (oldSort > newSort) {if (itemData.sort >= newSort && itemData.sort < oldSort) {itemData.sort += 1;itemData.newSort += 1;}}return itemData;});})},/** 拖拽排序 */dragInputHandler(data) {this.$nextTick(() => {this.tableData = data.map((item, index) => { return { ...item, sort: index + 1,newSort: index + 1 } });});},},
}

2.sortablejs

el-table-draggable插件是基于sortablejs进行封装的,如果已经安装了sortablejs,想实现element的el-table拖拽,则可以进行以下操作。

<template><el-table ref="tableList" :data="tableList" row-key="id" tooltip-effect="dark" max-height="500"  border v-loading="loading" class="draggable"><el-table-column label="拖拽排序" width="80" align="center"><template slot-scope="{ row }"><i class="el-icon-rank allowDrag" style="cursor:pointer"></i></template></el-table-column></el-table>
</template>import Sortable from "sortablejs";
export default {mounted() {this.$nextTick(() => {this.lineDrop();});},methods:{/** 拖拽 */lineDrop() {const tbody = document.querySelector(".draggable .el-table__body-wrapper tbody");const _this = this;new Sortable(tbody, {animation: 150,ghostClass: "ghostClass",handle: ".allowDrag",//设置操作区域onEnd(evt) {const newIndex = evt.newIndex;const row = _this.tableList[newIndex];const oneRow = _this.tableList[newIndex - 1];hotLangSort({id: oneRow.id,langId: _this.searchParams.langId,sort: row.sort,type: _this.activeTab === 'series' ? 0 : 1}).then(res => {_this.$message.success('操作成功')_this.$parent.getInfo();_this.getInfo()}).catch(err => { _this.$message.error('操作失败') }).finally(() => { })}})},}
}

在这里插入图片描述


总结

以上为拖拽插件学习记录。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • “太猴看了”车衣引发热议:深蓝要和“黑悟空”跨界互动?
  • 【解压即玩】最终幻想7 重制版中文+预购特典+全DLC,难忘的一作
  • Facebook的区块链战略:如何在社交媒体中实现去中心化
  • Tomcat类加载机制详解
  • java多线程(七)AQS(AbstractQueuedSynchronizer)技术解析:以赛跑起跑场景为例
  • 【Python机器学习】NLP的部分实际应用
  • 企业数字化转型管控平台探索 ---基于流程的企业经络管理框架DEM
  • QEMU模拟ARM嵌入式LINUX系统
  • Python | Leetcode Python题解之第371题两整数之和
  • import tensorflow报错TypeError: unhashable type: ‘list‘
  • 重生奇迹MU 冲锋在前近战职业
  • ubuntu安装虚拟环境(tensorflow、torch)
  • JPA外键映射注解导致的性能问题
  • 一款专为内网办公环境设计的操作系统,集成了Word、Excel、PPT、PDF编辑器,内网聊天、白板、思维导图等多款办公工具(附源码)
  • 网络通信粘包问题
  • __proto__ 和 prototype的关系
  • chrome扩展demo1-小时钟
  • cookie和session
  • iOS编译提示和导航提示
  • JavaScript学习总结——原型
  • Map集合、散列表、红黑树介绍
  • mockjs让前端开发独立于后端
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Node 版本管理
  • PHP 的 SAPI 是个什么东西
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • SQL 难点解决:记录的引用
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Vim Clutch | 面向脚踏板编程……
  • vue中实现单选
  • 阿里云Kubernetes容器服务上体验Knative
  • 聚类分析——Kmeans
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 算法之不定期更新(一)(2018-04-12)
  • 小程序测试方案初探
  • 新版博客前端前瞻
  • 优秀架构师必须掌握的架构思维
  • Nginx实现动静分离
  • ​queue --- 一个同步的队列类​
  • ​比特币大跌的 2 个原因
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (BFS)hdoj2377-Bus Pass
  • (C语言)字符分类函数
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (苍穹外卖)day03菜品管理
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (力扣)1314.矩阵区域和
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (四)stm32之通信协议
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)大道至简,职场上做人做事做管理
  • .Net 8.0 新的变化
  • .NET WPF 抖动动画