zbb 6 днів тому
батько
коміт
01acd5955b
3 змінених файлів з 38 додано та 13 видалено
  1. 20 1
      pages/login/login.vue
  2. 16 10
      pages/mine/index.vue
  3. 2 2
      pages/splash/splash.vue

+ 20 - 1
pages/login/login.vue

@@ -90,6 +90,15 @@
 				</view>
 			</view>
 		</view>
+		
+		<!-- 隐藏的 Canvas 用于生成名片快照 -->
+		<canvas id="posterCanvas" type="2d"
+			style="position: fixed; left: -9999px; top: -9999px; width: 750px; height: 780px;"></canvas>
+		
+		<!-- 隐藏的 Canvas 用于生成二维码海报 -->
+		<view class="hidden-canvas-box">
+			<canvas id="qrPosterCanvas" type="2d" style="width: 600px; height: 700px;"></canvas>
+		</view>
 	</view>
 </template>
 
@@ -316,11 +325,12 @@
 				saveToekn(token)
 				await userStore.queryCardInfo()
 				await userStore.queryCompanyInfo()
-				await userStore.queryCardQrcode()
 				uni.showToast({
 					title: '登录成功',
 					icon: 'success'
 				})
+				await userStore.queryCardPoster()
+				// await userStore.queryCardQrcode()
 				uni.reLaunch({
 					url: '/pages/index/index'
 				})
@@ -700,4 +710,13 @@
 			transform: translateY(0);
 		}
 	}
+	// 隐藏的 canvas 容器
+	.hidden-canvas-box {
+		position: fixed;
+		left: -9999px;
+		top: -9999px;
+		width: 1px;
+		height: 1px;
+		overflow: hidden;
+	}
 </style>

+ 16 - 10
pages/mine/index.vue

@@ -152,6 +152,7 @@ import {
 import {
 	storeToRefs
 } from 'pinia'
+import { clearUserInfo } from '@/utils/userCache.js'
 
 // 使用 Pinia 管理用户状态
 const userStore = useUserStore()
@@ -225,27 +226,32 @@ const logout = () => {
 			if (res.confirm) {
 				console.log('用户确认退出登录')
 
-				// 1. 清除 token
-				uni.removeStorageSync('token')
+				// 1. 清除 token(使用统一工具函数)
+				clearUserInfo()
 
 				// 2. 清除 store 中的用户数据
 				userStore.$reset()
 
-				// 3. 清除其他可能存储的数据
-				uni.removeStorageSync('userInfo')
-				uni.removeStorageSync('companyInfo')
+				// 3. 清除其他缓存数据
+				try {
+					uni.removeStorageSync('userInfo')
+					uni.removeStorageSync('companyInfo')
+				} catch (e) {
+					console.warn('清除额外缓存失败:', e)
+				}
 
 				console.log('已清除所有登录数据')
 
-				// 4. 跳转到登录页
-				uni.reLaunch({
-					url: '/pages/login/login'
-				})
-
+				// 4. 跳转到登录页(先 Toast 再跳转)
 				uni.showToast({
 					title: '已退出登录',
 					icon: 'success'
 				})
+				setTimeout(() => {
+					uni.reLaunch({
+						url: '/pages/login/login'
+					})
+				}, 300)
 			}
 		}
 	})

+ 2 - 2
pages/splash/splash.vue

@@ -89,11 +89,11 @@
 			if (loginToggle) {
 				await userStore.queryCardInfo(userId)
 				await userStore.queryCompanyInfo(userId)
+				await userStore.queryCardPoster()
 				uni.reLaunch({
 					url: !!userId ? '/pages/mine/userCard' : '/pages/index/index'
 				})
-				await userStore.queryCardQrcode(userId)
-				await userStore.queryCardPoster()
+				// await userStore.queryCardQrcode(userId)
 
 			} else {
 				clearUserInfo()