From 05c363fdd7ab04e3bd9a753e2c5d5bfff04d681c Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期二, 09 六月 2026 10:21:35 +0800
Subject: [PATCH] 备份上传
---
App.vue | 165 +++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 119 insertions(+), 46 deletions(-)
diff --git a/App.vue b/App.vue
index 30b3f4a..de31839 100644
--- a/App.vue
+++ b/App.vue
@@ -1,63 +1,144 @@
<script setup>
-import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'
-import { useI18n } from 'vue-i18n'
+import { onLaunch } from "@dcloudio/uni-app";
+import { getToken } from "@/utils/auth";
+import { useUserStore } from "@/stores/user";
-const { t } = useI18n()
+const pageWhiteList = ["pages/login/Login", "pages/login/DingTalkLogin"];
+const isPageInWhiteList = (currentPage) =>
+ pageWhiteList.some((path) => currentPage.includes(path));
+
+let isProcessingSSO = false;
onLaunch(() => {
- console.log('App Launch')
- try {
- const currentLang = uni.getStorageSync('language')
- console.log('褰撳墠璇█:', currentLang)
- } catch (error) {
- console.error('璇█閰嶇疆閿欒:', error)
- }
-})
+ console.log("App Launch");
+ const launchOptions = uni.getLaunchOptionsSync();
+ const currentPage = launchOptions.path || "";
+ const query = launchOptions.query || {};
+ console.log("鍚姩鍙傛暟:", { currentPage, query });
-onShow(() => {
- console.log('App Show')
-})
+ // 鉁� 鏀逛负妫�娴� code 鍙傛暟
+ if (query.code) {
+ console.log('妫�娴嬪埌鍏嶇櫥鐮�(code)锛屽噯澶囪烦杞櫥褰曢〉');
+ if (currentPage.includes('login/Login')) {
+ console.log('褰撳墠宸插湪鐧诲綍椤碉紝绛夊緟login.vue澶勭悊');
+ return;
+ }
+ if (isProcessingSSO) return;
+ isProcessingSSO = true;
+ uni.__isSSOHandling = true;
-onHide(() => {
- console.log('App Hide')
-})
+ const queryParams = [];
+ if (currentPage) {
+ queryParams.push(`redirect=${encodeURIComponent('/' + currentPage)}`);
+ }
+ // 鎼哄甫 code 鍙傛暟
+ queryParams.push(`code=${encodeURIComponent(query.code)}`);
+ // 娉ㄦ剰锛氬叾浠栦笟鍔″弬鏁帮紙濡� fcid锛夊凡涓嶅湪 URL 涓婏紝涓嶉渶瑕佹惡甯�
+
+ console.log('璺宠浆鍒扮櫥褰曢〉锛屽弬鏁�:', queryParams);
+ setTimeout(() => {
+ uni.redirectTo({
+ url: `/pages/login/Login?${queryParams.join('&')}`,
+ success: () => {
+ setTimeout(() => {
+ uni.__isSSOHandling = false;
+ isProcessingSSO = false;
+ }, 500);
+ },
+ fail: () => {
+ uni.__isSSOHandling = false;
+ isProcessingSSO = false;
+ }
+ });
+ }, 200);
+ return;
+ }
+
+ // 鍘熸湁 token 妫�鏌ラ�昏緫涓嶅彉锛堜絾娉ㄦ剰鍘绘帀 SSO 鍙傛暟鍒ゆ柇锛�
+ handleTokenCheck();
+});
+
+const handleTokenCheck = async () => {
+ const userStore = useUserStore();
+ const token = getToken();
+ const launchOptions = uni.getLaunchOptionsSync();
+ const currentPage = launchOptions.path || "";
+ const query = launchOptions.query || {};
+
+ console.log("token妫�鏌�:", { hasToken: !!token, currentPage });
+
+
+ if (!token) {
+ if (!isPageInWhiteList(currentPage)) {
+ console.log("鏃爐oken涓斾笉鍦ㄧ櫧鍚嶅崟锛岃烦杞櫥褰曢〉");
+ let loginUrl = "/pages/login/Login";
+ if (currentPage) {
+ const queryParams = [];
+ queryParams.push(`redirect=${encodeURIComponent("/" + currentPage)}`);
+ for (const key in query) {
+ if (query[key]) {
+ queryParams.push(`${key}=${encodeURIComponent(query[key])}`);
+ }
+ }
+ if (queryParams.length > 0) {
+ loginUrl += `?${queryParams.join("&")}`;
+ }
+ }
+ setTimeout(() => {
+ uni.redirectTo({ url: loginUrl });
+ }, 100);
+ }
+ return;
+ }
+
+ try {
+ const current = await uni.$uapi.get("/getInfo");
+ if (current && current.user) {
+ userStore.setUserInfo(current.user);
+ if (current.roles) userStore.setroleKey(current.roles);
+ if (isPageInWhiteList(currentPage)) {
+ uni.switchTab({ url: "/pages/index/index" });
+ }
+ } else {
+ console.error("token鏃犳晥");
+ userStore.clearUser();
+ if (!isPageInWhiteList(currentPage)) {
+ uni.redirectTo({ url: "/pages/login/Login" });
+ }
+ }
+ } catch (error) {
+ console.error("鍒濆鍖栧け璐�:", error);
+ userStore.clearUser();
+ if (!isPageInWhiteList(currentPage)) {
+ uni.redirectTo({ url: "/pages/login/Login" });
+ }
+ }
+};
</script>
<style lang="scss">
@import "@/uni_modules/uview-plus/index.scss";
-// 涓婚棰滆壊
-$primary-color: #0f95b0;
+$primary-color: #67afab;
$primary-light: rgba($primary-color, 0.1);
-$primary-gradient: linear-gradient(135deg, #0f95b0, #89C4C1);
-
-// 鏂囧瓧棰滆壊
+$primary-gradient: linear-gradient(135deg, #67afab, #89c4c1);
$text-primary: #333333;
$text-regular: #666666;
$text-secondary: #999999;
-
-// 鑳屾櫙棰滆壊
-$bg-color: #F5F6FA;
-$card-bg: #FFFFFF;
-
-// 鍔熻兘鑹�
-$success: #67C23A;
-$warning: #E6A23C;
-$danger: #F56C6C;
+$bg-color: #f5f6fa;
+$card-bg: #ffffff;
+$success: #67c23a;
+$warning: #e6a23c;
+$danger: #f56c6c;
$info: #909399;
-
-// 鍦嗚
$radius-sm: 4rpx;
$radius-md: 12rpx;
$radius-lg: 24rpx;
$radius-xl: 36rpx;
-
-// 闃村奖
$shadow-sm: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
$shadow-md: 0 4rpx 16rpx rgba(0, 0, 0, 0.08);
$shadow-lg: 0 8rpx 24rpx rgba(0, 0, 0, 0.12);
-// 娣峰叆
@mixin flex-center {
display: flex;
align-items: center;
@@ -77,7 +158,6 @@
overflow: hidden;
}
-// 閫氱敤鏍峰紡绫�
.primary-btn {
background: $primary-gradient;
color: #fff;
@@ -87,11 +167,9 @@
line-height: 80rpx;
text-align: center;
box-shadow: 0 4rpx 12rpx rgba($primary-color, 0.3);
-
&[disabled] {
opacity: 0.6;
}
-
&:active {
transform: scale(0.95);
}
@@ -122,9 +200,8 @@
position: relative;
padding-left: 20rpx;
margin-bottom: 30rpx;
-
&::before {
- content: '';
+ content: "";
position: absolute;
left: 0;
top: 50%;
@@ -140,11 +217,9 @@
font-size: 32rpx;
color: $danger;
font-weight: bold;
-
&.free {
color: $success;
}
-
&.original {
font-size: 24rpx;
color: $text-secondary;
@@ -160,14 +235,12 @@
border-radius: $radius-xl;
padding: 0 30rpx;
box-shadow: $shadow-md;
-
.icon-search {
width: 32rpx;
height: 32rpx;
margin-right: 20rpx;
color: $primary-color;
}
-
input {
flex: 1;
font-size: 28rpx;
@@ -178,7 +251,7 @@
}
}
-@import '@/static/style/iconfont.scss';
+// @import "@/static/style/iconfont.scss";
page {
background-color: $bg-color;
--
Gitblit v1.9.3