From 98f573fab4de2d70340aefcf732e3588d94e18db Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Mon, 17 Aug 2026 21:39:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=A5=E6=A0=BC=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=A4=B1=E8=B4=A5=E8=A1=8C=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/batch-form-model.test.ts | 22 +++++++++++++++++++ .../modules/batch-form-model.ts | 7 ++++++ 2 files changed, 29 insertions(+) diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/subpackagerelation/modules/batch-form-model.test.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/subpackagerelation/modules/batch-form-model.test.ts index fe62ce6f..91ba7e16 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/subpackagerelation/modules/batch-form-model.test.ts +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/subpackagerelation/modules/batch-form-model.test.ts @@ -326,6 +326,28 @@ describe('batch-form-model', () => { ); }); + it('keeps every row when a runtime row index is not a number', () => { + const rows = [createBatchRow()]; + const result = applyBatchResult(rows, { + successCount: 0, + failureCount: 1, + failures: [ + { + clientKey: 'unknown-key', + rowIndex: '1' as unknown as number, + errorCode: 'INVALID_INDEX', + message: '行号类型错误', + }, + ], + }); + const generalError = '批量保存结果无法匹配,请核对后重试'; + + expect(result.rows).toEqual(rows); + expect(result.rowErrors).toEqual( + new Map(rows.map((row) => [row.clientKey, generalError])), + ); + }); + it('returns no rows or errors when every row succeeds', () => { const result = applyBatchResult([createBatchRow()], { successCount: 1, diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/subpackagerelation/modules/batch-form-model.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/subpackagerelation/modules/batch-form-model.ts index 17d807ca..829558a6 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/subpackagerelation/modules/batch-form-model.ts +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/subpackagerelation/modules/batch-form-model.ts @@ -111,6 +111,13 @@ export function applyBatchResult( const failedClientKeys = new Set(); const rowErrors = new Map(); for (const failure of result.failures) { + if ( + !Number.isInteger(failure.rowIndex) || + failure.rowIndex < 1 || + failure.rowIndex > rows.length + ) { + return unsafeResult(); + } const rowByKey = rowByClientKey.get(failure.clientKey); const rowByIndex = rows[failure.rowIndex - 1]; if (