From 9bd598909858dc1c3c68fc486168bd55d38be315 Mon Sep 17 00:00:00 2001 From: zhangkang <1752553776@qq.com> Date: Tue, 11 Jul 2023 10:36:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=BC=E8=88=AA=E5=8D=A0=E4=BD=8D?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=99=A8=E5=BC=95=20=E6=8D=A2=E6=88=90=20run?= =?UTF-8?q?time=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/control/drbar/drbar.controller.ts | 8 ++-- src/control/drtab/drtab.controller.ts | 8 ++-- src/control/exp-bar/exp-bar.controller.ts | 26 +++++----- .../tree-exp-bar/tree-exp-bar.controller.ts | 6 +-- .../tab-exp-panel/tab-exp-panel.controller.ts | 22 ++++----- .../nav-pos-index/nav-pos-index.state.ts | 47 ++----------------- .../nav-pos/nav-pos.controller.ts | 36 +++++++------- .../nav-pos/nav-pos.provider.ts | 9 ++-- 8 files changed, 65 insertions(+), 97 deletions(-) diff --git a/src/control/drbar/drbar.controller.ts b/src/control/drbar/drbar.controller.ts index dec95f399..9de8fca18 100644 --- a/src/control/drbar/drbar.controller.ts +++ b/src/control/drbar/drbar.controller.ts @@ -7,11 +7,11 @@ import { IEditFormController, calcNavParams, Srfuf, + IViewLayoutPanelController, + IPanelItemNavPosController, } from '@ibiz-template/runtime'; import { IDEDRBar, IDEDRBarItem } from '@ibiz/model-core'; import { Router } from 'vue-router'; -import { NavPosController } from '../../panel-component'; -import { ViewLayoutPanelController } from '../panel'; /** * 数据关系栏控制器 @@ -32,7 +32,7 @@ export class DRBarController * @memberof DRBarController */ get layoutPanel() { - return this.view.getController('layoutpanel') as ViewLayoutPanelController; + return this.view.getController('layoutpanel') as IViewLayoutPanelController; } /** @@ -42,7 +42,7 @@ export class DRBarController * @memberof DRBarController */ get navPos() { - return this.layoutPanel?.panelItems.nav_pos as NavPosController; + return this.layoutPanel?.panelItems.nav_pos as IPanelItemNavPosController; } /** diff --git a/src/control/drtab/drtab.controller.ts b/src/control/drtab/drtab.controller.ts index 40d105b79..31ea9b704 100644 --- a/src/control/drtab/drtab.controller.ts +++ b/src/control/drtab/drtab.controller.ts @@ -7,11 +7,11 @@ import { IEditFormController, calcNavParams, Srfuf, + IPanelItemNavPosController, + IViewLayoutPanelController, } from '@ibiz-template/runtime'; import { IDEDRCtrlItem, IDEDRTab } from '@ibiz/model-core'; import { Router } from 'vue-router'; -import { NavPosController } from '../../panel-component'; -import { ViewLayoutPanelController } from '../panel'; /** * 数据关系栏控制器 @@ -32,7 +32,7 @@ export class DRTabController * @memberof DRTabController */ get layoutPanel() { - return this.view.getController('layoutpanel') as ViewLayoutPanelController; + return this.view.getController('layoutpanel') as IViewLayoutPanelController; } /** @@ -42,7 +42,7 @@ export class DRTabController * @memberof DRTabController */ get navPos() { - return this.layoutPanel?.panelItems.nav_pos as NavPosController; + return this.layoutPanel?.panelItems.nav_pos as IPanelItemNavPosController; } /** diff --git a/src/control/exp-bar/exp-bar.controller.ts b/src/control/exp-bar/exp-bar.controller.ts index af89372c5..4c7ee18f9 100644 --- a/src/control/exp-bar/exp-bar.controller.ts +++ b/src/control/exp-bar/exp-bar.controller.ts @@ -22,11 +22,11 @@ import { LoadEvent, ITreeController, IMDControlController, + IPanelItemNavPosController, + INavViewMsg, + IViewLayoutPanelController, } from '@ibiz-template/runtime'; import { RuntimeError, RuntimeModelError } from '@ibiz-template/core'; -import { ViewLayoutPanelController } from '../panel'; -import { NavPosController } from '../../panel-component/nav-pos'; -import { NavViewMsg } from '../../panel-component/nav-pos-index/nav-pos-index.state'; /** * 导航部件控制器 @@ -53,19 +53,21 @@ export class ExpBarControlController< * 导航占位控制器 * * @readonly - * @type {(NavPosController | undefined)} + * @type {(IPanelItemNavPosController | undefined)} * @memberof TabExpPanelController */ - get navPos(): NavPosController | undefined { - return this.layoutPanel.panelItems.nav_pos as NavPosController; + get navPos(): IPanelItemNavPosController | undefined { + return this.layoutPanel.panelItems.nav_pos as IPanelItemNavPosController; } /** * 当前路由视图的层级 * + * @author zk + * @date 2023-07-11 10:07:20 * @readonly * @type {(number | undefined)} - * @memberof NavPosController + * @memberof ExpBarControlController */ get routeDepth(): number | undefined { return this.view.modal.routeDepth; @@ -74,10 +76,10 @@ export class ExpBarControlController< /** * 布局面板控制器 * - * @type {ViewLayoutPanelController} + * @type {IViewLayoutPanelController} * @memberof TabExpPanelController */ - layoutPanel!: ViewLayoutPanelController; + layoutPanel!: IViewLayoutPanelController; /** * 多数据部件类型 @@ -172,7 +174,7 @@ export class ExpBarControlController< await super.onCreated(); this.layoutPanel = this.view.getController( 'layoutpanel', - ) as ViewLayoutPanelController; + ) as IViewLayoutPanelController; } /** @@ -339,10 +341,10 @@ export class ExpBarControlController< * @author zk * @date 2023-06-29 03:06:41 * @param {IDETabViewPanel} tabViewPanel - * @return {*} {Promise} + * @return {*} {Promise} * @memberof TabExpPanelController */ - public getNavViewMsg(data: IData[]): NavViewMsg | undefined { + public getNavViewMsg(data: IData[]): INavViewMsg | undefined { if (data.length === 0) { return; } diff --git a/src/control/exp-bar/tree-exp-bar/tree-exp-bar.controller.ts b/src/control/exp-bar/tree-exp-bar/tree-exp-bar.controller.ts index 79152fe8b..91f27c2d9 100644 --- a/src/control/exp-bar/tree-exp-bar/tree-exp-bar.controller.ts +++ b/src/control/exp-bar/tree-exp-bar/tree-exp-bar.controller.ts @@ -1,12 +1,12 @@ import { RuntimeModelError } from '@ibiz-template/core'; import { + INavViewMsg, ITreeController, ITreeExpBarController, ITreeExpBarEvent, ITreeExpBarState, } from '@ibiz-template/runtime'; import { IDETree, IDETreeNode, ITreeExpBar } from '@ibiz/model-core'; -import { NavViewMsg } from '../../../panel-component/nav-pos-index/nav-pos-index.state'; import { ExpBarControlController } from '../exp-bar.controller'; /** @@ -71,10 +71,10 @@ export class TreeExpBarController * @author zk * @date 2023-06-29 03:06:41 * @param {IDETabViewPanel} tabViewPanel - * @return {*} {Promise} + * @return {*} {Promise} * @memberof TabExpPanelController */ - public getNavViewMsg(data: IData[]): NavViewMsg | undefined { + public getNavViewMsg(data: IData[]): INavViewMsg | undefined { if (!data[0]) { return undefined; } diff --git a/src/control/tab-exp-panel/tab-exp-panel.controller.ts b/src/control/tab-exp-panel/tab-exp-panel.controller.ts index f852b7daf..59ca0542c 100644 --- a/src/control/tab-exp-panel/tab-exp-panel.controller.ts +++ b/src/control/tab-exp-panel/tab-exp-panel.controller.ts @@ -6,11 +6,11 @@ import { ITabExpPanelPagesState, calcNavParams, calcDeCodeNameById, + INavViewMsg, + IPanelItemNavPosController, + IViewLayoutPanelController, } from '@ibiz-template/runtime'; import { IDER1N, IDETabViewPanel, ITabExpPanel } from '@ibiz/model-core'; -import { NavPosController } from '../../panel-component'; -import { NavViewMsg } from '../../panel-component/nav-pos-index/nav-pos-index.state'; -import { ViewLayoutPanelController } from '../panel'; /** * 分页导航面板 @@ -27,20 +27,20 @@ export class TabExpPanelController /** * 布局面板控制器 * - * @type {ViewLayoutPanelController} + * @type {IViewLayoutPanelController} * @memberof TabExpPanelController */ - layoutPanel!: ViewLayoutPanelController; + layoutPanel!: IViewLayoutPanelController; /** * 导航占位控制器 * * @readonly - * @type {(NavPosController | undefined)} + * @type {(IPanelItemNavPosController | undefined)} * @memberof TabExpPanelController */ - get navPos(): NavPosController | undefined { - return this.layoutPanel.panelItems.nav_pos as NavPosController; + get navPos(): IPanelItemNavPosController | undefined { + return this.layoutPanel.panelItems.nav_pos as IPanelItemNavPosController; } /** @@ -66,7 +66,7 @@ export class TabExpPanelController await super.onCreated(); this.layoutPanel = this.view.getController( 'layoutpanel', - ) as ViewLayoutPanelController; + ) as IViewLayoutPanelController; this.initTabPages(); } @@ -199,10 +199,10 @@ export class TabExpPanelController * @author zk * @date 2023-06-29 03:06:41 * @param {IDETabViewPanel} tabViewPanel - * @return {*} {Promise} + * @return {*} {Promise} * @memberof TabExpPanelController */ - public getNavViewMsg(tabViewPanel: IDETabViewPanel): NavViewMsg { + public getNavViewMsg(tabViewPanel: IDETabViewPanel): INavViewMsg { const { context, params } = this.prepareParams(tabViewPanel); return { key: tabViewPanel.codeName!.toLowerCase(), diff --git a/src/panel-component/nav-pos-index/nav-pos-index.state.ts b/src/panel-component/nav-pos-index/nav-pos-index.state.ts index 7107bab72..67fde06be 100644 --- a/src/panel-component/nav-pos-index/nav-pos-index.state.ts +++ b/src/panel-component/nav-pos-index/nav-pos-index.state.ts @@ -1,47 +1,6 @@ +import { INavViewMsg } from '@ibiz-template/runtime'; import { PanelItemState } from '../../control/panel/panel/panel-item.state'; -export interface NavViewMsg { - /** - * 视图唯一标识 - * @author lxm - * @date 2023-05-25 07:01:28 - * @type {string} - */ - key: string; - - /** - * 最新的路由全路径 - * @author lxm - * @date 2023-05-25 07:03:29 - * @type {string} - */ - fullPath?: string; - - /** - * 上下文 - * @author lxm - * @date 2023-05-25 07:04:39 - * @type {IContext} - */ - context?: IContext; - - /** - * 视图参数 - * @author lxm - * @date 2023-05-25 07:04:38 - * @type {IParams} - */ - params?: IParams; - - /** - * 视图模型 - * @author lxm - * @date 2023-05-25 07:06:33 - * @type {IAppView} - */ - viewId?: string; -} - /** * 导航占位状态 * @@ -72,9 +31,9 @@ export class NavPosIndexState extends PanelItemState { * 导航视图详细信息 * @author lxm * @date 2023-05-25 07:07:05 - * @type {NavViewMsg[]} + * @type {INavViewMsg[]} */ - navViewMsgs: { [p: string]: NavViewMsg } = {}; + navViewMsgs: { [p: string]: INavViewMsg } = {}; /** * 导航的视图的操作顺序 diff --git a/src/panel-component/nav-pos/nav-pos.controller.ts b/src/panel-component/nav-pos/nav-pos.controller.ts index 962a1d781..50a9ef3bc 100644 --- a/src/panel-component/nav-pos/nav-pos.controller.ts +++ b/src/panel-component/nav-pos/nav-pos.controller.ts @@ -3,14 +3,15 @@ import { IModal, Modal, OpenAppViewCommand, + IPanelItemNavPosController, ViewMode, + INavViewMsg, } from '@ibiz-template/runtime'; import { IPanelRawItem } from '@ibiz/model-core'; import { RouteLocationNormalizedLoaded, Router } from 'vue-router'; import { route2routePath } from '@ibiz-template/vue3-util'; import { PanelItemController } from '../../control'; import { NavPosState } from './nav-pos.state'; -import { NavViewMsg } from '../nav-pos-index/nav-pos-index.state'; /** * 导航占位控制器 @@ -19,7 +20,10 @@ import { NavViewMsg } from '../nav-pos-index/nav-pos-index.state'; * @class NavPosController * @extends {PanelItemController} */ -export class NavPosController extends PanelItemController { +export class NavPosController + extends PanelItemController + implements IPanelItemNavPosController +{ /** * 导航占位状态 * @@ -39,10 +43,10 @@ export class NavPosController extends PanelItemController { /** * 当前导航视图 * - * @type {NavViewMsg} + * @type {INavViewMsg} * @memberof NavPosController */ - curNavViewMsg!: NavViewMsg; + curNavViewMsg!: INavViewMsg; /** * Router 对象 @@ -132,10 +136,10 @@ export class NavPosController extends PanelItemController { * @author zk * @date 2023-06-29 02:06:41 * @param {string} key - * @param {NavViewMsg} value + * @param {INavViewMsg} value * @memberof NavPosController */ - setNavViewMsgs(value: NavViewMsg) { + setNavViewMsgs(value: INavViewMsg) { if (this.state.navViewMsgs[value.key]) { this.state.navViewMsgs[value.key] = Object.assign( this.state.navViewMsgs[value.key], @@ -151,10 +155,10 @@ export class NavPosController extends PanelItemController { * * @author zk * @date 2023-06-29 03:06:21 - * @param {NavViewMsg} value + * @param {INavViewMsg} value * @memberof NavPosController */ - setDefaultOpenView(navViewMsg: NavViewMsg) { + setDefaultOpenView(navViewMsg: INavViewMsg) { this.state.currentKey = navViewMsg.key; this.state.cacheKeys.push(navViewMsg.key); this.setNavViewMsgs({ ...navViewMsg, fullPath: this.route.fullPath }); @@ -166,10 +170,10 @@ export class NavPosController extends PanelItemController { * * @author zk * @date 2023-06-29 02:06:39 - * @param {NavViewMsg} openViewMsg + * @param {INavViewMsg} openViewMsg * @memberof NavPosController */ - setViewModals(openViewMsg: NavViewMsg) { + setViewModals(openViewMsg: INavViewMsg) { this.viewModals[openViewMsg.key] = new Modal({ mode: this.routeDepth ? ViewMode.ROUTE : ViewMode.EMBED, routeDepth: this.routeDepth ? this.routeDepth + 1 : undefined, @@ -203,10 +207,10 @@ export class NavPosController extends PanelItemController { /** * 打开视图 * - * @param {NavViewMsg} openViewMsg + * @param {INavViewMsg} openViewMsg * @memberof NavPosController */ - openView(openViewMsg: NavViewMsg) { + openView(openViewMsg: INavViewMsg) { this.curNavViewMsg = openViewMsg; if (!this.state.navViewMsgs[openViewMsg.key]) { this.setNavViewMsgs(openViewMsg); @@ -221,10 +225,10 @@ export class NavPosController extends PanelItemController { /** * 通过路由打开视图 * - * @param {NavViewMsg} openViewMsg + * @param {INavViewMsg} openViewMsg * @memberof NavPosController */ - openViewByPath(openViewMsg: NavViewMsg) { + openViewByPath(openViewMsg: INavViewMsg) { if (!this.viewModals[openViewMsg.key]) { this.setViewModals(openViewMsg); } @@ -252,10 +256,10 @@ export class NavPosController extends PanelItemController { /** * 通过模型绘制视图 * - * @param {NavViewMsg} openViewMsg + * @param {INavViewMsg} openViewMsg * @memberof NavPosController */ - openViewByModel(openViewMsg: NavViewMsg) { + openViewByModel(openViewMsg: INavViewMsg) { if (!this.state.cacheKeys.includes(openViewMsg.key)) { this.state.cacheKeys.push(openViewMsg.key); } diff --git a/src/panel-component/nav-pos/nav-pos.provider.ts b/src/panel-component/nav-pos/nav-pos.provider.ts index 8a8e3fe2f..6bd5469ae 100644 --- a/src/panel-component/nav-pos/nav-pos.provider.ts +++ b/src/panel-component/nav-pos/nav-pos.provider.ts @@ -1,4 +1,7 @@ -import { IPanelItemProvider } from '@ibiz-template/runtime'; +import { + IPanelItemNavPosController, + IPanelItemProvider, +} from '@ibiz-template/runtime'; import { IPanelItem } from '@ibiz/model-core'; import { PanelController, PanelItemController } from '../../control'; import { NavPosController } from './nav-pos.controller'; @@ -19,14 +22,14 @@ export class NavPosProvider implements IPanelItemProvider { * @param {IPanelItem} panelItem * @param {PanelController} panel * @param {(PanelItemController | undefined)} parent - * @return {*} {Promise} + * @return {*} {Promise} * @memberof NavPosProvider */ async createController( panelItem: IPanelItem, panel: PanelController, parent: PanelItemController | undefined, - ): Promise { + ): Promise { const c = new NavPosController(panelItem, panel, parent); await c.init(); return c; -- Gitee