houzhongjian
2024-11-06 1ae890a97b92470ad7c163615873091622c1c8ae
提交 | 用户 | 时间
820397 1 <script lang="ts" setup>
H 2 import { computed, onMounted, ref, unref, watch } from 'vue'
3 import { useAppStore } from '@/store/modules/app'
4 import { useDesign } from '@/hooks/web/useDesign'
39248b 5 import * as authUtil from "@/utils/auth";
820397 6
H 7 defineOptions({ name: 'Logo' })
8
9 const { getPrefixCls } = useDesign()
10
11 const prefixCls = getPrefixCls('logo')
12
13 const appStore = useAppStore()
14
15 const show = ref(true)
16
39248b 17 const homePath = ref('/index')
H 18
820397 19 const title = computed(() => appStore.getTitle)
H 20
21 const layout = computed(() => appStore.getLayout)
22
23 const collapse = computed(() => appStore.getCollapse)
39248b 24
aef77f 25 homePath.value = '/index'
820397 26
H 27 onMounted(() => {
28   if (unref(collapse)) show.value = false
29 })
30
31 watch(
32   () => collapse.value,
33   (collapse: boolean) => {
34     if (unref(layout) === 'topLeft' || unref(layout) === 'cutMenu') {
35       show.value = true
36       return
37     }
38     if (!collapse) {
39       setTimeout(() => {
40         show.value = !collapse
41       }, 400)
42     } else {
43       show.value = !collapse
44     }
45   }
46 )
47
48 watch(
49   () => layout.value,
50   (layout) => {
51     if (layout === 'top' || layout === 'cutMenu') {
52       show.value = true
53     } else {
54       if (unref(collapse)) {
55         show.value = false
56       } else {
57         show.value = true
58       }
59     }
60   }
61 )
62 </script>
63
64 <template>
65   <div>
66     <router-link
67       :class="[
68         prefixCls,
69         layout !== 'classic' ? `${prefixCls}__Top` : '',
70         'flex !h-[var(--logo-height)] items-center cursor-pointer pl-8px relative decoration-none overflow-hidden'
71       ]"
39248b 72       :to="homePath"
820397 73     >
H 74       <img
75         class="h-[calc(var(--logo-height)-10px)] w-[calc(var(--logo-height)-10px)]"
76         src="@/assets/imgs/logo.png"
77       />
78       <div
79         v-if="show"
80         :class="[
81           'ml-10px text-16px font-700',
82           {
83             'text-[var(--logo-title-text-color)]': layout === 'classic',
84             'text-[var(--top-header-text-color)]':
85               layout === 'topLeft' || layout === 'top' || layout === 'cutMenu'
86           }
87         ]"
88       >
89         {{ title }}
90       </div>
91     </router-link>
92   </div>
93 </template>