diff --git a/packages/table/src/table.ts b/packages/table/src/table.ts index 6e046233d0..7ec2e50756 100644 --- a/packages/table/src/table.ts +++ b/packages/table/src/table.ts @@ -3603,7 +3603,11 @@ export default defineComponent({ const rowid = getRowid($xeTable, row) const newRecord = XEUtils.clone(Object.assign({}, record), true) XEUtils.set(newRecord, rowkey, rowid) - Object.assign(row, newRecord) + if (rowid !== '') { + // 如果row不是响应性对象,或者row不是从表格数据获取的响应性对象,都要导致更新失败 + row = tableMethods.getRowById(rowid) + Object.assign(row, newRecord) + } }) } return nextTick() diff --git a/packages/table/src/util.ts b/packages/table/src/util.ts index aee3b7cde9..7cb1610869 100644 --- a/packages/table/src/util.ts +++ b/packages/table/src/util.ts @@ -109,7 +109,11 @@ export function getRowkey ($xeTable: VxeTableConstructor) { // 行主键 value export function getRowid ($xeTable: VxeTableConstructor, row: any) { const rowid = XEUtils.get(row, getRowkey($xeTable)) - return XEUtils.eqNull(rowid) ? '' : encodeURIComponent(rowid) + if (XEUtils.eqNull(rowid)) { + return '' + } + const type = typeof rowid + return (type === 'number' || type === 'bigint') ? rowid : encodeURIComponent(rowid) } export interface XEColumnInstance {