08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / project / hivuiMain / views / layout / components / kyMenus / menus.vue
<template>
    <p-sub-menu ref="subMenu" :level="level" :parent="parent" placement='right'>
        <template slot="title">
            {{ menuitem.name }}
            <!-- 只有顶级菜单才显示图标 -->
            <i v-if="menuitem.type=='dir' && level === 0" class="el-icon-arrow-right" style="position: absolute;right: 8px;top: 50%;transform: translateY(-50%);font-size: 12px;"></i>
        </template>
        <template v-for="item in menuitem.children">
            <p-menu-item :icon="item.iconClass" v-if="item.isShow && !(item.children && item.children.length)"
                @click="handleOpenFunc(item)" :key="item.resId">{{ item.name }}</p-menu-item>
            <nav-sub-menus :menuitem="item" :level="level + 1" v-if="item.isShow && item.children && item.children.length" :key="item.resId"></nav-sub-menus>
        </template>
    </p-sub-menu>


</template>
<script>
import { PMenu, PSubMenu, PMenuItem } from '../menus'
export default {
    name: 'NavSubMenus',
    inject: ['addTab', 'showTab', 'hideTab', 'hideKyMenus'],
    components: {
        PMenu, PSubMenu, PMenuItem
    },
    props: {
        menuitem: {
            type: Object
        },
        level: {
            type: Number
        },
        parent: {
            type: Object
        }
    },
    methods: {
        async handleOpenFunc(item) {
            let me = this;
            if (item.type == "link") {
                window.open(item.resUrl, item.name);
                return;
            } else if (item.type == "sso") {
                item.ssoUrl = await me.$store.dispatch("user/openSSOFuncPage", {
                    serviceUrl: item.resUrl
                });
            }
            me.addTab(item);//inject 提供的方法只能 传一个参数
            me.$refs.subMenu.hide();
            
            setTimeout(() => {
                me.hideKyMenus && me.hideKyMenus();
            }, 200);

        }
    }
}
</script>