antdesign vue 2 两个表格进行行拖拽
时间: 2024-01-10 18:03:25 浏览: 135
txt文件上传ant design vue表格以及对表格文件的分列,预览行数等联动效果
要实现 Ant Design Vue 2 中两个表格之间的行拖拽,可以使用 `vuedraggable` 和 `ant-design-vue` 的表格组件配合使用。具体步骤如下:
1. 安装 `vuedraggable`:
```bash
npm install vuedraggable --save
```
2. 在需要使用拖拽功能的组件中引入 `vuedraggable`:
```javascript
import draggable from 'vuedraggable'
```
3. 在模板中使用 `draggable` 组件,给其绑定 `list` 和 `options` 属性:
```html
<draggable :list="list" :options="{handle:'.drag-handle', animation: 150}" @end="handleDragEnd">
<a-table row-key="id" :columns="columns" :dataSource="list" :pagination="false">
<template #customRender="text, record, index">
<div class="drag-handle">
<a-icon type="drag" />
</div>
{{text}}
</template>
</a-table>
</draggable>
```
其中,`list` 是表格的数据源,`options` 中的 `handle` 属性用于指定拖拽手柄,`@end` 事件用于监听拖拽结束事件。
4. 在 `handleDragEnd` 方法中处理拖拽结束事件:
```javascript
handleDragEnd(event) {
const { moved, added, removed } = event
// 处理移动
if (moved) {
const { element, oldIndex, newIndex } = moved
// 将 element 从 oldIndex 移动到 newIndex
const movedItem = this.list.splice(oldIndex, 1)[0]
this.list.splice(newIndex, 0, movedItem)
}
}
```
在 `handleDragEnd` 方法中,根据 `event` 中包含的 `moved`、`added` 和 `removed` 属性,分别处理移动、添加和删除操作。
注意,由于 `ant-design-vue` 的表格组件并不支持行拖拽操作,因此您需要在表格的自定义渲染模板中添加拖拽手柄,并使用 `vuedraggable` 来实现行拖拽效果,并在 `handleDragEnd` 方法中更新数据源。
阅读全文