From b42deb4f212a0df3f5ae81405890b62e572db908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=94=BF=E6=9D=83?= <1978141412@qq.com> Date: Thu, 19 Sep 2024 10:36:37 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=E5=AE=9E=E4=BD=93=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=E8=A7=86=E5=9B=BE=E9=BB=98=E8=AE=A4=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/view-engine/de-index-view-engine.ts | 21 ++++++++++++ src/view-engine/edit-view.engine.ts | 45 ++++++++++++++----------- 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/src/view-engine/de-index-view-engine.ts b/src/view-engine/de-index-view-engine.ts index 03df48101..295f8bf94 100644 --- a/src/view-engine/de-index-view-engine.ts +++ b/src/view-engine/de-index-view-engine.ts @@ -3,6 +3,7 @@ import { IDEIndexViewState, IDEIndexViewEvent, IDRBarController, + EventBase, } from '@ibiz-template/runtime'; import { IAppDEIndexView } from '@ibiz/model-core'; import { EditViewEngine } from './edit-view.engine'; @@ -57,4 +58,24 @@ export class DEIndexViewEngine extends EditViewEngine { this.view.slotProps.drbar.srfnav = this.view.state.srfnav; this.view.slotProps.drbar.hideEditItem = true; } + + /** + * @description 监控form事件 + * @param {EventBase} event + * @memberof DEIndexViewEngine + */ + formDataStateChange(event: EventBase): void { + const { evt } = this.view; + const formDeId = this.form.model.appDataEntityId; + const data = event.data[0]; + this.toolbar?.calcButtonState(data, formDeId); + // 实体首页视图显示信息栏模型缺失,默认显示 + if (data.srfkey) { + evt.emit('onViewInfoChange', { dataInfo: data.srfmajortext || '' }); + } else { + evt.emit('onViewInfoChange', { + dataInfo: ibiz.i18n.t('app.newlyBuild'), + }); + } + } } diff --git a/src/view-engine/edit-view.engine.ts b/src/view-engine/edit-view.engine.ts index ba862316b..7a69c28b1 100644 --- a/src/view-engine/edit-view.engine.ts +++ b/src/view-engine/edit-view.engine.ts @@ -146,6 +146,27 @@ export class EditViewEngine extends ViewEngineBase { modal.hooks.shouldDismiss.tapPromise(this.modalEventHook); } + /** + * @description 监控form事件 + * @param {EventBase} event + * @memberof EditViewEngine + */ + formDataStateChange(event: EventBase): void { + const { model, evt } = this.view; + const formDeId = this.form.model.appDataEntityId; + const data = event.data[0]; + this.toolbar?.calcButtonState(data, formDeId); + if (model.showDataInfoBar) { + if (data.srfkey) { + evt.emit('onViewInfoChange', { dataInfo: data.srfmajortext || '' }); + } else { + evt.emit('onViewInfoChange', { + dataInfo: ibiz.i18n.t('app.newlyBuild'), + }); + } + } + } + async onMounted(): Promise { await super.onMounted(); @@ -153,24 +174,8 @@ export class EditViewEngine extends ViewEngineBase { const { model, evt } = this.view; - // 监控form事件 - const formDeId = this.form.model.appDataEntityId; - const formDataStateChange = (event: EventBase): void => { - const data = event.data[0]; - this.toolbar?.calcButtonState(data, formDeId); - if (model.showDataInfoBar) { - if (data.srfkey) { - evt.emit('onViewInfoChange', { dataInfo: data.srfmajortext || '' }); - } else { - evt.emit('onViewInfoChange', { - dataInfo: ibiz.i18n.t('app.newlyBuild'), - }); - } - } - }; - this.form.evt.on('onLoadSuccess', event => { - formDataStateChange(event); + this.formDataStateChange(event); // 更新视图作用域数据和srfreadonly数据 const data = event.data[0]; this.view.state.srfactiveviewdata = data; @@ -180,7 +185,7 @@ export class EditViewEngine extends ViewEngineBase { evt.emit('onDataChange', { ...event, actionType: 'LOAD' }); }); this.form.evt.on('onLoadDraftSuccess', event => { - formDataStateChange(event); + this.formDataStateChange(event); evt.emit('onDataChange', { ...event, actionType: 'LOADDRAFT' }); }); this.form.evt.on('onSaveSuccess', event => { @@ -190,11 +195,11 @@ export class EditViewEngine extends ViewEngineBase { if (this.view.context[deName] !== formData.srfkey) { this.view.context[deName] = formData.srfkey; } - formDataStateChange(event); + this.formDataStateChange(event); evt.emit('onDataChange', { ...event, actionType: 'SAVE' }); }); this.form.evt.on('onRemoveSuccess', event => { - formDataStateChange(event); + this.formDataStateChange(event); evt.emit('onDataChange', { ...event, actionType: 'REMOVE' }); }); -- Gitee From ae83ee46867b9835449afe648cb9d877c9e71c2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=94=BF=E6=9D=83?= <1978141412@qq.com> Date: Thu, 19 Sep 2024 10:37:58 +0800 Subject: [PATCH 2/6] =?UTF-8?q?style:=20=E6=A0=91=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E6=96=87=E8=8F=9C=E5=8D=95=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E7=BB=9F=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/control/tree/tree.scss | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/control/tree/tree.scss b/src/control/tree/tree.scss index 4fae60238..2753a72cc 100644 --- a/src/control/tree/tree.scss +++ b/src/control/tree/tree.scss @@ -20,8 +20,13 @@ $control-treeview-node: ( $control-treeview-context-menu: ( width: 30px, - padding: getCssVar(spacing, extra-tight) 0, - item-padding: getCssVar(spacing, tight) getCssVar(spacing, base), + padding: getCssVar(spacing, tight) getCssVar(spacing, none), + item-padding: getCssVar(spacing, tight) getCssVar(spacing, base-loose), + item-height: 40px, + border-radius: getCssVar(spacing, none), + bg-color: getCssVar(color, bg, 3), + hover-color: getCssVar(color, fill, 0), + text-color: getCssVar(color, text, 2), ); $control-treeview-quick-search: ( @@ -96,11 +101,22 @@ $control-treeview-tree: ( // 树节点上下文菜单样式 @include b(control-treeview-context-menu) { @include set-component-css-var(control-treeview-context-menu, $control-treeview-context-menu); + &.mx-context-menu { padding: getCssVar(control-treeview-context-menu, padding); + background-color: getCssVar(control-treeview-context-menu, bg-color); + border-radius: getCssVar(control-treeview-context-menu, border-radius); + + --mx-menu-text: #{getCssVar(control-treeview-context-menu, text-color)}; .mx-context-menu-item { + height: getCssVar(control-treeview-context-menu, item-height); padding: getCssVar(control-treeview-context-menu, item-padding); + + &:hover { + color: getCssVar(control-treeview-context-menu, text-color); + background-color: getCssVar(control-treeview-context-menu, hover-color); + } } } } -- Gitee From a53e036d33588a3abbeaa967a1f8061278356f53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=94=BF=E6=9D=83?= <1978141412@qq.com> Date: Thu, 19 Sep 2024 10:38:52 +0800 Subject: [PATCH 3/6] =?UTF-8?q?style:=20=E6=8A=BD=E5=8F=96drtab=E9=83=A8?= =?UTF-8?q?=E4=BB=B6=E6=A0=B7=E5=BC=8F=E4=B8=BB=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/control/drtab/drtab.scss | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/control/drtab/drtab.scss b/src/control/drtab/drtab.scss index 379fbce4d..3ff93bf03 100644 --- a/src/control/drtab/drtab.scss +++ b/src/control/drtab/drtab.scss @@ -1,5 +1,11 @@ -@include b(control-drtab) { +$control-drtab: ( + 'active-color': getCssVar('color', 'primary'), + 'hover-color': getCssVar('color', 'text', 0), + 'hover-bg-color': transparent, +); +@include b(control-drtab) { + @include set-component-css-var('control-drtab', $control-drtab); @include e(counter) { margin-left: getCssVar(spacing, tight); } @@ -14,7 +20,7 @@ .el-tabs__nav { .el-tabs__active-bar { - background-color: getCssVar('color', 'primary'); + background-color: getCssVar('control-drtab', 'active-color'); } .el-tabs__item { @@ -22,11 +28,12 @@ color: getCssVar('color', 'text', 2); &:hover { - color: getCssVar('color', 'text', 0); + color: getCssVar('control-drtab', 'hover-color'); + background-color: getCssVar('control-drtab', 'hover-bg-color'); } &.is-active { - color: getCssVar('color', 'primary'); + color: getCssVar('control-drtab', 'active-color'); } &.is-top { -- Gitee From 9ff5f7b4266c2038a9bdf3ef2bad16bc9d88e18d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=94=BF=E6=9D=83?= <1978141412@qq.com> Date: Thu, 19 Sep 2024 17:47:15 +0800 Subject: [PATCH 4/6] =?UTF-8?q?feat:=20=E9=9D=A2=E5=8C=85=E5=B1=91?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=B7=BB=E5=8A=A0=E6=98=AF=E5=90=A6=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=A6=96=E9=A1=B5=E5=8F=82=E6=95=B0=E3=80=81=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=E6=A0=87=E9=A2=98=E6=94=B9=E4=B8=BA=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nav-breadcrumb.controller.ts | 23 ++++++++++++++----- .../nav-breadcrumb/nav-breadcrumb.scss | 2 +- .../nav-breadcrumb/nav-breadcrumb.service.ts | 7 ++++-- .../nav-breadcrumb/nav-breadcrumb.tsx | 8 ++++++- .../nav-breadcrumb/nav-breadcrumb.util.ts | 6 +++-- 5 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts b/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts index 48ada9a8c..0ce9d4825 100644 --- a/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts +++ b/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts @@ -51,6 +51,13 @@ export class NavBreadcrumbController extends PanelItemController */ navMode: 'router' | 'menu' | 'store' = 'router'; + /** + * @description 是否显示应用标题 + * @type {boolean} + * @memberof NavBreadcrumbController + */ + showHome: boolean = true; + /** * @description 面包屑服务 * @type {NavBreadcrumbService} @@ -89,7 +96,9 @@ export class NavBreadcrumbController extends PanelItemController await super.onInit(); this.handleRawItemParams(); this.navMode = this.rawItemParams.navmode || 'router'; - this.service = new NavBreadcrumbService(this.navMode); + 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; @@ -139,7 +148,9 @@ export class NavBreadcrumbController extends PanelItemController if (chacheItem) { // 首页特殊处理 if (chacheItem.viewName === ibiz.hub.defaultAppIndexViewName) { - this.service.setChache([{ ...getIndexBreadcrumb(), fullPath }]); + this.service.setChache([ + { ...getIndexBreadcrumb(this.panel.context), fullPath }, + ]); this.resetBreadcrumbs(); return; } @@ -263,12 +274,12 @@ export class NavBreadcrumbController extends PanelItemController viewName: item.id!, }; }); - items.unshift(getIndexBreadcrumb()); + items.unshift(getIndexBreadcrumb(this.panel.context)); this.service.setChache(items); this.resetBreadcrumbs(); } else { // 未找到应用功能时只绘制首页 - this.service.setChache([getIndexBreadcrumb()]); + this.service.setChache([getIndexBreadcrumb(this.panel.context)]); this.resetBreadcrumbs(); } this.appmenu.evt.on('onClick', (data: IData) => { @@ -283,7 +294,7 @@ export class NavBreadcrumbController extends PanelItemController }; } }); - items.unshift(getIndexBreadcrumb()); + items.unshift(getIndexBreadcrumb(this.panel.context)); this.service.setChache(items); this.resetBreadcrumbs(); }); @@ -334,7 +345,7 @@ export class NavBreadcrumbController extends PanelItemController fullPath: '', }); } - items.unshift(getIndexBreadcrumb()); + items.unshift(getIndexBreadcrumb(this.panel.context)); this.service.setChache(items); this.resetBreadcrumbs(); } diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.scss b/src/panel-component/nav-breadcrumb/nav-breadcrumb.scss index caef0da24..7409efba6 100644 --- a/src/panel-component/nav-breadcrumb/nav-breadcrumb.scss +++ b/src/panel-component/nav-breadcrumb/nav-breadcrumb.scss @@ -1,5 +1,5 @@ $nav-breadcrumb: ( - 'padding': getCssVar('spacing', 'base-loose'), + 'padding': getCssVar('spacing', 'base-loose') getCssVar('spacing', 'base-loose') 0, 'link-color': getCssVar('color', 'link'), 'disabled-color': getCssVar('color', 'text', 0), ); diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts b/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts index 5db753829..770d32b53 100644 --- a/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts +++ b/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts @@ -16,7 +16,10 @@ export class NavBreadcrumbService { */ private chache: BreadcrumbMsg[] = []; - constructor(public readonly navMode: 'router' | 'menu' | 'store') {} + constructor( + public readonly navMode: 'router' | 'menu' | 'store', + private context: IContext, + ) {} /** * @description 添加缓存项 @@ -105,7 +108,7 @@ export class NavBreadcrumbService { // 首页视图特殊处理 const { viewName = '', fullPath = '' } = data; if (viewName === 'index') { - return getIndexBreadcrumb(); + return getIndexBreadcrumb(this.context); } const item = this.chache.find( x => diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.tsx b/src/panel-component/nav-breadcrumb/nav-breadcrumb.tsx index 82bf1051a..ff4ced32c 100644 --- a/src/panel-component/nav-breadcrumb/nav-breadcrumb.tsx +++ b/src/panel-component/nav-breadcrumb/nav-breadcrumb.tsx @@ -40,7 +40,13 @@ export const NavBreadcrumb = defineComponent({ const items = computed(() => { const { breadcrumbItems } = c.state; - return breadcrumbItems.filter(x => x.caption); + let result = breadcrumbItems.filter(x => x.caption); + if (!c.showHome) { + result = result.filter( + x => x.viewName !== ibiz.hub.defaultAppIndexViewName, + ); + } + return result; }); return { ns, c, items }; diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.util.ts b/src/panel-component/nav-breadcrumb/nav-breadcrumb.util.ts index 9a9034592..d4703bd4c 100644 --- a/src/panel-component/nav-breadcrumb/nav-breadcrumb.util.ts +++ b/src/panel-component/nav-breadcrumb/nav-breadcrumb.util.ts @@ -9,11 +9,13 @@ import { BreadcrumbMsg } from './nav-breadcrumb.state'; * @export * @return {*} {BreadcrumbMsg} */ -export function getIndexBreadcrumb(): BreadcrumbMsg { +export function getIndexBreadcrumb(context: IContext): BreadcrumbMsg { + const app = ibiz.hub.getApp(context.srfappid); + const caption = app.model.caption; return { viewName: ibiz.hub.defaultAppIndexViewName, fullPath: '/', - caption: ibiz.i18n.t('panelComponent.navBreadcrumb.home'), + caption, }; } -- Gitee From 62223867464698a7d0dfc8661286b5b45b646a64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=94=BF=E6=9D=83?= <1978141412@qq.com> Date: Thu, 19 Sep 2024 17:47:41 +0800 Subject: [PATCH 5/6] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=9D=A2=E5=8C=85?= =?UTF-8?q?=E5=B1=91=E7=BC=93=E5=AD=98=E8=AE=A1=E7=AE=97=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nav-pos-index/nav-pos-index.controller.ts | 6 ++++++ 1 file changed, 6 insertions(+) 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 63f16fe3e..3391cfd68 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 @@ -261,6 +261,12 @@ export class NavPosIndexController extends PanelItemController { dataInfo, }); }); + view.evt.on('onActivated', () => { + this.navBreadcrumb!.updateViewInfo(key, { + viewName: view.model.codeName!, + caption: view.model.caption, + }); + }); } } -- Gitee From b763bb27ac13ddcd510ac7660a6e5dedd7afe533 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=94=BF=E6=9D=83?= <1978141412@qq.com> Date: Thu, 19 Sep 2024 17:53:51 +0800 Subject: [PATCH 6/6] =?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 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3818ca2f..f3bf41af0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,17 @@ ## [Unreleased] +### Changed + +- 实体首页视图默认显示信息栏 +- 树节点上下文菜单样式统一 +- 抽取drtab部件样式主题 +- 面包屑组件添加是否显示首页参数、首页标题改为应用标题 + +### Fixed + +- 修复面包屑缓存计算异常 + ## [0.7.38-alpha.7] - 2024-09-18 ### Added -- Gitee