import router from './router' import { resetRouter } from '@/router' import store from './store' // import { Message } from 'element-ui' import NProgress from 'nprogress' import 'nprogress/nprogress.css' import { getToken, removeToken } from '@/utils/auth' import Vue from 'vue' import { OSSclient } from './utils/oss' import WHITELIST from './utils/whiteList' import { getTrialExtralConfig } from '@/api/trials' // import getPageTitle from '@/utils/get-page-title' NProgress.configure({ showSpinner: false }) const whiteList = WHITELIST store.state.trials.whiteList = whiteList router.beforeEach(async(to, from, next) => { NProgress.start() // 设置页面标题 // document.title = getPageTitle(to.meta.title) store.state.trials.whiteList.indexOf(to.path) === -1 if (!to.query.trialId) { store.dispatch('trials/setConfig', {}) } if ( to.query.trialId && to.query.trialId !== store.state.trials.config.trialId ) { const res = await getTrialExtralConfig({ TrialId: to.query.trialId }) if (res.IsSuccess) { store.dispatch('trials/setConfig', { trialId: to.query.trialId, ...res.Result }) } } if (!to.query.trialId) { store.dispatch('trials/setConfig', {}) } if ( to.query.trialId && to.query.trialId !== store.state.trials.config.trialId ) { const res = await getTrialExtralConfig({ TrialId: to.query.trialId }) if (res.IsSuccess) { store.dispatch('trials/setConfig', { trialId: to.query.trialId, ...res.Result }) } } // 确定用户是否已登录 const hasToken = getToken() Vue.prototype.toPath = to.path Vue.prototype.$path = [] if (hasToken) { if (to.path === '/login' || to.path === '/recompose' || to.path === '/email-recompose' || to.path === '/error' || to.path === '/ReviewersResearchForm' || to.path === '/ReviewersResearch') { if (to.path === '/ReviewersResearch') { await OSSclient() await store.dispatch('user/logout') } if (to.path === '/ReviewersResearchForm') { await OSSclient() } next() NProgress.done() } else if (from.path === '/researchForm') { removeToken() const lang = to.query.lang || zzSessionStorage.getItem('lang') next(`/researchLogin?trialId=${to.query.trialId}&lang=${lang}`) NProgress.done() } else if (from.path === '/researchDetail_m') { removeToken() const lang = to.query.lang || zzSessionStorage.getItem('lang') next(`/researchLogin_m?trialId=${to.query.trialId}&lang=${lang}`) NProgress.done() } else { await OSSclient() const hasGetUserInfo = store.getters.userId if (hasGetUserInfo) { next() } else { try { // 获取用户信息 await store.dispatch('user/getInfo') await store.dispatch('user/getUserInfo') const accessRoutes = await store.dispatch('permission/generateRoutes') resetRouter() router.addRoutes(accessRoutes) next({ ...to, replace: true }) } catch (error) { console.log(error) // 删除token并进入登录页面以重新登录 await store.dispatch('user/resetToken') next(`/login?redirect=${to.path}`) NProgress.done() } } } } else { /* has no token*/ if (whiteList.indexOf(to.path) !== -1) { if (to.path === '/researchLogin') { const lang = to.query.lang || zzSessionStorage.getItem('lang') const flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i) if (flag) { next(`/researchLogin_m?trialId=${to.query.trialId}&lang=${lang}`) } else { next() } } else { // 在免登录whiteList中,直接进入 if (to.path === '/readingDicoms' || to.path === '/noneDicomReading') { await OSSclient() } next() } } else { if (to.path === '/researchForm') { const lang = to.query.lang || zzSessionStorage.getItem('lang') next(`/researchLogin?trialId=${to.query.trialId}&lang=${lang}`) NProgress.done() } else if (to.path === '/researchDetail_m') { const lang = to.query.lang || zzSessionStorage.getItem('lang') next(`/researchLogin_m?trialId=${to.query.trialId}&lang=${lang}`) NProgress.done() } else if (to.path === '/ReviewersResearchForm') { next(`/ReviewersResearch?`) NProgress.done() } else { // 其他无权访问的页面将重定向到登录页面。 next(`/login?`) NProgress.done() } } } }) router.afterEach(() => { NProgress.done() })