table表实现拖拽交换列表顺序

背景

当表格列表的数据涉及到排序或者优先级时,这个功能就很关键了,直接拖拽交换顺序比上下点击移动更友好。

效果图

在这里插入图片描述
关键的是引入npm install --save sortablejs

<template>
<div class="table"> 
  <el-table :data="tableData" style="width: 100%">
    <el-table-column prop="sort" label="序号" width="180"> 
        <template slot-scope="scope">{{scope.$index + 1}}</template>
    </el-table-column>
    <el-table-column prop="date" label="日期" width="180"> </el-table-column>
    <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
    <el-table-column prop="address" label="地址"> </el-table-column>
  </el-table>
</div>

</template>
<script>
import Sortable from 'sortablejs'
export default {
  name: "TableSort",
  data() {
    return {
      drawer: '',
      tableData: []
    };
  }, created() {
    this.tableData = [
        {
          date: "2016-05-02",
          name: "王小虎1",
          address: "上海市普陀区金沙江路 1518 弄"
        },
        {
          date: "2016-05-04",
          name: "王小虎2",
          address: "上海市普陀区金沙江路 1517 弄"
        },
        {
          date: "2016-05-01",
          name: "王小虎3",
          address: "上海市普陀区金沙江路 1519 弄"
        },
        {
          date: "2016-05-03",
          name: "王小虎4",
          address: "上海市普陀区金沙江路 1516 弄"
        }
      ] 
      this.$nextTick(()=>{
        this.drawer = document.querySelectorAll('.el-table__body-wrapper tbody')[0]
        this.rowInit()
      })
  },
  methods: {
    rowInit() {
        const tbody = this.drawer
        const _this = this
        this.sortable = Sortable.create(tbody, {
            onEnd({newIndex, oldIndex}) {
                const oldData = _this.tableData.splice(oldIndex, 1)[0]
                _this.tableData.splice(newIndex, 0, oldData)
                var newArray = _this.tableData.slice(0)
                _this.tableData = []
                _this.$nextTick(()=>{
                    _this.tableData = newArray
                })
            }
        })
    }
  }
};
</script>
<style scoped lang="scss">
.table {
    margin: 20px 40px;
    border: 1px solid #EBEEF5;
}
</style>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那就可爱多一点点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值