Browse Source

2024.12.24 邮箱链接路由 登录后继续跳转

java8
yuejiayang 1 year ago
parent
commit
20840a8f18
  1. 58
      src/router/index.js
  2. 28
      src/views/common/login.vue
  3. 7
      src/views/modules/auth/authInquiry.vue
  4. 7
      src/views/modules/auth/authQuote.vue

58
src/router/index.js

@ -59,40 +59,50 @@ const router = new Router({
routes: globalRoutes.concat(mainRoutes)
})
router.beforeEach((to, from, next) => {console.log(Vue.prototype.$store)
// 添加动态(菜单)路由
// 1. 已经添加 or 全局路由, 直接访问
// 2. 获取菜单列表, 添加并保存本地存储
router.beforeEach((to, from, next) => {
const token = localStorage.getItem('token');
const isLogin = to.name === 'login'; // 判断是否是登录页
// 保存原始路径(仅在未登录状态下保存)
if (!token && !isLogin) {
console.log('保存重定向路径:', to.fullPath);
localStorage.setItem('redirectPath', to.fullPath);
}
// 动态路由逻辑处理
if (router.options.isAddDynamicMenuRoutes || fnCurrentRouteType(to, globalRoutes) === 'global') {
next()
next();
} else {
let menuType = localStorage.getItem('menuType')
http({
url: http.adornUrl('/sys/menu/nav'),
method: 'get',
params: {
'l': i18n.locale, //i18n.locale
l: i18n.locale, // 当前语言
menuType: 'pc'
}
}).then(({data}) => {
if (data && data.code === 0) {
fnAddDynamicMenuRoutes(data.menuList)
router.options.isAddDynamicMenuRoutes = true
sessionStorage.setItem('menuList', JSON.stringify(data.menuList || '[]'))
sessionStorage.setItem('permissions', JSON.stringify(data.permissions || '[]'))
sessionStorage.setItem('userConfig', JSON.stringify(data.userConfig || '[]'))
next({ ...to, replace: true })
} else {
sessionStorage.setItem('menuList', '[]')
sessionStorage.setItem('permissions', '[]')
next()
}
}).catch((e) => {
console.log(`%c${e} 请求菜单列表和权限失败,跳转至登录页!!`, 'color:blue')
router.push({ name: 'login' })
})
.then(({ data }) => {
if (data && data.code === 0) {
fnAddDynamicMenuRoutes(data.menuList); // 添加动态菜单路由
router.options.isAddDynamicMenuRoutes = true;
sessionStorage.setItem('menuList', JSON.stringify(data.menuList || '[]'));
sessionStorage.setItem('permissions', JSON.stringify(data.permissions || '[]'));
sessionStorage.setItem('userConfig', JSON.stringify(data.userConfig || '[]'));
next({ ...to, replace: true });
} else {
console.error('菜单数据获取失败:', data.msg);
sessionStorage.setItem('menuList', '[]');
sessionStorage.setItem('permissions', '[]');
next();
}
})
.catch((e) => {
console.error(`%c${e} 请求菜单列表和权限失败,跳转至登录页!!`, 'color:blue');
router.push({ name: 'login' }); // 跳转到登录页
});
}
})
});
/**
* 判断当前路由类型, global: 全局路由, main: 主入口路由

28
src/views/common/login.vue

@ -71,8 +71,20 @@ import { getUUID } from '@/utils'
}
}
},
mounted() {
// redirectPath
const redirectPath = this.$route.query.redirect || '/home';
if (!localStorage.getItem('redirectPath')) {
localStorage.setItem('redirectPath', redirectPath);
}
},
created () {
this.userName();
// redirectPath
const currentPath = localStorage.getItem('redirectPath');
if (!currentPath) {
localStorage.setItem('redirectPath', this.$route.fullPath);
}
},
methods: {
//
@ -93,17 +105,13 @@ import { getUUID } from '@/utils'
})
}).then(({data}) => {
if (data && data.code === 0) {
console.log('跳转前路径:', localStorage.getItem('redirectPath')); //
this.$cookie.set('token', data.token)
const prevLink = document.referrer;
console.log('prevLink',prevLink)
// if($.trim(prevLink)==='') {
this.$router.replace({name: 'home'})
// }
// if(prevLink.indexOf('www.example.com')===-1){ //
// location.href = 'www.example.com/index.html';
// }
//
const redirectPath = localStorage.getItem('redirectPath') || '/home';
console.log('Redirecting to:', redirectPath); //
this.$router.replace(redirectPath); //
// this.$router.replace({name: 'home'})
this.$i18n.locale=data.language
localStorage.setItem('locale', data.language)
localStorage.setItem('refresh', "0")

7
src/views/modules/auth/authInquiry.vue

@ -312,6 +312,13 @@ import {updateAuthHist} from "../../../api/auth/auth";
import OssComponents from "../oss/ossComponents.vue";
export default {
beforeRouteEnter(to, from, next) {
next((vm) => {
// redirectPath
localStorage.removeItem('redirectPath');
console.log('redirectPath 已清除');
});
},
computed: {
statusDisplay() {
return this.inquiryInfoData.status === 'C' ? '草稿' : (this.inquiryInfoData.status === 'B' ? '已下达' : '已报价')

7
src/views/modules/auth/authQuote.vue

@ -216,6 +216,13 @@ import TpCost from "../quote/detail/tpCost.vue";
import QuoteDetail from "../quote/detail/quoteDetail.vue";
export default {
beforeRouteEnter(to, from, next) {
next((vm) => {
// redirectPath
localStorage.removeItem('redirectPath');
console.log('redirectPath 已清除');
});
},
computed: {
// quotationInformationFlag () {
// return (value) => {

Loading…
Cancel
Save