| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <template>
- <div class="layout-logo"
- v-if="$store.state.themeConfig.themeConfig.layout !== 'columns' && !$store.state.themeConfig.themeConfig.isCollapse"
- @click="onThemeConfigChange">
- <img v-if="maxLogo" class="layout-logo-medium-img" :src="maxLogo" />
- </div>
- <div class="layout-logo-size" v-else @click="onThemeConfigChange">
- <img v-if="minLogo" class="layout-logo-size-img" :src="minLogo" />
- </div>
- </template>
- <script>
- import {
- getLogo
- } from '@/api/common';
- export default {
- name: 'layoutLogo',
- data() {
- return {
- minLogo: '',
- maxLogo: '',
- };
- },
- computed: {
- // 获取布局配置信息
- getThemeConfig() {
- return this.$store.state.themeConfig.themeConfig;
- },
- // 设置 logo 是否显示
- setShowLogo() {
- let {
- isCollapse,
- layout
- } = this.$store.state.themeConfig.themeConfig;
- return !isCollapse || layout === 'classic' || document.body.clientWidth < 1000;
- },
- },
- mounted() {
- // this.getLogo();
- },
- methods: {
- // logo 点击实现菜单展开/收起
- onThemeConfigChange() {
- if (
- this.$store.state.themeConfig.themeConfig.layout == 'columns' &&
- !this.$store.state.menus.childMenuList.length &&
- this.$store.state.themeConfig.themeConfig.isCollapse
- )
- return;
- if (this.$store.state.themeConfig.themeConfig.layout === 'transverse') return false;
- this.$store.state.themeConfig.themeConfig.isCollapse = !this.$store.state.themeConfig.themeConfig
- .isCollapse;
- },
- getLogo() {
- getLogo().then((res) => {
- this.minLogo = res.data.logo_square;
- this.maxLogo = res.data.logo;
- });
- },
- },
- };
- </script>
- <style scoped lang="scss">
- .layout-logo {
- width: 180px;
- height: 50px;
- display: flex;
- align-items: center;
- justify-content: center;
- // box-shadow: 0px 1px 4px rgba(0, 21, 41, 2%);
- color: var(--prev-color-primary);
- font-size: 16px;
- cursor: pointer;
- animation: logoAnimation 0.3s ease-in-out;
- &:hover {
- span {
- opacity: 0.9;
- }
- }
- &-medium-img {
- width: 100%;
- height: 50px;
- margin-right: 5px;
- position: relative;
- top: 2px;
- }
- }
- .layout-logo-size {
- width: 50px;
- height: 50px;
- display: flex;
- cursor: pointer;
- margin: auto;
- &-img {
- width: 50px;
- height: 50px;
- margin: auto;
- animation: logoAnimation 0.3s ease-in-out;
- }
- }
- </style>
|