# Common Table 通用列表

通用列表组件(common-table)已注册到全局,无需单独引入。但如果需要引入到其他项目中,首先需要将该组件复制到目标项目的 src/components 目录,然后参考下面的如何引入

该组件用于数据记录列表的展示。组件内嵌了筛选列表编辑模块。

# 如何引入

import commonTable from '@/components/common-table'

export default {
  name: '',
  components: {
    commonTable
  },
  ...
}
1
2
3
4
5
6
7
8
9

# 使用示例

你可以直接复制使用此处代码

<template>
  <page class="filter-table-demo" class-name="hw100">
    <panel
      :title-fixed="true"
      title="表具详述"
      class="h100 w-2-1"
    >
      <common-table
        v-model="params"
        :columns="columns"
        :filters="filters"
        :filter-setting="filterSetting"
        :page="page"
        :table-setting="tableSetting"
        :list="data"
        :loading="loading"
        :actions="tableActions"
        class="p15 pb0"
        @select="rowSelect"
      />
    </panel>
  </page>
</template>

<script>
export default {
  data () {
    return {
      data: [],
      params: {},
      columns: [
        {
          label: 'ID',
          field: 'id'
        }, {
          label: '表具编号',
          field: 'meterNo',
          sortable: true,
          sortBy: 'meterNo'
        }, {
          label: '表具类型',
          field: 'meterType'
        }, {
          label: '表具型号',
          field: 'meterModel'
        }, {
          label: '安装日期',
          field: 'installDate',
          format: {
            type: 'parseTime',
            set: '{y}-{m}-{d}'
          },
          align: 'right'
        }, {
          label: '在用状态',
          field: 'meterStatus',
          format: {
            type: 'custom',
            set: data => {
              return {
                0: '待安装',
                1: '已安装',
                2: '未用',
                3: '在用'
              }[data]
            }
          },
          align: 'right'
        }
      ],
      filters: ['meterNo'],
      filterSetting: {
        col: 1,
        width: 120
      },
      tableSetting: {
        rowKey: 'id',
        select: 'single'
      },
      loading: false,
      page: {
        total: 0,
        page: 1,
        length: 20
      },
      tableActions: [
        {
          label: '查询',
          onClick: this.getList
        }, {
          label: '新建',
          onClick: this.createRecord
        }
      ]
    }
  },
  methods: {
    rowSelect (val) {
      console.info('row select =>', val)
    }
  }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

# 属性

属性名称 属性说明 默认值
filters [Array] 筛选工具条控件筛选条件字段配置
如果不设置该属性则不显示筛选工具条
详细配置请参考 filter-bar 设置
filterSetting [Object] 筛选工具条外观配置
具体配置参见 筛选条外观配置
page [Object] 数据分页控件
配置参数查看 page 设置
columns [Array] 列字段配置
配置参数查看 columns 设置
必填
tableSetting [Object] 列表全局配置配置参数查看 tableSetting 设置 {}
actions [Array] 顶部工具栏右侧动作区按钮设置
配置参数查看 actions 设置
[]
list [Array] 数据列表 []
loading [Boolean] 显示加载提示
开发者可以在发起数据请求时将值设置为 true 以显示加载状态
false
showRefreshButton [Boolean] 是否显示列表刷新按钮,点击刷新按钮将触发查询条件更新 false
edit [Object] 列表编辑配置,支持列表记录的更新、新增、作废(删除)操作。配置参数查看列表编辑

# 事件

事件名称 事件说明
select 列表有行被选中时(单选、多选),将抛出该事件,并携带选中行的数据。
input 组件内分页、筛选参数更新时,将抛出该事件,并携带更新后分页和筛选参数数据
用于 v-model 双向绑定,无需单独使用
change 组件内分页、筛选参数更新时,将抛出该事件,并携带更新后分页和筛选参数数据
该事件将在 input 事件之后抛出
record-update 启用列表编辑时,编辑操作完成事件
record-create 启用列表编辑时,新增操作完成事件
record-cancel 启用列表编辑时,作废操作完成事件

# 方法

方法名称 说明 参数
selectRow 选中单个行 [Number|Object] row
行索引或行数据
selectRows 选中多个行,仅多选时可用 [Array<Number|Object>] rows
行索引或行数据列表
clearSelection 清空选中行
toggleRowSelection 切换某一行的选中状态,仅多选时可用。 [Number|Object] row
行索引或行数据
[Boolean] selected
是否选中
toggleAllSelection 用于多选表格,切换所有行的选中状态
toggleRowExpansion 用于可展开表格,切换某一行的展开状态。 [Number|Object] row
行索引或行数据
[Boolean] expanded
是否展开
clearSort 用于清空排序条件,数据会恢复成未排序的状态
sort 手动对 Table 进行排序。 [String] prop
排序字段
[String] order
排序方向
doLayout 对 Table 进行重新布局。
当 Table 或其祖先元素由隐藏切换为显示时可能需要调用此方法
setParams 更新筛选条件 [Object] params
新筛选条件

TIP

对于 toggleRowSelection toggleAllSelection toggleRowExpansion clearSort sort doLayout 等方法,可以参考 element-ui 文档 (opens new window)

# page 设置

属性名 属性说明 默认值
page [Number] 当前页码 1
total [Number] 记录总数 0
length [Number] 当前每页显示条数 20
sizes [Array] 每页显示条数候选值 [10, 20, 50, 100, 200]
layout [String] 分页控件布局
请参考 element-ui 文档 分页属性 (opens new window)
'total, sizes, prev, pager, next, jumper'

# tableSetting 设置

属性 说明 默认值
select [String] 开启列表行选择
single/multiple
align [String] 表格默认对齐
height [String|Number] 表格高度
maxHeight [String|Number] 表格最大高度
stripe [Boolean] 是否显示斑马纹 false
border [Boolean] 是否显示纵向边框 false
defaultSort [Object] 默认排序配置
参考 element-ui 列表排序 (opens new window) 示例
fit [Boolean] 当列表内容宽度不足容器宽度时,是否自动充满容器宽度 true
style [String] 自定义内嵌样式
rowKey [String] 展示树形数据时,指定索引字段 id
resetPageOnQuery [Boolean] 发起筛选时是否重置页码至第一页 false
rowClassName [Function] 根据列表中每条记录,自定义行样式
函数接收一个行对象,该对象包含以下属性:
row - 当前行数据对象
rowIndex - 当前行于本页内的索引
可参考 element-ui 带状态表格 (opens new window) 示例
最后更新: 12/22/2021, 2:06:12 PM