 ```php return [ ...... // 列表定义 'table' => [ // 树型结构列表,默认false "is_tree" => true // tree 节点为非必须, 默认pid的名称为pid, 不同时需要重写 "tree" => [ "pid" => "pid" ], // tabs 列表页分页签 'tabs' => [], // 定义渲染列表, 未定义则获取 form 中所有 'columns' => [], // 订单行操作按钮 'rowActions' => [], // 列表上方批量操作的按钮 'batchButtons' => [], // 页面上方操作按钮 'topActions' => [], ], ]; ``` ## 列定义 在`columns`中定义列表中显示的字段与表头,具体配置如下: ```php 'columns' => [ // 非必须项, 无则从form转义 '字段', // 简写模式, 直接从form配置转义 // or [ 'field' => 'mall_name', 'title' => '店铺', // 是否显示该字段,默认false 'hidden' => true, // 字段渲染规则,默认为空, 详见列渲染 'type' => '', // 是否虚拟字段,虚拟字段在查询脚手架model时,会忽略该字段 'virtual_field' => true, // 设置Popover提示信息,其中 'popover' => [ 'messages' => [ '原因:{remark}', ], 'when' => [ ['status', '=', Activity::STATUS_OFF] ] ], // 表头说明 'info' => '括号内为商家承担', // 定义该字段显示在哪些tab选项中 'depend' => [ 'tab' => [(string)Coupon::TYPE_MALL_MONEY_OFF], ], // 按字段升降查询功能 'sortable' => true, // 是否允许编辑,调用*/rowchange/:id接口 'edit' => true, // 允许编辑的条件 'when' => [ ['status', '=', Activity::STATUS_OFF] ], // 枚举值,可以options中的数据转换成Tag显示效果,https://element.eleme.cn/#/zh-CN/component/tag 'options' => [], 'enum' => [ // tag 的 type 类型, 参见 element 标签 0 => 'info', 1 => 'success', ], // 列宽设置,默认为均分模式,不支持百分比 'width': '100px', ], ], ``` ## when用法 ### 使用说明 ```php 'when' => ["field_1", ">", 1], // or 多个条件时为"与"判断 'when' => [ ["field_1", ">", 1], ["field_2", "=", 1] ] ``` ::: warning 注意 操作符支持`=`、`>`、`>=`、`<`、`<=`、`!=`、`in`、`not_in`,多个条件时为"与"判断,且注意参数的数据类型是否一致。 ::: - 可以控制行操作及批量按钮是否显示; - 可以控制批量操作的过滤掉不满足条件的行; ``` 'batchButtons' => [ [ ..... // 控制根据条件显示,这里的条件字段来源为queryString 'when'=> [ [字段, 操作符, 值] ], // 为区别控制显示的when关键字,这里使用`selectFilter` 'selectFilter' => [ [字段, 操作符, 值] ] ] ] ``` - 控制列表行的某一列的编辑状态 - 控制列渲染的popover模式下的启用状态 ### 查看源码 ```javascript export function whereFilter(obj, where, fakeKey) { if (!where) { return true } let ret = true let real_where = where if (where[0] && typeof where[0] === 'string') { real_where = [where] } for (let i = 0; i < real_where.length; i++) { const item = real_where[i] const key = fakeKey ? item[0].replace('.', '-') : item[0] if (item[1] === '=') { ret = obj[key] === item[2] } if (item[1] === '>') { ret = obj[key] > item[2] } if (item[1] === '<') { ret = obj[key] < item[2] } if (item[1] === '>=') { ret = obj[key] >= item[2] } if (item[1] === '<=') { ret = obj[key] <= item[2] } if (item[1] === '!=') { ret = obj[key] !== item[2] } if (item[1] === 'in') { ret = item[2].indexOf(obj[key]) !== -1 } if (item[1] === 'not_in') { ret = item[2].indexOf(obj[key]) === -1 } if (!ret) { return false } } return ret } ``` ## 列渲染 渲染类型: - `number`、`switch`、`input` - `icon`、`image`、`extrude`、`tag`、`link`、`iframe`、`html` ### number **渲染条件**: `'edit' => true` 且 满足when中定义的条件 **用法**: ```php 'type' => 'number', 'edit' => true`, 'when' => [ ['status', '=', Activity::STATUS_OFF] ], ``` ### switch **渲染条件**: `'edit' => true` 且 满足when中定义的条件 **用法**: ```php 'type' => 'switch', 'edit' => true`, 'when' => [ ['status', '=', Activity::STATUS_OFF] ], ``` ### input **渲染条件**: `'edit' => true` 且 满足when中定义的条件 **用法**: ```php 'edit' => true`, 'when' => [ ['status', '=', Activity::STATUS_OFF] ], ``` ::: warning 注意 目前行编辑的表单组件只支持以上三种类型,且不能定义该组件的props ::: ### icon **渲染条件**: `'type' => 'icon'` **效果展示**: ### image **渲染条件**: `'type' => 'image'`,数据为数组时可以渲染多张图片 **效果展示**: #### extrude **用法**: ```php [ "field" => "field_1", "type" => 'extrude', "render" => function($field_value, $row) { // return "<优惠券|balck|yellow>*****"; 单个 // or 支持多个 return [ "<优惠券{replace_field}|balck|yellow>*****{replace_field}" ]; // 格式 <文字|背景色|文字色>, 支持前端变量替换 } ] ``` **效果展示**: ### tag **用法**: ```php [ "field" => "field_1", "options" => [ 0 => '禁用', 1 => '启用', ], "enum" => [ // tag 样式, 参见 https://element.eleme.io/#/zh-CN/component/tag 0 => 'info', 1 => 'success' ] ] ``` **效果展示**: ### link **用法**: ```php [ "field" => "field_1", "href" => "http://hyperfadmin.com/page/{id}" ] // or [ "field" => "field_1", "href" => [ "href" => "http://hyperfadmin.com/page/{id}", "type" => "primary", "target" => "_blank" ] ] ``` **效果展示**: ### iframe **用法**: ```php [ 'field' => 'state_info', 'title' => '运行状态', 'type' => 'iframe', // 列以button形式显示,style控制按钮type, [info|success|primary|danger|warning] 'style' => 'primary', // 弹出窗口宽度,默认500px 'width' => '500px', // 弹出窗口高度,默认600px 'height' => '600px' "render" => function($field_value, $row) { return "url";// 返回 iframe的src路径 } ] ``` ### html **用法**: ```php [ 'field' => 'state_info', 'title' => '运行状态', 'type' => 'html', "render" => function($field_value, $row) { return '
xxxxxxx
xxxxx