2023-07-20 17:56:08
在Vue2项目中结合el-table实现表格分组拖拽排序(组内可拖拽、组间不可拖拽),可通过以下步骤完成:
核心实现步骤安装依赖库使用vuedraggable实现拖拽功能,安装命令:
npm install vuedraggable数据结构调整将表格数据按分组拆分为两个独立数组(如topData和normalData),示例数据结构:
data() { return { topData: [ { id: 1, content: '置顶1' }, { id: 2, content: '置顶2' }, { id: 3, content: '置顶3' } ], normalData: [ { id: 4, content: '普通4' }, { id: 5, content: '普通5' }, { id: 6, content: '普通6' } ] };}组件注册与引入在Vue组件中引入vuedraggable并注册为局部组件:
import draggable from 'vuedraggable';export default { components: { draggable }, // ...其他选项};模板结构实现使用draggable包裹el-table,通过group属性限制拖拽范围(组内相同group值可拖拽,不同则不可):
<template> <div> <h3>置顶区域</h3> <draggable group="top" v-model="topData" @end="onEnd"> <el-table :data="topData" style="width: 100%"> <el-table-column label="内容" prop="content"></el-table-column> </el-table> </draggable> <h3>非置顶区域</h3> <draggable group="normal" v-model="normalData" @end="onEnd"> <el-table :data="normalData" style="width: 100%"> <el-table-column label="内容" prop="content"></el-table-column> </el-table> </draggable> </div></template>拖拽事件处理在methods中定义onEnd方法,处理拖拽结束后的逻辑(如数据持久化):
methods: { onEnd() { console.log('置顶数据:', this.topData); console.log('非置顶数据:', this.normalData); // 可在此处添加API调用或状态更新逻辑 }}通过以上步骤,即可实现el-table的分组拖拽排序功能,满足组内可拖拽、组间不可拖拽的需求。