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