|
@@ -6,10 +6,7 @@
|
|
|
}"
|
|
}"
|
|
|
>
|
|
>
|
|
|
<!--顶部菜单-->
|
|
<!--顶部菜单-->
|
|
|
- <div
|
|
|
|
|
- v-if="navMode === 'horizontal' || (navMode === 'horizontal-mix' && mixMenu)"
|
|
|
|
|
- class="layout-header-left"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <div v-if="navMode === 'horizontal' || (navMode === 'horizontal-mix' && mixMenu)" class="layout-header-left">
|
|
|
<div v-if="navMode === 'horizontal'" class="logo">
|
|
<div v-if="navMode === 'horizontal'" class="logo">
|
|
|
<img alt="" src="~@/assets/images/logo.png" />
|
|
<img alt="" src="~@/assets/images/logo.png" />
|
|
|
<h2 v-show="!collapsed" class="title">NaiveAdmin</h2>
|
|
<h2 v-show="!collapsed" class="title">NaiveAdmin</h2>
|
|
@@ -46,26 +43,15 @@
|
|
|
<el-breadcrumb-item v-if="routeItem.meta.breadcrumbView != false">
|
|
<el-breadcrumb-item v-if="routeItem.meta.breadcrumbView != false">
|
|
|
<el-dropdown v-if="routeItem.children.length" :options="routeItem.children">
|
|
<el-dropdown v-if="routeItem.children.length" :options="routeItem.children">
|
|
|
<span class="flex items-center link-text">
|
|
<span class="flex items-center link-text">
|
|
|
- <el-icon
|
|
|
|
|
- class="mr-2 el-input__icon"
|
|
|
|
|
- :size="18"
|
|
|
|
|
- v-if="crumbsSetting.showIcon && routeItem.meta.icon"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-icon class="mr-2 el-input__icon" :size="18" v-if="crumbsSetting.showIcon && routeItem.meta.icon">
|
|
|
<component :is="routeItem.meta.icon" />
|
|
<component :is="routeItem.meta.icon" />
|
|
|
</el-icon>
|
|
</el-icon>
|
|
|
- <Render
|
|
|
|
|
- :ref="`renderDom_${routeItem.name}`"
|
|
|
|
|
- :value="getRender(routeItem.meta.title)"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <Render :ref="`renderDom_${routeItem.name}`" :value="getRender(routeItem.meta.title)" />
|
|
|
</span>
|
|
</span>
|
|
|
<template #dropdown>
|
|
<template #dropdown>
|
|
|
<el-dropdown-menu>
|
|
<el-dropdown-menu>
|
|
|
<el-dropdown-item v-for="item in routeItem.children" :key="item.name" @click="item.props.onClick">
|
|
<el-dropdown-item v-for="item in routeItem.children" :key="item.name" @click="item.props.onClick">
|
|
|
- <el-icon
|
|
|
|
|
- class="el-input__icon"
|
|
|
|
|
- :size="18"
|
|
|
|
|
- v-if="crumbsSetting.showIcon && item.meta.icon"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-icon class="el-input__icon" :size="18" v-if="crumbsSetting.showIcon && item.meta.icon">
|
|
|
<component :is="item.meta.icon" />
|
|
<component :is="item.meta.icon" />
|
|
|
</el-icon>
|
|
</el-icon>
|
|
|
<Render :ref="`renderDom_${item.name}`" :value="getRender(item.meta.title)" />
|
|
<Render :ref="`renderDom_${item.name}`" :value="getRender(item.meta.title)" />
|
|
@@ -74,17 +60,10 @@
|
|
|
</template>
|
|
</template>
|
|
|
</el-dropdown>
|
|
</el-dropdown>
|
|
|
<span v-else class="link-text" @click="routeItem.props.onClick">
|
|
<span v-else class="link-text" @click="routeItem.props.onClick">
|
|
|
- <el-icon
|
|
|
|
|
- class="el-input__icon"
|
|
|
|
|
- :size="18"
|
|
|
|
|
- v-if="crumbsSetting.showIcon && routeItem.meta.icon"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-icon class="el-input__icon" :size="18" v-if="crumbsSetting.showIcon && routeItem.meta.icon">
|
|
|
<component :is="routeItem.meta.icon" />
|
|
<component :is="routeItem.meta.icon" />
|
|
|
</el-icon>
|
|
</el-icon>
|
|
|
- <Render
|
|
|
|
|
- :ref="`renderDom_${routeItem.name}`"
|
|
|
|
|
- :value="getRender(routeItem.meta.title)"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <Render :ref="`renderDom_${routeItem.name}`" :value="getRender(routeItem.meta.title)" />
|
|
|
</span>
|
|
</span>
|
|
|
</el-breadcrumb-item>
|
|
</el-breadcrumb-item>
|
|
|
</template>
|
|
</template>
|
|
@@ -112,7 +91,6 @@
|
|
|
</el-icon>
|
|
</el-icon>
|
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
|
</div> -->
|
|
</div> -->
|
|
|
- <SwitchTenant />
|
|
|
|
|
<!-- 个人中心 -->
|
|
<!-- 个人中心 -->
|
|
|
<div class="layout-header-trigger layout-header-trigger-min">
|
|
<div class="layout-header-trigger layout-header-trigger-min">
|
|
|
<el-dropdown trigger="hover" @command="avatarSelect">
|
|
<el-dropdown trigger="hover" @command="avatarSelect">
|
|
@@ -132,12 +110,10 @@
|
|
|
>个人设置</el-dropdown-item
|
|
>个人设置</el-dropdown-item
|
|
|
> -->
|
|
> -->
|
|
|
<el-dropdown-item command="3"
|
|
<el-dropdown-item command="3"
|
|
|
- ><el-icon class="el-input__icon" :size="18"><LockClosedOutline /></el-icon
|
|
|
|
|
- >修改密码</el-dropdown-item
|
|
|
|
|
|
|
+ ><el-icon class="el-input__icon" :size="18"><LockClosedOutline /></el-icon>修改密码</el-dropdown-item
|
|
|
>
|
|
>
|
|
|
<el-dropdown-item command="2"
|
|
<el-dropdown-item command="2"
|
|
|
- ><el-icon class="el-input__icon" :size="18"><LogoutOutlined /></el-icon
|
|
|
|
|
- >退出登录</el-dropdown-item
|
|
|
|
|
|
|
+ ><el-icon class="el-input__icon" :size="18"><LogoutOutlined /></el-icon>退出登录</el-dropdown-item
|
|
|
>
|
|
>
|
|
|
</el-dropdown-menu>
|
|
</el-dropdown-menu>
|
|
|
</template>
|
|
</template>
|
|
@@ -149,9 +125,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 安全管控平台 -->
|
|
<!-- 安全管控平台 -->
|
|
|
<div class="layout-header-trigger layout-header-trigger-min">
|
|
<div class="layout-header-trigger layout-header-trigger-min">
|
|
|
- <el-button style="border: none" type="primary" @click="handleGoPlatform">
|
|
|
|
|
- 返回平台
|
|
|
|
|
- </el-button>
|
|
|
|
|
|
|
+ <el-button style="border: none" type="primary" @click="handleGoPlatform"> 返回平台 </el-button>
|
|
|
</div>
|
|
</div>
|
|
|
<!--切换全屏-->
|
|
<!--切换全屏-->
|
|
|
<!-- <div class="layout-header-trigger layout-header-trigger-min">
|
|
<!-- <div class="layout-header-trigger layout-header-trigger-min">
|
|
@@ -182,8 +156,6 @@
|
|
|
</div> -->
|
|
</div> -->
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <!--项目配置-->
|
|
|
|
|
- <ProjectSetting ref="drawerSetting" />
|
|
|
|
|
|
|
|
|
|
<!-- 搜索 -->
|
|
<!-- 搜索 -->
|
|
|
<AppSearch ref="appSearchRef" />
|
|
<AppSearch ref="appSearchRef" />
|
|
@@ -195,30 +167,16 @@
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
|
import { computed, ref, unref, watch, inject } from 'vue';
|
|
import { computed, ref, unref, watch, inject } from 'vue';
|
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
|
- import { TABS_ROUTES } from '@/store/mutation-types';
|
|
|
|
|
import { useUserStore } from '@/store/modules/user';
|
|
import { useUserStore } from '@/store/modules/user';
|
|
|
// import { useLockscreenStore } from '@/store/modules/lockscreen';
|
|
// import { useLockscreenStore } from '@/store/modules/lockscreen';
|
|
|
import { useProjectSetting } from '@/hooks/setting/useProjectSetting';
|
|
import { useProjectSetting } from '@/hooks/setting/useProjectSetting';
|
|
|
import { AppSearch } from '@/components/Application/index';
|
|
import { AppSearch } from '@/components/Application/index';
|
|
|
import ProjectSetting from './ProjectSetting.vue';
|
|
import ProjectSetting from './ProjectSetting.vue';
|
|
|
import QRcodePopover from './QRcodePopover.vue';
|
|
import QRcodePopover from './QRcodePopover.vue';
|
|
|
- import NotifierProPlus from './NotifierProPlus.vue';
|
|
|
|
|
import Sider from '../Sider/Sider.vue';
|
|
import Sider from '../Sider/Sider.vue';
|
|
|
import AmendPwd from './AmendPwd.vue';
|
|
import AmendPwd from './AmendPwd.vue';
|
|
|
import { useGo, useRedo } from '@/hooks/web/usePage';
|
|
import { useGo, useRedo } from '@/hooks/web/usePage';
|
|
|
- import {
|
|
|
|
|
- FullscreenExitOutlined,
|
|
|
|
|
- FullscreenOutlined,
|
|
|
|
|
- GithubOutlined,
|
|
|
|
|
- LockOutlined,
|
|
|
|
|
- LogoutOutlined,
|
|
|
|
|
- MenuFoldOutlined,
|
|
|
|
|
- MenuUnfoldOutlined,
|
|
|
|
|
- ReloadOutlined,
|
|
|
|
|
- SearchOutlined,
|
|
|
|
|
- SettingOutlined,
|
|
|
|
|
- UserSwitchOutlined,
|
|
|
|
|
- } from '@vicons/antd';
|
|
|
|
|
|
|
+ import { LogoutOutlined, MenuFoldOutlined, MenuUnfoldOutlined } from '@vicons/antd';
|
|
|
import { LockClosedOutline } from '@vicons/ionicons5';
|
|
import { LockClosedOutline } from '@vicons/ionicons5';
|
|
|
import { PageEnum } from '@/enums/pageEnum';
|
|
import { PageEnum } from '@/enums/pageEnum';
|
|
|
import schoolboy from '@/assets/images/schoolboy.png';
|
|
import schoolboy from '@/assets/images/schoolboy.png';
|
|
@@ -227,9 +185,8 @@
|
|
|
import { ElMessageBox, ElMessage } from 'element-plus';
|
|
import { ElMessageBox, ElMessage } from 'element-plus';
|
|
|
import { useDesignSetting } from '@/hooks/setting/useDesignSetting';
|
|
import { useDesignSetting } from '@/hooks/setting/useDesignSetting';
|
|
|
import { Render, getRender } from '@/components/Render';
|
|
import { Render, getRender } from '@/components/Render';
|
|
|
- import { getLogoutUrl, getRedirectUrl } from '@/utils/getRedirectUrl';
|
|
|
|
|
|
|
+ import { getLogoutUrl } from '@/utils/getRedirectUrl';
|
|
|
import { useGlobSetting } from '@/hooks/setting';
|
|
import { useGlobSetting } from '@/hooks/setting';
|
|
|
- import SwitchTenant from './SwitchTenant.vue';
|
|
|
|
|
|
|
|
|
|
defineEmits(['update:collapsed']);
|
|
defineEmits(['update:collapsed']);
|
|
|
|
|
|
|
@@ -238,8 +195,7 @@
|
|
|
const appSearchRef = ref();
|
|
const appSearchRef = ref();
|
|
|
const isRefresh = ref(false);
|
|
const isRefresh = ref(false);
|
|
|
const { getDarkTheme } = useDesignSetting();
|
|
const { getDarkTheme } = useDesignSetting();
|
|
|
- const { getNavMode, getNavTheme, getHeaderSetting, getMenuSetting, getCrumbsSetting } =
|
|
|
|
|
- useProjectSetting();
|
|
|
|
|
|
|
+ const { getNavMode, getNavTheme, getHeaderSetting, getMenuSetting, getCrumbsSetting } = useProjectSetting();
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
|
inverted: {
|
|
inverted: {
|