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 dc71a13a1fdaf23474af3ab87911412d51889df3..ba9a3a5ebbe48de9b2cbb92bcb93f331bba123f1 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 e737f9b67fb748411414bc93b0e380b90e4fb9ac..fbf4aafb95b096487d85807e47da318f0c589174 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 6fe8ed00c8657b4b0e3a0e34edc321982c8cde4a..bd411e22c3de5000eda76dcca406462b2ab9cf2b 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; } }