135 lines
3.0 KiB
Vue
Raw Normal View History

2025-05-30 13:16:11 +08:00
<template>
<div class="sidebar-logo-container" :class="{ collapse: collapse }">
<transition name="sidebarLogoFade">
<router-link
v-if="collapse"
key="collapse"
class="sidebar-logo-link"
to="/"
>
<img
v-if="logo"
:src="logoY"
class="sidebar-logo"
/>
<h1 v-else class="sidebar-title">{{ title }}</h1>
</router-link>
<router-link v-else key="expand" class="sidebar-logo-link" to="/">
<img
v-if="logo"
:src="logoY"
class="sidebar-logo"
/>
<h1 class="sidebar-title">{{ title }}</h1>
</router-link>
</transition>
</div>
</template>
<script setup>
import { computed, reactive, onMounted } from "vue";
import logo from "@/assets/logo/zhengwu.png";
import logoY from "@/assets/logo/yunying.png";
import useSettingsStore from "@/store/modules/settings";
import variables from "@/assets/styles/variables.module.scss";
defineProps({
collapse: {
type: Boolean,
required: true,
},
});
const title = import.meta.env.VITE_APP_TITLE;
const settingsStore = useSettingsStore();
const sideTheme = computed(() => settingsStore.sideTheme);
// 获取Logo背景色
const getLogoBackground = computed(() => {
if (settingsStore.isDark) {
return "var(--sidebar-bg)";
}
return sideTheme.value === "theme-dark"
? variables.menuBg
: variables.menuLightBg;
});
// 获取Logo文字颜色
const getLogoTextColor = computed(() => {
if (settingsStore.isDark) {
return "var(--sidebar-text)";
}
return sideTheme.value === "theme-dark" ? "#fff" : variables.menuLightText;
});
// 获取用户这里用于临时根据账户判断角色显示不同logo图片【没其他用途】
import { getUserProfile } from "@/api/system/user";
const state = reactive({
user: {},
roleGroup: {},
postGroup: {},
});
function getUser() {
getUserProfile().then((response) => {
state.user = response.data;
state.roleGroup = response.roleGroup;
state.postGroup = response.postGroup;
console.log(state.user); // 获取用户信息
});
}
getUser();
</script>
<style lang="scss" scoped>
@import "@/assets/styles/variables.module.scss";
.sidebarLogoFade-enter-active {
transition: opacity 1.5s;
}
.sidebarLogoFade-enter,
.sidebarLogoFade-leave-to {
opacity: 0;
}
.sidebar-logo-container {
position: relative;
width: 100%;
height: 50px;
line-height: 50px;
background: v-bind(getLogoBackground);
text-align: center;
overflow: hidden;
& .sidebar-logo-link {
height: 100%;
width: 100%;
& .sidebar-logo {
width: 32px;
height: 32px;
vertical-align: middle;
margin-right: 12px;
}
& .sidebar-title {
display: inline-block;
margin: 0;
color: v-bind(getLogoTextColor);
font-weight: 600;
line-height: 50px;
font-size: 14px;
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
vertical-align: middle;
}
}
&.collapse {
.sidebar-logo {
margin-right: 0px;
}
}
}
</style>