|
@@ -1,34 +1,12 @@
|
|
|
<template>
|
|
|
- <div :class="['home', { 'home-page-main': IS_HOME_PAGE }]">
|
|
|
+ <div class="home">
|
|
|
<div class="home-header">
|
|
|
- <div class="head-menu menu-list">
|
|
|
- <ul>
|
|
|
- <li
|
|
|
- v-for="(menu, index) in appStore.appMenus"
|
|
|
- :key="index"
|
|
|
- :class="[
|
|
|
- 'menu-item',
|
|
|
- { 'menu-item-act': curMenu.url === menu.url },
|
|
|
- ]"
|
|
|
- @click="toMenu(menu)"
|
|
|
- >
|
|
|
- <span>{{ menu.name }}</span>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
+ <div> </div>
|
|
|
<div class="head-user menu-list">
|
|
|
<ul>
|
|
|
- <li
|
|
|
- v-if="userStore.curSchoolInfo.name"
|
|
|
- title="切换学校"
|
|
|
- @click="toSelectSchool"
|
|
|
- >
|
|
|
- <icon-home />
|
|
|
- <span>{{ userStore.curSchoolInfo.name }}</span>
|
|
|
- </li>
|
|
|
<li class="menu-item menu-item-account" @click="toResetPwd">
|
|
|
<icon-user />
|
|
|
- <span :title="userStore.realName">{{ userStore.realName }}</span>
|
|
|
+ <span :title="userStore.name">{{ userStore.name }}</span>
|
|
|
</li>
|
|
|
<li class="menu-item" title="退出登录" @click="toLogout">
|
|
|
<icon-export />
|
|
@@ -37,26 +15,21 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <div v-if="!IS_HOME_PAGE" class="home-navs">
|
|
|
+ <div class="home-navs">
|
|
|
<div class="head-logo">
|
|
|
<div class="head-logo-content">
|
|
|
- <img
|
|
|
- v-if="userStore.curSchoolInfo.logo"
|
|
|
- :src="userStore.curSchoolInfo.logo"
|
|
|
- alt="预约报名系统"
|
|
|
- />
|
|
|
- <h1 v-else>预约报名系统</h1>
|
|
|
+ <h1>预约报名系统</h1>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<a-menu
|
|
|
- v-if="curMenu.children && curMenu.children.length"
|
|
|
+ v-if="appStore.appMenus && appStore.appMenus.length"
|
|
|
class="arco-menu-home"
|
|
|
:default-selected-keys="[curRouteName]"
|
|
|
- :default-open-keys="curSubMenuNames"
|
|
|
+ auto-open
|
|
|
@menu-item-click="toMenuItem"
|
|
|
>
|
|
|
- <template v-for="submenu in curMenu.children">
|
|
|
+ <template v-for="submenu in appStore.appMenus">
|
|
|
<a-sub-menu
|
|
|
v-if="submenu.children && submenu.children.length"
|
|
|
:key="submenu.url"
|
|
@@ -67,12 +40,6 @@
|
|
|
|
|
|
<a-menu-item v-for="nav in submenu.children" :key="nav.url">
|
|
|
<span>{{ nav.name }}</span>
|
|
|
- <!-- <span
|
|
|
- v-if="nav.url === 'WaitTask' && waitTaskCount"
|
|
|
- class="nav-item-info"
|
|
|
- >
|
|
|
- {{ waitTaskCount }}
|
|
|
- </span> -->
|
|
|
</a-menu-item>
|
|
|
</a-sub-menu>
|
|
|
<a-menu-item v-else :key="submenu.url">
|
|
@@ -84,14 +51,17 @@
|
|
|
|
|
|
<div class="home-body">
|
|
|
<div class="home-body-content">
|
|
|
- <div v-if="breadcrumbs.length" class="home-breadcrumb">
|
|
|
+ <div v-if="appStore.breadcrumbs.length" class="home-breadcrumb">
|
|
|
<span class="breadcrumb-tips">
|
|
|
<icon-home />
|
|
|
<span>当前所在位置:</span>
|
|
|
</span>
|
|
|
<a-breadcrumb>
|
|
|
- <a-breadcrumb-item v-for="bread in breadcrumbs" :key="bread.url">
|
|
|
- {{ bread.name }}
|
|
|
+ <a-breadcrumb-item
|
|
|
+ v-for="(bread, index) in appStore.breadcrumbs"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ {{ bread }}
|
|
|
</a-breadcrumb-item>
|
|
|
</a-breadcrumb>
|
|
|
</div>
|
|
@@ -115,19 +85,15 @@
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
- import { computed, onMounted, ref, watch } from 'vue';
|
|
|
+ import { onMounted, ref, watch } from 'vue';
|
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
|
import { IconHome, IconUser, IconExport } from '@arco-design/web-vue/es/icon';
|
|
|
import { useAppStore, useUserStore } from '@/store';
|
|
|
- import { SYS_ADMIN_NAME } from '@/constants/enumerate';
|
|
|
- import { HOME_PAGE_ROUTE } from '@/router/constants';
|
|
|
import { modalConfirm } from '@/utils/arco';
|
|
|
|
|
|
import ResetPwd from '@/views/login/login/ResetPwd.vue';
|
|
|
import Footer from '@/components/footer/index.vue';
|
|
|
|
|
|
- import type { AppMenuItem } from '@/store/modules/app/types';
|
|
|
-
|
|
|
defineOptions({
|
|
|
name: 'DefaultLayout',
|
|
|
});
|
|
@@ -137,10 +103,7 @@
|
|
|
const route = useRoute();
|
|
|
const router = useRouter();
|
|
|
|
|
|
- const curMenu = ref({ url: '', children: [] });
|
|
|
const curRouteName = ref('');
|
|
|
- const curSubMenuNames = ref([]);
|
|
|
- const breadcrumbs = ref([]);
|
|
|
const userInfo = ref({
|
|
|
pwdCount: 0,
|
|
|
mobileNumber: 1,
|
|
@@ -148,115 +111,15 @@
|
|
|
});
|
|
|
const ResetPwdRef = ref(null);
|
|
|
|
|
|
- const IS_SUPER_ADMIN = computed(() => {
|
|
|
- return userStore.loginName === SYS_ADMIN_NAME;
|
|
|
- });
|
|
|
- const IS_HOME_PAGE = computed(() => {
|
|
|
- return route.name === HOME_PAGE_ROUTE;
|
|
|
- });
|
|
|
- const hasMoreSchool = computed(() => {
|
|
|
- return userStore.schoolInfo?.length > 1;
|
|
|
- });
|
|
|
-
|
|
|
function initData() {
|
|
|
- if (IS_HOME_PAGE.value) {
|
|
|
- curMenu.value = { url: HOME_PAGE_ROUTE, children: [] };
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- updateBreadcrumbs();
|
|
|
- const curUrl = breadcrumbs.value[0].url;
|
|
|
- const currentMenu = appStore.appMenus.find((menu) => menu.url === curUrl);
|
|
|
-
|
|
|
- menuChange(currentMenu);
|
|
|
-
|
|
|
- // 待办任务数量展示
|
|
|
- if (curMenu.value.url === 'exam') {
|
|
|
- // updateWaitTaskCount();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- function toMenu(menu: AppMenuItem) {
|
|
|
- if (menu.url === HOME_PAGE_ROUTE) {
|
|
|
- if (route.name !== HOME_PAGE_ROUTE) {
|
|
|
- curMenu.value = menu;
|
|
|
- router.push({
|
|
|
- name: HOME_PAGE_ROUTE,
|
|
|
- });
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
- if (curMenu.value.url === menu.url) return;
|
|
|
- menuChange(menu);
|
|
|
- const firstRouteName = getCurMenuFirstRouter();
|
|
|
- router.push({
|
|
|
- name: firstRouteName,
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- function getCurMenuFirstRouter() {
|
|
|
- let firstRouteName = '';
|
|
|
- let menu = curMenu.value;
|
|
|
- while (menu) {
|
|
|
- firstRouteName = menu.url;
|
|
|
- menu = menu.children && menu.children[0];
|
|
|
- }
|
|
|
-
|
|
|
- return firstRouteName;
|
|
|
- }
|
|
|
-
|
|
|
- function updateBreadcrumbs() {
|
|
|
curRouteName.value = route.name;
|
|
|
- const breadcrumbsData = [];
|
|
|
-
|
|
|
- let curBreadcrumb = appStore.privilegeList.find(
|
|
|
- (item) => item.url === curRouteName.value
|
|
|
- );
|
|
|
- if (curBreadcrumb) breadcrumbsData.push({ ...curBreadcrumb });
|
|
|
-
|
|
|
- while (curBreadcrumb && curBreadcrumb.parentId !== '-1') {
|
|
|
- const pid = curBreadcrumb.parentId;
|
|
|
- curBreadcrumb = appStore.privilegeList.find((item) => item.id === pid);
|
|
|
- if (curBreadcrumb) breadcrumbsData.unshift({ ...curBreadcrumb });
|
|
|
- }
|
|
|
- breadcrumbs.value = breadcrumbsData;
|
|
|
- }
|
|
|
-
|
|
|
- function menuChange(menu: AppMenuItem) {
|
|
|
- curMenu.value = menu;
|
|
|
- curSubMenuNames.value = appStore.privilegeList
|
|
|
- .filter((item) => item.parentId === menu.id)
|
|
|
- .map((item) => item.url);
|
|
|
- }
|
|
|
-
|
|
|
- function routerChange() {
|
|
|
- updateBreadcrumbs();
|
|
|
-
|
|
|
- const curUrl = breadcrumbs.value[0].url;
|
|
|
- const currentMenu = appStore.appMenus.find((menu) => menu.url === curUrl);
|
|
|
- menuChange(currentMenu);
|
|
|
-
|
|
|
- if (curMenu.value.url === 'exam') {
|
|
|
- // updateWaitTaskCount();
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
function toMenuItem(val) {
|
|
|
router.push({ name: val });
|
|
|
}
|
|
|
|
|
|
- function toSelectSchool() {
|
|
|
- if (IS_SUPER_ADMIN.value) {
|
|
|
- router.push({ name: 'SelectSchool' });
|
|
|
- return;
|
|
|
- }
|
|
|
- if (hasMoreSchool.value) {
|
|
|
- // this.$refs.SwitchSchoolDialog.open();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
function toResetPwd() {
|
|
|
- if (IS_SUPER_ADMIN.value) return;
|
|
|
ResetPwdRef.value?.open();
|
|
|
}
|
|
|
|
|
@@ -278,9 +141,8 @@
|
|
|
|
|
|
watch(
|
|
|
() => route.name,
|
|
|
- (val) => {
|
|
|
- if (val === HOME_PAGE_ROUTE) return;
|
|
|
- routerChange();
|
|
|
+ () => {
|
|
|
+ initData();
|
|
|
}
|
|
|
);
|
|
|
</script>
|