From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/layout/components/ToolHeader.vue | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 103 insertions(+), 0 deletions(-)
diff --git a/src/layout/components/ToolHeader.vue b/src/layout/components/ToolHeader.vue
new file mode 100644
index 0000000..be0d5b7
--- /dev/null
+++ b/src/layout/components/ToolHeader.vue
@@ -0,0 +1,103 @@
+<script lang="tsx">
+import { defineComponent, computed } from 'vue'
+import { Message } from '@/layout/components//Message'
+import { Collapse } from '@/layout/components/Collapse'
+import { UserInfo } from '@/layout/components/UserInfo'
+import { Screenfull } from '@/layout/components/Screenfull'
+import { Breadcrumb } from '@/layout/components/Breadcrumb'
+import { SizeDropdown } from '@/layout/components/SizeDropdown'
+import { LocaleDropdown } from '@/layout/components/LocaleDropdown'
+import RouterSearch from '@/components/RouterSearch/index.vue'
+import TenantVisit from '@/layout/components/TenantVisit/index.vue'
+import { useAppStore } from '@/store/modules/app'
+import { useDesign } from '@/hooks/web/useDesign'
+import { checkPermi } from '@/utils/permission'
+
+const { getPrefixCls, variables } = useDesign()
+
+const prefixCls = getPrefixCls('tool-header')
+
+const appStore = useAppStore()
+
+// 闈㈠寘灞�
+const breadcrumb = computed(() => appStore.getBreadcrumb)
+
+// 鎶樺彔鍥炬爣
+const hamburger = computed(() => appStore.getHamburger)
+
+// 鍏ㄥ睆鍥炬爣
+const screenfull = computed(() => appStore.getScreenfull)
+
+// 鎼滅储鍥剧墖
+const search = computed(() => appStore.search)
+
+// 灏哄鍥炬爣
+const size = computed(() => appStore.getSize)
+
+// 甯冨眬
+const layout = computed(() => appStore.getLayout)
+
+// 澶氳瑷�鍥炬爣
+const locale = computed(() => appStore.getLocale)
+
+// 娑堟伅鍥炬爣
+const message = computed(() => appStore.getMessage)
+
+// 绉熸埛鍒囨崲鏉冮檺
+const hasTenantVisitPermission = computed(
+ () => import.meta.env.VITE_APP_TENANT_ENABLE === 'true' && checkPermi(['system:tenant:visit'])
+)
+
+export default defineComponent({
+ name: 'ToolHeader',
+ setup() {
+ return () => (
+ <div
+ id={`${variables.namespace}-tool-header`}
+ class={[
+ prefixCls,
+ 'h-[var(--top-tool-height)] relative px-[var(--top-tool-p-x)] flex items-center justify-between',
+ 'dark:bg-[var(--el-bg-color)]'
+ ]}
+ >
+ {layout.value !== 'top' ? (
+ <div class="h-full flex items-center">
+ {hamburger.value && layout.value !== 'cutMenu' ? (
+ <Collapse class="custom-hover" color="var(--top-header-text-color)"></Collapse>
+ ) : undefined}
+ {breadcrumb.value ? <Breadcrumb class="lt-md:hidden"></Breadcrumb> : undefined}
+ </div>
+ ) : undefined}
+ <div class="h-full flex items-center">
+ {hasTenantVisitPermission.value ? <TenantVisit /> : undefined}
+ {screenfull.value ? (
+ <Screenfull class="custom-hover" color="var(--top-header-text-color)"></Screenfull>
+ ) : undefined}
+ {search.value ? <RouterSearch isModal={false} color="var(--top-header-text-color)"/> : undefined}
+ {size.value ? (
+ <SizeDropdown class="custom-hover" color="var(--top-header-text-color)"></SizeDropdown>
+ ) : undefined}
+ {locale.value ? (
+ <LocaleDropdown
+ class="custom-hover"
+ color="var(--top-header-text-color)"
+ ></LocaleDropdown>
+ ) : undefined}
+ {message.value ? (
+ <Message class="custom-hover" color="var(--top-header-text-color)"></Message>
+ ) : undefined}
+ <UserInfo></UserInfo>
+ </div>
+ </div>
+ )
+ }
+})
+</script>
+
+<style lang="scss" scoped>
+$prefix-cls: #{$namespace}-tool-header;
+
+.#{$prefix-cls} {
+ transition: left var(--transition-time-02);
+}
+</style>
--
Gitblit v1.8.0