业务需求

公司有一堆tab签,每个tab签里展示对应的数据,方便拖拽更换位置实现el-tabs标签页下的el-tab-pane拖拽效果,可以使用第三方插件sortable进行实现

效果图

在这里插入图片描述

1.npm安装sortable.js

npm install sortablejs --save

2.html代码块

<!--tabOptionList为遍历的数组 手动给el-tabs添加class,方便找到拖拽的哪一行-->
<el-tabs class="tabSign">
      <el-tab-pane
        v-for="item in tabOptionList"      
        :key="item.name"
        :name="item.name"       
      >
      </el-tab-pane>
    </el-tabs>

3. 在script下导入

import Sortable from "sortablejs"; //插件引入

4.js逻辑片段(const el 必须找到自己拖拽的那一列 )

data() {
    return {
      tabOptionList: [
        { name: "1", label: "精确数据" },
        { name: "2", label: "待确认数据" },
        { name: "3", label: "111" },
        { name: "4", label: "222" },
        { name: "5", label: "333" },
        { name: "6", label: "444" },
      ],                
    };
  },
mounted() {
    this.rowDrop(); //初始化拖拽方法
  },
methods: {
    //拖拽方法
    rowDrop() {
      const el = document.querySelector(".tabSign .el-tabs__nav"); //找到想要拖拽的那一列
      const _this = this;
      Sortable.create(el, {
        onEnd({ newIndex, oldIndex }) {
          //oldIIndex拖放前的位置, newIndex拖放后的位置  //tabOptionList为遍历的tab签
          const currRow = _this.tabOptionList.splice(oldIndex, 1)[0]; //鼠标拖拽当前的el-tabs-pane
          _this.tabOptionList.splice(newIndex, 0, currRow); //tableData 是存放所以el-tabs-pane的数组
        },
      });
    },
 }

在这里插入图片描述

5.注意:

const el = document.querySelector(“.tabSign .el-tabs__nav”);自己项目里找到要拖拽的列。
_this.tabOptionList自己项目里对应的选项卡数组。

至此,tab签拖拽效果完美实现。

GitHub 加速计划 / eleme / element
14
1
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:1 个月前 )
c345bb45 1 年前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 1 年前
Logo

新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