zoukankan      html  css  js  c++  java
  • vue的table组件

    一个vue-table的组件

    说明:

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

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    功能:

    1.支持树形数据的展示

    2.行拖拽排序

    3.单元格拖拽排序

    github

    使用方法:

    1.下载npm包:
    你的VUE项目的根目录底下运行:
        npm install ele-table
    ```
    
    2.引入本npm包并注册为vue的组件:
    例如:在需要使用的vue页面中:
    ```<template>
        &lt;!-- 里面写ele-table组件--&gt;
        &lt;ele-table :data="tableData" treetable style=" 100%"&gt;
          &lt;ele-table-column prop="id" label="姓名"&gt;
            &lt;template slot-scope="scope"&gt;
              &lt;div :style="`padding-left:${20*(scope.row._indent-1)}px`"&gt;
                &lt;span  v-if="scope.row.children"&gt;
                  &lt;i v-if="scope.row._expand" &gt;-&lt;/i&gt;&lt;i v-else&gt;+&lt;/i&gt;
                &lt;/span&gt;
                &lt;span&gt;{{scope.row.id}}&lt;/span&gt;
              &lt;/div&gt;
            &lt;/template&gt;
          &lt;/ele-table-column&gt;
          &lt;ele-table-column prop="id" label="年龄" width="180"&gt;
          &lt;/ele-table-column&gt;
          &lt;ele-table-column
            prop="label"
            label="地址"&gt;
          &lt;/ele-table-column&gt;
        &lt;/ele-table&gt;
        &lt;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=" 100%"&gt;
          &lt;ele-table-column prop="id" label="姓名"   width="180"&gt;
          &lt;/ele-table-column&gt;
          &lt;ele-table-column
            prop="id"
            label="年龄"
            width="180"&gt;
          &lt;/ele-table-column&gt;
          &lt;ele-table-column
            prop="label"
            label="地址"&gt;
          &lt;/ele-table-column&gt;
        &lt;/ele-table&gt;
    &lt;/template&gt;
    
    &lt;script&gt;
    import { eleTable, eleTableColumn } from "ele-table";
    import 'ele-table/dist/ele-table.css'; 
    //项目引入element-ui 不需要引入样式,但需要class类指定拖拽样式
    //&lt;style&gt;
        //.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;
        //} 
    //&lt;/style&gt;
    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 &gt; 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 &gt; 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);
              }
            },
        },
       }
    }
    &lt;/script&gt;
    
    
    <h3>Calendar Attributes</h3>
    <table>
    <thead><tr>
    <th>参数</th>
    <th>说明</th>
    <th>类型</th>
    <th>可选值</th>
    <th>默认值</th>
    </tr></thead>
    <tbody>
    <tr>
    <td>data</td>
    <td>显示的数据</td>
    <td>array</td>
    <td>—</td>
    <td>—</td>
    </tr>
    <tr>
    <td>treetable</td>
    <td>是否树形数据</td>
    <td>boolean</td>
    <td>—</td>
    <td>false</td>
    </tr>
    <tr>
    <td>_expand</td>
    <td>树形数据默认展开节点(不支持递归关联)</td>
    <td>boolean</td>
    <td>—</td>
    <td>false</td>
    </tr>
    <tr>
    <td>draggablerow</td>
    <td>是否开启行拖拽</td>
    <td>boolean</td>
    <td>—</td>
    <td>false</td>
    </tr>
    <tr>
    <td>draggable</td>
    <td>是否开启单元格拖拽</td>
    <td>boolean</td>
    <td>—</td>
    <td>false</td>
    </tr>
    <tr>
    <td>allow-drag</td>
    <td>能否被拖拽</td>
    <td>Function(row(行数据), column(行拖拽为index,单元格为所在列), cell(节点), event)</td>
    <td>—</td>
    <td>要求返回boolean</td>
    </tr>
    <tr>
    <td>allow-drop</td>
    <td>能否被放置</td>
    <td>Function(row, column, cell, event, type)</td>
    <td>—</td>
    <td>要求返回boolean</td>
    </tr>
    </tbody>
    </table>
    <h3>Calendar Events</h3>
    <table>
    <thead><tr>
    <th>事件名</th>
    <th>说明</th>
    <th>参数</th>
    </tr></thead>
    <tbody>
    <tr>
    <td>node-drag-start</td>
    <td>节点开始拖拽时触发的事件</td>
    <td>Function(row(行数据), column(行拖拽为index,单元格为所在列), cell(节点), event)</td>
    </tr>
    <tr>
    <td>node-drag-enter</td>
    <td>拖拽进入其他节点时触发的事件</td>
    <td>Function(row(行数据), column(行拖拽为index,单元格为所在列), cell(节点), event, draggingNode(被拖拽节点)</td>
    </tr>
    <tr>
    <td>node-drag-leave</td>
    <td>拖拽离开某个节点时触发的事件</td>
    <td>Function(row(行数据), column(行拖拽为index,单元格为所在列), cell(节点), event, draggingNode(被拖拽节点)</td>
    </tr>
    <tr>
    <td>node-drag-over</td>
    <td>在拖拽节点时触发的事件</td>
    <td>Function(row(行数据), column(行拖拽为index,单元格为所在列), cell(节点), event, draggingNode(被拖拽节点)</td>
    </tr>
    <tr>
    <td>node-drag-end</td>
    <td>拖拽结束时触发的事件</td>
    <td>Function(dragging(被拖拽节点对象), drop(放置节点对象), dropType(放置位置(before、after、inner)), event)</td>
    </tr>
    <tr>
    <td>node-drop</td>
    <td>拖拽完成时触发的事件</td>
    <td>Function(dragging(被拖拽节点对象), drop(放置节点对象), dropType(放置位置(before、after、inner)), event)</td>
    </tr>
    </tbody>
    </table>
    
    来源:https://segmentfault.com/a/1190000016123145
  • 相关阅读:
    Gin-Go学习笔记六:Gin-Web框架 Api的编写
    Gin-Go学习笔记五:Gin-Web框架 文件的操作
    Gin-Go学习笔记四:Gin-Web框架 文件的上传下载
    Gin-Go学习笔记三:Gin-Web框架 JS分页
    Gin-Go学习笔记二:Gin-Web框架
    Gin-Go学习笔记一:Hello World
    质因数分解
    素数算法
    linux-cento os学习笔记1
    python运行代码出现'ascii' codec can't decode byte 0xb4 in position 11: ordinal not in range(128)
  • 原文地址:https://www.cnblogs.com/lovellll/p/10145530.html
Copyright © 2011-2022 走看看