🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# table列表 虽然layui已经提供了很多方便的方法,但是还是不够简便,目前系统对layui table模块进行了重新封装,并兼容所有的layui table的方法。 使得开发起来更加得心应手,减轻工作量。 # `init`初始化配置 建议在此处统一配置table容器以及相关的链接地址。另外还可以自己进行扩展属性。 > 初始化的参数有 | 参数 | 说明 | 类型 | 是否必填 | 备注 | | --- | --- | --- | --- | --- | | table\_elem | table容器或者dom | string/dom | 是 | | | table\_render\_id | 容器唯一 id | string | 否 | | | index\_url | 列表接口 | string | 是 | | | add\_url | 添加接口 | string | 否 | 需用添加功能必填 | | edit\_url | 编辑接口 | string | 否 | 需用编辑功能必填 | | delete\_url | 删除接口 | string | 否 | 需用删除功能必填 | | export\_url | 导出接口 | string | 否 | 需用导出功能必填 | | modify\_url | 属性修改接口 | string | 否 | 需用属性修改功能必填(例如:状态的切换) | > 实例,下方`stock_url`就是扩展属性 ~~~ var init = { table_elem: '#currentTable', table_render_id: 'currentTableRenderId', index_url: 'mall.goods/index', add_url: 'mall.goods/add', edit_url: 'mall.goods/edit', delete_url: 'mall.goods/delete', export_url: 'mall.goods/export', modify_url: 'mall.goods/modify', stock_url: 'mall.goods/stock', }; ~~~ # 表格实例化 表格实例化方法为`ea.table.render()`, 兼容layui table的所有功能,另外还扩展了一些新的功能。 # 扩展表格参数 这些是基于layui的table的进行扩展的基础参数,如需查看其他的参数,请去layui官网查看。 | 参数 | 说明 | 类型 | 是否必填 | 默认值 | 备注 | | --- | --- | --- | --- | --- | --- | | init | `init`初始化配置 | object | 是 | | 一般情况下,请传入上方配置好的初始化参数 | | search | 是否开启搜索功能 | bool | 否 | true | 开启会自动根据`列`生成搜索表单 | | modifyReload | 修改属性时是否刷新表格 | bool | 否 | true | | | toolbar | table操作栏 | object | 否 | \['refresh','add','delete','export'\] | 除了这些内置的,还可以自己进行扩展 | > 代码示例 ~~~ ea.table.render({ init: init, toolbar: [...表格toolbar...], cols: [...请参考下方列参数...], }); ~~~ # 表格toolbar操作栏 * 默认内置有四种toolbar操作方法,分别是: * `refresh` * `add` * `delete` * `export` * 另外可以根据下方提供的参数进行自定义扩展 | 参数 | 说明 | 类型 | 是否必填 | 默认值 | 备注 | | --- | --- | --- | --- | --- | --- | | class | 样式信息 | string | 否 | | | | icon | 图标信息 | string | 否 | | 在行操作里面,不建议使用图标 | | title | 提示信息 | string | 否 | 为空则读取`text`属性 | | | text | 文本信息 | string | 否 | 为空则读取`title`属性 | | | method | 执行方式 | string | 否 | open | 可用值,请参考下方参数说明 | | url | 请求链接 | string | 是 | | | | auth | 权限规则 | string | 是 | | 权限规则,具体请参考配置`auth权限验证`模块 | | checkbox | 是否多选 | bool | 否 | false | 如果为true, 不管是弹出层还是直接请求, 请求时会携带上勾选的id值 | | extend | 扩展属性 | string | 否 | | 例如弹出层全屏操作,可以加上:`data-full="true"` | > 相关参数说明 * `method`执行方式: * `open`弹出层打开 * `request`直接请求 > 示例 ~~~ toolbar: ['refresh', [{ text: '添加', url: init.add_url, method: 'open', auth: 'add', class: 'layui-btn layui-btn-normal layui-btn-sm', icon: 'fa fa-plus ', extend: 'data-full="true"', }], 'delete', 'export'], ~~~ # 扩展列参数 列参数完美兼容layui的table所有列参数,具体请查看layui官网。 # 搜索表单生成器 提供快捷搜索表单生成器,根据table表格初始化时的列参数进行动态生成。 > 下方是相关的表格列参数 | 参数 | 说明 | 类型 | 是否必填 | 默认值 | 备注 | | --- | --- | --- | --- | --- | --- | | search | 搜索类型 | string/bool | 否 | true | 可用值,请参考下方参数说明 | | searchOp | 搜索条件 | string | 否 | %\*% | 可用值,请参考下方参数说明 | | searchTip | 搜索提示语 | string | 否 | 默认获取`title`参数值自动生成 | | | searchValue | 表单初始化值 | string | 否 | | | | selectList | 下拉列表值 | object | 否 | | 需要`search`参数等于`select`时才生效 | | fieldAlias | 字段别名 | string | 否 | 与`field`参数相等 | 某些特殊情况下才需要,正常用不上 | > 相关参数说明 * `search`搜索类型: * `false`关闭搜索 * `true`开启搜索 * `select`下拉选择 * `range`时间范围 * `time`时间格式 * `searchOp`搜索条件: * `=`精确搜索 * `%*%`模糊搜索 * `*%`右匹配模糊搜索 * `%*`左匹配模糊搜索 * `range`范围搜索 > 代码示例 ~~~ cols: [[ {type: "checkbox"}, {field: 'id', width: 80, title: 'ID'}, {field: 'sort', width: 80, title: '排序', edit: 'text'}, {field: 'title', minWidth: 80, title: '商品名称'}, {field: 'logo', minWidth: 80, title: '分类图片', search: false, templet: ea.table.image}, {field: 'status', title: '状态', width: 85, selectList: {0: '禁用', 1: '启用'}, templet: ea.table.switch}, {field: 'create_time', minWidth: 80, title: '创建时间', search: 'range'}, ]], ~~~ # 列operat操作栏 * 默认内置有两种operat操作方法,分别是: * `edit` * `delete` * 另外可以根据下方提供的参数进行自定义扩展 | 参数 | 说明 | 类型 | 是否必填 | 默认值 | 备注 | | --- | --- | --- | --- | --- | --- | | class | 样式信息 | string | 否 | | | | icon | 图标信息 | string | 否 | | 在行操作里面,不建议使用图标 | | title | 提示信息 | string | 否 | 为空则读取`text`属性 | | | text | 文本信息 | string | 否 | 为空则读取`title`属性 | | | method | 执行方式 | string | 否 | open | 可用值,请参考下方参数说明 | | url | 请求链接 | string | 是 | | | | auth | 权限规则 | string | 是 | | 权限规则,具体请参考配置`auth权限验证`模块 | | field | 绑定行字段 | string | 否 | id | 会自动根据此字段生成链接后缀 | | extend | 扩展属性 | string | 否 | | 例如弹出层全屏操作,可以加上:`data-full="true"` | > 相关参数说明 * `method`执行方式: * `open`弹出层打开 * `request`直接请求 > 示例 ~~~ operat: [ [{ text: '编辑', url: init.edit_url, method: 'open', auth: 'edit', class: 'layui-btn layui-btn-xs layui-btn-success', extend: 'data-full="true"', }, { text: '入库', url: init.stock_url, method: 'open', auth: 'stock', class: 'layui-btn layui-btn-xs layui-btn-normal', }], 'delete'] ~~~ # 列内置templet方法 | 方法 | 说明 | 备注 | | --- | --- | --- | | ea.table.list | 根据行的`selectList`返回对应列表值 | 一般类型之类的会用到 | | ea.table.image | 显示图片 | 行参数`imageHeight`是控制图片的高度 | | ea.table.url | 格式化显示链接 | | | ea.table.switch | 生成开关组件 | | | ea.table.price | 格式化为价格 | | | ea.table.percent | 格式化为百分比 | | | ea.table.icon | 显示图标 | | | ea.table.value | 格式化数据 | 多层对象数据的显示 | | ea.table.tool | 列操作栏 | 自动生成列操作栏 | > 示例 ~~~ cols: [[ {field: 'head_img', minWidth: 80, title: '头像', templet: ea.table.image}, {field: 'status', title: '状态', width: 85, search: 'select', selectList: {0: '禁用', 1: '启用'}, templet: ea.table.switch}, {width: 250, title: '操作', templet: ea.table.tool} ]], ~~~ # 完整例子 ~~~ define(["jquery", "easy-admin"], function ($, ea) { var init = { table_elem: '#currentTable', table_render_id: 'currentTableRenderId', index_url: 'mall.goods/index', add_url: 'mall.goods/add', edit_url: 'mall.goods/edit', delete_url: 'mall.goods/delete', export_url: 'mall.goods/export', modify_url: 'mall.goods/modify', stock_url: 'mall.goods/stock', }; var Controller = { index: function () { ea.table.render({ init: init, toolbar: ['refresh', [{ text: '添加', url: init.add_url, method: 'open', auth: 'add', class: 'layui-btn layui-btn-normal layui-btn-sm', icon: 'fa fa-plus ', extend: 'data-full="true"', }], 'delete', 'export'], cols: [[ {type: "checkbox"}, {field: 'id', width: 80, title: 'ID'}, {field: 'sort', width: 80, title: '排序', edit: 'text'}, {field: 'cate.title', minWidth: 80, title: '商品分类'}, {field: 'title', minWidth: 80, title: '商品名称'}, {field: 'logo', minWidth: 80, title: '分类图片', search: false, templet: ea.table.image}, {field: 'market_price', width: 100, title: '市场价', templet: ea.table.price}, {field: 'discount_price', width: 100, title: '折扣价', templet: ea.table.price}, {field: 'total_stock', width: 100, title: '库存统计'}, {field: 'stock', width: 100, title: '剩余库存'}, {field: 'virtual_sales', width: 100, title: '虚拟销量'}, {field: 'sales', width: 80, title: '销量'}, {field: 'status', title: '状态', width: 85, selectList: {0: '禁用', 1: '启用'}, templet: ea.table.switch}, {field: 'create_time', minWidth: 80, title: '创建时间', search: 'range'}, { width: 250, title: '操作', templet: ea.table.tool, operat: [ [{ text: '编辑', url: init.edit_url, method: 'open', auth: 'edit', class: 'layui-btn layui-btn-xs layui-btn-success', extend: 'data-full="true"', }, { text: '入库', url: init.stock_url, method: 'open', auth: 'stock', class: 'layui-btn layui-btn-xs layui-btn-normal', }], 'delete'] } ]], }); ea.listen(); }, add: function () { ea.listen(); }, edit: function () { ea.listen(); }, stock: function () { ea.listen(); }, }; return Controller; }); ~~~