<template>
    <div class="layout-left-body">
        <div v-if="!fesFesx.FesHideLeftLogo" :class="{ 'hasLogoEvent': fesFesx.FesLogoEvent }" @click="LogoClick" class="layout-left-logo">
            <img src="~assets/images/logo.png">
            <p>{{fesName}}</p>
        </div>
        <div class="layout-left-menu">
            <fes-route-menu :menu="fesMenu" :type="menuTheme" :mode="menuMode" :auto-close="true" />
        </div>

        <fes-left ref="commonleft" />

        <div v-if="!showCommonLeft" class="layout-left-user">
            <div class="layout-left-user-name">
                <p>{{fesFesx.FesUserName}}</p>
                <p>{{fesFesx.FesRoleName}}</p>
            </div>
            <div class="layout-left-user-logout">
                <Icon @click="logout" type="md-log-out" size="28" />
            </div>
        </div>
    </div>
</template>
<script>
import fesConfig from '../../config';
import _fes from '../../fesx/_fesx';

export default {
    data() {
        // 主题颜色和菜单组件颜色的映射
        const obj = {
            light: 'light',
            blue: 'dark',
            dark: 'dark'
        };
        return {
            fesFesx: _fes,
            menuData: fesConfig.menu || [],
            menuMode: this.$parent.mode,
            menuTheme: obj[this.$parent.theme],
            showCommonLeft: false
        };
    },
    computed: {
        fesName() {
            const fesName = _fes.get('FesName');
            if (fesName.slice(0, 6) === '$i18n.') {
                return this.$t(fesName.slice(6));
            }
            return fesName;
        },
        fesMenu() {
            const menu = this.menuData;
            // 给菜单title搞国际化
            menu.forEach((element) => {
                if (!element.__title) {
                    element.__title = element.title;
                }
                if (element.__title.slice(0, 6) === '$i18n.') {
                    element.title = this.$t(element.__title.slice(6));
                }
                // 子菜单
                if (element.subMenu) {
                    element.subMenu.forEach((son) => {
                        if (!son.__title) {
                            son.__title = son.title;
                        }
                        if (son.__title.slice(0, 6) === '$i18n.') {
                            son.title = this.$t(son.__title.slice(6));
                        }
                    });
                }
            });
            return menu;
        }
    },
    mounted() {
        this.showCommonLeft = this.$refs.commonleft
            && this.$refs.commonleft.$el
            && this.$refs.commonleft.$el.innerHTML
            && this.$refs.commonleft.$el.innerHTML.trim() !== '';

        this.FesApp.on('fes_logout', () => {
            // FesName不能清除
            const fesName = _fes.get('FesName');
            _fes.clear();
            _fes.set('FesName', fesName);
        });
    },
    methods: {
        logout() {
            this.FesApp.set('FesRoleId', null);
            const FesLogoutFn = this.FesApp.get('FesLogout');
            if (this.FesUtil.isFunction(FesLogoutFn)) {
                FesLogoutFn.call(this.FesApp);
            }
            this.FesApp.trigger('fes_logout', this.FesApp);
        },
        LogoClick() {
            const logoClick = this.fesFesx.get('FesLogoEvent');
            if (this.FesUtil.isFunction(logoClick)) {
                logoClick.call(this);
            }
            this.FesApp.trigger('fes_logo_click', this.FesApp);
        }
    }
};
</script>