element+vue 表格行拖拽功能

解决方案

使用 sortable.js

步骤一: 安装

复制代码
npm install vuedraggable

步骤二:引入

bash 复制代码
import Sortable from 'sortablejs';

步骤三: el-table 添加row-key属性,外层包一层 sortableDiv

bash 复制代码
<div class="sortableDiv">   拖拽的盒子名字sortableDiv
<el-table
  ref="filterTable"
  row-key="ip" 
  :data="resourceList" 
  >
  <el-table-column
    prop="name"
    label="主机名" 
    :min-width="150" 
    show-overflow-tooltip>
  </el-table-column>
 </el-table>

实例:

下图的重点: 1.el-table 添加row-key属性,2.外层包一层 sortableDiv, 3.图标drag-icon

步骤四 : 将拖拽元素设置为要拖动项的父级元素

看完整的demo示例:

bash 复制代码
--------------------------  html  --------------------------
<div class="sortableDiv">   1.拖拽的盒子名字sortableDiv
<el-table
  ref="filterTable"
  row-key="id"  
  :data="planData" 
  v-loading="resourceListLoading" 
  >
   <el-table-column align="center" label="移入可拖拽(仅支持手工)" width="110px">
     <template slot-scope="{row, $index}">
        <i title="拖拽行数据" class="co-icon-move-solid drag-icon" />
        <span>名字</span>
     </template>
    </el-table-column>
    <el-table-column prop="name" align="center" label="计划名称"></el-table-column>
 </el-table>
 </div>
--------------------------  method  --------------------------
import Sortable from 'sortablejs';
行拖拽
mounted() {
    this.rowDrop()
  },
 // 下面是 methods
rowDrop() {
     // 获取tbody 第一种
      const tbody = document.querySelector('.sortableDiv .el-table__body-wrapper tbody')
   
      // 获取tbody 第二种   有时候document取不到的时候可以使用ref
      const myDialog = this.$refs.myDialog
      const tbody = myDialog.$el.querySelector(
        '#sortableDiv .el-table .el-table__body-wrapper .el-table__body tbody'
      )
      const _this = this
      Sortable.create(tbody, {
        handle: ' .drag-icon',
        draggable: '.el-table__row',
        onEnd({ newIndex, oldIndex }) {
          const currRow = _this.tableData.splice(oldIndex, 1)[0]
          _this.tableData.splice(newIndex, 0, currRow)
        }
      })
    },
相关推荐
发现一只大呆瓜2 小时前
深度解密 Rollup 插件开发:核心钩子函数全生命周期图鉴
前端·vite
java_nn2 小时前
一文了解前端技术
前端
发现一只大呆瓜2 小时前
深度解析 Rollup 配置与 Vite 生产构建流程
前端·vite
小码哥_常3 小时前
安卓黑科技:让手机成为你的“跌倒保镖”
前端
小李子呢02113 小时前
前端八股Vue---Vue2和Vue3的区别,set up的用法
前端·javascript·vue.js
m0_647057964 小时前
Harness Engineering 实践指南
前端
邂逅星河浪漫4 小时前
【银行内网开发-管理端】Vue管理端+Auth后台开发+Nginx配置+Linux部署(详细解析)
linux·javascript·css·vue.js·nginx·html·前后端联调
JJay.4 小时前
Android BLE 稳定连接的关键,不是扫描,而是 GATT 操作队列
android·服务器·前端
一 乐4 小时前
电影院|基于springboot + vue电影院购票管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·电影院购票管理管理系统
星空椰4 小时前
JavaScript 进阶基础:函数、作用域与常用技巧总结
开发语言·前端·javascript