使用组件时需要安装sortablejs

$ npm install sortablejs --save

组件

<template>
<el-table ref="dragTable" :data="tableData" class="drag-table" border stripe :row-key="uniqueKey" tooltip-effect="dark" height="100%" element-loading-text="拼命加载中" v-loading="loading" element-loading-spinner="el-icon-loading"><el-table-column v-if="select" type="selection" :reserve-selection="multiple"></el-table-column><el-table-column type="index" label="序号" width="50" align="center"></el-table-column><el-table-column v-for="(item, index) in col" v-if="item" :key="`col_${index}`" :prop="dropCol[index].prop" :min-width="item.width || null" :label="item.label" align="center" show-overflow-tooltip sortable class-name="allow-drag"></el-table-column>
</el-table>
</template><script>
import Sortable from 'sortablejs'
export default {name: 'DragTable',props: {tableData: {type: Array,default: () => {return []}},tableHeader: {type: Array,default: () => {return []}},select: {type: Boolean,default: false},multiple: {type: Boolean,default: false},uniqueKey: String, // 行唯一值如idloading: {type: Boolean,default: false}},data () {return {dropCol: []}},computed: {col: function () {let fillArray = this.select ? new Array(2).fill(null) : new Array(1).fill(null)return fillArray.concat(this.tableHeader)}},methods: {columnDrop () {const wrapperTr = document.querySelector('.el-table__header-wrapper tr')this.sortable = Sortable.create(wrapperTr, {animation: 180,delay: 0,draggable: '.allow-drag',onEnd: evt => {const oldItem = this.dropCol[evt.oldIndex]this.dropCol.splice(evt.oldIndex, 1)this.dropCol.splice(evt.newIndex, 0, oldItem)}})}},created () {let fillArray = this.select ? new Array(2).fill(null) : new Array(1).fill(null)this.dropCol = fillArray.concat(this.tableHeader)},mounted () {this.columnDrop()}
}
</script><style lang="less" scoped>
/deep/ .drag-table {}
</style>

使用方式

 <drag-table :tableData="listTableData" :tableHeader="tableHeader" :loading='btnValid.search' uniqueKey='createTime'></drag-table>

说明:
需要拖动的列设置class-name="allow-drag",在Sortable.create中使用了draggable: '.allow-drag'draggable参数设置的是可拖动的列,不设置的列不能拖动,也不能作为可以拖动的列的落点。如果某一列可以换位置,但是不能拖动,可以使用参数filter: ".ignore-elements",不能拖动的列需要设置class-name="ignore-elements
这里使用了coldropCol的原因是,拖动后原来的col数组里面的项并不会交换位置,但是视觉上表头交换了位置,所以需要一个可以交换位置的数组来弥补数据不能交换位置的情况。用同一个col经测试,交换时会有异常,比如表头没有拖动,但是数据实现了交换。

可拖拽表格列组件(可以禁止拖动列如序号)相关推荐

  1. HTML 锁定表格首行首列、拖拽表格列宽

    摘自:http://s.yanghao.org/program/viewdetail.php?i=61717 因为与自己的实际情况有些不同,简单的改造了下...如果有版权问题,请留言... 锁定Tab ...

  2. 拖拽式Vue组件代码生成平台(LCG)新版详细介绍

    拖拽式Vue组件代码生成平台是一款小猴自研的Vue代码生成工具,英文全称:Low Code Generator,简称LCG.它也是一种LowCode解决方案.通过它可以快速完成Vue组件的代码骨架搭建 ...

  3. dropzone拖拽上传组件使用全记录

    原文链接: dropzone拖拽上传组件使用全记录 公司有一个需求是把附件上传优化成可以通过拖拽本地文件来上传的效果,找了一圈都没有找到特别简单好用的组件,最后还是决定使用github上1.6万sta ...

  4. vue-draggable-resizable-gorkys 可拖拽缩放的组件

    说明:组件基于vue-draggable-resizable进行二次开发. 文章引用于vue-draggable-resizable 可拖拽缩放的组件 - SegmentFault 思否 git引用于 ...

  5. js和layerjs配合实现的拖拽表格列

    前几天想着实现表格列的拖拽 写了个例子 一直不完美 经过修改感觉还算完美了 拖拽过程不会复制文字并且还能实现layerjs本身自带的表格排序功能. 1.首先引入layer.css    jquery  ...

  6. 树形可拖拽排序配置组件

    效果 使用场景 vue2下自定义表格表头配置: 列排序,显示/隐藏等.确保表头以配置项的形式加载,这样表格才能对修改后的配置作响应 思路 1.表格使用render函数加载(如有疑问可私信),通过类似如 ...

  7. vue 3 + antV s2表格可拖拽表格

    vue 3 中使用S表格达到可拖拽 Introduction | S2 安装: npm install @antv/s2 <div id="chartDiv" ref=&qu ...

  8. antd-table结合react-resizable实现多级表头可拖拽表格

    关键字:react-resizable.antd-table.拖拽.多级表头.可变列宽 react-resizablehttps://github.com/react-grid-layout/reac ...

  9. vant组件实现上传图片裁剪_如何用 120 行代码,实现交互完整的拖拽上传组件?...

    作者 | 前端劝退师 责编 | 伍杏玲 你将在该篇学到: 如何将现有组件改写为 React Hooks函数组件 useState.useEffect.useRef是如何替代原生命周期和Ref的. 一个 ...

最新文章

  1. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)
  2. android edittext_Android 支持拖动、缩放的自定义软键盘
  3. 「八大排序算法」16张图带你搞懂基数排序
  4. 云计算--Presto
  5. 如何直观地解释 back propagation 算法?
  6. 生孩子时,你们公婆给了多少钱?
  7. ppt恢复保存前的文件_文档忘记保存怎么恢复?断电导致文件丢失如何恢复?
  8. java程序a-z b-y_请完成下列Java程序:对大写的26个英文字母加密,从键盘输入一个大写字母串..._考试资料网...
  9. java 字符串数组排序_Java 使用泛型为不同类型数组排序
  10. key位置 win10生成的ssh_Win10系统中生成SSH密钥的方法
  11. 在论文中如何设置页眉页脚
  12. 互联网诞生记: 浪成于微澜之间
  13. rabbit MQ的rpc功能详解
  14. 【腾讯云原生降本增效大讲堂】云原生混部技术标准解读
  15. 按键精灵多语言自动截图
  16. “小论文”杂谈之二:如何选择一篇好文章
  17. Golang实现经典算法
  18. Camel-学习笔记(一)
  19. Python统计分析-卡方检验
  20. Pinyin4j.jar介绍中文转拼音

热门文章

  1. java list for循环_Java List遍历的3种方法
  2. QFD(quality function deployment) HOQ (house of quality)使用指南swf文件
  3. 【UV打印机】RYPC打印软件教程(六)-系统维护
  4. FC 魔天童子 金手指
  5. python 读取.csv文件,跳过第一行的表头:drop
  6. c语言绘制球体(通过easyx)
  7. 工业物联网案例:船舶航行安全实时监测系统
  8. [操作系统真象还原3]cpu的8086实模式、显卡、硬盘
  9. Windows关机/重启命令
  10. 科学计算机上如何输arc,卡西欧5800计算器怎么输入arctan函数