1.0.12 • Published 7 months ago

sim-el-table-plus v1.0.12

Weekly downloads
-
License
ISC
Repository
-
Last release
7 months ago

sim-el-table-plus是对element-ui table的二次封装,增加了以下功能:

  • 集成分页组件
  • 表格列可配置化
  • 操作栏列可配置化
  • 动态调整分页大小,自适应屏幕高度分页
  • 支持复杂表头
  • 支持按照指定的key自动合并行

示例图片

1. 安装

npm install sim-el-table-plus

2. 使用示例

<template>
  <el-table-plus
    ref="permission-table"
    :option-column="optionColumn"
    :load-data="loadData"
    :columns="columns"
    is-compact
    :search-data="searchParam"
    :auto-page-size="true"
  >
  </el-table-plus>
</template>

<script>
  import ElTablePlus from 'sim-el-table-plus'

  export default {
    name: "index",
    components: {
      ElTablePlus,
    },
    data() {
      return {
        //这里是搜索参数的配置,该参数变动后,后自动触发表格的load-data方法重新渲染数据
        searchParam:{

        },
        //这里是表格列的配置
        columns: [
          {prop: 'userId', label: 'ID', width: '70', align: 'center'},
          {prop: 'userName', label: '名称', align: 'center'},
          {prop: 'userTypeName', label: '类型', width: '100', align: 'center'},
          {prop: 'userRoleRes', label: '归属角色', width: '100', align: 'center'},
          {prop: 'viewPermission',label: '查看权限',width: '100',align: 'center'},
          {prop: 'createDate', label: '创建时间', width: '180', align: 'center'},
          {prop: 'expDate',label: '过期时间',width: '100',align: 'center',isSlot: true},
          {prop: 'statusName', label: '状态', width: '80', align: 'center'}
        ],
        //这里是操作栏列的配置
        optionColumn: {
          options: [
            {
              type: 'text',
              text: '编辑',
              handler: (row) => {
                //点击改按钮时,你的处理逻辑
              },
              disabled: (row) => {
                //true:禁用,false:不禁用, 默认不禁用
                return false;
              }
            }, {
              type: 'text',
              text: '解冻',
              handler: (row) => {
                //your handler
              },
              disabled: (row) => {
                //true:disabled,false:not disabled
                return false;
              }
            }, {
              type: 'text',
              text: '冻结',
              handler: (row) => {
                //your handler
              },
              disabled: (row) => {
                //true:disabled,false:not disabled
                return false;
              }
            }, {
              type: 'text',
              text: '停用',
              handler: (row) => {
                //your handler
              },
              disabled: (row) => {
                //true:disabled,false:not disabled
                return false;
              }
            }, {
              type: 'text',
              text: '删除',
              handler: (row) => {
                //your handler
              },
              disabled: (row) => {
                //true:disabled,false:not disabled
                return false;
              }
            }
          ],
          fixed: 'right',
          width: '230'
        }
      }
    },
    methods:{
      loadData(resolve, pageInfo, searchData) {
        //这里是你请求后台的代码
        //注意:如果需要分页,则resolve参数为一个对象,格式如下
        let data = {
          //总页数
          total: 55,
          //数据列表
          list: []
        };
        //如果不需要分页 则需设置pagination=false 然后直接resolve一个列表即可
        resolve(data)
      },
      /**
       * 搜索
       */
      search(){
        this.$refs['permission-table'].refresh();
      },
    }
  }
</script>

2. el-table-plus扩展属性

属性说明类型可选值默认值
data原生属性,表格数据,一个json对象,含分页数据(后端PageHelper分页)Object-[]
columns表头配置,详情见下方columns配置Array-[]
pagination是否分页Booleantrue/falsetrue
page-size分页大小Number-10
layout分页布局,与原生属性一致String-'total, prev, pager, next'
page-sizes下拉可选的每页数据条数,与原生属性一致Array-5, 10, 20, 30, 40, 50, 100
data-url加载数据的url,如果只是简单的加载数据,直接传入后台接口即可,默认GET请求String--
load-data加载数据的方法(优先级高于dataUrl)Function--
selection是否开启多选Booleantrue/falsetrue
row-key表格行唯一标识key,多选表格必传String--
current-page当前页Number-1
option-column操作栏列,详情见下方optionColumn配置Object--
show-loading是否展示加载遮罩层Booleantrue/falsetrue
enable-auto-rowspan是否允许自动跨行,默认falseBooleantrue/falsefalse
auto-row-span-key自动跨行的key(对应表格列的prop属性)Array--
pagination-style分页组件的样式Object--
size表格尺寸(原生)Stringmedium / small / mini-
is-compact是否是紧凑型表格true/falsefalse
row-style行样式Object--
cell-style列样式Object--
search-data搜索条件,绑定到一个对象,内容修改时会自动重新加载数据Object--
show-summary超出列宽后自动隐藏并显示提示String/true/falsefalse
auto-page-size表格尺寸(原生)Boolean/true/false-

3. columns配置

columns为一个数组,数组对象内容均为原生element ui的el-table-column属性(部分属性,有用到其他的再添加),已支持的属性如下:

属性说明类型可选值默认值
label表头名称(原生)String--
prop对应列内容的字段名(原生)String--
align列内容对齐方式(原生)String--
showOverflowTooltip列内容超出隐藏(原生)Boolean-false
width列宽。当值为auto时,自动计算表头宽度(基于表头内容宽度);当值为auto-content时,自动计算列宽(取每行最多字符数)Stringauto-
minWidth列最小宽度(原生)String--
columns嵌套列,用于复杂表头Array--
autoRowspan当前列是否自动跨行Boolean--

3.1 简单表头示例:

columns: [
    {
        label: '菜单ID', prop: 'menuId', align: 'center', width: '100px'
    },
    {
        label: '菜单名称', prop: 'menuName'
    }
]

3.2 复杂表头示例:

columns: [
      {
        label: '权限ID', prop: 'purviewId', align: 'center', columns: [
          {label: '权限ID', prop: 'purviewId'},
          {label: '权限名称', prop: 'purviewName'},
        ]
      },
      {
        label: '权限名称', prop: 'purviewName'
      },
      {
        label: '权限编码', prop: 'purviewCode'
      }
    ]

4. optionColumn配置

optionColumn为一个对象,对象内容均为原生element ui的el-table-column属性(部分属性,有用到其他的再添加),已支持的属性如下:

属性说明类型可选值默认值
label表头名称(原生)String--
prop对应列内容的字段名(原生)String--
align对 齐方式(原生)String--
width列宽String--
options操作按钮配置,详情见下方optionColumn.options配置Array--

4.1 optionColumn.options配置

属性说明类型可选值默认值
type按钮类型(原生)String--
size按钮大小(原生)String--
text按钮文本String--
handler点击按钮的回调,参数:当前行数据Array--

示例:

optionColumn: {
          options: [
            {
              type: 'text',
              size: 'mini',
              text: '新增',
              handler: (row) => {
                //这里进行逻辑处理
              }
            }, {
              type: 'text',
              size: 'mini',
              text: '删除',
              handler: (row) => {
                //这里进行逻辑处理
              }
            }
          ],
          width: '100px',
        }

5. el-table-plus事件

事件说明类型可选值默认值
select开启多选时,点击checkbox时触发,参数:当前行数据Function--
1.0.11

7 months ago

1.0.10

7 months ago

1.0.12

7 months ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago