数据表格
表格参数生成助手类 - Column
概述
app\common\services\table\Column 类是一个用于构建表格列配置的对象,通过 Fluent Interface 设计模式实现链式调用,方便地为表格列定义各种属性和渲染器。
基础用法
示例创建一个列实例
use app\common\services\table\Column;
$column = Column::make()
->prop('test_prop')
->label('测试字段')
->render('tag')
->effect('dark')
->size('small')
->slotName('custom_slot')
->create();
内置按钮
Column类提供了几种预定义的按钮配置:
edit- 编辑按钮del- 删除按钮sort- 排序按钮
这些按钮可以通过buttons方法直接使用。
方法说明
创建新的列实例
public static function make(): self
- 返回:一个新的
Column实例。
设置字段名(数据库字段)
public function prop(string $prop): Column
- 参数
$prop:数据库字段名称。 - 返回:当前对象实例,以便进行链式调用。
设置显示标签
public function label(string $label): Column
- 参数
$label:在表格中显示的列标题或标签。 - 说明:设置标签后,如果未设置搜索占位符,将自动设置为"搜索+标签名"
- 返回:当前对象实例,以便进行链式调用。
设置是否显示列
public function show(bool $show = true): Column
- 参数
$show:默认为true,表示该列是否在表格中显示。 - 返回:当前对象实例,以便进行链式调用。
设置列宽度
public function width(string $width = '100px'): Column
- 参数
$width:列的宽度,默认为'100px'。 - 返回:当前对象实例,以便进行链式调用。
设置渲染器类型
public function render(string $render): Column
- 参数
$render:指定列的渲染器类型,支持多种预设值如:icon: 显示图标switch: 显示开关控件image: 显示单个图片images: 显示图片列表tag: 显示标签tags: 显示标签列表url: 显示链接datetime: 显示日期时间buttons: 显示按钮组color: 显示颜色customRender: 使用自定义渲染函数slot: 使用插槽
- 返回:当前对象实例,以便进行链式调用。
设置按钮组
public function buttons(array $buttons): Column
- 参数
$buttons:一组按钮配置数组,可以使用预定义按钮名称('edit', 'del', 'sort')或自定义按钮配置。 - 示例:
->buttons(['edit', 'del', [ 'render' => 'tipButton', 'name' => 'preview', 'title' => '预览', 'icon' => 'View', 'type' => 'info' ]]) - 返回:当前对象实例,以便进行链式调用。
设置是否允许导出
public function export($export = true): Column
- 参数
$export:默认为true,表示该列是否允许导出。 - 返回:当前对象实例,以便进行链式调用。
设置 tag 主题
public function effect(string $effect): Column
- 参数
$effect:当render=tag时,设置 tag 的主题样式,可选值:plain:朴素dark:深色light:浅色
- 返回:当前对象实例,以便进行链式调用。
设置 tag 尺寸
public function size(string $size): Column
- 参数
$size:当render=tag时,设置 tag 的尺寸大小,可选值:default:默认small:小号large:大号
- 返回:当前对象实例,以便进行链式调用。
设置自定义 tag 样式
public function custom(array $custom): Column
- 参数
$custom:当render=tag时,设置不同值对应的 tag 样式。 - 示例:
['0' => 'success', '-1' => 'error'] - 返回:当前对象实例,以便进行链式调用。
设置自定义 slot 名称
public function slotName(bool|string $slotName = true): Column
- 参数
$slotName:如果为字符串,则直接使用该名称作为插槽名称;若为true,则默认使用prop_slot作为插槽名称。 - 示例:
<template #name_slot="{ row }"> {{ row.name }} </template> - 返回:当前对象实例,以便进行链式调用。
设置链接打开方式
public function target(string|bool $target = '_blank'): Column
- 参数
$target:当render=url时,设置链接的打开方式,可选值:_blank:新窗口打开(默认)_self:当前窗口打开copy:点击复制链接false:不跳转
- 返回:当前对象实例,以便进行链式调用。
设置日期时间格式
public function timeFormat(string $timeFormat): Column
- 参数
$timeFormat:当render=datetime时,设置日期时间的格式化方式,如yyyy-mm-dd hh:MM:ss。 - 返回:当前对象实例,以便进行链式调用。
设置默认值
public function default(array|bool|float|int|string $default): Column
- 参数
$default:当获取的值为空或者不存在时显示的默认值。 - 返回:当前对象实例,以便进行链式调用。
设置值替换
public function replaceValue(array $replaceValue): Column
- 参数
$replaceValue:当render=tag、switch、tags时,替换值的内容。 - 示例:
[1 => '开', 0 => '关'] - 返回:当前对象实例,以便进行链式调用。
设置公共搜索操作符(旧版)
public function operator(false|string $operator): Column
- 参数
$operator:设置公共搜索的操作符,可选值:false:关闭本字段公共搜索=、<>、>、>=、<、<=LIKE、NOT LIKEIN、NOT INRANGE、NOT RANGENULL、NOT NULLFIND_IN_SET
- 返回:当前对象实例,以便进行链式调用。
设置公共搜索操作符(新版)
public function searchOperator(false|string $operator): Column
- 参数
$operator:同operator方法,设置公共搜索的操作符。 - 返回:当前对象实例,以便进行链式调用。
设置搜索框提示文本
public function operatorPlaceholder(string $operatorPlaceholder): Column
- 参数
$operatorPlaceholder:设置通用搜索框的占位符提示文本。 - 返回:当前对象实例,以便进行链式调用。
设置公共搜索渲染方式
public function comSearchRender($comSearchRender): Column
- 参数
$comSearchRender:设置公共搜索的渲染方式,可选值:remoteSelect:远程选择器select:下拉选择器date:日期选择器customRender:自定义渲染slot:使用插槽
- 说明:当
render=tag、switch时公共搜索也会渲染为下拉,数字会渲染为范围筛选,时间渲染为时间选择器等 - 返回:当前对象实例,以便进行链式调用。
设置公共搜索插槽名称
public function comSearchSlotName($comSearchSlotName): Column
- 参数
$comSearchSlotName:设置公共搜索自定义渲染为 slot 时,slot 的名称。 - 说明:调用此方法会自动将
comSearchRender设置为slot。 - 返回:当前对象实例,以便进行链式调用。
设置公共搜索组件名称
public function comSearchComponent($comSearchComponent): Column
- 参数
$comSearchComponent:设置公共搜索自定义搜索组件名。 - 说明:调用此方法会自动将
comSearchRender设置为customRender。 - 返回:当前对象实例,以便进行链式调用。
设置公共搜索组件属性
public function comSearchProps(array $comSearchProps): Column
- 参数
$comSearchProps:设置公共搜索自定义组件的 Props。 - 返回:当前对象实例,以便进行链式调用。
设置公共搜索标签
public function comSearchLabel(string|false $comSearchLabel = false): Column
- 参数
$comSearchLabel:设置搜索的标签,为false则不显示。 - 返回:当前对象实例,以便进行链式调用。
设置远程搜索地址
public function remote($remote): Column
- 参数
$remote:设置 Select 的远程搜索地址。 - 返回:当前对象实例,以便进行链式调用。
设置其他属性
public function other($key, $value): Column
- 参数:
$key:属性名$value:属性值
- 返回:当前对象实例,以便进行链式调用。
批量设置其他属性
public function others($column): Column
- 参数
$column:包含多个属性的数组,将合并到当前列配置中。 - 返回:当前对象实例,以便进行链式调用。
创建最终列配置
public function create(): array
- 返回:包含所有已设置属性的数组,即完整的列配置信息。
按钮配置示例
以下是一个按钮配置的示例:
$button = [
'render' => 'tipButton', // 按钮类型:basicButton 普通按钮, tipButton 带提示按钮, confirmButton 带确认框按钮
'name' => 'testButton', // 按钮触发event名,配合前端onClickButton使用
'title' => '测试按钮', // 提示文本
'text' => '测试', // 按钮文本
'type' => 'warning', // 按钮类型:default、primary、success、info、warning、danger
'icon' => 'CreditCard', // 按钮图标,支持ElementPlus、Vant、Iconify
'class' => 'table-row-share', // 按钮CSS类名
'attr' => [ // 按钮的属性参数
'style' => 'font-size: 12px;'
],
'disabledTip' => false, // 是否禁用Tip
];
通过上述方法组合,可以轻松地构建复杂的表格列配置,并将其传递给表格组件以动态生成相应的列结构。
