vue.draggable 编写表格拖拽排序

主要使用vuedraggable和sortablejs两个组件。
1、安装组件

npm install vuedraggable
npm install sortablejs

2、引入组件

import draggable from 'vuedraggable';
import Sortable from 'sortablejs';

export default {
    components: {
        draggable,
        Sortable
    },
    ....

3、HTML

我的例子是给表格排序,项目整体使用的是ivew,所以用了ivew的栅格来画表格

<Row class="draggableTable-head">
   <Col span="1">序号</Col>
   <Col span="2">商品条码</Col>
   <Col span="3">商品名称</Col>
   <Col span="1">单位</Col>
</Row>
<draggable class="list-group" v-model="tableData" :options="{draggable:'.rows'}"
   :move="getdata" @update="datadragEnd">
   <Row class="rows" v-for="(item,index) in tableData" :key="index">
       <Col span="1">
           <div class="cell">{{index+1}}</div>
       </Col>
       <Col span="2">
           <div class="cell">{{item.barCode}}</div>
       </Col>
       <Col span="2">
           <div class="cell">{{item.name}}</div>
       </Col>
       <Col span="2">
           <div class="cell">{{item.unit}}</div>
       </Col>
    </Row>
</draggable>

options中draggable的值是拖动的class。一开始怎么都不能拖动,加上这个就可以了。

4、两个方法

move:拖动中
update:拖拽结束

getdata (data) {
    // console.log('getdata方法');
},
datadragEnd (evt) {
    // console.log('datadragEnd方法');
    console.log('拖动前的索引 :' + evt.oldIndex)
    console.log('拖动后的索引 :' + evt.newIndex)
}

表格的处理逻辑是:
1、当前行的id和排序号作为参数,调用后台更改顺序的方法
2、不论调用成功与否,都重新渲染表格数据
【注意】如果有分页,那么传给后台的排序号就要再加上之前的条数,即(页码-1)*每页条数

Vue.Draggable作者的git地址

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值