Skip to content

BizEditableTable 可编辑表格 ​

列配置声明编辑控件(input / number / select / date / time / switch / text / slot),常驻编辑或点击进入编辑;新增 / 复制 / 删除行(可配二次确认与行数上下限),单元格必填 + 数字区间 + 自定义 validator 校验(错误行内标红),数值列自动合计行。mode="form" 切换为卡片子表单:每条记录一张卡片、字段按网格铺开、控件常驻——字段多不适合表格列、或单屏记录数少的录入场景(联系人、资质证照、条款明细)。订单明细、报价单行项、BOM 物料清单、发票行项——「批量行编辑」场景(BizTable 只读、BizFormDialog 单条记录编辑,均不覆盖);轻量键值配置(请求头 / 变量表 / 元数据,Record 模型 + 重复键校验 + JSON 导入导出)用 BizKeyValueEditor。

订单明细行 ​

input / number / select 组合 + summary-columns 数值合计 + row-template 新行默认值。

提交校验 ​

费用报销明细(点击「提交校验」查看标红)
expose validate() 全量校验,错误标红到单元格并返回错误清单。

点击进入编辑 ​

edit-trigger="click":单元格平时只读,点击出现控件(失焦 / 选中后退出)。

slot 自定义列 ​

type: 'slot' + #col-字段名 作用域插槽自定义渲染(进度标签)。

行复制与删除 ​

copyable 复制行、confirm-delete 删除二次确认、min-rows 保底行数。

发票行项 ​

税率 select + 金额精度 + 只读 text 列 + row-add / row-delete 事件日志。

卡片子表单(form 模式) ​

最多 5 位
联系人 1(王芳)
联系人 2(未命名)
请选择
mode="form":每条记录一张卡片,字段按 form-columns 网格铺开(col.full 占满整行);卡片标题 form-title 工厂定制,校验 / 增删 / 行数上下限与表格模式同一套契约。

表格⇄卡片双形态 ​

第 1 条
第 2 条
第 3 条
数量合计: 72
同一份 columns 与数据在 table / form 模式间即时切换(宽表录入与打印视图共用一套配置);form 模式的合计以底部合计条呈现。

证照录入(日期 + 合计条 + slot) ​

证照 1
证照 2
年审费(元)合计: 5600
form 模式组合形态:日期控件、数值合计条(年审费)、slot 附件列占满整行。

行级锁定 ​

班次 1
早班
5
2026-10-01
已生效(锁定)
班次 2
中班
5
2026-10-01
已生效(锁定)
班次 3
草稿
列配置 disabled(row) 按行状态锁定:已生效记录整体只读(form 模式字段只读展示,text 列状态文案)。

KV 键值对编辑(kv 模式) ​

mode="kv":键 / 值两列 + 可选备注列。系统参数、回调请求头、商品扩展属性、设备元数据等配置场景;键必填唯一、值可按类型校验(见后续示例)。
键重复 / 键为空 / 值非数字逐行标红(键唯一校验跨行联动,改任一键即全表重算);validate() 后 toRecord() 导出为对象。
value-type="json":值列做 JSON.parse 语法校验——采集配置、阈值规则等结构化元数据录入护栏。
行对象带 locked: true 即为系统内置项:键不可修改、行不可删除(删除按钮换为锁形提示),业务项自由维护。
点击上方按钮载入,或直接新增录入
{}
loadRecord(record) 载入对象、toRecord() 导出对象——KV 行数组与 Record<string, string> 双向互转,直接对接后端配置接口。
sensitive 值列渲染为密码框(点击眼睛切换显隐)——密钥、Token 类配置默认掩码。

粘贴填充(Excel / TSV) ​

