ant-design-vue表格实现拖拽排序


    <a-table
      :columns="columnsModel"
      :data-source="dataModel"
      :customRow="customRow"
    >
     
    </a-table>

​

 :customRow="customRow"重点

 data(){
   return{
      sourceObj:null,
      targetObj:null,
      dataModel:[],
      columnsModel:[],
    }
}
 
 
methods:{
    customRow(record, index) {
      console.log('customRow', record, index)
      return {
        domProps: {
          draggable: true
        },
        style: {
          cursor: 'move'
        },
        on: {
          // 鼠标移入
          mouseenter: event => {
            var ev = event || window.event // 兼容IE
            ev.target.draggable = true
          },
          // 开始拖拽
          dragstart: event => {
            var ev = event || window.event
            ev.stopPropagation() // 阻止冒泡
            this.sourceObj = record // 得到源目标数据序号
            console.log('sourceCode', this.sourceObj)
          },
          // 拖动元素经过的元素
          dragover: event => {
            var ev = event || window.event
            ev.preventDefault()
          },
          // 鼠标松开
          drop: event => {
            var ev = event || window.event
            ev.stopPropagation()
            this.targetObj = record// 得到目标数据
           //获取想要换位置的两个下标
            let sourceindex = ''
            let targetindex = ''
            this.dataModel.map((item, index) => {
              if (this.sourceObj.content == item.content) {
                sourceindex = index
              } 
               if (this.targetObj.content == item.content) {
                targetindex = index
              }
            })
            // 这里就是让数据位置互换,让视图更新 你们可以看record,index的输出,看是什么
            let arr=[]
            this.dataModel.map((item,index)=>{
              if(sourceindex==index){
                    arr.push(this.targetObj)
              }else  if(targetindex==index){
                    arr.push(this.sourceObj)
              }else{
                arr.push(item)
              }
            })
            this.dataModel=arr
          }
        }
      }
    }
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值