From 09bca38880af86aaec7b17a903b04d4985901f57 Mon Sep 17 00:00:00 2001 From: lvxiaojiao Date: Thu, 29 Feb 2024 15:02:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=A0=91=E7=BB=84=E4=BB=B6=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E6=94=AF=E6=8C=81=E9=80=89=E4=B8=AD=E9=A1=B9=E8=8E=B7?= =?UTF-8?q?=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh-CN/components/form/input-tree.md | 22 ++++----- docs/zh-CN/components/form/treeselect.md | 26 +++++----- .../src/plugin/Form/TreeSelect.tsx | 16 ++++++- packages/amis-editor/src/util.ts | 8 +++- .../amis/src/renderers/Form/InputTree.tsx | 34 ++++++------- .../amis/src/renderers/Form/TreeSelect.tsx | 48 +++++++++---------- 6 files changed, 86 insertions(+), 68 deletions(-) diff --git a/docs/zh-CN/components/form/input-tree.md b/docs/zh-CN/components/form/input-tree.md index a63418c5e..1fd8a8394 100755 --- a/docs/zh-CN/components/form/input-tree.md +++ b/docs/zh-CN/components/form/input-tree.md @@ -1144,17 +1144,17 @@ true false false [{label: 'A/B/C', value: 'a/b/c'},{label: 'A > `[name]`表示当前组件绑定的名称,即`name`属性,如果没有配置`name`属性,则通过`value`取值。 -| 事件名称 | 事件参数 | 说明 | -| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -| change | `items: object[]`选项集合(< 3.6.0 及以下版本 不支持该参数)
`[name]: string` 组件的值 | 选中值变化时触发 | -| addConfirm (3.6.4 及以上版本) | `[name]: string` 组件的值
`item: object` 新增的节点信息
`items: object[]`选项集合 | 新增节点提交时触发 | -| editConfirm (3.6.4 及以上版本) | `[name]: object` 组件的值
`item: object` 编辑的节点信息
`items: object[]`选项集合 | 编辑节点提交时触发 | -| deleteConfirm (3.6.4 及以上版本) | `[name]: string` 组件的值
`item: object` 删除的节点信息
`items: object[]`选项集合 | 删除节点提交时触发 | -| deferLoadFinished (3.6.4 及以上版本) | `[name]: object` 组件的值
`result: object` deferApi 懒加载远程请求成功后返回的数据
`items: object[]`选项集合 | 懒加载接口远程请求成功时触发 | -| add(不推荐) | `[name]: object` 新增的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 新增节点提交时触发 | -| edit(不推荐) | `[name]: object` 编辑的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 编辑节点提交时触发 | -| delete(不推荐) | `[name]: object` 删除的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 删除节点提交时触发 | -| loadFinished(不推荐) | `[name]: object` deferApi 懒加载远程请求成功后返回的数据 | 懒加载接口远程请求成功时触发 | +| 事件名称 | 事件参数 | 说明 | +| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | +| change | `items: object[]`选项集合(3.6.0 及以上版本)
`item: object`选中的节点(6.2.0 及以上版本)
`[name]: string` 组件的值 | 选中值变化时触发 | +| addConfirm (3.6.4 及以上版本) | `[name]: string` 组件的值
`item: object` 新增的节点信息
`items: object[]`选项集合 | 新增节点提交时触发 | +| editConfirm (3.6.4 及以上版本) | `[name]: object` 组件的值
`item: object` 编辑的节点信息
`items: object[]`选项集合 | 编辑节点提交时触发 | +| deleteConfirm (3.6.4 及以上版本) | `[name]: string` 组件的值
`item: object` 删除的节点信息
`items: object[]`选项集合 | 删除节点提交时触发 | +| deferLoadFinished (3.6.4 及以上版本) | `[name]: object` 组件的值
`result: object` deferApi 懒加载远程请求成功后返回的数据
`items: object[]`选项集合 | 懒加载接口远程请求成功时触发 | +| add(不推荐) | `[name]: object` 新增的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 新增节点提交时触发 | +| edit(不推荐) | `[name]: object` 编辑的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 编辑节点提交时触发 | +| delete(不推荐) | `[name]: object` 删除的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 删除节点提交时触发 | +| loadFinished(不推荐) | `[name]: object` deferApi 懒加载远程请求成功后返回的数据 | 懒加载接口远程请求成功时触发 | ### change diff --git a/docs/zh-CN/components/form/treeselect.md b/docs/zh-CN/components/form/treeselect.md index abc77b4d6..ca0c1ff97 100755 --- a/docs/zh-CN/components/form/treeselect.md +++ b/docs/zh-CN/components/form/treeselect.md @@ -409,19 +409,19 @@ order: 60 > `[name]`表示当前组件绑定的名称,即`name`属性,如果没有配置`name`属性,则通过`value`取值。 -| 事件名称 | 事件参数 | 说明 | -| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -| change | `[name]: string` 组件的值
`items: object[]`选项集合(< 3.6.0 及以下版本 不支持该参数) | 选中值变化时触发 | -| blur | `[name]: string` 组件的值
`items: object[]`选项集合(< 3.6.4 及以下版本 不支持该参数) | 输入框失去焦点时触发 | -| focus | `[name]: string` 组件的值
`items: object[]`选项集合(< 3.6.4 及以下版本 不支持该参数) | 输入框获取焦点时触发 | -| addConfirm (3.6.4 及以上版本) | `[name]: string` 组件的值
`item: object` 新增的节点信息
`items: object[]`选项集合 | 新增节点提交时触发 | -| editConfirm (3.6.4 及以上版本) | `[name]: object` 组件的值
`item: object` 编辑的节点信息
`items: object[]`选项集合 | 编辑节点提交时触发 | -| deleteConfirm (3.6.4 及以上版本) | `[name]: string` 组件的值
`item: object` 删除的节点信息
`items: object[]`选项集合 | 删除节点提交时触发 | -| deferLoadFinished (3.6.4 及以上版本) | `[name]: object` 组件的值
`result: object` deferApi 懒加载远程请求成功后返回的数据
`items: object[]`选项集合 | 懒加载接口远程请求成功时触发 | -| add(不推荐) | `[name]: object` 新增的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 新增节点提交时触发 | -| edit(不推荐) | `[name]: object` 编辑的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 编辑节点提交时触发 | -| delete(不推荐) | `[name]: object` 删除的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 删除节点提交时触发 | -| loadFinished(不推荐) | `[name]: object` deferApi 懒加载远程请求成功后返回的数据 | 懒加载接口远程请求成功时触发 | +| 事件名称 | 事件参数 | 说明 | +| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | +| change | `[name]: string` 组件的值
`item: object`选中的节点(6.2.0 及以上版本)
`items: object[]`选项集合(3.6.0 及以上版本) | 选中值变化时触发 | +| blur | `[name]: string` 组件的值
``item: object`选中的节点(6.2.0 及以上版本)
items: object[]`选项集合(3.6.4 及以上版本) | 输入框失去焦点时触发 | +| focus | `[name]: string` 组件的值
`item: object`选中的节点(6.2.0 及以上版本)
`items: object[]`选项集合(3.6.4 及以上版本) | 输入框获取焦点时触发 | +| addConfirm (3.6.4 及以上版本) | `[name]: string` 组件的值
`item: object` 新增的节点信息
`items: object[]`选项集合 | 新增节点提交时触发 | +| editConfirm (3.6.4 及以上版本) | `[name]: object` 组件的值
`item: object` 编辑的节点信息
`items: object[]`选项集合 | 编辑节点提交时触发 | +| deleteConfirm (3.6.4 及以上版本) | `[name]: string` 组件的值
`item: object` 删除的节点信息
`items: object[]`选项集合 | 删除节点提交时触发 | +| deferLoadFinished (3.6.4 及以上版本) | `[name]: object` 组件的值
`result: object` deferApi 懒加载远程请求成功后返回的数据
`items: object[]`选项集合 | 懒加载接口远程请求成功时触发 | +| add(不推荐) | `[name]: object` 新增的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 新增节点提交时触发 | +| edit(不推荐) | `[name]: object` 编辑的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 编辑节点提交时触发 | +| delete(不推荐) | `[name]: object` 删除的节点信息
`items: object[]`选项集合(< 2.3.2 及以下版本 为`options`) | 删除节点提交时触发 | +| loadFinished(不推荐) | `[name]: object` deferApi 懒加载远程请求成功后返回的数据 | 懒加载接口远程请求成功时触发 | ### change diff --git a/packages/amis-editor/src/plugin/Form/TreeSelect.tsx b/packages/amis-editor/src/plugin/Form/TreeSelect.tsx index 991496035..2a31eb0d4 100644 --- a/packages/amis-editor/src/plugin/Form/TreeSelect.tsx +++ b/packages/amis-editor/src/plugin/Form/TreeSelect.tsx @@ -90,7 +90,8 @@ export class TreeSelectControlPlugin extends BasePlugin { eventLabel: '获取焦点', description: '输入框获取焦点时触发', dataSchema: (manager: EditorManager) => { - const {value, items} = resolveOptionEventDataSchame(manager); + const {value, items, itemSchema} = + resolveOptionEventDataSchame(manager); return [ { @@ -101,6 +102,11 @@ export class TreeSelectControlPlugin extends BasePlugin { title: '数据', properties: { value, + item: { + type: 'object', + title: '选中的项', + properties: itemSchema + }, items } } @@ -114,7 +120,8 @@ export class TreeSelectControlPlugin extends BasePlugin { eventLabel: '失去焦点', description: '输入框失去焦点时触发', dataSchema: (manager: EditorManager) => { - const {value, items} = resolveOptionEventDataSchame(manager); + const {value, items, itemSchema} = + resolveOptionEventDataSchame(manager); return [ { @@ -125,6 +132,11 @@ export class TreeSelectControlPlugin extends BasePlugin { title: '数据', properties: { value, + item: { + type: 'object', + title: '选中的项', + properties: itemSchema + }, items } } diff --git a/packages/amis-editor/src/util.ts b/packages/amis-editor/src/util.ts index 4b1eebc66..49f70ddf4 100644 --- a/packages/amis-editor/src/util.ts +++ b/packages/amis-editor/src/util.ts @@ -341,7 +341,8 @@ export const TREE_BASE_EVENTS = (schema: any) => { eventLabel: '值变化', description: '选中值变化时触发', dataSchema: (manager: EditorManager) => { - const {value, items} = resolveOptionEventDataSchame(manager); + const {value, items, itemSchema} = + resolveOptionEventDataSchame(manager); return [ { @@ -352,6 +353,11 @@ export const TREE_BASE_EVENTS = (schema: any) => { title: '数据', properties: { value, + item: { + type: 'object', + title: '选中的项', + properties: itemSchema + }, items } } diff --git a/packages/amis/src/renderers/Form/InputTree.tsx b/packages/amis/src/renderers/Form/InputTree.tsx index d88a3e659..caf9ac232 100644 --- a/packages/amis/src/renderers/Form/InputTree.tsx +++ b/packages/amis/src/renderers/Form/InputTree.tsx @@ -263,6 +263,16 @@ export default class TreeControl extends React.Component { } } + resolveOption(options: Array