| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <script setup lang="ts">
- import { ref, watch, computed, onMounted, unref } from 'vue'
- import { useAppStore } from '@/store/modules/app'
- import { useDesign } from '@/hooks/web/useDesign'
- 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 justify-center relative',
- 'dark:bg-[var(--el-bg-color)]'
- ]"
- to="/"
- >
- <img
- src="@/assets/imgs/logo.png"
- class="w-[calc(var(--logo-height)-10px)] h-[calc(var(--logo-height)-10px)]"
- />
- <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>
|