From 2b7b287c4ad23be519a468bfb5482434c18c7c0a Mon Sep 17 00:00:00 2001
From: Cano1997 <1978141412@qq.com>
Date: Mon, 11 Aug 2025 10:10:51 +0800
Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=E6=A0=91=E8=A1=A8=E6=A0=BC?=
=?UTF-8?q?=E5=A2=9E=E5=BC=BA=E5=85=A8=E8=A1=A8=E6=A0=BC=E7=BC=96=E8=BE=91?=
=?UTF-8?q?=E6=94=AF=E6=8C=81editSaveMode=E9=83=A8=E4=BB=B6=E5=8F=82?=
=?UTF-8?q?=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../tree-grid-ex-column/tree-grid-ex-edit-column/all-edit.ts | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-edit-column/all-edit.ts b/src/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-edit-column/all-edit.ts
index f71343ee..e1faf95a 100644
--- a/src/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-edit-column/all-edit.ts
+++ b/src/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-edit-column/all-edit.ts
@@ -43,7 +43,10 @@ export function useAllEdit(
});
const onBlur = (): void => {
- c.treeGrid.save(props.row.data);
+ // 失焦保存模式时,触发保存
+ if (c.treeGrid.editSaveMode === 'cell-blur') {
+ c.treeGrid.save(props.row.data);
+ }
};
const gridEditItemProps = reactive({
--
Gitee
From e9eec08450eb375a684dfd6469362ed718a2a2dd Mon Sep 17 00:00:00 2001
From: Cano1997 <1978141412@qq.com>
Date: Mon, 11 Aug 2025 10:11:15 +0800
Subject: [PATCH 2/6] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=A0=91=E8=A1=A8?=
=?UTF-8?q?=E6=A0=BC=E5=A2=9E=E5=BC=BA=E8=A1=A8=E6=A0=BC=E5=A4=B4=E6=9C=AA?=
=?UTF-8?q?=E8=AF=86=E5=88=AB=E5=AF=B9=E9=BD=90=E6=A8=A1=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/control/tree-grid-ex/tree-grid-ex.scss | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/control/tree-grid-ex/tree-grid-ex.scss b/src/control/tree-grid-ex/tree-grid-ex.scss
index 0865b019..7d16d0a1 100644
--- a/src/control/tree-grid-ex/tree-grid-ex.scss
+++ b/src/control/tree-grid-ex/tree-grid-ex.scss
@@ -127,7 +127,7 @@ $control-treegridex-footer: (
}
// 修复表头换行排序图标错位问题
- .is-sortable.el-table__cell {
+ .el-table__cell {
.cell {
display: flex;
align-items: center;
--
Gitee
From 4512dcd66111a089a2c7c52fbce9dcbcbac3c696 Mon Sep 17 00:00:00 2001
From: Cano1997 <1978141412@qq.com>
Date: Mon, 11 Aug 2025 10:11:27 +0800
Subject: [PATCH 3/6] =?UTF-8?q?feat:=20=E6=A0=91=E8=A1=A8=E6=A0=BC?=
=?UTF-8?q?=E5=A2=9E=E5=BC=BA=E6=94=AF=E6=8C=81=E5=86=85=E7=BD=AE=E5=AF=BC?=
=?UTF-8?q?=E8=88=AA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../control-navigation/provider/index.ts | 3 +-
src/control/tree-grid-ex/tree-grid-ex.tsx | 66 ++++++++++---------
2 files changed, 36 insertions(+), 33 deletions(-)
diff --git a/src/common/control-navigation/provider/index.ts b/src/common/control-navigation/provider/index.ts
index 71209757..b4e53033 100644
--- a/src/common/control-navigation/provider/index.ts
+++ b/src/common/control-navigation/provider/index.ts
@@ -17,7 +17,8 @@ export function getNavigationProvider(
const { controlType } = controller.model;
if (controlType === 'CALENDAR')
return new CalendarNavigationProvider(controller);
- if (controlType === 'TREEVIEW') return new TreeNavigationProvider(controller);
+ if (controlType === 'TREEVIEW' || controlType === 'TREEGRIDEX')
+ return new TreeNavigationProvider(controller);
if (controlType === 'MAP') return new MapNavigationProvider(controller);
return new NavgationBaseProvider(controller);
}
diff --git a/src/control/tree-grid-ex/tree-grid-ex.tsx b/src/control/tree-grid-ex/tree-grid-ex.tsx
index 6cbef9b0..7c8e1ad5 100644
--- a/src/control/tree-grid-ex/tree-grid-ex.tsx
+++ b/src/control/tree-grid-ex/tree-grid-ex.tsx
@@ -316,38 +316,40 @@ export const TreeGridExControl = defineComponent({
);
};
return (
-
- {this.c.state.isLoaded && (
-
- {{
- empty: this.renderNoData,
- default: (): VNodeArrayChildren => {
- return [
- this.renderColumns.map((model, index) => {
- return renderColumn(model, index);
- }),
- ];
- },
- append: () => {
- return this.renderPopover();
- },
- }}
-
- )}
-
+
+
+ {this.c.state.isLoaded && (
+
+ {{
+ empty: this.renderNoData,
+ default: (): VNodeArrayChildren => {
+ return [
+ this.renderColumns.map((model, index) => {
+ return renderColumn(model, index);
+ }),
+ ];
+ },
+ append: () => {
+ return this.renderPopover();
+ },
+ }}
+
+ )}
+
+
);
},
});
--
Gitee
From cad1e42c528ff45884f2fc68946f1fda611a1123 Mon Sep 17 00:00:00 2001
From: Cano1997 <1978141412@qq.com>
Date: Mon, 11 Aug 2025 10:12:18 +0800
Subject: [PATCH 4/6] =?UTF-8?q?fix:=20=E9=9D=A2=E5=8C=85=E5=B1=91=E7=BB=84?=
=?UTF-8?q?=E4=BB=B6=E5=85=BC=E5=AE=B9=E5=A4=9A=E5=BA=94=E7=94=A8=EF=BC=8C?=
=?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=93=E5=AD=98=E8=A7=86=E5=9B=BEdatainfo?=
=?UTF-8?q?=E4=B8=A2=E5=A4=B1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../nav-breadcrumb.controller.ts | 9 ++++-
.../nav-breadcrumb/nav-breadcrumb.service.ts | 5 ++-
.../nav-breadcrumb/nav-breadcrumb.tsx | 6 +--
.../nav-breadcrumb/nav-breadcrumb.util.ts | 39 +++++++++++++++----
4 files changed, 44 insertions(+), 15 deletions(-)
diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts b/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts
index ae9b2610..371a94f9 100644
--- a/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts
+++ b/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts
@@ -18,6 +18,7 @@ import { BreadcrumbMsg, NavBreadcrumbState } from './nav-breadcrumb.state';
import { NavBreadcrumbService } from './nav-breadcrumb.service';
import {
getAppFuncByViewName,
+ getAppIndexViewName,
getCurViewName,
getIndexBreadcrumb,
getMenuItemByTag,
@@ -145,9 +146,10 @@ export class NavBreadcrumbController extends PanelItemController
const menuTag = getMenuTag(routePath.pathNodes);
// 缓存模式:点击面包屑时或者浏览器路由返回,会存在缓存数据,此时需将缓存数据项后续数据删除
const chacheItem = this.service.getItem({ fullPath, viewName });
+ const indexViewName = getAppIndexViewName(this.panel.context);
if (chacheItem) {
// 首页特殊处理
- if (chacheItem.viewName === ibiz.hub.defaultAppIndexViewName) {
+ if (chacheItem.viewName === indexViewName) {
this.service.setChache([
{ ...getIndexBreadcrumb(this.panel.context), fullPath },
]);
@@ -245,7 +247,10 @@ export class NavBreadcrumbController extends PanelItemController
}
Object.assign(result, chacheItem);
}
- const viewInfo = getViewInfoByViewStack(node.viewName);
+ const viewInfo = getViewInfoByViewStack(
+ node.viewName,
+ this.panel.context,
+ );
if (viewInfo) {
Object.assign(result, reject(isNil, viewInfo));
}
diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts b/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts
index d83faf8c..5c4a6cc3 100644
--- a/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts
+++ b/src/panel-component/nav-breadcrumb/nav-breadcrumb.service.ts
@@ -1,6 +1,6 @@
import { clone, isNil, reject } from 'ramda';
import { BreadcrumbMsg } from './nav-breadcrumb.state';
-import { getIndexBreadcrumb } from './nav-breadcrumb.util';
+import { getAppIndexViewName, getIndexBreadcrumb } from './nav-breadcrumb.util';
/**
* @description 面包屑服务
@@ -105,7 +105,8 @@ export class NavBreadcrumbService {
getItem(data: IData): BreadcrumbMsg | undefined {
// 首页视图特殊处理
const { viewName = '', fullPath = '' } = data;
- if (viewName === 'index') {
+ const indexViewName = getAppIndexViewName(this.context);
+ if (viewName === indexViewName) {
return getIndexBreadcrumb(this.context);
}
const item = this.chache.find(
diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.tsx b/src/panel-component/nav-breadcrumb/nav-breadcrumb.tsx
index e148d763..a76a851d 100644
--- a/src/panel-component/nav-breadcrumb/nav-breadcrumb.tsx
+++ b/src/panel-component/nav-breadcrumb/nav-breadcrumb.tsx
@@ -4,6 +4,7 @@ import { IPanelRawItem } from '@ibiz/model-core';
import { useRoute, useRouter } from 'vue-router';
import { NavBreadcrumbController } from './nav-breadcrumb.controller';
import { BreadcrumbMsg } from './nav-breadcrumb.state';
+import { getAppIndexViewName } from './nav-breadcrumb.util';
import './nav-breadcrumb.scss';
export interface dropdownAction {
@@ -56,10 +57,9 @@ export const NavBreadcrumb = defineComponent({
const items = computed(() => {
const { breadcrumbItems } = c.state;
let result = breadcrumbItems.filter(x => x.caption);
+ const indexViewName = getAppIndexViewName(c.panel.context);
if (!c.showHome) {
- result = result.filter(
- x => x.viewName !== ibiz.hub.defaultAppIndexViewName,
- );
+ result = result.filter(x => x.viewName !== indexViewName);
}
return result;
});
diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.util.ts b/src/panel-component/nav-breadcrumb/nav-breadcrumb.util.ts
index 52bdd1cd..23da75fa 100644
--- a/src/panel-component/nav-breadcrumb/nav-breadcrumb.util.ts
+++ b/src/panel-component/nav-breadcrumb/nav-breadcrumb.util.ts
@@ -8,6 +8,22 @@ import {
import { IAppMenuController, RouteConst } from '@ibiz-template/runtime';
import { BreadcrumbMsg } from './nav-breadcrumb.state';
+/**
+ * @description 获取首页视图名称
+ * @export
+ * @param {IContext} context
+ * @returns {*} {string}
+ */
+export function getAppIndexViewName(context: IContext): string {
+ const targetAppModel = ibiz.hub.getAppSourceModel(context.srfappid);
+ if (targetAppModel.getDefaultPSAppIndexView) {
+ const view = targetAppModel.getDefaultPSAppIndexView as IModel;
+ const name = view.path.split('/').pop().replace('.json', '');
+ return name;
+ }
+ return ibiz.hub.defaultAppIndexViewName;
+}
+
/**
* @description 获取首页导航信息
* @export
@@ -16,8 +32,9 @@ import { BreadcrumbMsg } from './nav-breadcrumb.state';
export function getIndexBreadcrumb(context: IContext): BreadcrumbMsg {
const app = ibiz.hub.getApp(context.srfappid);
const caption = app.model.caption;
+ const indexViewName = getAppIndexViewName(context);
return {
- viewName: ibiz.hub.defaultAppIndexViewName,
+ viewName: indexViewName,
fullPath: '/',
type: 'default',
caption,
@@ -97,7 +114,10 @@ export function getCurViewName(router: Router): string {
* @param {string} viewName
* @return {*} {(IData | undefined)}
*/
-export function getViewInfoByViewStack(viewName: string): IData | undefined {
+export function getViewInfoByViewStack(
+ viewName: string,
+ context: IContext,
+): IData | undefined {
if (viewName === RouteConst.ROUTE_MODAL_TAG) {
return {
viewName,
@@ -105,21 +125,24 @@ export function getViewInfoByViewStack(viewName: string): IData | undefined {
isModal: true,
};
}
- const view = ibiz.util.viewStack.getViewByCodeName(viewName);
+ const view = ibiz.appUtil.viewCacheCenter.get(viewName);
+ const indexViewName = getAppIndexViewName(context);
if (view) {
// 识别嵌入视图
let isEmbed = false;
- if (
- view.parentView &&
- view.parentView.model.codeName !== ibiz.hub.defaultAppIndexViewName
- ) {
+ if (view.parentView && view.parentView.model.codeName !== indexViewName) {
isEmbed = true;
}
- return {
+ const data = view.state.srfactiveviewdata;
+ const result = {
viewName: view.model.codeName!,
caption: view.model.caption,
isEmbed,
};
+ if (data && data.srfkey) {
+ Object.assign(result, { dataInfo: data.srfmajortext || '' });
+ }
+ return result;
}
}
--
Gitee
From c04af14785b660418e214c788756a8115cf2f12e Mon Sep 17 00:00:00 2001
From: Cano1997 <1978141412@qq.com>
Date: Mon, 11 Aug 2025 10:12:31 +0800
Subject: [PATCH 5/6] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Ddrtab=E9=BB=98?=
=?UTF-8?q?=E8=AE=A4=E9=9A=90=E8=97=8F=E7=BC=96=E8=BE=91=E9=A1=B9=E6=97=A0?=
=?UTF-8?q?=E6=95=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/control/drtab/drtab.controller.ts | 4 ----
1 file changed, 4 deletions(-)
diff --git a/src/control/drtab/drtab.controller.ts b/src/control/drtab/drtab.controller.ts
index 772a2d68..1fa218f9 100644
--- a/src/control/drtab/drtab.controller.ts
+++ b/src/control/drtab/drtab.controller.ts
@@ -471,10 +471,6 @@ export class DRTabController
* @memberof DRTabController
*/
setVisible(ctrlName: 'form' | 'navPos'): void {
- if (this.state.hideEditItem) {
- // 不显示编辑项的时候不需要控制显示隐藏
- return;
- }
const viewForm = this.view.layoutPanel?.panelItems.view_form;
if (ctrlName === 'form') {
if (viewForm) {
--
Gitee
From 3d341a7ef81aa00a121cbcca89f2e50834f5f5b8 Mon Sep 17 00:00:00 2001
From: Cano1997 <1978141412@qq.com>
Date: Mon, 11 Aug 2025 11:47:30 +0800
Subject: [PATCH 6/6] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4drtab=E9=9A=90?=
=?UTF-8?q?=E8=97=8F=E7=BC=96=E8=BE=91=E9=A1=B9=E9=BB=98=E8=AE=A4=E9=9A=90?=
=?UTF-8?q?=E8=97=8F=E8=A1=A8=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/control/drtab/drtab.controller.ts | 30 +++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/src/control/drtab/drtab.controller.ts b/src/control/drtab/drtab.controller.ts
index 1fa218f9..741ab99d 100644
--- a/src/control/drtab/drtab.controller.ts
+++ b/src/control/drtab/drtab.controller.ts
@@ -323,6 +323,7 @@ export class DRTabController
}
await this.calcDrTabPagesState();
this.handleFormChange();
+ this.doDefaultSelect();
});
this.form.evt.on('onLoadDraftSuccess', () => {
this.handleFormChange();
@@ -335,6 +336,31 @@ export class DRTabController
if (!this.form) {
await this.calcDrTabPagesState();
}
+
+ // 表单已经加载完成执行默认选中,否则加载完成事件里执行
+ if (this.form && this.form.state.isLoaded) {
+ this.doDefaultSelect();
+ }
+ }
+
+ /**
+ * @description 处理第一次的默认选中
+ * @memberof DRTabController
+ */
+ doDefaultSelect(): void {
+ const viewForm = this.view.layoutPanel?.panelItems.view_form;
+ if (viewForm) {
+ viewForm.state.visible = false;
+ viewForm.state.keepAlive = false;
+ }
+
+ // 显示编辑项且激活表单时显示表单
+ if (
+ !this.state.hideEditItem &&
+ this.state.activeName === this.model.uniqueTag
+ ) {
+ this.setVisible('form');
+ }
}
/**
@@ -471,6 +497,10 @@ export class DRTabController
* @memberof DRTabController
*/
setVisible(ctrlName: 'form' | 'navPos'): void {
+ if (this.state.hideEditItem) {
+ // 不显示编辑项的时候不需要控制显示隐藏
+ return;
+ }
const viewForm = this.view.layoutPanel?.panelItems.view_form;
if (ctrlName === 'form') {
if (viewForm) {
--
Gitee