From a577d7cee369dd3f145751f1e396bc685fcaa488 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Wed, 23 Sep 2026 11:43:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(editor):=20=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=B7=AF=E5=BE=84=E6=94=AF=E6=8C=81=E6=95=B0?= =?UTF-8?q?=E7=BB=84=E4=B8=8B=E6=A0=87=EF=BC=8C=E5=B9=B6=E7=BB=86=E5=8C=96?= =?UTF-8?q?=20field-select=20=E4=B8=8E=E5=B1=95=E7=A4=BA=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E7=9A=84=E7=B1=BB=E5=9E=8B=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/form-config/rules.md | 2 +- .../fields/DataSourceFieldSelect/Index.vue | 22 ++-- .../editor/src/fields/configs/displayConds.ts | 18 +-- .../editor/src/utils/data-source/index.ts | 74 +++++++++-- packages/editor/src/utils/type-match-rules.ts | 54 ++++++-- .../tests/unit/utils/data-source.spec.ts | 123 +++++++++++++++++- .../tests/unit/utils/typeMatchRules.spec.ts | 105 ++++++++++++++- 7 files changed, 351 insertions(+), 47 deletions(-) diff --git a/docs/form-config/rules.md b/docs/form-config/rules.md index a36f386a..4d9f05d3 100644 --- a/docs/form-config/rules.md +++ b/docs/form-config/rules.md @@ -165,7 +165,7 @@ app.use(MagicForm, { | `page-fragment-select` / `ui-select` | `string \| number`;有节点树时须为已有页面片 / 组件 id | | `data-source-input` | `string`;`${...}` 绑定须指向已有数据源/字段 | | `data-source-method-select` | `[dsId, methodName]`,方法须在该数据源可选方法集中 | -| `data-source-field-select` | 数据源路径 `string[]`;有 `fieldConfig` 且非路径值时跳过 | +| `data-source-field-select` | 数据源路径 `Array`。`number` 只能作数组下标;数字字符串先按字段名匹配,没有同名字段时才作下标。元素结构为空的下标,在限定了具体字段类型时不通过。有 `fieldConfig` 且非路径值时按 `fieldConfig` 校验 | | `data-source-select` | `value: 'id'` 为已有 ds id;否则为含 `isBindDataSource` + `dataSourceId` 的对象 | | `code-select` | `{ hookType: 'code', hookData }` 的浅层结构校验(`codeId` 存在性 / 数据源方法存在性由内部 `code-select-col`、`data-source-method-select` 单元格各自校验,只标红出错单元格) | | `data-source-fields` / `data-source-mocks` / `data-source-methods` | 数组 + 浅层结构(`name`/`type`、`title`/`enable`/`data`、`content`/`params` 等) | diff --git a/packages/editor/src/fields/DataSourceFieldSelect/Index.vue b/packages/editor/src/fields/DataSourceFieldSelect/Index.vue index f0b51802..84e6d0e0 100644 --- a/packages/editor/src/fields/DataSourceFieldSelect/Index.vue +++ b/packages/editor/src/fields/DataSourceFieldSelect/Index.vue @@ -51,7 +51,6 @@