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 414bd57a..aa803c3b 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 @@ -217,6 +217,22 @@ describe('batch-form-model', () => { ); }); + it('keeps every row when input client keys are duplicated and failures are empty', () => { + const rows = [createBatchRow(), createBatchRow()]; + rows[1]!.clientKey = rows[0]!.clientKey; + const result = applyBatchResult(rows, { + successCount: 2, + failureCount: 0, + failures: [], + }); + 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 550737d5..53f1e8a7 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 @@ -80,10 +80,6 @@ export function applyBatchResult( rows: BatchFormRow[], result: LmsSubPackageRelationApi.BatchCreateResult, ): { rows: BatchFormRow[]; rowErrors: Map } { - if (result.failures.length === 0) { - return { rows: [], rowErrors: new Map() }; - } - const generalError = '批量保存结果无法匹配,请核对后重试'; const rowByClientKey = new Map(); for (const row of rows) { @@ -96,6 +92,10 @@ export function applyBatchResult( rowByClientKey.set(row.clientKey, row); } + if (result.failures.length === 0) { + return { rows: [], rowErrors: new Map() }; + } + const failedClientKeys = new Set(); const rowErrors = new Map(); for (const failure of result.failures) {