参考地址 拖拽插件sortable.js如何实现el-table表格拖拽效果
columnDropInit() { // 第一步,获取列容器 const wrapperColumn = document.querySelector( ".el-table__header-wrapper tr" ); // 第二步,给列容器指定对应拖拽规则 this.sortable = Sortable.create(wrapperColumn, { animation: 500, delay: 0, onEnd: (event) => { console.log( "拖拽完成以后发现表头数据并没有改变,所以需要我们手动更新表头数据", this.tableHeader ); console.log( "根据旧索引和新索引去更新,其实就是交换位置", event.oldIndex, event.newIndex ); // 接下来做索引的交换 let tempHableHeader = [...this.tableHeader]; // 先存一份临时变量表头数据 let temp; // 临时变量用于交换 temp = tempHableHeader[event.oldIndex - 2]; // 注意这里-2是因为,我在表格的前面加了两列(勾选框列,和序号列) tempHableHeader[event.oldIndex - 2] = tempHableHeader[event.newIndex - 2]; // 如果没有这两列,序号就是正常对应的,就不用减2 tempHableHeader[event.newIndex - 2] = temp; // 重要的事情说三遍!!! // 这里一定要先把表头数据清空,然后再下一轮中去赋值,否则会渲染错误 // 这里一定要先把表头数据清空,然后再下一轮中去赋值,否则会渲染错误 // 这里一定要先把表头数据清空,然后再下一轮中去赋值,否则会渲染错误 this.tableHeader = []; // 大家可以注掉试试哦 this.$nextTick(() => { this.tableHeader = tempHableHeader; }); }, }); },