diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/OverviewContainer.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/OverviewContainer.tsx index 4b67d1360..a611442c6 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/OverviewContainer.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/OverviewContainer.tsx @@ -34,7 +34,6 @@ const OverviewContainer: React.FC = ({ mode, domainManger, dispatch }) => const targetNode = domainList.filter((item: any) => { return `${item.id}` === domainId; })[0]; - if (!targetNode) { const firstRootNode = domainList.filter((item: any) => { return item.parentId === 0; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx index 48e52dae8..b0ccb8267 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx @@ -114,7 +114,7 @@ const DomainListTree: FC = ({ }; const titleRender = (node: any) => { - const { id, name, path, hasEditPermission, parentId } = node as any; + const { id, name, path, hasEditPermission, parentId, hasModel } = node as any; return (
= ({ {createDomainBtnVisible && hasEditPermission && ( - {Array.isArray(path) && path.length < 2 && ( + {Array.isArray(path) && path.length < 2 && !hasModel && ( { diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainManagerTab.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainManagerTab.tsx index 94d7e0c6e..bd0e8206a 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainManagerTab.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainManagerTab.tsx @@ -43,17 +43,27 @@ const DomainManagerTab: React.FC = ({ }) => { const initState = useRef(false); const defaultTabKey = 'metric'; - const { selectDomainId, selectModelId, selectModelName, selectDomainName, domainData } = - domainManger; - + const { + selectDomainId, + selectModelId, + selectModelName, + selectDomainName, + domainData, + domainList, + } = domainManger; useEffect(() => { initState.current = false; }, [selectModelId]); + const domainListParentIdList: number[] = Array.isArray(domainList) + ? Array.from(new Set(domainList.map((item) => item.parentId))) + : []; + const tabItem = [ { label: '模型管理', key: 'overview', + hidden: domainData && domainListParentIdList.includes(domainData.id), children: ( = ({ { label: '数据集管理', key: 'dataSetManange', + hidden: !!domainData?.parentId, children: ( = ({ { label: '画布', key: 'xflow', + hidden: domainData && domainListParentIdList.includes(domainData.id), children: (
@@ -137,12 +149,17 @@ const DomainManagerTab: React.FC = ({ key: 'recommendedQuestions', children: , }, - ].filter((item) => { - if (window.RUNNING_ENV === 'headless') { - return !['chatSetting', 'recommendedQuestions'].includes(item.key); + ]; + + const getActiveKey = () => { + const key = activeKey || defaultTabKey; + const tabItems = !isModel ? tabItem : isModelItem; + const tabItemsKeys = tabItems.map((item) => item.key); + if (!tabItemsKeys.includes(key)) { + return tabItemsKeys[0]; } - return item; - }); + return key; + }; return ( <> @@ -187,7 +204,7 @@ const DomainManagerTab: React.FC = ({ { diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainTreeSelect.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainTreeSelect.tsx index e29c6e104..1f90eb34c 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainTreeSelect.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainTreeSelect.tsx @@ -2,11 +2,9 @@ import { message, TreeSelect } from 'antd'; import type { DataNode } from 'antd/lib/tree'; import { useEffect, useState, useRef } from 'react'; import type { FC } from 'react'; -import type { Dispatch } from 'umi'; import { getDomainList } from '../../SemanticModel/service'; import { constructorClassTreeFromList, addPathInTreeData } from '../utils'; import styles from './style.less'; -import { ISemantic } from '../data'; type Props = { value?: any; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/data.d.ts b/webapp/packages/supersonic-fe/src/pages/SemanticModel/data.d.ts index 6a1391e93..8de06558e 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/data.d.ts +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/data.d.ts @@ -110,11 +110,13 @@ export declare namespace ISemantic { name: string; bizName: string; description: any; + children: IDomainItem[]; hasEditPermission: boolean; status?: number; typeEnum?: any; sensitiveLevel?: number; parentId: number; + hasModel: boolean; fullPath?: string; viewers?: any[]; viewOrgs?: any[]; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/service.ts b/webapp/packages/supersonic-fe/src/pages/SemanticModel/service.ts index 8dfde68e6..4a4637318 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/service.ts +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/service.ts @@ -8,9 +8,6 @@ const getRunningEnv = () => { }; export function getDomainList(): Promise { - if (getRunningEnv() === 'chat') { - return request.get(`${process.env.CHAT_API_BASE_URL}conf/domainList`); - } return request.get(`${process.env.API_BASE_URL}domain/getDomainList`); }