diff --git a/src/api/login.ts b/src/api/login.ts index 65abe4c..85b6b34 100644 --- a/src/api/login.ts +++ b/src/api/login.ts @@ -40,3 +40,10 @@ export const checkLoginStatus = (): Promise> => { meta: { responseAll: true } }) } + +export const LogOut = (): Promise => { + return request({ + url: '/api/auth/logout', + method: 'get' + }) +} diff --git a/src/utils/request.ts b/src/utils/request.ts index 14eeee3..0e552bd 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -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, diff --git a/src/views/Workshop/profile.vue b/src/views/Workshop/profile.vue index 0b5b3c4..e7c16d7 100644 --- a/src/views/Workshop/profile.vue +++ b/src/views/Workshop/profile.vue @@ -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(() => {}) }