From dbbb1fa5c689a0bab3af2b9a35fd7cab2465bb37 Mon Sep 17 00:00:00 2001 From: Cano1997 <1978141412@qq.com> Date: Thu, 11 Sep 2025 19:47:21 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=A0=91=E8=A1=A8=E6=A0=BC=E9=83=A8=E4=BB=B6=E6=B3=A8?= =?UTF-8?q?=E5=85=A5=E5=B1=9E=E6=80=A7=E3=80=81=E8=A1=A8=E6=A0=BC=E5=88=97?= =?UTF-8?q?=E6=B3=A8=E5=85=A5=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/control/tree-grid/tree-grid.tsx | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/control/tree-grid/tree-grid.tsx b/src/control/tree-grid/tree-grid.tsx index d6fc2a617..5d9489769 100644 --- a/src/control/tree-grid/tree-grid.tsx +++ b/src/control/tree-grid/tree-grid.tsx @@ -16,7 +16,11 @@ import { } from 'vue'; import { recursiveIterate } from '@ibiz-template/core'; import { IDEGridColumn, IDETreeGrid } from '@ibiz/model-core'; -import { IControlProvider, TreeGridController } from '@ibiz-template/runtime'; +import { + IControlProvider, + ScriptFactory, + TreeGridController, +} from '@ibiz-template/runtime'; import { useRowEditPopover } from '../grid/row-edit-popover/use-row-edit-popover'; import { IGridProps, @@ -27,6 +31,24 @@ import { } from '../grid/grid'; import { renderChildColumn } from '../grid/grid/grid'; +/** + * @description 绘制树表格的注入属性,表格列注入属性由表格中计算绘制 + * @param {IDETreeGrid} model + * @param {IParams} params + * @returns {*} {IParams} + */ +function renderAttrs(model: IDETreeGrid, params: IParams): IParams { + const attrs: IParams = {}; + model.controlAttributes?.forEach(item => { + if (item.attrName && item.attrValue) { + attrs[item.attrName!] = ScriptFactory.execSingleLine(item.attrValue!, { + ...params, + }); + } + }); + return attrs; +} + export const TreeGridControl = defineComponent({ name: 'IBizTreeGridControl', props: { @@ -337,6 +359,9 @@ export const TreeGridControl = defineComponent({ this.c.state.showTreeGrid ? state.treeGirdData : this.tableData } {...this.$attrs} + {...renderAttrs(this.c.model, { + ...this.c.getEventArgs(), + })} > {{ empty: this.renderNoData, -- Gitee From 3bc587b8ff6f00760955cee224016b8e42ffcbdd Mon Sep 17 00:00:00 2001 From: Cano1997 <1978141412@qq.com> Date: Thu, 11 Sep 2025 19:48:03 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=A0=91=E8=A1=A8=E6=A0=BC=E5=A2=9E=E5=BC=BA=E9=83=A8?= =?UTF-8?q?=E4=BB=B6=E6=B3=A8=E5=85=A5=E5=B1=9E=E6=80=A7=E3=80=81=E6=A0=91?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=B3=A8=E5=85=A5=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 5 ++++ src/control/tree-grid-ex/tree-grid-ex.tsx | 34 ++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b65af2fe4..f2cba6e6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ ## [Unreleased] +### Added + +- 新增支持树表格部件注入属性、表格列注入属性 +- 新增支持树表格增强部件注入属性、树节点注入属性 + ## [0.7.41-alpha.25] - 2025-09-11 ### Added diff --git a/src/control/tree-grid-ex/tree-grid-ex.tsx b/src/control/tree-grid-ex/tree-grid-ex.tsx index 6adc4ed8b..ceab01fd7 100644 --- a/src/control/tree-grid-ex/tree-grid-ex.tsx +++ b/src/control/tree-grid-ex/tree-grid-ex.tsx @@ -17,17 +17,39 @@ import { resolveComponent, VNodeArrayChildren, } from 'vue'; -import { IDETreeColumn, IDETreeGridEx } from '@ibiz/model-core'; +import { IDETreeColumn, IDETreeNode, IDETreeGridEx } from '@ibiz/model-core'; import { ITreeNodeData, IControlProvider, TreeGridExController, + ScriptFactory, } from '@ibiz-template/runtime'; import { RuntimeError } from '@ibiz-template/core'; import { createUUID } from 'qx-util'; import { useRowEditPopover } from './use-row-edit-popover'; import './tree-grid-ex.scss'; +/** + * @description 绘制成员的attrs + * @param {IDETreeGridEx} model + * @param {IParams} params + * @returns {*} {IParams} + */ +function renderAttrs( + model: IDETreeNode | IDETreeGridEx, + params: IParams, +): IParams { + const attrs: IParams = {}; + model.controlAttributes?.forEach(item => { + if (item.attrName && item.attrValue) { + attrs[item.attrName!] = ScriptFactory.execSingleLine(item.attrValue!, { + ...params, + }); + } + }); + return attrs; +} + export const TreeGridExControl = defineComponent({ name: 'IBizTreeGridExControl', props: { @@ -110,6 +132,7 @@ export const TreeGridExControl = defineComponent({ id: node._id, _uuid: node._uuid, hasChildren: !node._leaf, + _deData: node._deData, }; if (!noChild && !node._leaf && node._children !== undefined) { temp.children = toElNodes(node._children); @@ -317,10 +340,16 @@ export const TreeGridExControl = defineComponent({ const comp = resolveComponent( this.c.providers[columnName!].component, ); + const nodeData = rowState.data; + const nodeModel = this.c.getNodeModel(nodeData._nodeId)!; return h(comp, { controller: columnC, row: rowState, key: rowState.data._uuid + columnName, + attrs: renderAttrs(nodeModel, { + ...this.c.getEventArgs(), + data: rowState.data, + }), }); } return null; @@ -346,6 +375,9 @@ export const TreeGridExControl = defineComponent({ onExpandChange={this.onExpandChange} row-class-name={this.handleRowClassName} load={this.loadData} + {...renderAttrs(this.c.model, { + ...this.c.getEventArgs(), + })} > {{ empty: this.renderNoData, -- Gitee