diff --git a/src/common/control-navigation/provider/index.ts b/src/common/control-navigation/provider/index.ts
index 71209757f566bd1d70c4a705dbe2075de44bc921..b4e53033491f62b38d5fe573c0fc466395dae617 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/drtab/drtab.controller.ts b/src/control/drtab/drtab.controller.ts
index 772a2d680ed111244e6d7db59f76bb34e5f6f34f..741ab99d0fefc3e095434165b0633ab030d2988f 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');
+ }
}
/**
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 f71343ee52273ab12a8fc26d44de223dca198133..e1faf95a5e805d8e2ae7d185365fc0d8c8b6bb2b 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({
diff --git a/src/control/tree-grid-ex/tree-grid-ex.scss b/src/control/tree-grid-ex/tree-grid-ex.scss
index 0865b019aa18ace519506ffb8644086834924255..7d16d0a10a480fa01539c0b28013bdc530f8b358 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;
diff --git a/src/control/tree-grid-ex/tree-grid-ex.tsx b/src/control/tree-grid-ex/tree-grid-ex.tsx
index 6cbef9b01e6c16f5befe742f11551cdd3f8f8d48..7c8e1ad533ac118d5ae42cb89cd9e961bfe6d07b 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();
+ },
+ }}
+
+ )}
+
+
);
},
});
diff --git a/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts b/src/panel-component/nav-breadcrumb/nav-breadcrumb.controller.ts
index ae9b261042d82d0ffa72921abb4d89f4fa1b8ddc..371a94f9190b0d335d20b45e21100dd51e241af5 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 d83faf8c6e318fc3fbdc96dbeb07708aa2b2b8c5..5c4a6cc3ba72690b34dfac056c4fb4b0ed9d30fd 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 e148d76323e005994c687a700332eb20ddf039d8..a76a851d9673dad792bd6299557d1eb3fa2efcd2 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 52bdd1cddf3f331308f8c504881e8d43fb7d5065..23da75fa0be8758edf26cc49677bc1f735310cae 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;
}
}