@@ -53,47 +53,60 @@ export const useUserStore = defineStore('user', () => {
53
53
fullscreen : true ,
54
54
text : '登录中,请稍候...' ,
55
55
} )
56
- try {
57
- const res = await login ( loginInfo )
58
- if ( res . code === 0 ) {
59
- setUserInfo ( res . data . user )
60
- setToken ( res . data . token )
61
- const routerStore = useRouterStore ( )
62
- await routerStore . SetAsyncRouter ( )
63
- const asyncRouters = routerStore . asyncRouters
64
- asyncRouters . forEach ( asyncRouter => {
65
- router . addRoute ( asyncRouter )
66
- } )
67
-
68
- if ( ! router . hasRoute ( userInfo . value . authority . defaultRouter ) ) {
69
- ElMessage . error ( '请联系管理员进行授权' )
70
- } else {
71
- await router . replace ( { name : userInfo . value . authority . defaultRouter } )
72
- }
73
-
74
- loadingInstance . value . close ( )
75
-
76
- const isWin = ref ( / w i n d o w s / i. test ( navigator . userAgent ) )
77
- if ( isWin . value ) {
78
- window . localStorage . setItem ( 'osType' , 'WIN' )
79
- } else {
80
- window . localStorage . setItem ( 'osType' , 'MAC' )
81
- }
82
- return true
83
- }
84
- } catch ( e ) {
56
+
57
+ const res = await login ( loginInfo )
58
+
59
+ // 登陆失败,直接返回
60
+ if ( res . code !== 0 ) {
85
61
loadingInstance . value . close ( )
62
+ return false
63
+ }
64
+
65
+ // 登陆成功,设置用户信息和权限相关信息
66
+ setUserInfo ( res . data . user )
67
+ setToken ( res . data . token )
68
+
69
+ // 初始化路由信息
70
+ const routerStore = useRouterStore ( )
71
+ await routerStore . SetAsyncRouter ( )
72
+ const asyncRouters = routerStore . asyncRouters
73
+
74
+ // 注册到路由表里
75
+ asyncRouters . forEach ( asyncRouter => {
76
+ router . addRoute ( asyncRouter )
77
+ } )
78
+
79
+ if ( ! router . hasRoute ( userInfo . value . authority . defaultRouter ) ) {
80
+ ElMessage . error ( '请联系管理员进行授权' )
81
+ } else {
82
+ await router . replace ( { name : userInfo . value . authority . defaultRouter } )
86
83
}
84
+
85
+ const isWin = ref ( / w i n d o w s / i. test ( navigator . userAgent ) )
86
+ if ( isWin . value ) {
87
+ window . localStorage . setItem ( 'osType' , 'WIN' )
88
+ } else {
89
+ window . localStorage . setItem ( 'osType' , 'MAC' )
90
+ }
91
+
92
+ // 全部操作均结束,关闭loading并返回
87
93
loadingInstance . value . close ( )
94
+ return true
88
95
}
89
96
/* 登出*/
90
97
const LoginOut = async ( ) => {
91
98
const res = await jsonInBlacklist ( )
92
- if ( res . code === 0 ) {
93
- await ClearStorage ( )
94
- router . push ( { name : 'Login' , replace : true } )
95
- window . location . reload ( )
99
+
100
+ // 登出失败
101
+ if ( res . code !== 0 ) {
102
+ return
96
103
}
104
+
105
+ await ClearStorage ( )
106
+
107
+ // 把路由定向到登录页,无需等待直接reload
108
+ router . push ( { name : 'Login' , replace : true } )
109
+ window . location . reload ( )
97
110
}
98
111
/* 清理数据 */
99
112
const ClearStorage = async ( ) => {
0 commit comments