|
|
|
@ -1,19 +1,41 @@
|
|
|
|
|
<template>
|
|
|
|
|
<el-menu :default-active="activeMenu" mode="horizontal" :ellipsis="false" @select="handleSelect">
|
|
|
|
|
<template v-for="(item, index) in topMenus">
|
|
|
|
|
<el-menu-item v-if="index < visibleNumber" :key="index" :style="{ '--theme': theme }" :index="item.path"
|
|
|
|
|
><svg-icon v-if="item.meta && item.meta.icon && item.meta.icon !== '#'" :icon-class="item.meta ? item.meta.icon : ''" />
|
|
|
|
|
{{ item.meta?.title }}</el-menu-item
|
|
|
|
|
>
|
|
|
|
|
<el-menu-item v-if="index < visibleNumber" :key="index" :style="{ '--theme': theme }" :index="item.path">
|
|
|
|
|
<svg-icon v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
|
|
|
|
:icon-class="item.meta ? item.meta.icon : ''" />
|
|
|
|
|
<span v-if="item.meta?.title !=='我的任务'">
|
|
|
|
|
{{ item.meta?.title }}
|
|
|
|
|
</span>
|
|
|
|
|
<el-badge :show-zero="false" :value="badge" type="primary" v-if="item.meta?.title ==='我的任务'"
|
|
|
|
|
:offset="[0, 10]">
|
|
|
|
|
<span>{{ item.meta?.title }}</span>
|
|
|
|
|
</el-badge>
|
|
|
|
|
</el-menu-item>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<!-- 顶部菜单超出数量折叠 -->
|
|
|
|
|
<el-sub-menu v-if="topMenus.length > visibleNumber" :style="{ '--theme': theme }" index="more">
|
|
|
|
|
<template #title>更多菜单</template>
|
|
|
|
|
<template #title>
|
|
|
|
|
<span v-if="!topMenus.find(e=>e.meta?.title ==='我的任务')">
|
|
|
|
|
更多菜单
|
|
|
|
|
</span>
|
|
|
|
|
<el-badge v-if="topMenus.find(e=>e.meta?.title ==='我的任务')" :show-zero="false" :value="badge" type="primary"
|
|
|
|
|
:offset="[0, 10]">
|
|
|
|
|
<span>更多菜单</span>
|
|
|
|
|
</el-badge>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-for="(item, index) in topMenus">
|
|
|
|
|
<el-menu-item v-if="index >= visibleNumber" :key="index" :index="item.path"
|
|
|
|
|
><svg-icon :icon-class="item.meta ? item.meta.icon : ''" /> {{ item.meta?.title }}</el-menu-item
|
|
|
|
|
>
|
|
|
|
|
<el-menu-item v-if="index >= visibleNumber" :key="index" :index="item.path">
|
|
|
|
|
<svg-icon :icon-class="item.meta ? item.meta.icon : ''" />
|
|
|
|
|
<span v-if="item.meta?.title !=='我的任务'">
|
|
|
|
|
{{ item.meta?.title }}
|
|
|
|
|
</span>
|
|
|
|
|
<el-badge :show-zero="false" :value="badge" type="primary" v-if="item.meta?.title ==='我的任务'"
|
|
|
|
|
:offset="[0, 10]">
|
|
|
|
|
<span>{{ item.meta?.title }}</span>
|
|
|
|
|
</el-badge>
|
|
|
|
|
</el-menu-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-sub-menu>
|
|
|
|
|
</el-menu>
|
|
|
|
@ -26,6 +48,20 @@ import useAppStore from '@/store/modules/app';
|
|
|
|
|
import useSettingsStore from '@/store/modules/settings';
|
|
|
|
|
import usePermissionStore from '@/store/modules/permission';
|
|
|
|
|
import { RouteRecordRaw } from 'vue-router';
|
|
|
|
|
import { countTaskWaitByCurrentUser } from '@/api/workflow/task';
|
|
|
|
|
|
|
|
|
|
const badge = ref(1);
|
|
|
|
|
const getBadge = () => {
|
|
|
|
|
countTaskWaitByCurrentUser().then(e => {
|
|
|
|
|
badge.value = e.data;
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
setInterval(() => {
|
|
|
|
|
getBadge();
|
|
|
|
|
}, 1000 * 10);
|
|
|
|
|
getBadge();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 顶部栏初始数
|
|
|
|
|
const visibleNumber = ref<number>(-1);
|
|
|
|
|