Table
简易介绍
Table 表格组件,用于展示结构化数据,支持树形数据、选择功能、自定义样式等。 可以使用 <MYTable></MYTable> 来实现一个表格组件。支持通过props.columns或子组件<MYTableColumn>定义列结构,自定义内容需使用命名插槽。
基础表格
基础表格
使用 columns 和 data 属性定义表格结构和数据。
| 姓名 | 年龄 | 地址 |
|---|---|---|
| 张三 | 25 | 北京市朝阳区 |
| 李四 | 30 | 上海市浦东新区 |
| 王五 | 28 | 广州市天河区 |
展开代码
使用插槽定义列
使用插槽定义列
使用 MYTableColumn 组件和插槽自定义列内容。
| 姓名 | 年龄 | 地址 | 状态 |
|---|---|---|---|
| 张三 | 25 | 北京市朝阳区 | 成功 |
| 李四 | 30 | 上海市浦东新区 | 失败 |
| 王五 | 28 | 广州市天河区 | 成功 |
展开代码
选择功能
选择功能
使用 type='selection' 列启用行选择功能
| 姓名 | 年龄 | 地址 | |
|---|---|---|---|
| 张三 | 25 | 北京市朝阳区 | |
| 李四 | 30 | 上海市浦东新区 | |
| 王五 | 28 | 广州市天河区 |
已选择:
展开代码
树形数据
树形数据
使用树形结构数据展示层级关系
| 部门 | 负责人 | 人数 |
|---|---|---|
| 技术部 | 张工 | 20 |
| 市场部 | 赵总 | 15 |
展开代码
斑马纹表格
斑马纹表格
使用 stripe 属性添加斑马纹样式
| 姓名 | 部门 | 职位 | 薪资 |
|---|---|---|---|
| 张三 | 技术部 | 前端工程师 | 15000 |
| 李四 | 技术部 | 后端工程师 | 16000 |
| 王五 | 市场部 | 市场经理 | 14000 |
| 赵六 | 人事部 | HR | 12000 |
展开代码
列对齐
列对齐
使用 align、headerAlign、bodyAlign 控制列内容对齐方式
| 姓名(左对齐) | 年龄(居中) | 薪资(右对齐) | 奖金 |
|---|---|---|---|
| 张三 | 25 | 15000 | 5000 |
| 李四 | 30 | 16000 | 6000 |
| 王五 | 28 | 14000 | 4500 |
展开代码
带分页的表格
带分页的表格
使用分页插槽实现表格分页功能
| 姓名 | 年龄 | 地址 |
|---|---|---|
| 张三 | 25 | 北京市朝阳区 |
| 李四 | 30 | 上海市浦东新区 |
展开代码
API 参考
Table Props
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| data | 表格数据 | Array | — | [] |
| columns | 列配置 | TableColumnProps[] | — | [] |
| width | 表格宽度 | string | — | '' |
| height | 表格高度 | string | — | '' |
| headerBackgroundColor | 表头背景色 | string | 支持16进制颜色或单词颜色 | '' |
| headerTextColor | 表头文字颜色 | string | 支持16进制颜色或单词颜色 | '' |
| stripe | 斑马纹颜色 | string | 支持16进制颜色或单词颜色 | '' |
| borderColor | 边框颜色 | string | 支持16进制颜色或单词颜色 | '' |
| bodyBackgroundColor | 表格体背景色 | string | 支持16进制颜色或单词颜色 | '' |
| bodyTextColor | 表格体文字颜色 | string | 支持16进制颜色或单词颜色 | '' |
| rowKey | 行数据的 Key | string | — | 'id' |
| treeProps | 树形结构的配置 | object | — | { children: 'children', hasChildren: 'hasChildren' } |
| indent | 树形数据缩进 | number | — | 16 |
| align | 表格内容对齐方式 | string | left/center/right | 'left' |
| headerAlign | 表头对齐方式 | string | left/center/right | '' |
| bodyAlign | 表格体对齐方式 | string | left/center/right | '' |
TableColumn Props
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| prop | 列对应数据的 key | string | — | — |
| label | 列标题 | string | — | undefined |
| width | 列宽度 | string | — | '' |
| type | 列类型 | string | selection | '' |
| align | 列内容对齐方式 | string | left/center/right | '' |
| headerAlign | 列表头对齐方式 | string | left/center/right | '' |
| bodyAlign | 列内容对齐方式 | string | left/center/right | '' |
Table Events
| 事件名 | 说明 | 参数 |
|---|---|---|
| selection-change | 当选择项发生变化时触发 | selection: any[] |
| update:modelValue | 选中的行数据变化时触发 | value: any[] |
类型定义
typescript
interface TableColumnProps {
className: string;
prop: string;
label?: string;
width?: string;
height?: string;
fixed?: 'left' | 'right';
sortable?: boolean;
filterable?: boolean;
filters?: Array<{ text: string; value: string | number }>;
scopedSlot?: string;
children?: TableColumnProps[];
colspan?: number;
rowspan?: number;
type?: string;
align?: 'left' | 'center' | 'right';
headerAlign?: 'left' | 'center' | 'right';
bodyAlign?: 'left' | 'center' | 'right';
}
interface TableProps {
data?: Record<string, unknown>[];
modelValue?: string;
columns?: TableColumnProps[];
width?: string;
height?: string;
headerColor?: string;
headerTextColor?: string;
stripe?: string;
borderColor?: string;
bodyBackgroundColor?: string;
bodyTextColor?: string;
[key: string]: unknown;
}