也可复制 Excel 区域后点击表格内任意输入框 Ctrl+V
pasteable 开启后聚焦表格内任意输入框 Ctrl+V:Excel 复制的区域(TSV)按列序批量追加行;select 列按 value / label 自动匹配、number 列合法数字自动转型。WMS 批量入库、批量改价等高频录入场景。
粘贴前弹出预览确认;上限 5 行之外的行会被跳过
paste-fill 事件:(未粘贴)
paste-preview 粘贴前弹预览确认(前 5 行 + 行数 + 跳过统计);max-rows 上限之外的行自动跳过,paste-fill 事件回传统计。
键为空或与已有键重复的行自动跳过;已有行内容不被覆盖
kv 模式同样支持粘贴:键 / 值 / 备注三列映射,空键与重复键自动跳过(已有行不被覆盖)——.env、Excel 配置表整体搬运。

Props ​

属性名类型默认值说明
model-value / v-modelBizEditableRow[][]行数据数组
columnsBizEditableColumn[][]列配置(见下)
mode'table' | 'form' | 'kv''table'表格行内编辑 / 卡片子表单 / 键值对编辑
form-columnsnumber2form 模式每行字段数
form-title(row, index) => string第 N 条form 模式卡片标题工厂
edit-trigger'always' | 'click''always'常驻控件 / 点击进入编辑(仅 table 模式)
show-indexbooleantrue序号列
addablebooleantrue顶部「新增一行」按钮
deletablebooleantrue行删除按钮
copyablebooleanfalse行复制按钮
confirm-deletebooleantrue删除前二次确认
min-rows / max-rowsnumber0 / Infinity行数下限(删除按钮隐藏)/ 上限(新增禁用)
summary-columnsstring[][]数值合计列(table 模式 el-table 合计行 / form 模式底部合计条)
summary-labelstring'合计'合计行首列文案
empty-textstring内置文案空态文案
row-template() => BizEditableRow—新增行默认值工厂
key-label / value-label / remark-labelstring键 / 值 / 备注kv 模式列文案
kv-remarkbooleanfalsekv 模式显示备注列
value-type'string' | 'number' | 'boolean' | 'json''string'kv 模式值类型校验
sensitivebooleanfalsekv 模式值列密码框掩码
pasteablebooleanfalse粘贴填充(table / kv 模式)
paste-previewbooleanfalse粘贴前预览确认(前 5 行 + 行数)
ts
interface BizEditableColumn {
  prop: string
  label: string
  type?: 'input' | 'number' | 'select' | 'date' | 'time' | 'switch' | 'text' | 'slot'
  /** form 模式:占满整行(备注、长文本) */
  full?: boolean
  width?: string | number
  minWidth?: string | number
  align?: 'left' | 'center' | 'right'
  placeholder?: string
  options?: { label: string; value: string | number | boolean }[]  // select
  min?: number; max?: number; precision?: number; controls?: boolean // number
  activeText?: string          // switch
  formatter?: (row, index) => string  // text 列展示
  required?: boolean
  validator?: (value, row, index) => string | true
  disabled?: (row, index) => boolean  // 单元格级锁定
}

Events ​

事件名参数说明
update:model-value(rows: BizEditableRow[])任意单元格 / 行变更回发
change(rows: BizEditableRow[])同 update(便于不绑 v-model 时监听)
row-add(row, index)新增行
row-delete(row, index)删除行
paste-fill(rows, appended, skipped)粘贴填充完成(追加的行 / 追加数 / 跳过数)

Slots ​

插槽名作用域说明
toolbar—工具栏左侧说明区
toolbar-extra—工具栏右侧、新增按钮之前的扩展区
col-字段名{ row, index, value }自定义单元格(type 为 slot 时必用,也可覆盖其他列)
empty—空态内容

Expose ​

名称类型说明
addRow(partial?: BizEditableRow) => void外部新增行
deleteRow(index: number) => Promise<void>外部删除行(走确认逻辑)
copyRow(index: number) => void复制行并插入其后
validate() => Promise<{ valid: boolean; errors: { index; prop; message }[] }>全量校验
clearValidate() => void清除错误标记
getRows() => BizEditableRow[]读取行数据副本
clearRows() => void清空全部行
toRecord() => Record<string, string>kv 模式:行数组 → 对象(键非空行,重复键后者覆盖)
loadRecord(record: Record<string, string>) => voidkv 模式:对象 → 行数组并提交
pasteText(text: string) => void程序化粘贴入口(等同 Ctrl+V 的 TSV 内容)