vue中 el-table 实现拖拽排序教程

2023-11-19

el-table基础上如何实现表格上下拖拽排序

element ui 表格没有自带的拖拽排序的功能,只能借助第三方插件Sortablejs来实现。

实现步骤:

1.安装Sortable.js

npm install --save sortablejs

2.在当前vue中JS代码中引入:

import Sortable from ‘sortablejs’

 3.在当前vue文件template el-table中指定row-key,row-key必须是唯一的,如ID,不然会出现排序不对的情况。

<el-table
          ref="table"
          :data="apiObj"
          row-key="id"
          @selection-change="selectionChange"
          :paginationLayout="'prev, pager, next'"
        >

项目完整代码:

<template>
  <div class="dic-data">
    <el-container>
      <el-header>
         <el-button type="primary" @click="saveSortData(apiObjDrag)"
              >排序保存</el-button
            >
      </el-header>
      <el-main class="nopadding">
        <el-table
           stripe
          ref="table"
          :data="apiObj"
          row-key="id"
          @selection-change="selectionChange"
          :paginationLayout="'prev, pager, next'"
        >
          <el-table-column
            label="序号"
            type="index"
            width="50"
          ></el-table-column>
          <el-table-column
            label="字典键"
            prop="dictKey"
            align="left"
          ></el-table-column>
          <el-table-column
            label="字典值"
            prop="dictValue"
            align="left"
          ></el-table-column>
        </el-table>
      </el-main>
    </el-container>
  </div>
</template>
<script>
import Sortable from 'sortablejs'

export default {
  name: 'data',
  data() {
    return {
      dialog: {
        new: false,
      },
      apiObj: [
        {
          dictKey:'你好',
          dictValue:'aa'
        },
        {
          dictKey:'我好',
          dictValue:'bb'
        },
        {
          dictKey:'他好',
          dictValue:'cc'
        }
      ],
      apiObjDrag: [],
    }
  },
  created() {
    // this.getDictDatalist()
    this.$nextTick(() => {
      this.rowDrop()
    })
  },
  methods: {
    //行-拖拽
    rowDrop() {
      const tbody = document.querySelector('.el-table__body-wrapper tbody')
      const _this = this
      Sortable.create(tbody, {
        onEnd({ newIndex, oldIndex }) {
          const currRow = _this.apiObj.splice(oldIndex, 1)[0]
          _this.apiObj.splice(newIndex, 0, currRow)
          //   拖动后获取newIdex
          let arr = Array.from(_this.apiObj)
          _this.apiObjDrag = arr.map((item, index) => {
            return {
              id: item.id,
              dictSort: index,
            }
          })
        },
      })
    },
    // 排序后,把拖动后的结果穿啊给后端
    async saveSortData(apiObjDrag) {
      if (apiObjDrag == '') {
        // this.$message.warning("请先拖动字典数据,再点击");
        return
      }
      const res = await this.$API.system.dict.data.sort.post(apiObjDrag)
      if (res.code == '2000') {
        this.$message.success('排序成功')
      } else {
        this.$alert(res.msg, '提示', { type: 'error' })
      }
    },
    //表格选择后回调事件
    selectionChange(selection) {
      this.selection = selection
    },
  },
}
</script>

 
————————————————
版权声明:本文为CSDN博主「和世界不一样,那就不一样!」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44834981/article/details/125022283

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue中 el-table 实现拖拽排序教程 的相关文章

