diff --git a/Yi.Ai.Vue3/index.html b/Yi.Ai.Vue3/index.html
index c3031f3c..53426ed1 100644
--- a/Yi.Ai.Vue3/index.html
+++ b/Yi.Ai.Vue3/index.html
@@ -5,6 +5,7 @@
+
diff --git a/Yi.Ai.Vue3/src/pages/chat/layouts/chatWithId/index.vue b/Yi.Ai.Vue3/src/pages/chat/layouts/chatWithId/index.vue
index 08b8d475..3ec1644a 100644
--- a/Yi.Ai.Vue3/src/pages/chat/layouts/chatWithId/index.vue
+++ b/Yi.Ai.Vue3/src/pages/chat/layouts/chatWithId/index.vue
@@ -44,8 +44,19 @@ const bubbleListRef = ref(null);
const { stream, loading: isLoading, cancel } = useHookFetch({
request: send,
- onError: (err) => {
- console.warn('测试错误拦截', err);
+ onError: async (error) => {
+ if (error.status === 403) {
+ const data = await (error.response.json());
+ // 弹窗提示
+ ElMessage.error(data.error.message);
+ return Promise.reject(data);
+ }
+ if (error.status === 401) {
+ ElMessage.error('登录已过期,请重新登录!');
+ // 弹窗提示
+ userStore.logout();
+ userStore.openLoginDialog();
+ }
},
});
// 记录进入思考中
@@ -148,9 +159,6 @@ function handleDataChunk(chunk: AnyObject) {
// 封装错误处理逻辑
function handleError(err: any) {
- if (err.status === 403) {
- ElMessage.error('业务错误,请稍后再试');
- }
console.error('Fetch error:', err);
}
@@ -191,6 +199,7 @@ async function startSSE(chatContent: string) {
}
}
catch (err) {
+ console.log('33---');
handleError(err);
}
finally {
diff --git a/Yi.Ai.Vue3/src/utils/request.ts b/Yi.Ai.Vue3/src/utils/request.ts
index a770e9dd..8d0fb81c 100644
--- a/Yi.Ai.Vue3/src/utils/request.ts
+++ b/Yi.Ai.Vue3/src/utils/request.ts
@@ -102,6 +102,8 @@ function jwtPlugin(): {
return response;
if (response.result?.code === 403) {
+ console.log('2222---');
+
router.replace({ name: '403' });
ElMessage.error(response.result?.msg);
return Promise.reject(response);
diff --git a/Yi.Ai.Vue3/types/components.d.ts b/Yi.Ai.Vue3/types/components.d.ts
index a3fa6352..ece2a161 100644
--- a/Yi.Ai.Vue3/types/components.d.ts
+++ b/Yi.Ai.Vue3/types/components.d.ts
@@ -11,9 +11,13 @@ declare module 'vue' {
AccountPassword: typeof import('./../src/components/LoginDialog/components/FormLogin/AccountPassword.vue')['default']
APIKeyManagement: typeof import('./../src/components/userPersonalCenter/components/APIKeyManagement.vue')['default']
DeepThinking: typeof import('./../src/components/DeepThinking/index.vue')['default']
+ ElAlert: typeof import('element-plus/es')['ElAlert']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElButton: typeof import('element-plus/es')['ElButton']
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
+ ElCard: typeof import('element-plus/es')['ElCard']
+ ElCollapse: typeof import('element-plus/es')['ElCollapse']
+ ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
ElContainer: typeof import('element-plus/es')['ElContainer']
ElDialog: typeof import('element-plus/es')['ElDialog']
ElDivider: typeof import('element-plus/es')['ElDivider']