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

vue + element-ui实现可拖拽表格

1.拖拽表格

在Vue项目中实现拖拽表格功能,可以使用element-uisortablejs库。element-ui提供了强大的表格组件,而 sortable.js 则是一个优秀的拖拽库,支持行和列的拖拽。

2.安装依赖

首先,需要安装sortablejsvuedraggable库: 

npm install sortablejs --save
npm install vuedraggable --save

3.实现拖拽功能

以下是一个实现表格行和列拖拽的完整示例代码: 

<template><div class="draggable" style="padding: 20px"><ElTable :data="tableData" row-key="id" border style="width: 100%"><ElTableColumn type="index" label="序号" width="100" align="center" /><ElTableColumnv-for="(item, index) in newList":key="`col_${index}`":prop="item.prop":label="item.label"align="center"/></ElTable></div>
</template><script>
import Sortable from 'sortablejs';export default {data() {return {oldList: [],newList: [],tableData: [{ id: 1, name: '李一', gender: '男', age: 30, job: '会计' },{ id: 2, name: '王二', gender: '未知', age: 18, job: '无业游民' },{ id: 3, name: '张三', gender: '男', age: 50, job: '老板' }],tableConfig: {tableItems: [{ label: '姓名', prop: 'name' },{ label: '性别', prop: 'gender' },{ label: '年龄', prop: 'age' },{ label: '工作', prop: 'job' }]}};},mounted() {this.oldList = JSON.parse(JSON.stringify(this.tableConfig.tableItems));this.newList = JSON.parse(JSON.stringify(this.tableConfig.tableItems));this.columnDrop();this.rowDrop();},methods: {columnDrop() {const wrapperTr = document.querySelector('.draggable .el-table__header-wrapper tr');this.sortable = Sortable.create(wrapperTr, {animation: 180,delay: 0,onEnd: evt => {const oldItem = this.newList[evt.oldIndex];this.newList.splice(evt.oldIndex, 1);this.newList.splice(evt.newIndex, 0, oldItem);}});},rowDrop() {const tbody = document.querySelector('.draggable .el-table__body-wrapper tbody');Sortable.create(tbody, {draggable: '.draggable .el-table__row',onEnd: ({ newIndex, oldIndex }) => {const currRow = this.tableData.splice(oldIndex, 1)[0];this.tableData.splice(newIndex, 0, currRow);}});}}
};
</script><style scoped>
draggable {width: 100%;height: 100%;box-sizing: border-box;padding: 25px;
}
</style>

4.关键点

  1. 行拖拽:在el-table标签中,根据行的内容指定行的唯一标识row-key="id"

  2. 列拖拽:定义两个数组,分别存储拖拽前的列顺序和拖拽后的列顺序。

通过上述代码,可以实现表格的行和列拖拽功能,提升用户体验。注意在使用sortablejs时,需要确保表格的row-key唯一,以避免排序错误。

http://www.lryc.cn/news/578554.html

相关文章:

  • Windows VMWare Centos Docker部署Springboot + mybatis + MySql应用
  • 学习昇腾开发的第12天--安装第三方依赖
  • 飞算 JavaAI:我的编程强力助推引擎
  • 前端常用构建工具介绍及对比
  • ChatGPT、DeepSeek等大语言模型助力高效办公、论文与项目撰写、数据分析、机器学习与深度学习建模
  • HTML 安装使用教程
  • Kafka日常运维命令总结
  • 数据的表示
  • 基于 Vue + RuoYi 架构设计的商城Web/小程序实训课程
  • 苹果AR/VR头显路线图曝光,微美全息推进AI/AR智能眼镜新品开启视觉体验篇章
  • 61、【OS】【Nuttx】【构建】向量表
  • 每日一练:找到初始输入字符串 I
  • 新版本 Spring Data Jpa + QueryDSL 使用教程
  • Zephyr RTOS 信号量 (Semaphore)
  • GitHub已破4.5w star,从“零样本”到“少样本”TTS,5秒克隆声音,冲击传统录音棚!
  • MySQL 8.4 备份与恢复完全指南
  • JVM调优实战 Day 14 :大数据处理中的JVM调优
  • 文心一言开源版测评:能力、易用性与价值的全面解析
  • 磁盘的访问算法有哪些?
  • HTTPS安全传输时采用的顶级阳谋
  • [密码学实战]国密TLCP协议报文解析代码实现(三十)
  • [C#] WPF - 自定义样式(Slider篇)
  • 腾讯 iOA 零信任产品:安全远程访问的革新者
  • 数据结构day4——栈
  • 回转体水下航行器简单运动控制的奥秘:PID 控制和水动力方程的运用
  • 信息安全相关算法
  • 蓝牙音频传输协议深度解析:A2DP、HFP、AVRCP 对比与面试核心考点
  • 【机器学习2】正则化regularizaiton(降低模型过拟合)
  • 【cv视觉】标注工具的使用和数据集的创建
  • 2.SQL语句执行慢,如何分析