From 8cd938052acda7231ddb0c326ac0bf758a36ed2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=94=BF=E6=9D=83?= <1978141412@qq.com> Date: Tue, 8 Oct 2024 19:36:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=9D=A2=E5=8C=85?= =?UTF-8?q?=E5=B1=91=E8=A7=86=E5=9B=BEonActived=E6=97=B6datainfo=E6=9C=AA?= =?UTF-8?q?=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nav-breadcrumb.controller.ts | 45 +++++++------------ .../nav-breadcrumb/nav-breadcrumb.service.ts | 2 +- .../nav-pos-index/nav-pos-index.controller.ts | 14 +++++- 3 files changed, 29 insertions(+), 32 deletions(-) diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts b/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts index 0ce9d482..71260cb9 100644 --- a/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts +++ b/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts @@ -96,28 +96,10 @@ export class NavBreadcrumbController extends PanelItemController await super.onInit(); this.handleRawItemParams(); this.navMode = this.rawItemParams.navmode || 'router'; + this.navMode = 'store'; this.separator = this.rawItemParams.separator || '/'; this.showHome = this.rawItemParams.showhome === 'true'; this.service = new NavBreadcrumbService(this.navMode, this.panel.context); - if (['router', 'store'].includes(this.navMode)) { - ibiz.util.viewStack.evt.on('change', event => { - const { type, view } = event; - if (!['add', 'active'].includes(type)) { - return; - } - const chacheItem = this.service.getItem({ - viewName: view.model.codeName, - }); - if (chacheItem) { - const viewInfo = getViewInfoByViewStack(view.model.codeName!); - if (viewInfo) { - Object.assign(chacheItem, reject(isNil, viewInfo)); - } - this.service.update(chacheItem); - this.resetBreadcrumbs(); - } - }); - } } /** @@ -126,9 +108,11 @@ export class NavBreadcrumbController extends PanelItemController * @memberof NavBreadcrumbController */ onCreated(router: Router): void { + // 初始化时根据路由获取菜单模型,算出导航数据 if (this.navMode === 'menu') { this.setBreadcrumbByMenu(router); } + // 缓存模式初始化时,获取缓存数据,如果不存在缓存数据,则更加路由计算出导航数据 if (this.navMode === 'store') { this.setBreadcrumbByStore(router); } @@ -140,10 +124,16 @@ export class NavBreadcrumbController extends PanelItemController * @memberof NavBreadcrumbController */ onRouteChange(router: Router): void { - if (['store', 'router'].includes(this.navMode)) { + // 路由模式:根据路由计算导航数据 + if (this.navMode === 'router') { + this.setBreadcrumbByRouter(router); + return; + } + if (this.navMode === 'store') { const { currentRoute } = router; const fullPath = currentRoute.value.fullPath; const viewName = getCurViewName(router); + // 缓存模式:点击面包屑时或者浏览器路由返回,会存在缓存数据,此时需将缓存数据项后续数据删除 const chacheItem = this.service.getItem({ fullPath, viewName }); if (chacheItem) { // 首页特殊处理 @@ -154,15 +144,8 @@ export class NavBreadcrumbController extends PanelItemController this.resetBreadcrumbs(); return; } - const removeItems = this.service.removeAfter(fullPath); + this.service.removeAfter(fullPath); this.resetBreadcrumbs(); - removeItems.forEach(item => { - if (item.fullPath) { - this.navPos?.closeViewByKeys([item.fullPath]); - } - }); - } else if (this.navMode === 'router') { - this.setBreadcrumbByRouter(router); } } } @@ -190,7 +173,10 @@ export class NavBreadcrumbController extends PanelItemController if (this.navMode === 'menu') { return; } - this.service.update({ fullPath, ...info }); + + // 路由模式:路由跳转时只存放视图codename,具体视图信息此时更新,且datainfo也是此时添加 + // 缓存模式:视图更新时,判断是否存在缓存数据项,存在则更新,不存在则添加 + this.service.updateOrAdd({ fullPath, ...info }); this.resetBreadcrumbs(); } @@ -282,6 +268,7 @@ export class NavBreadcrumbController extends PanelItemController this.service.setChache([getIndexBreadcrumb(this.panel.context)]); this.resetBreadcrumbs(); } + // 菜单模式:每次点击菜单都会重新计算导航数据 this.appmenu.evt.on('onClick', (data: IData) => { const { event } = data; const items = event.map((key: string) => { diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts b/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts index 770d32b5..c356d463 100644 --- a/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts +++ b/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts @@ -74,7 +74,7 @@ export class NavBreadcrumbService { * @param {BreadcrumbMsg} item * @memberof NavBreadcrumbService */ - update(item: BreadcrumbMsg): void { + updateOrAdd(item: BreadcrumbMsg): void { // 缓存模式先获取缓存数据 if (!this.chache.length && this.navMode === 'store') { const result = localStorage.getItem('breadcrumb'); diff --git a/src/panel-component/nav-pos-index/nav-pos-index.controller.ts b/src/panel-component/nav-pos-index/nav-pos-index.controller.ts index 3391cfd6..e0abc80f 100644 --- a/src/panel-component/nav-pos-index/nav-pos-index.controller.ts +++ b/src/panel-component/nav-pos-index/nav-pos-index.controller.ts @@ -1,6 +1,7 @@ import { EventBase, IAppMenuController, + IEditFormController, IModal, IModalData, Modal, @@ -262,10 +263,19 @@ export class NavPosIndexController extends PanelItemController { }); }); view.evt.on('onActivated', () => { - this.navBreadcrumb!.updateViewInfo(key, { + // 只有表单存在datainfo + const form = view.getController('form') as IEditFormController; + const info = { viewName: view.model.codeName!, caption: view.model.caption, - }); + }; + if (form) { + const data = form.state.data; + if (data.srfkey) { + Object.assign(info, { dataInfo: data.srfmajortext || '' }); + } + } + this.navBreadcrumb!.updateViewInfo(key, info); }); } } -- Gitee From 03590dc097e22d2459408b889191cd919d6f4fa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=94=BF=E6=9D=83?= <1978141412@qq.com> Date: Tue, 8 Oct 2024 19:58:45 +0800 Subject: [PATCH 2/2] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb4117d7..85774180 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ ### Fixed - 修复顶部菜单切换时菜单项闪烁白色底部border的问题 +- 修复面包屑视图onActived时datainfo未变更 ### Changed -- Gitee