zoukankan      html  css  js  c++  java
  • vue +element ,el-table实现行和列拖拽排序

    场景

    element ui 表格没有自带的拖拽排序的功能,只能借助第三方插件Sortablejs来实现。

    实现步骤

    1.安装Sortable.js

    npm install sortablejs --save

    2.在页面中引入:

    import Sortable from ‘sortablejs’

    注意

    element table务必指定row-key,row-key必须是唯一的,如ID,不然会出现排序不对的情况。但是不可用index,因为拖拽后index会变,会有问题。

    完整代码

    <template>
        <div >
            <el-table :data="tableData"  row-key="id">
                <el-table-column v-for="(item, index) in col"   :key="`col_${index}`"   
    :prop="dropCol[index].prop" :label="item.label"> </el-table-column> </el-table> </div> </template> <script> import Sortable from 'sortablejs'; export default { data () { return { col:[{label: '日期', prop: 'date' }, { label: '姓名', prop: 'name' },
    {label: '地址', prop: 'address'}], dropCol:[label: '日期', prop: 'date' }, {label: '姓名', prop: 'name' },
    { label: '地址', prop: 'address'}], tableData: [ { id: '1', date: '2016-05-02', name: '王小虎1', address: '上海市普陀区金沙江路 100 弄' }, { id: '2', date: '2016-05-04', name: '王小虎2', address: '上海市普陀区金沙江路 200 弄' }, { id: '3', date: '2016-05-01', name: '王小虎3', address: '上海市普陀区金沙江路 300 弄' }, { id: '4', date: '2016-05-03', name: '王小虎4', address: '上海市普陀区金沙江路 400 弄' } ] }; }, mounted () { this.rowDrop(); this.columnDrop(); }, methods: { // 行拖拽 rowDrop () { // 此时找到的元素是要拖拽元素的父容器 const tbody = document.querySelector('.el-table__body-wrapper tbody'); const _this = this; Sortable.create(tbody, { // 指定父元素下可被拖拽的子元素 draggable: ".el-table__row", onEnd ({ newIndex, oldIndex }) { const currRow = _this.tableData.splice(oldIndex, 1)[0]; _this.tableData.splice(newIndex, 0, currRow); } }); }, // 列拖拽 columnDrop () { const wrapperTr = document.querySelector('.el-table__header-wrapper tr'); this.sortable = Sortable.create(wrapperTr, { animation: 180, delay: 0, onEnd: evt => { const oldItem = this.dropCol[evt.oldIndex]; this.dropCol.splice(evt.oldIndex, 1); this.dropCol.splice(evt.newIndex, 0, oldItem); } }); } } }; </script>
  • 相关阅读:
    微信点餐系统(六)-买家端订单(上)
    微信点餐系统(五)-买家端商品
    微信点餐系统(四)-买家端类目
    微信点餐系统(三)-开发环境配置
    微信点餐系统(二)-项目设计
    微信点餐系统(一)-系统简介
    spring学习(02)之配置文件没有提示问题
    spring学习(01)之IOC
    struts2 中的 addActionError 、addFieldError、addActionMessage的方法【转】
    在一个JSP页面中包含另一个JSP页面的三种方式
  • 原文地址:https://www.cnblogs.com/lemoncool/p/11661084.html
Copyright © 2011-2022 走看看