基于sortablejs实现拖拽element-ui el-table表格行进行排序

简介: 基于sortablejs实现拖拽element-ui el-table表格行进行排序

可以用原生的dragstart、drag、dragend、dragover、drop、dragleave实现这个效果,但是有现成的轮子就不要重复造了,看效果:

<template>
  <el-table :class="$options.name" :data="tableData" ref="table" row-key="ID">
    <!-- 注意:必须要定义row-key="ID",否者会导致拖拽顺序错乱 -->
    <el-table-column type="index" label="序号" width="60" />
    <el-table-column prop="label" label="列名">
      <template slot-scope="scope">
        <el-link :type="scope.row.type" :underline="false">{{ scope.row.label }}</el-link>
      </template>
    </el-table-column>
  </el-table>
</template>
<script>
import sortablejs from "sortablejs"; //npm install sortablejs --save
export default {
  name: "dragTableRow",
  data() {
    return {
      tableData: [
        { ID: 1, value: 1, label: "显示文本1", type: `primary` },
        { ID: 2, value: 2, label: "显示文本2", type: `success` },
        { ID: 3, value: 3, label: "显示文本3", type: `warning` },
        { ID: 4, value: 4, label: "显示文本4", type: `danger` },
        { ID: 5, value: 5, label: "显示文本5", type: `info` },
      ],
    };
  },
  mounted() {
    this.initDragSortTableRow(); //拖拽表格行排序
  },
  methods: {
    initDragSortTableRow() {
      let el = this.$refs.table.$el.querySelectorAll(
        ".el-table__body-wrapper > table > tbody"
      )[0];
      sortablejs.create(el, {
        ghostClass: "ghostClass", //定义拖拽的时候接触到的行样式
        setData: (dataTransfer) => {
          dataTransfer.setData("自定义传参字段", "传输内容");
        },
        onEnd: (e) => {
          this.$g.array.moveArrayElement(this.tableData, e.oldIndex, e.newIndex); //修改数组的顺序
          console.log(e.originalEvent.dataTransfer.getData("自定义传参字段"));
        },
      });
    },
  },
};
</script>
 
<style lang="scss" scoped>
.dragTableRow {
  >>> .ghostClass {
    background-color: #ecf5ff;
    td {
      border-bottom-color: #409eff;
    }
  }
}
</style>


相关文章
|
2月前
|
JavaScript
element-ui table表格多选后再打开默认选中
element-ui table表格多选后再打开默认选中
|
3月前
|
前端开发 JavaScript UED
element-ui 表格数据究竟隐藏着怎样的神秘样式与格式化技巧?快来揭开谜底!
【8月更文挑战第22天】《element-ui 表格数据样式及格式化案例》展示了如何利用 element-ui 的表格组件实现美观且易读的数据展示。通过简单配置,可以自定义表格样式,如边框、背景色等,并通过 formatter 实现数据格式化,例如将成绩保留一位小数。此外,还能依据条件设置行样式,如成绩达优则高亮显示,从而增强用户体验和数据可读性。
64 1
|
3月前
|
JavaScript 开发者
Element UI & Element Plus之改变表格单元格颜色
这篇文章展示了如何在Element UI和Element Plus框架中使用`:cell-style`属性来根据条件改变表格单元格的颜色。
360 0
Element UI & Element Plus之改变表格单元格颜色
|
3月前
|
计算机视觉
ElementUI——vue2+element-ui 2.x的动态表格和表单
ElementUI——vue2+element-ui 2.x的动态表格和表单
122 1
|
3月前
|
JavaScript 前端开发 Shell
Element-ui Table表格导出功能的实现
Element-ui Table表格导出功能的实现
65 0
|
4月前
Element UI 表格【列宽自适应】
Element UI 表格【列宽自适应】
120 0
|
4月前
Element UI 【表格合计】el-table 实战范例 -- 添加单位,自定义计算逻辑
Element UI 【表格合计】el-table 实战范例 -- 添加单位,自定义计算逻辑
402 0
|
1月前
|
开发框架 JavaScript 前端开发
鸿蒙NEXT开发声明式UI是咋回事?
【10月更文挑战第15天】鸿蒙NEXT的声明式UI基于ArkTS,提供高效简洁的开发体验。ArkTS扩展了TypeScript,支持声明式UI描述、自定义组件及状态管理。ArkUI框架则提供了丰富的组件、布局计算和动画能力。开发者仅需关注数据变化,UI将自动更新,简化了开发流程。此外,其前后端分层设计与编译时优化确保了高性能运行,利于生态发展。通过组件创建、状态管理和渲染控制等方式,开发者能快速构建高质量的鸿蒙应用。
106 3
|
1天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
18天前
|
开发框架 JavaScript 前端开发
HarmonyOS UI开发:掌握ArkUI(包括Java UI和JS UI)进行界面开发
【10月更文挑战第22天】随着科技发展,操作系统呈现多元化趋势。华为推出的HarmonyOS以其全场景、多设备特性备受关注。本文介绍HarmonyOS的UI开发框架ArkUI,探讨Java UI和JS UI两种开发方式。Java UI适合复杂界面开发,性能较高;JS UI适合快速开发简单界面,跨平台性好。掌握ArkUI可高效打造符合用户需求的界面。
70 8