From 30a0422d4b7fb70a2e6ae31fa96bd09af050fc05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Mon, 27 Oct 2025 11:52:15 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E5=85=B3=E9=97=ADloading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/request.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/utils/request.ts b/src/utils/request.ts index 48b5446..c0f3648 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -87,6 +87,7 @@ service.interceptors.response.use( }, (error) => { if(error?.response){ + if (error.config?.loading) closeLoading() // 关闭loading if(error?.response?.status === 401){//如果是记录浏览器页面就不跳转login // showConfirmDialog({ // title: '确定登出', @@ -107,10 +108,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, From 5c5766f4c44755339cc171757f6120c7f891a82d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Mon, 27 Oct 2025 14:02:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=80=80=E5=87=BA?= =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/login.ts | 7 +++++++ src/utils/request.ts | 9 ++++----- src/views/Workshop/profile.vue | 24 ++++++++++++++++++++---- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/api/login.ts b/src/api/login.ts index 132fe7f..3548fea 100644 --- a/src/api/login.ts +++ b/src/api/login.ts @@ -37,4 +37,11 @@ export const checkLoginStatus = (): Promise> => { url: '/api/auth/checkLoginStatus', method: 'get' }) +} + +export const LogOut = (): Promise => { + return request({ + url: '/api/auth/logout', + method: 'get' + }) } \ No newline at end of file diff --git a/src/utils/request.ts b/src/utils/request.ts index 032a0e9..472ddb7 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 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(() => {}) }