|
@@ -9,7 +9,8 @@ import {
|
|
import { useRoute, useRouter } from "vue-router";
|
|
import { useRoute, useRouter } from "vue-router";
|
|
import QM_LOGO from "./qm-logo.png";
|
|
import QM_LOGO from "./qm-logo.png";
|
|
import VueQrcode from "@chenfengyuan/vue-qrcode";
|
|
import VueQrcode from "@chenfengyuan/vue-qrcode";
|
|
-import SiteMessageNotificationVue from "@/features/SiteMessage/SiteMessageNotification.vue";
|
|
|
|
|
|
+import SiteMessageNotification from "@/features/SiteMessage/SiteMessageNotification.vue";
|
|
|
|
+import { MenuSubItem, getMenuDict, parseMapLine } from "./menuConfig";
|
|
|
|
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
@@ -48,28 +49,22 @@ interface MenuOption {
|
|
name: string;
|
|
name: string;
|
|
routeName: string;
|
|
routeName: string;
|
|
}
|
|
}
|
|
-const menuRouterDict: Record<string, string> = {
|
|
|
|
- STU_ONLINE_EXAM: "/online-exam",
|
|
|
|
- STU_ONLINE_HOMEWORK: "/online-homework",
|
|
|
|
- STU_ONLINE_PRACTICE: "/online-practice",
|
|
|
|
- STU_OFFLINE_EXAM: "/offline-exam",
|
|
|
|
- STU_NOTICE: "SiteMessage",
|
|
|
|
- STU_MODIFY_PWD: "ChangePassword",
|
|
|
|
-};
|
|
|
|
|
|
+
|
|
let curMenu = $ref("");
|
|
let curMenu = $ref("");
|
|
let menuOptions = $ref<MenuOption[]>([]);
|
|
let menuOptions = $ref<MenuOption[]>([]);
|
|
let curMenuOption = $ref<MenuOption | undefined>();
|
|
let curMenuOption = $ref<MenuOption | undefined>();
|
|
-let breadcrumbs = $ref<MenuOption[]>([]);
|
|
|
|
|
|
+let breadcrumbs = $ref<MenuSubItem[]>([]);
|
|
|
|
|
|
const getMenus = async () => {
|
|
const getMenus = async () => {
|
|
const res = await studentClientMenuApi(store.user.rootOrgId);
|
|
const res = await studentClientMenuApi(store.user.rootOrgId);
|
|
|
|
+ const menuDict = getMenuDict();
|
|
menuOptions = res.data
|
|
menuOptions = res.data
|
|
.sort((a, b) => b.weight - a.weight)
|
|
.sort((a, b) => b.weight - a.weight)
|
|
.map((item) => {
|
|
.map((item) => {
|
|
return {
|
|
return {
|
|
id: item.id,
|
|
id: item.id,
|
|
name: item.name,
|
|
name: item.name,
|
|
- routeName: menuRouterDict[item.routeCode.toUpperCase()],
|
|
|
|
|
|
+ routeName: menuDict[item.routeCode.toUpperCase()],
|
|
};
|
|
};
|
|
});
|
|
});
|
|
};
|
|
};
|
|
@@ -81,10 +76,9 @@ const swithMenu = (menu: MenuOption) => {
|
|
|
|
|
|
// route change
|
|
// route change
|
|
const routerChange = () => {
|
|
const routerChange = () => {
|
|
- curMenuOption = menuOptions.find((item) => item.routeName === route.name);
|
|
|
|
- if (!curMenuOption) return;
|
|
|
|
- curMenu = curMenuOption.routeName;
|
|
|
|
- breadcrumbs = [{ ...curMenuOption }];
|
|
|
|
|
|
+ breadcrumbs = parseMapLine(route.name as string);
|
|
|
|
+ curMenu = breadcrumbs[0]?.routeName;
|
|
|
|
+ curMenuOption = menuOptions.find((item) => item.routeName === curMenu);
|
|
};
|
|
};
|
|
|
|
|
|
const toModifyPwd = () => {
|
|
const toModifyPwd = () => {
|
|
@@ -250,7 +244,7 @@ watch(
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <SiteMessageNotificationVue />
|
|
|
|
|
|
+ <SiteMessageNotification />
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<style scoped>
|
|
<style scoped>
|