From 4ed226efd4a22922736aa0333740ce7e026cb77b Mon Sep 17 00:00:00 2001 From: Cano1997 <1978141412@qq.com> Date: Wed, 11 Jun 2025 09:44:30 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=A7=86=E5=9B=BE?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E8=8E=B7=E5=8F=96=E8=A7=86=E5=9B=BE=E5=B8=83?= =?UTF-8?q?=E5=B1=80=E9=9D=A2=E6=9D=BF=E4=B8=AD=E9=83=A8=E4=BB=B6=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app-portal-view-model.ts | 8 ++--- .../view/chart-view-model/chart-view-model.ts | 8 ++--- .../view/edit-view-model/edit-view-model.ts | 8 ++--- .../view/edit-view3-model/edit-view3-model.ts | 4 +-- .../view/grid-view-model/grid-view-model.ts | 8 ++--- .../view/index-view-model/index-view-model.ts | 8 ++--- .../list-exp-view-model.ts | 3 +- .../view/list-view-model/list-view-model.ts | 8 ++--- .../src/view/md-view-model/md-view-model.ts | 3 +- .../mpickup-view2-model.ts | 8 ++--- .../pickup-view-model/pickup-view-model.ts | 6 +--- .../pickup-view2-model/pickup-view2-model.ts | 8 ++--- .../tree-exp-view-model.ts | 3 +- .../model/src/view/view-model/view-model.ts | 29 +++++++++++++++++++ .../wf-dyna-edit-view3-model.ts | 4 +-- 15 files changed, 53 insertions(+), 63 deletions(-) diff --git a/packages/model/src/view/app-portal-view-model/app-portal-view-model.ts b/packages/model/src/view/app-portal-view-model/app-portal-view-model.ts index 15449b9d17b..3f345d0b5d5 100644 --- a/packages/model/src/view/app-portal-view-model/app-portal-view-model.ts +++ b/packages/model/src/view/app-portal-view-model/app-portal-view-model.ts @@ -1,8 +1,4 @@ -import { - getControl, - IPSAppPortalView, - IPSSysDashboard, -} from '@ibiz/dynamic-model-api'; +import { IPSAppPortalView, IPSSysDashboard } from '@ibiz/dynamic-model-api'; import { DashboardModel } from '../../control'; import { DefectModelError } from '../../error'; import { ViewModel } from '../view-model/view-model'; @@ -21,7 +17,7 @@ export class AppPortalViewModel extends ViewModel { protected async onInit(): Promise { await super.onInit(); - const ctrl = getControl(this.source, 'dashboard') as IPSSysDashboard; + const ctrl = this.getControl('dashboard') as IPSSysDashboard; if (!ctrl) { throw new DefectModelError(this.source, '缺少叫dashboard的数据看板部件'); } diff --git a/packages/model/src/view/chart-view-model/chart-view-model.ts b/packages/model/src/view/chart-view-model/chart-view-model.ts index 02e6a06dbdc..bdc77537405 100644 --- a/packages/model/src/view/chart-view-model/chart-view-model.ts +++ b/packages/model/src/view/chart-view-model/chart-view-model.ts @@ -1,8 +1,4 @@ -import { - IPSAppDEChartView, - IPSDEChart, - getControl, -} from '@ibiz/dynamic-model-api'; +import { IPSAppDEChartView, IPSDEChart } from '@ibiz/dynamic-model-api'; import { ViewModel } from '../view-model/view-model'; import { ChartModel } from '../../control'; import { DefectModelError } from '../../error'; @@ -12,7 +8,7 @@ export class ChartViewModel extends ViewModel { protected async onInit(): Promise { await super.onInit(); - const ctrl = getControl(this.source, 'chart') as IPSDEChart; + const ctrl = this.getControl('chart') as IPSDEChart; if (!ctrl) { throw new DefectModelError(this.source, '缺少叫chart的图表部件'); } diff --git a/packages/model/src/view/edit-view-model/edit-view-model.ts b/packages/model/src/view/edit-view-model/edit-view-model.ts index 7d4534a1008..ce24fe79856 100644 --- a/packages/model/src/view/edit-view-model/edit-view-model.ts +++ b/packages/model/src/view/edit-view-model/edit-view-model.ts @@ -1,8 +1,4 @@ -import { - getControl, - IPSAppDEEditView, - IPSDEEditForm, -} from '@ibiz/dynamic-model-api'; +import { IPSAppDEEditView, IPSDEEditForm } from '@ibiz/dynamic-model-api'; import { EditFormModel } from '../../control'; import { DefectModelError } from '../../error'; import { ViewModel } from '../view-model/view-model'; @@ -23,7 +19,7 @@ export class EditViewModel< protected async onInit(): Promise { await super.onInit(); - const ctrl = getControl(this.source, 'form') as IPSDEEditForm; + const ctrl = this.getControl('form') as IPSDEEditForm; if (!ctrl) { throw new DefectModelError(this.source, '缺少叫form的编辑表单部件'); } diff --git a/packages/model/src/view/edit-view3-model/edit-view3-model.ts b/packages/model/src/view/edit-view3-model/edit-view3-model.ts index 53df49f6be5..c7ba214beeb 100644 --- a/packages/model/src/view/edit-view3-model/edit-view3-model.ts +++ b/packages/model/src/view/edit-view3-model/edit-view3-model.ts @@ -1,4 +1,4 @@ -import { getControl, IPSDEDRTab } from '@ibiz/dynamic-model-api'; +import { IPSDEDRTab } from '@ibiz/dynamic-model-api'; import { EditViewModel } from '..'; import { DRTabModel } from '../../control'; import { DefectModelError } from '../../error'; @@ -17,7 +17,7 @@ export class EditView3Model extends EditViewModel { protected async onInit(): Promise { await super.onInit(); - const ctrl = getControl(this.source, 'drtab') as IPSDEDRTab; + const ctrl = this.getControl('drtab') as IPSDEDRTab; if (!ctrl) { throw new DefectModelError(this.source, '缺少叫drtab的分页部件'); } diff --git a/packages/model/src/view/grid-view-model/grid-view-model.ts b/packages/model/src/view/grid-view-model/grid-view-model.ts index 649715d10c5..430e29e5219 100644 --- a/packages/model/src/view/grid-view-model/grid-view-model.ts +++ b/packages/model/src/view/grid-view-model/grid-view-model.ts @@ -1,8 +1,4 @@ -import { - getControl, - IPSAppDEGridView, - IPSDEGrid, -} from '@ibiz/dynamic-model-api'; +import { IPSAppDEGridView, IPSDEGrid } from '@ibiz/dynamic-model-api'; import { GridModel } from '../../control'; import { DefectModelError } from '../../error'; import { MDViewModel } from '../md-view-model/md-view-model'; @@ -35,7 +31,7 @@ export class GridViewModel extends MDViewModel { protected async onInit(): Promise { await super.onInit(); - const ctrl = getControl(this.source, 'grid') as IPSDEGrid; + const ctrl = this.getControl('grid') as IPSDEGrid; if (!ctrl) { throw new DefectModelError(this.source, '缺少叫grid的表格部件'); } diff --git a/packages/model/src/view/index-view-model/index-view-model.ts b/packages/model/src/view/index-view-model/index-view-model.ts index bf3dca61e28..b168d30e942 100644 --- a/packages/model/src/view/index-view-model/index-view-model.ts +++ b/packages/model/src/view/index-view-model/index-view-model.ts @@ -1,8 +1,4 @@ -import { - getControl, - IPSAppIndexView, - IPSAppMenu, -} from '@ibiz/dynamic-model-api'; +import { IPSAppIndexView, IPSAppMenu } from '@ibiz/dynamic-model-api'; import { AppMenuModel } from '../../control'; import { DefectModelError } from '../../error'; import { ViewModel } from '../view-model/view-model'; @@ -31,7 +27,7 @@ export class IndexViewModel extends ViewModel { protected async onInit(): Promise { await super.onInit(); - const ctrl = getControl(this.source, 'appmenu') as IPSAppMenu; + const ctrl = this.getControl('appmenu') as IPSAppMenu; if (!ctrl) { throw new DefectModelError(this.source, '缺少叫appmenu的菜单部件'); } diff --git a/packages/model/src/view/list-exp-view-model/list-exp-view-model.ts b/packages/model/src/view/list-exp-view-model/list-exp-view-model.ts index 22e8f3a27af..e9cf07a33ba 100644 --- a/packages/model/src/view/list-exp-view-model/list-exp-view-model.ts +++ b/packages/model/src/view/list-exp-view-model/list-exp-view-model.ts @@ -1,5 +1,4 @@ import { - getControl, IPSAppDEListExplorerView, IPSListExpBar, } from '@ibiz/dynamic-model-api'; @@ -49,7 +48,7 @@ export class ListExpViewModel extends MDViewModel { await super.onInit(); // 获取分页面板 - const ctrl = getControl(this.source, 'listexpbar') as IPSListExpBar; + const ctrl = this.getControl('listexpbar') as IPSListExpBar; if (!ctrl) { throw new DefectModelError( this.source, diff --git a/packages/model/src/view/list-view-model/list-view-model.ts b/packages/model/src/view/list-view-model/list-view-model.ts index 5f6620adcb9..587db187719 100644 --- a/packages/model/src/view/list-view-model/list-view-model.ts +++ b/packages/model/src/view/list-view-model/list-view-model.ts @@ -1,8 +1,4 @@ -import { - getControl, - IPSAppDEListView, - IPSDEList, -} from '@ibiz/dynamic-model-api'; +import { IPSAppDEListView, IPSDEList } from '@ibiz/dynamic-model-api'; import { ListModel } from '../../control'; import { DefectModelError } from '../../error'; import { MDViewModel } from '../md-view-model/md-view-model'; @@ -34,7 +30,7 @@ export class ListViewModel extends MDViewModel { protected async onInit(): Promise { await super.onInit(); - const ctrl = getControl(this.source, 'list') as IPSDEList; + const ctrl = this.getControl('list') as IPSDEList; if (!ctrl) { throw new DefectModelError(this.source, '缺少叫list的部件'); } diff --git a/packages/model/src/view/md-view-model/md-view-model.ts b/packages/model/src/view/md-view-model/md-view-model.ts index 85dbe6d0019..7843dc16eb2 100644 --- a/packages/model/src/view/md-view-model/md-view-model.ts +++ b/packages/model/src/view/md-view-model/md-view-model.ts @@ -1,5 +1,4 @@ import { - getControl, IPSAppDEMultiDataView, IPSDESearchForm, } from '@ibiz/dynamic-model-api'; @@ -42,7 +41,7 @@ export class MDViewModel< this.initPlaceHolder(); // 初始化搜索表单模型 - const ctrl = getControl(this.source, 'searchform') as IPSDESearchForm; + const ctrl = this.getControl('searchform') as IPSDESearchForm; if (ctrl) { this.searchForm = new SearchFormModel(ctrl); await this.searchForm.init(); diff --git a/packages/model/src/view/mpickup-view2-model/mpickup-view2-model.ts b/packages/model/src/view/mpickup-view2-model/mpickup-view2-model.ts index 256d66d2f3c..d6958388a58 100644 --- a/packages/model/src/view/mpickup-view2-model/mpickup-view2-model.ts +++ b/packages/model/src/view/mpickup-view2-model/mpickup-view2-model.ts @@ -1,8 +1,4 @@ -import { - getControl, - IPSAppDEPickupView, - IPSTreeExpBar, -} from '@ibiz/dynamic-model-api'; +import { IPSAppDEPickupView, IPSTreeExpBar } from '@ibiz/dynamic-model-api'; import { TreeExpBarModel, TreeModel } from '../../control'; import { DefectModelError } from '../../error'; import { PickupViewModel } from '..'; @@ -37,7 +33,7 @@ export class MPickupView2Model extends PickupViewModel { await super.onInit(); // 获取树导航面板 - const ctrl = getControl(this.source, 'treeexpbar') as IPSTreeExpBar; + const ctrl = this.getControl('treeexpbar') as IPSTreeExpBar; if (!ctrl) { throw new DefectModelError( this.source, diff --git a/packages/model/src/view/pickup-view-model/pickup-view-model.ts b/packages/model/src/view/pickup-view-model/pickup-view-model.ts index 949c35ca6ee..5245076bba6 100644 --- a/packages/model/src/view/pickup-view-model/pickup-view-model.ts +++ b/packages/model/src/view/pickup-view-model/pickup-view-model.ts @@ -1,5 +1,4 @@ import { - getControl, IPSAppDEPickupView, IPSDEPickupViewPanel, } from '@ibiz/dynamic-model-api'; @@ -30,10 +29,7 @@ export class PickupViewModel< protected async onInit(): Promise { await super.onInit(); - const ctrl = getControl( - this.source, - 'pickupviewpanel', - ) as IPSDEPickupViewPanel; + const ctrl = this.getControl('pickupviewpanel') as IPSDEPickupViewPanel; if (!ctrl) { throw new DefectModelError( this.source, diff --git a/packages/model/src/view/pickup-view2-model/pickup-view2-model.ts b/packages/model/src/view/pickup-view2-model/pickup-view2-model.ts index 34d84590a75..674c4bf54ca 100644 --- a/packages/model/src/view/pickup-view2-model/pickup-view2-model.ts +++ b/packages/model/src/view/pickup-view2-model/pickup-view2-model.ts @@ -1,8 +1,4 @@ -import { - getControl, - IPSAppDEPickupView, - IPSTreeExpBar, -} from '@ibiz/dynamic-model-api'; +import { IPSAppDEPickupView, IPSTreeExpBar } from '@ibiz/dynamic-model-api'; import { TreeExpBarModel, TreeModel } from '../../control'; import { DefectModelError } from '../../error'; import { PickupViewModel } from '..'; @@ -37,7 +33,7 @@ export class PickupView2Model extends PickupViewModel { await super.onInit(); // 获取树导航面板 - const ctrl = getControl(this.source, 'treeexpbar') as IPSTreeExpBar; + const ctrl = this.getControl('treeexpbar') as IPSTreeExpBar; if (!ctrl) { throw new DefectModelError( this.source, diff --git a/packages/model/src/view/tree-exp-view-model/tree-exp-view-model.ts b/packages/model/src/view/tree-exp-view-model/tree-exp-view-model.ts index 72c774e527e..ec80eccb190 100644 --- a/packages/model/src/view/tree-exp-view-model/tree-exp-view-model.ts +++ b/packages/model/src/view/tree-exp-view-model/tree-exp-view-model.ts @@ -1,5 +1,4 @@ import { - getControl, IPSAppDETreeExplorerView, IPSListExpBar, } from '@ibiz/dynamic-model-api'; @@ -47,7 +46,7 @@ export class TreeExpViewModel extends MDViewModel { await super.onInit(); // 获取树导航面板 - const ctrl = getControl(this.source, 'treeexpbar') as IPSListExpBar; + const ctrl = this.getControl('treeexpbar') as IPSListExpBar; if (!ctrl) { throw new DefectModelError( this.source, diff --git a/packages/model/src/view/view-model/view-model.ts b/packages/model/src/view/view-model/view-model.ts index 5a6fd34554e..035d16b3532 100644 --- a/packages/model/src/view/view-model/view-model.ts +++ b/packages/model/src/view/view-model/view-model.ts @@ -2,7 +2,9 @@ import { getControl, IPSAppDEEditView, IPSAppView, + IPSControl, IPSDEToolbar, + IPSViewLayoutPanel, } from '@ibiz/dynamic-model-api'; import { AppEntityModel } from '../../app'; import { ToolbarModel } from '../../control'; @@ -82,6 +84,33 @@ export class ViewModel< return this.source.getPSSysCss()?.cssName; } + /** + * @description 视图布局面板 + * @readonly + * @memberof ViewModel + */ + get viewLayoutPanel(): IPSViewLayoutPanel | null { + return this.source.getPSViewLayoutPanel(); + } + + /** + * @description 获取部件 + * @public + * @param {string} name + * @returns {*} {(IPSControl | undefined)} + * @memberof ViewModel + */ + public getControl(name: string): IPSControl | undefined { + const control = getControl(this.source, name); + if (control) { + return getControl(this.source, name); + } + const layout = this.source.getPSViewLayoutPanel(); + if (layout) { + return getControl(layout, name); + } + } + /** * 初始化 * diff --git a/packages/model/src/view/wf-dyna-edit-view3-model/wf-dyna-edit-view3-model.ts b/packages/model/src/view/wf-dyna-edit-view3-model/wf-dyna-edit-view3-model.ts index 4b700cd677e..638a189b745 100644 --- a/packages/model/src/view/wf-dyna-edit-view3-model/wf-dyna-edit-view3-model.ts +++ b/packages/model/src/view/wf-dyna-edit-view3-model/wf-dyna-edit-view3-model.ts @@ -1,4 +1,4 @@ -import { getControl, IPSDEDRTab } from '@ibiz/dynamic-model-api'; +import { IPSDEDRTab } from '@ibiz/dynamic-model-api'; import { WFDynaEditViewModel } from '..'; import { DRTabModel } from '../../control'; import { DefectModelError } from '../../error'; @@ -17,7 +17,7 @@ export class WFDynaEditView3Model extends WFDynaEditViewModel { protected async onInit(): Promise { await super.onInit(); - const ctrl = getControl(this.source, 'drtab') as IPSDEDRTab; + const ctrl = this.getControl('drtab') as IPSDEDRTab; if (!ctrl) { throw new DefectModelError(this.source, '缺少叫drtab的分页部件'); } -- Gitee From 73b221d9e62259a3cb96b29b03b2c4721e3d85da Mon Sep 17 00:00:00 2001 From: Cano1997 <1978141412@qq.com> Date: Wed, 11 Jun 2025 09:46:28 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=E5=88=86=E9=A1=B5=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E8=A7=86=E5=9B=BE=E6=94=AF=E6=8C=81drtab=E9=83=A8?= =?UTF-8?q?=E4=BB=B6=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/controller/src/view/tab-exp-view.ts | 69 ++++++++++++++++--- .../control/control-model/control-model.ts | 10 +++ .../drtab-page-model/drtab-page-model.ts | 10 +++ .../tab-exp-view-model/tab-exp-view-model.ts | 30 ++++++-- 4 files changed, 103 insertions(+), 16 deletions(-) diff --git a/packages/controller/src/view/tab-exp-view.ts b/packages/controller/src/view/tab-exp-view.ts index 19897876eb4..3ebce57b8b8 100644 --- a/packages/controller/src/view/tab-exp-view.ts +++ b/packages/controller/src/view/tab-exp-view.ts @@ -1,4 +1,9 @@ -import { TabExpViewModel } from '@ibiz-template/model'; +import { + DRTabModel, + TabExpPanelModel, + TabExpViewModel, + ViewModel, +} from '@ibiz-template/model'; import { createUUID } from 'qx-util'; import { TabExpViewNerve } from '../neuron'; import { MainViewController } from './main-view'; @@ -35,16 +40,8 @@ export class TabExpViewController< protected async onInit(): Promise { await super.onInit(); - // 初始化drPages - const { tabExpPages } = this.model.tabExpPanel; - if (tabExpPages.length) { - tabExpPages.forEach(page => { - this.tabExpPages[page.name] = { - key: createUUID(), - }; - }); - } - + this.initDrTab(); + this.initTabExpPanel(); this.nerve.self.evt.on('mounted', () => { const { deName } = this.model.appEntity; // 有主键才会加载主数据 @@ -57,4 +54,54 @@ export class TabExpViewController< } }); } + + /** + * @description 初始化分页导航面板 + * @protected + * @memberof TabExpViewController + */ + protected initTabExpPanel() { + if (this.model.tabExpPanel.controlType === 'TABEXPPANEL') { + const { tabExpPages } = this.model.tabExpPanel as TabExpPanelModel; + if (tabExpPages.length) { + tabExpPages.forEach(page => { + this.tabExpPages[page.name] = { + key: createUUID(), + }; + }); + } + } + } + + /** + * @description 初始化分页关系栏 + * @protected + * @memberof TabExpViewController + */ + protected initDrTab() { + if (this.model.tabExpPanel.controlType === 'DRTAB') { + const { pages } = this.model.tabExpPanel as DRTabModel; + if (pages.length) { + pages.forEach(page => { + this.tabExpPages[page.name] = { + key: createUUID(), + }; + }); + } + } + } + + /** + * @description 根据名称获取嵌入视图 + * @param {string} name + * @returns {*} {(ViewModel | undefined)} + * @memberof TabExpViewController + */ + public getEmbedViewByName(name: string): ViewModel | undefined { + const { pages = [] } = this.model; + const page = [...pages].find(item => item.name === name); + if (page) { + return page.embedView; + } + } } diff --git a/packages/model/src/control/control-model/control-model.ts b/packages/model/src/control/control-model/control-model.ts index 8ca46c51753..638d00c9ab1 100644 --- a/packages/model/src/control/control-model/control-model.ts +++ b/packages/model/src/control/control-model/control-model.ts @@ -45,6 +45,16 @@ export class ControlModel< return this.source.getPSSysCss()?.cssName; } + /** + * @description 部件类型 + * @readonly + * @type {string} + * @memberof ControlModel + */ + get controlType(): string { + return this.source.controlType; + } + /** * 应用实体 * diff --git a/packages/model/src/control/drtab-model/drtab-page-model/drtab-page-model.ts b/packages/model/src/control/drtab-model/drtab-page-model/drtab-page-model.ts index dbf62f65d45..d2be6eb5124 100644 --- a/packages/model/src/control/drtab-model/drtab-page-model/drtab-page-model.ts +++ b/packages/model/src/control/drtab-model/drtab-page-model/drtab-page-model.ts @@ -23,6 +23,16 @@ export class DRTabPageModel< */ embedView!: ViewModel; + /** + * @description 名称 + * @readonly + * @type {string} + * @memberof DRTabPageModel + */ + get name(): string { + return this.source.name; + } + protected async onInit(): Promise { await super.onInit(); const embViewModel = this.source.getPSAppView(); diff --git a/packages/model/src/view/tab-exp-view-model/tab-exp-view-model.ts b/packages/model/src/view/tab-exp-view-model/tab-exp-view-model.ts index a157ac102a7..0c9dfd710d4 100644 --- a/packages/model/src/view/tab-exp-view-model/tab-exp-view-model.ts +++ b/packages/model/src/view/tab-exp-view-model/tab-exp-view-model.ts @@ -1,11 +1,12 @@ import { - getControl, IPSAppDETabExplorerView, + IPSDEDRTab, IPSTabExpPanel, } from '@ibiz/dynamic-model-api'; -import { TabExpPanelModel } from '../../control'; +import { DRTabModel, TabExpPanelModel, TabViewPanelModel } from '../../control'; import { DefectModelError } from '../../error'; import { ViewModel } from '../view-model/view-model'; +import { DRTabPageModel } from '../../control/drtab-model/drtab-page-model/drtab-page-model'; /** * 分页导航视图 @@ -23,20 +24,39 @@ export class TabExpViewModel extends ViewModel { * @type {TabViewPanelModel[]} * @memberof TabExpViewModel */ - tabExpPanel!: TabExpPanelModel; + tabExpPanel!: TabExpPanelModel | DRTabModel; + + /** + * @description 页面 + * @readonly + * @type {(DRTabPageModel[] | TabViewPanelModel[])} + * @memberof TabExpViewModel + */ + get pages(): DRTabPageModel[] | TabViewPanelModel[] { + if (this.tabExpPanel.controlType === 'DRTAB') { + const { pages } = this.tabExpPanel as DRTabModel; + return pages; + } + const { tabExpPages } = this.tabExpPanel as TabExpPanelModel; + return tabExpPages; + } protected async onInit(): Promise { await super.onInit(); // 获取分页面板 - const ctrl = getControl(this.source, 'tabexppanel') as IPSTabExpPanel; + const ctrl = this.getControl('tabexppanel') as IPSTabExpPanel | IPSDEDRTab; if (!ctrl) { throw new DefectModelError( this.source, '缺少叫tabexppanel的分页导航面板部件', ); } - this.tabExpPanel = new TabExpPanelModel(ctrl); + if (ctrl.controlType === 'DRTAB') { + this.tabExpPanel = new DRTabModel(ctrl as IPSDEDRTab); + } else { + this.tabExpPanel = new TabExpPanelModel(ctrl as IPSTabExpPanel); + } await this.tabExpPanel.init(); } } -- Gitee From 8f52ae20b7c6cda696098066fbec3a9c75245f67 Mon Sep 17 00:00:00 2001 From: Cano1997 <1978141412@qq.com> Date: Wed, 11 Jun 2025 09:47:16 +0800 Subject: [PATCH 3/4] =?UTF-8?q?style:=20=E8=8F=9C=E5=8D=95=E9=A1=B9?= =?UTF-8?q?=E6=9C=AA=E9=85=8D=E7=BD=AE=E5=BA=94=E7=94=A8=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=97=B6=E7=A6=81=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../style/components/widgets/app-menu/app-menu.scss | 10 ++++++++++ packages/theme/style/settings/var.scss | 1 + 2 files changed, 11 insertions(+) diff --git a/packages/theme/style/components/widgets/app-menu/app-menu.scss b/packages/theme/style/components/widgets/app-menu/app-menu.scss index b54f99d9080..9668b25eab5 100644 --- a/packages/theme/style/components/widgets/app-menu/app-menu.scss +++ b/packages/theme/style/components/widgets/app-menu/app-menu.scss @@ -1,3 +1,4 @@ +/* stylelint-disable no-descending-specificity */ @mixin menu-item-style { @include flex(row, flex-start, center); @@ -196,6 +197,15 @@ .ivu-menu-item, .ivu-menu-submenu-title { @include menu-item-style; + + &.is-disabled { + color: getCssVar('app-menu', 'item-disabled-color'); + cursor: not-allowed; + + &:hover { + background-color: transparent; + } + } } > .ivu-menu-item { diff --git a/packages/theme/style/settings/var.scss b/packages/theme/style/settings/var.scss index 6e16558840b..7e0691a3a2a 100644 --- a/packages/theme/style/settings/var.scss +++ b/packages/theme/style/settings/var.scss @@ -555,6 +555,7 @@ $app-menu: () !default; $app-menu: map.merge( ( 'item-selected-color': #FFF, + 'item-disabled-color': getCssVar('disabled', 'text-color'), 'item-selected-bg-color': getCssVar('color', 'primary'), 'item-hover-color': getCssVar('text-color', 'primary'), 'item-padding': getCssVar('padding'), -- Gitee From 52dd4fe7071514a9d12299570d7a7bf7e89b6d64 Mon Sep 17 00:00:00 2001 From: Cano1997 <1978141412@qq.com> Date: Wed, 11 Jun 2025 09:49:22 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=A0=91=E8=A7=86=E5=9B=BE=E3=80=81=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=A0=91=E8=A7=86=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/controller/src/control/tree.ts | 16 +++- .../view/i-pickup-tree-view-ability.ts | 38 +++++++++ .../ability/view/i-tree-view-ability.ts | 9 ++ .../src/interface/ability/view/index.ts | 2 + .../event/view/i-pickup-tree-view-event.ts | 18 ++++ .../interface/event/view/i-tree-view-event.ts | 3 + .../src/interface/event/view/index.ts | 2 + .../controller/src/neuron/nerve/view/index.ts | 2 + .../nerve/view/pickup-tree-view-nerve.ts | 32 ++++++++ .../src/neuron/nerve/view/tree-view-nerve.ts | 69 ++++++++++++++++ packages/controller/src/neuron/neuron/view.ts | 10 +++ packages/controller/src/view/index.ts | 2 + .../controller/src/view/pickup-tree-view.ts | 64 +++++++++++++++ packages/controller/src/view/tree-view.ts | 82 +++++++++++++++++++ .../model/src/factory/view-model-factory.ts | 7 ++ packages/model/src/view/index.ts | 1 + .../view/tree-view-model/tree-view-model.ts | 24 ++++++ packages/vue-util/src/use/view/index.ts | 1 + .../use-pickup-tree-view.ts | 21 +++++ 19 files changed, 402 insertions(+), 1 deletion(-) create mode 100644 packages/controller/src/interface/ability/view/i-pickup-tree-view-ability.ts create mode 100644 packages/controller/src/interface/ability/view/i-tree-view-ability.ts create mode 100644 packages/controller/src/interface/event/view/i-pickup-tree-view-event.ts create mode 100644 packages/controller/src/interface/event/view/i-tree-view-event.ts create mode 100644 packages/controller/src/neuron/nerve/view/pickup-tree-view-nerve.ts create mode 100644 packages/controller/src/neuron/nerve/view/tree-view-nerve.ts create mode 100644 packages/controller/src/view/pickup-tree-view.ts create mode 100644 packages/controller/src/view/tree-view.ts create mode 100644 packages/model/src/view/tree-view-model/tree-view-model.ts create mode 100644 packages/vue-util/src/use/view/use-pickup-tree-view/use-pickup-tree-view.ts diff --git a/packages/controller/src/control/tree.ts b/packages/controller/src/control/tree.ts index dbe0cf70e8b..78b4ee7eb22 100644 --- a/packages/controller/src/control/tree.ts +++ b/packages/controller/src/control/tree.ts @@ -158,6 +158,20 @@ export class TreeController extends MDController { * @memberof TreeController */ async onTreeNodeClick(nodeData: ITreeNodeData): Promise { - await this.onActive(nodeData); + if (this.mdCtrlActiveMode === 1) { + await this.onActive(nodeData); + } + } + + /** + * @description 双击激活数据 + * @param {ITreeNodeData} nodeData + * @returns {*} {Promise} + * @memberof TreeController + */ + async onDbTreeNodeClick(nodeData: ITreeNodeData): Promise { + if (this.mdCtrlActiveMode === 2) { + await this.onActive(nodeData); + } } } diff --git a/packages/controller/src/interface/ability/view/i-pickup-tree-view-ability.ts b/packages/controller/src/interface/ability/view/i-pickup-tree-view-ability.ts new file mode 100644 index 00000000000..555f7e6af83 --- /dev/null +++ b/packages/controller/src/interface/ability/view/i-pickup-tree-view-ability.ts @@ -0,0 +1,38 @@ +import { ITreeViewAbility } from './i-tree-view-ability'; + +/** + * @description 选择树视图能力 + * @export + * @interface IPickupTreeViewAbility + * @extends {ITreeViewAbility} + */ +export interface IPickupTreeViewAbility extends ITreeViewAbility { + /** + * 选中所有数据并返回 + * + * @author lxm + * @date 2022-09-12 19:09:12 + * @returns {*} {Promise} + */ + selectAll(): Promise; + + /** + * 设置选中数据 + * + * @author zk + * @date 2024-01-19 04:01:22 + * @return {*} {Promise} + * @memberof IPickupTreeViewAbility + */ + setSelectData(selection: IData[]): Promise; + + /** + * 获取当前选中数据 + * + * @author zk + * @date 2024-01-19 03:01:55 + * @return {*} {Promise} + * @memberof IPickupTreeViewAbility + */ + getSelectData(): Promise; +} diff --git a/packages/controller/src/interface/ability/view/i-tree-view-ability.ts b/packages/controller/src/interface/ability/view/i-tree-view-ability.ts new file mode 100644 index 00000000000..7e1d57399ee --- /dev/null +++ b/packages/controller/src/interface/ability/view/i-tree-view-ability.ts @@ -0,0 +1,9 @@ +import { IMDViewAbility } from './i-md-view-ability'; + +/** + * @description 树视图的能力 + * @export + * @interface ITreeViewAbility + * @extends {IMDViewAbility} + */ +export type ITreeViewAbility = IMDViewAbility; diff --git a/packages/controller/src/interface/ability/view/index.ts b/packages/controller/src/interface/ability/view/index.ts index 0dff6410354..5754cbf2f59 100644 --- a/packages/controller/src/interface/ability/view/index.ts +++ b/packages/controller/src/interface/ability/view/index.ts @@ -6,6 +6,7 @@ export * from './i-opt-view-ability'; export * from './i-md-view-ability'; export * from './i-grid-view-ability'; export * from './i-pickup-grid-view-ability'; +export * from './i-pickup-tree-view-ability'; export * from './i-pickup-view-ability'; export * from './i-mpickup-view-ability'; export * from './i-wf-edit-view-ability'; @@ -20,3 +21,4 @@ export * from './i-list-view-ability'; export * from './i-tree-exp-view-ability'; export * from './i-pickup-view2-ability'; export * from './i-mpickup-view2-ability'; +export * from './i-tree-view-ability'; diff --git a/packages/controller/src/interface/event/view/i-pickup-tree-view-event.ts b/packages/controller/src/interface/event/view/i-pickup-tree-view-event.ts new file mode 100644 index 00000000000..279dc081945 --- /dev/null +++ b/packages/controller/src/interface/event/view/i-pickup-tree-view-event.ts @@ -0,0 +1,18 @@ +import { IViewEvent } from './i-view-event'; + +/** + * @description 选择树视图事件 + * @export + * @interface IPickupTreeViewEvent + * @extends {IViewEvent} + */ +export interface IPickupTreeViewEvent extends IViewEvent { + /** + * 选中数据变更事件 + * + * @author lxm + * @date 2022-08-31 14:08:12 + * @param {IData[]} selection 选中的数据集合 + */ + selectionChange(selection: IData[]): void; +} diff --git a/packages/controller/src/interface/event/view/i-tree-view-event.ts b/packages/controller/src/interface/event/view/i-tree-view-event.ts new file mode 100644 index 00000000000..7f8b59ef71c --- /dev/null +++ b/packages/controller/src/interface/event/view/i-tree-view-event.ts @@ -0,0 +1,3 @@ +import { IMDViewEvent } from './i-md-view-event'; + +export type ITreeViewEvent = IMDViewEvent; diff --git a/packages/controller/src/interface/event/view/index.ts b/packages/controller/src/interface/event/view/index.ts index 3ffacd31c77..b6bfc77782b 100644 --- a/packages/controller/src/interface/event/view/index.ts +++ b/packages/controller/src/interface/event/view/index.ts @@ -8,6 +8,7 @@ export * from './i-grid-view-event'; export * from './i-pickup-view-event'; export * from './i-mpickup-view-event'; export * from './i-pickup-grid-view-event'; +export * from './i-pickup-tree-view-event'; export * from './i-wf-edit-view-event'; export * from './i-wf-dyna-edit-view-event'; export * from './i-wf-dyna-edit-view3-event'; @@ -19,3 +20,4 @@ export * from './i-list-view-event'; export * from './i-tree-exp-view-event'; export * from './i-pickup-view2-event'; export * from './i-mpickup-view2-event'; +export * from './i-tree-view-event'; diff --git a/packages/controller/src/neuron/nerve/view/index.ts b/packages/controller/src/neuron/nerve/view/index.ts index a7f50b07470..3b4ec8249f4 100644 --- a/packages/controller/src/neuron/nerve/view/index.ts +++ b/packages/controller/src/neuron/nerve/view/index.ts @@ -1,7 +1,9 @@ export * from './view-nerve'; export * from './md-view-nerve'; export * from './grid-view-nerve'; +export * from './tree-view-nerve'; export * from './pickup-grid-view-nerve'; +export * from './pickup-tree-view-nerve'; export * from './pickup-view-nerve'; export * from './mpickup-view-nerve'; export * from './edit-view-nerve'; diff --git a/packages/controller/src/neuron/nerve/view/pickup-tree-view-nerve.ts b/packages/controller/src/neuron/nerve/view/pickup-tree-view-nerve.ts new file mode 100644 index 00000000000..9deba6f858e --- /dev/null +++ b/packages/controller/src/neuron/nerve/view/pickup-tree-view-nerve.ts @@ -0,0 +1,32 @@ +import { PickupTreeViewNeuron } from '../..'; +import { PickupTreeViewController } from '../../../view/pickup-tree-view'; +import { TreeViewNerve } from './tree-view-nerve'; + +/** + * 选择树视图神经系统 + * + * @author lxm + * @date 2022-09-13 16:09:59 + * @export + * @class ControlNerve + * @extends {Nerve} + * @template T + * @template C + */ +export class PickupTreeViewNerve extends TreeViewNerve< + PickupTreeViewNeuron, + PickupTreeViewController +> { + protected createNeuron(): PickupTreeViewNeuron { + return new PickupTreeViewNeuron(this.bindAbility()); + } + + protected bindAbility() { + return { + ...super.bindAbility(), + selectAll: this.controller.selectAll.bind(this.controller), + getSelectData: this.controller.getSelectData.bind(this.controller), + setSelectData: this.controller.setSelectData.bind(this.controller), + }; + } +} diff --git a/packages/controller/src/neuron/nerve/view/tree-view-nerve.ts b/packages/controller/src/neuron/nerve/view/tree-view-nerve.ts new file mode 100644 index 00000000000..3e7128073cb --- /dev/null +++ b/packages/controller/src/neuron/nerve/view/tree-view-nerve.ts @@ -0,0 +1,69 @@ +import { TreeNeuron, TreeViewNeuron, Neuron } from '../..'; +import { TreeViewController } from '../../../view'; +import { MDViewNerve } from './md-view-nerve'; + +/** + * 列表导航视图神经系统 + * + * @author lxm + * @date 2022-09-13 16:09:59 + * @export + * @class ControlNerve + * @extends {Nerve} + * @template T + * @template C + */ +export class TreeViewNerve< + T extends TreeViewNeuron = TreeViewNeuron, + C extends TreeViewController = TreeViewController, +> extends MDViewNerve { + tree!: TreeNeuron; + + protected createNeuron(): T { + return new TreeViewNeuron(this.bindAbility()) as T; + } + + protected bindAbility() { + return { + ...super.bindAbility(), + }; + } + + inclusive(name: string): boolean { + return name === 'tree' || super.inclusive(name); + } + + connect(name: string, neuron: Neuron): void { + super.connect(name, neuron); + // 连接表格神经元,并监听其事件 + if (name === 'tree') { + this.tree = neuron as TreeNeuron; + this.tree.evt.on('destroyed', () => { + this.tree = undefined as never; + }); + this.tree.evt.on( + 'beforeLoad', + this.controller.onBeforeLoad.bind(this.controller), + ); + this.tree.evt.on( + 'dataActive', + this.controller.onDataActive.bind(this.controller), + ); + this.tree.evt.on( + 'selectionChange', + this.controller.onSelectionChange.bind(this.controller), + ); + this.tree.evt.on('afterSave', (...args) => + this.controller.onAfterSave(...args, name), + ); + this.tree.evt.on('afterRemove', (...args) => + this.controller.onAfterRemove(...args, name), + ); + } + } + + destroy(): void { + super.destroy(); + this.tree = undefined as never; + } +} diff --git a/packages/controller/src/neuron/neuron/view.ts b/packages/controller/src/neuron/neuron/view.ts index c045f63addb..0c791ce94fb 100644 --- a/packages/controller/src/neuron/neuron/view.ts +++ b/packages/controller/src/neuron/neuron/view.ts @@ -23,6 +23,8 @@ import { IWFDynaStartViewAbility, IWFEditViewAbility, IWFViewAbility, + ITreeViewAbility, + IPickupTreeViewAbility, } from '../../interface/ability'; import { IEditView3Event, @@ -46,6 +48,8 @@ import { IWFDynaStartViewEvent, IWFEditViewEvent, IWFViewEvent, + ITreeViewEvent, + IPickupTreeViewEvent, } from '../../interface/event'; import { IAppPortalViewEvent } from '../../interface/event/view/i-app-portal-view-event'; @@ -71,11 +75,17 @@ export class ListExpViewNeuron extends Neuron< > {} export class ListViewNeuron extends Neuron {} +export class TreeViewNeuron extends Neuron {} + // *选择类视图 export class PickupGridViewNeuron extends Neuron< IPickupGridViewEvent, IPickupGridViewAbility > {} +export class PickupTreeViewNeuron extends Neuron< + IPickupTreeViewEvent, + IPickupTreeViewAbility +> {} export class PickupViewNeuron extends Neuron< IPickupViewEvent, IPickupViewAbility diff --git a/packages/controller/src/view/index.ts b/packages/controller/src/view/index.ts index 72f0ce51038..17f14de066a 100644 --- a/packages/controller/src/view/index.ts +++ b/packages/controller/src/view/index.ts @@ -8,6 +8,7 @@ export { EditView3Controller } from './edit-view3'; export { MDViewController } from './md-view'; export { GridViewController } from './grid-view'; export { PickupGridViewController } from './pickup-grid-view'; +export { PickupTreeViewController } from './pickup-tree-view'; export { PickupViewController } from './pickup-view'; export { MPickupViewController } from './mpickup-view'; export * from './wf-edit-view'; @@ -24,3 +25,4 @@ export { TreeExpViewController } from './tree-exp-view'; export { PickupView2Controller } from './pickup-view2'; export { MPickupView2Controller } from './mpickup-view2'; export { HtmlViewController } from './html-view'; +export { TreeViewController } from './tree-view'; diff --git a/packages/controller/src/view/pickup-tree-view.ts b/packages/controller/src/view/pickup-tree-view.ts new file mode 100644 index 00000000000..2fd7b15fb7c --- /dev/null +++ b/packages/controller/src/view/pickup-tree-view.ts @@ -0,0 +1,64 @@ +import { PickupTreeViewNerve } from '../neuron'; +import { TreeViewController } from './tree-view'; + +/** + * 选择表格视图 + * + * @author lxm + * @date 2022-09-08 16:09:49 + * @export + * @class PickupTreeViewController + * @extends {TreeViewController} + */ +export class PickupTreeViewController extends TreeViewController { + declare nerve: PickupTreeViewNerve; + + protected createNerve(): PickupTreeViewNerve { + return new PickupTreeViewNerve(this); + } + + /** + * 处理选中数据变更 + * + * @author lxm + * @date 2022-08-28 18:08:50 + * @param {IData[]} data 选中的数据集合 + */ + onSelectionChange(data: IData[]) { + super.onSelectionChange(data); + this.nerve.self.evt.asyncEmit('selectionChange', this.selectedData); + } + + /** + * 选中所有数据并返回 + * + * @author lxm + * @date 2022-09-12 19:09:12 + * @returns {*} {Promise} + */ + async selectAll(): Promise { + return this.nerve.tree.call.selectAll(); + } + + /** + * 选中所有数据并返回 + * + * @author lxm + * @date 2022-09-12 19:09:12 + * @returns {*} {Promise} + */ + async getSelectData(): Promise { + return this.nerve.tree.call.getData(); + } + + /** + * 选中所有数据并返回 + * + * @author lxm + * @date 2022-09-12 19:09:12 + * @returns {*} {Promise} + */ + async setSelectData(selection: IData[]): Promise { + return this.nerve.tree.call.setSelectData(selection); + } +} diff --git a/packages/controller/src/view/tree-view.ts b/packages/controller/src/view/tree-view.ts new file mode 100644 index 00000000000..4828d591f23 --- /dev/null +++ b/packages/controller/src/view/tree-view.ts @@ -0,0 +1,82 @@ +import { TreeViewModel } from '@ibiz-template/model'; +import { TreeViewNerve } from '../neuron'; +import { MDViewController } from './md-view'; + +/** + * @description 树视图控制器 + * @export + * @class TreeViewController + * @extends {MDViewController} + */ +export class TreeViewController extends MDViewController { + declare nerve: TreeViewNerve; + + protected createNerve(): TreeViewNerve { + return new TreeViewNerve(this); + } + + protected async onInit(): Promise { + await super.onInit(); + // 树适配器 + const { tree } = this.model; + if (tree) { + this.providers[tree.name] = await ibiz.register.control.get(tree); + } + } + + /** + * 获取树控制器 + * + * @return {*} + * @memberof TreeViewController + */ + public geTreeController() { + return this.nerve.tree; + } + + /** + * 获取当前树视图控制器 + * + * @return {*} + * @memberof TreeViewController + */ + public getThis() { + return this; + } + + /** + * 视图加载方法 + * + * @author lxm + * @date 2022-08-30 19:08:59 + * @returns {*} {Promise} + */ + async load(): Promise { + const { tree } = this.nerve; + return tree.call.load(); + } + + /** + * 处理搜索部件的搜索事件 + * + * @author zhanghengfeng + * @date 2025-01-24 15:01:21 + * @return {*} {Promise} + */ + async onSearch(): Promise { + const { tree } = this.nerve; + await tree.call.load({ isInitialLoad: true }); + } + + /** + * 视图删除方法 + * + * @author lxm + * @date 2022-08-30 19:08:59 + * @returns {*} {Promise} + */ + async remove(data: IData[] | undefined): Promise { + const { tree } = this.nerve; + await tree.call.remove(data); + } +} diff --git a/packages/model/src/factory/view-model-factory.ts b/packages/model/src/factory/view-model-factory.ts index 8d4b5b2437b..19f4811f7c5 100644 --- a/packages/model/src/factory/view-model-factory.ts +++ b/packages/model/src/factory/view-model-factory.ts @@ -13,6 +13,7 @@ import { IPSAppDEChartView, IPSAppDETreeExplorerView, IPSAppDEHtmlView, + IPSAppDETreeView, } from '@ibiz/dynamic-model-api'; import { ViewType } from '../constant'; import { IWFDynaActionView } from '../interface'; @@ -37,6 +38,7 @@ import { PickupView2Model, MPickupView2Model, HtmlViewModel, + TreeViewModel, } from '../view'; /** @@ -67,6 +69,11 @@ export class ViewModelFactory { case ViewType.DE_PICKUP_GRID_VIEW: inst = new GridViewModel(view as IPSAppDEGridView); break; + case ViewType.DE_TREE_VIEW: + case ViewType.DE_TREE_VIEW9: + case ViewType.DE_PICKUP_TREE_VIEW: + inst = new TreeViewModel(view as IPSAppDETreeView); + break; case ViewType.DE_OPT_VIEW: inst = new OptViewModel(view as IPSAppDEEditView); break; diff --git a/packages/model/src/view/index.ts b/packages/model/src/view/index.ts index 2a3f74a1b06..e363ed2c281 100644 --- a/packages/model/src/view/index.ts +++ b/packages/model/src/view/index.ts @@ -21,3 +21,4 @@ export { TreeExpViewModel } from './tree-exp-view-model/tree-exp-view-model'; export { PickupView2Model } from './pickup-view2-model/pickup-view2-model'; export { MPickupView2Model } from './mpickup-view2-model/mpickup-view2-model'; export { HtmlViewModel } from './html-view-model/html-view-model'; +export { TreeViewModel } from './tree-view-model/tree-view-model'; diff --git a/packages/model/src/view/tree-view-model/tree-view-model.ts b/packages/model/src/view/tree-view-model/tree-view-model.ts new file mode 100644 index 00000000000..ff9b9c5641d --- /dev/null +++ b/packages/model/src/view/tree-view-model/tree-view-model.ts @@ -0,0 +1,24 @@ +import { IPSAppDETreeView, IPSDETree } from '@ibiz/dynamic-model-api'; +import { TreeModel } from '../../control'; +import { DefectModelError } from '../../error'; +import { MDViewModel } from '../md-view-model/md-view-model'; + +/** + * @description 树视图模型 + * @export + * @class TreeViewModel + * @extends {MDViewModel} + */ +export class TreeViewModel extends MDViewModel { + tree!: TreeModel; + + protected async onInit(): Promise { + await super.onInit(); + const ctrl = this.getControl('tree') as IPSDETree; + if (!ctrl) { + throw new DefectModelError(this.source, '缺少叫tree的树部件'); + } + this.tree = new TreeModel(ctrl); + await this.tree.init(); + } +} diff --git a/packages/vue-util/src/use/view/index.ts b/packages/vue-util/src/use/view/index.ts index ee4b337ea23..3f80380748c 100644 --- a/packages/vue-util/src/use/view/index.ts +++ b/packages/vue-util/src/use/view/index.ts @@ -5,6 +5,7 @@ export { useEditView3Controller } from './use-edit-view3/use-edit-view3'; export { useOptViewController } from './use-opt-view/use-opt-view'; export { useGridViewController } from './use-grid-view/use-grid-view'; export { usePickupGridViewController } from './use-pickup-grid-view/use-pickup-grid-view'; +export { usePickupTreeViewController } from './use-pickup-tree-view/use-pickup-tree-view'; export { usePickupViewController } from './use-pickup-view/use-pickup-view'; export { useMPickupViewController } from './use-mpickup-view/use-mpickup-view'; export { useWFDynaEditView3Controller } from './use-wf-dyna-edit3-view/use-wf-dyna-edit3-view'; diff --git a/packages/vue-util/src/use/view/use-pickup-tree-view/use-pickup-tree-view.ts b/packages/vue-util/src/use/view/use-pickup-tree-view/use-pickup-tree-view.ts new file mode 100644 index 00000000000..5573fd3857c --- /dev/null +++ b/packages/vue-util/src/use/view/use-pickup-tree-view/use-pickup-tree-view.ts @@ -0,0 +1,21 @@ +import { PickupTreeViewController } from '@ibiz-template/controller'; +import { useViewController } from '../use-view-controller/use-view-controller'; + +/** + * @description 选择树视图控制器 + * @export + * @param {Vue} vue + * @param {string} path + * @returns {*} {PickupTreeViewController} + */ +export function usePickupTreeViewController( + vue: Vue, + path: string, +): PickupTreeViewController { + return useViewController( + vue, + (context: IContext, params: IParams) => { + return new PickupTreeViewController(path, context, params); + }, + ); +} -- Gitee