<!--
 * @Description: file content
 * @Author: RongWei
 * @Date: 2020-06-02 14:10:54
 * @LastEditors: RongWei
 * @LastEditTime: 2020-06-03 14:46:33
--> 

#### 说明

每刻业务表格HOC组件

使用方法: MkTable(option)(WrapperComponent)
example:
```jsx static

    import {MkTable} from 'maycur-business';
    let options={};
    function WrapperComponent(){
        .....
    }
    export default MkTable(options)(WrapperComponent);

``` 

### Example

#### 普通table

```jsx
    import NormalTable from './demo/NormalTable';
    <NormalTable />
```

#### 跨页选取table

``` jsx
    import CrossPageTable from './demo/CrossPageTable';
    <CrossPageTable />
```

#### 跨页跨条件选取table

``` jsx
    import CrossFilterTable from './demo/CrossFilterTable';
    <CrossFilterTable />
```

******

#### MkTable传入的特殊props

|name|type|description|参数说明|
|:--|:--|:--|:--|
|initState|object|初始化MkTable的state中某些状态（不断添加中），当前接受selectedRowKeys，selectAble从initState中获取|主要为了解决表单构建的时候，配置默认的选中数据|

----------

#### 传入MkTable传入WrapperComponent的props

|name|type|description|参数说明|
|:--|:--|:--|:--|
|setColumns|function(columns)|传入columns参数|columns: 参考antd table中columns|
|generateTable|function(params)|生成table函数|params:{rowKey, onRow:antd table组件中属性, 详情参考antd的doc}|
|generateFilter|function({ filterConfig })|生成table的筛选状态bar||
|setDataFetchFn|function(fn)|设置dataFetch方法需要执行的函数，组件使用方可以指定自己的数据获取方式和逻辑|fn: 如果是异步操作（如后台请求），需要把结果集以resolve的方式返回，如果是同步的方式，需要return 结果集|
|dataFetch|function()|用于table的数据获取, 需要配置setDataFetchFn使用, 手动触发数据更新时调用|无参|
|setSelectAble|function(value, keepSelected=false)|设置table行是否可勾选|val:false/true; keepSelected: 设置可选后，是否需要保留已选的状态|
|resetSelectRows|function()|重置/清空所有选中状态|无参|

----------

#### setDataFetchFn

设置table数据获取的方法

|name|type|description|参数说明|
|:--|:--|:--|:--|
|fn|function|获取table中数据的方法|filters:table当前的筛选数据; <br/> pagination:table当前分页数据; <br/>sorter:table当前排序数据|

----------

#### option

|name|type|description|default|
|:--|:--|:--|:--|
|isFixHeader|boolean|是否固定表头|false|
|resizeAble|boolean|是否可拖动column的宽度|false|
|disableLoad|boolean|是否可拖动column的宽度|false|
|hidePagination|boolean|是否可拖动column的宽度|false|
|firstDisplayColumns|array|首次显示的字段dataIndex集合, 不传默认全部显示|[]|
|childrenColumnName|string|子集的name, 需要树形结构并且联动选择时和parentKey一起传入(树形结构暂时不支持跨页选取, 联动选择只支持1级和2级联动)|undefined|
|parentKey|string|父级的key（一定需要是能识别父级的唯一标识别）, 需要树形结构并且联动选择时和childrenColumnName一起传入|undefined|
|isCrossPageSelect|boolean|是否支持跨页选中项|false|
|doNotClearSelection|boolean|不自动清空选中项，如果doNotClearSelection设置为true，则isCrossPageSelect默认也生效|false|

----------

#### columns扩展的功能

> 扩展antd table中columns

|name|type|description|default|
|:--|:--|:--|:--|
|meanLess|boolean|无意义字段, 用户放置动作条等信息|false|

---

### generateTable入参说明

|name|type|description|default|
|:--|:--|:--|:--|
|rowSelection|object|传入antd-table的rowSelection属性||
|onRow|Function(record, index)|设置行属性, 对onRow中的onClick做了封装，现在传入的参数会带上table选中数据{ selectedRows, selectedRowKeys}||
|rowClickSelectable|boolean|table可勾选状态下（selectAble=true），行点击触发选中效果，但不触发rowSelection.onChange等选中事件|false|

---

#### rowSelection

#### 行的操作配置

|name|type|description|default|
|:--|:--|:--|:--|
|onSelectionChange|function|table数据选取发生后需要回调的函数, function(rowKeys, rows), 回传2个参数||
|customMaintain|Boolean|需要自己维护rowSelection||

#### 关于fix header的特殊说明

默认的mktable都是开启fix header模式，原antd的table需要指定fix header的scroll height，灵活性不足，所以重新mktable利用display flex特性，然scroll触发机制，根据用户的浏览器窗口高度决定，所以如果想要用flex特性的fixheader，需要包裹table的容器display为flex
