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/Logo/src/Logo.vue | 88 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 88 insertions(+), 0 deletions(-)
diff --git a/src/layout/components/Logo/src/Logo.vue b/src/layout/components/Logo/src/Logo.vue
new file mode 100644
index 0000000..d241130
--- /dev/null
+++ b/src/layout/components/Logo/src/Logo.vue
@@ -0,0 +1,88 @@
+<script lang="ts" setup>
+import { computed, onMounted, ref, unref, watch } from 'vue'
+import { useAppStore } from '@/store/modules/app'
+import { useDesign } from '@/hooks/web/useDesign'
+
+defineOptions({ name: 'Logo' })
+
+const { getPrefixCls } = useDesign()
+
+const prefixCls = getPrefixCls('logo')
+
+const appStore = useAppStore()
+
+const show = ref(true)
+
+const title = computed(() => appStore.getTitle)
+
+const layout = computed(() => appStore.getLayout)
+
+const collapse = computed(() => appStore.getCollapse)
+
+onMounted(() => {
+ if (unref(collapse)) show.value = false
+})
+
+watch(
+ () => collapse.value,
+ (collapse: boolean) => {
+ if (unref(layout) === 'topLeft' || unref(layout) === 'cutMenu') {
+ show.value = true
+ return
+ }
+ if (!collapse) {
+ setTimeout(() => {
+ show.value = !collapse
+ }, 400)
+ } else {
+ show.value = !collapse
+ }
+ }
+)
+
+watch(
+ () => layout.value,
+ (layout) => {
+ if (layout === 'top' || layout === 'cutMenu') {
+ show.value = true
+ } else {
+ if (unref(collapse)) {
+ show.value = false
+ } else {
+ show.value = true
+ }
+ }
+ }
+)
+</script>
+
+<template>
+ <div>
+ <router-link
+ :class="[
+ prefixCls,
+ layout !== 'classic' ? `${prefixCls}__Top` : '',
+ 'flex !h-[var(--logo-height)] items-center cursor-pointer pl-8px relative decoration-none overflow-hidden'
+ ]"
+ to="/"
+ >
+ <img
+ class="h-[calc(var(--logo-height)-10px)] w-[calc(var(--logo-height)-10px)]"
+ src="@/assets/imgs/logo.png"
+ />
+ <div
+ v-if="show"
+ :class="[
+ 'ml-10px text-16px font-700',
+ {
+ 'text-[var(--logo-title-text-color)]': layout === 'classic',
+ 'text-[var(--top-header-text-color)]':
+ layout === 'topLeft' || layout === 'top' || layout === 'cutMenu'
+ }
+ ]"
+ >
+ {{ title }}
+ </div>
+ </router-link>
+ </div>
+</template>
--
Gitblit v1.8.0