Skip to content

Commit bbf716b

Browse files
authored
style(login): 优化登陆部分代码,提升可读性 (#1772)
1 parent 725f6fe commit bbf716b

File tree

2 files changed

+60
-39
lines changed

2 files changed

+60
-39
lines changed

web/src/pinia/modules/user.js

+46-33
Original file line numberDiff line numberDiff line change
@@ -53,47 +53,60 @@ export const useUserStore = defineStore('user', () => {
5353
fullscreen: true,
5454
text: '登录中,请稍候...',
5555
})
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(/windows/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) {
8561
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 })
8683
}
84+
85+
const isWin = ref(/windows/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并返回
8793
loadingInstance.value.close()
94+
return true
8895
}
8996
/* 登出*/
9097
const LoginOut = async() => {
9198
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
96103
}
104+
105+
await ClearStorage()
106+
107+
// 把路由定向到登录页,无需等待直接reload
108+
router.push({ name: 'Login', replace: true })
109+
window.location.reload()
97110
}
98111
/* 清理数据 */
99112
const ClearStorage = async() => {

web/src/view/login/index.vue

+14-6
Original file line numberDiff line numberDiff line change
@@ -224,12 +224,8 @@ const login = async() => {
224224
}
225225
const submitForm = () => {
226226
loginForm.value.validate(async(v) => {
227-
if (v) {
228-
const flag = await login()
229-
if (!flag) {
230-
loginVerify()
231-
}
232-
} else {
227+
if (!v) {
228+
// 未通过前端静态验证
233229
ElMessage({
234230
type: 'error',
235231
message: '请正确填写登录信息',
@@ -238,6 +234,18 @@ const submitForm = () => {
238234
loginVerify()
239235
return false
240236
}
237+
238+
// 通过验证,请求登陆
239+
const flag = await login()
240+
241+
// 登陆失败,刷新验证码
242+
if (!flag) {
243+
loginVerify()
244+
return false
245+
}
246+
247+
// 登陆成功
248+
return true
241249
})
242250
}
243251

0 commit comments

Comments
 (0)