This commit is contained in:
zhangyh
2025-10-27 15:02:56 +08:00
3 changed files with 32 additions and 13 deletions

View File

@@ -40,3 +40,10 @@ export const checkLoginStatus = (): Promise<ApiResponse<LoginResponse>> => {
meta: { responseAll: true }
})
}
export const LogOut = (): Promise<ApiResponse> => {
return request({
url: '/api/auth/logout',
method: 'get'
})
}

View File

@@ -1,10 +1,8 @@
import axios from 'axios'
import { showToast, showNotify, showConfirmDialog, closeToast } from 'vant'
import { useUserInfoStore } from '@/stores/modules/userInfo'
const store = useUserInfoStore()
import { getLocal } from '@/utils/local'
import router from '@/router/index'
import { useOverallStore, useGenerateStore } from '@/stores'
import { useOverallStore, useGenerateStore, useUserInfoStore } from '@/stores'
// 扩展 AxiosRequestConfig 接口
declare module 'axios' {
@@ -47,8 +45,9 @@ service.interceptors.request.use(
}
// 如果登录了有token则请求携带token
// Do something before request is sent
if (store.state.token) {
config.headers.Authorization = getLocal('token') // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
const token = useUserInfoStore().state.token
if (token) {
config.headers.Authorization = token // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
// config.headers['X-Token'] = getLocal('token') // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
}
return config
@@ -100,6 +99,7 @@ service.interceptors.response.use(
},
(error) => {
if(error?.response){
if (error.config?.loading) closeLoading() // 关闭loading
if(error?.response?.status === 401){//如果是记录浏览器页面就不跳转login
// showConfirmDialog({
// title: '确定登出',
@@ -120,10 +120,6 @@ service.interceptors.response.use(
return Promise.reject(false)
}
error.config && removePending(error.config)
// 关闭loading
if (error.config?.loading) {
closeLoading()
}
console.log('err' + error) // for debug
showToast({
message: error.message,

View File

@@ -3,11 +3,15 @@
import HeaderTitle from '@/components/HeaderTitle.vue'
import FooterNavigation from '@/components/FooterNavigation.vue'
import router from '@/router'
import { showConfirmDialog } from 'vant'
import { useUserInfoStore } from '@/stores'
import { LogOut } from '@/api/login'
const userInfoStore = useUserInfoStore()
const emit = defineEmits(['view-type'])
const form = reactive({
name: { edit: false, msg: '', value: 'Momo Fashion' },
email: { edit: false, msg: '', value: 'xxx@gmail.com' },
password: { show: false, edit: false, msg: '', value: '1234556' }
name: { edit: false, msg: '', value: userInfoStore.state.userInfo.username },
email: { edit: false, msg: '', value: userInfoStore.state.userInfo.email },
password: { show: false, edit: false, msg: '', value: userInfoStore.state.userInfo.password }
})
const onEditItem = (item) => {
@@ -19,7 +23,19 @@
form[item].edit = false
}
const logout = () => {
router.push({ path: '/' })
showConfirmDialog({
title: 'Log out',
message: 'Are you sure you want to log out?',
confirmButtonText: 'Yes',
cancelButtonText: 'Cancel'
})
.then(() => {
LogOut().then(() => {
userInfoStore.logOut()
router.push({ path: '/welcome' })
})
})
.catch(() => {})
}
</script>