element(-ui 和 -plus)的table实现拖拽排序

首先我要介绍一个超级好用的工具,sortablejs

直接安装yarn add sortablejs, 后在自己的vue文件中引入就可以直接使用了
首先提供element plus 和 -ui的区别只在于 传入Sortable的el。
element-ui: ‘.el-table__body-wrapper tbody’
element-plus: ‘.el-table__body tbody’


    rowDrop() {
      // tbody  拿到你要去操作的拖拽元素的父节点
      const tbody = document.querySelector(
        '.el-table__body tbody',
        // .el-table__body-wrapper tbody
      );
      // eslint-disable-next-line @typescript-eslint/no-this-alias
      const that = this;
      new Sortable(tbody, {
        animation: 150, //定义排序动画的时间  单位是ms
        ghostClass: 'blue-background-class', //drop placeholder的css类名  可以不设置
        //开始拖拽
        onStart: function (e) {
          // ...开始拖拽逻辑
        },
        //结束拖拽
        onEnd: function (obj) {
          const list = JSON.parse(
            JSON.stringify(that.tableData),
          );
          const temp = list.splice(obj.oldIndex, 1)[0];
          list.splice(obj.newIndex, 0, temp);
          that.tableData = list;
        },
      });

感谢这个博文让我了解到了sortablejs这个工具
参考博文地址:https://blog.csdn.net/PaPablame/article/details/128126882
工具官网:http://www.sortablejs.com/

根据您提供的代码,您可以使用 Element UI 的 `el-upload` 组件来实现图片上传和删除功能。以下是使用 Element UI 实现该功能的示例代码: ```html <template> <div class="title1" style="padding-left: 10px">文字信息 (最多**六**张)</div> <div class="imgList"> <div class="imgContent" v-if="imageUrl.length"> <div class="list" v-for="(item, index) in imageUrl" :key="index" style="margin-right: 10px"> <img style="display: inline-block; width: 108px; height: 108px" :src="item" alt /> <span class="remove" @click="removeImg(index)"> <i class="el-icon-delete"></i> </span> </div> </div> <el-upload v-show="showUpload" ref="addUpload" class="avatar-uploader" action :show-file-list="false" accept="image/jpeg, image/jpg, image/png" :auto-upload="false" :on-change="uploadMap"> <i class="el-icon-plus avatar-uploader-icon"></i> </el-upload> </div> </template> <script> export default { data() { return { showUpload: false, // 控制上传按钮的显示与隐藏 imageUrl: [], // 存储已上传的图片地址数组 // 其他数据和方法... }; }, methods: { removeImg(index) { this.imageUrl.splice(index, 1); // 从数组中移除指定索引的图片地址 }, uploadMap(file) { const reader = new FileReader(); reader.onload = (e) => { const base64Data = e.target.result; // 将文件转换为 Base64 编码的数据 this.imageUrl.push(base64Data); // 将图片地址添加到数组中 }; reader.readAsDataURL(file.raw); // 以 DataURL 的形式读取文件内容 } } }; </script> ``` 上述代码使用了 Element UI 的 `el-upload`<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue配合element-ui实现图片多张上传和删除](https://blog.csdn.net/weixin_44255044/article/details/114135207)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vue Element ui实现table列拖动效果](https://download.csdn.net/download/u012976879/10770752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值