From 35d42f709816406635ab023185b34c1b5e597cd1 Mon Sep 17 00:00:00 2001 From: ShineKOT <1917095344@qq.com> Date: Fri, 25 Apr 2025 14:04:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E5=BF=AB=E9=80=9F=E5=88=87=E6=8D=A2=E6=97=B6=EF=BC=8C=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E6=A0=87=E7=AD=BE=E9=A1=B5=E6=98=BE=E7=A4=BA=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 +++ .../nav-pos-index/nav-pos-index.controller.ts | 6 ++-- .../nav-tabs/nav-tabs.controller.ts | 33 ++++++++++++++++--- .../nav-tabs/nav-tabs.state.ts | 31 +++++++++++++++++ 4 files changed, 67 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5f6bc0a0..ec5e40946 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ ## [Unreleased] +### Fixed + +- 修复路由快速切换时,导航标签页显示异常 + ## [0.7.40-alpha.14] - 2025-04-24 ### Changed 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 8f2aae1df..ed3ef81d5 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 @@ -241,15 +241,17 @@ export class NavPosIndexController extends PanelItemController { */ onViewCreated(event: EventBase): void { const { view } = event; - const key = this.state.currentKey; // 缓存一下当前的key,后面每次都是用它 + const key = this.state.currentKey; + const viewKey = `${view.model.codeName}-${view.id}`; if (this.navTabs) { this.navTabs.updateViewInfo(key, { + viewKey, caption: view.model.caption, sysImage: view.model.sysImage, }); // 监听这个视图的事件 view.evt.on('onViewInfoChange', ({ caption, dataInfo }) => { - this.navTabs!.updateViewInfo(key, { caption, dataInfo }); + this.navTabs!.updateViewInfo(key, { viewKey, caption, dataInfo }); }); } if (this.navBreadcrumb) { diff --git a/src/panel-component/nav-tabs/nav-tabs.controller.ts b/src/panel-component/nav-tabs/nav-tabs.controller.ts index 2424fba87..8ec6704f2 100644 --- a/src/panel-component/nav-tabs/nav-tabs.controller.ts +++ b/src/panel-component/nav-tabs/nav-tabs.controller.ts @@ -51,6 +51,17 @@ export class NavTabsController extends PanelItemController { return this.state.tabItems.find(item => item.key === key); } + /** + * 通过视图标识获取tabItem + * + * @param {string} key + * @return {*} {(TabMsg | undefined)} + * @memberof NavTabsController + */ + findTabItemByViewKey(key: string): TabMsg | undefined { + return this.state.tabItems.find(item => item.viewKey === key); + } + /** * 点击处理 * @author lxm @@ -63,16 +74,28 @@ export class NavTabsController extends PanelItemController { /** * 更新视图信息 - * @author lxm - * @date 2023-05-09 01:40:34 + * * @param {string} key - * @param {{ caption?: string; dataInfo?: string; sysImage?: ISysImage }} info + * @param {{ + * viewKey: string; + * caption?: string; + * dataInfo?: string; + * sysImage?: ISysImage; + * }} info + * @memberof NavTabsController */ updateViewInfo( key: string, - info: { caption?: string; dataInfo?: string; sysImage?: ISysImage }, + info: { + viewKey?: string; + caption?: string; + dataInfo?: string; + sysImage?: ISysImage; + }, ): void { - const findItem = this.findTabItem(key); + const findItem = info.viewKey + ? this.findTabItemByViewKey(info.viewKey) + : this.findTabItem(key); if (findItem) { Object.assign(findItem, reject(isNil, info)); this.refreshItemUI(key); diff --git a/src/panel-component/nav-tabs/nav-tabs.state.ts b/src/panel-component/nav-tabs/nav-tabs.state.ts index b3a9f45e7..a02c921bb 100644 --- a/src/panel-component/nav-tabs/nav-tabs.state.ts +++ b/src/panel-component/nav-tabs/nav-tabs.state.ts @@ -2,9 +2,40 @@ import { PanelItemState } from '@ibiz-template/runtime'; import { ISysImage } from '@ibiz/model-core'; export interface TabMsg { + /** + * tab标识 + * + * @type {string} + * @memberof TabMsg + */ key: string; + /** + * 视图标记 + * + * @type {string} + * @memberof TabMsg + */ + viewKey?: string; + /** + * 标题 + * + * @type {string} + * @memberof TabMsg + */ caption?: string; + /** + * 数据信息 + * + * @type {string} + * @memberof TabMsg + */ dataInfo?: string; + /** + * 图片 + * + * @type {ISysImage} + * @memberof TabMsg + */ sysImage?: ISysImage; } -- Gitee