瀏覽代碼

登出提示重复提示解决;

zhangchong 2 年之前
父節點
當前提交
633280738c
共有 3 個文件被更改,包括 24 次插入14 次删除
  1. 1 2
      src/layout/navBars/breadcrumb/user.vue
  2. 17 12
      src/utils/request.ts
  3. 6 0
      src/views/login/index.vue

+ 1 - 2
src/layout/navBars/breadcrumb/user.vue

@@ -125,7 +125,6 @@ import { useThemeConfig } from '/@/stores/themeConfig';
 import { Session, Local } from '/@/utils/storage';
 // import UserNews from '/@/layout/navBars/breadcrumb/userNews.vue';
 import Search from '/@/layout/navBars/breadcrumb/search.vue';
-import Watermark from '/@/utils/wartermark';
 // 引入需要的api
 import { onDuty,offDuty,telRest,telUnrest } from '/@/api/user';
 import { getTelsList } from '/@/api/callCenter/tels';
@@ -257,7 +256,7 @@ export default defineComponent({
 						themeConfig.value.isWartermark = false;
 						themeConfig.value.wartermarkText = "";
 						Local.set('themeConfig', themeConfig.value);
-						Watermark.del();
+
 						// 清除缓存/token等
 						Session.clear();
 						// 使用 reload 时,不需要调用 resetRoute() 重置路由

+ 17 - 12
src/utils/request.ts

@@ -4,12 +4,11 @@
  * @version: 
  * @Date: 2022-08-09 16:19:57
  * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-09-20 13:59:46
+ * @LastEditTime: 2022-10-25 18:20:48
  */
 import axios from 'axios';
 import { ElMessage, ElMessageBox } from 'element-plus';
 import { Session } from '/@/utils/storage';
-
 // 配置新建一个 axios 实例
 const service = axios.create({
 	baseURL: import.meta.env.VITE_API_URL as any,
@@ -45,11 +44,14 @@ service.interceptors.response.use(
 		if (res.code && res.code !== 0) {
 			// `token` 过期或者账号已在别处登录
 			if (res.code === 401 || res.code === 4001) {
-				Session.clear(); // 清除浏览器全部临时缓存
-				window.location.href = '/'; // 去登录页
-				ElMessageBox.alert('你已被登出,请重新登录', '提示', {})
-					.then(() => {})
-					.catch(() => {});
+				//获取页面所有已经存在的提示
+				let doms = document.getElementsByClassName('is-message-box');
+				if(doms.length === 0){// 解决重复提示的问题
+					ElMessageBox.alert('你已被登出,请重新登录', '提示', {type: 'warning'}).then(() => {
+						Session.clear(); // 清除浏览器全部临时缓存
+						window.location.href = '/'; // 去登录页
+					}).catch(() => {});
+				}
 			}
 			return Promise.reject(service.interceptors.response);
 		} else {
@@ -63,11 +65,14 @@ service.interceptors.response.use(
 		} else if (error.message == 'Network Error') {
 			ElMessage.error('网络连接错误');
 		} else if(error.response.status == 401){ //`token` 过期或者账号已在别处登录
-			Session.clear(); // 清除浏览器全部临时缓存
-			window.location.href = '/'; // 去登录页
-			ElMessageBox.alert('你已被登出,请重新登录', '提示', {})
-				.then(() => {})
-				.catch(() => {});
+				//获取页面所有已经存在的提示
+				let doms = document.getElementsByClassName('is-message-box');
+				if(doms.length === 0){// 解决重复提示的问题
+					ElMessageBox.alert('你已被登出,请重新登录', '提示', {type: 'warning'}).then(() => {
+						Session.clear(); // 清除浏览器全部临时缓存
+						window.location.href = '/'; // 去登录页
+					}).catch(() => {});
+				}
 		}else{
 			if (error.response.data) ElMessage.error(error.response.data.error);
 			else ElMessage.error('接口路径找不到');

+ 6 - 0
src/views/login/index.vue

@@ -38,8 +38,10 @@ import logoMini from '/@/assets/logo-mini.svg';
 import loginIconTwo from '/@/assets/login-icon-two.svg';
 import { NextLoading } from '/@/utils/loading';
 import Account from '/@/views/login/component/account.vue';
+import { Local } from '/@/utils/storage';
 // import Mobile from '/@/views/login/component/mobile.vue';
 // import Scan from '/@/views/login/component/scan.vue';
+import Watermark from '/@/utils/wartermark';
 
 // 定义接口来定义对象的类型
 interface LoginState {
@@ -66,6 +68,10 @@ export default defineComponent({
 		// 页面加载时
 		onMounted(() => {
 			NextLoading.done();
+			Watermark.del(); // 清除水印
+			themeConfig.value.isWartermark = false;
+			themeConfig.value.wartermarkText = "";
+			Local.set('themeConfig', themeConfig.value);
 		});
 		return {
 			logoMini,