基于vue3的可编辑表格
npm install edit-table-vue3#### Description
基于 vue3 的可编辑表格
| 参数 | 说明 | 类型 | 默认值 |
| ------------------------ | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ------------------------ |
| dataSource(v-model) | 表格数据 | [object, object, ...] | [] |
| columns(v-model) | 表格列 | columns | [] |
| border | 是否显示边框 | boolean | true |
| rowKey | 行唯一 key | string | id |
| rowSelection | 选择行配置 | rowSelection | - |
| defaultRowData | 编辑表格行默认数据 | Object | - |
| menus | 自定义右键菜单 | menus | - |
| wrapMenusClassName | 右键菜单外层容器样式名 | string | - |
| keepLastRowEmpty | 保持表格最后一行为空数据 | boolean | false |
| resizeCol | 手动调整列宽 | boolean | false |
| showRowIndex | 是否显示行号 | boolean | false |
| showRowDrag | 是否开启拖拽行功能 | boolean | false |
| dargRowEnd | 拖拽行完成后回调 | Function | - |
| showColDrag | 是否开启拖拽列功能 | boolean | false |
| dargColEnd | 拖拽列完成后回调 | Function | - |
| stickyHead | 表头是否启用粘性 | boolean | false |
| stickyIndex | 行号是否启用粘性 | boolean | false |
| readonly | 只读模式,或者指定行为只读模式 | boolean | [key1, key2, ...] | false |
| disabled | 禁用模式,或者指定行为禁用模式 | boolean | [key1, key2, ...] | false |
| openVirtualScroll | 是否开启虚拟滚动 | boolean \| VirtualScrollProps | false |
| relateRowChosed | 是否启动关联表格选择行,开启时,表格内容的选择行将与行选择 checkbox 联动 | boolean | false |
| customRow | 行属性配置 | (record: Record, index: number) => ({ disabled, onclick, .... }), 函数返回内容同and design vue | - |
| customCell | 单元格属性配置 | (record: Record, column: Column, index: number) => ({ disabled, onclick, .... }), 函数返回内容同and design vue | - |
| customEditer | 编辑项配置 | customEditer | - |
| selectedStyleBorderWidth | 选择边框宽度 | string | 1px |
| selectedStyleBorderColor | 选择边框颜色 | string | rgba(0, 127, 255, 0.5) |
| lang | 语言配置 | zh_CN、en_US、ru_RU | zh_CN |
| messageConfig | 文案配置 | JSON | messageConfig |
| openUndo | 是否启用撤销、重做 | boolean | true |
| rules | 表格数据验证 | Rule 、Rule[] | - |
| fastKeyboard | 快捷键配置, 没有配置时,将根据菜单项进行匹配是否启用某个快捷操作 | FastKeyboard[] | - |
| checkNoRepaeatRowKey | 是否开启自动检测是否含有相同key的行数据(性能考虑,非必要不打开) | boolean | - |
| rowAutoHeight | 行高度是否根据内容自动调整,设置为true时,虚拟滚动将失效 | boolean | - |
| pagination | 分页器,参考配置项或 pagination文档,设为 false 时不展示和进行分页 | PaginationProps \| boolean | - |
| stripe | 是否为斑马纹 table | boolean | - |
| block | 是否为块级,设置为true时, table 元素 width将会是铺满宽度; | boolean | - |
| serviceSorter | 使用服务端排序,设置为true时,排序将触发change事件 | boolean | - |
| loading | 是否处于加载数据状态 | boolean | - |
| sortCallback | 排序完成后回调,注意:服务端排序将不进行回调 | (sortOrder: boolean \|'ascend'\|'descend', column: Column, record: Record) => void | - |
| 参数 | 说明 | 类型 | 默认值 |
| ----------- | ------------------------------------------------------------ | ------------------------------ | -------- |
| title | 表头文字 | string | - |
| dataIndex | 列字段 key | string | |
| type | 表格列单元格内容类型 | text | select | checkbox | text |
| valueType | 列的数据类型,在复制粘贴时,如果想不丢失数据类型,请配置此项 | string | number | boolean | string |
| options | 当 type 为 select 时,下拉选择项 | {label, value}[] | - |
| slotName | 列插槽名 | - | - |
| width | 列默认宽度 | number | - |number
| minWidth | 列最小宽度 | | - |Rule 、Rule[]
| rules | 列数据验证 | | - |boolean | 'left' | 'right'
| fixed | 是否固定列 | | false |boolean
| tooltip | 是否开启 Tooltip | | false |boolean
| autoTooltip | 开启自动判断溢出时才显示 Tooltip, 开启 Tooltip 时有效 | | true |false、ascend 、 descend
| sortOrder | 排序方式(受控) | | - |boolean、(a: Record, b: Record) => number
| sorter | 打开排序,可以自定义本地sort排序函数 | | false |(sortOrder: boolean \|'ascend'\|'descend', column: Column, record: Record) => void
| sortCallback | 排序完成后回调,注意:服务端排序将不进行回调 | | - |({value, rowindex, record, source}, { rowindexs, columns, records, source }) => string
| customCopy | 自定义复制,返回的字符串将被decode,传回customPaste回调的参数中 | | - |({value, rowindex, record, source}, { rowindexs, columns, records, source }) => void
| customPaste | 自定义粘贴 | | - |number \| ((data: { column: Column, record: Record, rowindex: number }) => number)
| precision | 定义数据精度,数据会进行自动补0 | | - |boolean
| filterMultiple | 是否多选 | | false |{label: string, value: string \| number}[]
| filters | 表头的筛选菜单项 | | - |(string \| number)[]
| filteredValue | 筛选的受控属性,外界可用此控制列的筛选状态,值为已筛选的 value 数组 | | - |boolean
| readonly | 列是否只读,配置为true时,不允许修改、粘贴、删除单元格 | | - |boolean
| disabled | 列是否禁用,配置为true时,不允许修改、粘贴、删除单元格 | | - |
| 参数 | 说明 | 类型 | 默认值 |
| ---------------------- | ----------------------------------------------- | ------------------------------------------ | ------- |
| fixed | 把选择框列固定在左边 | boolean | false |string[]
| selectedRowKeys | 指定选中项的 key 数组,需要和 onChange 进行配合 | | [] |string[]
| disableSelectedRowKeys | 指定禁止选择的 key 数组 | | [] |(selectedRowKeys, selectedRows) => void
| onChange | 选中项发生变化时的回调 | | - |(record, selected, selectedRows) => void
| onSelect | 用户手动选择/取消选择某行的回调 | | - |(selected, selectedRowKeys, selectedRows) => void
| onSelectAll | 用户手动选择/取消选择所有行的回调 | | - |
| 参数 | 说明 | 类型 | 默认值 |
| ----------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------- | ------ |
| key | 菜单项唯一标识 | string | - |string、 VNode
| label | 菜单文案 | | - |boolean
| hide | 菜单项是否隐藏 | | (menu, {rowindexs, columns, records, source}) => boolean | - |(menu, {rowindexs, columns, records, source}) => boolean
| disabled | 菜单项是否禁用 | | - |(menu, {rowindexs, columns, records, source}) => void
| handlerBefore | 菜单项点击前回调函数,如返回 reject 的 promise 将阻止菜单执行 | | - |(menu, {rowindexs, columns, records, source}) => void
| handler | 菜单项点击回调 | | - |(menu) => void
| handlerAfter | 菜单项点击点击后回调函数 | | - |boolean
| input | 是否含输入框 | | - |number
| inputDefaultValue | 输入框默认值 | | 1 |number
| inputPrecision | 输入框精度 | | 0 |((menu, { rowindexs, columns, records, source}) => Promise
| validator | 输入框验证函数 | | - |同and design vue,inputNumber组件props参数
| inputProps | 输入框 props | | - |
| 参数 | 说明 | 类型 | 默认值 |
| --------------- | ---------------------------------------------------------------- | ------------------------------------------------- | ------ |
| singleSelectRow | 是否只能单选行 | boolean | - |boolean
| singleSelectCell | 是否只能单选格 | | - |boolean
| disabledSelectTh | 是否禁止选择表头 | | - |boolean
| disabledSelectCell | 是否禁止选择单元格 | | - |boolean
| disabledSelectRow | 是否禁止选择行 | | - |boolean
| disabledOuterClickClearSelected | 是否禁止表格区域外点击清除选区 | | - |string[]
| selectedRowKeys | 指定选中行的 key 数组 (受控) | | - |({rowindexs, columns, records, source}) => void
| onSelected | 选中表格内容时回调, 比如单元格单选、复选、框选、行选、全选等回调 | | - |({rowindexs, columns, records, source}) => void \| Promise
| onEditBefore | 编辑前回调函数,比如删除单元格数据、编辑单元格数据、删除行等,若返回Promise.reject, 将阻止更改数据 | | - |({rowindexs, columns, records, source}) => void \| Promise
| onDeleteBefore | 删除前回调函数,比如删除单元格数据、删除行等,若返回Promise.reject, 将阻止删除数据 | | - |({newValue, oldValue, column, record, rowindex}) => void
| onChange | 单元格内容 change 回调,同 input 的 onchange | | - |({newValue, oldValue, column, record, rowindex}) => void
| onBlur | 单元格编辑失焦回调,同 input 的 onblur | | - |({value, column, record, rowindex}) => void
| onFocus | 单元格内容开始编辑回调 | | - |(data: {newValue, oldValue, column, record}[]) => void
| onClear | 删除单元格内容回调 | | - |() => void
| onRemove | 删除行回调 | | - |(TABLE: TABLE) => void
| onSelectedAllHandel | 全选,在onSelected回调触发前调用 | | - |
| 参数 | 说明 | 类型 | 默认值 |
| ------------------ | ---------------------------------------------- | --------- | ------- |
| oneDataHeight | 一条数据内容的高度,在开启虚拟滚动时至关重要 | number | 24 |Boolean
| scrollLastFlag | 是否向外触发滚动至底事件(scroll-last) | | false |Boolean
| scrollFlag | 是否向外触发滚动事件(scroll),会传出滚动的位移 | | false |Number
| visibleBeforeCount | 屏幕上方留几条缓冲数据 | | 10 |Number
| visibleAfterCount | 屏幕下方留几条缓冲数据 | | 10 |
| 参数 | 说明 | 类型 | 默认值 |
| ---------------------- | ----------------------------------------------- | ------------------------------------------ | ------- |
| field | 验证的字段路径,同column的dataIndex,如果配置在column中,则无需配置此值 | string 、 string[] | - |'selected'、'blur' 、'change'、'submit'
| trigger | 验证时机,默认submit | | submit |number
| len | 字符最大长度 | | - |number
| min | 最小值 | | - |number
| max | 最大值 | | - |string
| message | 错误提示文案 | | - |RegExp
| pattern | 自定义正则验证 | | - |boolean
| required | 必填 | | - |number
| precision | 数字最大精度 | | - |({rule, value, record, rowindex}, (filedList?: FieldPath[], rowindex?: number) => Promise ) => Promise
| validator | 自定义验证 | | - |
`json`
{
"menus": {
"copyLabel": "复制",
"paetsLabel": "粘贴",
"undoLabel": "撤销 (Ctrl + Z)",
"redoLabel": "恢复 (Ctrl + Y)",
"copyDownLabel": "向下填充-复制",
"addStepDownLabel": "向下填充-递增",
"insertBeforeLabel": "上方插入[input]行",
"insertAfterLabel": "下方插入[input]行",
"insertAfterCopyLabel": "向下复制[input]行",
"deleteRowsLabel": "删除选中行"
},
"input": {
"mustInt": "只能输入整数",
"maxDecimal": "只能输入[]位小数"
},
"disabledMoreArea": "不能对多重选择区域执行此操作"
}
| - |
| warning | 错误信息回调 | (msg: string) => void | - |
| change | 分页、排序、筛选变化时触发 | Function(pagination, filters, sorter, { currentDataSource }) | - |
$3
| 参数 | 说明 | 类型 | 默认值 |
| ------------------ | ---------------------------------------------- | --------- | ------- |
| validate | 验证指定列(字段)数据 | (filedList?: FieldPath[], rowindex?: number) => Promise | - |
| validateFields | 验证指定列(字段)数据, 不传入任何参数时,同validate方法 | (filedList?: FieldPath[], rowindex?: number) => Promise | - |
| clearValidate | 清除指定验证结果 | (filedList?: FieldPath[], rowindex?: number) => void | - |
| scrollToField | 滚动到第一个错误位置 | () => void | -` |