diff --git a/CHANGELOG.md b/CHANGELOG.md index b5f6bc0a0bea18afbcff101c89db37015a69ebf7..ec5e40946cac7bc649697eac789cda2143458943 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 8f2aae1dfadf2f4b9bc9719585f360884c517b01..ed3ef81d50ab35ad0f96fe0cca8f34d3d3bb30a6 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 2424fba87fb8cb9bf51b9417a16e15e51d22d913..8ec6704f2dad9404a13264d2c213f21bfd092fba 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 b3a9f45e7f728de9e292ee4a3874a8badb9c1494..a02c921bbfa2a0c0a00ea0ccf3368042adea0adf 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; }