Ver Fonte

704登录bug

tangjunhao há 2 meses atrás
pai
commit
6a7ddb94d5
6 ficheiros alterados com 55 adições e 65 exclusões
  1. 1 2
      src/settings.js
  2. 35 23
      src/utils/message.js
  3. 5 17
      src/utils/request.ts
  4. 1 11
      src/utils/token.js
  5. 5 4
      src/view/appmian.vue
  6. 8 8
      src/view/login.vue

+ 1 - 2
src/settings.js

@@ -4,5 +4,4 @@ export const TokenKey = 'CAE_token';
 export const UserIdKey = 'CAE_userId';
 export const LoginUrl = 'logUrl';
 export const Caegw_ProUrl="";
-export const Caegw_LogUrl="/login";
-export const loginflag= 'CAE_loginflag';
+export const Caegw_LogUrl="/login";

+ 35 - 23
src/utils/message.js

@@ -1,46 +1,58 @@
 /*
-element-ui中的message在实际使用过程中很多时候会遇到,相同的message会在短时间内同时出现在页面上,这种情况下是没有必要的。比如一个错误信息提示被放在定时器中进行:定时调用某个接口,然后这个接口会返回一个message的话,在定时器时间设置很短的情况下,就会出现短时间内弹出很多相同的message。我们可以通过重写element-ui的message来解决这个问题。
+element-plus中的message在实际使用过程中很多时候会遇到,相同的message会在短时间内同时出现在页面上,这种情况下是没有必要的。比如一个错误信息提示被放在定时器中进行:定时调用某个接口,然后这个接口会返回一个message的话,在定时器时间设置很短的情况下,就会出现短时间内弹出很多相同的message。我们可以通过重写element-plus的message来解决这个问题。
 */
 
-
-const showMessage = Symbol('showMessage')
 /**
- * 封装element-ui message方法,只有在页面没有message或者没有相同message的情况下才弹出该message
+ * 封装element-plus message方法,只有在页面没有message或者没有相同message的情况下才弹出该message
  */
