From 2abce21c49997c40432b8d64bd7c25f3ca53fb74 Mon Sep 17 00:00:00 2001 From: zoujing Date: Sun, 12 Oct 2025 13:55:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=99=BB=E5=BD=95=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E7=9A=84=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useGoLogin.js | 18 +++++++++-- src/manager/AuthManager.js | 5 +++- src/manager/LoginManager.js | 10 ++----- .../components/drawer/MineSetting/index.vue | 1 + src/pages/login/index.vue | 30 +++++++++++++++++-- src/request/base/request.js | 1 + src/store/modules/app.js | 8 +++-- 7 files changed, 58 insertions(+), 15 deletions(-) diff --git a/src/hooks/useGoLogin.js b/src/hooks/useGoLogin.js index 24ae95c..04a9578 100644 --- a/src/hooks/useGoLogin.js +++ b/src/hooks/useGoLogin.js @@ -1,4 +1,4 @@ -import { loginAuth, bindPhone } from "@/manager/LoginManager"; +import { loginAuth, bindPhone, checkPhone } from "@/manager/LoginManager"; import { clientId } from "@/constant/base"; import { useAppStore } from "@/store"; @@ -10,16 +10,28 @@ export const goBack = () => uni.navigateBack({ delta: 1 }); // 登录逻辑 export const onLogin = async (e) => { - console.info("onLogin code: ", e.detail); + console.info("onLogin code: ", e); return new Promise(async (resolve, reject) => { // 判断用户拒绝 - if (e.detail.errno === 104) { + if (e !== undefined && e && e.detail && e.detail.errno === 104) { reject(); return; } await loginAuth(e).then(async () => { + // 检查手机号是否绑定 + const checkRes = await checkPhone(); + if (checkRes.data) { + resolve(); + return; + } + + if (e === undefined) { + resolve(); + return; + } + const { code } = e.detail; // 绑定手机号 diff --git a/src/manager/AuthManager.js b/src/manager/AuthManager.js index 6d3f8cc..9090f80 100644 --- a/src/manager/AuthManager.js +++ b/src/manager/AuthManager.js @@ -11,7 +11,10 @@ export const getWeChatAuthCode = (e) => { // #endif // 判断用户拒绝授权 - if (e.detail.errMsg === "getPhoneNumber:fail user deny") { + if ( + e !== undefined && + e.detail.errMsg === "getPhoneNumber:fail user deny" + ) { reject(); return; } diff --git a/src/manager/LoginManager.js b/src/manager/LoginManager.js index 73be598..d3f7d05 100644 --- a/src/manager/LoginManager.js +++ b/src/manager/LoginManager.js @@ -48,13 +48,9 @@ const bindPhone = async (params) => { } }; -const checkPhone = async (phone) => { - try { - const response = await checkUserPhone(phone); - return response; - } catch (error) { - throw err; - } +const checkPhone = async () => { + const response = await checkUserPhone(); + return response; }; export { loginAuth, bindPhone, checkPhone }; diff --git a/src/pages/index/components/drawer/MineSetting/index.vue b/src/pages/index/components/drawer/MineSetting/index.vue index 6e5fd80..332a7d6 100644 --- a/src/pages/index/components/drawer/MineSetting/index.vue +++ b/src/pages/index/components/drawer/MineSetting/index.vue @@ -106,6 +106,7 @@ const handleLogout = () => { if (res.confirm) { uni.clearStorageSync(); appStore.setHasToken(false); + appStore.setTokenExpired(true); emits("closeDrawer"); uni.$emit(NOTICE_EVENT_LOGOUT); } diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue index 6fff2c2..858e2b9 100644 --- a/src/pages/login/index.vue +++ b/src/pages/login/index.vue @@ -29,15 +29,25 @@ > 微信一键登录 + + + @@ -79,6 +89,8 @@ import CheckBox from "@/components/CheckBox/index.vue"; import AgreePopup from "./components/AgreePopup/index.vue"; import { zniconsMap } from "@/static/fonts/znicons.js"; import { getCurrentConfig } from "@/constant/base"; +import { useAppStore } from "@/store"; +const appStore = useAppStore(); const isAgree = ref(false); const visible = ref(false); @@ -113,6 +125,20 @@ const getPhoneNumber = (e) => { .catch(() => {}); }; +const handleLogin = () => { + console.log("handleLogin"); + onLogin() + .then(() => { + uni.showToast({ + title: "登录成功", + icon: "success", + }); + appStore.setTokenExpired(false); + goBack(); + }) + .catch(() => {}); +}; + // 处理同意协议点击事件 const handleAgreeClick = (type) => { visible.value = true; diff --git a/src/request/base/request.js b/src/request/base/request.js index 71c56b0..3cd3046 100644 --- a/src/request/base/request.js +++ b/src/request/base/request.js @@ -60,6 +60,7 @@ function request(url, args = {}, method = "POST", customConfig = {}) { uni.setStorageSync("token", ""); const appStore = useAppStore(); appStore.setHasToken(false); + appStore.setTokenExpired(true); uni.$emit(NOTICE_EVENT_LOGOUT); goLogin(); } diff --git a/src/store/modules/app.js b/src/store/modules/app.js index 0db9a58..622c0c7 100644 --- a/src/store/modules/app.js +++ b/src/store/modules/app.js @@ -6,6 +6,7 @@ export const useAppStore = defineStore("app", { title: "", sceneId: "", hasToken: false, + tokenExpired: false, }; }, getters: {}, @@ -17,8 +18,11 @@ export const useAppStore = defineStore("app", { setSceneId(data) { this.sceneId = data; }, - setHasToken(data) { - this.hasToken = data; + setHasToken(status) { + this.hasToken = status; + }, + setTokenExpired(status) { + this.tokenExpired = status; }, },