sortable中el-table拖拽及点击箭头上下移动row效果

 更新时间:2024年08月26日 10:08:52   作者:初七初七  
这篇文章主要介绍了sortable中el-table拖拽及点击箭头上下移动row效果,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

效果

安装 

npm install sortablejs --save

引入

import Sortable from "sortablejs";
 <el-table
        :data="tableBody"
        border
        ref="tableRef"
        :stripe="true"
        :key="tableKey"
      >
        <el-table-column type="index" label="排序" width="150" key="index" />
        <el-table-column prop="category" label="大类名称" key="category">
          <template #default="{ row, $index }">
            <div class="title">{{ row.category }}</div>
            <div class="icon">
              <el-icon
                :class="{ active: activeButton === `up-${$index}` }"
                @click="moveItem($index, 'up')"
                ><CaretTop
              /></el-icon>
              <el-icon
                :class="{ active: activeButton === `down-${$index}` }"
                @click="moveItem($index, 'down')"
                ><CaretBottom
              /></el-icon>
            </div>
          </template>
        </el-table-column>
      </el-table>
<script setup>
const activeButton = ref();
//行拖拽
    const rowDrop=()=> {
              const tbody = tableRef.value?.$el.querySelector(
      ".el-table__body-wrapper tbody"
    );
              Sortable.create(wrapperTr, {
      animation: 150,
      ghostClass: "blue-background-class",
      onEnd: async (evt: any) => {
        handleDragEnd(evt);
      },
    });
            }
const handleDragEnd = async (event: any) => {
  const { oldIndex, newIndex } = event;
  if (oldIndex !== newIndex) {
    const movedItem = tableBody.value.splice(oldIndex, 1)[0];
    tableBody.value.splice(newIndex, 0, movedItem);
    tableKey.value += 1;
    const url = "./?_m=&_a=";
    const formData = new FormData();
    formData.append("id", globalData.id);
    formData.append("category", movedItem.category);
    formData.append("xh", newIndex + 1);
    const response = await post(url, formData);
    if (response.code == 0) {
      ElMessage({
        showClose: true,
        message: "排序成功",
        type: "success",
      });
    }
  }
};
const moveItem = async (index: any, direction: any) => {
  const newIndex = direction == "up" ? index - 1 : index + 1;
  if (newIndex >= 0 && newIndex < tableBody.value.length) {
    const item = tableBody.value.splice(index, 1)[0];
    tableBody.value.splice(newIndex, 0, item);
    activeButton.value = `${direction}-${index}`;
    setTimeout(() => (activeButton.value = null), 200);
    const url = "./?_m=&_a=";
    const formData = new FormData();
    formData.append("id", globalData.id);
    formData.append("category", item.category);
    formData.append("xh", newIndex + 1);
    const response = await post(url, formData);
    if (response.code == 0) {
      ElMessage({
        showClose: true,
        message: "排序成功",
        type: "success",
      });
    }
  }
};
</script>

点击箭头加颜色 

.active {
  color: #009688; /* 例如,活动状态的颜色 */
}

到此这篇关于sortable中el-table拖拽及点击箭头上下移动row的文章就介绍到这了,更多相关sortable el-table拖拽内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS实现来回出现文字的状态栏特效代码

    JS实现来回出现文字的状态栏特效代码

    这篇文章主要介绍了JS实现来回出现文字的状态栏特效代码,针对文字的定义及状态栏的定时显示等实现方法备有详细的文字说明,需要的朋友可以参考下
    2015-10-10
  • json_decode 索引为数字时自动排序问题解决方法

    json_decode 索引为数字时自动排序问题解决方法

    这篇文章主要介绍了使用son_encode 给前端返回数据,结果顺序不对,经debug调试,发现是json_encode 函数的问题,变成 " " + 数字即可,需要的朋友可以参考下
    2020-03-03
  • js中symbol类型以及symbol的三大应用场景详解

    js中symbol类型以及symbol的三大应用场景详解

    Symbol是ES6新推出的一种基本类型,它表示独一无二的值,它可以接受一个字符串作为参数,带有相同参数的两个Symbol值不相等,这个参数只是表示Symbol值的描述而已,下面这篇文章主要给大家介绍了关于js中symbol类型以及symbol的三大应用场景,需要的朋友可以参考下
    2022-09-09
  • ImageZoom 图片放大镜效果(多功能扩展篇)

    ImageZoom 图片放大镜效果(多功能扩展篇)

    上一篇ImageZoom已经对图片放大效果做了详细的分析,这次在ImageZoom的基础上进行扩展,实现更多的效果。
    2010-04-04
  • Javascript如何实现双指控制图片功能

    Javascript如何实现双指控制图片功能

    这篇文章主要介绍了Javascript如何实现双指控制图片功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • ES6之Proxy的使用详解

    ES6之Proxy的使用详解

    Proxy是ES6新增的内置对象,用于拦截并自定义对象的各种操作,通过定义拦截器,可以实现数据校验和保护、日志记录、数据绑定和观察等功能
    2025-01-01
  • JS实现完全语义化的网页选项卡效果代码

    JS实现完全语义化的网页选项卡效果代码

    这篇文章主要介绍了JS实现完全语义化的网页选项卡效果代码,可实现基于鼠标滑过及点击的选项卡切换效果,非常具有实用价值,需要的朋友可以参考下
    2015-09-09
  • JavaScript算法题之如何将一个数组旋转k步

    JavaScript算法题之如何将一个数组旋转k步

    这篇文章主要给大家介绍了关于JavaScript算法题之如何将一个数组旋转k步的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • HTML node相关的一些资料整理

    HTML node相关的一些资料整理

    HTML node相关的一些资料整理
    2010-01-01
  • js取滚动条的尺寸的函数代码

    js取滚动条的尺寸的函数代码

    js取滚动条的尺寸的函数代码,需要的朋友可以参考下。
    2011-11-11

最新评论