随机推荐

  • 三个小朋友分糖果

    题目描述 有甲 乙 丙三个小朋友 甲有x粒糖果 乙有y粒糖果 丙有z粒糖果 现在他们做一个游戏 从甲开始 将自己的糖平均分三份 自己留一份 其余两份分别给乙与丙 多余的糖果自己吃掉 然后乙与丙也依次这样做 问最后甲 乙 丙三人各有多少粒糖果
  • jquery attr()方法 添加,修改,获取对象的属性值

    转自 http hi baidu com 0701u item b8ec62c1daba973eef466524 jquery中用attr 方法来获取和设置元素属性 attr是attribute 属性 的缩写 在jQuery DOM操作中会
  • 区块链程序要怎么去测试?

    区块链程序开发越来越多 区块链怎么做测试 让大家很好奇 与传统测试不同的是区块链系统边界模糊 不管是是独立的应用程序 还是客户端 服务器模式的应用程序 传统软件都具备明显的系统边界 可以通过UI用户界面或者客户端去进行测试 区块链底层则不同
  • 空间解析几何

    解析几何是用代数方法研究几何对象之间的关系和性质的一门几何学分支 通俗讲就是通过建立坐标系来用方程描述几何图形 在解析几何创立以前 几何与代数是彼此独立的两个分支 而它的出现使形与数统一起来 这是数学发展史上的一次重大突破 在平面解析几何中
  • Unity3D Engine Architecture

    原文 http www umingo de doku php id paper mechs and tanks section03 Architecture To better understand the game s software
  • InfoQ视频直播分享报名:前贝尔实验室、Oracle架构师为你在线揭秘分布式平台内核...

    报名方式 关注InfoQ微信公众号 ID infoqchina 回复 InfoQ 即可观看在线直播技术分享 分享地点 u0026amp 时间 InfoQ直播微课堂将在熊猫 TV 网站播出 看腻了卖肉的女主播 来看看QCon 的明星讲师如何
  • html图片平铺div,前端小知识——图片平铺问题

    图片平铺有两种方式 直接写img标签或者通过background image方式 1 img标签 HTML CSS row margin 0 auto width 100 img width 100 height 100 margin 0
  • 用于Arduino的S4A图形化编程图文详解

    文章结构 1 说明 2 实操 2 1 S4A安装 2 2 Arduino IDE 安装 2 3 下载S4A的固件 2 4 连接 2 5 刷入S4A固件 2 6 打开S4A并测试 3 附录 Uno引脚图 1 说明 作者还拥有个人公众号 会写一
  • Dcat-admin 多级联动

    Dcat admin 2 x 多级联动 需求 一个省市区的三级联动功能 在表单中 需要可以实现三级联动 在列表的查询中 也需要实现三级联动 实现说明 前提 dcat admin 提供了 一个 load 方法 有两个参数 第一个是选项框的字段
  • deepin操作系统无法打开蓝牙

    自己用的deepin系统无法使用蓝牙传送图片 发现系统里面找不到这个功能 可以使用命令安装蓝牙功能 sudo apt install bluetooth blueman blueman assistant 安装以后 很方便手机传送文件
  • 怎样修改一个正在运行的soket的端口

    0 目录 整体架构目录 ASP NET Core分布式项目实战 目录 在开发项目的过程中 我新创建了一个controller 发现vs会给我们直接在controller头添加前缀 比如 Route api controller 即在访问接口
  • ESB开发WebService接口

    1 概述 在进行系统间集成时经常利用WebService 但是从建立WebService和调用的重复性和维护性的工作量都相当大 首先简单介绍一下 ESB全称为Enterprise Service Bus 即企业服务总线 它是传统中间件技术与
  • HertzBeat监控部署及使用

    易用友好的高性能监控告警系统 网站监测 PING连通性 端口可用性 数据库监控 API监控 自定义监控 阈值告警 告警通知 邮件微信钉钉飞书 安装部署 HertzBeat最少依赖于 关系型数据库MYSQL8 实际亲测用mysql5 7 也行
  • 单元测试总结

    概念 百度百科 单元测试 unit testing 是指对软件中的最小可测试单元进行检查和验证 对于单元测试中单元的含义 一般来说 要根据实际情况去判定其具体含义 如C语言中单元指一个函数 Java里单元指一个类 图形化的软件中可以指一个窗
  • (算法-双指针)判断子序列

    算法 双指针 判断子序列 题目描述 题目分析 解决方案 题目描述 给定一个长度为 n 的整数序列 a1 a2 an 以及一个长度为 m 的整数序列 b1 b2 bm 请你判断 a 序列是否为 b 序列的子序列 子序列指序列的一部分项按原有次
  • 1.windows系统:

    conda更新 conda update conda conda安装tensorflow 首先建立一个新的虚拟环境 1 conda create n my env python 3 6 n 也可以写全为 name 激活环境并安装tensor
  • 微信二次分享

    微信二次分享 效果演示 如何运行项目 克隆代码到本地 git clone https github com Jameswain WeiXinSDK git 安装依赖 npm i 运行项目 npm run dev 通过charles配置代理
  • 无法加载 DLL“halcon”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)

    将项目拷贝到没有安装halcon的电脑上 出现标题所示异常 参考文章 https www 51halcon com thread 997 1 1 html 我的解决办法是将halcon dll 文件拷贝到 bin debug目录下
  • Vscode连接远程服务器(一套配置成功)

    安装远程开发插件Remote Development 1 在商店中搜索Remote Development并安装 2 添加服务器连接配置 点击该选项卡 会进入SSH TARGETS的添加 如下图所示 填写配置信息可在下边操作中查看 修改 想
  • vue中 el-table 实现拖拽排序教程

    el table基础上如何实现表格上下拖拽排序 element ui 表格没有自带的拖拽排序的功能 只能借助第三方插件Sortablejs来实现 实现步骤 1 安装Sortable js npm install save sortablej