-class ElMessage {
+import { ElMessage } from 'element-plus';
+
+const showMessage = Symbol('showMessage');
+
+class Message {
   success(options, single = true) {
-    this[showMessage]('success', options, single)
+    this[showMessage]('success', options, single);
   }
   warning(options, single = true) {
-    this[showMessage]('warning', options, single)
+    this[showMessage]('warning', options, single);
   }
   info(options, single = true) {
-    this[showMessage]('info', options, single)
+    this[showMessage]('info', options, single);
   }
   error(options, single = true) {
-    this[showMessage]('error', options, single)
+    this[showMessage]('error', options, single);
   }
-  /* eslint-disable */
+
   [showMessage](type, options, single) {
     if (single) {
-      let canShow = true;//设置值控制显示当前message
-      let messageArr = document.getElementsByClassName('el-message');//获取页面所有已经存在的message
-      //遍历获取到的message DOM集合,如果页面已存在的message中有显示文本和当前message相同的情况,canShow设置为false
-      for (let i = 0; i < messageArr.length; i++) {
-        if (options == messageArr[i].getElementsByClassName('el-message__content')[0].innerHTML) {
+      const messageContent = typeof options === 'string' ? options : options?.message;
+      const existingMessages = document.querySelectorAll('.el-message__content');
+      let canShow = true;
+
+      existingMessages.forEach((msg) => {
+        if (msg.textContent === messageContent) {
           canShow = false;
         }
-      }
-      //如果页面不存在message或者canShow==true,则正常执行该message
-      if (messageArr.length == 0 || canShow) {
-        Message[type](options)
+      });
+
+      if (canShow) {
+        ElMessage[type](options);
       }
     } else {
-      Message[type](options)
+      ElMessage[type](options);
     }
   }
 }
 
-export {
-  ElMessage
-}
+// 导出实例
+export const message = new Message();
+
+
+
+// 使用方式
+
+// import { message } from '@/utils/message'; // 导入你的封装
+
+// message.success("操作成功"); // 默认防重复
+// message.error("错误信息", false); // 不防重复
+// message.warning({ message: "警告", duration: 3000 }); // 对象参数

+ 5 - 17
src/utils/request.ts

@@ -1,6 +1,6 @@
 import axios from 'axios';
 import store from '@/store'
-import { getToken,getUserId,removeToken,removeUserId,setLoginflag,getLoginflag } from '@/utils/token';
+import { getToken,getUserId,removeToken,removeUserId } from '@/utils/token';
 import { DES3 } from '@/utils/3des';
 import router from '@/router/index'
 import { ElMessage } from 'element-plus'
@@ -61,22 +61,10 @@ axios.interceptors.response.use(res => {
     if (data.returnCode == successCode) {
       return Promise.resolve(data)
     } else {
-      if (data.returnMsg == "系统没有登录或会话超时!") {
-        // 判断状态,只执行一次,避免多次跳转登录页
-        console.log('loginflag0:',getLoginflag())
-        if(getLoginflag() == '1'||getLoginflag() == undefined){
-          ElMessage.error(data.returnMsg)
-          console.log('loginflag:',getLoginflag())
-          setLoginflag('0')
-          console.log('loginflag1:',getLoginflag())
-          removeToken();
-          removeUserId();
-          router.replace({ path: '/login' });
-        }
-        
-        
-        // 直接返回一个空对象,避免进入 then 或 catch 弹出提示框
-        return new Promise(() => {}); // 不执行任何后续操作
+      if (data.returnMsg == "系统没有登录或会话超时!" || data.returnMsg === '用户验证失败!') {
+        removeToken();
+        removeUserId();
+        router.replace({ path: '/login' });
       }
       return Promise.reject(data)
     }

+ 1 - 11
src/utils/token.js

@@ -1,5 +1,5 @@
 import Cookies from 'js-cookie' // 引入js-cookie插件
-import { TokenKey,UserIdKey,loginflag } from '@/settings' // 引入settings.js
+import { TokenKey,UserIdKey } from '@/settings' // 引入settings.js
 
 /**
  * 前端uuid
@@ -55,14 +55,4 @@ export function setUserId(userId) {
 // 移除 userId
 export function removeUserId() {
   return Cookies.remove(UserIdKey)
-}
-
-// 设置 loginflag
-export function setLoginflag(flag) {
-  return Cookies.set(loginflag, flag)
-}
-
-// 获取 loginflag
-export function getLoginflag() {
-  return Cookies.get(loginflag)
 }

+ 5 - 4
src/view/appmian.vue

@@ -102,6 +102,7 @@ import '@/utils/flexible'
 import Dialoges from "./InfoDialoges.vue";
 import logo from "@/assets/logo.png";
 import { ElMessage, ElButton, ElDialog, ElSelect, formEmits } from 'element-plus'
+import { message } from '@/utils/message';
 // import myIndex  from "./index"
 import Index  from "./index/index.vue"
 import configurator from "./configurator.vue";
@@ -234,22 +235,22 @@ const leftsimulation = (res,data) => {
     }else{
   
       if (resultleft.value.coids != resultright.value.coids) {
-    ElMessage.error('污染物不一样,无法进行比较')
+    message.error('污染物不一样,无法进行比较')
     return;
   }
 
   if (resultleft.value.totaltime != resultright.value.totaltime) {
-    ElMessage.error('模拟时长不一样,无法进行比较')
+    message.error('模拟时长不一样,无法进行比较')
     return;
   }
 
   if (resultleft.value.reportstep != resultright.value.reportstep) {
-    ElMessage.error('输出步长不一样,无法进行比较')
+    message.error('输出步长不一样,无法进行比较')
     return;
   }
 
   if (resultleft.value.pickertime != resultright.value.pickertime ) {
-    ElMessage.error('事故时间不一样,无法进行比较')
+    message.error('事故时间不一样,无法进行比较')
     return;
   }
     

+ 8 - 8
src/view/login.vue

@@ -80,6 +80,8 @@ import {
   formEmits
 } from "element-plus"
 
+import { message } from '@/utils/message';
+
 // import configurator  from "./components/configurator.vue"
 import reheader from "@/components/header.vue"
 import loginheader from "@/components/loginheader.vue"
@@ -94,7 +96,7 @@ import b from "@/assets/img/Group1317.png"
 import { timestampToTime, formatTime } from "@/js/lindex.js"
 import emitter from "@/utils/emitter"
 
-import { getToken, setToken, setUserId,setLoginflag,getLoginflag } from "@/utils/token"
+import { getToken, setToken, setUserId } from "@/utils/token"
 import router from "@/router"
 
 // import { vtkmodel2 } from "@/control/vtkModel.js";
@@ -152,11 +154,11 @@ const imageUrl = ref("") // 验证码图片 URL
 
 const login = () => {
   if (loginform.value.username == "" || loginform.value.username == undefined){
-    ElMessage.error("用户名不能为空")
+    message.error("用户名不能为空")
     return
   }
   if (loginform.value.password == "" || loginform.value.password == undefined){
-    ElMessage.error("密码不能为空")
+    message.error("密码不能为空")
     return
   }
 
@@ -175,14 +177,12 @@ const login = () => {
   .then((res) => {
     setToken(res.clientToken)
     setUserId(res.userId)
-    setLoginflag('1')
-    console.log('loginflag:',getLoginflag())
     router.push({ path: "/" })
-
+    // message.success("登录成功")
   })
   .catch((err) => {
     console.error('错误信息:',err);
-    ElMessage.error(err.returnMsg);
+    message.error(err.returnMsg);
     loading.value = false;
   })
   .finally(() => {
@@ -205,7 +205,7 @@ const register = () => {
       console.log(res)
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      message.error(err.returnMsg)
     })
 }