表格拖拽插件[从零开始vue3+vite+ts+pinia+router4后台管理(10)

表格拖拽插件-从零开始vue3+vite+ts+pinia+router4后台管理(10)

代码gitee地址

在线预览

系列文章

从零开始vue3+vite+ts+pinia+router4后台管理(1)

从零开始vue3+vite+ts+pinia+router4后台管理(2)-页面布局

从零开始vue3+vite+ts+pinia+router4后台管理(3)-动态路由

从零开始vue3+vite+ts+pinia+router4后台管理(4)-导航标签栏和keep-alive缓存

从零开始vue3+vite+ts+pinia+router4后台管理(5)-二次封装表格1.0

从零开始vue3+vite+ts+pinia+router4后台管理(6)-全局自定义指令实现节流与防抖

什么才是完美的表格二次封装elementPlus表格?-从零开始vue3+vite+ts+pinia+router4后台管理(7)

elementPlus-Form封装动态表单-从零开始vue3+vite+ts+pinia+router4后台管理(8)

优雅的使用element-plus的dialog-从零开始vue3+vite+ts+pinia+router4后台管理(9)

bash 复制代码
# 克隆项目 gitee地址
git clone https://gitee.com/3439/Spurs-Admin.git
​
# 进入项目目录
cd Spurs-Admin
​
# 安装依赖
npm install
​
# 本地开发 启动项目
npm run dev

1.插件地址

element-plus-table-dragable

2.插件安装

bash 复制代码
npm i element-plus-table-dragable

3.使用

html 复制代码
<template>
  <div class="app-container">
    <div class="filter-container">
      <el-input  class="w-100" v-model="queryForm.keyword" placeholder="关键字搜索" />
      <el-button type="primary" :icon="Search"  @click="handleSearch">搜索</el-button>
      <el-button class="green-button"  :icon="Plus"  @click="handleSearch">增加</el-button>
      <el-button class="green-button"  :icon="Plus"  @click="getDragableData">查看排序后的数据</el-button>
    </div>
    <div class="table-con">
      <el-table
          v-dragable="dragOptions"
          v-loading="loading"
          :data="tableData"
          style="width: 100%"
          row-key="id"
          border
      >
        <el-table-column prop="nickName" label="姓名"/>
        <el-table-column label="排序" align="center" width="60">
          <template #default>
            <Sort style="width: 1em; height: 1em; margin-right: 8px;cursor: all-scroll"/>
          </template>
        </el-table-column>
        <el-table-column prop="roleName" label="权限名称"/>
        <el-table-column prop="title" label="介绍"/>
        <el-table-column prop="phone" label="联系方式"/>
        <el-table-column prop="address" label="地址"/>
        <el-table-column prop="createTime" label="日期"/>
        <el-table-column fixed="right" label="操作" width="120">
          <template #default>
            <el-button link type="primary" size="small">修改</el-button>
            <el-button link size="small">删除</el-button>

          </template>
        </el-table-column>
      </el-table>
    </div>
    <Pagination
        v-model:page="pagination.pageNum"
        v-model:size="pagination.pageSize"
        :total="total"
        @pagination="getTableData"
    />
  </div>
</template>
<script setup  lang="ts">
import {reactive} from 'vue'
import { Search,Plus } from '@element-plus/icons-vue'
import {useTable} from '@/hooks/useTable'
import tableApi from '@/api/table'
import { vDragable  } from "element-plus-table-dragable";
const queryForm = reactive({
  keyword: ''
})
const {
  tableData,
  pagination,
  total,
  loading,
  getTableData,
  handleSearch,//搜索
} = useTable(tableApi.packTableList,queryForm)
const dragOptions = [
  {
    selector: "tbody", // css选择器的字符串,定义哪些列表单元可以进行拖放
    option: {
      animation: 150,//number 单位:ms,定义排序动画的时间;
      onEnd: (evt:any) => {//function 列表单元拖放结束后的回调函数
        console.log(evt);
        const itemEl = evt.item;  // dragged HTMLElement
        console.log(itemEl);
        console.log("222",evt.oldIndex, evt.newIndex);
        const copyRow = JSON.parse(JSON.stringify(tableData.value[evt.oldIndex]));//拷贝拖动的一行数据存起来
        tableData.value.splice(evt.oldIndex, 1);//删除拖动的一行数据
        tableData.value.splice(parseInt(evt.newIndex), 0, copyRow);//插入到拖动的位置

      },
    },
  },
]
const  getDragableData = () =>{
  console.log(tableData.value);
}
</script>


<style scoped>
.w-100{
  width: 200px;
  margin-right: 5px;
}
</style>

selector: "tbody", // css选择器的字符串,定义哪些列表单元可以进行拖放

animation: 150,//number 单位:ms,定义排序动画的时间;

onEnd: (evt:any) => {//function 列表单元拖放结束后的回调函数

对拖拽后的表格数据进行出来排序

const copyRow = JSON.parse(JSON.stringify(tableData.value[evt.oldIndex]));//拷贝拖动的一行数据存起来

tableData.value.splice(evt.oldIndex, 1);//删除拖动的一行数据

tableData.value.splice(parseInt(evt.newIndex), 0, copyRow);//插入到拖动的位置

相关推荐
m0_7482552618 分钟前
easyExcel导出大数据量EXCEL文件,前端实现进度条或者遮罩层
前端·excel
长风清留扬38 分钟前
小程序毕业设计-音乐播放器+源码(可播放)下载即用
javascript·小程序·毕业设计·课程设计·毕设·音乐播放器
web147862107231 小时前
C# .Net Web 路由相关配置
前端·c#·.net
m0_748247801 小时前
Flutter Intl包使用指南:实现国际化和本地化
前端·javascript·flutter
飞的肖1 小时前
前端使用 Element Plus架构vue3.0实现图片拖拉拽,后等比压缩,上传到Spring Boot后端
前端·spring boot·架构
青灯文案11 小时前
前端 HTTP 请求由 Nginx 反向代理和 API 网关到后端服务的流程
前端·nginx·http
m0_748254881 小时前
DataX3.0+DataX-Web部署分布式可视化ETL系统
前端·分布式·etl
ZJ_.1 小时前
WPSJS:让 WPS 办公与 JavaScript 完美联动
开发语言·前端·javascript·vscode·ecmascript·wps
GIS开发特训营1 小时前
Vue零基础教程|从前端框架到GIS开发系列课程(七)响应式系统介绍
前端·vue.js·前端框架·gis开发·webgis·三维gis
Cachel wood2 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架