import router from "./router"; import store from "./store"; import NProgress from "nprogress"; // progress bar import "nprogress/nprogress.css"; // progress bar style import getPageTitle from "@/utils/get-page-title"; import Layout from "@/layout"; import serve from "api/login.js"; NProgress.configure({ showSpinner: false }); // NProgress Configuration const whiteList = ["/login"]; // no redirect whitelist router.beforeEach(async (to, from, next) => { NProgress.start(); document.title = getPageTitle(to.meta.title); const hasToken = localStorage.getItem("businessToken"); if (hasToken) { if (to.path === "/login") { next({ path: "/" }); NProgress.done(); } else { const hasAuth = store.getters.auth && store.getters.auth.length; if (hasAuth) { next(); } else { try { // let infoRes = await serve.getUserInfo(); // infoRes.data.authList = [1]; let infoRes = { data: { authList: [1], }, }; store.dispatch("user/info", infoRes.data); let routerRes = await serve.getCustomerRouters(); let realRouter = filterAsyncRouter(routerRes.data); store.dispatch("permission/generateRoutes", realRouter); router.addRoutes(realRouter); next({ ...to, replace: true }); } catch (err) { console.log("catch"); next("/login"); NProgress.done(); } } } } else { if (whiteList.includes(to.path)) { next(); } else { next("/login"); NProgress.done(); } } }); router.afterEach(() => { NProgress.done(); }); function filterAsyncRouter(routers) { return routers.map((route) => { if (route.component) { if (route.component === "Layout") { route.component = Layout; } else { route.component = lazyLoad(route.component); } } if (route.children && route.children.length) { route.children = filterAsyncRouter(route.children); } return route; }); } function lazyLoad(path) { return (resolve) => require([`@/views/${path}`], resolve); }