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拖拽内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Javascript函数式编程简单介绍

    Javascript函数式编程简单介绍

    什么是函数式编程?根据百度百科的描述,“函数式编程是种编程典范,它将电脑运算视为函数的计算。函数编程语言最重要的基础是 λ 演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。”
    2015-10-10
  • JavaScript如何判断input数据类型

    JavaScript如何判断input数据类型

    这篇文章主要介绍了JavaScript如何判断input数据类型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • js无刷新操作table的行和列

    js无刷新操作table的行和列

    这篇文章主要介绍了js操作table的行和列,无刷新实现,需要的朋友可以参考下
    2014-03-03
  • js实现一个省市区三级联动选择框代码分享

    js实现一个省市区三级联动选择框代码分享

    省市区三级联动在填写表单时有关地址这一块显得尤为重要,直接提高了用户的填写速度与准确度,接下来本文使用js代码实现一个,感兴趣的你可以参考下希望可以帮助到你
    2013-03-03
  • JS实现的简单拖拽功能示例

    JS实现的简单拖拽功能示例

    这篇文章主要介绍了JS实现的简单拖拽功能,涉及javascript鼠标事件响应及页面元素属性动态操作相关技巧,需要的朋友可以参考下
    2017-03-03
  • 关于JS中二维数组的声明方法

    关于JS中二维数组的声明方法

    下面小编就为大家带来一篇关于JS中二维数组的声明方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • JS拖动鼠标画出方框实现鼠标选区的方法

    JS拖动鼠标画出方框实现鼠标选区的方法

    这篇文章主要介绍了JS拖动鼠标画出方框实现鼠标选区的方法,涉及javascript鼠标事件及页面元素样式的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • JS实现去除数组中重复json的方法示例

    JS实现去除数组中重复json的方法示例

    这篇文章主要介绍了JS实现去除数组中重复json的方法,涉及javascript针对json数组数据的遍历、判断、存取等相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • JS实现淘宝支付宝网站的控制台菜单效果

    JS实现淘宝支付宝网站的控制台菜单效果

    这篇文章主要介绍了JS实现淘宝支付宝网站的控制台菜单效果,涉及JavaScript基于时间函数及数学运算控制页面动画弹出菜单效果的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • JavaScript+HTML5 canvas实现放大镜效果完整示例

    JavaScript+HTML5 canvas实现放大镜效果完整示例

    这篇文章主要介绍了JavaScript+HTML5 canvas实现放大镜效果,结合完整实例形式分析了javascript+HTML5 canvas针对图片元素的获取、响应鼠标事件变换元素属性相关操作技巧,需要的朋友可以参考下
    2019-05-05

最新评论