@@ -170,17 +170,12 @@ import { AvatarUtils } from '@/utils/AvatarUtils'
170
170
import { useMitt } from ' @/hooks/useMitt'
171
171
import { WsResponseMessageType } from ' @/services/wsType'
172
172
import { useNetwork } from ' @vueuse/core'
173
- import { computedToken } from ' @/services/request'
174
- import ws from ' @/services/webSocket'
175
- import { useGlobalStore } from ' @/stores/global.ts'
176
173
import { useUserStatusStore } from ' @/stores/userStatus'
177
174
178
175
const settingStore = useSettingStore ()
179
176
const userStore = useUserStore ()
180
- const globalStore = useGlobalStore ()
181
177
const userStatusStore = useUserStatusStore ()
182
178
const { stateId } = storeToRefs (userStatusStore )
183
- const { isTrayMenuShow } = storeToRefs (globalStore )
184
179
/** 网络连接是否正常 */
185
180
const { isOnline } = useNetwork ()
186
181
const loginHistoriesStore = useLoginHistoriesStore ()
@@ -206,8 +201,9 @@ const accountPH = ref('输入HuLa账号')
206
201
const passwordPH = ref (' 输入HuLa密码' )
207
202
/** 登录按钮的文本内容 */
208
203
const loginText = ref (' 登录' )
204
+ /** 是否直接跳转 */
205
+ const isJumpDirectly = ref (false )
209
206
const { createWebviewWindow } = useWindow ()
210
- const route = useRoute ()
211
207
212
208
watchEffect (() => {
213
209
loginDisabled .value = ! (info .value .account && info .value .password && protocol .value )
@@ -272,13 +268,11 @@ const normalLogin = async (auto = false) => {
272
268
loading .value = true
273
269
// 根据auto参数决定从哪里获取登录信息
274
270
const loginInfo = auto ? (userStore .userInfo as UserInfoType ) : info .value
275
- const { account, password } = loginInfo
271
+ const { account } = loginInfo
276
272
277
273
apis
278
- .login ({ account , password })
274
+ .login ({ account , password: info . value . password , source: ' pc ' })
279
275
.then (async (res ) => {
280
- console .log (res )
281
-
282
276
loginDisabled .value = true
283
277
loginText .value = ' 登录成功, 正在跳转'
284
278
userStore .isSign = true
@@ -369,30 +363,46 @@ const enterKey = (e: KeyboardEvent) => {
369
363
}
370
364
371
365
onBeforeMount (async () => {
372
- // 如果不是自动登录且当前在登录页面,清除 TOKEN,防止用户直接使用控制台退出导致登录前还没有退出账号就继续登录
373
- if (! login .value .autoLogin && route .path === ' /login' && TOKEN .value ) {
374
- await apis .logout ()
375
- isTrayMenuShow .value = false
376
- computedToken .clear ()
377
- // 重新初始化 WebSocket 连接,此时传入 null 作为 token
378
- ws .initConnect ()
379
- const headers = new Headers ()
380
- headers .append (' Authorization' , ' ' )
366
+ const token = localStorage .getItem (' TOKEN' )
367
+ const refreshToken = localStorage .getItem (' REFRESH_TOKEN' )
368
+
369
+ if (token && refreshToken ) {
370
+ isJumpDirectly .value = true
371
+ try {
372
+ // 验证token有效性
373
+ await userStore .getUserDetailAction ()
374
+ // token有效,直接打开主窗口
375
+ await openHomeWindow ()
376
+ return // 直接返回,不执行后续的登录相关逻辑
377
+ } catch (error ) {
378
+ isJumpDirectly .value = false
379
+ // token无效,清除token并重置状态
380
+ localStorage .removeItem (' TOKEN' )
381
+ localStorage .removeItem (' REFRESH_TOKEN' )
382
+ userStore .userInfo = {}
383
+ userStore .isSign = false
384
+ }
381
385
}
382
386
})
383
387
384
388
onMounted (async () => {
385
- await getCurrentWebviewWindow ().show ()
389
+ // 只有在需要登录的情况下才显示登录窗口
390
+ if (! isJumpDirectly .value ) {
391
+ await getCurrentWebviewWindow ().show ()
392
+ }
393
+
386
394
useMitt .on (WsResponseMessageType .NO_INTERNET , () => {
387
395
loginDisabled .value = true
388
396
loginText .value = ' 服务异常断开'
389
397
})
398
+
390
399
// 自动登录
391
400
if (login .value .autoLogin && TOKEN .value ) {
392
401
normalLogin (true )
393
402
} else {
394
403
loginHistories .length > 0 && giveAccount (loginHistories [0 ])
395
404
}
405
+
396
406
window .addEventListener (' click' , closeMenu , true )
397
407
window .addEventListener (' keyup' , enterKey )
398
408
})
0 commit comments