diff --git a/packages/designer/src/components/components/form-designer/form-designer.component.tsx b/packages/designer/src/components/components/form-designer/form-designer.component.tsx index f3f68c284833f8f428196af89f00f56e2ca2acb7..44a863b7b181ab4c725c3f46e34b7df80acc596c 100644 --- a/packages/designer/src/components/components/form-designer/form-designer.component.tsx +++ b/packages/designer/src/components/components/form-designer/form-designer.component.tsx @@ -25,7 +25,6 @@ export default defineComponent({ const propertyPanelInstance = ref(); const schema = ref(props.schema); const componentSchema = schema.value.module ? ref(schema.value.module.components[0]) : ref(schema.value); - const componentId = ref(componentSchema.value['id'] || 'root-component'); const dragulaCompostion = ref(); const fillTabs = ref(true); const controlTreeRef = ref(); @@ -57,7 +56,10 @@ export default defineComponent({ const schemaUtil = inject('schemaService') as UseSchemaService; const formCommandService = inject('useFormCommand') as UseFormCommandService; - const useFormSchema: any = inject('useFormSchema') as UseFormSchema; + const useFormSchema: UseFormSchema = inject('useFormSchema') as UseFormSchema; + const pageComponents = designerContext.getPageComponents(useFormSchema); + const componentSchemaForCanvas = ref(pageComponents[0]); + const componentId = ref(componentSchemaForCanvas.value['id'] || 'root-component'); function clearExternalComponentSelection(): void { externalComponentPanelRef.value?.clearSelection(); @@ -216,11 +218,28 @@ export default defineComponent({ * @returns */ function changePageComponent(selectionNode: any) { - const isPageChanged = selectionNode.componentId && componentId.value !== selectionNode.componentId; - if (isPageChanged) { - componentId.value = selectionNode.componentId; - const selectPageComponent = useFormSchema.getComponentById(componentId.value); - componentSchema.value = selectPageComponent; + // 仅在移动设计器模式下处理页面切换 + if (designerMode !== DesignerMode.Mobile) { + return; + } + + // 获取选择的页面Id + const selectedPageId = useFormSchema.getPageIdByComponentId(selectionNode.componentId); + if (!selectedPageId) { + return; + } + + // 检查页面是否发生变化 + const isPageChanged = componentId.value !== selectedPageId; + if (!isPageChanged) { + return; + } + + const selectPageComponent = useFormSchema.getComponentById(selectedPageId); + if (selectPageComponent) { + componentId.value = selectedPageId; + componentSchemaForCanvas.value = selectPageComponent; + canvasRef.value?.refreshCanvas(); } } @@ -316,7 +335,7 @@ export default defineComponent({