当前位置: 首页 > 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(() => { })}})},}
}

在这里插入图片描述


总结

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


http://www.mrgr.cn/news/7645.html

相关文章:

  • C#高效异步文件监控与日志记录工具
  • node npm nvm 地址
  • 【Qt】输入类控件QDail
  • Python算法工程师面试整理-数据结构
  • 【数据结构】链表
  • 使用React和AntDesign构建初始前端项目及路由配置
  • vscode修改选中文字颜色及当前tab颜色
  • 红黑树
  • C++动态规划及九种背包问题
  • ESP RainMaker OTA 自动签名功能的安全启动
  • 井盖异动传感器:为城市安全加码
  • MATLAB 手动实现点云投影滤波器 (76)
  • 51单片机
  • 【赵渝强老师】管理MySQL的用户
  • 电子电气架构--- 智能汽车电子架构的核心诉求
  • 嵌入式day32
  • Linux:Bash中的命令介绍(简单命令、管道以及命令列表)
  • 【Docker深入浅出】【四】单体应用容器化与Dockerfile怎么写
  • 【精选】推荐7款AI论文一键生成论文、开题报告和文献综述网站
  • 鹏城杯 2022 取证writeup