数据表格

表格参数生成助手类 - 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=tagswitchtags 时,替换值的内容。
  • 示例:[1 => '开', 0 => '关']
  • 返回:当前对象实例,以便进行链式调用。

设置公共搜索操作符(旧版)

public function operator(false|string $operator): Column
  • 参数 $operator:设置公共搜索的操作符,可选值:
    • false:关闭本字段公共搜索
    • =<>>>=<<=
    • LIKENOT LIKE
    • INNOT IN
    • RANGENOT RANGE
    • NULLNOT NULL
    • FIND_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=tagswitch 时公共搜索也会渲染为下拉,数字会渲染为范围筛选,时间渲染为时间选择器等
  • 返回:当前对象实例,以便进行链式调用。

设置公共搜索插槽名称

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
];

通过上述方法组合,可以轻松地构建复杂的表格列配置,并将其传递给表格组件以动态生成相应的列结构。