From b1f44544ab01d5a2162f1a4d21e21e6ad1769396 Mon Sep 17 00:00:00 2001 From: zhangkang <1752553776@qq.com> Date: Mon, 19 Jun 2023 22:16:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=86=E9=A1=B5=E5=AF=BC=E8=88=AA?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E8=A7=86=E5=9B=BE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tab-exp-panel/tab-exp-panel.controller.ts | 29 +++++++++++++++++-- src/control/tab-exp-panel/tab-exp-panel.tsx | 1 + src/view-engine/tab-exp-view.engine.ts | 4 +++ 3 files changed, 32 insertions(+), 2 deletions(-) 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 dc71a13a..ba9a3a5e 100644 --- a/src/control/tab-exp-panel/tab-exp-panel.controller.ts +++ b/src/control/tab-exp-panel/tab-exp-panel.controller.ts @@ -85,11 +85,33 @@ export class TabExpPanelController }); this.state.tabPages = tabPages; if (tabPages.length > 0) { - this.state.activeName = tabPages[0].tabTag; + this.initDefaultPage(); this.handleTabChange(); } } + /** + * 初始化默认分页 + * + * @author zk + * @date 2023-06-19 09:06:33 + * @memberof TabExpPanelController + */ + initDefaultPage() { + if (!this.state.defaultTabName) { + this.state.activeName = this.state.tabPages[0].tabTag; + } else { + const activeTab = this.state.tabPages.find( + item => item.tabTag === this.state.defaultTabName, + ); + if (!activeTab) { + this.state.activeName = this.state.tabPages[0].tabTag; + } else { + this.state.activeName = activeTab.tabTag; + } + } + } + /** * 处理分页改变 * @@ -130,7 +152,10 @@ export class TabExpPanelController data: {}, }; const { resultContext, resultParams } = calcNavParams(model, originParams); - const context = Object.assign(this.context.clone(), resultContext); + // 合并SrfNav + const context = Object.assign(this.context.clone(), resultContext, { + currentSrfNav: this.state.activeName, + }); const params = { ...this.params, ...resultParams }; return { context, params }; } diff --git a/src/control/tab-exp-panel/tab-exp-panel.tsx b/src/control/tab-exp-panel/tab-exp-panel.tsx index e737f9b6..fbf4aafb 100644 --- a/src/control/tab-exp-panel/tab-exp-panel.tsx +++ b/src/control/tab-exp-panel/tab-exp-panel.tsx @@ -10,6 +10,7 @@ export const TabExpPanelControl = defineComponent({ modelData: { type: Object as PropType, required: true }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, + defaultTabName: { type: String, required: false } }, setup() { const c = useControlController( diff --git a/src/view-engine/tab-exp-view.engine.ts b/src/view-engine/tab-exp-view.engine.ts index 6fe8ed00..bd411e22 100644 --- a/src/view-engine/tab-exp-view.engine.ts +++ b/src/view-engine/tab-exp-view.engine.ts @@ -45,5 +45,9 @@ export class TabExpViewEngine extends ViewEngineBase { await super.onCreated(); const { childNames } = this.view; childNames.push('tabexppanel'); + if (!this.view.slotProps.tabexppanel) { + this.view.slotProps.tabexppanel = {}; + } + this.view.slotProps.tabexppanel.defaultTabName = this.view.state.srfnav; } } -- Gitee