首页 > 其他分享 >vue-element table表格排序推拽功能

vue-element table表格排序推拽功能

时间:2023-06-28 16:23:44浏览次数:39  
标签:vue console name element item table foo evt 拖拽

// 1.安装sortablejs

npm install sortablejs --save


// 2.功能页面中引入

import Sortable from ‘sortablejs’

具体使用(注意:element table务必指定row-key,且row-key必须是唯一的,如 id,不然会出现排序不对的情况)

<el-table row-key="id" :data="tableData" style="width: 100%">
  <el-table-column prop="date" label="日期" width="180"></el-table-column>
  <el-table-column prop="name" label="姓名" width="180"></el-table-column>
  <el-table-column prop="address" label="地址"></el-table-column>
</el-table>



data() {
  return {
    tableData: [{
      id:7458963256145,
      date: '2016-05-02',
      name: '王小虎',
      address: '上海市普陀区金沙江路 1518 弄'
    }, {
      id:1256358945623,
      date: '2016-05-04',
      name: '王小虎',
      address: '上海市普陀区金沙江路 1517 弄'
    }, {
      id:7485968563232,
      date: '2016-05-01',
      name: '王小虎',
      address: '上海市普陀区金沙江路 1519 弄'
    }, {
      id:4230568745963,
      date: '2016-05-03',
      name: '王小虎',
      address: '上海市普陀区金沙江路 1516 弄'
    }]
  }
}


mounted () {
  // 调用 table拖拽排序
  this.rowDrop()
  this.columnDrop()
}


methods: {
  // 行拖拽
  rowDrop () {
    let tbody = document.querySelector('.el-table__body-wrapper tbody')
    let _this = this
    Sortable.create(tbody, {
      // or { name: "...", pull: [true, false, 'clone', array], put: [true, false, array] }
      group: {
        name: 'words',
        pull: true,
        put: true
      },
      animation: 150, // ms, number 单位:ms,定义排序动画的时间
      onAdd: function (evt) { // 拖拽时候添加有新的节点的时候发生该事件
        console.log('onAdd.foo:', [evt.item, evt.from])
      },
      onUpdate: function (evt) { // 拖拽更新节点位置发生该事件
        console.log('onUpdate.foo:', [evt.item, evt.from])
      },
      onRemove: function (evt) { // 删除拖拽节点的时候促发该事件
        console.log('onRemove.foo:', [evt.item, evt.from])
      },
      onStart: function (evt) { // 开始拖拽出发该函数
        console.log('onStart.foo:', [evt.item, evt.from])
      },
      onSort: function (evt) { // 发生排序发生该事件
        console.log('onUpdate.foo:', [evt.item, evt.from])
      },
      onEnd ({ newIndex, oldIndex }) { // 结束拖拽
        let currRow = _this.tableData.splice(oldIndex, 1)[0]
        _this.tableData.splice(newIndex, 0, currRow)
      }
    })
  }
}

 

标签:vue,console,name,element,item,table,foo,evt,拖拽
From: https://www.cnblogs.com/qianduan-lucky/p/17511716.html

相关文章

  • 防火墙&&firewalld&&iptables
    防火墙&&firewalld&&iptables目录防火墙&&firewalld&&iptables一、firewalld1.centos8查看防火墙开放的端口2.开通5432端口3.源地址为"172.30.3.19",目标端口为6379,使用TCP协议,将连接请求拒绝(reject)。4.重启生效二、iptables1.查看当前的防火墙规则:2.清除所有防火墙规则:3.常用......
  • 2023.6.28 - vue项目打包内存堆栈溢出JS stacktrace
    vue项目打包时报错,JSstacktrace:ReachedheaplimitAllocationfailed-JavaScriptheapoutofmemory这是因为node打包时是有内存空间限制的,node能分配多少空间,默认是根据电脑内存占比来算的。在内存比较小的电脑里,默认分配给node的内存可能不足以支撑起项目运行或者打包......
  • element-ui 去除input的框
    ::v-deep{.el-input__inner{border:0;border-radius:0px;//&:focus{//border-bottom:1pxsolid#409eff;//}}.el-textarea__inner{resize:none;/*这个是去掉textarea下面拉伸的那个标志,如下......
  • vue3+vite+js配置路径别名
    1、让vscode认识@符号项目下新建jsconfig.json,配置baseUrl,paths参数{"compilerOptions":{"target":"esnext","useDefineForClassFields":true,"module":"esnext","moduleResolution&q......
  • Lua 中最重要的数据结构:表(Table)
    楔子本次来介绍一下Lua中的表(Table),表是Lua语言中最主要(事实上也是唯一)的数据结构,表既可以当做数组来用,也可以当成哈希表来用。这个和Python中的字典非常类似,比如我们之前用查看变量类型的math.type,本质上就是以字符串"type"来检索表math。而在Python中,比如调用math.......
  • VUE http大文件断点续传上传
    ​ 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多线程并发上传能够达到最大效率。 本文是基于springboot+vue实现的文件上传,本文主要介绍服务端实现文件......
  • vue中watch侦听器,deep和immediate的用法
    1、deep深度监听的用法当监听一个对象时,可能想监听整个对象的变化,而不仅仅是某个属性。但在默认情况下,如果你正在监听formData对象并且修改了formData.username,对应的侦听器并不会触发,它只在formData对象被整个替换时触发。监听整个对象被称作深度监听,通过将deep选项设置为true......
  • 深入剖析:Vue核心之虚拟DOM
    前言使用Vue做项目也有两年时间了,对Vue的api也用的比较得心应手了,虽然对Vue的一些实现原理也耳有所闻,例如虚拟DOM、flow、数据驱动、路由原理等等,但是自己并没有特意去探究这些原理的基础以及Vue源码是如何利用这些原理进行框架实现的,所以利用空闲时间,进行Vue框架相......
  • vue定时器
    exportdefault{methods:{fun1(){consttimer=setInterval(()=>{//需要做的事情},1000);//通过$once来监听定时器,在beforeDestroy钩子可以被清除。this.$once('hook:beforeDestroy',()=>{clearInterval(timer);......
  • VUE框架组件中通信方式(4)
    ref-children-parentref方法既可以获取真实的DOM节点,还可以获取到子组件的实例VC,$parent可以在子组件中获取父组件的实例VC,使用方式是在子组件的方法中传入的参数只能是$parent如:<button@click="handler($parent)">点击我爸爸给我10000元</button>示例代码如下;//父组件代码<......