12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <template>
- <div class="layout-logo" v-if="setShowLogo" @click="onThemeConfigChange">
- <img :src="logoMini" class="layout-logo-medium-img" />
- <span>{{ sysinfo.systemName }}</span>
- </div>
- <div class="layout-logo-size" v-else @click="onThemeConfigChange">
- <img :src="logoMini" class="layout-logo-size-img" />
- </div>
- </template>
- <script lang="ts">
- import { computed, defineComponent } from 'vue';
- import { useStore } from '/@/store/index';
- import logoMini from '/@/assets/logo-mini.svg';
- export default defineComponent({
- name: 'layoutLogo',
- data() {
- return {
- sysinfo: {
- buildVersion: '',
- systemName: '',
- buildTime: '',
- systemCopyright: '',
- },
- };
- },
- created() {
- this.sysinfo = JSON.parse(localStorage.sysinfo || '{}');
- },
- setup() {
- const store = useStore();
- // 获取布局配置信息
- const getThemeConfig = computed(() => {
- return store.state.themeConfig.themeConfig;
- });
- // 设置 logo 的显示。classic 经典布局默认显示 logo
- const setShowLogo = computed(() => {
- let { isCollapse, layout } = store.state.themeConfig.themeConfig;
- return !isCollapse || layout === 'classic' || document.body.clientWidth < 1000;
- });
- // logo 点击实现菜单展开/收起
- const onThemeConfigChange = () => {
- if (store.state.themeConfig.themeConfig.layout === 'transverse') return false;
- store.state.themeConfig.themeConfig.isCollapse = !store.state.themeConfig.themeConfig.isCollapse;
- };
- return {
- logoMini,
- setShowLogo,
- getThemeConfig,
- onThemeConfigChange,
- };
- },
- });
- </script>
- <style scoped lang="scss">
- .layout-logo {
- width: 220px;
- height: 50px;
- display: flex;
- align-items: center;
- justify-content: center;
- box-shadow: rgb(0 21 41 / 2%) 0px 1px 4px;
- // color: var(--el-color-primary);
- color: #ffff;
- font-size: 20px;
- cursor: pointer;
- animation: logoAnimation 0.3s ease-in-out;
- &:hover {
- span {
- color: var(--color-primary-light-2);
- }
- }
- &-medium-img {
- width: 35px;
- padding-right: 5px;
- }
- }
- .layout-logo-size {
- width: 100%;
- height: 50px;
- display: flex;
- cursor: pointer;
- animation: logoAnimation 0.3s ease-in-out;
- &-img {
- width: 20px;
- margin: auto;
- }
- &:hover {
- img {
- animation: logoAnimation 0.3s ease-in-out;
- }
- }
- }
- </style>
|