Skip to content

简介

可以用于接口列表数据展示,以及静态数据展示

基础用法

template
<mb-table ref="table" v-bind="tableOptions" />
js
const tableOptions = reactive({
  id: 'dict-list',
  url: '/system/dict/list',
  page: true,
  where: {
    type: {
      label: '类型'
    },
    dictType: {
      component: 'select',
      label: '字典类型',
      props: {
        'all-option': true,
        type: 'dict_type'
      }
    }
  },
  cols: [
    {
      field: 'type',
      label: '类型'
    },
    {
      field: 'descRibe',
      label: '描述'
    },
    {
      field: 'dictType',
      label: '字典类型',
      width: 200,
      dictType: 'dict_type'
    },
    {
      field: 'createDate',
      label: '创建时间'
    },
    {
      field: 'remarks',
      label: '备注',
      width: 200
    },
    {
      label: '操作',
      type: 'buttons',
      width: 220,
      fixed: 'right',
      buttons: [
        {
          permission: 'dict:save',
          label: '修改',
          link: true,
          click: (row) => {
            
          }
        },
        {
          permission: 'dict:delete',
          label: '删除',
          link: true,
          click: (row) => {
            
          }
        },
        {
          permission: 'dict:items:view',
          label: '字典项',
          link: true,
          click: (row) => {
            
          }
        }
      ]
    }
  ]
})

table props

名称类型默认值说明版本
propsObject{}n-table的属性
idString''表格唯一标识,可以应用于保存表格参数到后台的场景
rowKeyString'id'表格数据的主键
nowrapBooleantrue单元格内容是否换行
virtualScrollBooleanfalse虚拟滚动
urlString''请求数据URL,比如:'/system/dict/list'
whereObject{}详见mb-search where
colsArray[]详见cols
summaryObjectundefined详见summary
method'get' | 'post' | 'postJson'post请求方法
limitNumber10分页条数
pageBooleantrue是否分页
dataArraynull静态数据和url属性二选一
done(data) => voidundefined数据加载后回调方法
loadingBooleantrue表格是否开启loading
showNoBooleantrue是否开启序号
selectionBooleanfalse是否开启多选
stripedBooleantrue斑马纹
selectedRowEnableBooleantrue是否开启行点击
contextmenuEnableBooleanfalse是否开启右键菜单
defaultSelectedRowBooleanfalse数据加载完成后是否选择第一行
defaultColWidthNumber100单元格默认宽度
checkedRowKeysArray[]多选的keys
keepCurrentPageBooleanfalse数据重新加载后,是否保持在当前页数
onScroll(e) => voidundefined表格滚动回调
onContextmenu(e, row) => voidundefined右键菜单回调
onDynamicSettingContextmenu(row) => Arrayundefined右键菜单自定义项
return{key:'',title:'',row:null,click:() => {},icon:$common.renderIcon('')}
onContextmenuSelect(key) => voidundefined右键菜单项选择回调
onDblclick({e, row}) => voidundefined双击行回调

table cols props

名称类型默认值
说明
版本
typeStringtext更多详见type
fieldStringundefined字段名
labelStringundefined标题名
align'left' | 'right' | 'center'left列内的文本排列
permissionStringundefined根据当前用户所有权限标识判断列是否显示
widthNumberundefined宽度,单位:px
minWidthNumberundefined最小宽度,单位:px
fixed'left | 'right' | falsefalse该列是否需要 fixed
注意:
1、如果你想固定第三列那么前两列也需要固定
2、如果你想固定倒数第三列那么倒数第二和第一也需要固定
showBooleantrue是否显示此列
copyAllBooleanfalse是否开启复制整列
copyAllCallback(col) => voidundefined点击复制整列回调,默认使用\n隔开
realSortBooleanfalse是否开启后台排序,开启后请求后台会自动传入两个参数
1、orderByColumn(排序字段),为空时不排序
2、direction(排序规则),0升序、1倒序、为空时不排序
dictTypeStringundefined字典类型,配置后会根据此类型反显
支持按path获取值
templet(row, col, index) => Stringundefined自定义返回内容
render(row, rowIndex) => VNodeChildundefined自定义渲染内容
if(row) => Booleanundefined根据行数据判断此列是否显示
titleTooltipString | Objectundefined表头提示。可以直接写字符串,也可以配置其他属性
titleTooltip.iconPropsObjectundefinedmb-icon的属性
titleTooltip.contentStringundefined提示内容
summaryBoolean | Objectundefined合计。可以直接配置true和false,也可以配置其他属性
summary.prefixStringundefined合计前缀,比如可以增加“¥”
summary.suffixStringundefined合计后缀

table cols type props

名称说明示例版本
text显示文本,支持按path获取值{type: 'user.name'}
switch开关{type: 'switch', change: '值改变时回调' checkedValue: '选中的值', uncheckedValue: '取消选中的值', props: 'mb-switch的props'}
html显示HTML,支持按path获取值{type: 'user.name'}
buttons按钮组{type: 'buttons', buttons: [{}]}详情见buttons
dynamic自定义插槽,插槽名=col.field,参数:row、col、index
image显示图片,值是相对地址。自动补全前缀

table cols type buttons props

名称类型默认值说明版本
if(row) => Booleanundefined判断按钮是否显示
permissionStringundefined根据当前用户所有权限标识判断按钮是否显示
type'dynamic' | 'default' | 'tertiary' | 'primary' | 'success' | 'info' | 'warning' | 'error'default按钮的类型,设置dynamic时表示自定义使用插槽
linkBooleanfalse是否显示为文本按钮
dashedBooleanfalse按钮边框是否为虚线
colorStringundefined按钮颜色(支持形如 #FFF, #FFFFFF, yellow,rgb(0, 0, 0) 的颜色)
tagStringbutton按钮需要被渲染为什么标签,如果link=true,是a标签否则是button
text-colorStringundefined按钮文字颜色(支持形如 #FFF, #FFFFFF, yellow,rgb(0, 0, 0) 的颜色)
hrefStringundefined当tag是a标签可以配置此属性
targetStringundefined当tag是a标签可以配置此属性
click(row) => voidundefined按钮点击时的回调
iconStringundefinedmb-iconicon属性

table summary props

名称类型默认值
说明
版本
urlStringundefined请求数据url,默认get请求。返回的数据示例:{amount: 100}
methodStringundefined请求方法
dataObjectundefined合计数据和url二选一,数据示例:{amount: 100, amount2: { value: h('font', { color: 'red' }, 300) }}

常见问题

表格不显示?

template
<div>
    <mb-table v-bind="tableOptions" />
</div>

答:mb-table的父级标签或者本身,需要设置高度才可以。mb-table的高度可以根据父级标签高度自动填满。