Browse Source

修复了token错误无法退出的bug

修复了字段查询为空的bug
main
piexlmax 3 years ago
parent
commit
43f36d640c
  1. 7
      web/src/permission.js
  2. 10
      web/src/pinia/modules/dictionary.js
  3. 12
      web/src/utils/request.js

7
web/src/permission.js

@ -7,9 +7,8 @@ let asyncRouterFlag = 0
const whiteList = ['Login', 'Init'] const whiteList = ['Login', 'Init']
const getRouter = async() => {
const getRouter = async(userStore) => {
const routerStore = useRouterStore() const routerStore = useRouterStore()
const userStore = useUserStore()
await routerStore.SetAsyncRouter() await routerStore.SetAsyncRouter()
await userStore.GetUserInfo() await userStore.GetUserInfo()
const asyncRouters = routerStore.asyncRouters const asyncRouters = routerStore.asyncRouters
@ -45,7 +44,7 @@ router.beforeEach(async(to, from, next) => {
if (token) { if (token) {
if (!asyncRouterFlag && whiteList.indexOf(from.name) < 0) { if (!asyncRouterFlag && whiteList.indexOf(from.name) < 0) {
asyncRouterFlag++ asyncRouterFlag++
await getRouter()
await getRouter(userStore)
} }
next({ name: userStore.userInfo.authority.defaultRouter }) next({ name: userStore.userInfo.authority.defaultRouter })
} else { } else {
@ -57,7 +56,7 @@ router.beforeEach(async(to, from, next) => {
// 添加flag防止多次获取动态路由和栈溢出 // 添加flag防止多次获取动态路由和栈溢出
if (!asyncRouterFlag && whiteList.indexOf(from.name) < 0) { if (!asyncRouterFlag && whiteList.indexOf(from.name) < 0) {
asyncRouterFlag++ asyncRouterFlag++
await getRouter()
await getRouter(userStore)
next({ ...to, replace: true }) next({ ...to, replace: true })
} else { } else {
if (to.matched.length) { if (to.matched.length) {

10
web/src/pinia/modules/dictionary.js

@ -6,8 +6,8 @@ import { ref } from 'vue'
export const useDictionaryStore = defineStore('dictionary', () => { export const useDictionaryStore = defineStore('dictionary', () => {
const dictionaryMap = ref({}) const dictionaryMap = ref({})
const setDictionaryMap = (dictionaryMap) => {
dictionaryMap.value = { ...dictionaryMap.value, ...dictionaryMap }
const setDictionaryMap = (dictionaryRes) => {
dictionaryMap.value = { ...dictionaryMap.value, ...dictionaryRes }
} }
const getDictionary = async(type) => { const getDictionary = async(type) => {
@ -16,7 +16,7 @@ export const useDictionaryStore = defineStore('dictionary', () => {
} else { } else {
const res = await findSysDictionary({ type }) const res = await findSysDictionary({ type })
if (res.code === 0) { if (res.code === 0) {
const dictionaryMap = {}
const dictionaryRes = {}
const dict = [] const dict = []
res.data.resysDictionary.sysDictionaryDetails && res.data.resysDictionary.sysDictionaryDetails.forEach(item => { res.data.resysDictionary.sysDictionaryDetails && res.data.resysDictionary.sysDictionaryDetails.forEach(item => {
dict.push({ dict.push({
@ -24,8 +24,8 @@ export const useDictionaryStore = defineStore('dictionary', () => {
value: item.value value: item.value
}) })
}) })
dictionaryMap[res.data.resysDictionary.type] = dict
setDictionaryMap(dictionaryMap)
dictionaryRes[res.data.resysDictionary.type] = dict
setDictionaryMap(dictionaryRes)
return dictionaryMap.value[type] return dictionaryMap.value[type]
} }
} }

12
web/src/utils/request.js

@ -2,6 +2,7 @@ import axios from 'axios' // 引入axios
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { useUserStore } from '@/pinia/modules/user' import { useUserStore } from '@/pinia/modules/user'
import { emitter } from '@/utils/bus.js' import { emitter } from '@/utils/bus.js'
import router from '@/router/index'
const service = axios.create({ const service = axios.create({
baseURL: import.meta.env.VITE_BASE_API, baseURL: import.meta.env.VITE_BASE_API,
@ -57,9 +58,9 @@ service.interceptors.request.use(
// http response 拦截器 // http response 拦截器
service.interceptors.response.use( service.interceptors.response.use(
response => { response => {
const userStore = useUserStore()
closeLoading() closeLoading()
if (response.headers['new-token']) { if (response.headers['new-token']) {
const userStore = useUserStore()
userStore.setToken(response.headers['new-token']) userStore.setToken(response.headers['new-token'])
} }
if (response.data.code === 0 || response.headers.success === 'true') { if (response.data.code === 0 || response.headers.success === 'true') {
@ -74,8 +75,9 @@ service.interceptors.response.use(
type: 'error' type: 'error'
}) })
if (response.data.data && response.data.data.reload) { if (response.data.data && response.data.data.reload) {
const userStore = useUserStore()
userStore.LoginOut()
userStore.token = ''
localStorage.clear()
router.push({ name: 'Login', replace: true })
} }
return response.data.msg ? response.data : response return response.data.msg ? response.data : response
} }
@ -95,7 +97,9 @@ service.interceptors.response.use(
}) })
.then(() => { .then(() => {
const userStore = useUserStore() const userStore = useUserStore()
userStore.LoginOut()
userStore.token = ''
localStorage.clear()
router.push({ name: 'Login', replace: true })
}) })
break break
case 404: case 404:

Loading…
Cancel
Save