diff --git a/src/components/Menu/index.ts b/src/components/Menu/index.ts
index 42f45c9..5a8ff72 100644
--- a/src/components/Menu/index.ts
+++ b/src/components/Menu/index.ts
@@ -1,3 +1,4 @@
import BasicMenu from './src/BasicMenu.vue'
+import KingdeeBaseMenu from './src/KingdeeBasicMenu.vue'
-export { BasicMenu }
+export { BasicMenu, KingdeeBaseMenu }
diff --git a/src/components/Menu/src/KingdeeBasicMenu.vue b/src/components/Menu/src/KingdeeBasicMenu.vue
new file mode 100644
index 0000000..4e6eb29
--- /dev/null
+++ b/src/components/Menu/src/KingdeeBasicMenu.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
diff --git a/src/components/Menu/src/components/KingdeeBasicSubMenuItem.vue b/src/components/Menu/src/components/KingdeeBasicSubMenuItem.vue
new file mode 100644
index 0000000..2946c7f
--- /dev/null
+++ b/src/components/Menu/src/components/KingdeeBasicSubMenuItem.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/default/header/MultipleHeader.vue b/src/layouts/default/header/MultipleHeader.vue
index 477586a..89ccd90 100644
--- a/src/layouts/default/header/MultipleHeader.vue
+++ b/src/layouts/default/header/MultipleHeader.vue
@@ -16,6 +16,10 @@ import { useMultipleTabStore } from '@/store/modules/multipleTab'
defineOptions({ name: 'LayoutMultipleHeader' })
+defineProps<{
+ scoped: boolean
+}>()
+
const HEADER_HEIGHT = 48
const TABS_HEIGHT = 32
@@ -90,7 +94,7 @@ const getClass = computed(() => {
/>
-
+
diff --git a/src/layouts/default/header/kingdee/new/KingdeeNewHeader.vue b/src/layouts/default/header/kingdee/new/KingdeeNewHeader.vue
index 141abc6..a915682 100644
--- a/src/layouts/default/header/kingdee/new/KingdeeNewHeader.vue
+++ b/src/layouts/default/header/kingdee/new/KingdeeNewHeader.vue
@@ -2,8 +2,9 @@
import { computed, unref } from 'vue'
import { Layout } from 'ant-design-vue'
-import { ErrorAction, FullScreen, LayoutBreadcrumb, Notify, UserDropDown } from '../../components'
+import { ErrorAction, FullScreen, Notify, UserDropDown } from '../../components'
import LayoutTrigger from '../../../trigger/index.vue'
+import KingdeeTopMenu from './KingdeeTopMenu.vue'
import { propTypes } from '@/utils/propTypes'
// import { AppLocalePicker, AppLogo, AppSearch, AppSizePicker } from '@/components/Application'
@@ -19,7 +20,7 @@ import { useHeaderSetting } from '@/hooks/setting/useHeaderSetting'
import { useMenuSetting } from '@/hooks/setting/useMenuSetting'
import { useRootSetting } from '@/hooks/setting/useRootSetting'
-// import { MenuModeEnum, MenuSplitTyeEnum } from '@/enums/menuEnum'
+import { MenuModeEnum, MenuSplitTyeEnum } from '@/enums/menuEnum'
import { SettingButtonPositionEnum } from '@/enums/appEnum'
import { useAppInject } from '@/hooks/web/useAppInject'
@@ -41,7 +42,7 @@ const { getShowHeaderTrigger, getSplit, getIsMixMode, getMenuWidth, getIsMixSide
// const { getIsMixMode, getMenuWidth } = useMenuSetting()
const { getUseErrorHandle, getShowSettingButton, getSettingButtonPosition } = useRootSetting()
-const { getHeaderTheme, getShowFullScreen, getShowNotice, getShowContent, getShowBread, getShowHeaderLogo, getShowHeader, getShowSearch }
+const { getHeaderTheme, getShowFullScreen, getShowNotice, getShowContent, getShowHeaderLogo, getShowHeader, getShowSearch }
= useHeaderSetting()
const { getShowLocalePicker } = useLocale()
@@ -80,10 +81,10 @@ const getLogoWidth = computed(() => {
return { width: `${width}px` }
})
-// const getSplitType = computed(() => {
-// return unref(getSplit) ? MenuSplitTyeEnum.TOP : MenuSplitTyeEnum.NONE
-// })
-//
+const getSplitType = computed(() => {
+ return unref(getSplit) ? MenuSplitTyeEnum.TOP : MenuSplitTyeEnum.NONE
+})
+
// const getMenuMode = computed(() => {
// return unref(getSplit) ? MenuModeEnum.HORIZONTAL : null
// })
@@ -107,14 +108,14 @@ const getLogoWidth = computed(() => {
v-if="(getShowContent && getShowHeaderTrigger && !getSplit && !getIsMixSidebar) || getIsMobile"
:theme="getHeaderTheme" :sider="false"
/>
-
+
-
-
-
+
+
+
diff --git a/src/layouts/default/header/kingdee/new/KingdeeTopMenu.vue b/src/layouts/default/header/kingdee/new/KingdeeTopMenu.vue
new file mode 100644
index 0000000..bbb88e1
--- /dev/null
+++ b/src/layouts/default/header/kingdee/new/KingdeeTopMenu.vue
@@ -0,0 +1,248 @@
+
+
+
diff --git a/src/layouts/default/index.vue b/src/layouts/default/index.vue
index 62426bb..ad3bca3 100644
--- a/src/layouts/default/index.vue
+++ b/src/layouts/default/index.vue
@@ -52,7 +52,7 @@ const layoutClass = computed(() => {
-
+
diff --git a/src/layouts/default/menu/index.vue b/src/layouts/default/menu/index.vue
index f060cd9..31e6b98 100644
--- a/src/layouts/default/menu/index.vue
+++ b/src/layouts/default/menu/index.vue
@@ -123,8 +123,9 @@ export default defineComponent({
const getCommonProps = computed(() => {
const current = getFirstPathSegment(currentPath.path)
const menus = findChildrenByFirstPathSegment(unref(menusRef), current)
+ const scoped = props.isScoped
return {
- menus,
+ menus: scoped ? menus : unref(menusRef),
beforeClickFn: beforeMenuClickFn,
items: menus,
theme: unref(getComputedMenuTheme),
diff --git a/src/layouts/default/tabs/index.vue b/src/layouts/default/tabs/index.vue
index b3d0648..52f0499 100644
--- a/src/layouts/default/tabs/index.vue
+++ b/src/layouts/default/tabs/index.vue
@@ -6,7 +6,7 @@ import { useMouse } from '@vueuse/core'
import { computed, ref, unref } from 'vue'
import { Tabs } from 'ant-design-vue'
-import { useRouter } from 'vue-router'
+import { useRoute, useRouter } from 'vue-router'
import TabContent from './components/TabContent.vue'
import FoldButton from './components/FoldButton.vue'
import TabRedo from './components/TabRedo.vue'
@@ -26,6 +26,10 @@ import { listenerRouteChange } from '@/logics/mitt/routeChange'
defineOptions({ name: 'MultipleTabs' })
+const props = defineProps<{
+ scoped: boolean
+}>()
+
const affixTextList = initAffixTabs()
const activeKeyRef = ref('')
@@ -33,13 +37,32 @@ useTabsDrag(affixTextList)
const tabStore = useMultipleTabStore()
const userStore = useUserStore()
const router = useRouter()
+const route = useRoute()
const { prefixCls } = useDesign('multiple-tabs')
const go = useGo()
const { getShowQuick, getShowRedo, getShowFold } = useMultipleTabSetting()
+function getFirstPathSegment(path: string): string {
+ if (!path || typeof path !== 'string')
+ return '/'
+
+ const segments = path.split('/').filter(Boolean) // 移除空字符串
+ return segments.length > 0 ? `/${segments[0]}` : '/'
+}
+
const getTabsState = computed(() => {
- return tabStore.getTabList.filter(item => !item.meta?.hideTab)
+ const currentPath = route.path
+
+ const currentCloud = getFirstPathSegment(currentPath)
+
+ if (props.scoped) {
+ return tabStore.getTabList.filter(item => !item.meta?.hideTab).filter((item) => {
+ const firstPath = getFirstPathSegment(item.path)
+ return firstPath === currentCloud
+ })
+ }
+ else { return tabStore.getTabList.filter(item => !item.meta?.hideTab) }
})
const unClose = computed(() => unref(getTabsState).length === 1)