123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import { login } from "../api/login";
- import { getAuthRouterFn } from "@/utils/getAuth";
- import { resetRouter } from "@/router/index";
- export default {
- namespaced: true, // 子模块一定要开启命名空间
- state: {
- userInfo: {},
- dynamicRouter: [],
- },
- getters: {},
- mutations: {
- SET_USERINFO(state, payload) {
- state.userInfo = payload;
- },
- RESET_USER_STATE(state) {
- state.userInfo = {};
- resetRouter();
- },
- SET_DYNAMIC_ROUTER(state, payload) {
- state.dynamicRouter = payload;
- },
- },
- actions: {
- async goLogin({ commit, dispatch }, { loginForm, router }) {
- try {
- const result = await login(loginForm);
- commit("SET_USERINFO", result.data);
- dispatch("setAddRouter", {
- resultRouter: result.data.permission,
- router,
- });
- } catch (error) {
- console.error("Login error:", error);
- }
- },
- setAddRouter({ commit }, { resultRouter, router }) {
- // 获取home路由
- const homeRoute = router.options.routes.find(
- (route) => route.name === "home"
- );
- // 确保home路由存在
- if (homeRoute) {
- if (!homeRoute.children) {
- homeRoute.children = [];
- }
- // 过滤掉动态添加的路由,保留初始状态的路由
- const originalChildren = homeRoute.children.filter(
- (route) => route.meta && !route.meta.dynamic
- );
- // 清空原有的动态子路由
- homeRoute.children = originalChildren;
- const { authRouterList } = getAuthRouterFn(resultRouter);
- console.log();
- commit("SET_DYNAMIC_ROUTER", authRouterList);
- authRouterList.forEach((item) => {
- // 动态路由的父路径设置为home
- homeRoute.children.push(item);
- });
- // 重新添加home路由
- router.addRoute(homeRoute);
- }
- // console.log("/homeRoute", homeRoute, router.getRoutes());
- // 添加404页面路由
- router.addRoute({
- path: "/:pathMatch(.*)*",
- name: "NotFound",
- component: () => import("@/views/error/404.vue"),
- meta: { hidden: true },
- });
- // 确保导航到动态添加的路由
- router.push("/home");
- },
- logout({ commit }) {
- // 重置 Vuex 状态
- commit("RESET_USER_STATE");
- // 重置路由
- resetRouter();
- },
- },
- };
|