## 表格组件 + `ht-table`[表格组件](#1) - `ht-table-search-panel`[高级搜索面板](#2) - `ht-table-search-field`[高级搜索字段](#3) - `ht-table-column`[表格的列](#4) ## 1.表格组件 表格组件的代码如下所示: ```html ``` ### 属性说明 |属性|类型|默认值|说明| |:---|:---|:---|:---| |data|array|-|表格的数据,格式为数组| |page-result|object|`{ page: 1, pageSize: 50, total: 0 }`|分页对象,`page`表示当前页,`pageSize`表示每页条数,`total`表示总数| |page-sizes|Array|[10, 20, 50, 100, 200, 300, 500]|每页条数下拉可选项| |default-querys|Array|[]|默认查询条件,group:"defaultQueryGroup",operation: "EQUAL",relation: "AND" 为默认值 :default-querys="[{property:'account',value:'lisi'}]" :default-querys="[{property:'account',value:'lisi',operation: "LIKE" }]" | |default-sorter|Array|[]|默认排序规则,如果设置了默认排序的列,该列不支持更改排序规则,只能使用默认的排序规则 direction 支持DESC 和 ASC :default-sorter="[{direction: 'DESC',property: 'name'}]" | |selectable|boolean|true|表示第一列是否显示复选框| |quick-search-props|string/array|-|快速搜索,格式为`string`时提供逗号分割的任意多个属性`"name,account,email"`,而且这些属性必须与表格的列中`prop`能够对应;格式为`array`时为`[{prop:"name",label:"姓名"},{prop:"u.account_",label:"账号"},{prop:"status",label:"状态",operation:"EQUAL",numType: true}]`的格式,此时`prop`可以不对应表格的列,`operation`默认值为`"LIKE"`, `numType`是否转换为数值类型默认为`false`。| |debounce|number|800|快速搜索中,用户输入搜索内容时停顿时间超过这个时间(单位:毫秒)即开始执行搜索操作。| |show-export|boolean|true|是否显示导出数据的按钮| |show-custom-column|boolean|true|是否显示自定义显示列的按钮| |nopagination|boolean|false|false 显示分页组件 true 不显示分页组件 | |filterSelectable|Function|-|仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选 |searchBtnStyle|string|-|高级搜索按钮样式| |showAdvancedSearchText|string|基础搜索|收起高级搜索按钮文本| |hideAdvancedSearchText|string|高级搜索|打开高级搜索按钮文本| ### 方法说明 |方法|说明| |:---|:---| |load(doNotResetPage)|触发查询,参数`doNotResetPage`不传或者传`false`时,会将页码重置为第一页来查询,传`true`时,会按照当前页码来查询。| ### 事件说明 |事件|说明|参数| |:---|:---|:---| |load|表格加载数据时会触发的事件|param| |row-click|当用户点击某一行数据时触发的事件|row,column,event| |row-dblclick|当用户双击某一行数据时触发的事件|row,column,event| |select|当用户手动勾选数据行的 Checkbox 时触发的事件(要获取当前表格所选中的数据,可以通过`this.refs.table.selection`获取)|selection,row| |select-all|当用户手动勾选全选 Checkbox 时触发的事件|selection| |sort-change|当用户执行排序操作时触发的事件|column| |filter-change|当用户选择对某一列进行筛选时触发的事件|prop| `load`事件中的`param`参数,格式如下: ```javascript { pageBean: { page: 1, pageSize: 50 }, sorter: [ {property: "age", direction: "ASC"} ], querys: [ {property: "name", operation: "LIKE", value: "", group: "filter", relation: "AND"}, {property: "account", operation: "LIKE", value: "", group: "filter", relation: "AND"} ], groupRelation: "AND" } ``` 以上`param`的各项参数说明如下: + `pageBean`分页对象,`page`为当前页码,`pageSize`为每一页的条数; - `sorter`排序对象,`property`为要排序的字段,`direction`为排序的方向,可选值为:`ASC`,`DESC`; - `querys`查询对象,查询对象中各个参数说明如下: * `property`为查询字段; * `value`为参数的值; * `group`为查询条件所属分组,分组名相同的多个条件会组合为一个查询分组; * `relation`为当前分组中多个条件之间的组合关系,可选值有`AND`,`OR`,在同一组中,只有第一个查询条件中的`relation`生效且整组都以这个关系来组合; * `operation`为查询操作类型,可选值有: 1. `EQUAL`等于 2. `EQUAL_IGNORE_CASE`忽略大小写等于 2. `LESS`小于 2. `GREAT`大于 2. `LESS_EQUAL`小于等于 2. `GREAT_EQUAL`大于等于 2. `NOT_EQUAL`不等于 2. `LIKE`类似 2. `LEFT_LIKE`左类似 2. `RIGHT_LIKE`右类似 2. `IS_NULL`为空 2. `NOTNULL`不为空 2. `IN`在集合中 2. `BETWEEN`介于 - `groupRelation`多组查询条件之间的组合关系,可选值:`AND`,`OR`。 ### 表格高度自适应 + 表格在渲染时会自适应高度,按照给定的容器100%填充整个容器高度。但是可能在渲染时容器高度未最终确定,此时只需要触发`$root.$emit("resize")`事件,则表格会再次自适应高度。 - 另外因为Vue单页面的特殊性,`window.onresize`事件只能被监听一次,而在页面调整尺寸时,表格也需要自适应高度,所以此时也需要通过`$root.$emit("resize")`事件来触发表格自适应高度。 > 我们建议在每个项目的App.vue组件中的`mounted()`中统一监听`window`的`onresize`事件,然后以`$root.$emit("resize")`来发送该事件。 ## 2.高级搜索面板 如下面的代码所示,高级搜索面板对应的组件为`ht-table-search-panel`,因为该搜索面板要出现在表格中的特定位置,所以我们以插槽`