element table 拖拽排序问题

10 篇文章 0 订阅
  1. 需要引用sortablejs
  2. GitHub地址
//安装sortable.js
Install with NPM:

$ npm install sortablejs --save

//在组件内引入
import Sortable from 'sortablejs'

//为需要拖拽排序的表格添加ref属性
<el-table  ref="dragTable">
//在数据渲染完毕添加拖拽事件
created(){
   this.layerAddQuick()
},
async layerAddQuick(dataJson){
        this.dragJson = dataJson;
        let param = { 
          app_id : dataJson.app_id,
          ad_type_id : dataJson.ad_type_id,
          layer_id : dataJson.layer_id ,
          date : ""
        }
        const { data,code,msg } = await layerIndex(param);
        if(code == 0){
          this.tableData = data.list;
          this.loadingDrag = false;
          //关键
          this.$nextTick(() => {
            this.setSort()  //数据渲染完毕执行方法
          })
        }else{
          this.$baseMessage(msg,"error")
          setTimeout(() => {
            this.loadingDrag = false;
          }, 6000);
        }
      },

setSort() {
        const el = this.$refs.dragTable.$el.querySelectorAll(
        		'.el-table__body-wrapper > table > tbody'
        )[0];
        this.sortable = Sortable.create(el, {
        	// Class name for the drop placeholder,
        		ghostClass: 'sortable-ghost', 
                setData: function(dataTransfer) {
                dataTransfer.setData('Text', '')
            },
           //拖拽结束执行,evt执向拖拽的参数
           onEnd: evt => {
              //判断是否重新排序
              if(evt.oldIndex !== evt.newIndex){
                  let data = {
                     id:this.tableData[evt.oldIndex].id,
                     banner_order:evt.newIndex
                  }
                  console.log(data);
                  //数据提交失败则恢复旧的排序
                  // apiPutBanner(data).catch(()=>{
                  //    const targetRow = this.tableData.splice(evt.oldIndex, 1)[0];
                  //    this.tableData.splice(evt.newIndex, 0, targetRow);
                  // })
              }
            }
        })
      },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值