修复token验证和左侧表单问题
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { getUserMenus, getMenuList, getTempUserMenus, type MenuItem } from '@/api/menu'
|
||||
import { getUserMenus, type MenuItem } from '@/api/menu'
|
||||
import ENV_CONFIG from '@/config/env'
|
||||
|
||||
interface MenuState {
|
||||
@@ -8,12 +8,6 @@ interface MenuState {
|
||||
error: string | null
|
||||
}
|
||||
|
||||
interface ApiResponse<T> {
|
||||
code: number
|
||||
message: string
|
||||
data: T
|
||||
}
|
||||
|
||||
const useMenuStore = defineStore('menu', {
|
||||
state: (): MenuState => ({
|
||||
menus: [],
|
||||
@@ -33,43 +27,22 @@ const useMenuStore = defineStore('menu', {
|
||||
},
|
||||
|
||||
actions: {
|
||||
// 获取用户菜单(使用临时接口)
|
||||
// 获取管理员菜单
|
||||
async fetchUserMenus() {
|
||||
this.loading = true
|
||||
this.error = null
|
||||
|
||||
try {
|
||||
const response = await getTempUserMenus() as unknown as ApiResponse<MenuItem[]>
|
||||
const response = await getUserMenus() as unknown as MenuItem[]
|
||||
|
||||
if (response.code === 200 && response.data) {
|
||||
this.menus = response.data
|
||||
if (response && Array.isArray(response)) {
|
||||
this.menus = response
|
||||
} else {
|
||||
throw new Error(response.message || '获取菜单失败')
|
||||
throw new Error('获取菜单失败')
|
||||
}
|
||||
} catch (error: any) {
|
||||
this.error = error.message || '获取菜单失败'
|
||||
console.error('获取用户菜单失败:', error)
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
|
||||
// 获取所有菜单(管理员用)
|
||||
async fetchAllMenus() {
|
||||
this.loading = true
|
||||
this.error = null
|
||||
|
||||
try {
|
||||
const response = await getMenuList() as unknown as ApiResponse<MenuItem[]>
|
||||
|
||||
if (response.code === 200 && response.data) {
|
||||
this.menus = response.data
|
||||
} else {
|
||||
throw new Error(response.message || '获取菜单失败')
|
||||
}
|
||||
} catch (error: any) {
|
||||
this.error = error.message || '获取菜单失败'
|
||||
console.error('获取所有菜单失败:', error)
|
||||
console.error('获取管理员菜单失败:', error)
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
|
||||
@@ -103,6 +103,7 @@ const useUserStore = defineStore('user', {
|
||||
try {
|
||||
// 验证token是否有效
|
||||
const response = await getUserInfoApi() as unknown as UserInfo
|
||||
|
||||
if (response && response.id) {
|
||||
this.token = token
|
||||
this.userInfo = response
|
||||
@@ -113,10 +114,21 @@ const useUserStore = defineStore('user', {
|
||||
}
|
||||
} catch (error: any) {
|
||||
console.error('获取用户信息失败:', error)
|
||||
// 网络错误时,不清除本地状态,保持用户登录状态
|
||||
// 如果有本地token和用户信息,先保持登录状态
|
||||
// 只有在明确知道token无效时才清除
|
||||
if (error.response?.status === 401) {
|
||||
this.clearUserState()
|
||||
} else {
|
||||
// 网络错误或其他错误,使用本地存储的数据
|
||||
try {
|
||||
const userInfo = JSON.parse(userInfoStr)
|
||||
this.token = token
|
||||
this.userInfo = userInfo
|
||||
this.isLogin = true
|
||||
} catch (parseError) {
|
||||
// 本地数据解析失败,清除状态
|
||||
this.clearUserState()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user