0.0.39 • Published 2 years ago

@sd-common/table v0.0.39

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

Install

$ npm i --save @sd-common/table

Demos

See demos of Local Data and Remote Data on CodePen.

Quick Start

Import modules and set up settings in main.js:

import Vue from 'vue'
import ElSearchTablePagination from '@sd-common/table'

// Default use axios as HTTP tool
Vue.use(ElSearchTablePagination)
// or set a custom HTTP tool
import axios from 'axios'
Vue.use(ElSearchTablePagination, {
    axios
})

Use this package to show remote data in a page:

<template>
  <el-search-table-pagination
    url="example.xxx.com/list"
    :columns="columns"
    :formOptions="formOptions">
  </el-search-table-pagination>
</template>

<script>
  export default {
    data() {
      return {
        formOptions: {
          inline: true,
          submitBtnText: 'Search',
          forms: [
            { prop: 'name', label: 'Name' },
            { prop: 'mobile', label: 'Mobile' },
            { prop: 'sex', label: 'Sex', itemType: 'select',
              options: [
                { value: '', label: 'All' },
                { value: 0, label: 'Male' },
                { value: 1, label: 'Female' }
              ]
            }
          ]
        },
        columns: [
          { prop: 'name', label: 'Name', width: 140 },
          { prop: 'mobile', label: 'Mobile', minWidth: 180 },
          { prop: 'sex', label: 'Sex', width: 80,
            render: row => {
              const { sex } = row
              return sex === 0 ? 'Male' : sex === 1 ? 'Female' : 'Unknow'
            }
          }
        ]
      }
    }
  }
</script>

And the Test page is the image above.

Use this package to show local data in a page:

<template>
  <el-search-table-pagination
    type="local"
    :data="tableData"
    :page-sizes="[5, 10]"
    :columns="columns"
    :form-options="formOptions">
  </el-search-table-pagination>
</template>

<script>
  export default {
    data() {
      return {
        formOptions: {
          inline: true,
          submitBtnText: 'Search',
          forms: [
            { prop: 'name', label: 'Name' },
            { prop: 'mobile', label: 'Mobile' },
            { prop: 'sex', label: 'Sex', itemType: 'select',
              options: [
                { value: '', label: 'All' },
                { value: 0, label: 'Male' },
                { value: 1, label: 'Female' }
              ]
            }
          ]
        },
        columns: [
          { prop: 'name', label: 'Name', width: 140 },
          { prop: 'mobile', label: 'Mobile', minWidth: 180, editor: true, 
            editItemType:'select',
            exportSelectProp:'exportMobile'
            selectFetch: this.function(),
            valueKey:'valueKey',
            labelKey:'labelKey'
          },
          { prop: 'sex', label: 'Sex', width: 100,
            render: row => {
              const { sex } = row
              return sex === 0 ? 'Male' : sex === 1 ? 'Female' : 'Unknow'
            }
          }
        ],
        tableData: [
          { name: 'Sam', mobile: '15299xxxx', sex: 0 },
          { name: 'Jean', mobile: '13452xxxx', sex: 1 },
          { name: 'Tony', mobile: '187233xxxx', sex: 0 }
        ]
      }
    }
  }
</script>

API 文档

属性

