vue的table组件

一个vue-table的组件

说明:

1.基于element-ui开发的vue表格组件。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

功能:

1.支持树形数据的展示

2.行拖拽排序

3.单元格拖拽排序

github

使用方法:

1.下载npm包:
你的VUE项目的根目录底下运行:
 
 

npm install ele-table
```

2.引入本npm包并注册为vue的组件:
例如:在需要使用的vue页面中:
        
        <!-- 里面写ele-table组件-->
        <ele-table :data="tableData" treetable style="width: 100%">
          <ele-table-column prop="id" label="姓名">
            <template slot-scope="scope">
              <div :style="`padding-left:${20*(scope.row._indent-1)}px`">
                <span  v-if="scope.row.children">
                  <i v-if="scope.row._expand" >-</i><i v-else>+</i>
                </span>
                <span>{{scope.row.id}}</span>
              </div>
            </template>
          </ele-table-column>
          <ele-table-column prop="id" label="年龄" width="180">
          </ele-table-column>
          <ele-table-column
            prop="label"
            label="地址">
          </ele-table-column>
        </ele-table>
        <ele-table
          draggablerow //能否行拖拽
          :allow-drag="allowdrag" //能否被拖拽
          :allow-drop="allowDrop" //能否被放置
          :data="tableData"
          @node-drag-start="handleDragStart"
          @node-drag-enter="handleDragEnter"
          @node-drag-leave="handleDragLeave"
          @node-drag-over="handleDragOver"
          @node-drag-end="handleDragEnd"
          style="width: 100%">
          <ele-table-column prop="id" label="姓名"   width="180">
          </ele-table-column>
          <ele-table-column
            prop="id"
            label="年龄"
            width="180">
          </ele-table-column>
          <ele-table-column
            prop="label"
            label="地址">
          </ele-table-column>
        </ele-table>
    </template>
    
    <script>
    import { eleTable, eleTableColumn } from "ele-table";
    import 'ele-table/dist/ele-table.css'; 
    //项目引入element-ui 不需要引入样式,但需要class类指定拖拽样式
    //<style>
        //.el-table--dropNode{
         // background-color: #409eff !important;
        //}
       // .el-tree__drop-indicator {
       //     position: absolute;
        //    left: 0;
        //    right: 0;
        //    height: 2px !important;
        //    background-color: #409eff;
        //    z-index: 10000;
        //} 
    //</style>
    export default {
        data(){
            return{
                tableData: [{
                  id: 1,
                  label: '一级 1',
                  _expand:true,   //设置默认展开节点
                  children: [{
                    id: 4,
                    label: '二级 1-1',
                    _expand:true,
                    children: [{
                      id: 9,
                      label: '三级 1-1-1'
                    }, {
                      id: 10,
                      label: '三级 1-1-2'
                    }]
                 }]
               }, {
                 id: 2,
                 label: '一级 2',
                 children: [{
                    id: 5,
                    label: '二级 2-1'
                 }, {
                    id: 6,
                    label: '二级 2-2'
                 }]
               }]
            }
        },
        components: {
            eleTable,
            eleTableColumn 
        },
        methods: {
            handleDragEnd(row, column, cell, event) {
              let data = this.tableData[row.draggingcolumn];
              if (cell == "after") {
                this.tableData.splice(column.dropcolumn + 1, 0, data);
                if (row.draggingcolumn > column.dropcolumn) {
                  this.tableData.splice(row.draggingcolumn + 1, 1);
                } else {
                  this.tableData.splice(row.draggingcolumn, 1);
                }
              }
              if (cell == "before") {
                this.tableData.splice(column.dropcolumn, 0, data);
                if (row.draggingcolumn > column.dropcolumn) {
                  this.tableData.splice(row.draggingcolumn + 1, 1);
                } else {
                  this.tableData.splice(row.draggingcolumn, 1);
                }
              }
              if (cell == "inner") {
                this.$set(
                  this.tableData,
                  row.draggingcolumn,
                  this.tableData[column.dropcolumn]
                );
                this.$set(this.tableData, column.dropcolumn, data);
              }
            },
        },
       }
    }
    </script>

Calendar Attributes

参数说明类型可选值默认值
data显示的数据array
treetable是否树形数据booleanfalse
_expand树形数据默认展开节点(不支持递归关联)booleanfalse
draggablerow是否开启行拖拽booleanfalse
draggable是否开启单元格拖拽booleanfalse
allow-drag能否被拖拽Function(row(行数据), column(行拖拽为index,单元格为所在列), cell(节点), event)要求返回boolean
allow-drop能否被放置Function(row, column, cell, event, type)要求返回boolean

Calendar Events

事件名说明参数
node-drag-start节点开始拖拽时触发的事件Function(row(行数据), column(行拖拽为index,单元格为所在列), cell(节点), event)
node-drag-enter拖拽进入其他节点时触发的事件Function(row(行数据), column(行拖拽为index,单元格为所在列), cell(节点), event, draggingNode(被拖拽节点)
node-drag-leave拖拽离开某个节点时触发的事件Function(row(行数据), column(行拖拽为index,单元格为所在列), cell(节点), event, draggingNode(被拖拽节点)
node-drag-over在拖拽节点时触发的事件Function(row(行数据), column(行拖拽为index,单元格为所在列), cell(节点), event, draggingNode(被拖拽节点)
node-drag-end拖拽结束时触发的事件Function(dragging(被拖拽节点对象), drop(放置节点对象), dropType(放置位置(before、after、inner)), event)
node-drop拖拽完成时触发的事件Function(dragging(被拖拽节点对象), drop(放置节点对象), dropType(放置位置(before、after、inner)), event)

来源:https://segmentfault.com/a/1190000016123145

转载于:https://www.cnblogs.com/lovellll/p/10145530.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值