jQuery实现表格的数据拖拽

14 篇文章 0 订阅

jQuery实现将一个ant-table的数据拖拽复制到另一个ant-table

需求

  1. ant-design-vue
  2. 将一个嵌套在drawer中的table数据拖拽复制到drawer外面的table中

效果
拖拽中
在这里插入图片描述
拖拽后
在这里插入图片描述
HTML

<el-button type="text" size="small" class="text-btn" @click="choseField">选择字段</el-button>
// 拖拽到table
<a-table class="droptable" :columns="columns_copy" :dataSource="fieldInfoList">
.....
</a-table>
// 从drawer中拖拽数据
<field-select ref="fieldList" @setFieldList="setFieldList"></field-select>

JS

initDrop() {
			// initDrop在mounted中触发,使table区域可以接受拖拽 
            let that = this
            $('.table_container').droppable({
                scope: 'basic', // 设置两个相同的scope接受拖拽信息
                tolerance: 'fit',
                drop(e) {
                    let dropFieldInfo = {
                        enName: that.dragField.enname || '',
                        cnName: that.dragField.name || '',
                    }
                    that.fieldInfoList.push(dropFieldInfo)
                    that.repeatZhName() // 校验字段是否重复的方法
                }
            })
        },
 choseField() {
            this.$refs.fieldList.setShowState(true)  //显示drawer
            // 因为drawer中的dom对象实在打开抽屉时候才会被创建,所以不能再drawer组件中进行初始化
            this.$nextTick(() => {
            	// sort-table为抽屉组件中ant-table的类名
                $('.sort-table tbody tr').draggable({
                    scope: 'basic',  //相同的scope name
                    scroll: false,
                    zIndex: 10000,  // zindex设置更高避免拖拽的数据被drawer遮住,同时去除遮罩层样式
                    helper: 'clone',
                    appendTo: 'body',  //避免遮盖
                    containment: document.getElementById('app'),
                    start: e => {
                    	// rowIndex第一行是表头,数据行的rowindex从1开始
                        let currentIndex = e.target.rowIndex - 1
                        // console.log(this.$refs.fieldList.tableData[currentIndex])
                        this.dragField = this.$refs.fieldList.tableData[currentIndex]
                    },
                    stop: e => {
                        // this.eventType = 'CLICK'
                        console.log('拖拽结束事件')
                        console.log(e)
                    }
                })
            })
        },

注意事项

  1. drop和drag区域要配置相同的scope
  2. 为了避免拖拽的helper被遮住,drag要配置zIndex和appendTo
  3. 如果表格有翻页或者查询功能,列表数据会刷新,jq的拖拽会失效,在getList请求方法成功之后,在初始化一次拖拽事件即可,然后使用$emit让父组件接收一下
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值