diff --git a/packages/core/client/src/block-provider/hooks/index.ts b/packages/core/client/src/block-provider/hooks/index.ts index 4b4e420920..9c9bb52c57 100644 --- a/packages/core/client/src/block-provider/hooks/index.ts +++ b/packages/core/client/src/block-provider/hooks/index.ts @@ -105,18 +105,23 @@ function getFilteredFormValues(form) { allFields.push(field); } }); - const readonlyPaths = allFields - .filter((field) => field?.componentProps?.readOnlySubmit) - .map((field) => { - const segments = field.path?.segments || []; - if (segments.length <= 1) { - return segments.join('.'); - } - return segments.slice(0, -1).join('.'); - }); - for (const path of readonlyPaths) { - _.unset(values, path); - } + const readonlyPaths = _.uniq( + allFields + .filter((field) => field?.componentProps?.readOnlySubmit) + .map((field) => { + const segments = field.path?.segments || []; + if (segments.length <= 1) { + return segments.join('.'); + } + return segments.slice(0, -1).join('.'); + }), + ); + readonlyPaths.forEach((path, index) => { + if (index !== 0 || path.includes('.')) { + // 清空值,但跳过第一层 + _.unset(values, path); + } + }); return values; }