首页 > 其他分享 >Vue3+Element Plus 使用sortablejs对el-table表格进行拖拽

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

时间:2024-07-15 14:29:26浏览次数:11  
标签:el Vue3 Element Los sortablejs Tom 189 id

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
  },
])

标签:el,Vue3,Element,Los,sortablejs,Tom,189,id
From: https://blog.csdn.net/Zxk912/article/details/140322137

相关文章

  • vue3+Element Plus 自定义表格单选 多选
    项目背景:用vue3+elementplus做一套考试系统功能场景:添加试题中分为客观题、主观题两种类型,在客观题会出现单选题、多选题两种类型就会导致单选题只能勾选一个答案、多选题能勾选多个答案。效果图废话不说直接上代码<el-buttonclass="btn"icon="Plus"plainst......
  • ATTACKS ON THIRD-PARTY APIS OF LARGE LANGUAGE MODELS
    本文是LLM系列文章,针对《ATTACKSONTHIRD-PARTYAPISOFLARGELANGUAGEMODELS》的翻译。对大型语言模型第三方api的攻击摘要1引言2提出的流水线3实验4结论摘要大型语言模型(LLM)服务最近开始提供一个插件生态系统来与第三方API服务交互。这项创新增强了LLM的能......
  • Nessus Professional 10.7 Auto Installer for RHEL 9/AlmaLinux 9/Rocky Linux 9 (up
    NessusProfessional10.7AutoInstallerforRHEL9/AlmaLinux9/RockyLinux9(updatedJul2024)发布Nessus试用版自动化安装程序,支持macOSSonoma、RHEL9和Ubuntu24.04请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-rhel-9/,查看最新版。原创作品,......
  • [SUCTF 2018]GetShell 1
    自增绕过,文件上传打开是一个白的页面,开始信息收集,可以在前端代码中看到,index.php?act=upload尝试访问之后发现是文件上传发现是直接给了源码的,代码解释:这段PHP代码用于处理一个通过HTML表单上传的文件,并检查该文件的内容是否包含任何黑名单中的字符。下面是逐行解释:if($co......
  • nginx ./nginx -s reload 工作进程pid与实际不一致导致平滑重启报错
    某次修改nginx配置后使用./nginx-sreload重启nginx,结果报错,如图所示,去kill工作进程的时候显示找不到该进程原因是位于nginx/logs下的nginx.pid中的pid和实际不一致造成的nginx.pid文件是Nginxweb服务器在启动时创建的一个进程标识符(PID)文件。这个文件包含......
  • SP4063 MPIGS - Sell Pigs / P4638 [SHOI2011] 银行家题解
    考虑使用网络流。建立源点\(S\)和汇点\(T\)。每个人作为一个点,将它们与汇点\(T\)连接,权值为需要的猪的数量。然后对于每个人,如果和之前的某个人开了相同的猪圈,那么就将之前的那个人的点与这个人的点连接。如果猪圈还没有被开过,就从源点\(S\)连接这个点,权值为猪圈猪的初......
  • Camstar TraceLog
      用户:AAAA   ......
  • Java性能优化-if-else简化技巧
    场景Java性能优化-switch-case和if-else速度性能对比,到底谁快?:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140376572如果单纯是做情景选择,建议使用switch,如果必须使用if-else,过多的if-else会让人看着很难受,可以使用如下几个小技巧来简化过多的if-else。注:......
  • ElementUI 本身没有提供年份范围选择组件,但可以通过封装两个年份选择器来实现类似的功
    ElementUI本身没有提供年份范围选择组件,但可以通过封装两个年份选择器来实现类似的功能。以下是一个使用Vue2和ElementUI实现年份范围选择器的示例代码: <script>exportdefault{name:'YearRangePicker',//接收父组件传入的年份范围数据props:{value:{......
  • 静态html vue3 element-plus 示例页面
    代码:<!doctypehtml><html><head><metacharset="utf-8"><title>example</title><!--复制于文件:https://unpkg.com/[email protected]/dist/vue.global.js--><scriptsrc="/......