表格拖动插件(Sortable || vuedraggable)

表格拖动插件

封装的表格table,想要拖动每一行,用Sortable
import Sortable from 'sortablejs';
// 下方此处得放在挂载后
 Sortable.create(ele, {
          disabled: false,
          ghostClass: 'sortable-ghost', // 样式
          animation: 450,   // 动画时间
          handle: '.mover', // 绑定可拖动的元素 拖动那表格哪一个元素才可进行拖动表格
          onEnd: (e) => {  // 拖动完成会触发这个钩子,这里做逻辑处理数据
            let oldItem = { ...this.subSystem.data[e.oldIndex] };
            let sort = oldItem.sort;
            let tarItem = { ...this.subSystem.data[e.newIndex] };
            oldItem.sort = tarItem.sort;
            this.subSystem.data[e.newIndex].sort = sort;
            if (e.oldIndex > e.newIndex) {
              this.subSystem.data.splice(e.newIndex, 0, oldItem);
              this.subSystem.data.splice(e.oldIndex + 1, 1);
            }
            else {
              this.subSystem.data.splice(e.newIndex + 1, 0, oldItem);
              this.subSystem.data.splice(e.oldIndex, 1);
            }
            this.timer = new Date().getTime();
            const { page, size } = this.pageOption;
            let no = size * (page + 1) + 1 - size;
            this.sortSubSystem(no);
          },
          onMove: () => {
          },
        });
不是封装的表格,可以使用 vuedraggable 插件
<template>
  <draggable
    tag="ul"
    :value="list"
    v-bind="{
      group: { name: 'form-draggable', pull: 'clone', put: false },
      sort: false,
      animation: 180,
      ghostClass: 'moving'
    }"
    @start="handleStart($event, list)"
  >
    <li
      v-for="(val, index) in list"
      :key="index"
      @dragstart="$emit('generateKey', list, index)"
      @click="$emit('handleListPush', val)"
    >
      <svg v-if="val.icon" class="icon" aria-hidden="true">
        <use :xlink:href="`#${val.icon}`"></use>
      </svg>
      {{ val.label }}
    </li>
  </draggable>
</template>
<script>
  import draggable from 'vuedraggable';
  export default {
    name: 'collapseItem',
    components: {
      draggable,
    },
    props: ['list'],
    methods: {
      handleStart (e, list) {
        this.$emit('start', list[e.oldIndex].type);
      },
    },
  };
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值