diff --git a/packages/designer/src/components/composition/command.service.tsx b/packages/designer/src/components/composition/command.service.tsx index 1293e5220e9d9edaeb99cc31acc1f4e8200da470..cab0c8779c4db15b868b142d62f9c959f116163d 100644 --- a/packages/designer/src/components/composition/command.service.tsx +++ b/packages/designer/src/components/composition/command.service.tsx @@ -637,8 +637,8 @@ export function useFormCommandService(formSchemaService: UseFormSchema, useFormS } function generateCommunication(propertyData: any, event, events) { const eventLabel = propertyData[event.label]; - const communicationIds = eventLabel.slice(eventLabel.indexOf(':') + 1, eventLabel.length); - const communicationIdArray = communicationIds.split(';'); + const communicationLabels = eventLabel.split(';').filter(item => item.includes('communication:')); + const communicationIdArray = communicationLabels.map(item => item.replace('communication:', '')); communicationIdArray.forEach(communicationId => { const boundEventsListItem = { command: {}, diff --git a/packages/designer/src/components/composition/events-editor-utils.ts b/packages/designer/src/components/composition/events-editor-utils.ts index 67a866b13b0e0d07be1bee75d2c3baa133c44de5..4f18afed438630798e30e7483609267d3e2621c2 100644 --- a/packages/designer/src/components/composition/events-editor-utils.ts +++ b/packages/designer/src/components/composition/events-editor-utils.ts @@ -202,13 +202,13 @@ export function useEventsEditorUtils(commandService: UseFormCommandService, form const communicationIds: string[] = []; relatedBoundList.map(boundCommunication => { if (boundCommunication.communication) { - communicationIds.push(boundCommunication.communication.id); + communicationIds.push(`communication:${boundCommunication.communication.id}`); deleteActionItem(data.id, event.label); return; } }); if (communicationIds.length) { - data[event.label] = `communication:${communicationIds.join(';')}`; + data[event.label] = communicationIds.join(';'); } } } diff --git a/packages/designer/src/components/composition/use-form-validation.ts b/packages/designer/src/components/composition/use-form-validation.ts index edeeb22b997c2ea488ad62be7c42b21505072a10..ea7fda42a0b209ef9dbc0f0349592a554d6964eb 100644 --- a/packages/designer/src/components/composition/use-form-validation.ts +++ b/packages/designer/src/components/composition/use-form-validation.ts @@ -128,7 +128,7 @@ export function useFormValidation(useFormSchema: UseFormSchema, formCommandServi // 控件名称 const controlName = (controlInfo && controlInfo.parentPathName) || boundEvent.id; - const communicationIds = commandLabel.replace('communication:', '').split(';'); + const communicationIds = commandLabel.replace(/communication:/g, '').split(';'); if (communicationIds?.length) { const communications = useFormSchema.getFormSchema().module.communications || []; for (const communicationId of communicationIds) { diff --git a/packages/designer/src/components/composition/use-parameter-editor-data.ts b/packages/designer/src/components/composition/use-parameter-editor-data.ts index fbfc76e5ffb9af455af52dac6995611a4d16c5a4..6b32db774adf73960b1236372b898f5f42fecb16 100644 --- a/packages/designer/src/components/composition/use-parameter-editor-data.ts +++ b/packages/designer/src/components/composition/use-parameter-editor-data.ts @@ -24,8 +24,8 @@ export interface ViewModelTreeNode { export function useParameterEditorData(useFormSchemaComposition: UseFormSchema) { - function getComponentRefNode(componentId: string) { - const components = useFormSchemaComposition.getComponents(); + function getComponentRefNode(formSchema: any, componentId: string) { + const { components } = formSchema.module; const rootCmp = components.find(component => component.componentType === 'frame'); let componentRefResult = useFormSchemaComposition.selectNodeAndParentNode(rootCmp, (item) => item.component === componentId, rootCmp); @@ -42,13 +42,13 @@ export function useParameterEditorData(useFormSchemaComposition: UseFormSchema) }); } - function getDataGridComponentName(component: any) { + function getDataGridComponentName(formSchema: any, component: any) { const treeGrid = useFormSchemaComposition.selectNode(component, (item: any) => item.type === 'tree-grid'); if (treeGrid) { return '树表格组件'; } - const componentRefResult = getComponentRefNode(component.id); + const componentRefResult = getComponentRefNode(formSchema, component.id); if (!componentRefResult || !componentRefResult.parentNode) { return; } @@ -64,14 +64,16 @@ export function useParameterEditorData(useFormSchemaComposition: UseFormSchema) return '表格组件'; } - function getViewModelName(component: any, componentName: string) { - + function getViewModelName(component: any, componentName: string, formSchema?: any) { + if (!formSchema) { + formSchema = useFormSchemaComposition.getFormSchema(); + } switch (component?.componentType) { case ComponentType.Frame: { return '根组件'; } case ComponentType.dataGrid: { - return getDataGridComponentName(component); + return getDataGridComponentName(formSchema, component); } case ComponentType.uploader: { return '附件组件'; @@ -208,7 +210,7 @@ export function useParameterEditorData(useFormSchemaComposition: UseFormSchema) const viewModel = formSchema.module.viewmodels.find(item => item.id === viewModelId); const component = formSchema.module.components.find(item => item.viewModel === viewModelId); if (viewModel && component) { - name = getViewModelName(component, viewModel.name); + name = getViewModelName(component, viewModel.name, formSchema); } const cmpTreeData: ComponentTreeNode = { data: cmp,