From 455c696ff0e871d6513473c74202b6c3b8fc8b40 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Wed, 28 Feb 2024 14:56:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(data-source,=20ui):=20=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=85=8D=E7=BD=AE=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=A8=A1=E5=9D=97=E5=87=BA=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data-source/src/createDataSourceManager.ts | 17 +++++++++++++---- packages/ui-react/src/page/formConfig.ts | 1 + packages/ui-vue2/src/page/formConfig.ts | 1 + packages/ui/src/page/src/formConfig.ts | 1 + 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/data-source/src/createDataSourceManager.ts b/packages/data-source/src/createDataSourceManager.ts index 879bfa5b..a36ab521 100644 --- a/packages/data-source/src/createDataSourceManager.ts +++ b/packages/data-source/src/createDataSourceManager.ts @@ -17,8 +17,8 @@ */ import { cloneDeep, union } from 'lodash-es'; -import type { AppCore } from '@tmagic/schema'; -import { getDepNodeIds, getNodes, replaceChildNode } from '@tmagic/utils'; +import type { AppCore, MApp, MNode, MPage, MPageFragment } from '@tmagic/schema'; +import { getDepNodeIds, getNodes, isPage, isPageFragment, replaceChildNode } from '@tmagic/utils'; import DataSourceManager from './DataSourceManager'; import type { ChangeEvent, DataSourceManagerData } from './types'; @@ -39,13 +39,13 @@ export const createDataSourceManager = (app: AppCore, useMock?: boolean, initial if (dsl.dataSources && dsl.dataSourceCondDeps && platform !== 'editor') { getNodes(getDepNodeIds(dsl.dataSourceCondDeps), dsl.items).forEach((node) => { node.condResult = dataSourceManager.compliedConds(node); - replaceChildNode(node, dsl!.items); + updateNode(node, dsl!); }); } if (dsl.dataSources && dsl.dataSourceDeps) { getNodes(getDepNodeIds(dsl.dataSourceDeps), dsl.items).forEach((node) => { - replaceChildNode(dataSourceManager.compiledNode(node), dsl!.items); + updateNode(dataSourceManager.compiledNode(node), dsl!); }); } @@ -73,3 +73,12 @@ export const createDataSourceManager = (app: AppCore, useMock?: boolean, initial return dataSourceManager; }; + +const updateNode = (node: MNode, dsl: MApp) => { + if (isPage(node) || isPageFragment(node)) { + const index = dsl.items?.findIndex((child: MNode) => child.id === node.id); + dsl.items.splice(index, 1, node as MPage | MPageFragment); + } else { + replaceChildNode(node, dsl!.items); + } +}; diff --git a/packages/ui-react/src/page/formConfig.ts b/packages/ui-react/src/page/formConfig.ts index 36c12986..39c5b418 100644 --- a/packages/ui-react/src/page/formConfig.ts +++ b/packages/ui-react/src/page/formConfig.ts @@ -26,6 +26,7 @@ export default [ { text: '页面标题', name: 'title', + type: 'data-source-input', }, { name: 'layout', diff --git a/packages/ui-vue2/src/page/formConfig.ts b/packages/ui-vue2/src/page/formConfig.ts index 36c12986..39c5b418 100644 --- a/packages/ui-vue2/src/page/formConfig.ts +++ b/packages/ui-vue2/src/page/formConfig.ts @@ -26,6 +26,7 @@ export default [ { text: '页面标题', name: 'title', + type: 'data-source-input', }, { name: 'layout', diff --git a/packages/ui/src/page/src/formConfig.ts b/packages/ui/src/page/src/formConfig.ts index 36c12986..39c5b418 100644 --- a/packages/ui/src/page/src/formConfig.ts +++ b/packages/ui/src/page/src/formConfig.ts @@ -26,6 +26,7 @@ export default [ { text: '页面标题', name: 'title', + type: 'data-source-input', }, { name: 'layout',