diff --git a/src/components/FormBuilder/FormItemsRenderer.js b/src/components/FormBuilder/FormItemsRenderer.js index e352830..c7de69e 100644 --- a/src/components/FormBuilder/FormItemsRenderer.js +++ b/src/components/FormBuilder/FormItemsRenderer.js @@ -578,31 +578,19 @@ const FormItemsRenderer = ({ if (getIsDynamicFormItem(listOption, formItemProps)) return renderDynamicFormItem(params); - // 判断一个项是否需要显示按钮(不是 onlyForLabel 且不是隐藏的) - const isShow = (opt) => { - return !getHidden(opt.hidden) && !opt.onlyForLabel; - }; - - // 从后往前找,找到第一个需要显示按钮的项的索引 - const findLastShowIndex = () => { + // 从后往前查找最后一个普通可见表单项,特殊项不允许承载操作按钮。 + const findLastButtonIndex = () => { for (let i = listOptions.length - 1; i >= 0; i--) { const opt = listOptions[i]; - if (opt.render === FORM_ITEM_RENDER_ENUM.FORM_LIST) - return i; - if (isShow(opt)) + if (!getHidden(opt.hidden) && !opt.onlyForLabel && opt.render !== FORM_ITEM_RENDER_ENUM.FORM_LIST) { return i; + } } return -1; }; - // 判断下一个是否是嵌套的 FormList,或者是 onlyForLabel/hidden 项 - const nextOption = listOptions[listIndex + 1]; - const isNextNestedFormList = nextOption && nextOption.render === FORM_ITEM_RENDER_ENUM.FORM_LIST; - const isNextNoShow = nextOption && !isShow(nextOption); - - // 如果是最后一个需要显示按钮的项,或者下一个是嵌套的 FormList,或者下一个不需要按钮,则在其后添加操作按钮 - const lastShowIndex = findLastShowIndex(); - if (listIndex === lastShowIndex || isNextNestedFormList || isNextNoShow) { + const lastButtonIndex = findLastButtonIndex(); + if (listIndex === lastButtonIndex) { delete formItemProps.dependencies; delete formItemProps.shouldUpdate;