简介
状态组件用于在表格列中展示带有颜色标识的状态信息,支持自定义状态映射,适用于展示订单状态、审核状态等场景。
用法示例
基础用法
use plugin\xbCode\builder\Builder;
// 创建表格
Builder::crud(function($builder) {
// 添加状态列
$builder->addColumnStatus('status', '状态', [
0 => '待审核',
1 => '已通过',
2 => '已拒绝'
]);
});
自定义配置
Builder::crud(function($builder) {
// 使用回调函数自定义配置
$builder->addColumnStatus('order_status', '订单状态', [
'pending' => '待支付',
'paid' => '已支付',
'shipped' => '已发货',
'completed' => '已完成',
'cancelled' => '已取消'
], function($component) {
$component->width(120);
$component->remark('订单当前状态');
});
// 使用数组配置
$builder->addColumnStatus('audit_status', '审核状态', [
0 => '待审核',
1 => '审核中',
2 => '已通过',
3 => '已拒绝'
], [
'width' => 100,
'fixed' => 'left'
]);
});
复杂状态映射
Builder::crud(function($builder) {
// 数字状态映射
$builder->addColumnStatus('status', '状态', [
0 => '禁用',
1 => '启用',
2 => '维护中'
]);
// 字符串状态映射
$builder->addColumnStatus('payment_status', '支付状态', [
'unpaid' => '未支付',
'paying' => '支付中',
'paid' => '已支付',
'refunded' => '已退款'
]);
});
组件参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| name | string | 必填 | 字段名称,对应数据库字段 |
| label | string | 必填 | 列标题,显示在表格头部 |
| maps | array | 必填 | 状态映射数组,键为状态值,值为显示文本 |
| option | callable|array | [] | 配置选项,可以是回调函数或数组 |
状态组件属性
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| type | string | mapping | 组件类型,固定为 'mapping' |
| align | string | center | 水平对齐方式(默认居中) |
| vAlign | string | middle | 垂直对齐方式(默认居中) |
| width | int|string | - | 列宽度 |
| fixed | string | - | 固定列位置:'left'、'right' |
| remark | string | - | 列提示信息 |
| className | string | - | CSS 类名 |
| map | array | - | 状态映射配置 |
状态映射配置(map)
状态组件使用特殊的映射配置来展示不同状态:
[
'*' => [
'type' => 'status',
'source' => $maps // 状态映射数组
]
]
映射数组支持的格式:
- 数字键:
[0 => '状态文本', 1 => '状态文本'] - 字符串键:
['key1' => '状态文本', 'key2' => '状态文本']
使用场景
- 订单状态展示(待支付、已支付、已发货等)
- 审核状态展示(待审核、已通过、已拒绝)
- 用户状态展示(正常、禁用、待激活)
- 支付状态展示(未支付、已支付、已退款)
- 物流状态展示(待发货、运输中、已签收)
- 任务状态展示(待处理、进行中、已完成)
完整示例
use plugin\xbCode\builder\Builder;
Builder::crud(function($builder) {
// 设置API接口
$builder->setUrl('/api/orders');
// ID列
$builder->addColumn('id', 'ID')->width(80);
// 订单号
$builder->addColumn('order_sn', '订单号')->width(180);
// 支付状态
$builder->addColumnStatus('pay_status', '支付状态', [
0 => '未支付',
1 => '已支付',
2 => '已退款'
], function($component) {
$component->width(100);
});
// 订单状态
$builder->addColumnStatus('order_status', '订单状态', [
'pending' => '待处理',
'processing' => '处理中',
'completed' => '已完成',
'cancelled' => '已取消'
], [
'width' => 100,
'remark' => '当前订单处理状态'
]);
// 创建时间
$builder->addColumnDateTime('create_time', '创建时间')->width(160);
});
注意事项
maps参数是必填的,必须提供状态映射数组- 状态映射的键要与数据库中存储的值对应
- 组件会自动根据状态值显示对应的文本
- 默认居中对齐显示
- 支持数字和字符串类型的状态值
- 建议为常用状态组合设置合适的宽度
- 可通过
remark属性添加列提示信息 - 状态文本会自动渲染为带颜色的标签样式