简单vue指令实现 el-table 可拖拽表格功能

安装 SortableJS

sorttableJs 相关优点如下:

相关配置项 参考 👉 SortableJS中文官网

javascript 复制代码
pnpm i sortablejs

封装成指令

不多逼逼,直接上才艺 🤪🤪🤪

先安装一个 nanoid 插件 用于生成随机id,注意事项看源码。

javascript 复制代码
import { nanoid } from 'nanoid';
import Sortable from 'sortablejs';

/**
 * 可拖拽表格指令
 * 使用方式,el-table 标签上添加  v-sort-table="tableData" ,tableData: 表格数据
 * 注意: el-table 要指定 row-key='id'   id 字段为指令内部生成
 * 插件:https://sortablejs.com/
 */

export default {
  name: 'sortTable',
  mounted(el: HTMLElement, binding: { value: Array<any> }) {
    const data = binding.value.map((i) => ({ id: nanoid(8), ...i })); // 处理表格原始数据生成id key
    const targetEl = el.querySelector('.el-table__body-wrapper tbody') as HTMLElement;
    if (targetEl) {
      Sortable.create(targetEl, {
        onEnd(evt) {
          const { oldIndex, newIndex } = evt;
          const movedItem = data.splice(oldIndex as number, 1)[0];
          data.splice(newIndex as number, 0, movedItem);
        },
      });
    }
  },
};

使用

ok 放心拿去造吧🤭

javascript 复制代码
 <el-table
          v-sort-table="$editItem.props"
          :data="$editItem.props"
 </el-table>          
相关推荐
A XMan.33 分钟前
JSON结构快捷转XML结构API集成指南
xml·java·前端·json·php
小林爱39 分钟前
【Compose multiplatform教程06】用IDEA编译Compose Multiplatform常见问题
android·java·前端·kotlin·intellij-idea·compose·多平台
蜗牛快跑2134 小时前
前端正在被“锈”化
前端·代码规范
Jet_closer_burning6 小时前
微信小程序中遇到过的问题
前端·微信小程序·小程序
掘金酱7 小时前
稀土掘金社区2024年度影响力榜单正式公布
android·前端·后端
百年bd7 小时前
AI对话机器人简单实现--智谱BigModel+SpringBoot+Vue2+ElementUI
spring boot·elementui·vue2·ai助手·智谱ai·ai对话机器人
Keven__Java7 小时前
Java开发-后端请求成功,前端显示失败
java·开发语言·前端
轻口味7 小时前
【每日学点鸿蒙知识】渐变效果、Web组件注册对象报错、深拷贝list、loadContent数据共享、半屏弹窗
前端·list·harmonyos
老K(郭云开)7 小时前
最新版Chrome浏览器加载ActiveX控件技术——alWebPlugin中间件V2.0.28-迎春版发布
前端·chrome·中间件
LCG元7 小时前
Vue.js组件开发-使用KeepAlive缓存特定组件
vue.js