主题
Table 表格
Element Plus的el-table的单元格无法根据内容的长度分配单元格宽度,导致一些列在没有数据的情况下会显得特别空,hl-table就是为了解决此问题
WARNING
- 项目中为了保持代码一致性,请大家统一使用hl-table作为表格渲染组件
- 但是如果表格有单元格合并需求请使用el-table或原生table
基础用法
vue
表头固定
组件默认带有表头固定功能,且不能取消
默认表格主体部分的高度等于外层容器高度减去表头高度;
当外层容器高度不固定或这需要自定义最大高度时可以通过maxHeight属性设置表格主体的最大高度
vue
内容隐藏
默认情况下,hl-table会以换行的形式将内容全部显示出来,当我们需要用...截断文字时可以将nowrap设为true实现
vue
表头定制
需求:当表格字段过多时我们希望可以自定义显示的字段
hl-table内部实现了表头定制的组件,可以通过edit-header属性控制组件的显示与隐藏,用户配置的需要显示的字段信息保存在了storage中,这样保证下次打开的内容和当前一致,所以还需要配置storage对应的key值
vue
- storage-key:整个项目必须唯一
单元格宽度
- 原生标签td即使设置了宽度,最终渲染出来的单元格的宽度也是根据内容来分配的,设置的宽度只是作为其中一个分配因子。
- hl-table-column的width属性表现效果和原生td保持一致。
- hl-table-column的min-width设置最小宽度
Table属性
属性 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
data | 数据源 | Array | — | [] |
maxHeight | 表格的最大高度:不包括表头 | String | — | — |
nowrap | 内容是否换行 | Boolean | — | false |
align | 单元格对齐方式 | String | left/right/center | center |
hover | 鼠标hover行上的鼠标样式 | Array | css - cursor | default |
border | 是否显示边框 | Boolean | — | false |
borderColor | 边框颜色 | String | — | #333 |
borderWidth | 边框宽度 | String | — | 1px |
emptyText | 没有数据时显示的文字 | String | — | 没有数据 |
hightLight | 是否高亮选中行 | Boolean | — | false |
lightLine | 默认高亮的行数 | Number | — | 0 |
editHeader | 控制显示和隐藏表头定制 | Boolean | — | false |
storageKey | 自定义表头的信息存储在localstorage,storageKey为对应的key值 | String | — | — |
rowClass | 行样式,可以根据方法的回调参数自定义每一行的样式 | Function(row,index) | - | - |
tooltipEffect | 文字提示的样式 | String | light/dark | light |
tooltopMaxWidth | 文字提示框的最大宽度 | String | css宽度样式 | 90vw |
Table方法
名称 | 说明 | 参数 |
---|---|---|
doLayout | 重新布局 | — |
Table事件
事件名 | 说明 | 回调参数 |
---|---|---|
rowClick | 点击行触发 | (row:Object, index:Number) |
Table插槽
插槽名 | 说明 |
---|---|
empty | 当数据为空时自定义的内容 |
TableColumn属性
属性 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
type | 列的类型 | String | default/index | default |
prop | 字段名 | String | - | - |
label | 表头名 | String | - | - |
index | 索引,默认从1开始计数,传入方法时,会将当前索引作为参数传过去 | String/Number/Function | - | - |
width | 宽度,可以是20也可以是20px,即使设置了此宽度,最后渲染出来的宽度还是要以原生table自适应的结果为准 | String/Number | - | - |
minWidth | 最小宽度,和el-table的逻辑不同,hl-table不会根据最小宽度去分配宽度,就是设置了最小宽度 | String/Number | - | - |
align | 对齐方式 | String | center/right/left | - |
style | 自定义样式 | String/Object | - | - |
className | 自定义class | String | - | - |
labelStyle | 自定义表头样式 | String/Object | - | - |
TableColumn插槽
插槽名 | 说明 |
---|---|
default | 自定义列的内容 作用域参数为 "{row, index}" |
header | 自定义表头的内容 |