element官方提供了table,但是是基于基本功能的,现在来做一个 行可拖拽的table
废话少说,直接上代码
<template> <div> <el-table ref="dragTable" :data="list" border fit highlight-current-row row-key="date" style="width: 100%" > <el-table-column prop="date" label="日期" align="center"></el-table-column> <el-table-column prop="name" label="姓名" align="center"></el-table-column> <el-table-column prop="address" label="地址" align="center"></el-table-column> </el-table> </div> </template> <script> import Sortable from "sortablejs"; // 引入拖拽js 这个是实现拖拽功能的核心,可以通過npm 安裝,文檔鏈接:http://www.sortablejs.com/options.html export default { data() { return { list: [ { date: "1111111", name: "王小虎", address: "上海市普陀区金沙江路 1518 弄" }, { date: "22222222222", name: "王小虎", address: "上海市普陀区金沙江路 1517 弄" }, { date: "333333333", name: "王小虎", address: "上海市普陀区金沙江路 1519 弄" }, { date: "44444444444", name: "王小虎", address: "上海市普陀区金沙江路 1516 弄" }, { date: "555555555", name: "王小虎", address: "上海市普陀区金沙江路 1516 弄" }, { date: "6666666666", name: "王小虎", address: "上海市普陀区金沙江路 1516 弄" }, { date: "777777777777", name: "王小虎", address: "上海市普陀区金沙江路 1516 弄" }, { date: "888888888", name: "王小虎", address: "上海市普陀区金沙江路 1516 弄" } ], sortable: null }; }, mounted() { this.setSort(); console.log("waht??", this.$refs.dragTable.$el); }, methods: { setSort() { const el = this.$refs.dragTable.$el.querySelectorAll( ".el-table__body-wrapper > table > tbody" )[0]; this.sortable = new Sortable(el, { ghostClass: "blue-background-class", // Class name for the drop placeholder,// 抓取的元素的类名,简单来说就是抓取元素的时候给他加一个类名blue-background-class setData: function(dataTransfer) { console.log("dataTransfer", dataTransfer); dataTransfer.setData("Text", ""); }, onEnd: evt => { // console 一下 evt ,你就明白下面为什么这样写 const targetRow = this.list.splice(evt.oldIndex, 1)[0]; this.list.splice(evt.newIndex, 0, targetRow); } }); } } }; </script>