npm package: @gdyfe/table
Description: ``` yarn add @gdyfe/table ```
Latest version: 1.1.2

# @gdyfe/table

## Installation

```
yarn add @gdyfe/table
```

```
npm install --save @gdyfe/table
```

## Usage

```js
import GdyTable from '@gdyfe/table'
import '@gdyfe/table/lib/gdy-table.css'
Vue.use(GdyTable)
```

## Example
### g-table
```html
<!-- g-table -->
<g-table
  :config="config" 
  :list="list" 
  :pagination="pageOptions"
  @handleTableChange="handleTableChange"
>
  <template #action="text, record">
    <!-- 自定义。未配置dataIndex则text和record字段均为当前行所有数据，配置dataIndex则text为当前行dataIndex字段数据 -->
  </template>
</g-table>
```
atnd属性配置可参考[antd配置](https://1.x.antdv.com/components/table-cn/)
```js
export default {
  data() {
    // 列表数据项
    list: [
      {
        id: 123,
        name: 'admin',
        status: 1,
        isShow: true,
        content: '内容'
      }
    ],
    config: [
      // 基本配置，列显示当前dataIndex字段信息
      {
        dataIndex: 'id', // antd属性。列数据在数据项中对应的 key
        key: 'id', // antd属性。Vue 需要的 key,已经设置了唯一的 dataIndex，可以忽略这个属性
        title: '序号', // antd属性。列头显示文字
        width: 90 // antd属性。列宽度
      },
      // 最多显示两行，hover显示全信息
      {
        dataIndex: 'content',
        key: 'content',
        title: '举报内容',
        width: 90,
        textHover: true // 自定义属性，添加后当前列最多显示两行，提供hover显示全信息。若为链接则渲染为a标签。若设置customRender则此属性不生效
      },
      // 自定义显示内容，可获取当前设置daraIndex内容
      {
        dataIndex: 'status',
        key: 'status',
        title: '状态',
        customRender: status => { // antd属性
          if (status === 0) {
            // 自定义类。在customRender内添加g-table-text__orange等属性可获得标签样式
            return <span class="g-table-text__orange">{this.statusArr.filter(v => v.value === status)[0].label}</span>
          } else {
            return <span class="g-table-text__green">{this.statusArr.filter(v => v.value === status)[0].label}</span>
          }
        },
        width: 90
      },
      // 自定义配置字段信息，在模板中用插槽定义（下方用action定义customRender内容）
      {
        title: '操作',
        scopedSlots: { customRender: 'action' }, // antd属性
        width: 150
      }
    ],
    // 可参考antd配置
    pageOptions: {
      pageSize: 12,
      total: 0, // 动态
      page: 1, // 动态
      showQuickJumper: true, // 显示前往
      style: { float: 'none', textAlign: 'center' }
    }
  },
  method: {
    // 页数change回调
    handleTableChange(pagination, filters, sorter) {
      // pagination.current为当前页数
    }
  }
}
```

### g-search
```html
<g-search :config="config" @search="search"></g-search>
```

```js
export default {
  data() {
    const reportTypeArr = [
      {
        label: '全部',
        value: -1
      },
      {
        label: '反动政治',
        value: 1
      },
      {
        label: '色情低俗',
        value: 2
      }
    ]
    // search配置项
    config: [
      {
        type: 'input', // input类型
        field: 'userId', // 对应form userId
        title: '用户id', // 对应label，不配置则不显示
        defaultValue: '', // 默认值
        placeholder: '请输入用户id',
        style: 'width: 144px' // 自定义样式
      },
      {
        type: 'datepicker',
        field: 'time',
        title: '选择时间',
        defaultValue: [],
        placeholder: '时间范围组件',
        style: 'width: 144px'
      },
      {
        type: 'select',
        field: 'reportType',
        title: '举报类型',
        placeholder: '',
        defaultValue: -1,
        selectOptions: reportTypeArr, // 选择项，包含label和value字段
        style: 'width: 144px'
      }
    ],
    form: {
      userId: '',
      time: '',
      reportType: ''
    }
  },
  method: {
    search(form) {
      // 搜索时回调form信息
    }
  }
}
```