Vue3+Element Plus 使用sortablejs对el-table表格进行拖拽

sortablejs官网:点击跳转

一、安装sortablejs

npm install sortablejs --save

二、 页面按需引入

import Sortable from 'sortablejs';

三、组件方法

1.temlate:

<template>
<el-table ref="tableHeader" :data="tableData" row-key="id" style="width: 100%">
                  <el-table-column label="章节名称" prop="date" width="328">
                    <template #default="scope">
                      <el-input v-model="scope.row.date"/>
                    </template>
                  </el-table-column>
                  <el-table-column align="center" label="试题数量" prop="name" width="100"/>
                  <el-table-column align="center" class-name="small-padding fixed-width" label="操作">
                    <template #default="scope">
                      <el-button circle icon="Delete" type="danger"></el-button>
                      <el-tooltip
                          class="box-item"
                          content="按住鼠标调整到合适的位置后释放"
                          effect="dark"
                          placement="top"
                      >
                        <el-button circle icon="Rank"></el-button>
                      </el-tooltip>
                    </template>
                  </el-table-column>
                </el-table>
</template>

2.script

import Sortable from 'sortablejs';

onMounted(() => {
  rowDrag() // 初始化行拖拽事件
})
const tableHeader = ref(null)
const rowDrag = () => {
  let el = tableHeader.value.$el.querySelector('.el-table__body-wrapper tbody')
  Sortable.create(el, {
    animation: 180,
    delay: 0,
    onEnd(evt) {
      const oldItem = tableData.value[evt.oldIndex]
      tableData.value.splice(evt.oldIndex, 1);
      tableData.value.splice(evt.newIndex, 0, oldItem);
    }
  })
}

const tableData = ref([
  {
    date: '2016-05-03',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
    id: 1
  },
  {
    date: '2016-05-02',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
    id: 2
  },
  {
    date: '2016-05-04',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
    id: 3
  },
  {
    date: '2016-05-01',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
    id: 4
  },
])

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 16:06:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 16:06:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 16:06:01       58 阅读
  4. Python语言-面向对象

    2024-07-15 16:06:01       69 阅读

热门阅读

  1. 网络建设与运维python脚本应用

    2024-07-15 16:06:01       17 阅读
  2. 如何避免油罐车拉完煤油拉菜油

    2024-07-15 16:06:01       18 阅读
  3. LeetCode 两数之和

    2024-07-15 16:06:01       20 阅读
  4. 如何rpmbuild打包GLIBC二进制库文件?

    2024-07-15 16:06:01       19 阅读
  5. 认知偏差知识手册

    2024-07-15 16:06:01       20 阅读
  6. Python 实现技术指标邮件告警通知

    2024-07-15 16:06:01       18 阅读
  7. ESP-01S + STM32物联网

    2024-07-15 16:06:01       19 阅读
  8. Spring Cloud微服务开发框架

    2024-07-15 16:06:01       19 阅读
  9. 关于c语言在内存中的分配管理

    2024-07-15 16:06:01       18 阅读
  10. Scala之基础面向对象编程

    2024-07-15 16:06:01       18 阅读
  11. Linux入侵排查

    2024-07-15 16:06:01       18 阅读