参数说明类型可选值默认值
fetch封装好的获取数据的函数,返回一个promise,会获得搜索条件对象作为参数。若提供该属性,则不会再调用 url属性获取数据function--
type数据来源类型,包含远程和本地两种stringremote, localremote
data数据集合,仅在 type='local' 时有效array--
url后端数据接口string--
method接口请求方式stringget, post, delete, putget
auto-load是否默认加载数据booleantrue, falsetrue
headers请求头信息object--
list-field接口返回值对应数据的字段值string-data.list
total-field接口返回值对应数据总数的字段值string-data.total
params搜索参数object--
form-optionsform表单设置(见下方Form Option 属性)object--
data-handler数组数据的 map 处理函数function--
columnstable column配置对象的数组。具体配置见下面Table column 属性array--
show-pagination是否显示分页组件,如设为false,查询时不传分页参数booleantrue, falsetrue
page-sizes每页显示个数的控件选项array-20, 50, 100
pagination-layout分页控件的结构,每个类型用逗号分隔stringsizes, prev, pager, next, jumper, ->, total, slottotal, prev, pager, next, jumper, sizes
page-index-key参数:页码数 的 key 值string-pageIndex
page-size-key参数:每页展示个数 的 key 值string-pageSize
table-style传递给el-table的样式stylestring-width:100%;margin-top:20px;
tabstab切换string当前active-
exclude-column自定义列默认不展示列配置, 需开启自定义列功能array[][]
save-table-config开启保存表格配置 与pageId绑定, 需传入pageIdstring''''
rowClassName用户自定义处理rowclass当table组件为tree类型时添加 返回默认的row class 方法 ,但这需要手动为返回的数据添加type('Parent', 'Child') 属性
    data.forEach(item => {
    item.type = 'Parent';
    item.children && item.children.forEach(child => ({...child,type:'Child' }))
}) | '' |

注:更多属性,请参考 Element UI Table 组件的文档

支持的Element UI Table属性有:stripe / border / height / max-height / fit / show-header / highlight-current-row / current-row-key / row-class-name / row-style / row-key / empty-text / default-expand-all / expand-row-keys / default-sort / tooltip-effect / show-summary / sum-text / summary-method / size。

Table column 属性

参数说明类型可选值默认值
prop展示字段的字段值string--
label列名string--
width列宽number-140
minWidth最小列宽number--
filter过滤器名(只有配置在全局的filter才有效)string--
render处理数据的函数,接收行数据作为参数function--
slotName使用 slot 标记的代码块的 slot 属性值string--
type0.4.28后支持,Element UI Table支持的一个属性,借用这个属性来切换是否使用本组件column内的插槽内容,当本属性没有给值时,本组件保持和之前版本一样的兼容性,组件会接管column数组中的定义并定义Element UI Table Column,只有指定的属性才会给予,并且会实现组件中给予的renderformatter等功能。如果该属性一旦有给值时,column定义的所有属性都会传递给Element UI Table Column,本组件也不会对column内容进行处理,相应的处理能力也交给Element UI Table本身,通过这种方式,也可以支持Element UI Table中的多选列,Index列等,设置为default也即为Element UI Table的缺省模式,会从数据对象中读取prop属性,也会受到filter的过滤,只不过处理都是Element UI Table来进行了。stringdefault/selection/index/expand
renderHeader提示文本string--
editor是否展示编辑按钮boolean--
editItemType行内编辑类型select/input--
exportSelectProp导出keystring--
selectFetch获取select optionfunction--
valueKeyoption valuekeystring--
labelKeyoption labelKeystring--
canEditor处理是否可编辑函数function--
permit列权限idnumber--

注:更多属性,请参考 Element UI Table column 的文档

支持的Element UI Table column属性有:column-key / fixed / render-header / sortable / sort-by / sort-method / resizable / formatter / show-overflow-tooltip / align / header-align / class-name / label-class-name / selectable / reserve-selection / filters / filter-placement / filter-multiple / filter-method / filtered-value 。

注:关于formatter属性,如果定义了renderer或者filter的时候,formatter不起作用。

Form Option 属性

参数说明类型可选值默认值
formsform表单配置对象数组。详情见Form Item 属性arrayobject--
size全局的表单尺寸stringlarge/small/mini-
showResetBtn是否显示'重置'按钮boolean-false
inline行内表单模式boolean-false
fuzzy搜索条件是否支持模糊搜索,全局设置,仅支持 local 数据展示boolean-false
labelWidth表单域标签的宽度,作为 Form 直接子元素的 form-item 会继承该值number--
itemWidth表单域宽度number--
submitHandler查询按钮的click处理函数,接收form表单对象数据作为第一个参数function--
submitLoading查询按钮的加载中状态boolean--
submitBtnText查询按钮的文本string-查询
resetBtnText重置按钮的文本string-重置
resetBtnCallback重置按钮点击事件的回调函数,在重置了搜索条件之后执行function--

Form Item 属性

参数说明类型可选值默认值
labelform表单标签string--
slotName使用 slot 标记的代码块的 slot 属性值(label必传)string--
propform表单属性key值string--
fuzzy该 form item 是否支持模糊搜索,仅支持 local 数据展示boolean-false
itemType表单类型,目前支持input/select/date/daterange/inputPreSelect几种表单stringinput/select/date/daterange-
size表单尺寸stringlarge/small/mini-
selectPropitemType为 inputPreSelect时必须传string--
labelWidth表单域标签的宽度number--
itemWidth表单域宽度number--
placeholder表单占位文本string--
editable是否可输入,对date/daterange有效booleantrue/falsetrue
disabled禁用booleantrue/falsefalse
readonly只读,对input/date/daterange有效booleantrue/falsefalse
options填充select下拉option的数组数据string/object--
selectFetch获取远程数据填充select下拉option数据的函数,函数需返回一个promise,如果设置了selectUrl,则该属性无效function--
selectResultFieldselect远程数据接口返回值的数据对应key值,对应的数组中的元素可以是string或objectstring-result
selectResultHandlerselect远程数据接口array数据的map处理函数function--
selectUrlselect远程数据接口地址,设置该属性后,selectFetch属性则无效string --
selectMethodselect远程接口调用方法,该属性配合selectUrl使用stringget/post-
selectParams调用select远程接口的参数object--
valueKey当option是对象时有效。select option的value的key值string-value
labelKey当option是对象时有效。select option的label的key值string-label
rules表单验证规则object--
format提供一个函数对form表单的结果进行处理,这个函数接收两个参数:form 表单的值 和 表单的 key(即 prop),函数需要将处理后的结果return出来function--
pickerOptions当前时间日期选择器特有的选项,对 date/daterange 有效object--

Form Item 常用搜索下拉框混入使用

| mixinsSignManagerSecelt | 签约经理 | mixinsCustomerSelect | 客户 | mixinsAccountSelect | 账户人员 | mixinsDepartmentSelect | 部门

模版:

函数

方法名说明参数
this.$refs.table.$refs.searchForm.searchHandler();搜索框参数调用搜索搜索框对象
this.$refs.table.fetchHandler();重新拉取数据
this.$refs.table.searchSet(type, val)设置搜索框参数prop名, 参数

Form Item itemType 属性

  • 新增:datetimerange,时间日期范围选择器,支持精确到时分秒
  • 新增:cascader,联动选择器,用法与select一样,关键在于这个类型的options支持children

Slots

slot名称说明
formtable 上部展示一个搜索区域,该slot下通过scope可以访问到两个属性:loading(查询中的loading状态值),search(搜索方法)
form-pre搜索区域自定义
prependtable中,在最左边添加的列
appendtable中,在最右边添加的列,一般可放置操作列

Events

事件名说明参数
select当用户手动勾选数据行的 Checkbox 时触发的事件selection, row
select-all当用户手动勾选全选 Checkbox 时触发的事件selection
selection-change当选择项发生变化时会触发该事件selection
cell-mouse-enter当单元格 hover 进入时会触发该事件row, column, cell, event
cell-mouse-leave当单元格 hover 退出时会触发该事件row, column, cell, event
cell-click当某个单元格被点击时会触发该事件row, column, cell, event
cell-dblclick当某个单元格被双击击时会触发该事件row, column, cell, event
row-click当某一行被点击时会触发该事件row, event, column
row-contextmenu当某一行被鼠标右键点击时会触发该事件row, event
row-dblclick当某一行被双击时会触发该事件row, event
header-click当某一列的表头被点击时会触发该事件column, event
sort-change当表格的排序条件发生变化的时候会触发该事件{ column, prop, order }
filter-change当表格的筛选条件发生变化的时候会触发该事件,参数的值是一个对象,对象的 key 是 column 的 columnKey,对应的 value 为用户选择的筛选条件的数组。filters
current-change当表格的当前行发生变化的时候会触发该事件,如果要高亮当前行,请打开表格的 highlight-current-row 属性currentRow, oldCurrentRow
header-dragend当拖动表头改变了列的宽度的时候会触发该事件newWidth, oldWidth, column, event
expand (v1.x)当用户对某一行展开或者关闭的上会触发该事件row, expanded
expand-change (v2.x)当用户对某一行展开或者关闭的上会触发该事件row, expanded
editor-row点击编辑按钮触发{row, item, params}, index

默认值回填说明

一般回填 searchSetDataOnly(type, val) 中type为forms中prop值

日期范围选择daterange回填, type为 daterange-prefix + i; i为daterange在forms中的索引值

<template>
  <el-search-table-pagination
    ref="table"
    :form-options="formOptions">
  </el-search-table-pagination>
</template>

<script>
  export default {
    data() {
      return {
        formOptions: {
          forms: [
            { prop: 'name', label: '姓名' },
            {
              prop: ['startTime', 'endTime'],
              label: '时间范围',
              itemType: 'daterange',
              placeholder: '时间范围',
            }
          ]
        }
      }
    },
    mounted () {
      // 一般回填
      this.$refs.table.searchSetDataOnly('name', "张三");
      // 类型为daterange回填, 第一个参数为 daterange-prefix + forms的索引值, 如下:
      this.$refs.table.searchSetDataOnly('daterange-prefix1', this.dateTime);
    }
  }
</script>
0.0.37

2 years ago

0.0.38

2 years ago

0.0.39

2 years ago

0.0.35

2 years ago

0.0.36

2 years ago

0.0.34

2 years ago

0.0.33

2 years ago

0.0.30

2 years ago

0.0.31

2 years ago

0.0.32

2 years ago

0.0.22

2 years ago

0.0.23

2 years ago

0.0.24

2 years ago

0.0.25

2 years ago

0.0.26

2 years ago

0.0.27

2 years ago

0.0.28

2 years ago

0.0.29

2 years ago

0.0.20

2 years ago

0.0.21

2 years ago

0.0.16

3 years ago

0.0.17

3 years ago

0.0.18

2 years ago

0.0.19

2 years ago

0.0.14

3 years ago

0.0.15

3 years ago

0.0.13

3 years ago

0.0.12

3 years ago

0.0.11

3 years ago

0.0.10

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago