From 1a70eebcbfdfd715e24a5f405d8e194cb3bfb99e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=88=B1=7E=E6=B5=B7=7E=E7=88=B1=E6=B5=B7=E7=88=B1?=
 =?UTF-8?q?=E6=B5=B7=7E=E5=8F=B3?= <1828712314@qq.com>
Date: Wed, 19 Mar 2025 11:31:40 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=83=A8=E9=97=A8=E5=90=8D?=
 =?UTF-8?q?=E7=A7=B0=E5=AD=97=E6=AE=B5=EF=BC=8C=E4=BC=98=E5=8C=96=E7=94=A8?=
 =?UTF-8?q?=E6=88=B7=E4=BF=A1=E6=81=AF=E5=B1=95=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../components/UserInfo/src/UserInfo.vue      |   7 +-
 src/store/modules/user.ts                     |   8 +-
 src/views/Home/Index.vue                      |   1 -
 src/views/Login/components/QrCodeForm.vue     | 148 ++++++++++--------
 4 files changed, 90 insertions(+), 74 deletions(-)

diff --git a/src/layout/components/UserInfo/src/UserInfo.vue b/src/layout/components/UserInfo/src/UserInfo.vue
index 1bad1cf..d2a5ab0 100644
--- a/src/layout/components/UserInfo/src/UserInfo.vue
+++ b/src/layout/components/UserInfo/src/UserInfo.vue
@@ -24,7 +24,8 @@ const { getPrefixCls } = useDesign()
 const prefixCls = getPrefixCls('user-info')
 
 const avatar = computed(() => userStore.user.avatar || avatarImg)
-const realName=computed(()=>userStore.user.realName ?? '管理员')
+const realName = computed(() => userStore.user.realName ?? '管理员')
+const deptName = computed(() => userStore.user.deptName ?? '管理员')
 // 锁定屏幕
 const lockStore = useLockStore()
 const getIsLock = computed(() => lockStore.getLockInfo?.isLock ?? false)
@@ -56,9 +57,9 @@ const toDocument = () => {
 <template>
   <ElDropdown class="custom-hover" :class="prefixCls" trigger="click">
     <div class="flex items-center gap-4px">
-      <ElAvatar :src="avatar" alt="" :size="32" class=" rounded-[50%]" />
+      <ElAvatar :src="avatar" alt="" :size="32" class="rounded-[50%]" />
       <span class="text-14px color-#303133 font-500 line-height-22px">
-        {{ realName }}|{{}}
+        {{ realName }} | {{ deptName }}
       </span>
     </div>
     <template #dropdown>
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 9fdcb78..a141765 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -11,7 +11,8 @@ interface UserVO {
   avatar: string
   nickname: string
   deptId: number,
-  realName:string
+  realName:string,
+  deptName:string,
 }
 
 interface UserInfoVO {
@@ -33,6 +34,7 @@ export const useUserStore = defineStore('admin-user', {
       nickname: '',
       deptId: 0,
       realName: '',
+      deptName:''
     }
   }),
   getters: {
@@ -58,7 +60,6 @@ export const useUserStore = defineStore('admin-user', {
       let userInfo = wsCache.get(CACHE_KEY.USER)
       if (!userInfo) {
         userInfo = await getInfo()
-        console.log(userInfo)
       }
       this.permissions = userInfo.permissions
       this.roles = userInfo.roles
@@ -96,7 +97,8 @@ export const useUserStore = defineStore('admin-user', {
         avatar: '',
         nickname: '',
         deptId: 0,
-        realName:''
+        realName:'',
+        deptName:''
       }
     }
   }
diff --git a/src/views/Home/Index.vue b/src/views/Home/Index.vue
index a8d5704..cbb9e0f 100644
--- a/src/views/Home/Index.vue
+++ b/src/views/Home/Index.vue
@@ -491,7 +491,6 @@ const getPieData = async () => {
 // 近6个月执法走势
 const getS3Data = async () => {
   const res = await HomeApi.getTaskNumDoing(queryParams)
-	console.log(res)
   let data1 = [] as any
   let data2 = [] as any
   res.forEach((item: any) => {
diff --git a/src/views/Login/components/QrCodeForm.vue b/src/views/Login/components/QrCodeForm.vue
index 2df70af..2d0e7a0 100644
--- a/src/views/Login/components/QrCodeForm.vue
+++ b/src/views/Login/components/QrCodeForm.vue
@@ -3,15 +3,30 @@
     <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
       <img class="topImg" src="@/assets/imgs/screen/login-top.png" alt="logo" />
     </el-col>
-    <el-col :span="24" style="padding-right: 10px; padding-left: 10px; margin-bottom:20px; text-align: center">
-    
-        <img width="320px" height="320px" :src="imageUrl" alt="Converted Image" v-if="imageUrl" />
+    <el-col
+      :span="24"
+      style="padding-right: 10px; padding-left: 10px; margin-bottom: 20px; text-align: center"
+    >
+      <img width="320px" height="320px" :src="imageUrl" alt="Converted Image" v-if="imageUrl" />
     </el-col>
-    <el-col v-if="!refreshQR"  :span="24" style="padding-right: 10px; padding-left: 10px; text-align: center">
-      <img  class="bottomImg" src="@/assets/imgs/screen/login-bottom.png" alt="logo" />
+    <el-col
+      v-if="!refreshQR"
+      :span="24"
+      style="padding-right: 10px; padding-left: 10px; text-align: center"
+    >
+      <img class="bottomImg" src="@/assets/imgs/screen/login-bottom.png" alt="logo" />
     </el-col>
-    <el-col v-if="refreshQR" :span="24" style="padding-right: 10px; padding-left: 10px; text-align: center">
-      <img class="bottomImg" src="@/assets/imgs/screen/qrsx.png" alt="logo" @click="handleRefresh" />
+    <el-col
+      v-if="refreshQR"
+      :span="24"
+      style="padding-right: 10px; padding-left: 10px; text-align: center"
+    >
+      <img
+        class="bottomImg"
+        src="@/assets/imgs/screen/qrsx.png"
+        alt="logo"
+        @click="handleRefresh"
+      />
     </el-col>
   </el-row>
 </template>
@@ -24,104 +39,103 @@ import { LoginStateEnum, useLoginState } from './useLogin'
 import router from '@/router'
 defineOptions({ name: 'QrCodeForm' })
 
-const imageUrl = ref('');
-const uuuid =ref('')
+const imageUrl = ref('')
+const uuuid = ref('')
 const refreshQR = ref(false)
 
 const { t } = useI18n()
 const { handleBackLogin, getLoginState } = useLoginState()
 const getShow = computed(() => true)
 // 存储定时器 ID,用于后续清除定时器
-let intervalId = ref();
+let intervalId = ref()
 
 const handleRefresh = () => {
   window.location.reload()
 }
-const getimg =async ()=>{
-
-  const array = new Uint32Array(4);
-  crypto.getRandomValues(array);
-  let result = '';
+const getimg = async () => {
+  const array = new Uint32Array(4)
+  crypto.getRandomValues(array)
+  let result = ''
   array.forEach((value) => {
-    result += value.toString(16).padStart(8, '0');
-  });
-  uuuid.value = result;
+    result += value.toString(16).padStart(8, '0')
+  })
+  uuuid.value = result
 
- var mockBinaryData = await LoginApi.getCodeWebPic({
-    scene:uuuid.value,
+  var mockBinaryData = await LoginApi.getCodeWebPic({
+    scene: uuuid.value,
     path: 'sub/common/waiting',
     checkPath: false
-  });
+  })
   // 对 Base64 编码的字符串进行解码
-  const binaryString = atob(mockBinaryData);
-    const len = binaryString.length;
-    const bytes = new Uint8Array(len);
-    for (let i = 0; i < len; i++) {
-      bytes[i] = binaryString.charCodeAt(i);
-    }
+  const binaryString = atob(mockBinaryData)
+  const len = binaryString.length
+  const bytes = new Uint8Array(len)
+  for (let i = 0; i < len; i++) {
+    bytes[i] = binaryString.charCodeAt(i)
+  }
 
   // 将二进制数据转换为Blob对象
-  const blob = new Blob([bytes], { type: 'image/png' });
+  const blob = new Blob([bytes], { type: 'image/png' })
   // 创建临时的URL
-  imageUrl.value = URL.createObjectURL(blob);
+  imageUrl.value = URL.createObjectURL(blob)
 
   //开始刷新扫码信息
-  refaulst();
+  refaulst()
 }
 // 记录定时器开始的时间
-const startTime = Date.now();
+const startTime = Date.now()
 // 10 分钟的毫秒数
-const tenMinutes =  10 *60 * 10000 ; 
+const tenMinutes = 10 * 60 * 10000
 //定时刷新 判断是否扫码允许
-const refaulst  = ()=>{
-  refreshQR.value = false;
-   // 先清除之前的定时器,避免重复调用
-   if (intervalId) {
-    clearInterval(intervalId.value);
+const refaulst = () => {
+  refreshQR.value = false
+  // 先清除之前的定时器,避免重复调用
+  if (intervalId) {
+    clearInterval(intervalId.value)
   }
   // 设置定时器,每 5 秒(可根据实际需求调整)调用一次接口
   intervalId.value = setInterval(async () => {
     try {
-
       // 检查是否已经过去了 10 分钟
-    if (Date.now() - startTime >= tenMinutes) {
-      clearInterval(intervalId.value);
-      console.log('定时器已停止,已过去 10 分钟。');
-  refreshQR.value = true;
+      if (Date.now() - startTime >= tenMinutes) {
+        clearInterval(intervalId.value)
+        console.log('定时器已停止,已过去 10 分钟。')
+        refreshQR.value = true
 
-      return;
-    }
+        return
+      }
 
-      const res = await LoginApi.qrLoginCode({code:uuuid.value})
-     
-      if(res){
-        clearInterval(intervalId.value);
-				 authUtil.setToken(res)
-          router.push({ path: '/' })
+      const res = await LoginApi.qrLoginCode({ code: uuuid.value })
+
+      if (res) {
+        clearInterval(intervalId.value)
+        authUtil.setToken(res)
+        router.push({ path: '/' })
       }
-      
     } catch (error) {
-      console.error('获取扫码状态失败:', error);
+      console.error('获取扫码状态失败:', error)
     }
-  }, 5000);
+  }, 5000)
 }
 onMounted(() => {
   // getCookie()
   getimg()
 })
+onUnmounted(() => {
+	// 组件销毁时清除定时器
+	clearInterval(intervalId.value)
+})
 </script>
 <style lang="scss" scoped>
-  .expired-text{
-    color: #ff0000;
-    margin-top: 40px;
-    margin-right: 10px;
-  }
-  .bottomImg{
-    width:320px;
-
-    
-  }
-  .topImg{
-    height: 200px;
-  }
-</style>
\ No newline at end of file
+.expired-text {
+  color: #ff0000;
+  margin-top: 40px;
+  margin-right: 10px;
+}
+.bottomImg {
+  width: 320px;
+}
+.topImg {
+  height: 200px;
+}
+</style>