# JVXETable 文档
[TOC=2,3]
>[info] `JVXETable`基于`vxe-table`组件开发,请参见:[vxe-table 官方文档](https://vxetable.cn)
## 参数配置
### 基础参数配置
| 参数 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| columns | array | \[\] | **【必填】** 表格列的配置描述,详见【columns 参数配置】 |
| dataSource | array | \[\] | **【必填】** 表格数据 |
| size | string | 'medium' | 表格尺寸,可选值有:'medium'、 'small'、 'mini' |
| loading | boolean | false | 是否正在加载 |
| height | number, string | 'auto' | 表格的固定高度,如果是string就只能填'auto',代表自适应高度 |
| maxHeight | number | null | 设定最大高度(px),默认null不限定最大高度 |
| disabled | boolean | false | 是否禁用全部组件 |
| bordered | boolean | false | 是否显示单元格竖向边框线 |
| toolbar | boolean | false | 是否显示工具栏 |
| toolbarConfig | object | {slot: \['prefix', 'suffix'\], btn: \['add', 'remove', 'clearSelection'\]} | 工具栏配置 |
| rowNumber | boolean | false | 是否显示行号 |
| rowSelection | boolean | false | 是否可选择行 |
| rowSelectionType | string | 'checkbox' | 选择行类型, 可选值:'checkbox'、 'radio' |
| rowExpand | boolean | false | 是否可展开行 |
| expandConfig | object | {} | 展开行配置 |
| disabledRows | object | {} | 禁用行配置 |
| dragSort | boolean | false | 是否可拖拽排序(有固定列的情况下无法拖拽排序,仅可上下排序) |
| sortKey | string | 'orderNum' | 排序字段保存的Key |
| sortBegin | number | 0 | 排序序号开始值 |
| pagination | object | {} | 分页器参数,设置了即可显示分页器,详见([APagination分页](https://antdv.com/components/pagination-cn/#API)) |
| clickRowShowSubForm | boolean | false | 点击行时是否显示子表单 |
| clickRowShowMainForm | boolean | false | 点击行时是否显示主表单 |
| clickSelectRow | boolean | false | 是否点击选中行,优先级最低 |
| reloadEffect | boolean | false | 是否开启 reload 数据效果 |
| editRules | object | {} | 校验规则 |
| asyncRemove | boolean | false | 是否异步删除行,如果你要实现异步删除,那么需要把这个选项开启;在remove事件里调用confirmRemove方法才会真正删除(除非删除的全是新增的行) |
| authPre | string | '' | 配置按钮/列权限,通常规则是\[前缀:列编码\]或\[前缀:btn:按钮编码\] 如`vxe:btn:add`(设置新增按钮的权限);`vxe:name`(设置name列的权限)。<br>如果果需要在该table上作权限控制,就需要配置此属性为权限编码的前缀 ,此例中为`jvxeauth` |
| linkageConfig | array | \[\] | 多级联动配置,详见[【多级联动配置】](JVxeTable/多级联动配置.md) |
| socketReload | boolean | false | 是否开启使用 webSocket 无痕刷新 |
| socketKey | string | 'vxe-default' | 相同的socketKey更改时会互相刷新 |
| addSetActive | boolean | true | 新增行时切换行的激活状态 |
>[info] [更多配置详见VXETable文档](https://vxetable.cn/#/table/api)
### columns 参数配置
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| key | string | **【必填】** 列数据在数据项中对应的`key`,必须是**唯一**的 |
| title | string | 表格列头显示的标题 |
| type | string | 表单的类型,可以通过`JVxeTypes`赋值(详见:[【组件配置文档】](JVXETable/组件配置文档.md)) |
| fixed | string | left(固定左侧), right(固定右侧) |
| width | string | 列的宽度,`px`、`%` |
| minWidth | | 最小列宽度,`px`、`%`;会自动将剩余空间按比例分配 |
| align | string | 列对齐方式 left(左对齐), center(居中对齐), right(右对齐) |
| placeholder | string | 表单预期值的提示信息,可以使用`${...}`变量替换文本(详见【常见问题\_${...} 变量如何使用】) |
| defaultValue | string | 默认值,在新增一行时生效 |
| props | object | 设置添加给表单元素的自定义属性,例如:`props:{title: 'show title'}` |
| disabled | boolean | 是否禁用当前列,默认false |
| validateRules | array | 表单验证规则,配置方式见【validateRules 配置规则】 |
| formatter | Function({cellValue, row, column}) | 格式化显示内容,将处理后的值返回即可。注:仅影响展示的值,不会修改实际的值,也就是说,在获取和点击编辑时不会受影响 |
### validateRules 配置规则
`validateRules`需要的是一个数组,数组里每项都是一个规则,规则是object类型,规则的各个参数如下
* `required`是否必填,可选值为`true`or`false`
* `unique`唯一校验,不可重复,可选值为`true`or`false`
* `pattern`正则表达式验证,只有成功匹配该正则的值才能成功通过验证
* `handler`自定义函数校验,使用方法请见【使用示例\_五】)
* `message`当验证未通过时显示的提示文本,可以使用`${...}`变量替换文本(详见【常见问题\_${...} 变量如何使用】)
* 配置示例请看【使用示例\_二】
## 事件
### save
* `触发时机`:只有点击`保存`按钮时才会触发
### added
* `触发时机`:点击`新增`按钮、调用`addRows`方法时会触发
* `携带参数`:
* `row`:添加完成后的行
* `rows`:如果添加了多行,将返回此参数
> 如果调用`addRows`方法添加多行,则每添加一行都会触发一次该事件
### inserted
* `触发时机`:调用`insertRows`方法时会触发
* `携带参数`:
* `row`:插入完成后的行
* `rows`:如果插入了多行,将返回此参数
* `insertIndex`:插入的下标
> 如果调用`insertRows`方法添加多行,则每添加一行都会触发一次该事件
### removed
* `触发时机`:点击`删除`按钮、调用`removeRows`方法时会触发
* `携带参数`:
* `deleteRows`:即将被删除的行
* `confirmRemove`:确认删除方法
只有当点击`删除`按钮,并且开启了asyncRemove属性后才会返回
> 如果`asyncRemove`参数设为true,则会传递`confirmRemove`方法,否者不会,且只有调用了该方法后才会真正删除(除非删除的全是新增的行)
> 如果`asyncRemove`参数设为false,就会直接删除行,而不用调用`confirmRemove`。
### dragged
* `触发时机`:拖拽排序后、上下移动后触发
* `携带参数`:
* ` oldIndex`:排序前的 index
* `newIndex`:排序后的 index
### selectRowChange
* `触发时机`:当行被选中或取消选中时触发
* `携带参数`:
* `type`:选中类型
* `radio`:单选
* `checkbox`:多选
* `action`:选中操作
* `selected`:选中
* `unselected`:取消选中
* `selected-all`:全选
* `row`:当前操作的行(全选时没有该参数)
* `selectedRows`:所有被选中的行
* `selectedRowIds`:所有被选中的行的ID
* `$event`:原生事件
### pageChange
* `触发时机`:当分页参数被改变时触发
* `携带参数`:
* `current`:当前页码
* `pageSize`:当前页大小
### valueChange
* `触发时机`:当数据发生改变的时候触发的事件
* `携带参数`:
* `type`:组件类型(JVXETypes中定义的类型)
* `value`:新值
* `oldValue`:旧值
* `row`:当前行
* `col`:当前列
* `column`:当前列配置
* `rowIndex`:当前行下标
* `columnIndex`:当前列下标
* `cellTarget`:当前组件实例
* `isSetValues`:为`true`则代表是通过`setValues`方法触发的事件
> **特别注意:** 如果是通过`setValues`方法触发的事件,将不会传递`row`、`rowIndex`、`columnIndex`、`cellTarget`这几个参数的。
## 方法
### getXTable
获取 vxe-table 实例,用于调用 vxe-table 的原生方法,详见:[VxeTable文档](https://vxetable.cn/#/grid/api?filterName=methods)
### addRows
* `说明`:添加一行或多行临时数据,会填充默认值,总是会激活添加的最后一行的编辑模式
* `参数`:
* `rows`:\[object | array\] 要添加的行
* `options`:object 选项参数
* `setActive`:是否激活添加的最后一行的编辑模式,默认继承props.addSetActive
* `返回值`:Promise
### pushRows
* `说明`:添加一行或多行临时数据,不会填充默认值,传什么就添加进去什么
* `参数`:
* `rows`:\[object | array\] 要添加的行
* `options`:object 选项参数
* `index`:默认-1,插入位置,-1为最后一行
* `setActive`:默认false,是否激活添加的最后一行的编辑模式
* `返回值`:Promise
### resetScrollTop
* `说明`:重置滚动条Top位置
* `参数`:
* `top`:number 新top位置,留空则滚动到上次记录的位置,用于解决切换tab选项卡时导致白屏以及自动将滚动条滚动到顶部的问题
* `返回值`:无
### validateTable
* `说明`:校验table,失败返回errMap,成功返回null
* `参数`:无
* `返回值`:Promise
### setValues
* `说明`: 设置某行某列的值
* `参数`:
* `values`:array
* `返回值`:void
### getValues
* `说明`:获取表格的值
* `参数`:
* `callback`:获取成功后的callback
* `rowIds`:指定查询的行ID,不传返回所有行
* `返回值`:void
### getTableData
* `说明`: 获取表格数据
* `参数`:
* `options`:object 选项参数
* `rowIds`:string\[\] 行ID,传了就只返回传递的行
* `返回值`:row\[\]
### getSelectionData
* `说明`: 获取选中数据
* `参数`:
* `isFull`:如果为 true 则获取全表已选中的数据
* `返回值`:row\[\]
### getNewData
* `说明`:仅获取新增的临时数据
* `参数`:无
* `返回值`:row\[\]
### getNewDataWithId
* `说明`:仅获取新增的临时数据,带有临时ID
* `参数`:无
* `返回值`:row\[\]
### getIfRowById
* `说明`:根据ID获取行,新增的临时行也能查出来
* `参数`:id
* `返回值`:{row, isNew}
* `row`:获取到的行
* `isNew`:当前行是否是新增的临时行
### getNewRowById
* `说明`:通过临时ID获取新增的临时行
* `参数`:id
* `返回值`:row
### getDeleteData
* `说明`:仅获取被删除的数据(新增又被删除的数据不会被获取到)
* `参数`:无
* `返回值`:row\[\]
### clearSelection
* `说明`:清空选择
* `参数`:无
* `返回值`:void
### removeRows
* `说明`:删除一行或多行数据
* `参数`:
* `rows`:\[object | array\] 要删除的行
* `返回值`:Promise
### removeRowsById
* `说明`:根据id删除一行或多行
* `参数`:
* `rowId`:\[string | array\] 要删除的行ID
* `返回值`:Promise
### removeSelection
* `说明`:删除选中的数据
* `参数`:无
* `返回值`:Promise
### isDisabledRow
* `说明`:判断是否是禁用行
* `参数`:
* `rowId`:行数据
* `force`:boolean 是否强制刷新,默认=true
* `返回值`:boolean
### recalcDisableRows
* `说明`:重新计算禁用行,当修改了 props.disabledRows 参数时需要用到
* `参数`:无
* `返回值`:void
### socketSendUpdateRow
* `说明`:发送socket消息更新行,在WebSocket无痕刷新中会用到
* `参数`:
* `row`:要更新的行
* `返回值`:void
## 内置插槽
| 插槽名 | 说明 |
| --- | --- |
| toolbarPrefix | 在操作按钮的**前面**插入插槽,和自带的按钮共处于一行,受`toolbar`和`toolbarConfig`属性的影响 |
| toolbarSuffix | 在操作按钮的**后面**插入插槽,和自带的按钮共处于一行,受`toolbar`和`toolbarConfig`属性的影响 |
| toolbarAfter | 在工具条的**下面**插入插槽,不受`toolbar`和`toolbarConfig`属性的影响 |
| subForm | 点击展开子表的内容 |
| mainForm | 弹出主表的内容 |
- 项目介绍
- 常见问题
- 开发环境准备
- 环境准备
- 启动项目
- 切换Vue3路由
- 项目配置详细说明
- 上线部署
- 快速构建&部署
- Docker镜像启动
- 项目配置
- 菜单配置
- 菜单缓存
- 积木报表菜单配置
- 首页配置
- 国际化
- 菜单国际化
- 组件注册
- 项目规范
- 跨域处理
- 样式库
- 图标生成
- package依赖介绍
- 菜单TAB风格
- 备份文档
- 详细构建和配置
- 构建部署1.0
- 切换Mock接口
- 原生路由(作废)
- 原生菜单(作废)
- 页面开启缓存(作废)
- 环境准备1.0
- 数据 mock&联调
- UI组件
- Form 表单组件
- Table 表格
- Modal 弹窗
- Drawer 抽屉组件
- Icon 图标组件
- Button 按钮
- 更多基础组件
- JSelectUser选择用户 ✔
- JSelectPosition岗位选择 ✔
- JSelectDept部门选择 ✔
- JCheckbox ✔
- JImportModal 列表导入弹窗组件
- JInput特殊查询组件 ✔
- JPopup弹窗选择组件 ✔
- JTreeSelect树形下拉框 (异步加载) ✔
- JAreaSelect 省市县级联组件
- JDictSelectTag 字典标签 ✔
- JEllipsis 超长截取显示组件 ✔
- JUpload 上传组件 ✔
- JEasyCron 定时表达式选择组件 ✔
- JInputPopup 多行输入窗口组件 ✔
- JSwitch 开关选择组件 ✔
- JTreeDict 分类字典树形下拉组件 ✔
- JSelectInput 可输入下拉框 ✔
- JEditor 富文本编辑器 ✔
- JMarkdownEditor Markdown编辑器 ✔
- JSearchSelect 字典表的搜索组件 ✔
- JSelectUserByDept 根据部门选择用户 ✔
- JVxeTable
- 组件配置文档
- 自定义组件
- 封装自定义组件
- 自定义组件增强
- 多级联动配置
- 使用示例
- 常见问题解答
- JAreaLinkage 省市县联动组件 ✔
- JCategorySelect 分类字典树 ✔
- JImageUpload 图片上传 ✔
- JSelectMultiple 下拉多选 ✔
- JSelectRole 选择角色 ✔
- JFormContainer 表单组件禁用 ✔
- SuperQuery 高级查询
- UserSelect 高级用户选择组件
- Basic
- Page
- Authority
- PopConfirmButton
- CollapseContainer
- ScrollContainer
- LazyContainer
- CodeEditor
- JsonPreview
- CountDown
- ClickOutSide
- CountTo
- Cropper
- Description
- FlowChart
- Upload
- Tree
- Excel
- Qrcode
- Markdown
- Loading
- Tinymce
- Time
- StrengthMeter
- Verify
- Transition
- VirtualScroll
- ContextMenu
- Preview
- Loading
- 前端权限
- 表单权限
- 显隐控制 ✔
- 禁用控制 ✔
- 列表权限
- 按钮权限控制
- 列字段显隐控制
- 行编辑组件权限
- 显隐控制
- 禁用控制
- 代码生成
- Online在线代码生成
- GUI代码生成
- 代码生成模板介绍
- vue3和vue3Native详细说明
- 深入开发
- 定义Form新组件
- 自定义列表查询
- 自定义表单布局
- 开发笔记
- 组件权限控制
- 使用Antd Vue原生Form
- 自定义图表组件
- 自定义渲染函数
- 如何编写mock接口
- 缓存用法
- 精简版代码制作
- 微前端(qiankun)集成
- 前端小技巧
- 表单整体禁用
- 弹框内下拉框错位
- 界面如何设置响应式
- 抽屉(Drawer)宽度自适应
- 生成菜单脚本
- Online表单
- Online常见问题
- Online表单配置
- 配置参数说明
- 系统标准字段
- 表单类型-主子表|树表
- 自定义查询配置
- Online表单风格
- Online表单删除说明
- Online联合查询配置
- online表单视图功能说明
- Online表单开启评论
- Online表单控件介绍
- 常用基础控件
- 高级关联记录
- Online表单控件配置
- 基本配置
- 控件扩展配置
- 默认值表达式
- 自定义查询配置
- 字段href
- 默认值(填值规则)
- 导入导出自定义规则
- Online表单权限配置
- 字段权限配置与授权
- 按钮权限配置与授权
- 数据权限配置与授权
- 联合查询数据权限规则说明
- 在线增强
- 自定义按钮
- SQL增强
- JS增强
- 按钮触发JS增强
- 列表Api
- 列表操作列前置事件
- 表单Api
- beforeSubmit事件
- loaded事件
- 表单值改变事件【单表/主表】
- 表单值改变事件【从表】
- 表单值改变事件【从改主】
- 控制字段显示与隐藏
- js增强实现下拉联动
- js增强控制下拉树数据
- JS增强 触发弹窗
- JS增强 http请求
- JS增强 方法定义
- 对接表单设计器后需注意
- JAVA增强
- 快速开始
- Online java增强 导入
- Online java增强 导出
- Online java增强 查询
- Online Java增强 http-api
- 表单类
- 列表类
- 其他功能示例
- 导入数据库表支持排除表
- 通过字段Href实现三级联动
- excel数据导入支持校验
- Online报表
- Online报表配置
- 配置成菜单
- 其他功能
- 推送消息
- ISO 8601书写格式
- 系统消息跳转至详情表单
- 菜单【批量申请(自定义)】功能说明
- Online自动化测试
- online AI自动化测试数据制作
- Online AI自动化测试数据制作
- Online AI模型测试用例功能详情
- JAVA后台功能
- saas多租户切换
- 新功能实现saas租户隔离
- 第三方集成
- 敲敲云集成钉钉