From 04cdf9ecc2849fe10d7b80739ba84addc309c6aa Mon Sep 17 00:00:00 2001 From: ibiz_zhf <1204297681@qq.com> Date: Tue, 9 Dec 2025 21:01:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=8D=E5=90=88=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E9=A1=B9=E6=89=A9=E5=B1=95=E7=BB=84=E4=BB=B6=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=80=BC=E9=A1=B9=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../composite-form-item-ex.controller.ts | 17 +++++++++++++++-- .../composite-form-item-ex.state.ts | 7 +++++++ .../composite-form-item-ex.tsx | 4 ++-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.controller.ts b/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.controller.ts index 46b3c6d60..5a84b4453 100644 --- a/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.controller.ts +++ b/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.controller.ts @@ -21,6 +21,17 @@ export class CompositeFormItemExController extends FormItemController { return new CompositeFormItemExState(this.parent?.state); } + get name(): string { + return this.state.editorValueItem || this.model.id!; + } + + get value(): unknown { + const option = this.switchOptions.find( + item => item.id === this.state.editorId, + ); + return this.data?.[option?.valueItem || this.model.id!]; + } + /** * @description 默认显示的编辑器类型 * @type {string} @@ -44,7 +55,7 @@ export class CompositeFormItemExController extends FormItemController { /** * @description 切换菜单选项 - * @type {{ id: string; name: string; icon?: ISysImage, editor?: IData }[]} + * @type {{ id: string; name: string; icon?: ISysImage, editor?: IData, valueItem?: string }[]} * @memberof CompositeFormItemExController */ switchOptions: { @@ -52,6 +63,7 @@ export class CompositeFormItemExController extends FormItemController { name: string; icon?: ISysImage; editor?: IData; + valueItem?: string; }[] = []; /** @@ -85,6 +97,7 @@ export class CompositeFormItemExController extends FormItemController { name: item.text, icon: item.sysImage, editor: item.data, + valueItem: item.userData, }; }); this.defaultType = this.switchOptions[0]?.id || ''; @@ -116,6 +129,7 @@ export class CompositeFormItemExController extends FormItemController { if (!option) { return; } + this.state.editorValueItem = option.valueItem || ''; const editorModel = { ...this.createEditorModel(), ...option.editor, @@ -162,7 +176,6 @@ export class CompositeFormItemExController extends FormItemController { if (!id || id === this.state.editorId) { return; } - this.setDataValue('', this.name); if (this.valueItem && this.valueItem.id) { this.setDataValue(id, this.valueItem.id); } diff --git a/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.state.ts b/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.state.ts index 85ebad5bc..670eab514 100644 --- a/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.state.ts +++ b/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.state.ts @@ -7,4 +7,11 @@ export class CompositeFormItemExState extends FormItemState { * @memberof CompositeFormItemExState */ editorId: string = ''; + + /** + * @description 当前选中的编辑器值项 + * @type {string} + * @memberof CompositeFormItemExState + */ + editorValueItem: string = ''; } diff --git a/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.tsx b/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.tsx index be1993e2c..18ad8bc79 100644 --- a/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.tsx +++ b/src/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.tsx @@ -33,10 +33,10 @@ export const CompositeFormItemEx = defineComponent({ const c = props.controller; const onValueChange = ( val: unknown, - name?: string, + _name?: string, ignore: boolean = false, ): void => { - props.controller.setDataValue(val, name, ignore); + props.controller.setDataValue(val, c.name, ignore); }; // 是否加载中 -- Gitee